]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
This commit was manufactured by cvs2svn to create branch
authorcvs2svn <tools@python.org>
Wed, 23 May 2001 14:52:45 +0000 (14:52 +0000)
committercvs2svn <tools@python.org>
Wed, 23 May 2001 14:52:45 +0000 (14:52 +0000)
'release21-maint'.

116 files changed:
Lib/test/test_mutants.py [new file with mode: 0644]
Mac/Build/PythonCore.exp [new file with mode: 0644]
Mac/Build/PythonCoreCarbon.exp [new file with mode: 0644]
Mac/Build/PythonInterpreter.mcp [new file with mode: 0644]
Mac/Build/PythonStandSmall.mcp [new file with mode: 0644]
Mac/Build/PythonStandalone.mcp [new file with mode: 0644]
Mac/Build/_dummy_tkinter.mcp [new file with mode: 0644]
Mac/Contrib/AECaptureParser/AECaptureParser.py [new file with mode: 0644]
Mac/Contrib/BBPy.lm/BBPy.c [new file with mode: 0644]
Mac/Contrib/BBPy.lm/PythonBBLM.txt [new file with mode: 0644]
Mac/Contrib/BBPy/PythonSlave.py [new file with mode: 0644]
Mac/Contrib/PythonScript/ReadMe.txt [new file with mode: 0644]
Mac/Demo/applescript/Disk_Copy/Special_Events.py [new file with mode: 0644]
Mac/Demo/applescript/Disk_Copy/Standard_Suite.py [new file with mode: 0644]
Mac/Demo/building.html [new file with mode: 0644]
Mac/Demo/calldll/readme [new file with mode: 0644]
Mac/Demo/textedit/ped.py [new file with mode: 0644]
Mac/Distributions/(vise)/Python 2.1.vct [new file with mode: 0644]
Mac/IDE scripts/Hack/Toolbox Assistant... [new file with mode: 0644]
Mac/Include/getapplbycreator.h [new file with mode: 0644]
Mac/Include/macbuildno.h [new file with mode: 0644]
Mac/Include/pymactoolbox.h [new file with mode: 0644]
Mac/Lib/MACFS.py [new file with mode: 0644]
Mac/Lib/cfmfile.py [new file with mode: 0644]
Mac/Lib/findertools.py [new file with mode: 0644]
Mac/Lib/lib-scripting/AppleScript_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scripting/CodeWarrior_Standard_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scripting/Finder_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scripting/Metrowerks_Shell_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scripting/Standard_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scripting/Standard_URL_suite.py [new file with mode: 0644]
Mac/Lib/lib-scripting/WWW_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/CodeWarrior/CodeWarrior_suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/CodeWarrior/Metrowerks_Shell_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/CodeWarrior/Standard_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Finder/Containers_and_folders.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Finder/Earlier_terms.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Finder/Files_and_suitcases.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Finder/Finder_Basics.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Finder/Finder_items.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Finder/Obsolete_terms.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Finder/Type_Definitions.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Finder/Window_classes.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Netscape/Mozilla_suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Netscape/PowerPlant.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Netscape/Required_suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Netscape/Standard_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Netscape/Standard_URL_suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Netscape/Text.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Netscape/WorldWideWeb_suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/Netscape/__init__.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/StdSuites/AppleScript_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/StdSuites/Standard_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/StdSuites/Table_Suite.py [new file with mode: 0644]
Mac/Lib/lib-scriptpackages/StdSuites/Text_Suite.py [new file with mode: 0644]
Mac/Lib/lib-toolbox/AppleEvents.py [new file with mode: 0644]
Mac/Lib/lib-toolbox/Dialogs.py [new file with mode: 0644]
Mac/Lib/lib-toolbox/Icons.py [new file with mode: 0644]
Mac/Lib/macerrors.py [new file with mode: 0644]
Mac/Lib/test/tlist_dialog.rsrc [new file with mode: 0644]
Mac/Modules/Nav.c [new file with mode: 0644]
Mac/Modules/app/Appmodule.c [new file with mode: 0644]
Mac/Modules/app/appsupport.py [new file with mode: 0644]
Mac/Modules/cm/Cmmodule.c [new file with mode: 0644]
Mac/Modules/cm/cmsupport.py [new file with mode: 0644]
Mac/Modules/dlg/Dlgmodule.c [new file with mode: 0644]
Mac/Modules/dlg/dlgsupport.py [new file with mode: 0644]
Mac/Modules/drag/Dragmodule.c [new file with mode: 0644]
Mac/Modules/drag/dragsupport.py [new file with mode: 0644]
Mac/Modules/evt/Evtmodule.c [new file with mode: 0644]
Mac/Modules/evt/evtsupport.py [new file with mode: 0644]
Mac/Modules/fm/fmsupport.py [new file with mode: 0644]
Mac/Modules/gestaltmodule.c [new file with mode: 0644]
Mac/Modules/help/Helpmodule.c [new file with mode: 0644]
Mac/Modules/icgluemodule.c [new file with mode: 0644]
Mac/Modules/icn/Icnmodule.c [new file with mode: 0644]
Mac/Modules/icn/icnsupport.py [new file with mode: 0644]
Mac/Modules/list/Listmodule.c [new file with mode: 0644]
Mac/Modules/list/listsupport.py [new file with mode: 0644]
Mac/Modules/macmodule.c [new file with mode: 0644]
Mac/Modules/macosmodule.c [new file with mode: 0644]
Mac/Modules/menu/Menumodule.c [new file with mode: 0644]
Mac/Modules/menu/menusupport.py [new file with mode: 0644]
Mac/Modules/qdoffs/Qdoffsmodule.c [new file with mode: 0644]
Mac/Modules/qdoffs/qdoffssupport.py [new file with mode: 0644]
Mac/Modules/qt/Qtmodule.c [new file with mode: 0644]
Mac/Modules/qt/qtsupport.py [new file with mode: 0644]
Mac/Modules/res/Resmodule.c [new file with mode: 0644]
Mac/Modules/res/resscan.py [new file with mode: 0644]
Mac/Modules/res/ressupport.py [new file with mode: 0644]
Mac/Modules/scrap/scrapsupport.py [new file with mode: 0644]
Mac/Modules/te/TEmodule.c [new file with mode: 0644]
Mac/Modules/te/tesupport.py [new file with mode: 0644]
Mac/Python/getapplbycreator.c [new file with mode: 0644]
Mac/Python/pyGUSISIOUX.cp [new file with mode: 0644]
Mac/ReadMe [new file with mode: 0644]
Mac/Relnotes [new file with mode: 0644]
Mac/Resources/version.r [new file with mode: 0644]
Mac/_checkversion.py [new file with mode: 0644]
Mac/mwerks/mwerks_applet_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_carbonNOGUSI_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_carbon_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_carbongusi_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_carbonplugin_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_nonshared_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_nscarbon_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_plugin_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_shared_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_shcarbon_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_small_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_thrcarbonsm_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_threadsmall_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_tkplugin_config.h [new file with mode: 0644]
Mac/scripts/bgenall.py [new file with mode: 0644]
Mac/scripts/errors.txt [new file with mode: 0644]
Mac/tclmods/tclMacNotify.c [new file with mode: 0644]

diff --git a/Lib/test/test_mutants.py b/Lib/test/test_mutants.py
new file mode 100644 (file)
index 0000000..3cd35d1
--- /dev/null
@@ -0,0 +1,153 @@
+from test_support import verbose
+import random
+
+# From SF bug #422121:  Insecurities in dict comparison.
+
+# Safety of code doing comparisons has been an historical Python weak spot.
+# The problem is that comparison of structures written in C *naturally*
+# wants to hold on to things like the size of the container, or "the
+# biggest" containee so far, across a traversal of the container; but
+# code to do containee comparisons can call back into Python and mutate
+# the container in arbitrary ways while the C loop is in midstream.  If the
+# C code isn't extremely paranoid about digging things out of memory on
+# each trip, and artificially boosting refcounts for the duration, anything
+# from infinite loops to OS crashes can result (yes, I use Windows <wink>).
+#
+# The other problem is that code designed to provoke a weakness is usually
+# white-box code, and so catches only the particular vulnerabilities the
+# author knew to protect against.  For example, Python's list.sort() code
+# went thru many iterations as one "new" vulnerability after another was
+# discovered.
+#
+# So the dict comparison test here uses a black-box approach instead,
+# generating dicts of various sizes at random, and performing random
+# mutations on them at random times.  This proved very effective,
+# triggering at least six distinct failure modes the first 20 times I
+# ran it.  Indeed, at the start, the driver never got beyond 6 iterations
+# before the test died.
+
+# The dicts are global to make it easy to mutate tham from within functions.
+dict1 = {}
+dict2 = {}
+
+# The current set of keys in dict1 and dict2.  These are materialized as
+# lists to make it easy to pick a dict key at random.
+dict1keys = []
+dict2keys = []
+
+# Global flag telling maybe_mutate() wether to *consider* mutating.
+mutate = 0
+
+# If global mutate is true, consider mutating a dict.  May or may not
+# mutate a dict even if mutate is true.  If it does decide to mutate a
+# dict, it picks one of {dict1, dict2} at random, and deletes a random
+# entry from it; or, more rarely, adds a random element.
+
+def maybe_mutate():
+    global mutate
+    if not mutate:
+        return
+    if random.random() < 0.5:
+        return
+
+    if random.random() < 0.5:
+        target, keys = dict1, dict1keys
+    else:
+        target, keys = dict2, dict2keys
+
+    if random.random() < 0.2:
+        # Insert a new key.
+        mutate = 0   # disable mutation until key inserted
+        while 1:
+            newkey = Horrid(random.randrange(100))
+            if newkey not in target:
+                break
+        target[newkey] = Horrid(random.randrange(100))
+        keys.append(newkey)
+        mutate = 1
+
+    elif keys:
+        # Delete a key at random.
+        i = random.randrange(len(keys))
+        key = keys[i]
+        del target[key]
+        # CAUTION:  don't use keys.remove(key) here.  Or do <wink>.  The
+        # point is that .remove() would trigger more comparisons, and so
+        # also more calls to this routine.  We're mutating often enough
+        # without that.
+        del keys[i]
+
+# A horrid class that triggers random mutations of dict1 and dict2 when
+# instances are compared.
+
+class Horrid:
+    def __init__(self, i):
+        # Comparison outcomes are determined by the value of i.
+        self.i = i
+
+        # An artificial hashcode is selected at random so that we don't
+        # have any systematic relationship between comparison outcomes
+        # (based on self.i and other.i) and relative position within the
+        # hash vector (based on hashcode).
+        self.hashcode = random.randrange(1000000000)
+
+    def __hash__(self):
+        return self.hashcode
+
+    def __cmp__(self, other):
+        maybe_mutate()   # The point of the test.
+        return cmp(self.i, other.i)
+
+    def __repr__(self):
+        return "Horrid(%d)" % self.i
+
+# Fill dict d with numentries (Horrid(i), Horrid(j)) key-value pairs,
+# where i and j are selected at random from the candidates list.
+# Return d.keys() after filling.
+
+def fill_dict(d, candidates, numentries):
+    d.clear()
+    for i in xrange(numentries):
+        d[Horrid(random.choice(candidates))] = \
+            Horrid(random.choice(candidates))
+    return d.keys()
+
+# Test one pair of randomly generated dicts, each with n entries.
+# Note that dict comparison is trivial if they don't have the same number
+# of entires (then the "shorter" dict is instantly considered to be the
+# smaller one, without even looking at the entries).
+
+def test_one(n):
+    global mutate, dict1, dict2, dict1keys, dict2keys
+
+    # Fill the dicts without mutating them.
+    mutate = 0
+    dict1keys = fill_dict(dict1, range(n), n)
+    dict2keys = fill_dict(dict2, range(n), n)
+
+    # Enable mutation, then compare the dicts so long as they have the
+    # same size.
+    mutate = 1
+    if verbose:
+        print "trying w/ lengths", len(dict1), len(dict2),
+    while dict1 and len(dict1) == len(dict2):
+        if verbose:
+            print ".",
+        c = cmp(dict1, dict2)
+    if verbose:
+        print
+
+# Run test_one n times.  At the start (before the bugs were fixed), 20
+# consecutive runs of this test each blew up on or before the sixth time
+# test_one was run.  So n doesn't have to be large to get an interesting
+# test.
+# OTOH, calling with large n is also interesting, to ensure that the fixed
+# code doesn't hold on to refcounts *too* long (in which case memory would
+# leak).
+
+def test(n):
+    for i in xrange(n):
+        test_one(random.randrange(1, 100))
+
+# See last comment block for clues about good values for n.
+test(100)
diff --git a/Mac/Build/PythonCore.exp b/Mac/Build/PythonCore.exp
new file mode 100644 (file)
index 0000000..ee15d8b
--- /dev/null
@@ -0,0 +1,2669 @@
+sSuffices
+GUSISetupConfig
+GUSISetupDevices
+GUSISetupFactories
+__vt__15GUSISIOUXDevice                # GUSISIOUXDevice::__vt
+__vt__15GUSISIOUXSocket                # GUSISIOUXSocket::__vt
+sInstance__15GUSISIOUXDevice           # GUSISIOUXDevice::sInstance
+sInstance__15GUSISIOUXSocket           # GUSISIOUXSocket::sInstance
+__dt__15GUSISIOUXDeviceFv              # GUSISIOUXDevice::~GUSISIOUXDevice()
+GUSISetupConsoleDescriptors
+open__15GUSISIOUXDeviceFR13GUSIFileTokeni              # GUSISIOUXDevice::open(GUSIFileToken&,int)
+Want__15GUSISIOUXDeviceFR13GUSIFileToken               # GUSISIOUXDevice::Want(GUSIFileToken&)
+__dt__10GUSIDeviceFv           # GUSIDevice::~GUSIDevice()
+Instance__15GUSISIOUXDeviceFv          # GUSISIOUXDevice::Instance()
+select__15GUSISIOUXSocketFPbPbPb               # GUSISIOUXSocket::select(bool*,bool*,bool*)
+isatty__15GUSISIOUXSocketFv            # GUSISIOUXSocket::isatty()
+fstat__15GUSISIOUXSocketFP4stat                # GUSISIOUXSocket::fstat(stat*)
+ioctl__15GUSISIOUXSocketFUiPc          # GUSISIOUXSocket::ioctl(unsigned int,char*)
+write__15GUSISIOUXSocketFRC12GUSIGatherer              # GUSISIOUXSocket::write(const GUSIGatherer&)
+read__15GUSISIOUXSocketFRC13GUSIScatterer              # GUSISIOUXSocket::read(const GUSIScatterer&)
+__dt__15GUSISIOUXSocketFv              # GUSISIOUXSocket::~GUSISIOUXSocket()
+Initialize__15GUSISIOUXSocketFv                # GUSISIOUXSocket::Initialize()
+__ct__15GUSISIOUXSocketFv              # GUSISIOUXSocket::GUSISIOUXSocket()
+Instance__15GUSISIOUXSocketFv          # GUSISIOUXSocket::Instance()
+Py_FileSystemDefaultEncoding
+_PyBuiltin_Init
+_PyEval_SliceIndex
+PyEval_CallObjectWithKeywords
+PyEval_CallObject
+Py_FlushLine
+PyEval_GetNestedScopes
+PyEval_GetRestricted
+PyEval_GetFrame
+PyEval_GetGlobals
+PyEval_GetLocals
+PyEval_GetBuiltins
+PyEval_EvalCode
+Py_SetRecursionLimit
+Py_GetRecursionLimit
+Py_MakePendingCalls
+Py_AddPendingCall
+PyEval_RestoreThread
+PyEval_SaveThread
+PyEval_ReInitThreads
+PyEval_ReleaseThread
+PyEval_AcquireThread
+PyEval_ReleaseLock
+PyEval_AcquireLock
+PyEval_InitThreads
+PyArg_GetFloatArray
+PyArg_GetDoubleArray
+PyArg_GetShortArray
+PyArg_GetLongArray
+PyArg_GetShortArraySize
+PyArg_GetLongArraySize
+PyArg_GetChar
+PyArg_GetString
+PyArg_GetFloat
+PyArg_GetShort
+PyArg_GetLong
+PyArg_GetObject
+PyErr_ProgramText
+PyErr_SyntaxLocation
+PyErr_WarnExplicit
+PyErr_Warn
+PyErr_WriteUnraisable
+PyErr_NewException
+PyErr_Format
+PyErr_BadInternalCall
+_PyErr_BadInternalCall
+PyErr_SetFromErrno
+PyErr_SetFromErrnoWithFilename
+PyErr_NoMemory
+PyErr_BadArgument
+PyErr_Clear
+PyErr_Fetch
+PyErr_NormalizeException
+PyErr_ExceptionMatches
+PyErr_GivenExceptionMatches
+PyErr_Occurred
+PyErr_SetString
+PyErr_SetNone
+PyErr_SetObject
+PyErr_Restore
+PyImport_FrozenModules
+PyArg_ParseTupleAndKeywords
+PyArg_VaParse
+PyArg_ParseTuple
+PyArg_Parse
+Py_GetCopyright
+PyOS_GetLastModificationTime
+_PyOS_opterr
+_PyOS_optind
+_PyOS_optarg
+_PyOS_GetOpt
+Py_GetVersion
+_PyParser_Grammar
+PyImport_Inittab
+_PyImport_Filetab
+PyImport_AppendInittab
+PyImport_ExtendInittab
+initimp
+PyImport_Import
+PyImport_ReloadModule
+PyImport_ImportModuleEx
+PyImport_ImportModule
+PyImport_ImportFrozenModule
+PyImport_ExecCodeModuleEx
+PyImport_ExecCodeModule
+PyImport_AddModule
+_PyImport_FindExtension
+_PyImport_FixupExtension
+PyImport_GetMagicNumber
+PyImport_Cleanup
+PyImport_GetModuleDict
+_PyImport_Fini
+_PyImport_Init
+_PyImport_LoadDynamicModule
+PyMarshal_Init
+PyMarshal_WriteObjectToString
+PyMarshal_ReadObjectFromString
+PyMarshal_ReadObjectFromFile
+PyMarshal_ReadLastObjectFromFile
+PyMarshal_ReadLongFromFile
+PyMarshal_WriteObjectToFile
+PyMarshal_WriteLongToFile
+_Py_PackageContext
+PyModule_AddStringConstant
+PyModule_AddIntConstant
+PyModule_AddObject
+PyEval_CallMethod
+PyEval_CallFunction
+Py_VaBuildValue
+Py_BuildValue
+Py_InitModule4
+PyOS_strtol
+PyOS_strtoul
+Py_UseClassExceptionsFlag
+Py_DebugFlag
+Py_VerboseFlag
+Py_InteractiveFlag
+Py_NoSiteFlag
+Py_FrozenFlag
+_PyThread_Started
+Py_UnicodeFlag
+PyOS_setsig
+PyOS_getsig
+Py_FdIsInteractive
+Py_Exit
+Py_AtExit
+Py_FatalError
+PyParser_SimpleParseString
+PyParser_SimpleParseFile
+Py_SymtableString
+Py_CompileStringFlags
+Py_CompileString
+PyRun_FileExFlags
+PyRun_FileFlags
+PyRun_StringFlags
+PyRun_FileEx
+PyRun_File
+PyRun_String
+PyErr_Display
+PyErr_PrintEx
+PyErr_Print
+PyRun_SimpleString
+PyRun_SimpleFileExFlags
+PyRun_SimpleFileEx
+PyRun_SimpleFile
+PyRun_InteractiveOneFlags
+PyRun_InteractiveOne
+PyRun_InteractiveLoopFlags
+PyRun_InteractiveLoop
+PyRun_AnyFileExFlags
+PyRun_AnyFileEx
+PyRun_AnyFileFlags
+PyRun_AnyFile
+Py_GetPythonHome
+Py_SetPythonHome
+Py_GetProgramName
+Py_SetProgramName
+Py_EndInterpreter
+Py_NewInterpreter
+Py_Finalize
+Py_Initialize
+Py_IsInitialized
+_PyThreadState_Current
+PyThreadState_GetDict
+PyThreadState_Swap
+PyThreadState_Get
+PyThreadState_DeleteCurrent
+PyThreadState_Delete
+PyThreadState_Clear
+PyThreadState_New
+PyInterpreterState_Delete
+PyInterpreterState_Clear
+PyInterpreterState_New
+PyMember_Set
+PyMember_Get
+PySys_WriteStderr
+PySys_WriteStdout
+PySys_SetArgv
+PySys_SetPath
+_PySys_Init
+PySys_AddWarnOption
+PySys_ResetWarnOptions
+PySys_SetObject
+PySys_GetFile
+PySys_GetObject
+PyTraceBack_Type
+PyTraceBack_Print
+PyTraceBack_Here
+PyCode_Type
+Py_OptimizeFlag
+PySymtable_Free
+PyCode_Addr2Line
+PyNode_CompileSymtable
+PyNode_CompileFlags
+PyNode_Compile
+PyCode_New
+PyIter_Next
+PyObject_GetIter
+PyObject_IsSubclass
+PyObject_IsInstance
+PyObject_CallMethod
+PyObject_CallFunction
+PyObject_CallObject
+PyMapping_HasKey
+PyMapping_HasKeyString
+PyMapping_SetItemString
+PyMapping_GetItemString
+PyMapping_Length
+PyMapping_Size
+PyMapping_Check
+PySequence_Index
+PySequence_In
+PySequence_Contains
+_PySequence_IterContains
+PySequence_Count
+PySequence_Fast
+PySequence_List
+PySequence_Tuple
+PySequence_DelSlice
+PySequence_SetSlice
+PySequence_DelItem
+PySequence_SetItem
+PySequence_GetSlice
+PySequence_GetItem
+PySequence_InPlaceRepeat
+PySequence_InPlaceConcat
+PySequence_Repeat
+PySequence_Concat
+PySequence_Length
+PySequence_Size
+PySequence_Check
+PyNumber_Float
+PyNumber_Long
+PyNumber_Int
+PyNumber_Absolute
+PyNumber_Invert
+PyNumber_Positive
+PyNumber_Negative
+PyNumber_InPlacePower
+PyNumber_InPlaceRemainder
+PyNumber_InPlaceMultiply
+PyNumber_InPlaceAdd
+PyNumber_InPlaceDivide
+PyNumber_InPlaceSubtract
+PyNumber_InPlaceRshift
+PyNumber_InPlaceLshift
+PyNumber_InPlaceAnd
+PyNumber_InPlaceXor
+PyNumber_InPlaceOr
+PyNumber_Power
+PyNumber_Remainder
+PyNumber_Add
+PyNumber_Divmod
+PyNumber_Divide
+PyNumber_Multiply
+PyNumber_Subtract
+PyNumber_Rshift
+PyNumber_Lshift
+PyNumber_And
+PyNumber_Xor
+PyNumber_Or
+PyNumber_Check
+PyObject_AsWriteBuffer
+PyObject_AsReadBuffer
+PyObject_AsCharBuffer
+PyObject_DelItem
+PyObject_SetItem
+PyObject_GetItem
+PyObject_Length
+PyObject_Size
+PyObject_Type
+PyObject_Cmp
+PyClass_Type
+PyInstance_Type
+PyMethod_Type
+PyMethod_Fini
+PyMethod_Class
+PyMethod_Self
+PyMethod_Function
+PyMethod_New
+PyInstance_New
+PyInstance_NewRaw
+PyClass_IsSubclass
+PyClass_New
+PyCObject_Type
+PyCObject_Import
+PyCObject_GetDesc
+PyCObject_AsVoidPtr
+PyCObject_FromVoidPtrAndDesc
+PyCObject_FromVoidPtr
+PyComplex_Type
+PyComplex_AsCComplex
+PyComplex_ImagAsDouble
+PyComplex_RealAsDouble
+PyComplex_FromDoubles
+PyComplex_FromCComplex
+_Py_c_pow
+_Py_c_quot
+_Py_c_prod
+_Py_c_neg
+_Py_c_diff
+_Py_c_sum
+PyDict_Type
+PyDictIter_Type
+PyDict_DelItemString
+PyDict_SetItemString
+PyDict_GetItemString
+PyDict_Items
+PyDict_Values
+PyDict_Keys
+PyDict_Size
+PyDict_Copy
+PyDict_Next
+PyDict_Clear
+PyDict_DelItem
+PyDict_SetItem
+PyDict_GetItem
+PyDict_New
+PyFile_Type
+PyObject_AsFileDescriptor
+PyFile_WriteString
+PyFile_WriteObject
+PyFile_SoftSpace
+PyFile_GetLine
+PyFile_SetBufSize
+PyFile_FromString
+PyFile_FromFile
+PyFile_Name
+PyFile_AsFile
+PyFloat_Type
+PyFloat_Fini
+PyFloat_AsReprString
+PyFloat_AsString
+PyFloat_AsStringEx
+PyFloat_AsDouble
+PyFloat_FromString
+PyFloat_FromDouble
+PyFrame_Type
+PyFrame_Fini
+PyFrame_LocalsToFast
+PyFrame_FastToLocals
+PyFrame_BlockPop
+PyFrame_BlockSetup
+PyFrame_New
+PyFunction_Type
+PyFunction_SetClosure
+PyFunction_GetClosure
+PyFunction_SetDefaults
+PyFunction_GetDefaults
+PyFunction_GetGlobals
+PyFunction_GetCode
+PyFunction_New
+_Py_ZeroStruct
+_Py_TrueStruct
+PyInt_Type
+PyInt_Fini
+PyInt_FromUnicode
+PyInt_FromString
+PyInt_AsLong
+PyInt_FromLong
+PyInt_GetMax
+PyList_Type
+PyList_AsTuple
+PyList_Reverse
+PyList_Sort
+PyList_SetSlice
+PyList_GetSlice
+PyList_Append
+PyList_Insert
+PyList_SetItem
+PyList_GetItem
+PyList_Size
+PyList_New
+PyLong_Type
+PyLong_FromUnicode
+PyLong_FromString
+PyLong_AsVoidPtr
+PyLong_FromVoidPtr
+PyLong_AsDouble
+PyLong_AsUnsignedLong
+PyLong_AsLong
+PyLong_FromDouble
+PyLong_FromUnsignedLong
+PyLong_FromLong
+_PyLong_New
+PyCFunction_Type
+PyCFunction_Fini
+Py_FindMethod
+Py_FindMethodInChain
+PyCFunction_GetFlags
+PyCFunction_GetSelf
+PyCFunction_GetFunction
+PyCFunction_New
+PyModule_Type
+_PyModule_Clear
+PyModule_GetFilename
+PyModule_GetName
+PyModule_GetDict
+PyModule_New
+_Py_NoneStruct
+_Py_NotImplementedStruct
+_Py_cobject_hack
+_Py_abstract_hack
+PyObject_ClearWeakRefs
+_PyTrash_delete_later
+_PyTrash_delete_nesting
+_PyTrash_destroy_chain
+_PyTrash_deposit_object
+Py_ReprLeave
+Py_ReprEnter
+PyObject_Free
+PyObject_Realloc
+PyObject_Malloc
+PyMem_Free
+PyMem_Realloc
+PyMem_Malloc
+PyCallable_Check
+PyNumber_Coerce
+PyNumber_CoerceEx
+PyObject_Not
+PyObject_IsTrue
+PyObject_SetAttr
+PyObject_HasAttr
+PyObject_GetAttr
+PyObject_SetAttrString
+PyObject_HasAttrString
+PyObject_GetAttrString
+PyObject_Hash
+_Py_HashPointer
+_Py_HashDouble
+PyObject_RichCompareBool
+PyObject_RichCompare
+PyObject_Compare
+PyObject_Unicode
+PyObject_Str
+PyObject_Repr
+_PyObject_Dump
+PyObject_Print
+_PyGC_Remove
+_PyGC_Insert
+_PyObject_Del
+_PyObject_NewVar
+_PyObject_New
+PyObject_InitVar
+PyObject_Init
+PyRange_Type
+PyRange_New
+_Py_EllipsisObject
+PySlice_Type
+PySlice_GetIndices
+PySlice_New
+PyString_Type
+_Py_ReleaseInternedStrings
+PyString_Fini
+PyString_InternFromString
+PyString_InternInPlace
+PyString_Format
+_PyString_FormatLong
+_PyString_Resize
+PyString_ConcatAndDel
+PyString_Concat
+PyString_AsStringAndSize
+PyString_AsString
+PyString_Size
+PyString_AsEncodedString
+PyString_AsEncodedObject
+PyString_Encode
+PyString_AsDecodedString
+PyString_AsDecodedObject
+PyString_Decode
+PyString_FromString
+PyString_FromStringAndSize
+PyTuple_Type
+PyTuple_Fini
+_PyTuple_Resize
+PyTuple_GetSlice
+PyTuple_SetItem
+PyTuple_GetItem
+PyTuple_Size
+PyTuple_New
+PyType_Type
+PyGrammar_RemoveAccelerators
+PyGrammar_AddAccelerators
+PyGrammar_LabelRepr
+PyGrammar_FindDFA
+PyOS_AfterFork
+PyOS_ReadlineFunctionPointer
+PyOS_InputHook
+PyOS_Readline
+PyOS_StdioReadline
+PyNode_Free
+PyNode_AddChild
+PyNode_New
+PyParser_AddToken
+PyParser_Delete
+PyParser_New
+Py_TabcheckFlag
+PyParser_ParseFile
+PyParser_ParseString
+_PyParser_TokenNames
+PyTokenizer_Get
+PyToken_ThreeChars
+PyToken_TwoChars
+PyToken_OneChar
+PyTokenizer_Free
+PyTokenizer_FromFile
+PyTokenizer_FromString
+array_methods
+initarray
+initaudioop
+initbinascii
+initcmath
+initerrno
+Py_GetBuildInfo
+initimageop
+initmath
+_Py_MD5Final
+_Py_MD5Update
+_Py_MD5Init
+initmd5
+new_doc
+initnew
+initoperator
+initparser
+initregex
+_Py_re_syntax_table
+_Py_re_syntax
+_Py_re_search
+_Py_re_match
+_Py_re_compile_pattern
+_Py_re_compile_fastmap
+_Py_re_set_syntax
+_Py_re_compile_initialize
+initrgbimg
+initrotor
+initselect
+gethostbyname_lock
+init_socket
+initstrop
+initstruct
+inittime
+FindApplicationFromCreator
+PyMac_ApplicationFSSpec
+PyMac_ApplicationPath
+open_doc_upp
+open_app_upp
+not_upp
+PyMac_GetArgv
+PyMac_GetFullPath
+PyMac_init_process_location
+strdup
+Py_GetCompiler
+PyMac_PreferenceOptions
+PyMac_GetPythonPath
+PyMac_GetPythonDir
+PyMac_OpenPrefFile
+Py_GetPath
+Py_GetPlatform
+PyMac_ConsoleIsDead
+PyMac_AppearanceCompliant
+PyMac_OSErrException
+PyMac_Buildwide
+PyMac_Getwide
+PyMac_BuildFixed
+PyMac_GetFixed
+PyMac_GetEventRecord
+PyMac_BuildPoint
+PyMac_GetPoint
+PyMac_BuildRect
+PyMac_GetRect
+PyMac_BuildFSSpec
+PyMac_GetFSSpec
+PyMac_BuildOptStr255
+PyMac_BuildStr255
+PyMac_GetStr255
+PyMac_BuildNumVersion
+PyMac_BuildOSType
+PyMac_GetOSType
+PyMac_PromptGetFile
+PyMac_GetDirectory
+SIOUXDoAboutBox
+PyMac_RaiseConsoleWindow
+PyMac_RestoreMenuBar
+PyMac_InitMenuBar
+PyMac_SetSchedParams
+PyMac_GetSchedParams
+PyMac_DoYield
+PyMac_HandleEvent
+PyMac_BuildEventRecord
+PyMac_HandleEventIntern
+PyMac_SetEventHandler
+PyOS_InterruptOccurred
+PyErr_CheckSignals
+PyOS_FiniInterrupts
+PyOS_InitInterrupts
+PyOS_CheckStack
+PyMac_Error
+PyErr_Mac
+PyMac_GetOSErrException
+PyMac_StrError
+c2pstrcpy
+Pstring
+PLstrrchr
+PLstrcmp
+PLstrcpy
+PyMac_StopGUSISpin
+RotateCursor
+SpinCursor
+PyMac_getscript
+PyMac_AppRefNum
+PyMac_options
+console_output_state
+PyMac_GetDelayConsoleFlag
+Py_GetExecPrefix
+Py_GetPrefix
+Py_GetArgcArgv
+Py_GetProgramFullPath
+PyMac_Exit
+abort
+PyMac_OutputNotSeen
+PyMac_OutputSeen
+PyMac_InitApplication
+PyMac_Initialize
+PyMac_InitApplet
+PyMac_getfiletype
+PyMac_setfiletype
+main
+PyMac_AddLibResources
+__initialize_with_resources
+getbootvol
+getwd
+macstat
+sync
+initgestalt
+initmacfs
+newmfssobject
+mfs_GetFSSpecFSSpec
+initmac
+initMacOS
+Pcre_Type
+initpcre
+pcre_lcc
+pcre_fcc
+pcre_cbits
+pcre_ctypes
+pcre_malloc
+pcre_free
+pcre_exec
+pcre_compile
+pcre_info
+pcre_version
+pcre_study
+initcPickle
+Pickler_setattr
+cPickle_PyMapping_HasKey
+initcStringIO
+PyMac_FindModuleExtension
+PyMac_LoadResourceModule
+PyMac_LoadCodeResourceModule
+PyMac_FindCodeResourceModule
+PyMac_FindResourceModule
+_PyImport_Inittab
+CtlObj_chain
+Control_Type
+initCtl
+_CtlObj_Convert
+_CtlObj_New
+DlgObj_chain
+Dialog_Type
+initDlg
+DlgObj_Convert
+DlgObj_New
+DlgObj_WhichDialog
+MenuObj_chain
+Menu_Type
+initMenu
+_MenuObj_Convert
+_MenuObj_New
+GrafObj_chain
+GrafPort_Type
+BMObj_chain
+BitMap_Type
+QDGlobalsAccess_Type
+initQd
+BMObj_NewCopied
+_BMObj_Convert
+_BMObj_New
+_GrafObj_Convert
+_GrafObj_New
+_QdRGB_Convert
+_QdRGB_New
+ResObj_chain
+Resource_Type
+initRes
+_OptResObj_Convert
+_OptResObj_New
+_ResObj_Convert
+_ResObj_New
+WinObj_chain
+Window_Type
+initWin
+WinObj_WhichWindow
+WinObj_Convert
+WinObj_New
+PyBuffer_Type
+PyBuffer_New
+PyBuffer_FromReadWriteMemory
+PyBuffer_FromMemory
+PyBuffer_FromReadWriteObject
+PyBuffer_FromObject
+_PyImport_DynLoadFiletab
+_PyImport_GetDynLoadFunc
+init_codecs
+_PyUnicode_Database_Records
+_PyUnicode_CategoryNames
+_PyUnicode_BidirectionalNames
+initunicodedata
+_PyCodecRegistry_Fini
+_PyCodecRegistry_Init
+PyCodec_Decode
+PyCodec_Encode
+PyCodec_StreamWriter
+PyCodec_StreamReader
+PyCodec_Decoder
+PyCodec_Encoder
+_PyCodec_Lookup
+PyCodec_Register
+_PyUnicode_TypeRecords
+_PyUnicode_IsAlpha
+_PyUnicode_ToLowercase
+_PyUnicode_ToUppercase
+_PyUnicode_IsUppercase
+_PyUnicode_IsLowercase
+_PyUnicode_IsWhitespace
+_PyUnicode_IsNumeric
+_PyUnicode_ToNumeric
+_PyUnicode_IsDigit
+_PyUnicode_ToDigit
+_PyUnicode_IsDecimalDigit
+_PyUnicode_ToDecimalDigit
+_PyUnicode_IsTitlecase
+_PyUnicode_ToTitlecase
+_PyUnicode_IsLinebreak
+PyUnicode_Type
+_PyUnicode_Fini
+_PyUnicode_Init
+PyUnicode_Format
+PyUnicode_Split
+PyUnicode_Replace
+PyUnicode_Concat
+PyUnicode_Contains
+PyUnicode_Compare
+PyUnicode_Splitlines
+PyUnicode_Join
+PyUnicode_Tailmatch
+PyUnicode_Find
+PyUnicode_Count
+PyUnicode_EncodeDecimal
+PyUnicode_Translate
+PyUnicode_TranslateCharmap
+PyUnicode_AsCharmapString
+PyUnicode_EncodeCharmap
+PyUnicode_DecodeCharmap
+PyUnicode_AsASCIIString
+PyUnicode_EncodeASCII
+PyUnicode_DecodeASCII
+PyUnicode_AsLatin1String
+PyUnicode_EncodeLatin1
+PyUnicode_DecodeLatin1
+PyUnicode_AsRawUnicodeEscapeString
+PyUnicode_EncodeRawUnicodeEscape
+PyUnicode_DecodeRawUnicodeEscape
+PyUnicode_AsUnicodeEscapeString
+PyUnicode_EncodeUnicodeEscape
+PyUnicode_DecodeUnicodeEscape
+PyUnicode_AsUTF16String
+PyUnicode_EncodeUTF16
+PyUnicode_DecodeUTF16
+PyUnicode_AsUTF8String
+PyUnicode_EncodeUTF8
+PyUnicode_DecodeUTF8
+PyUnicode_SetDefaultEncoding
+PyUnicode_GetDefaultEncoding
+PyUnicode_GetSize
+PyUnicode_AsUnicode
+_PyUnicode_AsDefaultEncodedString
+PyUnicode_AsEncodedString
+PyUnicode_Encode
+PyUnicode_Decode
+PyUnicode_FromEncodedObject
+PyUnicode_FromObject
+PyUnicode_AsWideChar
+PyUnicode_FromWideChar
+PyUnicode_FromUnicode
+PyUnicode_Resize
+initthread
+PyThread_up_sema
+PyThread_down_sema
+PyThread_free_sema
+PyThread_allocate_sema
+PyThread_release_lock
+PyThread_acquire_lock
+PyThread_free_lock
+PyThread_allocate_lock
+PyThread__exit_thread
+PyThread_exit_thread
+PyThread_get_thread_ident
+PyThread_start_new_thread
+PyThread_init_thread
+PyExc_Exception
+PyExc_StopIteration
+PyExc_StandardError
+PyExc_ArithmeticError
+PyExc_LookupError
+PyExc_AssertionError
+PyExc_AttributeError
+PyExc_EOFError
+PyExc_FloatingPointError
+PyExc_EnvironmentError
+PyExc_IOError
+PyExc_OSError
+PyExc_ImportError
+PyExc_IndexError
+PyExc_KeyError
+PyExc_KeyboardInterrupt
+PyExc_MemoryError
+PyExc_NameError
+PyExc_OverflowError
+PyExc_RuntimeError
+PyExc_NotImplementedError
+PyExc_SyntaxError
+PyExc_IndentationError
+PyExc_TabError
+PyExc_SystemError
+PyExc_SystemExit
+PyExc_UnboundLocalError
+PyExc_UnicodeError
+PyExc_TypeError
+PyExc_ValueError
+PyExc_ZeroDivisionError
+PyExc_MemoryErrorInst
+PyExc_Warning
+PyExc_UserWarning
+PyExc_DeprecationWarning
+PyExc_SyntaxWarning
+PyExc_RuntimeWarning
+fini_exceptions
+init_exceptions
+initNav
+AEDesc_chain
+AEDesc_Type
+upp_GenericEventHandler
+upp_AEIdleProc
+initAE
+_AEDesc_Convert
+_AEDesc_New
+init_locale
+initEvt
+init_sre
+initsha
+DragObj_chain
+DragObj_Type
+dragglue_TrackingHandlerUPP
+dragglue_ReceiveHandlerUPP
+dragglue_SendDataUPP
+initDrag
+_DragObj_Convert
+_DragObj_New
+initxreadlines
+PyCell_Type
+PyCell_Set
+PyCell_Get
+PyCell_New
+PySymtableEntry_Type
+PySymtableEntry_New
+PyNode_Future
+PySeqIter_Type
+PyCallIter_Type
+PyCallIter_New
+PySeqIter_New
+PyMacGluePtr_AEDesc_New
+PyMacGluePtr_AEDesc_Convert
+PyMacGluePtr_CmpObj_New
+PyMacGluePtr_CmpObj_Convert
+PyMacGluePtr_CmpInstObj_New
+PyMacGluePtr_CmpInstObj_Convert
+PyMacGluePtr_CtlObj_New
+PyMacGluePtr_CtlObj_Convert
+PyMacGluePtr_DragObj_New
+PyMacGluePtr_DragObj_Convert
+PyMacGluePtr_ListObj_New
+PyMacGluePtr_ListObj_Convert
+PyMacGluePtr_MenuObj_New
+PyMacGluePtr_MenuObj_Convert
+PyMacGluePtr_GrafObj_New
+PyMacGluePtr_GrafObj_Convert
+PyMacGluePtr_BMObj_New
+PyMacGluePtr_BMObj_Convert
+PyMacGluePtr_QdRGB_New
+PyMacGluePtr_QdRGB_Convert
+PyMacGluePtr_GWorldObj_New
+PyMacGluePtr_GWorldObj_Convert
+PyMacGluePtr_TrackObj_New
+PyMacGluePtr_TrackObj_Convert
+PyMacGluePtr_MovieObj_New
+PyMacGluePtr_MovieObj_Convert
+PyMacGluePtr_MovieCtlObj_New
+PyMacGluePtr_MovieCtlObj_Convert
+PyMacGluePtr_TimeBaseObj_New
+PyMacGluePtr_TimeBaseObj_Convert
+PyMacGluePtr_UserDataObj_New
+PyMacGluePtr_UserDataObj_Convert
+PyMacGluePtr_MediaObj_New
+PyMacGluePtr_MediaObj_Convert
+PyMacGluePtr_ResObj_New
+PyMacGluePtr_ResObj_Convert
+PyMacGluePtr_OptResObj_New
+PyMacGluePtr_OptResObj_Convert
+PyMacGluePtr_TEObj_New
+PyMacGluePtr_TEObj_Convert
+TEObj_Convert
+TEObj_New
+OptResObj_Convert
+OptResObj_New
+ResObj_Convert
+ResObj_New
+MediaObj_Convert
+MediaObj_New
+UserDataObj_Convert
+UserDataObj_New
+TimeBaseObj_Convert
+TimeBaseObj_New
+MovieCtlObj_Convert
+MovieCtlObj_New
+MovieObj_Convert
+MovieObj_New
+TrackObj_Convert
+TrackObj_New
+GWorldObj_Convert
+GWorldObj_New
+QdRGB_Convert
+QdRGB_New
+BMObj_Convert
+BMObj_New
+GrafObj_Convert
+GrafObj_New
+MenuObj_Convert
+MenuObj_New
+ListObj_Convert
+ListObj_New
+DragObj_Convert
+DragObj_New
+CtlObj_Convert
+CtlObj_New
+CmpInstObj_Convert
+CmpInstObj_New
+CmpObj_Convert
+CmpObj_New
+AEDesc_Convert
+AEDesc_New
+GUSISetupConsoleStdio
+GUSIStdioFlush
+GUSIStdioClose
+_fdopen
+__close_console
+__close_file
+__position_file
+__write_console
+__write_file
+__read_console
+__read_file
+__open_temp_file
+__open_file
+gGUSIEventMask
+h_errno
+gGUSIEventHook
+gGUSIExecHook
+gGUSISpinHook
+GUSI_sprintf__FPcPCce          # GUSI_sprintf(char*,const char*,...)
+GUSI_vsprintf__FPcPCcPc                # GUSI_vsprintf(char*,const char*,char*)
+GUSIHandleNextEvent__Fl                # GUSIHandleNextEvent(long)
+GUSISetMacHostError__Fs                # GUSISetMacHostError(short)
+GUSISetHostError__Fi           # GUSISetHostError(int)
+GUSISetMacError__Fs            # GUSISetMacError(short)
+GUSIMapMacError__Fs            # GUSIMapMacError(short)
+GUSISetPosixError__Fi          # GUSISetPosixError(int)
+GUSIGetHook__FUl               # GUSIGetHook(unsigned long)
+GUSISetHook__FUlPFv_v          # GUSISetHook(unsigned long,void (*)(void))
+__vt__13GUSIScattGath          # GUSIScattGath::__vt
+Peek__Q214GUSIRingBuffer6PeekerFRC13GUSIScattererRUl           # GUSIRingBuffer::Peeker::Peek(const GUSIScatterer&,unsigned long&)
+Peek__Q214GUSIRingBuffer6PeekerFPvRUl          # GUSIRingBuffer::Peeker::Peek(void*,unsigned long&)
+PeekBuffer__Q214GUSIRingBuffer6PeekerFRUl              # GUSIRingBuffer::Peeker::PeekBuffer(unsigned long&)
+__dt__Q214GUSIRingBuffer6PeekerFv              # GUSIRingBuffer::Peeker::~Peeker()
+__ct__Q214GUSIRingBuffer6PeekerFR14GUSIRingBuffer              # GUSIRingBuffer::Peeker::Peeker(GUSIRingBuffer&)
+Valid__14GUSIRingBufferFv              # GUSIRingBuffer::Valid()
+Free__14GUSIRingBufferFv               # GUSIRingBuffer::Free()
+IterateIOVec__14GUSIRingBufferFRC13GUSIScattGathRUlRUlb                # GUSIRingBuffer::IterateIOVec(const GUSIScattGath&,unsigned long&,unsigned long&,bool)
+Consume__14GUSIRingBufferFPvRUl                # GUSIRingBuffer::Consume(void*,unsigned long&)
+Produce__14GUSIRingBufferFPvRUl                # GUSIRingBuffer::Produce(void*,unsigned long&)
+FreeBuffer__14GUSIRingBufferFPvUl              # GUSIRingBuffer::FreeBuffer(void*,unsigned long)
+ValidBuffer__14GUSIRingBufferFPvUl             # GUSIRingBuffer::ValidBuffer(void*,unsigned long)
+ConsumeBuffer__14GUSIRingBufferFRUl            # GUSIRingBuffer::ConsumeBuffer(unsigned long&)
+ProduceBuffer__14GUSIRingBufferFRUl            # GUSIRingBuffer::ProduceBuffer(unsigned long&)
+__dt__14GUSIRingBufferFv               # GUSIRingBuffer::~GUSIRingBuffer()
+ObsoleteBuffer__14GUSIRingBufferFv             # GUSIRingBuffer::ObsoleteBuffer()
+PurgeBuffers__14GUSIRingBufferFv               # GUSIRingBuffer::PurgeBuffers()
+SwitchBuffer__14GUSIRingBufferFUl              # GUSIRingBuffer::SwitchBuffer(unsigned long)
+__ct__14GUSIRingBufferFUl              # GUSIRingBuffer::GUSIRingBuffer(unsigned long)
+Invariant__14GUSIRingBufferFv          # GUSIRingBuffer::Invariant()
+Distance__14GUSIRingBufferFPcPc                # GUSIRingBuffer::Distance(char*,char*)
+__ct__13GUSIScattGathFRC13GUSIScattGath                # GUSIScattGath::GUSIScattGath(const GUSIScattGath&)
+__as__13GUSIScattGathFRC13GUSIScattGath                # GUSIScattGath::operator =(const GUSIScattGath&)
+__dt__13GUSIScattGathFv                # GUSIScattGath::~GUSIScattGath()
+Buffer__13GUSIScattGathCFv             # GUSIScattGath::Buffer() const
+__ct__13GUSIScattGathFPvUlb            # GUSIScattGath::GUSIScattGath(void*,unsigned long,bool)
+__ct__13GUSIScattGathFPC5iovecib               # GUSIScattGath::GUSIScattGath(const iovec*,int,bool)
+sInstance__17GUSIConfiguration         # GUSIConfiguration::sInstance
+ConfigureHandleAppleEvents__17GUSIConfigurationFb              # GUSIConfiguration::ConfigureHandleAppleEvents(bool)
+CmdPeriod__17GUSIConfigurationFPC11EventRecord         # GUSIConfiguration::CmdPeriod(const EventRecord*)
+CheckInterrupt__17GUSIConfigurationFv          # GUSIConfiguration::CheckInterrupt()
+BrokenPipe__17GUSIConfigurationFv              # GUSIConfiguration::BrokenPipe()
+DoAutoInitGraf__17GUSIConfigurationFv          # GUSIConfiguration::DoAutoInitGraf()
+DoAutoSpin__17GUSIConfigurationCFv             # GUSIConfiguration::DoAutoSpin() const
+SetDefaultFType__17GUSIConfigurationCFRC12GUSIFileSpec         # GUSIConfiguration::SetDefaultFType(const GUSIFileSpec&) const
+ConfigureSuffices__17GUSIConfigurationFsPQ217GUSIConfiguration10FileSuffix             # GUSIConfiguration::ConfigureSuffices(short,GUSIConfiguration::FileSuffix*)
+__ct__17GUSIConfigurationFs            # GUSIConfiguration::GUSIConfiguration(short)
+CreateInstance__17GUSIConfigurationFs          # GUSIConfiguration::CreateInstance(short)
+__vt__22GUSIThreadManagerProxy         # GUSIThreadManagerProxy::__vt
+__vt__18GUSIContextFactory             # GUSIContextFactory::__vt
+__vt__11GUSIContext            # GUSIContext::__vt
+sError__11GUSIContext          # GUSIContext::sError
+sHasThreading__11GUSIContext           # GUSIContext::sHasThreading
+sCurrentContext__11GUSIContext         # GUSIContext::sCurrentContext
+sContexts__11GUSIContext               # GUSIContext::sContexts
+sInstance__11GUSIProcess               # GUSIProcess::sInstance
+__dt__Q211GUSIContext5QueueFv          # GUSIContext::Queue::~Queue()
+MakeInstance__22GUSIThreadManagerProxyFv               # GUSIThreadManagerProxy::MakeInstance()
+__dt__22GUSIThreadManagerProxyFv               # GUSIThreadManagerProxy::~GUSIThreadManagerProxy()
+__dt__Q23std76auto_ptr<22GUSIThreadManagerProxy,Q23std33_Single<22GUSIThreadManagerProxy>>Fv           # std::auto_ptr<GUSIThreadManagerProxy, std::_Single<GUSIThreadManagerProxy>>::~auto_ptr()
+Instance__22GUSIThreadManagerProxyFv           # GUSIThreadManagerProxy::Instance()
+SetThreadTerminator__22GUSIThreadManagerProxyFUlPFUlPv_vPv             # GUSIThreadManagerProxy::SetThreadTerminator(unsigned long,void (*)(unsigned long, void*),void*)
+SetThreadSwitcher__22GUSIThreadManagerProxyFUlPFUlPv_vPvUc             # GUSIThreadManagerProxy::SetThreadSwitcher(unsigned long,void (*)(unsigned long, void*),void*,unsigned char)
+NewThread__22GUSIThreadManagerProxyFUlPFPv_PvPvlUlPPvPUl               # GUSIThreadManagerProxy::NewThread(unsigned long,void* (*)(void*),void*,long,unsigned long,void**,unsigned long*)
+GUSIControl__FP7IOParam                # GUSIControl(IOParam*)
+GUSIFinishIO__FP7IOParam               # GUSIFinishIO(IOParam*)
+GUSIStartIO__FP7IOParam                # GUSIStartIO(IOParam*)
+Blocked__11GUSIContextFv               # GUSIContext::Blocked()
+Pending__11GUSIContextFv               # GUSIContext::Pending()
+Raise__11GUSIContextFb         # GUSIContext::Raise(bool)
+Yield__11GUSIProcessF13GUSIYieldMode           # GUSIProcess::Yield(GUSIYieldMode)
+SigSuspend__11GUSIContextFv            # GUSIContext::SigSuspend()
+SigWait__11GUSIContextFUi              # GUSIContext::SigWait(unsigned int)
+Yield__11GUSIContextF13GUSIYieldMode           # GUSIContext::Yield(GUSIYieldMode)
+Done__11GUSIContextFb          # GUSIContext::Done(bool)
+Terminate__11GUSIContextFv             # GUSIContext::Terminate()
+SwitchOut__11GUSIContextFv             # GUSIContext::SwitchOut()
+SwitchIn__11GUSIContextFv              # GUSIContext::SwitchIn()
+SetTerminator__11GUSIContextFPFUlPv_vPv                # GUSIContext::SetTerminator(void (*)(unsigned long, void*),void*)
+GUSISetThreadTerminator
+SetSwitchOut__11GUSIContextFPFUlPv_vPv         # GUSIContext::SetSwitchOut(void (*)(unsigned long, void*),void*)
+SetSwitchIn__11GUSIContextFPFUlPv_vPv          # GUSIContext::SetSwitchIn(void (*)(unsigned long, void*),void*)
+GUSISetThreadSwitcher
+CreateContext__18GUSIContextFactoryFUl         # GUSIContextFactory::CreateContext(unsigned long)
+CreateContext__18GUSIContextFactoryFPFPv_PvPvlUlPPvPUl         # GUSIContextFactory::CreateContext(void* (*)(void*),void*,long,unsigned long,void**,unsigned long*)
+__dt__18GUSIContextFactoryFv           # GUSIContextFactory::~GUSIContextFactory()
+__ct__18GUSIContextFactoryFv           # GUSIContextFactory::GUSIContextFactory()
+__dt__Q23std68auto_ptr<18GUSIContextFactory,Q23std29_Single<18GUSIContextFactory>>Fv           # std::auto_ptr<GUSIContextFactory, std::_Single<GUSIContextFactory>>::~auto_ptr()
+SetInstance__18GUSIContextFactoryFP18GUSIContextFactory                # GUSIContextFactory::SetInstance(GUSIContextFactory*)
+Instance__18GUSIContextFactoryFv               # GUSIContextFactory::Instance()
+GUSINewThread
+Wakeup__11GUSIProcessFv                # GUSIProcess::Wakeup()
+Wakeup__11GUSIContextFv                # GUSIContext::Wakeup()
+Liquidate__11GUSIContextFv             # GUSIContext::Liquidate()
+LiquidateAll__Q211GUSIContext5QueueFv          # GUSIContext::Queue::LiquidateAll()
+__dt__11GUSIContextFv          # GUSIContext::~GUSIContext()
+Lookup__11GUSIContextFUl               # GUSIContext::Lookup(unsigned long)
+__ct__11GUSIContextFPFPv_PvPvlUlPPvPUl         # GUSIContext::GUSIContext(void* (*)(void*),void*,long,unsigned long,void**,unsigned long*)
+__ct__11GUSIContextFUl         # GUSIContext::GUSIContext(unsigned long)
+FinishSetup__11GUSIContextFv           # GUSIContext::FinishSetup()
+GUSIThreadTerminator
+StartSetup__11GUSIContextFv            # GUSIContext::StartSetup()
+Setup__11GUSIContextFb         # GUSIContext::Setup(bool)
+GUSIThreadSwitchOut
+GUSIThreadSwitchIn
+__dt__11GUSIProcessFv          # GUSIProcess::~GUSIProcess()
+QueueForClose__11GUSIProcessFP10GUSISocket             # GUSIProcess::QueueForClose(GUSISocket*)
+__ct__11GUSIProcessFb          # GUSIProcess::GUSIProcess(bool)
+sBlocks__Q216GUSIContextQueue7element          # GUSIContextQueue::element::sBlocks
+Wakeup__16GUSIContextQueueFv           # GUSIContextQueue::Wakeup()
+push_back__16GUSIContextQueueFP11GUSIContext           # GUSIContextQueue::push_back(GUSIContext*)
+remove__16GUSIContextQueueFP11GUSIContext              # GUSIContextQueue::remove(GUSIContext*)
+__dt__16GUSIContextQueueFv             # GUSIContextQueue::~GUSIContextQueue()
+__dl__Q216GUSIContextQueue7elementFPvUl                # GUSIContextQueue::element::operator delete(void*,unsigned long)
+__nw__Q216GUSIContextQueue7elementFUl          # GUSIContextQueue::element::operator new(unsigned long)
+__vt__14GUSIDConSocket         # GUSIDConSocket::__vt
+__vt__14GUSIDConDevice         # GUSIDConDevice::__vt
+sInstance__14GUSIDConDevice            # GUSIDConDevice::sInstance
+__dt__14GUSIDConDeviceFv               # GUSIDConDevice::~GUSIDConDevice()
+isatty__14GUSIDConSocketFv             # GUSIDConSocket::isatty()
+Supports__14GUSIDConSocketFQ210GUSISocket12ConfigOption                # GUSIDConSocket::Supports(GUSISocket::ConfigOption)
+write__14GUSIDConSocketFRC12GUSIGatherer               # GUSIDConSocket::write(const GUSIGatherer&)
+read__14GUSIDConSocketFRC13GUSIScatterer               # GUSIDConSocket::read(const GUSIScatterer&)
+__dt__14GUSIDConSocketFv               # GUSIDConSocket::~GUSIDConSocket()
+__ct__14GUSIDConSocketFPCc             # GUSIDConSocket::GUSIDConSocket(const char*)
+open__14GUSIDConDeviceFR13GUSIFileTokeni               # GUSIDConDevice::open(GUSIFileToken&,int)
+Want__14GUSIDConDeviceFR13GUSIFileToken                # GUSIDConDevice::Want(GUSIFileToken&)
+GUSIwithDConSockets
+sGUSIDescriptorTable__19GUSIDescriptorTable            # GUSIDescriptorTable::sGUSIDescriptorTable
+__ct__19GUSIDescriptorTableFRC19GUSIDescriptorTable            # GUSIDescriptorTable::GUSIDescriptorTable(const GUSIDescriptorTable&)
+LookupSocket__19GUSIDescriptorTableFi          # GUSIDescriptorTable::LookupSocket(int)
+__vc__19GUSIDescriptorTableFi          # GUSIDescriptorTable::operator [](int)
+RemoveSocket__19GUSIDescriptorTableFi          # GUSIDescriptorTable::RemoveSocket(int)
+InstallSocket__19GUSIDescriptorTableFP10GUSISocketi            # GUSIDescriptorTable::InstallSocket(GUSISocket*,int)
+__dt__19GUSIDescriptorTableFv          # GUSIDescriptorTable::~GUSIDescriptorTable()
+CloseAllDescriptors__19GUSIDescriptorTableFv           # GUSIDescriptorTable::CloseAllDescriptors()
+SetInstance__19GUSIDescriptorTableFP19GUSIDescriptorTable              # GUSIDescriptorTable::SetInstance(GUSIDescriptorTable*)
+Instance__19GUSIDescriptorTableFv              # GUSIDescriptorTable::Instance()
+Instance__14GUSINullDeviceFv           # GUSINullDevice::Instance()
+GUSIDefaultSetupConsole
+GUSISetupConsole
+__ct__19GUSIDescriptorTableFv          # GUSIDescriptorTable::GUSIDescriptorTable()
+__vt__10GUSIDevice             # GUSIDevice::__vt
+sInstance__18GUSIDeviceRegistry                # GUSIDeviceRegistry::sInstance
+faccess__18GUSIDeviceRegistryFPCcPUiPv         # GUSIDeviceRegistry::faccess(const char*,unsigned int*,void*)
+fsetfileinfo__18GUSIDeviceRegistryFPCcUlUl             # GUSIDeviceRegistry::fsetfileinfo(const char*,unsigned long,unsigned long)
+fgetfileinfo__18GUSIDeviceRegistryFPCcPUlPUl           # GUSIDeviceRegistry::fgetfileinfo(const char*,unsigned long*,unsigned long*)
+readlink__18GUSIDeviceRegistryFPCcPci          # GUSIDeviceRegistry::readlink(const char*,char*,int)
+symlink__18GUSIDeviceRegistryFPCcPCc           # GUSIDeviceRegistry::symlink(const char*,const char*)
+opendir__18GUSIDeviceRegistryFPCc              # GUSIDeviceRegistry::opendir(const char*)
+rmdir__18GUSIDeviceRegistryFPCc                # GUSIDeviceRegistry::rmdir(const char*)
+mkdir__18GUSIDeviceRegistryFPCc                # GUSIDeviceRegistry::mkdir(const char*)
+access__18GUSIDeviceRegistryFPCci              # GUSIDeviceRegistry::access(const char*,int)
+utime__18GUSIDeviceRegistryFPCcPC7utimbuf              # GUSIDeviceRegistry::utime(const char*,const utimbuf*)
+chmod__18GUSIDeviceRegistryFPCcUs              # GUSIDeviceRegistry::chmod(const char*,unsigned short)
+stat__18GUSIDeviceRegistryFPCcP4statb          # GUSIDeviceRegistry::stat(const char*,stat*,bool)
+rename__18GUSIDeviceRegistryFPCcPCc            # GUSIDeviceRegistry::rename(const char*,const char*)
+remove__18GUSIDeviceRegistryFPCc               # GUSIDeviceRegistry::remove(const char*)
+open__18GUSIDeviceRegistryFPCci                # GUSIDeviceRegistry::open(const char*,int)
+Lookup__18GUSIDeviceRegistryFR13GUSIFileToken          # GUSIDeviceRegistry::Lookup(GUSIFileToken&)
+RemoveDevice__18GUSIDeviceRegistryFP10GUSIDevice               # GUSIDeviceRegistry::RemoveDevice(GUSIDevice*)
+AddDevice__18GUSIDeviceRegistryFP10GUSIDevice          # GUSIDeviceRegistry::AddDevice(GUSIDevice*)
+__ct__18GUSIDeviceRegistryFv           # GUSIDeviceRegistry::GUSIDeviceRegistry()
+faccess__10GUSIDeviceFR13GUSIFileTokenPUiPv            # GUSIDevice::faccess(GUSIFileToken&,unsigned int*,void*)
+fsetfileinfo__10GUSIDeviceFR13GUSIFileTokenUlUl                # GUSIDevice::fsetfileinfo(GUSIFileToken&,unsigned long,unsigned long)
+fgetfileinfo__10GUSIDeviceFR13GUSIFileTokenPUlPUl              # GUSIDevice::fgetfileinfo(GUSIFileToken&,unsigned long*,unsigned long*)
+readlink__10GUSIDeviceFR13GUSIFileTokenPci             # GUSIDevice::readlink(GUSIFileToken&,char*,int)
+symlink__10GUSIDeviceFR13GUSIFileTokenPCc              # GUSIDevice::symlink(GUSIFileToken&,const char*)
+opendir__10GUSIDeviceFR13GUSIFileToken         # GUSIDevice::opendir(GUSIFileToken&)
+rmdir__10GUSIDeviceFR13GUSIFileToken           # GUSIDevice::rmdir(GUSIFileToken&)
+mkdir__10GUSIDeviceFR13GUSIFileToken           # GUSIDevice::mkdir(GUSIFileToken&)
+access__10GUSIDeviceFR13GUSIFileTokeni         # GUSIDevice::access(GUSIFileToken&,int)
+utime__10GUSIDeviceFR13GUSIFileTokenPC7utimbuf         # GUSIDevice::utime(GUSIFileToken&,const utimbuf*)
+chmod__10GUSIDeviceFR13GUSIFileTokenUs         # GUSIDevice::chmod(GUSIFileToken&,unsigned short)
+stat__10GUSIDeviceFR13GUSIFileTokenP4stat              # GUSIDevice::stat(GUSIFileToken&,stat*)
+rename__10GUSIDeviceFR13GUSIFileTokenPCc               # GUSIDevice::rename(GUSIFileToken&,const char*)
+remove__10GUSIDeviceFR13GUSIFileToken          # GUSIDevice::remove(GUSIFileToken&)
+open__10GUSIDeviceFR13GUSIFileTokeni           # GUSIDevice::open(GUSIFileToken&,int)
+Want__10GUSIDeviceFR13GUSIFileToken            # GUSIDevice::Want(GUSIFileToken&)
+__ct__13GUSIFileTokenFsQ213GUSIFileToken7Request               # GUSIFileToken::GUSIFileToken(short,GUSIFileToken::Request)
+__ct__13GUSIFileTokenFRC12GUSIFileSpecQ213GUSIFileToken7Request                # GUSIFileToken::GUSIFileToken(const GUSIFileSpec&,GUSIFileToken::Request)
+StrStdStream__13GUSIFileTokenFPCc              # GUSIFileToken::StrStdStream(const char*)
+__ct__13GUSIFileTokenFPCcQ213GUSIFileToken7Requestb            # GUSIFileToken::GUSIFileToken(const char*,GUSIFileToken::Request,bool)
+StrFragEqual__13GUSIFileTokenFPCcPCc           # GUSIFileToken::StrFragEqual(const char*,const char*)
+GUSI_diag_log
+vdfprintf
+dfprintf
+GUSI_break
+GUSI_log
+GUSI_pos
+__vt__22GUSISocketTypeRegistry         # GUSISocketTypeRegistry::__vt
+__vt__24GUSISocketDomainRegistry               # GUSISocketDomainRegistry::__vt
+__vt__17GUSISocketFactory              # GUSISocketFactory::__vt
+sInstance__24GUSISocketDomainRegistry          # GUSISocketDomainRegistry::sInstance
+__dt__24GUSISocketDomainRegistryFv             # GUSISocketDomainRegistry::~GUSISocketDomainRegistry()
+__dt__22GUSISocketTypeRegistryFv               # GUSISocketTypeRegistry::~GUSISocketTypeRegistry()
+RemoveFactory__22GUSISocketTypeRegistryFii             # GUSISocketTypeRegistry::RemoveFactory(int,int)
+AddFactory__22GUSISocketTypeRegistryFiiP17GUSISocketFactory            # GUSISocketTypeRegistry::AddFactory(int,int,GUSISocketFactory*)
+socketpair__22GUSISocketTypeRegistryFiiiPP10GUSISocket         # GUSISocketTypeRegistry::socketpair(int,int,int,GUSISocket**)
+socket__22GUSISocketTypeRegistryFiii           # GUSISocketTypeRegistry::socket(int,int,int)
+Find__22GUSISocketTypeRegistryFiibRPQ222GUSISocketTypeRegistry5Entry           # GUSISocketTypeRegistry::Find(int,int,bool,GUSISocketTypeRegistry::Entry*&)
+Initialize__22GUSISocketTypeRegistryFv         # GUSISocketTypeRegistry::Initialize()
+__ct__Q222GUSISocketTypeRegistry5EntryFv               # GUSISocketTypeRegistry::Entry::Entry()
+AddFactory__24GUSISocketDomainRegistryFiP17GUSISocketFactory           # GUSISocketDomainRegistry::AddFactory(int,GUSISocketFactory*)
+socketpair__24GUSISocketDomainRegistryFiiiPP10GUSISocket               # GUSISocketDomainRegistry::socketpair(int,int,int,GUSISocket**)
+socket__24GUSISocketDomainRegistryFiii         # GUSISocketDomainRegistry::socket(int,int,int)
+__dt__17GUSISocketFactoryFv            # GUSISocketFactory::~GUSISocketFactory()
+__ct__24GUSISocketDomainRegistryFv             # GUSISocketDomainRegistry::GUSISocketDomainRegistry()
+socketpair__17GUSISocketFactoryFiiiPP10GUSISocket              # GUSISocketFactory::socketpair(int,int,int,GUSISocket**)
+sID__16GUSITempFileSpec                # GUSITempFileSpec::sID
+sScratchSize__12GUSIFileSpec           # GUSIFileSpec::sScratchSize
+sScratch__12GUSIFileSpec               # GUSIFileSpec::sScratch
+GUSIFSpGetCatInfo
+GUSIFSpTouchFolder
+GUSIFSp2Encoding
+GUSIFSp2DirRelPath
+GUSIFSp2RelPath
+GUSIFSp2FullPath
+GUSIFSpResolve
+GUSIFSpIndex
+GUSIFSpDown
+GUSIFSpUp
+GUSIMakeTempFSp
+GUSISpecial2FSp
+GUSIPath2FSp
+GUSIWD2FSp
+GUSIFRefNum2FSp
+TempName__16GUSITempFileSpecFPCUc              # GUSITempFileSpec::TempName(const unsigned char*)
+TempName__16GUSITempFileSpecFv         # GUSITempFileSpec::TempName()
+__ct__16GUSITempFileSpecFslPCUc                # GUSITempFileSpec::GUSITempFileSpec(short,long,const unsigned char*)
+__ct__16GUSITempFileSpecFsPCUc         # GUSITempFileSpec::GUSITempFileSpec(short,const unsigned char*)
+__ct__16GUSITempFileSpecFPCUc          # GUSITempFileSpec::GUSITempFileSpec(const unsigned char*)
+__ct__16GUSITempFileSpecFsl            # GUSITempFileSpec::GUSITempFileSpec(short,long)
+__ct__16GUSITempFileSpecFs             # GUSITempFileSpec::GUSITempFileSpec(short)
+IsParentOf__12GUSIFileSpecCFRC12GUSIFileSpec           # GUSIFileSpec::IsParentOf(const GUSIFileSpec&) const
+__eq__FRC12GUSIFileSpecRC12GUSIFileSpec                # operator ==(const GUSIFileSpec&,const GUSIFileSpec&)
+AliasPath__12GUSIFileSpecCFv           # GUSIFileSpec::AliasPath() const
+Resolve__12GUSIFileSpecFb              # GUSIFileSpec::Resolve(bool)
+EncodedPath__12GUSIFileSpecCFv         # GUSIFileSpec::EncodedPath() const
+RelativePath__12GUSIFileSpecCFv                # GUSIFileSpec::RelativePath() const
+__as__9HFileInfoFRC9HFileInfo          # HFileInfo::operator =(const HFileInfo&)
+__as__7DirInfoFRC7DirInfo              # DirInfo::operator =(const DirInfo&)
+RelativePath__12GUSIFileSpecCFRC6FSSpec                # GUSIFileSpec::RelativePath(const FSSpec&) const
+PrependPathComponent__12GUSIFileSpecCFRPcPCUcb         # GUSIFileSpec::PrependPathComponent(char*&,const unsigned char*,bool) const
+FullPath__12GUSIFileSpecCFv            # GUSIFileSpec::FullPath() const
+CatInfo__12GUSIFileSpecFs              # GUSIFileSpec::CatInfo(short)
+TouchFolder__12GUSIFileSpecFv          # GUSIFileSpec::TouchFolder()
+SetName__12GUSIFileSpecFPCc            # GUSIFileSpec::SetName(const char*)
+SetName__12GUSIFileSpecFPCUc           # GUSIFileSpec::SetName(const unsigned char*)
+SetParID__12GUSIFileSpecFl             # GUSIFileSpec::SetParID(long)
+SetVRef__12GUSIFileSpecFs              # GUSIFileSpec::SetVRef(short)
+__vc__12GUSIFileSpecFs         # GUSIFileSpec::operator [](short)
+__pl__FRC6FSSpecPCc            # operator +(const FSSpec&,const char*)
+__pl__FRC6FSSpecPCUc           # operator +(const FSSpec&,const unsigned char*)
+AddPathComponent__12GUSIFileSpecFPCcib         # GUSIFileSpec::AddPathComponent(const char*,int,bool)
+__pp__12GUSIFileSpecFv         # GUSIFileSpec::operator ++()
+__mm__12GUSIFileSpecFv         # GUSIFileSpec::operator --()
+GetVolume__12GUSIFileSpecFs            # GUSIFileSpec::GetVolume(short)
+__ct__12GUSIFileSpecFPCcb              # GUSIFileSpec::GUSIFileSpec(const char*,bool)
+__ct__12GUSIFileSpecFs         # GUSIFileSpec::GUSIFileSpec(short)
+__ct__12GUSIFileSpecFUls               # GUSIFileSpec::GUSIFileSpec(unsigned long,short)
+__ct__12GUSIFileSpecFsPCUcb            # GUSIFileSpec::GUSIFileSpec(short,const unsigned char*,bool)
+__ct__12GUSIFileSpecFslPCUcb           # GUSIFileSpec::GUSIFileSpec(short,long,const unsigned char*,bool)
+__ct__12GUSIFileSpecFRC6FSSpecb                # GUSIFileSpec::GUSIFileSpec(const FSSpec&,bool)
+__ct__12GUSIFileSpecFRC12GUSIFileSpec          # GUSIFileSpec::GUSIFileSpec(const GUSIFileSpec&)
+CScratch__12GUSIFileSpecFb             # GUSIFileSpec::CScratch(bool)
+ReadHex__FPCciPc               # ReadHex(const char*,int,char*)
+GUSIFSMoveRename
+GUSIFSCatMove
+GUSIFSCatMove__FPC6FSSpecl             # GUSIFSCatMove(const FSSpec*,long)
+GUSIFSRename
+GUSIFSRstFLock
+GUSIFSSetFLock
+GUSIFSDirCreate
+GUSIFSDelete
+GUSIFSCreate
+GUSIFSCreate__FPC6FSSpec               # GUSIFSCreate(const FSSpec*)
+GUSIFSGetVolParms
+GUSIFSHGetVolParms__FP33GUSIIOPBWrapper<14HParamBlockRec>              # GUSIFSHGetVolParms(GUSIIOPBWrapper<HParamBlockRec>*)
+GUSIFSOpenRF
+GUSIFSOpenDF
+GUSIFSSetFInfo
+GUSIFSGetFInfo
+GUSIFSHSetFInfo__FP33GUSIIOPBWrapper<14HParamBlockRec>         # GUSIFSHSetFInfo(GUSIIOPBWrapper<HParamBlockRec>*)
+GUSIFSHGetFInfo__FP33GUSIIOPBWrapper<14HParamBlockRec>         # GUSIFSHGetFInfo(GUSIIOPBWrapper<HParamBlockRec>*)
+GUSIFSOpenDriver
+GUSIFSOpen__FP32GUSIIOPBWrapper<13ParamBlockRec>               # GUSIFSOpen(GUSIIOPBWrapper<ParamBlockRec>*)
+GUSIFSHGetVInfo__FP33GUSIIOPBWrapper<14HParamBlockRec>         # GUSIFSHGetVInfo(GUSIIOPBWrapper<HParamBlockRec>*)
+GUSIFSGetVInfo__FP32GUSIIOPBWrapper<13ParamBlockRec>           # GUSIFSGetVInfo(GUSIIOPBWrapper<ParamBlockRec>*)
+GUSIFSGetFCBInfo__FP26GUSIIOPBWrapper<8FCBPBRec>               # GUSIFSGetFCBInfo(GUSIIOPBWrapper<FCBPBRec>*)
+GUSIFSSetCatInfo__FP30GUSIIOPBWrapper<11GUSICatInfo>           # GUSIFSSetCatInfo(GUSIIOPBWrapper<GUSICatInfo>*)
+GUSIFSGetCatInfo__FP30GUSIIOPBWrapper<11GUSICatInfo>           # GUSIFSGetCatInfo(GUSIIOPBWrapper<GUSICatInfo>*)
+gGUSIInetFactories
+GUSIwithInetSockets
+__vt__16GUSIMacDirectory               # GUSIMacDirectory::__vt
+__vt__13GUSIDirectory          # GUSIDirectory::__vt
+__vt__17GUSIMacFileSocket              # GUSIMacFileSocket::__vt
+__vt__17GUSIMacFileDevice              # GUSIMacFileDevice::__vt
+sWakeupProc__17GUSIMacFileSocket               # GUSIMacFileSocket::sWakeupProc
+sWriteProc__17GUSIMacFileSocket                # GUSIMacFileSocket::sWriteProc
+sReadProc__17GUSIMacFileSocket         # GUSIMacFileSocket::sReadProc
+__dt__16GUSIMacDirectoryFv             # GUSIMacDirectory::~GUSIMacDirectory()
+rewinddir__16GUSIMacDirectoryFv                # GUSIMacDirectory::rewinddir()
+seekdir__16GUSIMacDirectoryFl          # GUSIMacDirectory::seekdir(long)
+telldir__16GUSIMacDirectoryFv          # GUSIMacDirectory::telldir()
+readdir__16GUSIMacDirectoryFv          # GUSIMacDirectory::readdir()
+__dt__13GUSIDirectoryFv                # GUSIDirectory::~GUSIDirectory()
+__ct__16GUSIMacDirectoryFRC6FSSpec             # GUSIMacDirectory::GUSIMacDirectory(const FSSpec&)
+Supports__17GUSIMacFileSocketFQ210GUSISocket12ConfigOption             # GUSIMacFileSocket::Supports(GUSISocket::ConfigOption)
+fstat__17GUSIMacFileSocketFP4stat              # GUSIMacFileSocket::fstat(stat*)
+ftruncate__17GUSIMacFileSocketFl               # GUSIMacFileSocket::ftruncate(long)
+lseek__17GUSIMacFileSocketFli          # GUSIMacFileSocket::lseek(long,int)
+setsockopt__17GUSIMacFileSocketFiiPvUi         # GUSIMacFileSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__17GUSIMacFileSocketFiiPvPUi                # GUSIMacFileSocket::getsockopt(int,int,void*,unsigned int*)
+ioctl__17GUSIMacFileSocketFUiPc                # GUSIMacFileSocket::ioctl(unsigned int,char*)
+fcntl__17GUSIMacFileSocketFiPc         # GUSIMacFileSocket::fcntl(int,char*)
+fsync__17GUSIMacFileSocketFv           # GUSIMacFileSocket::fsync()
+select__17GUSIMacFileSocketFPbPbPb             # GUSIMacFileSocket::select(bool*,bool*,bool*)
+write__17GUSIMacFileSocketFRC12GUSIGatherer            # GUSIMacFileSocket::write(const GUSIGatherer&)
+read__17GUSIMacFileSocketFRC13GUSIScatterer            # GUSIMacFileSocket::read(const GUSIScatterer&)
+SyncWrite__17GUSIMacFileSocketFv               # GUSIMacFileSocket::SyncWrite()
+SyncRead__17GUSIMacFileSocketFv                # GUSIMacFileSocket::SyncRead()
+__dt__17GUSIMacFileSocketFv            # GUSIMacFileSocket::~GUSIMacFileSocket()
+__dt__17GUSISMInputBufferFv            # GUSISMInputBuffer::~GUSISMInputBuffer()
+__dt__18GUSISMOutputBufferFv           # GUSISMOutputBuffer::~GUSISMOutputBuffer()
+__ct__17GUSIMacFileSocketFsbi          # GUSIMacFileSocket::GUSIMacFileSocket(short,bool,int)
+faccess__17GUSIMacFileDeviceFR13GUSIFileTokenPUiPv             # GUSIMacFileDevice::faccess(GUSIFileToken&,unsigned int*,void*)
+fsetfileinfo__17GUSIMacFileDeviceFR13GUSIFileTokenUlUl         # GUSIMacFileDevice::fsetfileinfo(GUSIFileToken&,unsigned long,unsigned long)
+fgetfileinfo__17GUSIMacFileDeviceFR13GUSIFileTokenPUlPUl               # GUSIMacFileDevice::fgetfileinfo(GUSIFileToken&,unsigned long*,unsigned long*)
+readlink__17GUSIMacFileDeviceFR13GUSIFileTokenPci              # GUSIMacFileDevice::readlink(GUSIFileToken&,char*,int)
+symlink__17GUSIMacFileDeviceFR13GUSIFileTokenPCc               # GUSIMacFileDevice::symlink(GUSIFileToken&,const char*)
+opendir__17GUSIMacFileDeviceFR13GUSIFileToken          # GUSIMacFileDevice::opendir(GUSIFileToken&)
+rmdir__17GUSIMacFileDeviceFR13GUSIFileToken            # GUSIMacFileDevice::rmdir(GUSIFileToken&)
+mkdir__17GUSIMacFileDeviceFR13GUSIFileToken            # GUSIMacFileDevice::mkdir(GUSIFileToken&)
+access__17GUSIMacFileDeviceFR13GUSIFileTokeni          # GUSIMacFileDevice::access(GUSIFileToken&,int)
+utime__17GUSIMacFileDeviceFR13GUSIFileTokenPC7utimbuf          # GUSIMacFileDevice::utime(GUSIFileToken&,const utimbuf*)
+chmod__17GUSIMacFileDeviceFR13GUSIFileTokenUs          # GUSIMacFileDevice::chmod(GUSIFileToken&,unsigned short)
+stat__17GUSIMacFileDeviceFR13GUSIFileTokenP4stat               # GUSIMacFileDevice::stat(GUSIFileToken&,stat*)
+rename__17GUSIMacFileDeviceFR13GUSIFileTokenPCc                # GUSIMacFileDevice::rename(GUSIFileToken&,const char*)
+CleanupTemporaries__17GUSIMacFileDeviceFb              # GUSIMacFileDevice::CleanupTemporaries(bool)
+MarkTemporary__17GUSIMacFileDeviceFRC6FSSpec           # GUSIMacFileDevice::MarkTemporary(const FSSpec&)
+remove__17GUSIMacFileDeviceFR13GUSIFileToken           # GUSIMacFileDevice::remove(GUSIFileToken&)
+open__17GUSIMacFileDeviceFsi           # GUSIMacFileDevice::open(short,int)
+open__17GUSIMacFileDeviceFR13GUSIFileTokeni            # GUSIMacFileDevice::open(GUSIFileToken&,int)
+Want__17GUSIMacFileDeviceFR13GUSIFileToken             # GUSIMacFileDevice::Want(GUSIFileToken&)
+__dt__17GUSIMacFileDeviceFv            # GUSIMacFileDevice::~GUSIMacFileDevice()
+__dt__Q23std66auto_ptr<17GUSIMacFileDevice,Q23std28_Single<17GUSIMacFileDevice>>Fv             # std::auto_ptr<GUSIMacFileDevice, std::_Single<GUSIMacFileDevice>>::~auto_ptr()
+Instance__17GUSIMacFileDeviceFv                # GUSIMacFileDevice::Instance()
+__dt__Q211GUSIProcess7A5SaverFv                # GUSIProcess::A5Saver::~A5Saver()
+sDrvrState__16GUSIMTInetSocket         # GUSIMTInetSocket::sDrvrState
+__vt__16GUSIMTInetSocket               # GUSIMTInetSocket::__vt
+sHostAddress__16GUSIMTInetSocket               # GUSIMTInetSocket::sHostAddress
+sDrvrRefNum__16GUSIMTInetSocket                # GUSIMTInetSocket::sDrvrRefNum
+__dt__16GUSIMTInetSocketFv             # GUSIMTInetSocket::~GUSIMTInetSocket()
+GUSIwithMTInetSockets
+Supports__16GUSIMTInetSocketFQ210GUSISocket12ConfigOption              # GUSIMTInetSocket::Supports(GUSISocket::ConfigOption)
+setsockopt__16GUSIMTInetSocketFiiPvUi          # GUSIMTInetSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__16GUSIMTInetSocketFiiPvPUi         # GUSIMTInetSocket::getsockopt(int,int,void*,unsigned int*)
+ioctl__16GUSIMTInetSocketFUiPc         # GUSIMTInetSocket::ioctl(unsigned int,char*)
+fcntl__16GUSIMTInetSocketFiPc          # GUSIMTInetSocket::fcntl(int,char*)
+shutdown__16GUSIMTInetSocketFi         # GUSIMTInetSocket::shutdown(int)
+getpeername__16GUSIMTInetSocketFPvPUi          # GUSIMTInetSocket::getpeername(void*,unsigned int*)
+getsockname__16GUSIMTInetSocketFPvPUi          # GUSIMTInetSocket::getsockname(void*,unsigned int*)
+bind__16GUSIMTInetSocketFPvUi          # GUSIMTInetSocket::bind(void*,unsigned int)
+__ct__16GUSIMTInetSocketFv             # GUSIMTInetSocket::GUSIMTInetSocket()
+HostAddr__16GUSIMTInetSocketFv         # GUSIMTInetSocket::HostAddr()
+Driver__16GUSIMTInetSocketFv           # GUSIMTInetSocket::Driver()
+uDNRDone
+sResolverState__11GUSIMTNetDB          # GUSIMTNetDB::sResolverState
+__vt__11GUSIMTNetDB            # GUSIMTNetDB::__vt
+get__49GUSISpecificData<11GUSIhostent,&.GUSIKillHostEnt>FP17GUSISpecificTable          # GUSISpecificData<GUSIhostent, &.GUSIKillHostEnt>::get(GUSISpecificTable*)
+__dt__11GUSIMTNetDBFv          # GUSIMTNetDB::~GUSIMTNetDB()
+gethostid__11GUSIMTNetDBFv             # GUSIMTNetDB::gethostid()
+inet_ntoa__11GUSIMTNetDBF7in_addr              # GUSIMTNetDB::inet_ntoa(in_addr)
+gethostbyaddr__11GUSIMTNetDBFPCvUli            # GUSIMTNetDB::gethostbyaddr(const void*,unsigned long,int)
+gethostbyname__11GUSIMTNetDBFPCc               # GUSIMTNetDB::gethostbyname(const char*)
+Resolver__11GUSIMTNetDBFv              # GUSIMTNetDB::Resolver()
+__dt__12GUSISpecificFv         # GUSISpecific::~GUSISpecific()
+__dt__49GUSISpecificData<11GUSIhostent,&.GUSIKillHostEnt>Fv            # GUSISpecificData<GUSIhostent, &.GUSIKillHostEnt>::~GUSISpecificData()
+__dt__9GUSINetDBFv             # GUSINetDB::~GUSINetDB()
+Instantiate__11GUSIMTNetDBFv           # GUSIMTNetDB::Instantiate()
+__vt__16GUSIMTTcpFactory               # GUSIMTTcpFactory::__vt
+__vt__15GUSIMTTcpSocket                # GUSIMTTcpSocket::__vt
+instance__16GUSIMTTcpFactory           # GUSIMTTcpFactory::instance
+sListenProc__15GUSIMTTcpSocket         # GUSIMTTcpSocket::sListenProc
+sConnectProc__15GUSIMTTcpSocket                # GUSIMTTcpSocket::sConnectProc
+sNotifyProc__15GUSIMTTcpSocket         # GUSIMTTcpSocket::sNotifyProc
+sRecvProc__15GUSIMTTcpSocket           # GUSIMTTcpSocket::sRecvProc
+sSendProc__15GUSIMTTcpSocket           # GUSIMTTcpSocket::sSendProc
+__dt__16GUSIMTTcpFactoryFv             # GUSIMTTcpFactory::~GUSIMTTcpFactory()
+GUSIwithMTTcpSockets
+socket__16GUSIMTTcpFactoryFiii         # GUSIMTTcpFactory::socket(int,int,int)
+__dt__15GUSIMTTcpSocketFv              # GUSIMTTcpSocket::~GUSIMTTcpSocket()
+shutdown__15GUSIMTTcpSocketFi          # GUSIMTTcpSocket::shutdown(int)
+select__15GUSIMTTcpSocketFPbPbPb               # GUSIMTTcpSocket::select(bool*,bool*,bool*)
+sendto__15GUSIMTTcpSocketFRC12GUSIGathereriPCvUi               # GUSIMTTcpSocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+recvfrom__15GUSIMTTcpSocketFRC13GUSIScattereriPvPUi            # GUSIMTTcpSocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+__ct__15GUSIMTTcpSocketFRQ215GUSIMTTcpSocket8Listener          # GUSIMTTcpSocket::GUSIMTTcpSocket(GUSIMTTcpSocket::Listener&)
+accept__15GUSIMTTcpSocketFPvPUi                # GUSIMTTcpSocket::accept(void*,unsigned int*)
+listen__15GUSIMTTcpSocketFi            # GUSIMTTcpSocket::listen(int)
+connect__15GUSIMTTcpSocketFPvUi                # GUSIMTTcpSocket::connect(void*,unsigned int)
+__ct__15GUSIMTTcpSocketFv              # GUSIMTTcpSocket::GUSIMTTcpSocket()
+SetupListener__15GUSIMTTcpSocketFRQ215GUSIMTTcpSocket8Listener         # GUSIMTTcpSocket::SetupListener(GUSIMTTcpSocket::Listener&)
+CreateStream__15GUSIMTTcpSocketFPP15GUSIMTTcpSocket            # GUSIMTTcpSocket::CreateStream(GUSIMTTcpSocket**)
+GUSIMTTListen__FP15GUSIMTTcpSocket             # GUSIMTTListen(GUSIMTTcpSocket*)
+GUSIMTTListenDone__FP7TCPiopb          # GUSIMTTListenDone(TCPiopb*)
+GUSIMTTConnectDone__FP7TCPiopb         # GUSIMTTConnectDone(TCPiopb*)
+GUSIMTTNotify
+GUSIMTTRecv__FP15GUSIMTTcpSocket               # GUSIMTTRecv(GUSIMTTcpSocket*)
+GUSIMTTRecvDone__FP7TCPiopb            # GUSIMTTRecvDone(TCPiopb*)
+GUSIMTTSend__FP15GUSIMTTcpSocket               # GUSIMTTSend(GUSIMTTcpSocket*)
+GUSIMTTSendDone__FP7TCPiopb            # GUSIMTTSendDone(TCPiopb*)
+__vt__16GUSIMTUdpFactory               # GUSIMTUdpFactory::__vt
+__vt__15GUSIMTUdpSocket                # GUSIMTUdpSocket::__vt
+instance__16GUSIMTUdpFactory           # GUSIMTUdpFactory::instance
+sRecvProc__15GUSIMTUdpSocket           # GUSIMTUdpSocket::sRecvProc
+sSendProc__15GUSIMTUdpSocket           # GUSIMTUdpSocket::sSendProc
+__dt__16GUSIMTUdpFactoryFv             # GUSIMTUdpFactory::~GUSIMTUdpFactory()
+GUSIwithMTUdpSockets
+socket__16GUSIMTUdpFactoryFiii         # GUSIMTUdpFactory::socket(int,int,int)
+__dt__15GUSIMTUdpSocketFv              # GUSIMTUdpSocket::~GUSIMTUdpSocket()
+shutdown__15GUSIMTUdpSocketFi          # GUSIMTUdpSocket::shutdown(int)
+select__15GUSIMTUdpSocketFPbPbPb               # GUSIMTUdpSocket::select(bool*,bool*,bool*)
+sendto__15GUSIMTUdpSocketFRC12GUSIGathereriPCvUi               # GUSIMTUdpSocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+recvfrom__15GUSIMTUdpSocketFRC13GUSIScattereriPvPUi            # GUSIMTUdpSocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+connect__15GUSIMTUdpSocketFPvUi                # GUSIMTUdpSocket::connect(void*,unsigned int)
+__ct__15GUSIMTUdpSocketFv              # GUSIMTUdpSocket::GUSIMTUdpSocket()
+CreateStream__15GUSIMTUdpSocketFv              # GUSIMTUdpSocket::CreateStream()
+GUSIMTURecv__FP15GUSIMTUdpSocket               # GUSIMTURecv(GUSIMTUdpSocket*)
+GUSIMTURecvDone__FP7UDPiopb            # GUSIMTURecvDone(UDPiopb*)
+GUSIMTUSend__FP15GUSIMTUdpSocket               # GUSIMTUSend(GUSIMTUdpSocket*)
+GUSIMTUSendDone__FP7UDPiopb            # GUSIMTUSendDone(UDPiopb*)
+sProtocols__9GUSINetDB         # GUSINetDB::sProtocols
+sServices__20GUSIBuiltinServiceDB              # GUSIBuiltinServiceDB::sServices
+__vt__20GUSIBuiltinServiceDB           # GUSIBuiltinServiceDB::__vt
+__vt__17GUSIFileServiceDB              # GUSIFileServiceDB::__vt
+__vt__13GUSIServiceDB          # GUSIServiceDB::__vt
+__vt__9GUSINetDB               # GUSINetDB::__vt
+sInstance__13GUSIServiceDB             # GUSIServiceDB::sInstance
+sData__13GUSIServiceDB         # GUSIServiceDB::sData
+sEntry__20GUSIBuiltinServiceDB         # GUSIBuiltinServiceDB::sEntry
+sInstance__9GUSINetDB          # GUSINetDB::sInstance
+__dt__64GUSISpecificData<Q213GUSIServiceDB4Data,&.GUSIKillServiceDBData>Fv             # GUSISpecificData<GUSIServiceDB::Data, &.GUSIKillServiceDBData>::~GUSISpecificData()
+__dt__80GUSISpecificData<Q220GUSIBuiltinServiceDB5Entry,&.GUSIKillBuiltinServiceDBEntry>Fv             # GUSISpecificData<GUSIBuiltinServiceDB::Entry, &.GUSIKillBuiltinServiceDBEntry>::~GUSISpecificData()
+get__64GUSISpecificData<Q213GUSIServiceDB4Data,&.GUSIKillServiceDBData>FP17GUSISpecificTable           # GUSISpecificData<GUSIServiceDB::Data, &.GUSIKillServiceDBData>::get(GUSISpecificTable*)
+get__80GUSISpecificData<Q220GUSIBuiltinServiceDB5Entry,&.GUSIKillBuiltinServiceDBEntry>FP17GUSISpecificTable           # GUSISpecificData<GUSIBuiltinServiceDB::Entry, &.GUSIKillBuiltinServiceDBEntry>::get(GUSISpecificTable*)
+__dt__17GUSIFileServiceDBFv            # GUSIFileServiceDB::~GUSIFileServiceDB()
+__dt__20GUSIBuiltinServiceDBFv         # GUSIBuiltinServiceDB::~GUSIBuiltinServiceDB()
+__ct__11GUSIserventFv          # GUSIservent::GUSIservent()
+GUSIKillHostEnt
+Alloc__11GUSIhostentFUl                # GUSIhostent::Alloc(unsigned long)
+__ct__11GUSIhostentFv          # GUSIhostent::GUSIhostent()
+Instance__13GUSIServiceDBFv            # GUSIServiceDB::Instance()
+GUSIKillServiceDBData
+Next__20GUSIBuiltinServiceDBFv         # GUSIBuiltinServiceDB::Next()
+Reset__20GUSIBuiltinServiceDBFv                # GUSIBuiltinServiceDB::Reset()
+GUSIKillBuiltinServiceDBEntry
+Next__17GUSIFileServiceDBFv            # GUSIFileServiceDB::Next()
+Reset__17GUSIFileServiceDBFv           # GUSIFileServiceDB::Reset()
+__dt__13GUSIServiceDBFv                # GUSIServiceDB::~GUSIServiceDB()
+Instance__17GUSIFileServiceDBFv                # GUSIFileServiceDB::Instance()
+getprotobynumber__9GUSINetDBFi         # GUSINetDB::getprotobynumber(int)
+getprotobyname__9GUSINetDBFPCc         # GUSINetDB::getprotobyname(const char*)
+endprotoent__9GUSINetDBFv              # GUSINetDB::endprotoent()
+setprotoent__9GUSINetDBFi              # GUSINetDB::setprotoent(int)
+getprotoent__9GUSINetDBFv              # GUSINetDB::getprotoent()
+getservbyport__9GUSINetDBFiPCc         # GUSINetDB::getservbyport(int,const char*)
+getservbyname__9GUSINetDBFPCcPCc               # GUSINetDB::getservbyname(const char*,const char*)
+endservent__9GUSINetDBFv               # GUSINetDB::endservent()
+setservent__9GUSINetDBFi               # GUSINetDB::setservent(int)
+getservent__9GUSINetDBFv               # GUSINetDB::getservent()
+gethostname__9GUSINetDBFPci            # GUSINetDB::gethostname(char*,int)
+gethostid__9GUSINetDBFv                # GUSINetDB::gethostid()
+inet_addr__9GUSINetDBFPCc              # GUSINetDB::inet_addr(const char*)
+inet_ntoa__9GUSINetDBF7in_addr         # GUSINetDB::inet_ntoa(in_addr)
+gethostbyaddr__9GUSINetDBFPCvUli               # GUSINetDB::gethostbyaddr(const void*,unsigned long,int)
+gethostbyname__9GUSINetDBFPCc          # GUSINetDB::gethostbyname(const char*)
+__ct__9GUSINetDBFv             # GUSINetDB::GUSINetDB()
+Instance__9GUSINetDBFv         # GUSINetDB::Instance()
+__vt__14GUSINullSocket         # GUSINullSocket::__vt
+__vt__14GUSINullDevice         # GUSINullDevice::__vt
+sInstance__14GUSINullDevice            # GUSINullDevice::sInstance
+__dt__14GUSINullDeviceFv               # GUSINullDevice::~GUSINullDevice()
+__dt__14GUSINullSocketFv               # GUSINullSocket::~GUSINullSocket()
+Supports__14GUSINullSocketFQ210GUSISocket12ConfigOption                # GUSINullSocket::Supports(GUSISocket::ConfigOption)
+fstat__14GUSINullSocketFP4stat         # GUSINullSocket::fstat(stat*)
+write__14GUSINullSocketFRC12GUSIGatherer               # GUSINullSocket::write(const GUSIGatherer&)
+read__14GUSINullSocketFRC13GUSIScatterer               # GUSINullSocket::read(const GUSIScatterer&)
+__ct__14GUSINullSocketFv               # GUSINullSocket::GUSINullSocket()
+stat__14GUSINullDeviceFR13GUSIFileTokenP4stat          # GUSINullDevice::stat(GUSIFileToken&,stat*)
+open__14GUSINullDeviceFv               # GUSINullDevice::open()
+open__14GUSINullDeviceFR13GUSIFileTokeni               # GUSINullDevice::open(GUSIFileToken&,int)
+Want__14GUSINullDeviceFR13GUSIFileToken                # GUSINullDevice::Want(GUSIFileToken&)
+GUSIwithNullSockets
+__vt__13GUSIScatterer          # GUSIScatterer::__vt
+__vt__20GUSIOTDatagramSocket           # GUSIOTDatagramSocket::__vt
+__vt__18GUSIOTStreamSocket             # GUSIOTStreamSocket::__vt
+__vt__12GUSIOTSocket           # GUSIOTSocket::__vt
+__vt__14GUSIOTStrategy         # GUSIOTStrategy::__vt
+__vt__21GUSIOTDatagramFactory          # GUSIOTDatagramFactory::__vt
+__vt__13GUSIOTFactory          # GUSIOTFactory::__vt
+__vt__19GUSIOTStreamFactory            # GUSIOTStreamFactory::__vt
+sOK__13GUSIOTFactory           # GUSIOTFactory::sOK
+__dt__19GUSIOTStreamFactoryFv          # GUSIOTStreamFactory::~GUSIOTStreamFactory()
+__dt__13GUSIOTFactoryFv                # GUSIOTFactory::~GUSIOTFactory()
+__dt__21GUSIOTDatagramFactoryFv                # GUSIOTDatagramFactory::~GUSIOTDatagramFactory()
+select__20GUSIOTDatagramSocketFPbPbPb          # GUSIOTDatagramSocket::select(bool*,bool*,bool*)
+__dt__Q23std80auto_ptr<24GUSIOTAddr<9TUnitData,5>,Q23std35_Single<24GUSIOTAddr<9TUnitData,5>>>Fv               # std::auto_ptr<GUSIOTAddr<TUnitData, 5>, std::_Single<GUSIOTAddr<TUnitData, 5>>>::~auto_ptr()
+sendto__20GUSIOTDatagramSocketFRC12GUSIGathereriPCvUi          # GUSIOTDatagramSocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+__dt__13GUSIScattererFv                # GUSIScatterer::~GUSIScatterer()
+recvfrom__20GUSIOTDatagramSocketFRC13GUSIScattereriPvPUi               # GUSIOTDatagramSocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+connect__20GUSIOTDatagramSocketFPvUi           # GUSIOTDatagramSocket::connect(void*,unsigned int)
+getpeername__20GUSIOTDatagramSocketFPvPUi              # GUSIOTDatagramSocket::getpeername(void*,unsigned int*)
+BindIfUnbound__20GUSIOTDatagramSocketFv                # GUSIOTDatagramSocket::BindIfUnbound()
+__dt__20GUSIOTDatagramSocketFv         # GUSIOTDatagramSocket::~GUSIOTDatagramSocket()
+Clone__20GUSIOTDatagramSocketFv                # GUSIOTDatagramSocket::Clone()
+__ct__20GUSIOTDatagramSocketFP14GUSIOTStrategy         # GUSIOTDatagramSocket::GUSIOTDatagramSocket(GUSIOTStrategy*)
+shutdown__18GUSIOTStreamSocketFi               # GUSIOTStreamSocket::shutdown(int)
+select__18GUSIOTStreamSocketFPbPbPb            # GUSIOTStreamSocket::select(bool*,bool*,bool*)
+sendto__18GUSIOTStreamSocketFRC12GUSIGathereriPCvUi            # GUSIOTStreamSocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+__dt__Q210GUSISocket17AddContextInScopeFv              # GUSISocket::AddContextInScope::~AddContextInScope()
+recvfrom__18GUSIOTStreamSocketFRC13GUSIScattereriPvPUi         # GUSIOTStreamSocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+connect__18GUSIOTStreamSocketFPvUi             # GUSIOTStreamSocket::connect(void*,unsigned int)
+accept__18GUSIOTStreamSocketFPvPUi             # GUSIOTStreamSocket::accept(void*,unsigned int*)
+getpeername__18GUSIOTStreamSocketFPvPUi                # GUSIOTStreamSocket::getpeername(void*,unsigned int*)
+listen__18GUSIOTStreamSocketFi         # GUSIOTStreamSocket::listen(int)
+MopupEvents__18GUSIOTStreamSocketFv            # GUSIOTStreamSocket::MopupEvents()
+Close__18GUSIOTStreamSocketFUl         # GUSIOTStreamSocket::Close(unsigned long)
+__dt__18GUSIOTStreamSocketFv           # GUSIOTStreamSocket::~GUSIOTStreamSocket()
+close__18GUSIOTStreamSocketFv          # GUSIOTStreamSocket::close()
+Clone__18GUSIOTStreamSocketFv          # GUSIOTStreamSocket::Clone()
+__ct__18GUSIOTStreamSocketFP14GUSIOTStrategy           # GUSIOTStreamSocket::GUSIOTStreamSocket(GUSIOTStrategy*)
+Supports__12GUSIOTSocketFQ210GUSISocket12ConfigOption          # GUSIOTSocket::Supports(GUSISocket::ConfigOption)
+setsockopt__12GUSIOTSocketFiiPvUi              # GUSIOTSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__12GUSIOTSocketFiiPvPUi             # GUSIOTSocket::getsockopt(int,int,void*,unsigned int*)
+ioctl__12GUSIOTSocketFUiPc             # GUSIOTSocket::ioctl(unsigned int,char*)
+fcntl__12GUSIOTSocketFiPc              # GUSIOTSocket::fcntl(int,char*)
+shutdown__12GUSIOTSocketFi             # GUSIOTSocket::shutdown(int)
+getsockname__12GUSIOTSocketFPvPUi              # GUSIOTSocket::getsockname(void*,unsigned int*)
+Unbind__12GUSIOTSocketFv               # GUSIOTSocket::Unbind()
+BindToAddress__12GUSIOTSocketFP20GUSIOTAddr<5TBind,1>          # GUSIOTSocket::BindToAddress(GUSIOTAddr<TBind, 1>*)
+bind__12GUSIOTSocketFPvUi              # GUSIOTSocket::bind(void*,unsigned int)
+__dt__12GUSIOTSocketFv         # GUSIOTSocket::~GUSIOTSocket()
+close__12GUSIOTSocketFv                # GUSIOTSocket::close()
+__ct__12GUSIOTSocketFP14GUSIOTStrategy         # GUSIOTSocket::GUSIOTSocket(GUSIOTStrategy*)
+__dt__Q212GUSIOTSocket4LockFv          # GUSIOTSocket::Lock::~Lock()
+MopupEvents__12GUSIOTSocketFv          # GUSIOTSocket::MopupEvents()
+CopyAddress__14GUSIOTStrategyFRC7TNetbufR7TNetbuf              # GUSIOTStrategy::CopyAddress(const TNetbuf&,TNetbuf&)
+__dt__14GUSIOTStrategyFv               # GUSIOTStrategy::~GUSIOTStrategy()
+CreateConfiguration__14GUSIOTStrategyFv                # GUSIOTStrategy::CreateConfiguration()
+socket__21GUSIOTDatagramFactoryFiii            # GUSIOTDatagramFactory::socket(int,int,int)
+socket__19GUSIOTStreamFactoryFiii              # GUSIOTStreamFactory::socket(int,int,int)
+Initialize__13GUSIOTFactoryFv          # GUSIOTFactory::Initialize()
+GUSIOTNotify
+__vt__15GUSIOTUdpSocket                # GUSIOTUdpSocket::__vt
+__vt__17GUSIOTUdpStrategy              # GUSIOTUdpStrategy::__vt
+__vt__15GUSIOTTcpSocket                # GUSIOTTcpSocket::__vt
+__vt__17GUSIOTTcpStrategy              # GUSIOTTcpStrategy::__vt
+__vt__18GUSIOTInetStrategy             # GUSIOTInetStrategy::__vt
+__vt__16GUSIOTUdpFactory               # GUSIOTUdpFactory::__vt
+__vt__16GUSIOTTcpFactory               # GUSIOTTcpFactory::__vt
+sInstance__16GUSIOTUdpFactory          # GUSIOTUdpFactory::sInstance
+sInstance__16GUSIOTTcpFactory          # GUSIOTTcpFactory::sInstance
+__dt__16GUSIOTTcpFactoryFv             # GUSIOTTcpFactory::~GUSIOTTcpFactory()
+__dt__16GUSIOTUdpFactoryFv             # GUSIOTUdpFactory::~GUSIOTUdpFactory()
+__dt__17GUSIOTTcpStrategyFv            # GUSIOTTcpStrategy::~GUSIOTTcpStrategy()
+__dt__15GUSIOTTcpSocketFv              # GUSIOTTcpSocket::~GUSIOTTcpSocket()
+__dt__17GUSIOTUdpStrategyFv            # GUSIOTUdpStrategy::~GUSIOTUdpStrategy()
+__dt__15GUSIOTUdpSocketFv              # GUSIOTUdpSocket::~GUSIOTUdpSocket()
+GUSIwithOTInetSockets
+GUSIwithOTUdpSockets
+GUSIwithOTTcpSockets
+ioctl__15GUSIOTUdpSocketFUiPc          # GUSIOTUdpSocket::ioctl(unsigned int,char*)
+setsockopt__15GUSIOTUdpSocketFiiPvUi           # GUSIOTUdpSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__15GUSIOTUdpSocketFiiPvPUi          # GUSIOTUdpSocket::getsockopt(int,int,void*,unsigned int*)
+Clone__15GUSIOTUdpSocketFv             # GUSIOTUdpSocket::Clone()
+ConfigPath__17GUSIOTUdpStrategyFv              # GUSIOTUdpStrategy::ConfigPath()
+ioctl__15GUSIOTTcpSocketFUiPc          # GUSIOTTcpSocket::ioctl(unsigned int,char*)
+setsockopt__15GUSIOTTcpSocketFiiPvUi           # GUSIOTTcpSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__15GUSIOTTcpSocketFiiPvPUi          # GUSIOTTcpSocket::getsockopt(int,int,void*,unsigned int*)
+Clone__15GUSIOTTcpSocketFv             # GUSIOTTcpSocket::Clone()
+ConfigPath__17GUSIOTTcpStrategyFv              # GUSIOTTcpStrategy::ConfigPath()
+DoIoctl__18GUSIOTMInetOptionsFPiUiPc           # GUSIOTMInetOptions::DoIoctl(int*,unsigned int,char*)
+DoSetSockOpt__18GUSIOTMInetOptionsFPiP9TEndpointiiPvUi         # GUSIOTMInetOptions::DoSetSockOpt(int*,TEndpoint*,int,int,void*,unsigned int)
+DoGetSockOpt__18GUSIOTMInetOptionsFPiP9TEndpointiiPvPUi                # GUSIOTMInetOptions::DoGetSockOpt(int*,TEndpoint*,int,int,void*,unsigned int*)
+UnpackAddress__18GUSIOTInetStrategyFRC7TNetbufPvPUi            # GUSIOTInetStrategy::UnpackAddress(const TNetbuf&,void*,unsigned int*)
+PackAddress__18GUSIOTInetStrategyFPCvUiR7TNetbufb              # GUSIOTInetStrategy::PackAddress(const void*,unsigned int,TNetbuf&,bool)
+socket__16GUSIOTUdpFactoryFiii         # GUSIOTUdpFactory::socket(int,int,int)
+Strategy__16GUSIOTUdpFactoryFiii               # GUSIOTUdpFactory::Strategy(int,int,int)
+Instance__16GUSIOTUdpFactoryFv         # GUSIOTUdpFactory::Instance()
+socket__16GUSIOTTcpFactoryFiii         # GUSIOTTcpFactory::socket(int,int,int)
+__dt__18GUSIOTInetStrategyFv           # GUSIOTInetStrategy::~GUSIOTInetStrategy()
+Strategy__16GUSIOTTcpFactoryFiii               # GUSIOTTcpFactory::Strategy(int,int,int)
+Instance__16GUSIOTTcpFactoryFv         # GUSIOTTcpFactory::Instance()
+__vt__11GUSIOTNetDB            # GUSIOTNetDB::__vt
+__dt__11GUSIOTNetDBFv          # GUSIOTNetDB::~GUSIOTNetDB()
+gethostid__11GUSIOTNetDBFv             # GUSIOTNetDB::gethostid()
+inet_ntoa__11GUSIOTNetDBF7in_addr              # GUSIOTNetDB::inet_ntoa(in_addr)
+gethostbyaddr__11GUSIOTNetDBFPCvUli            # GUSIOTNetDB::gethostbyaddr(const void*,unsigned long,int)
+gethostbyname__11GUSIOTNetDBFPCc               # GUSIOTNetDB::gethostbyname(const char*)
+Resolver__11GUSIOTNetDBFv              # GUSIOTNetDB::Resolver()
+Instantiate__11GUSIOTNetDBFv           # GUSIOTNetDB::Instantiate()
+__ct__11GUSIOTNetDBFv          # GUSIOTNetDB::GUSIOTNetDB()
+GUSIOTNetDBNotify
+__vt__14GUSIPipeSocket         # GUSIPipeSocket::__vt
+__vt__15GUSIPipeFactory                # GUSIPipeFactory::__vt
+sInstance__15GUSIPipeFactory           # GUSIPipeFactory::sInstance
+__dt__15GUSIPipeFactoryFv              # GUSIPipeFactory::~GUSIPipeFactory()
+shutdown__14GUSIPipeSocketFi           # GUSIPipeSocket::shutdown(int)
+__dt__14GUSIPipeSocketFv               # GUSIPipeSocket::~GUSIPipeSocket()
+select__14GUSIPipeSocketFPbPbPb                # GUSIPipeSocket::select(bool*,bool*,bool*)
+write__14GUSIPipeSocketFRC12GUSIGatherer               # GUSIPipeSocket::write(const GUSIGatherer&)
+read__14GUSIPipeSocketFRC13GUSIScatterer               # GUSIPipeSocket::read(const GUSIScatterer&)
+Supports__14GUSIPipeSocketFQ210GUSISocket12ConfigOption                # GUSIPipeSocket::Supports(GUSISocket::ConfigOption)
+WakeupPeer__14GUSIPipeSocketFv         # GUSIPipeSocket::WakeupPeer()
+__ct__14GUSIPipeSocketFv               # GUSIPipeSocket::GUSIPipeSocket()
+__dt__14GUSIErrorSaverFv               # GUSIErrorSaver::~GUSIErrorSaver()
+socketpair__15GUSIPipeFactoryFiiiPP10GUSISocket                # GUSIPipeFactory::socketpair(int,int,int,GUSISocket**)
+socket__15GUSIPipeFactoryFiii          # GUSIPipeFactory::socket(int,int,int)
+GUSIwithLocalSockets
+__vt__12GUSIGatherer           # GUSIGatherer::__vt
+get__40GUSISpecificData<Q23std2tm,&.GUSIKillTM>FP17GUSISpecificTable           # GUSISpecificData<std::tm, &.GUSIKillTM>::get(GUSISpecificTable*)
+faccess__FPCcPUiPv             # faccess(const char*,unsigned int*,void*)
+fsetfileinfo
+fgetfileinfo
+getservent
+getservbyport
+getservbyname
+getprotoent
+getprotobynumber
+getprotobyname
+gethostbyname
+gethostbyaddr
+endservent
+endprotoent
+setservent
+setprotoent
+gethostname
+gethostid
+inet_ntoa
+inet_addr
+inet_aton
+readlink
+symlink
+usleep
+truncate
+ftruncate
+setsockopt
+getsockopt
+ioctl
+shutdown
+getpeername
+getsockname
+select
+sendmsg
+sendto
+send
+writev
+recvmsg
+recvfrom
+recv
+readv
+accept
+listen
+connect
+bind
+socketpair
+socket
+getdtablesize
+mktime
+gmtime
+localtime
+__dt__40GUSISpecificData<Q23std2tm,&.GUSIKillTM>Fv             # GUSISpecificData<std::tm, &.GUSIKillTM>::~GUSISpecificData()
+GUSIKillTM
+gettimeofday
+time
+getcwd
+chdir
+closedir
+rewinddir
+seekdir
+telldir
+readdir
+opendir
+rmdir
+mkdir
+access
+utime
+chmod
+lstat
+stat
+rename
+unlink
+remove
+creat
+open
+sleep
+isatty
+lseek
+fstat
+dup2
+dup
+fcntl
+__dt__12GUSIGathererFv         # GUSIGatherer::~GUSIGatherer()
+write
+read
+close
+fsync
+pipe
+__vt__13GUSIPPCSocket          # GUSIPPCSocket::__vt
+__vt__14GUSIPPCFactory         # GUSIPPCFactory::__vt
+sDoneProc__13GUSIPPCSocket             # GUSIPPCSocket::sDoneProc
+sListenProc__13GUSIPPCSocket           # GUSIPPCSocket::sListenProc
+sRecvProc__13GUSIPPCSocket             # GUSIPPCSocket::sRecvProc
+sSendProc__13GUSIPPCSocket             # GUSIPPCSocket::sSendProc
+sInstance__14GUSIPPCFactory            # GUSIPPCFactory::sInstance
+__dt__14GUSIPPCFactoryFv               # GUSIPPCFactory::~GUSIPPCFactory()
+GUSIPPCListen__FP13GUSIPPCSocket               # GUSIPPCListen(GUSIPPCSocket*)
+GUSIPPCRecv__FP13GUSIPPCSocket         # GUSIPPCRecv(GUSIPPCSocket*)
+GUSIPPCSend__FP13GUSIPPCSocket         # GUSIPPCSend(GUSIPPCSocket*)
+__dt__13GUSIPPCSocketFv                # GUSIPPCSocket::~GUSIPPCSocket()
+shutdown__13GUSIPPCSocketFi            # GUSIPPCSocket::shutdown(int)
+ioctl__13GUSIPPCSocketFUiPc            # GUSIPPCSocket::ioctl(unsigned int,char*)
+fcntl__13GUSIPPCSocketFiPc             # GUSIPPCSocket::fcntl(int,char*)
+select__13GUSIPPCSocketFPbPbPb         # GUSIPPCSocket::select(bool*,bool*,bool*)
+sendto__13GUSIPPCSocketFRC12GUSIGathereriPCvUi         # GUSIPPCSocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+recvfrom__13GUSIPPCSocketFRC13GUSIScattereriPvPUi              # GUSIPPCSocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+Supports__13GUSIPPCSocketFQ210GUSISocket12ConfigOption         # GUSIPPCSocket::Supports(GUSISocket::ConfigOption)
+__ct__13GUSIPPCSocketFP13GUSIPPCSocketRQ213GUSIPPCSocket8Listener              # GUSIPPCSocket::GUSIPPCSocket(GUSIPPCSocket*,GUSIPPCSocket::Listener&)
+accept__13GUSIPPCSocketFPvPUi          # GUSIPPCSocket::accept(void*,unsigned int*)
+listen__13GUSIPPCSocketFi              # GUSIPPCSocket::listen(int)
+connect__13GUSIPPCSocketFPvUi          # GUSIPPCSocket::connect(void*,unsigned int)
+bind__13GUSIPPCSocketFPvUi             # GUSIPPCSocket::bind(void*,unsigned int)
+__ct__13GUSIPPCSocketFv                # GUSIPPCSocket::GUSIPPCSocket()
+GUSIPPCDone__FP16PPCParamBlockRec              # GUSIPPCDone(PPCParamBlockRec*)
+GUSIPPCListenDone__FP16PPCParamBlockRec                # GUSIPPCListenDone(PPCParamBlockRec*)
+GUSIPPCRecvDone__FP16PPCParamBlockRec          # GUSIPPCRecvDone(PPCParamBlockRec*)
+GUSIPPCSendDone__FP16PPCParamBlockRec          # GUSIPPCSendDone(PPCParamBlockRec*)
+SetupListener__13GUSIPPCSocketFRQ213GUSIPPCSocket8Listener             # GUSIPPCSocket::SetupListener(GUSIPPCSocket::Listener&)
+socket__14GUSIPPCFactoryFiii           # GUSIPPCFactory::socket(int,int,int)
+GUSIwithPPCSockets
+sDefault__15GUSIPThreadAttr            # GUSIPThreadAttr::sDefault
+sDefaultAttr__15GUSIPThreadAttr                # GUSIPThreadAttr::sDefaultAttr
+sched_yield
+pthread_once
+pthread_equal
+pthread_self
+pthread_cond_broadcast
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_wait
+pthread_cond_destroy
+pthread_cond_init
+pthread_condattr_destroy
+pthread_condattr_init
+pthread_mutex_unlock
+pthread_mutex_trylock
+pthread_mutex_lock
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutexattr_destroy
+pthread_mutexattr_init
+pthread_setspecific
+pthread_getspecific
+pthread_key_delete
+pthread_key_create
+pthread_exit
+pthread_join
+pthread_detach
+pthread_create
+pthread_attr_setstacksize
+pthread_attr_getstacksize
+pthread_attr_setdetachstate
+pthread_attr_getdetachstate
+pthread_attr_destroy
+pthread_attr_init
+__vt__10GUSISocket             # GUSISocket::__vt
+fstat__10GUSISocketFP4stat             # GUSISocket::fstat(stat*)
+sendmsg__10GUSISocketFPC6msghdri               # GUSISocket::sendmsg(const msghdr*,int)
+sendto__10GUSISocketFRC12GUSIGathereriPCvUi            # GUSISocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+write__10GUSISocketFRC12GUSIGatherer           # GUSISocket::write(const GUSIGatherer&)
+recvmsg__10GUSISocketFP6msghdri                # GUSISocket::recvmsg(msghdr*,int)
+recvfrom__10GUSISocketFRC13GUSIScattereriPvPUi         # GUSISocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+read__10GUSISocketFRC13GUSIScatterer           # GUSISocket::read(const GUSIScatterer&)
+select__10GUSISocketFPbPbPb            # GUSISocket::select(bool*,bool*,bool*)
+post_select__10GUSISocketFbbb          # GUSISocket::post_select(bool,bool,bool)
+pre_select__10GUSISocketFbbb           # GUSISocket::pre_select(bool,bool,bool)
+isatty__10GUSISocketFv         # GUSISocket::isatty()
+fsync__10GUSISocketFv          # GUSISocket::fsync()
+lseek__10GUSISocketFli         # GUSISocket::lseek(long,int)
+accept__10GUSISocketFPvPUi             # GUSISocket::accept(void*,unsigned int*)
+shutdown__10GUSISocketFi               # GUSISocket::shutdown(int)
+ftruncate__10GUSISocketFl              # GUSISocket::ftruncate(long)
+ioctl__10GUSISocketFUiPc               # GUSISocket::ioctl(unsigned int,char*)
+fcntl__10GUSISocketFiPc                # GUSISocket::fcntl(int,char*)
+setsockopt__10GUSISocketFiiPvUi                # GUSISocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__10GUSISocketFiiPvPUi               # GUSISocket::getsockopt(int,int,void*,unsigned int*)
+connect__10GUSISocketFPvUi             # GUSISocket::connect(void*,unsigned int)
+listen__10GUSISocketFi         # GUSISocket::listen(int)
+getpeername__10GUSISocketFPvPUi                # GUSISocket::getpeername(void*,unsigned int*)
+getsockname__10GUSISocketFPvPUi                # GUSISocket::getsockname(void*,unsigned int*)
+bind__10GUSISocketFPvUi                # GUSISocket::bind(void*,unsigned int)
+RemoveContext__10GUSISocketFP11GUSIContext             # GUSISocket::RemoveContext(GUSIContext*)
+AddContext__10GUSISocketFP11GUSIContext                # GUSISocket::AddContext(GUSIContext*)
+__dt__10GUSISocketFv           # GUSISocket::~GUSISocket()
+Close__10GUSISocketFUl         # GUSISocket::Close(unsigned long)
+CheckClose__10GUSISocketFUl            # GUSISocket::CheckClose(unsigned long)
+close__10GUSISocketFv          # GUSISocket::close()
+Dequeue__10GUSISocketFv                # GUSISocket::Dequeue()
+Enqueue__10GUSISocketFPP10GUSISocket           # GUSISocket::Enqueue(GUSISocket**)
+Supports__10GUSISocketFQ210GUSISocket12ConfigOption            # GUSISocket::Supports(GUSISocket::ConfigOption)
+__ct__10GUSISocketFv           # GUSISocket::GUSISocket()
+__ct__10GUSImsghdrFRC13GUSIScattGathPCvUi              # GUSImsghdr::GUSImsghdr(const GUSIScattGath&,const void*,unsigned int)
+sKeyAlloc__17GUSISpecificTable         # GUSISpecificTable::sKeyAlloc
+sKeys__17GUSISpecificTable             # GUSISpecificTable::sKeys
+sNextID__12GUSISpecific                # GUSISpecific::sNextID
+Destruct__17GUSISpecificTableFP12GUSISpecific          # GUSISpecificTable::Destruct(GUSISpecific*)
+Register__17GUSISpecificTableFP12GUSISpecific          # GUSISpecificTable::Register(GUSISpecific*)
+DeleteSpecific__17GUSISpecificTableFPC12GUSISpecific           # GUSISpecificTable::DeleteSpecific(const GUSISpecific*)
+SetSpecific__17GUSISpecificTableFPC12GUSISpecificPv            # GUSISpecificTable::SetSpecific(const GUSISpecific*,void*)
+__dt__17GUSISpecificTableFv            # GUSISpecificTable::~GUSISpecificTable()
+__vt__9GUSITimer               # GUSITimer::__vt
+sTimerQueue__9GUSITimer                # GUSITimer::sTimerQueue
+sTimerProc__9GUSITimer         # GUSITimer::sTimerProc
+sTimeZone__8GUSITime           # GUSITime::sTimeZone
+sTimeOffset__8GUSITime         # GUSITime::sTimeOffset
+__dt__53GUSISpecificData<Q29GUSITimer5Queue,&.GUSIKillTimers>Fv                # GUSISpecificData<GUSITimer::Queue, &.GUSIKillTimers>::~GUSISpecificData()
+get__53GUSISpecificData<Q29GUSITimer5Queue,&.GUSIKillTimers>FP17GUSISpecificTable              # GUSISpecificData<GUSITimer::Queue, &.GUSIKillTimers>::get(GUSISpecificTable*)
+__dt__9GUSITimerFv             # GUSITimer::~GUSITimer()
+Kill__9GUSITimerFv             # GUSITimer::Kill()
+Reset__9GUSITimerFv            # GUSITimer::Reset()
+Sleep__9GUSITimerFlb           # GUSITimer::Sleep(long,bool)
+__ct__9GUSITimerFbP11GUSIContext               # GUSITimer::GUSITimer(bool,GUSIContext*)
+GUSIKillTimers
+__dt__Q29GUSITimer10TimerQueueFv               # GUSITimer::TimerQueue::~TimerQueue()
+Wakeup__9GUSITimerFv           # GUSITimer::Wakeup()
+GM2LocalTime__8GUSITimeFv              # GUSITime::GM2LocalTime()
+Local2GMTime__8GUSITimeFv              # GUSITime::Local2GMTime()
+Zone__8GUSITimeFv              # GUSITime::Zone()
+Now__8GUSITimeFv               # GUSITime::Now()
+__ct__8GUSITimeFRCQ23std2tm            # GUSITime::GUSITime(const std::tm&)
+__opQ23std2tm__8GUSITimeFv             # GUSITime::operator std::tm()
+__op8timespec__8GUSITimeFv             # GUSITime::operator timespec()
+__op7timeval__8GUSITimeFv              # GUSITime::operator timeval()
+Deconstruct__8GUSITimeFRx              # GUSITime::Deconstruct(long long&)
+Get64__8GUSITimeFQ28GUSITime6Format            # GUSITime::Get64(GUSITime::Format)
+__ct__8GUSITimeFRC8timespec            # GUSITime::GUSITime(const timespec&)
+__ct__8GUSITimeFRC7timeval             # GUSITime::GUSITime(const timeval&)
+Construct__8GUSITimeFxQ28GUSITime6Format               # GUSITime::Construct(long long,GUSITime::Format)
+__vt__9GUSIAlarm               # GUSIAlarm::__vt
+__vt__14GUSISigFactory         # GUSISigFactory::__vt
+__vt__14GUSISigProcess         # GUSISigProcess::__vt
+__vt__14GUSISigContext         # GUSISigContext::__vt
+ualarm
+__dt__9GUSIAlarmFv             # GUSIAlarm::~GUSIAlarm()
+__dt__Q23std48auto_ptr<9GUSIAlarm,Q23std19_Single<9GUSIAlarm>>Fv               # std::auto_ptr<GUSIAlarm, std::_Single<GUSIAlarm>>::~auto_ptr()
+alarm
+Restart__9GUSIAlarmFl          # GUSIAlarm::Restart(long)
+Wakeup__9GUSIAlarmFv           # GUSIAlarm::Wakeup()
+_exit
+abort__Fv              # abort()
+sigwait
+pause
+sigsuspend
+sigprocmask
+pthread_sigmask
+sigpending
+signal
+sigaction
+pthread_kill
+raise
+sigismember
+sigfillset
+sigemptyset
+sigdelset
+sigaddset
+CreateSigContext__14GUSISigFactoryFPC14GUSISigContext          # GUSISigFactory::CreateSigContext(const GUSISigContext*)
+CreateSigProcess__14GUSISigFactoryFv           # GUSISigFactory::CreateSigProcess()
+__dt__14GUSISigFactoryFv               # GUSISigFactory::~GUSISigFactory()
+__dt__Q23std60auto_ptr<14GUSISigFactory,Q23std25_Single<14GUSISigFactory>>Fv           # std::auto_ptr<GUSISigFactory, std::_Single<GUSISigFactory>>::~auto_ptr()
+SetInstance__14GUSISigFactoryFP14GUSISigFactory                # GUSISigFactory::SetInstance(GUSISigFactory*)
+Instance__14GUSISigFactoryFv           # GUSISigFactory::Instance()
+DefaultAction__14GUSISigProcessFiRC9sigaction          # GUSISigProcess::DefaultAction(int,const sigaction&)
+Raise__14GUSISigProcessFiP14GUSISigContext             # GUSISigProcess::Raise(int,GUSISigContext*)
+Post__14GUSISigProcessFi               # GUSISigProcess::Post(int)
+ClearPending__14GUSISigProcessFUi              # GUSISigProcess::ClearPending(unsigned int)
+Pending__14GUSISigProcessCFv           # GUSISigProcess::Pending() const
+SetAction__14GUSISigProcessFiRC9sigaction              # GUSISigProcess::SetAction(int,const sigaction&)
+CantIgnore__14GUSISigProcessFi         # GUSISigProcess::CantIgnore(int)
+CantCatch__14GUSISigProcessFi          # GUSISigProcess::CantCatch(int)
+GetAction__14GUSISigProcessFi          # GUSISigProcess::GetAction(int)
+__dt__14GUSISigProcessFv               # GUSISigProcess::~GUSISigProcess()
+__ct__14GUSISigProcessFv               # GUSISigProcess::GUSISigProcess()
+Raise__14GUSISigContextFP14GUSISigProcessb             # GUSISigContext::Raise(GUSISigProcess*,bool)
+Ready__14GUSISigContextFP14GUSISigProcess              # GUSISigContext::Ready(GUSISigProcess*)
+Pending__14GUSISigContextCFP14GUSISigProcess           # GUSISigContext::Pending(GUSISigProcess*) const
+Post__14GUSISigContextFi               # GUSISigContext::Post(int)
+ClearPending__14GUSISigContextFUi              # GUSISigContext::ClearPending(unsigned int)
+Pending__14GUSISigContextCFv           # GUSISigContext::Pending() const
+SetBlocked__14GUSISigContextFUi                # GUSISigContext::SetBlocked(unsigned int)
+GetBlocked__14GUSISigContextCFv                # GUSISigContext::GetBlocked() const
+CantBlock__14GUSISigContextFv          # GUSISigContext::CantBlock()
+__dt__14GUSISigContextFv               # GUSISigContext::~GUSISigContext()
+__ct__14GUSISigContextFPC14GUSISigContext              # GUSISigContext::GUSISigContext(const GUSISigContext*)
+atan
+atan2
+memmove
+memcpy
+pow
+exp
+log
+log10
+sqrt
+strcmp
+strlen
+strncmp
+sin
+cos
+atan_d_d
+atan2_d_dd
+atan_d_pd
+atan2_d_pdpd
+atan_r_r
+atan2_r_rr
+atan_r_pr
+atan2_r_prpr
+power_d_dd
+exp_d_d
+exp_d_pd
+exp_r_r
+exp_r_pr
+log_d_d
+log_d_pd
+log10_d_d
+log10_d_pd
+sqrt_d_d
+sqrt_d_pd
+sqrt_r_r
+sqrt_r_pr
+sin_d_d
+sin_d_pd
+sin_r_r
+sin_r_pr
+cos_d_d
+cos_d_pd
+cos_r_r
+cos_r_pr
+__dc_arr
+__del_arr
+__new_arr
+__init_arr
+__copy
+__som_check_ev
+__som_check_new
+__vt__Q23std13bad_exception            # std::bad_exception::__vt
+__vt__Q23std9exception         # std::exception::__vt
+what__Q23std9exceptionCFv              # std::exception::what() const
+what__Q23std13bad_exceptionCFv         # std::bad_exception::what() const
+__end__catch
+__throw
+__dt__Q23std9exceptionFv               # std::exception::~exception()
+__unexpected
+__dt__Q23std13bad_exceptionFv          # std::bad_exception::~bad_exception()
+__unregister_fragment
+__register_fragment
+__global_destructor_chain
+__destroy_global_chain
+__register_global_object
+__destroy_new_array3
+__destroy_new_array2
+__destroy_new_array
+__destroy_arr
+__construct_array
+__dt__26__partial_array_destructorFv           # __partial_array_destructor::~__partial_array_destructor()
+__construct_new_array
+__throw_catch_compare
+unexpected__3stdFv             # std::unexpected()
+set_unexpected__3stdFPFv_v             # std::set_unexpected(void (*)(void))
+terminate__3stdFv              # std::terminate()
+set_terminate__3stdFPFv_v              # std::set_terminate(void (*)(void))
+__vt__Q23std8bad_cast          # std::bad_cast::__vt
+__vt__Q23std10bad_typeid               # std::bad_typeid::__vt
+what__Q23std10bad_typeidCFv            # std::bad_typeid::what() const
+what__Q23std8bad_castCFv               # std::bad_cast::what() const
+__dynamic_cast
+__dt__Q23std8bad_castFv                # std::bad_cast::~bad_cast()
+__get_typeid
+__dt__Q23std10bad_typeidFv             # std::bad_typeid::~bad_typeid()
+nothrow__3std          # std::nothrow
+__dla__FPvRCQ23std9nothrow_t           # operator delete[](void*,const std::nothrow_t&)
+__dl__FPvRCQ23std9nothrow_t            # operator delete(void*,const std::nothrow_t&)
+__dla__FPv             # operator delete[](void*)
+__nwa__FUlRCQ23std9nothrow_t           # operator new[](unsigned long,const std::nothrow_t&)
+__nwa__FUl             # operator new[](unsigned long)
+__dl__FPv              # operator delete(void*)
+__nw__FUlRCQ23std9nothrow_t            # operator new(unsigned long,const std::nothrow_t&)
+__nw__FUl              # operator new(unsigned long)
+__throws_bad_alloc__3std               # std::__throws_bad_alloc
+__vt__Q23std9bad_alloc         # std::bad_alloc::__vt
+__new_handler__3std            # std::__new_handler
+what__Q23std9bad_allocCFv              # std::bad_alloc::what() const
+__del_hdl
+__new_hdl
+set_new_handler__3stdFPFv_v            # std::set_new_handler(void (*)(void))
+__throw_bad_alloc__3stdFv              # std::__throw_bad_alloc()
+__dt__Q23std9bad_allocFv               # std::bad_alloc::~bad_alloc()
+qd
+exit
+__console_exit
+__stdio_exit
+__aborting
+__exit
+exit
+__atexit
+atexit
+fix_start
+vec_free
+vec_realloc
+vec_calloc
+vec_malloc
+__pool_free_all
+calloc
+realloc
+free
+malloc
+__msize
+deallocate_from_fixed_pools
+allocate_from_fixed_pools
+__files
+__flush_line_buffered_output_files
+__flush_all
+__close_all
+__init_file
+__find_unopened_file
+__llmod
+__lmod
+__mod
+__lldiv
+__ldiv
+__div
+__llmul
+__lmul
+__mul
+__lladd
+__ladd
+__add
+lldiv
+ldiv
+div
+llabs
+labs
+abs
+__assertion_failed
+bsearch
+setbuf
+setvbuf
+__flush_buffer
+__load_buffer
+__prep_buffer
+__convert_to_newlines
+__convert_from_newlines
+ccommand
+puts
+fputs
+putchar
+putc
+fputc
+__put_char
+__ungotten
+ungetc
+gets
+fgets
+getchar
+getc
+fgetc
+__get_char
+__ctype_map
+__lower_map
+__upper_map
+fwrite
+fread
+errno
+_splitpath
+_makepath
+_strrev
+_itow
+_itoa
+_strspnp
+_strnset
+_strset
+_strdate
+_strupr
+_wstrrev
+_strnicmp
+_stricmp
+_heapmin
+_gcvt
+_ultoa
+_strlwr
+_wcsspnp
+_wcsnset
+_wcsset
+_wcsrev
+_wcsnicmp
+_wcsicmp
+_wcsupr
+_wcslwr
+__temp_file_mode
+__set_idle_proc
+__get_file_modes
+__handle_reopen
+__handle_open
+__reopen
+freopen
+fopen
+fflush
+fclose
+tmpfile
+tmpnam
+__rename_file
+__delete_file
+__temp_file_name
+rewind
+fsetpos
+fseek
+_fseek
+fgetpos
+ftell
+_ftell
+__lconv
+localeconv
+setlocale
+wcstombs
+mbstowcs
+wctomb
+mbtowc
+mblen
+memcmp
+__memrchr
+memchr
+memset
+__fill_mem
+__copy_longs_rev_unaligned
+__copy_longs_unaligned
+__copy_longs_rev_aligned
+__copy_longs_aligned
+__move_mem
+__copy_mem
+__stdio_atexit
+perror
+ferror
+feof
+clearerr
+__path2fss
+__sys_pointer_size
+__sys_free
+__sys_alloc
+sprintf
+snprintf
+vsprintf
+vsnprintf
+vfprintf
+vprintf
+fprintf
+printf
+__StringWrite
+__FileWrite
+qsort
+srand
+rand
+sscanf
+vsscanf
+vfscanf
+scanf
+fscanf
+__StringRead
+__FileRead
+__strerror
+strerror
+strstr
+strtok
+strcspn
+strspn
+strpbrk
+strrchr
+strxfrm
+strcoll
+strchr
+strncat
+strcat
+strncpy
+strcpy
+atof
+strtod
+strtold
+__strtold
+atol
+atoi
+strtoll
+strtol
+strtoull
+strtoul
+__strtoull
+__strtoul
+system
+getenv
+__month_to_days
+strftime
+ctime
+asctime
+difftime
+clock
+__leap_year
+__to_gm_time
+__get_time
+__get_clock
+_fcntl
+_creat
+_open
+_mkdir
+_fstat
+_stat
+_write
+_unlink
+_ttyname
+_sleep
+_rmdir
+_read
+_lseek
+_isatty
+_getlogin
+_getcwd
+_exec
+_cuserid
+_close
+_chdir
+__new_umask
+_fileno
+_umask
+_ftype
+_fcreator
+_chmod
+__gettype
+__getcreator
+__ctopstring
+__system7present
+utimes
+_uname
+__float_nan
+__float_huge
+__double_min
+__double_max
+__double_epsilon
+__double_tiny
+__double_huge
+__double_nan
+__extended_min
+__extended_max
+__extended_epsilon
+__extended_tiny
+__extended_huge
+__extended_nan
+fwide
+fgetws
+fputws
+ungetwc
+fgetwc
+getwchar
+getwc
+fputwc
+putwchar
+putwc
+watof
+wcstod
+__wcstold
+watol
+watoi
+wcstoll
+wcstol
+wcstoull
+wcstoul
+__wcstoull
+__wcstoul
+wctrans
+towctrans
+__wctype_map
+__wlower_map
+__wupper_map
+iswctype
+wctype
+wctob
+wmemcmp
+wmemchr
+wmemset
+wmemmove
+wmemcpy
+vswprintf
+swprintf
+vfwprintf
+vwprintf
+fwprintf
+wprintf
+__wStringWrite
+__wFileWrite
+swscanf
+vswscanf
+vfwscanf
+vwscanf
+wscanf
+fwscanf
+__wStringRead
+__wFileRead
+wcsstr
+wcstok
+wcscspn
+wcsspn
+wcspbrk
+wcsrchr
+wcsxfrm
+wcscoll
+wcschr
+wcsncmp
+wcscmp
+wcsncat
+wcscat
+wcsncpy
+wcscpy
+wcslen
+wcsftime
+wctime
+wasctime
+__fminl
+__fmaxl
+__fdiml
+__nextafterl
+__remquol
+__copysignl
+__remainderl
+__fmodl
+__modfl
+__truncl
+llroundl
+lroundl
+__roundl
+llrintl
+lrintl
+__rintl
+__nearbyintl
+__floorl
+__ceill
+__lgammal
+__gammal
+__erfcl
+__erfl
+__hypotl
+__sqrtl
+__powl
+__fabsl
+scalblnl
+scalbnl
+__logbl
+__log2l
+__log1pl
+__expm1l
+__exp2l
+__log10l
+__logl
+__ldexpl
+__frexpl
+__expl
+__atanhl
+__asinhl
+__acoshl
+__tanhl
+__sinhl
+__coshl
+__tanl
+__sinl
+__cosl
+__atan2l
+__atanl
+__asinl
+__acosl
+fminf
+fmaxf
+fdimf
+remquof
+copysignf
+remainderf
+fmodf
+truncf
+llroundf
+lroundf
+roundf
+llrintf
+lrintf
+rintf
+nearbyintf
+floorf
+ceilf
+lgammaf
+gammaf
+erfcf
+erff
+hypotf
+sqrtf
+powf
+fabsf
+scalblnf
+scalbnf
+logbf
+log2f
+log1pf
+expm1f
+exp2f
+log10f
+logf
+ldexpf
+frexpf
+expf
+atanhf
+asinhf
+acoshf
+tanhf
+sinhf
+coshf
+tanf
+sinf
+cosf
+atan2f
+atanf
+asinf
+acosf
+nextafter
+llround
+lround
+llrint
+lrint
+scalbln
+scalbn
+clrscr
+getch
+kbhit
+SIOUXSetTitle
+__ttyname
+ReadCharsFromConsole
+WriteCharsToConsole
+RemoveConsole
+InstallConsole
+SIOUXHandleOneEvent
+SIOUXisinrange
+SIOUXDragRect
+SIOUXBigRect
+SIOUXSettings
+SIOUXTextWindow
+SIOUXState
+SIOUXUseWaitNextEvent
+SIOUXQuitting
+SIOUXselstart
+SIOUXDoMenuChoice
+SIOUXDoEditSelectAll
+SIOUXDoEditClear
+SIOUXDoEditPaste
+SIOUXDoEditCopy
+SIOUXDoEditCut
+SIOUXDoSaveText
+SIOUXUpdateMenuItems
+SIOUXSetupMenus
+SIOUXDoPrintText
+SIOUXDoPageSetup
+SIOUXYesNoCancelAlert
+SIOUXCantSaveAlert
+SIOUXSetupTextWindow
+SIOUXDoContentClick
+SIOUXMyGrowWindow
+SIOUXUpdateStatusLine
+MoveScrollBox
+SIOUXUpdateScrollbar
+SIOUXUpdateWindow
+SIOUXDrawGrowBox
+AdjustText
+SIOUXIsAppWindow
+OTAsyncOpenInternetServices
+OTOpenInternetServices
+InitOpenTransportUtilities
+CloseOpenTransport
+OTRegisterAsClient
+OTUnregisterAsClient
+OTAllocMem
+InitOpenTransport
+OTAlloc
+OTOpenProvider
+OTOpenMapper
+OTOpenEndpoint
+OTAsyncOpenProvider
+OTAsyncOpenMapper
+OTAsyncOpenEndpoint
+OTTransferProviderOwnership
+OTWhoAmI
+OTCloseProvider
+t_alloc
+t_open
+t_close
+__gOTClientRecord
+InitOpenTransportCommon
+SetupOpenTransport
+__gLibraryManager
+__gSLMGlobal
+OTCreateDeferredTask
+OTCreateSystemTask
+OTOpenProviderOnStream
+OTOpenEndpointOnStream
+OTStreamOpen
+OTAsyncStreamOpen
+stream_open
+stream_pipe
+OTStreamPipe
+AEGetDescData
+AEGetDescDataSize
+AEReplaceDescData
+GetControlBounds
+IsControlHilited
+GetControlHilite
+GetControlDataHandle
+GetControlOwner
+GetControlPopupMenuHandle
+GetControlPopupMenuID
+SetControlBounds
+SetControlDataHandle
+SetControlPopupMenuHandle
+SetControlPopupMenuID
+GetDialogWindow
+GetDialogTextEditHandle
+GetDialogDefaultItem
+GetDialogCancelItem
+GetDialogKeyboardFocusItem
+SetPortDialogPort
+GetDialogPort
+GetDialogFromWindow
+GetParamText
+GetCorrectPort
+GetPortPixMap
+GetPortBounds
+IsPortRegionBeingDefined
+IsPortPictureBeingDefined
+IsPortOffscreen
+GetPortVisibleRegion
+GetPortClipRegion
+GetPortForeColor
+GetPortBackColor
+GetPortBackPixPatDirect
+GetPortBackPixPat
+GetPortPenPixPatDirect
+GetPortPenPixPat
+GetPortFillPixPat
+GetPortTextFont
+GetPortTextFace
+GetPortTextMode
+GetPortFracHPenLocation
+GetPortChExtra
+GetPortPenVisibility
+GetPortSpExtra
+GetPortTextSize
+GetPortGrafProcs
+GetPortOpColor
+GetPortHiliteColor
+GetPixBounds
+GetPixDepth
+GetPortPenSize
+GetPortPenMode
+GetPortPenLocation
+GetPortPrintingReference
+SetPortBounds
+SetPortVisibleRegion
+SetPortClipRegion
+SetPortPenPixPatDirect
+SetPortPenPixPat
+SetPortBackPixPatDirect
+SetPortBackPixPat
+SetPortOpColor
+SetPortPenSize
+SetPortPenMode
+SetPortFracHPenLocation
+SetPortGrafProcs
+SetPortPrintingReference
+GetQDGlobalsRandomSeed
+GetQDGlobalsScreenBits
+GetQDGlobalsArrow
+GetQDGlobalsDarkGray
+GetQDGlobalsLightGray
+GetQDGlobalsGray
+GetQDGlobalsBlack
+GetQDGlobalsWhite
+GetQDGlobalsThePort
+SetQDGlobalsArrow
+SetQDGlobalsRandomSeed
+GetRegionBounds
+IsRegionRectangular
+CreateNewPort
+DisposePort
+SetQDError
+GetWindowPort
+GetWindowKind
+IsWindowVisible
+IsWindowHilited
+IsWindowUpdatePending
+GetWindowGoAwayFlag
+GetWindowSpareFlag
+GetWindowStandardState
+GetWindowUserState
+SetWindowKind
+SetWindowStandardState
+SetWindowUserState
+SetPortWindowPort
+GetWindowPortBounds
+GetWindowFromPort
+IsTSMTEDialog
+GetTSMTEDialogDocumentID
+GetTSMTEDialogTSMTERecHandle
+SetTSMTEDialogDocumentID
+SetTSMTEDialogTSMTERecHandle
+GetMenuID
+GetMenuWidth
+GetMenuHeight
+GetMenuTitle
+SetMenuID
+SetMenuWidth
+SetMenuHeight
+SetMenuTitle
+GetGlobalMouse
+GetListViewBounds
+GetListPort
+GetListCellIndent
+GetListCellSize
+GetListVisibleCells
+GetListVerticalScrollBar
+GetListHorizontalScrollBar
+GetListFlags
+GetListSelectionFlags
+GetListActive
+GetListClickTime
+GetListClickLocation
+GetListMouseLocation
+GetListClickLoop
+GetListRefCon
+GetListDefinition
+GetListUserHandle
+GetListDataBounds
+GetListDataHandle
+SetListViewBounds
+SetListPort
+SetListCellIndent
+SetListClickTime
+SetListClickLoop
+SetListLastClick
+SetListRefCon
+SetListFlags
+SetListSelectionFlags
+SetListUserHandle
+GrabSpecifiedCFMSymbol
+CopyPascalStringToC
+CopyCStringToPascal
+p2cstrcpy
+GetQDGlobals
+GetWindowList
+GetNextWindow
diff --git a/Mac/Build/PythonCoreCarbon.exp b/Mac/Build/PythonCoreCarbon.exp
new file mode 100644 (file)
index 0000000..4d33682
--- /dev/null
@@ -0,0 +1,2325 @@
+sSuffices
+GUSISetupConfig
+GUSISetupDevices
+GUSISetupFactories
+__vt__15GUSISIOUXDevice                # GUSISIOUXDevice::__vt
+__vt__15GUSISIOUXSocket                # GUSISIOUXSocket::__vt
+sInstance__15GUSISIOUXDevice           # GUSISIOUXDevice::sInstance
+sInstance__15GUSISIOUXSocket           # GUSISIOUXSocket::sInstance
+__dt__15GUSISIOUXDeviceFv              # GUSISIOUXDevice::~GUSISIOUXDevice()
+GUSISetupConsoleDescriptors
+open__15GUSISIOUXDeviceFR13GUSIFileTokeni              # GUSISIOUXDevice::open(GUSIFileToken&,int)
+Want__15GUSISIOUXDeviceFR13GUSIFileToken               # GUSISIOUXDevice::Want(GUSIFileToken&)
+__dt__10GUSIDeviceFv           # GUSIDevice::~GUSIDevice()
+Instance__15GUSISIOUXDeviceFv          # GUSISIOUXDevice::Instance()
+select__15GUSISIOUXSocketFPbPbPb               # GUSISIOUXSocket::select(bool*,bool*,bool*)
+isatty__15GUSISIOUXSocketFv            # GUSISIOUXSocket::isatty()
+fstat__15GUSISIOUXSocketFP4stat                # GUSISIOUXSocket::fstat(stat*)
+ioctl__15GUSISIOUXSocketFUiPc          # GUSISIOUXSocket::ioctl(unsigned int,char*)
+write__15GUSISIOUXSocketFRC12GUSIGatherer              # GUSISIOUXSocket::write(const GUSIGatherer&)
+read__15GUSISIOUXSocketFRC13GUSIScatterer              # GUSISIOUXSocket::read(const GUSIScatterer&)
+__dt__15GUSISIOUXSocketFv              # GUSISIOUXSocket::~GUSISIOUXSocket()
+Initialize__15GUSISIOUXSocketFv                # GUSISIOUXSocket::Initialize()
+__ct__15GUSISIOUXSocketFv              # GUSISIOUXSocket::GUSISIOUXSocket()
+Instance__15GUSISIOUXSocketFv          # GUSISIOUXSocket::Instance()
+Py_FileSystemDefaultEncoding
+_PyBuiltin_Init
+_PyEval_SliceIndex
+PyEval_CallObjectWithKeywords
+PyEval_CallObject
+Py_FlushLine
+PyEval_GetNestedScopes
+PyEval_GetRestricted
+PyEval_GetFrame
+PyEval_GetGlobals
+PyEval_GetLocals
+PyEval_GetBuiltins
+PyEval_EvalCode
+Py_SetRecursionLimit
+Py_GetRecursionLimit
+Py_MakePendingCalls
+Py_AddPendingCall
+PyEval_RestoreThread
+PyEval_SaveThread
+PyEval_ReInitThreads
+PyEval_ReleaseThread
+PyEval_AcquireThread
+PyEval_ReleaseLock
+PyEval_AcquireLock
+PyEval_InitThreads
+PyArg_GetFloatArray
+PyArg_GetDoubleArray
+PyArg_GetShortArray
+PyArg_GetLongArray
+PyArg_GetShortArraySize
+PyArg_GetLongArraySize
+PyArg_GetChar
+PyArg_GetString
+PyArg_GetFloat
+PyArg_GetShort
+PyArg_GetLong
+PyArg_GetObject
+PyErr_ProgramText
+PyErr_SyntaxLocation
+PyErr_WarnExplicit
+PyErr_Warn
+PyErr_WriteUnraisable
+PyErr_NewException
+PyErr_Format
+PyErr_BadInternalCall
+_PyErr_BadInternalCall
+PyErr_SetFromErrno
+PyErr_SetFromErrnoWithFilename
+PyErr_NoMemory
+PyErr_BadArgument
+PyErr_Clear
+PyErr_Fetch
+PyErr_NormalizeException
+PyErr_ExceptionMatches
+PyErr_GivenExceptionMatches
+PyErr_Occurred
+PyErr_SetString
+PyErr_SetNone
+PyErr_SetObject
+PyErr_Restore
+PyImport_FrozenModules
+PyArg_ParseTupleAndKeywords
+PyArg_VaParse
+PyArg_ParseTuple
+PyArg_Parse
+Py_GetCopyright
+PyOS_GetLastModificationTime
+_PyOS_opterr
+_PyOS_optind
+_PyOS_optarg
+_PyOS_GetOpt
+Py_GetVersion
+_PyParser_Grammar
+PyImport_Inittab
+_PyImport_Filetab
+PyImport_AppendInittab
+PyImport_ExtendInittab
+initimp
+PyImport_Import
+PyImport_ReloadModule
+PyImport_ImportModuleEx
+PyImport_ImportModule
+PyImport_ImportFrozenModule
+PyImport_ExecCodeModuleEx
+PyImport_ExecCodeModule
+PyImport_AddModule
+_PyImport_FindExtension
+_PyImport_FixupExtension
+PyImport_GetMagicNumber
+PyImport_Cleanup
+PyImport_GetModuleDict
+_PyImport_Fini
+_PyImport_Init
+_PyImport_LoadDynamicModule
+PyMarshal_Init
+PyMarshal_WriteObjectToString
+PyMarshal_ReadObjectFromString
+PyMarshal_ReadObjectFromFile
+PyMarshal_ReadLastObjectFromFile
+PyMarshal_ReadLongFromFile
+PyMarshal_WriteObjectToFile
+PyMarshal_WriteLongToFile
+_Py_PackageContext
+PyModule_AddStringConstant
+PyModule_AddIntConstant
+PyModule_AddObject
+PyEval_CallMethod
+PyEval_CallFunction
+Py_VaBuildValue
+Py_BuildValue
+Py_InitModule4
+PyOS_strtol
+PyOS_strtoul
+Py_UseClassExceptionsFlag
+Py_DebugFlag
+Py_VerboseFlag
+Py_InteractiveFlag
+Py_NoSiteFlag
+Py_FrozenFlag
+_PyThread_Started
+Py_UnicodeFlag
+PyOS_setsig
+PyOS_getsig
+Py_FdIsInteractive
+Py_Exit
+Py_AtExit
+Py_FatalError
+PyParser_SimpleParseString
+PyParser_SimpleParseFile
+Py_SymtableString
+Py_CompileStringFlags
+Py_CompileString
+PyRun_FileExFlags
+PyRun_FileFlags
+PyRun_StringFlags
+PyRun_FileEx
+PyRun_File
+PyRun_String
+PyErr_Display
+PyErr_PrintEx
+PyErr_Print
+PyRun_SimpleString
+PyRun_SimpleFileExFlags
+PyRun_SimpleFileEx
+PyRun_SimpleFile
+PyRun_InteractiveOneFlags
+PyRun_InteractiveOne
+PyRun_InteractiveLoopFlags
+PyRun_InteractiveLoop
+PyRun_AnyFileExFlags
+PyRun_AnyFileEx
+PyRun_AnyFileFlags
+PyRun_AnyFile
+Py_GetPythonHome
+Py_SetPythonHome
+Py_GetProgramName
+Py_SetProgramName
+Py_EndInterpreter
+Py_NewInterpreter
+Py_Finalize
+Py_Initialize
+Py_IsInitialized
+_PyThreadState_Current
+PyThreadState_GetDict
+PyThreadState_Swap
+PyThreadState_Get
+PyThreadState_DeleteCurrent
+PyThreadState_Delete
+PyThreadState_Clear
+PyThreadState_New
+PyInterpreterState_Delete
+PyInterpreterState_Clear
+PyInterpreterState_New
+PyMember_Set
+PyMember_Get
+PySys_WriteStderr
+PySys_WriteStdout
+PySys_SetArgv
+PySys_SetPath
+_PySys_Init
+PySys_AddWarnOption
+PySys_ResetWarnOptions
+PySys_SetObject
+PySys_GetFile
+PySys_GetObject
+PyTraceBack_Type
+PyTraceBack_Print
+PyTraceBack_Here
+PyCode_Type
+Py_OptimizeFlag
+PySymtable_Free
+PyCode_Addr2Line
+PyNode_CompileSymtable
+PyNode_CompileFlags
+PyNode_Compile
+PyCode_New
+PyIter_Next
+PyObject_GetIter
+PyObject_IsSubclass
+PyObject_IsInstance
+PyObject_CallMethod
+PyObject_CallFunction
+PyObject_CallObject
+PyMapping_HasKey
+PyMapping_HasKeyString
+PyMapping_SetItemString
+PyMapping_GetItemString
+PyMapping_Length
+PyMapping_Size
+PyMapping_Check
+PySequence_Index
+PySequence_In
+PySequence_Contains
+_PySequence_IterContains
+PySequence_Count
+PySequence_Fast
+PySequence_List
+PySequence_Tuple
+PySequence_DelSlice
+PySequence_SetSlice
+PySequence_DelItem
+PySequence_SetItem
+PySequence_GetSlice
+PySequence_GetItem
+PySequence_InPlaceRepeat
+PySequence_InPlaceConcat
+PySequence_Repeat
+PySequence_Concat
+PySequence_Length
+PySequence_Size
+PySequence_Check
+PyNumber_Float
+PyNumber_Long
+PyNumber_Int
+PyNumber_Absolute
+PyNumber_Invert
+PyNumber_Positive
+PyNumber_Negative
+PyNumber_InPlacePower
+PyNumber_InPlaceRemainder
+PyNumber_InPlaceMultiply
+PyNumber_InPlaceAdd
+PyNumber_InPlaceDivide
+PyNumber_InPlaceSubtract
+PyNumber_InPlaceRshift
+PyNumber_InPlaceLshift
+PyNumber_InPlaceAnd
+PyNumber_InPlaceXor
+PyNumber_InPlaceOr
+PyNumber_Power
+PyNumber_Remainder
+PyNumber_Add
+PyNumber_Divmod
+PyNumber_Divide
+PyNumber_Multiply
+PyNumber_Subtract
+PyNumber_Rshift
+PyNumber_Lshift
+PyNumber_And
+PyNumber_Xor
+PyNumber_Or
+PyNumber_Check
+PyObject_AsWriteBuffer
+PyObject_AsReadBuffer
+PyObject_AsCharBuffer
+PyObject_DelItem
+PyObject_SetItem
+PyObject_GetItem
+PyObject_Length
+PyObject_Size
+PyObject_Type
+PyObject_Cmp
+PyClass_Type
+PyInstance_Type
+PyMethod_Type
+PyMethod_Fini
+PyMethod_Class
+PyMethod_Self
+PyMethod_Function
+PyMethod_New
+PyInstance_New
+PyInstance_NewRaw
+PyClass_IsSubclass
+PyClass_New
+PyCObject_Type
+PyCObject_Import
+PyCObject_GetDesc
+PyCObject_AsVoidPtr
+PyCObject_FromVoidPtrAndDesc
+PyCObject_FromVoidPtr
+PyComplex_Type
+PyComplex_AsCComplex
+PyComplex_ImagAsDouble
+PyComplex_RealAsDouble
+PyComplex_FromDoubles
+PyComplex_FromCComplex
+_Py_c_pow
+_Py_c_quot
+_Py_c_prod
+_Py_c_neg
+_Py_c_diff
+_Py_c_sum
+PyDict_Type
+PyDictIter_Type
+PyDict_DelItemString
+PyDict_SetItemString
+PyDict_GetItemString
+PyDict_Items
+PyDict_Values
+PyDict_Keys
+PyDict_Size
+PyDict_Copy
+PyDict_Next
+PyDict_Clear
+PyDict_DelItem
+PyDict_SetItem
+PyDict_GetItem
+PyDict_New
+PyFile_Type
+PyObject_AsFileDescriptor
+PyFile_WriteString
+PyFile_WriteObject
+PyFile_SoftSpace
+PyFile_GetLine
+PyFile_SetBufSize
+PyFile_FromString
+PyFile_FromFile
+PyFile_Name
+PyFile_AsFile
+PyFloat_Type
+PyFloat_Fini
+PyFloat_AsReprString
+PyFloat_AsString
+PyFloat_AsStringEx
+PyFloat_AsDouble
+PyFloat_FromString
+PyFloat_FromDouble
+PyFrame_Type
+PyFrame_Fini
+PyFrame_LocalsToFast
+PyFrame_FastToLocals
+PyFrame_BlockPop
+PyFrame_BlockSetup
+PyFrame_New
+PyFunction_Type
+PyFunction_SetClosure
+PyFunction_GetClosure
+PyFunction_SetDefaults
+PyFunction_GetDefaults
+PyFunction_GetGlobals
+PyFunction_GetCode
+PyFunction_New
+_Py_ZeroStruct
+_Py_TrueStruct
+PyInt_Type
+PyInt_Fini
+PyInt_FromUnicode
+PyInt_FromString
+PyInt_AsLong
+PyInt_FromLong
+PyInt_GetMax
+PyList_Type
+PyList_AsTuple
+PyList_Reverse
+PyList_Sort
+PyList_SetSlice
+PyList_GetSlice
+PyList_Append
+PyList_Insert
+PyList_SetItem
+PyList_GetItem
+PyList_Size
+PyList_New
+PyLong_Type
+PyLong_FromUnicode
+PyLong_FromString
+PyLong_AsVoidPtr
+PyLong_FromVoidPtr
+PyLong_AsDouble
+PyLong_AsUnsignedLong
+PyLong_AsLong
+PyLong_FromDouble
+PyLong_FromUnsignedLong
+PyLong_FromLong
+_PyLong_New
+PyCFunction_Type
+PyCFunction_Fini
+Py_FindMethod
+Py_FindMethodInChain
+PyCFunction_GetFlags
+PyCFunction_GetSelf
+PyCFunction_GetFunction
+PyCFunction_New
+PyModule_Type
+_PyModule_Clear
+PyModule_GetFilename
+PyModule_GetName
+PyModule_GetDict
+PyModule_New
+_Py_NoneStruct
+_Py_NotImplementedStruct
+_Py_cobject_hack
+_Py_abstract_hack
+PyObject_ClearWeakRefs
+_PyTrash_delete_later
+_PyTrash_delete_nesting
+_PyTrash_destroy_chain
+_PyTrash_deposit_object
+Py_ReprLeave
+Py_ReprEnter
+PyObject_Free
+PyObject_Realloc
+PyObject_Malloc
+PyMem_Free
+PyMem_Realloc
+PyMem_Malloc
+PyCallable_Check
+PyNumber_Coerce
+PyNumber_CoerceEx
+PyObject_Not
+PyObject_IsTrue
+PyObject_SetAttr
+PyObject_HasAttr
+PyObject_GetAttr
+PyObject_SetAttrString
+PyObject_HasAttrString
+PyObject_GetAttrString
+PyObject_Hash
+_Py_HashPointer
+_Py_HashDouble
+PyObject_RichCompareBool
+PyObject_RichCompare
+PyObject_Compare
+PyObject_Unicode
+PyObject_Str
+PyObject_Repr
+_PyObject_Dump
+PyObject_Print
+_PyGC_Remove
+_PyGC_Insert
+_PyObject_Del
+_PyObject_NewVar
+_PyObject_New
+PyObject_InitVar
+PyObject_Init
+PyRange_Type
+PyRange_New
+_Py_EllipsisObject
+PySlice_Type
+PySlice_GetIndices
+PySlice_New
+PyString_Type
+_Py_ReleaseInternedStrings
+PyString_Fini
+PyString_InternFromString
+PyString_InternInPlace
+PyString_Format
+_PyString_FormatLong
+_PyString_Resize
+PyString_ConcatAndDel
+PyString_Concat
+PyString_AsStringAndSize
+PyString_AsString
+PyString_Size
+PyString_AsEncodedString
+PyString_AsEncodedObject
+PyString_Encode
+PyString_AsDecodedString
+PyString_AsDecodedObject
+PyString_Decode
+PyString_FromString
+PyString_FromStringAndSize
+PyTuple_Type
+PyTuple_Fini
+_PyTuple_Resize
+PyTuple_GetSlice
+PyTuple_SetItem
+PyTuple_GetItem
+PyTuple_Size
+PyTuple_New
+PyType_Type
+PyGrammar_RemoveAccelerators
+PyGrammar_AddAccelerators
+PyGrammar_LabelRepr
+PyGrammar_FindDFA
+PyOS_AfterFork
+PyOS_ReadlineFunctionPointer
+PyOS_InputHook
+PyOS_Readline
+PyOS_StdioReadline
+PyNode_Free
+PyNode_AddChild
+PyNode_New
+PyParser_AddToken
+PyParser_Delete
+PyParser_New
+Py_TabcheckFlag
+PyParser_ParseFile
+PyParser_ParseString
+_PyParser_TokenNames
+PyTokenizer_Get
+PyToken_ThreeChars
+PyToken_TwoChars
+PyToken_OneChar
+PyTokenizer_Free
+PyTokenizer_FromFile
+PyTokenizer_FromString
+array_methods
+initarray
+initaudioop
+initbinascii
+initcmath
+initerrno
+Py_GetBuildInfo
+initimageop
+initmath
+_Py_MD5Final
+_Py_MD5Update
+_Py_MD5Init
+initmd5
+new_doc
+initnew
+initoperator
+initparser
+initregex
+_Py_re_syntax_table
+_Py_re_syntax
+_Py_re_search
+_Py_re_match
+_Py_re_compile_pattern
+_Py_re_compile_fastmap
+_Py_re_set_syntax
+_Py_re_compile_initialize
+initrgbimg
+initrotor
+initselect
+gethostbyname_lock
+init_socket
+initstrop
+initstruct
+inittime
+FindApplicationFromCreator
+PyMac_ApplicationFSSpec
+PyMac_ApplicationPath
+open_doc_upp
+open_app_upp
+not_upp
+PyMac_GetArgv
+PyMac_GetFullPath
+PyMac_init_process_location
+strdup
+Py_GetCompiler
+PyMac_PreferenceOptions
+PyMac_GetPythonPath
+PyMac_GetPythonDir
+PyMac_OpenPrefFile
+Py_GetPath
+Py_GetPlatform
+PyMac_ConsoleIsDead
+PyMac_AppearanceCompliant
+PyMac_OSErrException
+PyMac_Buildwide
+PyMac_Getwide
+PyMac_BuildFixed
+PyMac_GetFixed
+PyMac_GetEventRecord
+PyMac_BuildPoint
+PyMac_GetPoint
+PyMac_BuildRect
+PyMac_GetRect
+PyMac_BuildFSSpec
+PyMac_GetFSSpec
+PyMac_BuildOptStr255
+PyMac_BuildStr255
+PyMac_GetStr255
+PyMac_BuildNumVersion
+PyMac_BuildOSType
+PyMac_GetOSType
+SIOUXDoAboutBox
+PyMac_RaiseConsoleWindow
+PyMac_RestoreMenuBar
+PyMac_InitMenuBar
+PyMac_SetSchedParams
+PyMac_GetSchedParams
+PyMac_DoYield
+PyMac_HandleEvent
+PyMac_BuildEventRecord
+PyMac_HandleEventIntern
+PyMac_SetEventHandler
+PyOS_InterruptOccurred
+PyErr_CheckSignals
+PyOS_FiniInterrupts
+PyOS_InitInterrupts
+PyOS_CheckStack
+PyMac_Error
+PyErr_Mac
+PyMac_GetOSErrException
+PyMac_StrError
+Pstring
+PyMac_StopGUSISpin
+RotateCursor
+SpinCursor
+PyMac_getscript
+PyMac_AppRefNum
+PyMac_options
+console_output_state
+PyMac_GetDelayConsoleFlag
+Py_GetExecPrefix
+Py_GetPrefix
+Py_GetArgcArgv
+Py_GetProgramFullPath
+PyMac_Exit
+abort
+PyMac_OutputNotSeen
+PyMac_OutputSeen
+PyMac_InitApplication
+PyMac_Initialize
+PyMac_InitApplet
+PyMac_getfiletype
+PyMac_setfiletype
+main
+PyMac_AddLibResources
+__initialize_with_resources
+getwd
+macstat
+sync
+initgestalt
+initmacfs
+newmfssobject
+mfs_GetFSSpecFSSpec
+initmac
+initMacOS
+Pcre_Type
+initpcre
+pcre_lcc
+pcre_fcc
+pcre_cbits
+pcre_ctypes
+pcre_malloc
+pcre_free
+pcre_exec
+pcre_compile
+pcre_info
+pcre_version
+pcre_study
+initcPickle
+Pickler_setattr
+cPickle_PyMapping_HasKey
+initcStringIO
+PyMac_FindModuleExtension
+PyMac_LoadResourceModule
+PyMac_LoadCodeResourceModule
+PyMac_FindCodeResourceModule
+PyMac_FindResourceModule
+_PyImport_Inittab
+CtlObj_chain
+Control_Type
+initCtl
+_CtlObj_Convert
+_CtlObj_New
+DlgObj_chain
+Dialog_Type
+initDlg
+DlgObj_Convert
+DlgObj_New
+DlgObj_WhichDialog
+MenuObj_chain
+Menu_Type
+initMenu
+_MenuObj_Convert
+_MenuObj_New
+GrafObj_chain
+GrafPort_Type
+BMObj_chain
+BitMap_Type
+QDGlobalsAccess_Type
+initQd
+BMObj_NewCopied
+_BMObj_Convert
+_BMObj_New
+_GrafObj_Convert
+_GrafObj_New
+_QdRGB_Convert
+_QdRGB_New
+ResObj_chain
+Resource_Type
+initRes
+_OptResObj_Convert
+_OptResObj_New
+_ResObj_Convert
+_ResObj_New
+WinObj_chain
+Window_Type
+initWin
+WinObj_WhichWindow
+WinObj_Convert
+WinObj_New
+PyBuffer_Type
+PyBuffer_New
+PyBuffer_FromReadWriteMemory
+PyBuffer_FromMemory
+PyBuffer_FromReadWriteObject
+PyBuffer_FromObject
+_PyImport_DynLoadFiletab
+_PyImport_GetDynLoadFunc
+init_codecs
+_PyUnicode_Database_Records
+_PyUnicode_CategoryNames
+_PyUnicode_BidirectionalNames
+initunicodedata
+_PyCodecRegistry_Fini
+_PyCodecRegistry_Init
+PyCodec_Decode
+PyCodec_Encode
+PyCodec_StreamWriter
+PyCodec_StreamReader
+PyCodec_Decoder
+PyCodec_Encoder
+_PyCodec_Lookup
+PyCodec_Register
+_PyUnicode_TypeRecords
+_PyUnicode_IsAlpha
+_PyUnicode_ToLowercase
+_PyUnicode_ToUppercase
+_PyUnicode_IsUppercase
+_PyUnicode_IsLowercase
+_PyUnicode_IsWhitespace
+_PyUnicode_IsNumeric
+_PyUnicode_ToNumeric
+_PyUnicode_IsDigit
+_PyUnicode_ToDigit
+_PyUnicode_IsDecimalDigit
+_PyUnicode_ToDecimalDigit
+_PyUnicode_IsTitlecase
+_PyUnicode_ToTitlecase
+_PyUnicode_IsLinebreak
+PyUnicode_Type
+_PyUnicode_Fini
+_PyUnicode_Init
+PyUnicode_Format
+PyUnicode_Split
+PyUnicode_Replace
+PyUnicode_Concat
+PyUnicode_Contains
+PyUnicode_Compare
+PyUnicode_Splitlines
+PyUnicode_Join
+PyUnicode_Tailmatch
+PyUnicode_Find
+PyUnicode_Count
+PyUnicode_EncodeDecimal
+PyUnicode_Translate
+PyUnicode_TranslateCharmap
+PyUnicode_AsCharmapString
+PyUnicode_EncodeCharmap
+PyUnicode_DecodeCharmap
+PyUnicode_AsASCIIString
+PyUnicode_EncodeASCII
+PyUnicode_DecodeASCII
+PyUnicode_AsLatin1String
+PyUnicode_EncodeLatin1
+PyUnicode_DecodeLatin1
+PyUnicode_AsRawUnicodeEscapeString
+PyUnicode_EncodeRawUnicodeEscape
+PyUnicode_DecodeRawUnicodeEscape
+PyUnicode_AsUnicodeEscapeString
+PyUnicode_EncodeUnicodeEscape
+PyUnicode_DecodeUnicodeEscape
+PyUnicode_AsUTF16String
+PyUnicode_EncodeUTF16
+PyUnicode_DecodeUTF16
+PyUnicode_AsUTF8String
+PyUnicode_EncodeUTF8
+PyUnicode_DecodeUTF8
+PyUnicode_SetDefaultEncoding
+PyUnicode_GetDefaultEncoding
+PyUnicode_GetSize
+PyUnicode_AsUnicode
+_PyUnicode_AsDefaultEncodedString
+PyUnicode_AsEncodedString
+PyUnicode_Encode
+PyUnicode_Decode
+PyUnicode_FromEncodedObject
+PyUnicode_FromObject
+PyUnicode_AsWideChar
+PyUnicode_FromWideChar
+PyUnicode_FromUnicode
+PyUnicode_Resize
+initthread
+PyThread_up_sema
+PyThread_down_sema
+PyThread_free_sema
+PyThread_allocate_sema
+PyThread_release_lock
+PyThread_acquire_lock
+PyThread_free_lock
+PyThread_allocate_lock
+PyThread__exit_thread
+PyThread_exit_thread
+PyThread_get_thread_ident
+PyThread_start_new_thread
+PyThread_init_thread
+PyExc_Exception
+PyExc_StopIteration
+PyExc_StandardError
+PyExc_ArithmeticError
+PyExc_LookupError
+PyExc_AssertionError
+PyExc_AttributeError
+PyExc_EOFError
+PyExc_FloatingPointError
+PyExc_EnvironmentError
+PyExc_IOError
+PyExc_OSError
+PyExc_ImportError
+PyExc_IndexError
+PyExc_KeyError
+PyExc_KeyboardInterrupt
+PyExc_MemoryError
+PyExc_NameError
+PyExc_OverflowError
+PyExc_RuntimeError
+PyExc_NotImplementedError
+PyExc_SyntaxError
+PyExc_IndentationError
+PyExc_TabError
+PyExc_SystemError
+PyExc_SystemExit
+PyExc_UnboundLocalError
+PyExc_UnicodeError
+PyExc_TypeError
+PyExc_ValueError
+PyExc_ZeroDivisionError
+PyExc_MemoryErrorInst
+PyExc_Warning
+PyExc_UserWarning
+PyExc_DeprecationWarning
+PyExc_SyntaxWarning
+PyExc_RuntimeWarning
+fini_exceptions
+init_exceptions
+initNav
+AEDesc_chain
+AEDesc_Type
+upp_GenericEventHandler
+upp_AEIdleProc
+initAE
+_AEDesc_Convert
+_AEDesc_New
+init_locale
+initEvt
+init_sre
+initsha
+DragObj_chain
+DragObj_Type
+dragglue_TrackingHandlerUPP
+dragglue_ReceiveHandlerUPP
+dragglue_SendDataUPP
+initDrag
+_DragObj_Convert
+_DragObj_New
+initxreadlines
+PyCell_Type
+PyCell_Set
+PyCell_Get
+PyCell_New
+PySymtableEntry_Type
+PySymtableEntry_New
+PyNode_Future
+PySeqIter_Type
+PyCallIter_Type
+PyCallIter_New
+PySeqIter_New
+PyMacGluePtr_AEDesc_New
+PyMacGluePtr_AEDesc_Convert
+PyMacGluePtr_CmpObj_New
+PyMacGluePtr_CmpObj_Convert
+PyMacGluePtr_CmpInstObj_New
+PyMacGluePtr_CmpInstObj_Convert
+PyMacGluePtr_CtlObj_New
+PyMacGluePtr_CtlObj_Convert
+PyMacGluePtr_DragObj_New
+PyMacGluePtr_DragObj_Convert
+PyMacGluePtr_ListObj_New
+PyMacGluePtr_ListObj_Convert
+PyMacGluePtr_MenuObj_New
+PyMacGluePtr_MenuObj_Convert
+PyMacGluePtr_GrafObj_New
+PyMacGluePtr_GrafObj_Convert
+PyMacGluePtr_BMObj_New
+PyMacGluePtr_BMObj_Convert
+PyMacGluePtr_QdRGB_New
+PyMacGluePtr_QdRGB_Convert
+PyMacGluePtr_GWorldObj_New
+PyMacGluePtr_GWorldObj_Convert
+PyMacGluePtr_TrackObj_New
+PyMacGluePtr_TrackObj_Convert
+PyMacGluePtr_MovieObj_New
+PyMacGluePtr_MovieObj_Convert
+PyMacGluePtr_MovieCtlObj_New
+PyMacGluePtr_MovieCtlObj_Convert
+PyMacGluePtr_TimeBaseObj_New
+PyMacGluePtr_TimeBaseObj_Convert
+PyMacGluePtr_UserDataObj_New
+PyMacGluePtr_UserDataObj_Convert
+PyMacGluePtr_MediaObj_New
+PyMacGluePtr_MediaObj_Convert
+PyMacGluePtr_ResObj_New
+PyMacGluePtr_ResObj_Convert
+PyMacGluePtr_OptResObj_New
+PyMacGluePtr_OptResObj_Convert
+PyMacGluePtr_TEObj_New
+PyMacGluePtr_TEObj_Convert
+TEObj_Convert
+TEObj_New
+OptResObj_Convert
+OptResObj_New
+ResObj_Convert
+ResObj_New
+MediaObj_Convert
+MediaObj_New
+UserDataObj_Convert
+UserDataObj_New
+TimeBaseObj_Convert
+TimeBaseObj_New
+MovieCtlObj_Convert
+MovieCtlObj_New
+MovieObj_Convert
+MovieObj_New
+TrackObj_Convert
+TrackObj_New
+GWorldObj_Convert
+GWorldObj_New
+QdRGB_Convert
+QdRGB_New
+BMObj_Convert
+BMObj_New
+GrafObj_Convert
+GrafObj_New
+MenuObj_Convert
+MenuObj_New
+ListObj_Convert
+ListObj_New
+DragObj_Convert
+DragObj_New
+CtlObj_Convert
+CtlObj_New
+CmpInstObj_Convert
+CmpInstObj_New
+CmpObj_Convert
+CmpObj_New
+AEDesc_Convert
+AEDesc_New
+GUSISetupConsoleStdio
+GUSIStdioFlush
+GUSIStdioClose
+_fdopen
+__close_console
+__close_file
+__position_file
+__write_console
+__write_file
+__read_console
+__read_file
+__open_temp_file
+__open_file
+gGUSIEventMask
+h_errno
+gGUSIEventHook
+gGUSIExecHook
+gGUSISpinHook
+GUSI_sprintf__FPcPCce          # GUSI_sprintf(char*,const char*,...)
+GUSI_vsprintf__FPcPCcPc                # GUSI_vsprintf(char*,const char*,char*)
+GUSIHandleNextEvent__Fl                # GUSIHandleNextEvent(long)
+GUSISetMacHostError__Fs                # GUSISetMacHostError(short)
+GUSISetHostError__Fi           # GUSISetHostError(int)
+GUSISetMacError__Fs            # GUSISetMacError(short)
+GUSIMapMacError__Fs            # GUSIMapMacError(short)
+GUSISetPosixError__Fi          # GUSISetPosixError(int)
+GUSIGetHook__FUl               # GUSIGetHook(unsigned long)
+GUSISetHook__FUlPFv_v          # GUSISetHook(unsigned long,void (*)(void))
+__vt__13GUSIScattGath          # GUSIScattGath::__vt
+Peek__Q214GUSIRingBuffer6PeekerFRC13GUSIScattererRUl           # GUSIRingBuffer::Peeker::Peek(const GUSIScatterer&,unsigned long&)
+Peek__Q214GUSIRingBuffer6PeekerFPvRUl          # GUSIRingBuffer::Peeker::Peek(void*,unsigned long&)
+PeekBuffer__Q214GUSIRingBuffer6PeekerFRUl              # GUSIRingBuffer::Peeker::PeekBuffer(unsigned long&)
+__dt__Q214GUSIRingBuffer6PeekerFv              # GUSIRingBuffer::Peeker::~Peeker()
+__ct__Q214GUSIRingBuffer6PeekerFR14GUSIRingBuffer              # GUSIRingBuffer::Peeker::Peeker(GUSIRingBuffer&)
+Valid__14GUSIRingBufferFv              # GUSIRingBuffer::Valid()
+Free__14GUSIRingBufferFv               # GUSIRingBuffer::Free()
+IterateIOVec__14GUSIRingBufferFRC13GUSIScattGathRUlRUlb                # GUSIRingBuffer::IterateIOVec(const GUSIScattGath&,unsigned long&,unsigned long&,bool)
+Consume__14GUSIRingBufferFPvRUl                # GUSIRingBuffer::Consume(void*,unsigned long&)
+Produce__14GUSIRingBufferFPvRUl                # GUSIRingBuffer::Produce(void*,unsigned long&)
+FreeBuffer__14GUSIRingBufferFPvUl              # GUSIRingBuffer::FreeBuffer(void*,unsigned long)
+ValidBuffer__14GUSIRingBufferFPvUl             # GUSIRingBuffer::ValidBuffer(void*,unsigned long)
+ConsumeBuffer__14GUSIRingBufferFRUl            # GUSIRingBuffer::ConsumeBuffer(unsigned long&)
+ProduceBuffer__14GUSIRingBufferFRUl            # GUSIRingBuffer::ProduceBuffer(unsigned long&)
+__dt__14GUSIRingBufferFv               # GUSIRingBuffer::~GUSIRingBuffer()
+ObsoleteBuffer__14GUSIRingBufferFv             # GUSIRingBuffer::ObsoleteBuffer()
+PurgeBuffers__14GUSIRingBufferFv               # GUSIRingBuffer::PurgeBuffers()
+SwitchBuffer__14GUSIRingBufferFUl              # GUSIRingBuffer::SwitchBuffer(unsigned long)
+__ct__14GUSIRingBufferFUl              # GUSIRingBuffer::GUSIRingBuffer(unsigned long)
+Invariant__14GUSIRingBufferFv          # GUSIRingBuffer::Invariant()
+Distance__14GUSIRingBufferFPcPc                # GUSIRingBuffer::Distance(char*,char*)
+__ct__13GUSIScattGathFRC13GUSIScattGath                # GUSIScattGath::GUSIScattGath(const GUSIScattGath&)
+__as__13GUSIScattGathFRC13GUSIScattGath                # GUSIScattGath::operator =(const GUSIScattGath&)
+__dt__13GUSIScattGathFv                # GUSIScattGath::~GUSIScattGath()
+Buffer__13GUSIScattGathCFv             # GUSIScattGath::Buffer() const
+__ct__13GUSIScattGathFPvUlb            # GUSIScattGath::GUSIScattGath(void*,unsigned long,bool)
+__ct__13GUSIScattGathFPC5iovecib               # GUSIScattGath::GUSIScattGath(const iovec*,int,bool)
+sInstance__17GUSIConfiguration         # GUSIConfiguration::sInstance
+ConfigureHandleAppleEvents__17GUSIConfigurationFb              # GUSIConfiguration::ConfigureHandleAppleEvents(bool)
+CmdPeriod__17GUSIConfigurationFPC11EventRecord         # GUSIConfiguration::CmdPeriod(const EventRecord*)
+CheckInterrupt__17GUSIConfigurationFv          # GUSIConfiguration::CheckInterrupt()
+BrokenPipe__17GUSIConfigurationFv              # GUSIConfiguration::BrokenPipe()
+DoAutoInitGraf__17GUSIConfigurationFv          # GUSIConfiguration::DoAutoInitGraf()
+DoAutoSpin__17GUSIConfigurationCFv             # GUSIConfiguration::DoAutoSpin() const
+SetDefaultFType__17GUSIConfigurationCFRC12GUSIFileSpec         # GUSIConfiguration::SetDefaultFType(const GUSIFileSpec&) const
+ConfigureSuffices__17GUSIConfigurationFsPQ217GUSIConfiguration10FileSuffix             # GUSIConfiguration::ConfigureSuffices(short,GUSIConfiguration::FileSuffix*)
+__ct__17GUSIConfigurationFs            # GUSIConfiguration::GUSIConfiguration(short)
+CreateInstance__17GUSIConfigurationFs          # GUSIConfiguration::CreateInstance(short)
+__vt__22GUSIThreadManagerProxy         # GUSIThreadManagerProxy::__vt
+__vt__18GUSIContextFactory             # GUSIContextFactory::__vt
+__vt__11GUSIContext            # GUSIContext::__vt
+sError__11GUSIContext          # GUSIContext::sError
+sHasThreading__11GUSIContext           # GUSIContext::sHasThreading
+sCurrentContext__11GUSIContext         # GUSIContext::sCurrentContext
+sContexts__11GUSIContext               # GUSIContext::sContexts
+sInstance__11GUSIProcess               # GUSIProcess::sInstance
+__dt__Q211GUSIContext5QueueFv          # GUSIContext::Queue::~Queue()
+MakeInstance__22GUSIThreadManagerProxyFv               # GUSIThreadManagerProxy::MakeInstance()
+__dt__22GUSIThreadManagerProxyFv               # GUSIThreadManagerProxy::~GUSIThreadManagerProxy()
+__dt__Q23std76auto_ptr<22GUSIThreadManagerProxy,Q23std33_Single<22GUSIThreadManagerProxy>>Fv           # std::auto_ptr<GUSIThreadManagerProxy, std::_Single<GUSIThreadManagerProxy>>::~auto_ptr()
+Instance__22GUSIThreadManagerProxyFv           # GUSIThreadManagerProxy::Instance()
+SetThreadTerminator__22GUSIThreadManagerProxyFUlPFUlPv_vPv             # GUSIThreadManagerProxy::SetThreadTerminator(unsigned long,void (*)(unsigned long, void*),void*)
+SetThreadSwitcher__22GUSIThreadManagerProxyFUlPFUlPv_vPvUc             # GUSIThreadManagerProxy::SetThreadSwitcher(unsigned long,void (*)(unsigned long, void*),void*,unsigned char)
+NewThread__22GUSIThreadManagerProxyFUlPFPv_PvPvlUlPPvPUl               # GUSIThreadManagerProxy::NewThread(unsigned long,void* (*)(void*),void*,long,unsigned long,void**,unsigned long*)
+GUSIControl__FP7IOParam                # GUSIControl(IOParam*)
+GUSIFinishIO__FP7IOParam               # GUSIFinishIO(IOParam*)
+GUSIStartIO__FP7IOParam                # GUSIStartIO(IOParam*)
+Blocked__11GUSIContextFv               # GUSIContext::Blocked()
+Pending__11GUSIContextFv               # GUSIContext::Pending()
+Raise__11GUSIContextFb         # GUSIContext::Raise(bool)
+Yield__11GUSIProcessF13GUSIYieldMode           # GUSIProcess::Yield(GUSIYieldMode)
+SigSuspend__11GUSIContextFv            # GUSIContext::SigSuspend()
+SigWait__11GUSIContextFUi              # GUSIContext::SigWait(unsigned int)
+Yield__11GUSIContextF13GUSIYieldMode           # GUSIContext::Yield(GUSIYieldMode)
+Done__11GUSIContextFb          # GUSIContext::Done(bool)
+Terminate__11GUSIContextFv             # GUSIContext::Terminate()
+SwitchOut__11GUSIContextFv             # GUSIContext::SwitchOut()
+SwitchIn__11GUSIContextFv              # GUSIContext::SwitchIn()
+SetTerminator__11GUSIContextFPFUlPv_vPv                # GUSIContext::SetTerminator(void (*)(unsigned long, void*),void*)
+GUSISetThreadTerminator
+SetSwitchOut__11GUSIContextFPFUlPv_vPv         # GUSIContext::SetSwitchOut(void (*)(unsigned long, void*),void*)
+SetSwitchIn__11GUSIContextFPFUlPv_vPv          # GUSIContext::SetSwitchIn(void (*)(unsigned long, void*),void*)
+GUSISetThreadSwitcher
+CreateContext__18GUSIContextFactoryFUl         # GUSIContextFactory::CreateContext(unsigned long)
+CreateContext__18GUSIContextFactoryFPFPv_PvPvlUlPPvPUl         # GUSIContextFactory::CreateContext(void* (*)(void*),void*,long,unsigned long,void**,unsigned long*)
+__dt__18GUSIContextFactoryFv           # GUSIContextFactory::~GUSIContextFactory()
+__ct__18GUSIContextFactoryFv           # GUSIContextFactory::GUSIContextFactory()
+__dt__Q23std68auto_ptr<18GUSIContextFactory,Q23std29_Single<18GUSIContextFactory>>Fv           # std::auto_ptr<GUSIContextFactory, std::_Single<GUSIContextFactory>>::~auto_ptr()
+SetInstance__18GUSIContextFactoryFP18GUSIContextFactory                # GUSIContextFactory::SetInstance(GUSIContextFactory*)
+Instance__18GUSIContextFactoryFv               # GUSIContextFactory::Instance()
+GUSINewThread
+Wakeup__11GUSIProcessFv                # GUSIProcess::Wakeup()
+Wakeup__11GUSIContextFv                # GUSIContext::Wakeup()
+Liquidate__11GUSIContextFv             # GUSIContext::Liquidate()
+LiquidateAll__Q211GUSIContext5QueueFv          # GUSIContext::Queue::LiquidateAll()
+__dt__11GUSIContextFv          # GUSIContext::~GUSIContext()
+Lookup__11GUSIContextFUl               # GUSIContext::Lookup(unsigned long)
+__ct__11GUSIContextFPFPv_PvPvlUlPPvPUl         # GUSIContext::GUSIContext(void* (*)(void*),void*,long,unsigned long,void**,unsigned long*)
+__ct__11GUSIContextFUl         # GUSIContext::GUSIContext(unsigned long)
+FinishSetup__11GUSIContextFv           # GUSIContext::FinishSetup()
+GUSIThreadTerminator
+StartSetup__11GUSIContextFv            # GUSIContext::StartSetup()
+Setup__11GUSIContextFb         # GUSIContext::Setup(bool)
+GUSIThreadSwitchOut
+GUSIThreadSwitchIn
+__dt__11GUSIProcessFv          # GUSIProcess::~GUSIProcess()
+QueueForClose__11GUSIProcessFP10GUSISocket             # GUSIProcess::QueueForClose(GUSISocket*)
+__ct__11GUSIProcessFb          # GUSIProcess::GUSIProcess(bool)
+sBlocks__Q216GUSIContextQueue7element          # GUSIContextQueue::element::sBlocks
+Wakeup__16GUSIContextQueueFv           # GUSIContextQueue::Wakeup()
+push_back__16GUSIContextQueueFP11GUSIContext           # GUSIContextQueue::push_back(GUSIContext*)
+remove__16GUSIContextQueueFP11GUSIContext              # GUSIContextQueue::remove(GUSIContext*)
+__dt__16GUSIContextQueueFv             # GUSIContextQueue::~GUSIContextQueue()
+__dl__Q216GUSIContextQueue7elementFPvUl                # GUSIContextQueue::element::operator delete(void*,unsigned long)
+__nw__Q216GUSIContextQueue7elementFUl          # GUSIContextQueue::element::operator new(unsigned long)
+__vt__14GUSIDConSocket         # GUSIDConSocket::__vt
+__vt__14GUSIDConDevice         # GUSIDConDevice::__vt
+sInstance__14GUSIDConDevice            # GUSIDConDevice::sInstance
+__dt__14GUSIDConDeviceFv               # GUSIDConDevice::~GUSIDConDevice()
+isatty__14GUSIDConSocketFv             # GUSIDConSocket::isatty()
+Supports__14GUSIDConSocketFQ210GUSISocket12ConfigOption                # GUSIDConSocket::Supports(GUSISocket::ConfigOption)
+write__14GUSIDConSocketFRC12GUSIGatherer               # GUSIDConSocket::write(const GUSIGatherer&)
+read__14GUSIDConSocketFRC13GUSIScatterer               # GUSIDConSocket::read(const GUSIScatterer&)
+__dt__14GUSIDConSocketFv               # GUSIDConSocket::~GUSIDConSocket()
+__ct__14GUSIDConSocketFPCc             # GUSIDConSocket::GUSIDConSocket(const char*)
+open__14GUSIDConDeviceFR13GUSIFileTokeni               # GUSIDConDevice::open(GUSIFileToken&,int)
+Want__14GUSIDConDeviceFR13GUSIFileToken                # GUSIDConDevice::Want(GUSIFileToken&)
+GUSIwithDConSockets
+sGUSIDescriptorTable__19GUSIDescriptorTable            # GUSIDescriptorTable::sGUSIDescriptorTable
+__ct__19GUSIDescriptorTableFRC19GUSIDescriptorTable            # GUSIDescriptorTable::GUSIDescriptorTable(const GUSIDescriptorTable&)
+LookupSocket__19GUSIDescriptorTableFi          # GUSIDescriptorTable::LookupSocket(int)
+__vc__19GUSIDescriptorTableFi          # GUSIDescriptorTable::operator [](int)
+RemoveSocket__19GUSIDescriptorTableFi          # GUSIDescriptorTable::RemoveSocket(int)
+InstallSocket__19GUSIDescriptorTableFP10GUSISocketi            # GUSIDescriptorTable::InstallSocket(GUSISocket*,int)
+__dt__19GUSIDescriptorTableFv          # GUSIDescriptorTable::~GUSIDescriptorTable()
+CloseAllDescriptors__19GUSIDescriptorTableFv           # GUSIDescriptorTable::CloseAllDescriptors()
+SetInstance__19GUSIDescriptorTableFP19GUSIDescriptorTable              # GUSIDescriptorTable::SetInstance(GUSIDescriptorTable*)
+Instance__19GUSIDescriptorTableFv              # GUSIDescriptorTable::Instance()
+Instance__14GUSINullDeviceFv           # GUSINullDevice::Instance()
+GUSIDefaultSetupConsole
+GUSISetupConsole
+__ct__19GUSIDescriptorTableFv          # GUSIDescriptorTable::GUSIDescriptorTable()
+__vt__10GUSIDevice             # GUSIDevice::__vt
+sInstance__18GUSIDeviceRegistry                # GUSIDeviceRegistry::sInstance
+faccess__18GUSIDeviceRegistryFPCcPUiPv         # GUSIDeviceRegistry::faccess(const char*,unsigned int*,void*)
+fsetfileinfo__18GUSIDeviceRegistryFPCcUlUl             # GUSIDeviceRegistry::fsetfileinfo(const char*,unsigned long,unsigned long)
+fgetfileinfo__18GUSIDeviceRegistryFPCcPUlPUl           # GUSIDeviceRegistry::fgetfileinfo(const char*,unsigned long*,unsigned long*)
+readlink__18GUSIDeviceRegistryFPCcPci          # GUSIDeviceRegistry::readlink(const char*,char*,int)
+symlink__18GUSIDeviceRegistryFPCcPCc           # GUSIDeviceRegistry::symlink(const char*,const char*)
+opendir__18GUSIDeviceRegistryFPCc              # GUSIDeviceRegistry::opendir(const char*)
+rmdir__18GUSIDeviceRegistryFPCc                # GUSIDeviceRegistry::rmdir(const char*)
+mkdir__18GUSIDeviceRegistryFPCc                # GUSIDeviceRegistry::mkdir(const char*)
+access__18GUSIDeviceRegistryFPCci              # GUSIDeviceRegistry::access(const char*,int)
+utime__18GUSIDeviceRegistryFPCcPC7utimbuf              # GUSIDeviceRegistry::utime(const char*,const utimbuf*)
+chmod__18GUSIDeviceRegistryFPCcUs              # GUSIDeviceRegistry::chmod(const char*,unsigned short)
+stat__18GUSIDeviceRegistryFPCcP4statb          # GUSIDeviceRegistry::stat(const char*,stat*,bool)
+rename__18GUSIDeviceRegistryFPCcPCc            # GUSIDeviceRegistry::rename(const char*,const char*)
+remove__18GUSIDeviceRegistryFPCc               # GUSIDeviceRegistry::remove(const char*)
+open__18GUSIDeviceRegistryFPCci                # GUSIDeviceRegistry::open(const char*,int)
+Lookup__18GUSIDeviceRegistryFR13GUSIFileToken          # GUSIDeviceRegistry::Lookup(GUSIFileToken&)
+RemoveDevice__18GUSIDeviceRegistryFP10GUSIDevice               # GUSIDeviceRegistry::RemoveDevice(GUSIDevice*)
+AddDevice__18GUSIDeviceRegistryFP10GUSIDevice          # GUSIDeviceRegistry::AddDevice(GUSIDevice*)
+__ct__18GUSIDeviceRegistryFv           # GUSIDeviceRegistry::GUSIDeviceRegistry()
+faccess__10GUSIDeviceFR13GUSIFileTokenPUiPv            # GUSIDevice::faccess(GUSIFileToken&,unsigned int*,void*)
+fsetfileinfo__10GUSIDeviceFR13GUSIFileTokenUlUl                # GUSIDevice::fsetfileinfo(GUSIFileToken&,unsigned long,unsigned long)
+fgetfileinfo__10GUSIDeviceFR13GUSIFileTokenPUlPUl              # GUSIDevice::fgetfileinfo(GUSIFileToken&,unsigned long*,unsigned long*)
+readlink__10GUSIDeviceFR13GUSIFileTokenPci             # GUSIDevice::readlink(GUSIFileToken&,char*,int)
+symlink__10GUSIDeviceFR13GUSIFileTokenPCc              # GUSIDevice::symlink(GUSIFileToken&,const char*)
+opendir__10GUSIDeviceFR13GUSIFileToken         # GUSIDevice::opendir(GUSIFileToken&)
+rmdir__10GUSIDeviceFR13GUSIFileToken           # GUSIDevice::rmdir(GUSIFileToken&)
+mkdir__10GUSIDeviceFR13GUSIFileToken           # GUSIDevice::mkdir(GUSIFileToken&)
+access__10GUSIDeviceFR13GUSIFileTokeni         # GUSIDevice::access(GUSIFileToken&,int)
+utime__10GUSIDeviceFR13GUSIFileTokenPC7utimbuf         # GUSIDevice::utime(GUSIFileToken&,const utimbuf*)
+chmod__10GUSIDeviceFR13GUSIFileTokenUs         # GUSIDevice::chmod(GUSIFileToken&,unsigned short)
+stat__10GUSIDeviceFR13GUSIFileTokenP4stat              # GUSIDevice::stat(GUSIFileToken&,stat*)
+rename__10GUSIDeviceFR13GUSIFileTokenPCc               # GUSIDevice::rename(GUSIFileToken&,const char*)
+remove__10GUSIDeviceFR13GUSIFileToken          # GUSIDevice::remove(GUSIFileToken&)
+open__10GUSIDeviceFR13GUSIFileTokeni           # GUSIDevice::open(GUSIFileToken&,int)
+Want__10GUSIDeviceFR13GUSIFileToken            # GUSIDevice::Want(GUSIFileToken&)
+__ct__13GUSIFileTokenFsQ213GUSIFileToken7Request               # GUSIFileToken::GUSIFileToken(short,GUSIFileToken::Request)
+__ct__13GUSIFileTokenFRC12GUSIFileSpecQ213GUSIFileToken7Request                # GUSIFileToken::GUSIFileToken(const GUSIFileSpec&,GUSIFileToken::Request)
+StrStdStream__13GUSIFileTokenFPCc              # GUSIFileToken::StrStdStream(const char*)
+__ct__13GUSIFileTokenFPCcQ213GUSIFileToken7Requestb            # GUSIFileToken::GUSIFileToken(const char*,GUSIFileToken::Request,bool)
+StrFragEqual__13GUSIFileTokenFPCcPCc           # GUSIFileToken::StrFragEqual(const char*,const char*)
+GUSI_diag_log
+vdfprintf
+dfprintf
+GUSI_break
+GUSI_log
+GUSI_pos
+__vt__22GUSISocketTypeRegistry         # GUSISocketTypeRegistry::__vt
+__vt__24GUSISocketDomainRegistry               # GUSISocketDomainRegistry::__vt
+__vt__17GUSISocketFactory              # GUSISocketFactory::__vt
+sInstance__24GUSISocketDomainRegistry          # GUSISocketDomainRegistry::sInstance
+__dt__24GUSISocketDomainRegistryFv             # GUSISocketDomainRegistry::~GUSISocketDomainRegistry()
+__dt__22GUSISocketTypeRegistryFv               # GUSISocketTypeRegistry::~GUSISocketTypeRegistry()
+RemoveFactory__22GUSISocketTypeRegistryFii             # GUSISocketTypeRegistry::RemoveFactory(int,int)
+AddFactory__22GUSISocketTypeRegistryFiiP17GUSISocketFactory            # GUSISocketTypeRegistry::AddFactory(int,int,GUSISocketFactory*)
+socketpair__22GUSISocketTypeRegistryFiiiPP10GUSISocket         # GUSISocketTypeRegistry::socketpair(int,int,int,GUSISocket**)
+socket__22GUSISocketTypeRegistryFiii           # GUSISocketTypeRegistry::socket(int,int,int)
+Find__22GUSISocketTypeRegistryFiibRPQ222GUSISocketTypeRegistry5Entry           # GUSISocketTypeRegistry::Find(int,int,bool,GUSISocketTypeRegistry::Entry*&)
+Initialize__22GUSISocketTypeRegistryFv         # GUSISocketTypeRegistry::Initialize()
+__ct__Q222GUSISocketTypeRegistry5EntryFv               # GUSISocketTypeRegistry::Entry::Entry()
+AddFactory__24GUSISocketDomainRegistryFiP17GUSISocketFactory           # GUSISocketDomainRegistry::AddFactory(int,GUSISocketFactory*)
+socketpair__24GUSISocketDomainRegistryFiiiPP10GUSISocket               # GUSISocketDomainRegistry::socketpair(int,int,int,GUSISocket**)
+socket__24GUSISocketDomainRegistryFiii         # GUSISocketDomainRegistry::socket(int,int,int)
+__dt__17GUSISocketFactoryFv            # GUSISocketFactory::~GUSISocketFactory()
+__ct__24GUSISocketDomainRegistryFv             # GUSISocketDomainRegistry::GUSISocketDomainRegistry()
+socketpair__17GUSISocketFactoryFiiiPP10GUSISocket              # GUSISocketFactory::socketpair(int,int,int,GUSISocket**)
+sID__16GUSITempFileSpec                # GUSITempFileSpec::sID
+sScratchSize__12GUSIFileSpec           # GUSIFileSpec::sScratchSize
+sScratch__12GUSIFileSpec               # GUSIFileSpec::sScratch
+GUSIFSpGetCatInfo
+GUSIFSpTouchFolder
+GUSIFSp2Encoding
+GUSIFSp2DirRelPath
+GUSIFSp2RelPath
+GUSIFSp2FullPath
+GUSIFSpResolve
+GUSIFSpIndex
+GUSIFSpDown
+GUSIFSpUp
+GUSIMakeTempFSp
+GUSISpecial2FSp
+GUSIPath2FSp
+GUSIWD2FSp
+GUSIFRefNum2FSp
+TempName__16GUSITempFileSpecFPCUc              # GUSITempFileSpec::TempName(const unsigned char*)
+TempName__16GUSITempFileSpecFv         # GUSITempFileSpec::TempName()
+__ct__16GUSITempFileSpecFslPCUc                # GUSITempFileSpec::GUSITempFileSpec(short,long,const unsigned char*)
+__ct__16GUSITempFileSpecFsPCUc         # GUSITempFileSpec::GUSITempFileSpec(short,const unsigned char*)
+__ct__16GUSITempFileSpecFPCUc          # GUSITempFileSpec::GUSITempFileSpec(const unsigned char*)
+__ct__16GUSITempFileSpecFsl            # GUSITempFileSpec::GUSITempFileSpec(short,long)
+__ct__16GUSITempFileSpecFs             # GUSITempFileSpec::GUSITempFileSpec(short)
+IsParentOf__12GUSIFileSpecCFRC12GUSIFileSpec           # GUSIFileSpec::IsParentOf(const GUSIFileSpec&) const
+__eq__FRC12GUSIFileSpecRC12GUSIFileSpec                # operator ==(const GUSIFileSpec&,const GUSIFileSpec&)
+AliasPath__12GUSIFileSpecCFv           # GUSIFileSpec::AliasPath() const
+Resolve__12GUSIFileSpecFb              # GUSIFileSpec::Resolve(bool)
+EncodedPath__12GUSIFileSpecCFv         # GUSIFileSpec::EncodedPath() const
+RelativePath__12GUSIFileSpecCFv                # GUSIFileSpec::RelativePath() const
+__as__9HFileInfoFRC9HFileInfo          # HFileInfo::operator =(const HFileInfo&)
+__as__7DirInfoFRC7DirInfo              # DirInfo::operator =(const DirInfo&)
+RelativePath__12GUSIFileSpecCFRC6FSSpec                # GUSIFileSpec::RelativePath(const FSSpec&) const
+PrependPathComponent__12GUSIFileSpecCFRPcPCUcb         # GUSIFileSpec::PrependPathComponent(char*&,const unsigned char*,bool) const
+FullPath__12GUSIFileSpecCFv            # GUSIFileSpec::FullPath() const
+CatInfo__12GUSIFileSpecFs              # GUSIFileSpec::CatInfo(short)
+TouchFolder__12GUSIFileSpecFv          # GUSIFileSpec::TouchFolder()
+SetName__12GUSIFileSpecFPCc            # GUSIFileSpec::SetName(const char*)
+SetName__12GUSIFileSpecFPCUc           # GUSIFileSpec::SetName(const unsigned char*)
+SetParID__12GUSIFileSpecFl             # GUSIFileSpec::SetParID(long)
+SetVRef__12GUSIFileSpecFs              # GUSIFileSpec::SetVRef(short)
+__vc__12GUSIFileSpecFs         # GUSIFileSpec::operator [](short)
+__pl__FRC6FSSpecPCc            # operator +(const FSSpec&,const char*)
+__pl__FRC6FSSpecPCUc           # operator +(const FSSpec&,const unsigned char*)
+AddPathComponent__12GUSIFileSpecFPCcib         # GUSIFileSpec::AddPathComponent(const char*,int,bool)
+__pp__12GUSIFileSpecFv         # GUSIFileSpec::operator ++()
+__mm__12GUSIFileSpecFv         # GUSIFileSpec::operator --()
+GetVolume__12GUSIFileSpecFs            # GUSIFileSpec::GetVolume(short)
+__ct__12GUSIFileSpecFPCcb              # GUSIFileSpec::GUSIFileSpec(const char*,bool)
+__ct__12GUSIFileSpecFs         # GUSIFileSpec::GUSIFileSpec(short)
+__ct__12GUSIFileSpecFUls               # GUSIFileSpec::GUSIFileSpec(unsigned long,short)
+__ct__12GUSIFileSpecFsPCUcb            # GUSIFileSpec::GUSIFileSpec(short,const unsigned char*,bool)
+__ct__12GUSIFileSpecFslPCUcb           # GUSIFileSpec::GUSIFileSpec(short,long,const unsigned char*,bool)
+__ct__12GUSIFileSpecFRC6FSSpecb                # GUSIFileSpec::GUSIFileSpec(const FSSpec&,bool)
+__ct__12GUSIFileSpecFRC12GUSIFileSpec          # GUSIFileSpec::GUSIFileSpec(const GUSIFileSpec&)
+CScratch__12GUSIFileSpecFb             # GUSIFileSpec::CScratch(bool)
+ReadHex__FPCciPc               # ReadHex(const char*,int,char*)
+GUSIFSMoveRename
+GUSIFSCatMove
+GUSIFSCatMove__FPC6FSSpecl             # GUSIFSCatMove(const FSSpec*,long)
+GUSIFSRename
+GUSIFSRstFLock
+GUSIFSSetFLock
+GUSIFSDirCreate
+GUSIFSDelete
+GUSIFSCreate
+GUSIFSCreate__FPC6FSSpec               # GUSIFSCreate(const FSSpec*)
+GUSIFSGetVolParms
+GUSIFSHGetVolParms__FP33GUSIIOPBWrapper<14HParamBlockRec>              # GUSIFSHGetVolParms(GUSIIOPBWrapper<HParamBlockRec>*)
+GUSIFSOpenRF
+GUSIFSOpenDF
+GUSIFSSetFInfo
+GUSIFSGetFInfo
+GUSIFSHSetFInfo__FP33GUSIIOPBWrapper<14HParamBlockRec>         # GUSIFSHSetFInfo(GUSIIOPBWrapper<HParamBlockRec>*)
+GUSIFSHGetFInfo__FP33GUSIIOPBWrapper<14HParamBlockRec>         # GUSIFSHGetFInfo(GUSIIOPBWrapper<HParamBlockRec>*)
+GUSIFSHGetVInfo__FP33GUSIIOPBWrapper<14HParamBlockRec>         # GUSIFSHGetVInfo(GUSIIOPBWrapper<HParamBlockRec>*)
+GUSIFSGetFCBInfo__FP26GUSIIOPBWrapper<8FCBPBRec>               # GUSIFSGetFCBInfo(GUSIIOPBWrapper<FCBPBRec>*)
+GUSIFSSetCatInfo__FP30GUSIIOPBWrapper<11GUSICatInfo>           # GUSIFSSetCatInfo(GUSIIOPBWrapper<GUSICatInfo>*)
+GUSIFSGetCatInfo__FP30GUSIIOPBWrapper<11GUSICatInfo>           # GUSIFSGetCatInfo(GUSIIOPBWrapper<GUSICatInfo>*)
+gGUSIInetFactories
+GUSIwithInetSockets
+__vt__16GUSIMacDirectory               # GUSIMacDirectory::__vt
+__vt__13GUSIDirectory          # GUSIDirectory::__vt
+__vt__17GUSIMacFileSocket              # GUSIMacFileSocket::__vt
+__vt__17GUSIMacFileDevice              # GUSIMacFileDevice::__vt
+sWakeupProc__17GUSIMacFileSocket               # GUSIMacFileSocket::sWakeupProc
+sWriteProc__17GUSIMacFileSocket                # GUSIMacFileSocket::sWriteProc
+sReadProc__17GUSIMacFileSocket         # GUSIMacFileSocket::sReadProc
+__dt__16GUSIMacDirectoryFv             # GUSIMacDirectory::~GUSIMacDirectory()
+rewinddir__16GUSIMacDirectoryFv                # GUSIMacDirectory::rewinddir()
+seekdir__16GUSIMacDirectoryFl          # GUSIMacDirectory::seekdir(long)
+telldir__16GUSIMacDirectoryFv          # GUSIMacDirectory::telldir()
+readdir__16GUSIMacDirectoryFv          # GUSIMacDirectory::readdir()
+__dt__13GUSIDirectoryFv                # GUSIDirectory::~GUSIDirectory()
+__ct__16GUSIMacDirectoryFRC6FSSpec             # GUSIMacDirectory::GUSIMacDirectory(const FSSpec&)
+Supports__17GUSIMacFileSocketFQ210GUSISocket12ConfigOption             # GUSIMacFileSocket::Supports(GUSISocket::ConfigOption)
+fstat__17GUSIMacFileSocketFP4stat              # GUSIMacFileSocket::fstat(stat*)
+ftruncate__17GUSIMacFileSocketFl               # GUSIMacFileSocket::ftruncate(long)
+lseek__17GUSIMacFileSocketFli          # GUSIMacFileSocket::lseek(long,int)
+setsockopt__17GUSIMacFileSocketFiiPvUi         # GUSIMacFileSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__17GUSIMacFileSocketFiiPvPUi                # GUSIMacFileSocket::getsockopt(int,int,void*,unsigned int*)
+ioctl__17GUSIMacFileSocketFUiPc                # GUSIMacFileSocket::ioctl(unsigned int,char*)
+fcntl__17GUSIMacFileSocketFiPc         # GUSIMacFileSocket::fcntl(int,char*)
+fsync__17GUSIMacFileSocketFv           # GUSIMacFileSocket::fsync()
+select__17GUSIMacFileSocketFPbPbPb             # GUSIMacFileSocket::select(bool*,bool*,bool*)
+write__17GUSIMacFileSocketFRC12GUSIGatherer            # GUSIMacFileSocket::write(const GUSIGatherer&)
+read__17GUSIMacFileSocketFRC13GUSIScatterer            # GUSIMacFileSocket::read(const GUSIScatterer&)
+SyncWrite__17GUSIMacFileSocketFv               # GUSIMacFileSocket::SyncWrite()
+SyncRead__17GUSIMacFileSocketFv                # GUSIMacFileSocket::SyncRead()
+__dt__17GUSIMacFileSocketFv            # GUSIMacFileSocket::~GUSIMacFileSocket()
+__dt__17GUSISMInputBufferFv            # GUSISMInputBuffer::~GUSISMInputBuffer()
+__dt__18GUSISMOutputBufferFv           # GUSISMOutputBuffer::~GUSISMOutputBuffer()
+__ct__17GUSIMacFileSocketFsbi          # GUSIMacFileSocket::GUSIMacFileSocket(short,bool,int)
+faccess__17GUSIMacFileDeviceFR13GUSIFileTokenPUiPv             # GUSIMacFileDevice::faccess(GUSIFileToken&,unsigned int*,void*)
+fsetfileinfo__17GUSIMacFileDeviceFR13GUSIFileTokenUlUl         # GUSIMacFileDevice::fsetfileinfo(GUSIFileToken&,unsigned long,unsigned long)
+fgetfileinfo__17GUSIMacFileDeviceFR13GUSIFileTokenPUlPUl               # GUSIMacFileDevice::fgetfileinfo(GUSIFileToken&,unsigned long*,unsigned long*)
+readlink__17GUSIMacFileDeviceFR13GUSIFileTokenPci              # GUSIMacFileDevice::readlink(GUSIFileToken&,char*,int)
+symlink__17GUSIMacFileDeviceFR13GUSIFileTokenPCc               # GUSIMacFileDevice::symlink(GUSIFileToken&,const char*)
+opendir__17GUSIMacFileDeviceFR13GUSIFileToken          # GUSIMacFileDevice::opendir(GUSIFileToken&)
+rmdir__17GUSIMacFileDeviceFR13GUSIFileToken            # GUSIMacFileDevice::rmdir(GUSIFileToken&)
+mkdir__17GUSIMacFileDeviceFR13GUSIFileToken            # GUSIMacFileDevice::mkdir(GUSIFileToken&)
+access__17GUSIMacFileDeviceFR13GUSIFileTokeni          # GUSIMacFileDevice::access(GUSIFileToken&,int)
+utime__17GUSIMacFileDeviceFR13GUSIFileTokenPC7utimbuf          # GUSIMacFileDevice::utime(GUSIFileToken&,const utimbuf*)
+chmod__17GUSIMacFileDeviceFR13GUSIFileTokenUs          # GUSIMacFileDevice::chmod(GUSIFileToken&,unsigned short)
+stat__17GUSIMacFileDeviceFR13GUSIFileTokenP4stat               # GUSIMacFileDevice::stat(GUSIFileToken&,stat*)
+rename__17GUSIMacFileDeviceFR13GUSIFileTokenPCc                # GUSIMacFileDevice::rename(GUSIFileToken&,const char*)
+CleanupTemporaries__17GUSIMacFileDeviceFb              # GUSIMacFileDevice::CleanupTemporaries(bool)
+MarkTemporary__17GUSIMacFileDeviceFRC6FSSpec           # GUSIMacFileDevice::MarkTemporary(const FSSpec&)
+remove__17GUSIMacFileDeviceFR13GUSIFileToken           # GUSIMacFileDevice::remove(GUSIFileToken&)
+open__17GUSIMacFileDeviceFsi           # GUSIMacFileDevice::open(short,int)
+open__17GUSIMacFileDeviceFR13GUSIFileTokeni            # GUSIMacFileDevice::open(GUSIFileToken&,int)
+Want__17GUSIMacFileDeviceFR13GUSIFileToken             # GUSIMacFileDevice::Want(GUSIFileToken&)
+__dt__17GUSIMacFileDeviceFv            # GUSIMacFileDevice::~GUSIMacFileDevice()
+__dt__Q23std66auto_ptr<17GUSIMacFileDevice,Q23std28_Single<17GUSIMacFileDevice>>Fv             # std::auto_ptr<GUSIMacFileDevice, std::_Single<GUSIMacFileDevice>>::~auto_ptr()
+Instance__17GUSIMacFileDeviceFv                # GUSIMacFileDevice::Instance()
+sProtocols__9GUSINetDB         # GUSINetDB::sProtocols
+sServices__20GUSIBuiltinServiceDB              # GUSIBuiltinServiceDB::sServices
+__vt__20GUSIBuiltinServiceDB           # GUSIBuiltinServiceDB::__vt
+__vt__17GUSIFileServiceDB              # GUSIFileServiceDB::__vt
+__vt__13GUSIServiceDB          # GUSIServiceDB::__vt
+__vt__9GUSINetDB               # GUSINetDB::__vt
+sInstance__13GUSIServiceDB             # GUSIServiceDB::sInstance
+sData__13GUSIServiceDB         # GUSIServiceDB::sData
+sEntry__20GUSIBuiltinServiceDB         # GUSIBuiltinServiceDB::sEntry
+sInstance__9GUSINetDB          # GUSINetDB::sInstance
+__dt__12GUSISpecificFv         # GUSISpecific::~GUSISpecific()
+__dt__64GUSISpecificData<Q213GUSIServiceDB4Data,&.GUSIKillServiceDBData>Fv             # GUSISpecificData<GUSIServiceDB::Data, &.GUSIKillServiceDBData>::~GUSISpecificData()
+__dt__80GUSISpecificData<Q220GUSIBuiltinServiceDB5Entry,&.GUSIKillBuiltinServiceDBEntry>Fv             # GUSISpecificData<GUSIBuiltinServiceDB::Entry, &.GUSIKillBuiltinServiceDBEntry>::~GUSISpecificData()
+get__64GUSISpecificData<Q213GUSIServiceDB4Data,&.GUSIKillServiceDBData>FP17GUSISpecificTable           # GUSISpecificData<GUSIServiceDB::Data, &.GUSIKillServiceDBData>::get(GUSISpecificTable*)
+get__80GUSISpecificData<Q220GUSIBuiltinServiceDB5Entry,&.GUSIKillBuiltinServiceDBEntry>FP17GUSISpecificTable           # GUSISpecificData<GUSIBuiltinServiceDB::Entry, &.GUSIKillBuiltinServiceDBEntry>::get(GUSISpecificTable*)
+__dt__9GUSINetDBFv             # GUSINetDB::~GUSINetDB()
+__dt__17GUSIFileServiceDBFv            # GUSIFileServiceDB::~GUSIFileServiceDB()
+__dt__20GUSIBuiltinServiceDBFv         # GUSIBuiltinServiceDB::~GUSIBuiltinServiceDB()
+__ct__11GUSIserventFv          # GUSIservent::GUSIservent()
+GUSIKillHostEnt
+Alloc__11GUSIhostentFUl                # GUSIhostent::Alloc(unsigned long)
+__ct__11GUSIhostentFv          # GUSIhostent::GUSIhostent()
+Instance__13GUSIServiceDBFv            # GUSIServiceDB::Instance()
+GUSIKillServiceDBData
+Next__20GUSIBuiltinServiceDBFv         # GUSIBuiltinServiceDB::Next()
+Reset__20GUSIBuiltinServiceDBFv                # GUSIBuiltinServiceDB::Reset()
+GUSIKillBuiltinServiceDBEntry
+Next__17GUSIFileServiceDBFv            # GUSIFileServiceDB::Next()
+Reset__17GUSIFileServiceDBFv           # GUSIFileServiceDB::Reset()
+__dt__13GUSIServiceDBFv                # GUSIServiceDB::~GUSIServiceDB()
+Instance__17GUSIFileServiceDBFv                # GUSIFileServiceDB::Instance()
+getprotobynumber__9GUSINetDBFi         # GUSINetDB::getprotobynumber(int)
+getprotobyname__9GUSINetDBFPCc         # GUSINetDB::getprotobyname(const char*)
+endprotoent__9GUSINetDBFv              # GUSINetDB::endprotoent()
+setprotoent__9GUSINetDBFi              # GUSINetDB::setprotoent(int)
+getprotoent__9GUSINetDBFv              # GUSINetDB::getprotoent()
+getservbyport__9GUSINetDBFiPCc         # GUSINetDB::getservbyport(int,const char*)
+getservbyname__9GUSINetDBFPCcPCc               # GUSINetDB::getservbyname(const char*,const char*)
+endservent__9GUSINetDBFv               # GUSINetDB::endservent()
+setservent__9GUSINetDBFi               # GUSINetDB::setservent(int)
+getservent__9GUSINetDBFv               # GUSINetDB::getservent()
+gethostname__9GUSINetDBFPci            # GUSINetDB::gethostname(char*,int)
+gethostid__9GUSINetDBFv                # GUSINetDB::gethostid()
+inet_addr__9GUSINetDBFPCc              # GUSINetDB::inet_addr(const char*)
+inet_ntoa__9GUSINetDBF7in_addr         # GUSINetDB::inet_ntoa(in_addr)
+gethostbyaddr__9GUSINetDBFPCvUli               # GUSINetDB::gethostbyaddr(const void*,unsigned long,int)
+gethostbyname__9GUSINetDBFPCc          # GUSINetDB::gethostbyname(const char*)
+__ct__9GUSINetDBFv             # GUSINetDB::GUSINetDB()
+Instance__9GUSINetDBFv         # GUSINetDB::Instance()
+__vt__14GUSINullSocket         # GUSINullSocket::__vt
+__vt__14GUSINullDevice         # GUSINullDevice::__vt
+sInstance__14GUSINullDevice            # GUSINullDevice::sInstance
+__dt__14GUSINullDeviceFv               # GUSINullDevice::~GUSINullDevice()
+__dt__14GUSINullSocketFv               # GUSINullSocket::~GUSINullSocket()
+Supports__14GUSINullSocketFQ210GUSISocket12ConfigOption                # GUSINullSocket::Supports(GUSISocket::ConfigOption)
+fstat__14GUSINullSocketFP4stat         # GUSINullSocket::fstat(stat*)
+write__14GUSINullSocketFRC12GUSIGatherer               # GUSINullSocket::write(const GUSIGatherer&)
+read__14GUSINullSocketFRC13GUSIScatterer               # GUSINullSocket::read(const GUSIScatterer&)
+__ct__14GUSINullSocketFv               # GUSINullSocket::GUSINullSocket()
+stat__14GUSINullDeviceFR13GUSIFileTokenP4stat          # GUSINullDevice::stat(GUSIFileToken&,stat*)
+open__14GUSINullDeviceFv               # GUSINullDevice::open()
+open__14GUSINullDeviceFR13GUSIFileTokeni               # GUSINullDevice::open(GUSIFileToken&,int)
+Want__14GUSINullDeviceFR13GUSIFileToken                # GUSINullDevice::Want(GUSIFileToken&)
+GUSIwithNullSockets
+__vt__14GUSIPipeSocket         # GUSIPipeSocket::__vt
+__vt__15GUSIPipeFactory                # GUSIPipeFactory::__vt
+sInstance__15GUSIPipeFactory           # GUSIPipeFactory::sInstance
+__dt__15GUSIPipeFactoryFv              # GUSIPipeFactory::~GUSIPipeFactory()
+shutdown__14GUSIPipeSocketFi           # GUSIPipeSocket::shutdown(int)
+__dt__14GUSIPipeSocketFv               # GUSIPipeSocket::~GUSIPipeSocket()
+select__14GUSIPipeSocketFPbPbPb                # GUSIPipeSocket::select(bool*,bool*,bool*)
+write__14GUSIPipeSocketFRC12GUSIGatherer               # GUSIPipeSocket::write(const GUSIGatherer&)
+read__14GUSIPipeSocketFRC13GUSIScatterer               # GUSIPipeSocket::read(const GUSIScatterer&)
+Supports__14GUSIPipeSocketFQ210GUSISocket12ConfigOption                # GUSIPipeSocket::Supports(GUSISocket::ConfigOption)
+WakeupPeer__14GUSIPipeSocketFv         # GUSIPipeSocket::WakeupPeer()
+__ct__14GUSIPipeSocketFv               # GUSIPipeSocket::GUSIPipeSocket()
+__dt__14GUSIErrorSaverFv               # GUSIErrorSaver::~GUSIErrorSaver()
+socketpair__15GUSIPipeFactoryFiiiPP10GUSISocket                # GUSIPipeFactory::socketpair(int,int,int,GUSISocket**)
+socket__15GUSIPipeFactoryFiii          # GUSIPipeFactory::socket(int,int,int)
+GUSIwithLocalSockets
+__vt__12GUSIGatherer           # GUSIGatherer::__vt
+__vt__13GUSIScatterer          # GUSIScatterer::__vt
+get__40GUSISpecificData<Q23std2tm,&.GUSIKillTM>FP17GUSISpecificTable           # GUSISpecificData<std::tm, &.GUSIKillTM>::get(GUSISpecificTable*)
+faccess__FPCcPUiPv             # faccess(const char*,unsigned int*,void*)
+fsetfileinfo
+fgetfileinfo
+getservent
+getservbyport
+getservbyname
+getprotoent
+getprotobynumber
+getprotobyname
+gethostbyname
+gethostbyaddr
+endservent
+endprotoent
+setservent
+setprotoent
+gethostname
+gethostid
+inet_ntoa
+inet_addr
+inet_aton
+readlink
+symlink
+usleep
+truncate
+ftruncate
+setsockopt
+getsockopt
+ioctl
+shutdown
+getpeername
+getsockname
+select
+sendmsg
+sendto
+send
+writev
+recvmsg
+recvfrom
+recv
+readv
+accept
+listen
+connect
+bind
+socketpair
+socket
+getdtablesize
+mktime
+gmtime
+localtime
+__dt__40GUSISpecificData<Q23std2tm,&.GUSIKillTM>Fv             # GUSISpecificData<std::tm, &.GUSIKillTM>::~GUSISpecificData()
+GUSIKillTM
+gettimeofday
+time
+getcwd
+chdir
+closedir
+rewinddir
+seekdir
+telldir
+readdir
+opendir
+rmdir
+mkdir
+access
+utime
+chmod
+lstat
+stat
+rename
+unlink
+remove
+creat
+open
+sleep
+isatty
+lseek
+fstat
+dup2
+dup
+fcntl
+__dt__12GUSIGathererFv         # GUSIGatherer::~GUSIGatherer()
+write
+__dt__13GUSIScattererFv                # GUSIScatterer::~GUSIScatterer()
+read
+close
+fsync
+pipe
+sDefault__15GUSIPThreadAttr            # GUSIPThreadAttr::sDefault
+sDefaultAttr__15GUSIPThreadAttr                # GUSIPThreadAttr::sDefaultAttr
+sched_yield
+pthread_once
+pthread_equal
+pthread_self
+pthread_cond_broadcast
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_wait
+pthread_cond_destroy
+pthread_cond_init
+pthread_condattr_destroy
+pthread_condattr_init
+pthread_mutex_unlock
+pthread_mutex_trylock
+pthread_mutex_lock
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutexattr_destroy
+pthread_mutexattr_init
+pthread_setspecific
+pthread_getspecific
+pthread_key_delete
+pthread_key_create
+pthread_exit
+pthread_join
+pthread_detach
+pthread_create
+pthread_attr_setstacksize
+pthread_attr_getstacksize
+pthread_attr_setdetachstate
+pthread_attr_getdetachstate
+pthread_attr_destroy
+pthread_attr_init
+__vt__10GUSISocket             # GUSISocket::__vt
+fstat__10GUSISocketFP4stat             # GUSISocket::fstat(stat*)
+sendmsg__10GUSISocketFPC6msghdri               # GUSISocket::sendmsg(const msghdr*,int)
+sendto__10GUSISocketFRC12GUSIGathereriPCvUi            # GUSISocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+write__10GUSISocketFRC12GUSIGatherer           # GUSISocket::write(const GUSIGatherer&)
+recvmsg__10GUSISocketFP6msghdri                # GUSISocket::recvmsg(msghdr*,int)
+recvfrom__10GUSISocketFRC13GUSIScattereriPvPUi         # GUSISocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+read__10GUSISocketFRC13GUSIScatterer           # GUSISocket::read(const GUSIScatterer&)
+select__10GUSISocketFPbPbPb            # GUSISocket::select(bool*,bool*,bool*)
+post_select__10GUSISocketFbbb          # GUSISocket::post_select(bool,bool,bool)
+pre_select__10GUSISocketFbbb           # GUSISocket::pre_select(bool,bool,bool)
+isatty__10GUSISocketFv         # GUSISocket::isatty()
+fsync__10GUSISocketFv          # GUSISocket::fsync()
+lseek__10GUSISocketFli         # GUSISocket::lseek(long,int)
+accept__10GUSISocketFPvPUi             # GUSISocket::accept(void*,unsigned int*)
+shutdown__10GUSISocketFi               # GUSISocket::shutdown(int)
+ftruncate__10GUSISocketFl              # GUSISocket::ftruncate(long)
+ioctl__10GUSISocketFUiPc               # GUSISocket::ioctl(unsigned int,char*)
+fcntl__10GUSISocketFiPc                # GUSISocket::fcntl(int,char*)
+setsockopt__10GUSISocketFiiPvUi                # GUSISocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__10GUSISocketFiiPvPUi               # GUSISocket::getsockopt(int,int,void*,unsigned int*)
+connect__10GUSISocketFPvUi             # GUSISocket::connect(void*,unsigned int)
+listen__10GUSISocketFi         # GUSISocket::listen(int)
+getpeername__10GUSISocketFPvPUi                # GUSISocket::getpeername(void*,unsigned int*)
+getsockname__10GUSISocketFPvPUi                # GUSISocket::getsockname(void*,unsigned int*)
+bind__10GUSISocketFPvUi                # GUSISocket::bind(void*,unsigned int)
+RemoveContext__10GUSISocketFP11GUSIContext             # GUSISocket::RemoveContext(GUSIContext*)
+AddContext__10GUSISocketFP11GUSIContext                # GUSISocket::AddContext(GUSIContext*)
+__dt__10GUSISocketFv           # GUSISocket::~GUSISocket()
+Close__10GUSISocketFUl         # GUSISocket::Close(unsigned long)
+CheckClose__10GUSISocketFUl            # GUSISocket::CheckClose(unsigned long)
+close__10GUSISocketFv          # GUSISocket::close()
+Dequeue__10GUSISocketFv                # GUSISocket::Dequeue()
+Enqueue__10GUSISocketFPP10GUSISocket           # GUSISocket::Enqueue(GUSISocket**)
+Supports__10GUSISocketFQ210GUSISocket12ConfigOption            # GUSISocket::Supports(GUSISocket::ConfigOption)
+__ct__10GUSISocketFv           # GUSISocket::GUSISocket()
+__ct__10GUSImsghdrFRC13GUSIScattGathPCvUi              # GUSImsghdr::GUSImsghdr(const GUSIScattGath&,const void*,unsigned int)
+sKeyAlloc__17GUSISpecificTable         # GUSISpecificTable::sKeyAlloc
+sKeys__17GUSISpecificTable             # GUSISpecificTable::sKeys
+sNextID__12GUSISpecific                # GUSISpecific::sNextID
+Destruct__17GUSISpecificTableFP12GUSISpecific          # GUSISpecificTable::Destruct(GUSISpecific*)
+Register__17GUSISpecificTableFP12GUSISpecific          # GUSISpecificTable::Register(GUSISpecific*)
+DeleteSpecific__17GUSISpecificTableFPC12GUSISpecific           # GUSISpecificTable::DeleteSpecific(const GUSISpecific*)
+SetSpecific__17GUSISpecificTableFPC12GUSISpecificPv            # GUSISpecificTable::SetSpecific(const GUSISpecific*,void*)
+__dt__17GUSISpecificTableFv            # GUSISpecificTable::~GUSISpecificTable()
+__vt__9GUSITimer               # GUSITimer::__vt
+sTimerQueue__9GUSITimer                # GUSITimer::sTimerQueue
+sTimerProc__9GUSITimer         # GUSITimer::sTimerProc
+sTimeZone__8GUSITime           # GUSITime::sTimeZone
+sTimeOffset__8GUSITime         # GUSITime::sTimeOffset
+__dt__53GUSISpecificData<Q29GUSITimer5Queue,&.GUSIKillTimers>Fv                # GUSISpecificData<GUSITimer::Queue, &.GUSIKillTimers>::~GUSISpecificData()
+get__53GUSISpecificData<Q29GUSITimer5Queue,&.GUSIKillTimers>FP17GUSISpecificTable              # GUSISpecificData<GUSITimer::Queue, &.GUSIKillTimers>::get(GUSISpecificTable*)
+__dt__9GUSITimerFv             # GUSITimer::~GUSITimer()
+Kill__9GUSITimerFv             # GUSITimer::Kill()
+Reset__9GUSITimerFv            # GUSITimer::Reset()
+Sleep__9GUSITimerFlb           # GUSITimer::Sleep(long,bool)
+__ct__9GUSITimerFbP11GUSIContext               # GUSITimer::GUSITimer(bool,GUSIContext*)
+GUSIKillTimers
+__dt__Q29GUSITimer10TimerQueueFv               # GUSITimer::TimerQueue::~TimerQueue()
+Wakeup__9GUSITimerFv           # GUSITimer::Wakeup()
+GM2LocalTime__8GUSITimeFv              # GUSITime::GM2LocalTime()
+Local2GMTime__8GUSITimeFv              # GUSITime::Local2GMTime()
+Zone__8GUSITimeFv              # GUSITime::Zone()
+Now__8GUSITimeFv               # GUSITime::Now()
+__ct__8GUSITimeFRCQ23std2tm            # GUSITime::GUSITime(const std::tm&)
+__opQ23std2tm__8GUSITimeFv             # GUSITime::operator std::tm()
+__op8timespec__8GUSITimeFv             # GUSITime::operator timespec()
+__op7timeval__8GUSITimeFv              # GUSITime::operator timeval()
+Deconstruct__8GUSITimeFRx              # GUSITime::Deconstruct(long long&)
+Get64__8GUSITimeFQ28GUSITime6Format            # GUSITime::Get64(GUSITime::Format)
+__ct__8GUSITimeFRC8timespec            # GUSITime::GUSITime(const timespec&)
+__ct__8GUSITimeFRC7timeval             # GUSITime::GUSITime(const timeval&)
+Construct__8GUSITimeFxQ28GUSITime6Format               # GUSITime::Construct(long long,GUSITime::Format)
+__vt__9GUSIAlarm               # GUSIAlarm::__vt
+__vt__14GUSISigFactory         # GUSISigFactory::__vt
+__vt__14GUSISigProcess         # GUSISigProcess::__vt
+__vt__14GUSISigContext         # GUSISigContext::__vt
+ualarm
+__dt__9GUSIAlarmFv             # GUSIAlarm::~GUSIAlarm()
+__dt__Q23std48auto_ptr<9GUSIAlarm,Q23std19_Single<9GUSIAlarm>>Fv               # std::auto_ptr<GUSIAlarm, std::_Single<GUSIAlarm>>::~auto_ptr()
+alarm
+Restart__9GUSIAlarmFl          # GUSIAlarm::Restart(long)
+Wakeup__9GUSIAlarmFv           # GUSIAlarm::Wakeup()
+_exit
+abort__Fv              # abort()
+sigwait
+pause
+sigsuspend
+sigprocmask
+pthread_sigmask
+sigpending
+signal
+sigaction
+pthread_kill
+raise
+sigismember
+sigfillset
+sigemptyset
+sigdelset
+sigaddset
+CreateSigContext__14GUSISigFactoryFPC14GUSISigContext          # GUSISigFactory::CreateSigContext(const GUSISigContext*)
+CreateSigProcess__14GUSISigFactoryFv           # GUSISigFactory::CreateSigProcess()
+__dt__14GUSISigFactoryFv               # GUSISigFactory::~GUSISigFactory()
+__dt__Q23std60auto_ptr<14GUSISigFactory,Q23std25_Single<14GUSISigFactory>>Fv           # std::auto_ptr<GUSISigFactory, std::_Single<GUSISigFactory>>::~auto_ptr()
+SetInstance__14GUSISigFactoryFP14GUSISigFactory                # GUSISigFactory::SetInstance(GUSISigFactory*)
+Instance__14GUSISigFactoryFv           # GUSISigFactory::Instance()
+DefaultAction__14GUSISigProcessFiRC9sigaction          # GUSISigProcess::DefaultAction(int,const sigaction&)
+Raise__14GUSISigProcessFiP14GUSISigContext             # GUSISigProcess::Raise(int,GUSISigContext*)
+Post__14GUSISigProcessFi               # GUSISigProcess::Post(int)
+ClearPending__14GUSISigProcessFUi              # GUSISigProcess::ClearPending(unsigned int)
+Pending__14GUSISigProcessCFv           # GUSISigProcess::Pending() const
+SetAction__14GUSISigProcessFiRC9sigaction              # GUSISigProcess::SetAction(int,const sigaction&)
+CantIgnore__14GUSISigProcessFi         # GUSISigProcess::CantIgnore(int)
+CantCatch__14GUSISigProcessFi          # GUSISigProcess::CantCatch(int)
+GetAction__14GUSISigProcessFi          # GUSISigProcess::GetAction(int)
+__dt__14GUSISigProcessFv               # GUSISigProcess::~GUSISigProcess()
+__ct__14GUSISigProcessFv               # GUSISigProcess::GUSISigProcess()
+Raise__14GUSISigContextFP14GUSISigProcessb             # GUSISigContext::Raise(GUSISigProcess*,bool)
+Ready__14GUSISigContextFP14GUSISigProcess              # GUSISigContext::Ready(GUSISigProcess*)
+Pending__14GUSISigContextCFP14GUSISigProcess           # GUSISigContext::Pending(GUSISigProcess*) const
+Post__14GUSISigContextFi               # GUSISigContext::Post(int)
+ClearPending__14GUSISigContextFUi              # GUSISigContext::ClearPending(unsigned int)
+Pending__14GUSISigContextCFv           # GUSISigContext::Pending() const
+SetBlocked__14GUSISigContextFUi                # GUSISigContext::SetBlocked(unsigned int)
+GetBlocked__14GUSISigContextCFv                # GUSISigContext::GetBlocked() const
+CantBlock__14GUSISigContextFv          # GUSISigContext::CantBlock()
+__dt__14GUSISigContextFv               # GUSISigContext::~GUSISigContext()
+__ct__14GUSISigContextFPC14GUSISigContext              # GUSISigContext::GUSISigContext(const GUSISigContext*)
+__vt__20GUSIOTDatagramSocket           # GUSIOTDatagramSocket::__vt
+__vt__18GUSIOTStreamSocket             # GUSIOTStreamSocket::__vt
+__vt__12GUSIOTSocket           # GUSIOTSocket::__vt
+__vt__14GUSIOTStrategy         # GUSIOTStrategy::__vt
+__vt__21GUSIOTDatagramFactory          # GUSIOTDatagramFactory::__vt
+__vt__13GUSIOTFactory          # GUSIOTFactory::__vt
+__vt__19GUSIOTStreamFactory            # GUSIOTStreamFactory::__vt
+sOK__13GUSIOTFactory           # GUSIOTFactory::sOK
+__dt__19GUSIOTStreamFactoryFv          # GUSIOTStreamFactory::~GUSIOTStreamFactory()
+__dt__13GUSIOTFactoryFv                # GUSIOTFactory::~GUSIOTFactory()
+__dt__21GUSIOTDatagramFactoryFv                # GUSIOTDatagramFactory::~GUSIOTDatagramFactory()
+select__20GUSIOTDatagramSocketFPbPbPb          # GUSIOTDatagramSocket::select(bool*,bool*,bool*)
+__dt__Q23std80auto_ptr<24GUSIOTAddr<9TUnitData,5>,Q23std35_Single<24GUSIOTAddr<9TUnitData,5>>>Fv               # std::auto_ptr<GUSIOTAddr<TUnitData, 5>, std::_Single<GUSIOTAddr<TUnitData, 5>>>::~auto_ptr()
+sendto__20GUSIOTDatagramSocketFRC12GUSIGathereriPCvUi          # GUSIOTDatagramSocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+recvfrom__20GUSIOTDatagramSocketFRC13GUSIScattereriPvPUi               # GUSIOTDatagramSocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+connect__20GUSIOTDatagramSocketFPvUi           # GUSIOTDatagramSocket::connect(void*,unsigned int)
+getpeername__20GUSIOTDatagramSocketFPvPUi              # GUSIOTDatagramSocket::getpeername(void*,unsigned int*)
+BindIfUnbound__20GUSIOTDatagramSocketFv                # GUSIOTDatagramSocket::BindIfUnbound()
+__dt__20GUSIOTDatagramSocketFv         # GUSIOTDatagramSocket::~GUSIOTDatagramSocket()
+Clone__20GUSIOTDatagramSocketFv                # GUSIOTDatagramSocket::Clone()
+__ct__20GUSIOTDatagramSocketFP14GUSIOTStrategy         # GUSIOTDatagramSocket::GUSIOTDatagramSocket(GUSIOTStrategy*)
+shutdown__18GUSIOTStreamSocketFi               # GUSIOTStreamSocket::shutdown(int)
+select__18GUSIOTStreamSocketFPbPbPb            # GUSIOTStreamSocket::select(bool*,bool*,bool*)
+sendto__18GUSIOTStreamSocketFRC12GUSIGathereriPCvUi            # GUSIOTStreamSocket::sendto(const GUSIGatherer&,int,const void*,unsigned int)
+__dt__Q210GUSISocket17AddContextInScopeFv              # GUSISocket::AddContextInScope::~AddContextInScope()
+recvfrom__18GUSIOTStreamSocketFRC13GUSIScattereriPvPUi         # GUSIOTStreamSocket::recvfrom(const GUSIScatterer&,int,void*,unsigned int*)
+connect__18GUSIOTStreamSocketFPvUi             # GUSIOTStreamSocket::connect(void*,unsigned int)
+accept__18GUSIOTStreamSocketFPvPUi             # GUSIOTStreamSocket::accept(void*,unsigned int*)
+getpeername__18GUSIOTStreamSocketFPvPUi                # GUSIOTStreamSocket::getpeername(void*,unsigned int*)
+listen__18GUSIOTStreamSocketFi         # GUSIOTStreamSocket::listen(int)
+MopupEvents__18GUSIOTStreamSocketFv            # GUSIOTStreamSocket::MopupEvents()
+Close__18GUSIOTStreamSocketFUl         # GUSIOTStreamSocket::Close(unsigned long)
+__dt__18GUSIOTStreamSocketFv           # GUSIOTStreamSocket::~GUSIOTStreamSocket()
+close__18GUSIOTStreamSocketFv          # GUSIOTStreamSocket::close()
+Clone__18GUSIOTStreamSocketFv          # GUSIOTStreamSocket::Clone()
+__ct__18GUSIOTStreamSocketFP14GUSIOTStrategy           # GUSIOTStreamSocket::GUSIOTStreamSocket(GUSIOTStrategy*)
+Supports__12GUSIOTSocketFQ210GUSISocket12ConfigOption          # GUSIOTSocket::Supports(GUSISocket::ConfigOption)
+setsockopt__12GUSIOTSocketFiiPvUi              # GUSIOTSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__12GUSIOTSocketFiiPvPUi             # GUSIOTSocket::getsockopt(int,int,void*,unsigned int*)
+ioctl__12GUSIOTSocketFUiPc             # GUSIOTSocket::ioctl(unsigned int,char*)
+fcntl__12GUSIOTSocketFiPc              # GUSIOTSocket::fcntl(int,char*)
+shutdown__12GUSIOTSocketFi             # GUSIOTSocket::shutdown(int)
+getsockname__12GUSIOTSocketFPvPUi              # GUSIOTSocket::getsockname(void*,unsigned int*)
+Unbind__12GUSIOTSocketFv               # GUSIOTSocket::Unbind()
+BindToAddress__12GUSIOTSocketFP20GUSIOTAddr<5TBind,1>          # GUSIOTSocket::BindToAddress(GUSIOTAddr<TBind, 1>*)
+bind__12GUSIOTSocketFPvUi              # GUSIOTSocket::bind(void*,unsigned int)
+__dt__12GUSIOTSocketFv         # GUSIOTSocket::~GUSIOTSocket()
+close__12GUSIOTSocketFv                # GUSIOTSocket::close()
+__ct__12GUSIOTSocketFP14GUSIOTStrategy         # GUSIOTSocket::GUSIOTSocket(GUSIOTStrategy*)
+__dt__Q212GUSIOTSocket4LockFv          # GUSIOTSocket::Lock::~Lock()
+MopupEvents__12GUSIOTSocketFv          # GUSIOTSocket::MopupEvents()
+CopyAddress__14GUSIOTStrategyFRC7TNetbufR7TNetbuf              # GUSIOTStrategy::CopyAddress(const TNetbuf&,TNetbuf&)
+__dt__14GUSIOTStrategyFv               # GUSIOTStrategy::~GUSIOTStrategy()
+CreateConfiguration__14GUSIOTStrategyFv                # GUSIOTStrategy::CreateConfiguration()
+socket__21GUSIOTDatagramFactoryFiii            # GUSIOTDatagramFactory::socket(int,int,int)
+socket__19GUSIOTStreamFactoryFiii              # GUSIOTStreamFactory::socket(int,int,int)
+Initialize__13GUSIOTFactoryFv          # GUSIOTFactory::Initialize()
+GUSIOTNotify
+__vt__15GUSIOTUdpSocket                # GUSIOTUdpSocket::__vt
+__vt__17GUSIOTUdpStrategy              # GUSIOTUdpStrategy::__vt
+__vt__15GUSIOTTcpSocket                # GUSIOTTcpSocket::__vt
+__vt__17GUSIOTTcpStrategy              # GUSIOTTcpStrategy::__vt
+__vt__18GUSIOTInetStrategy             # GUSIOTInetStrategy::__vt
+__vt__16GUSIOTUdpFactory               # GUSIOTUdpFactory::__vt
+__vt__16GUSIOTTcpFactory               # GUSIOTTcpFactory::__vt
+sInstance__16GUSIOTUdpFactory          # GUSIOTUdpFactory::sInstance
+sInstance__16GUSIOTTcpFactory          # GUSIOTTcpFactory::sInstance
+__dt__16GUSIOTTcpFactoryFv             # GUSIOTTcpFactory::~GUSIOTTcpFactory()
+__dt__16GUSIOTUdpFactoryFv             # GUSIOTUdpFactory::~GUSIOTUdpFactory()
+__dt__17GUSIOTTcpStrategyFv            # GUSIOTTcpStrategy::~GUSIOTTcpStrategy()
+__dt__15GUSIOTTcpSocketFv              # GUSIOTTcpSocket::~GUSIOTTcpSocket()
+__dt__17GUSIOTUdpStrategyFv            # GUSIOTUdpStrategy::~GUSIOTUdpStrategy()
+__dt__15GUSIOTUdpSocketFv              # GUSIOTUdpSocket::~GUSIOTUdpSocket()
+GUSIwithOTInetSockets
+GUSIwithOTUdpSockets
+GUSIwithOTTcpSockets
+ioctl__15GUSIOTUdpSocketFUiPc          # GUSIOTUdpSocket::ioctl(unsigned int,char*)
+setsockopt__15GUSIOTUdpSocketFiiPvUi           # GUSIOTUdpSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__15GUSIOTUdpSocketFiiPvPUi          # GUSIOTUdpSocket::getsockopt(int,int,void*,unsigned int*)
+Clone__15GUSIOTUdpSocketFv             # GUSIOTUdpSocket::Clone()
+ConfigPath__17GUSIOTUdpStrategyFv              # GUSIOTUdpStrategy::ConfigPath()
+ioctl__15GUSIOTTcpSocketFUiPc          # GUSIOTTcpSocket::ioctl(unsigned int,char*)
+setsockopt__15GUSIOTTcpSocketFiiPvUi           # GUSIOTTcpSocket::setsockopt(int,int,void*,unsigned int)
+getsockopt__15GUSIOTTcpSocketFiiPvPUi          # GUSIOTTcpSocket::getsockopt(int,int,void*,unsigned int*)
+Clone__15GUSIOTTcpSocketFv             # GUSIOTTcpSocket::Clone()
+ConfigPath__17GUSIOTTcpStrategyFv              # GUSIOTTcpStrategy::ConfigPath()
+DoIoctl__18GUSIOTMInetOptionsFPiUiPc           # GUSIOTMInetOptions::DoIoctl(int*,unsigned int,char*)
+DoSetSockOpt__18GUSIOTMInetOptionsFPiP9TEndpointiiPvUi         # GUSIOTMInetOptions::DoSetSockOpt(int*,TEndpoint*,int,int,void*,unsigned int)
+DoGetSockOpt__18GUSIOTMInetOptionsFPiP9TEndpointiiPvPUi                # GUSIOTMInetOptions::DoGetSockOpt(int*,TEndpoint*,int,int,void*,unsigned int*)
+UnpackAddress__18GUSIOTInetStrategyFRC7TNetbufPvPUi            # GUSIOTInetStrategy::UnpackAddress(const TNetbuf&,void*,unsigned int*)
+PackAddress__18GUSIOTInetStrategyFPCvUiR7TNetbufb              # GUSIOTInetStrategy::PackAddress(const void*,unsigned int,TNetbuf&,bool)
+socket__16GUSIOTUdpFactoryFiii         # GUSIOTUdpFactory::socket(int,int,int)
+Strategy__16GUSIOTUdpFactoryFiii               # GUSIOTUdpFactory::Strategy(int,int,int)
+Instance__16GUSIOTUdpFactoryFv         # GUSIOTUdpFactory::Instance()
+socket__16GUSIOTTcpFactoryFiii         # GUSIOTTcpFactory::socket(int,int,int)
+__dt__18GUSIOTInetStrategyFv           # GUSIOTInetStrategy::~GUSIOTInetStrategy()
+Strategy__16GUSIOTTcpFactoryFiii               # GUSIOTTcpFactory::Strategy(int,int,int)
+Instance__16GUSIOTTcpFactoryFv         # GUSIOTTcpFactory::Instance()
+__vt__11GUSIOTNetDB            # GUSIOTNetDB::__vt
+get__49GUSISpecificData<11GUSIhostent,&.GUSIKillHostEnt>FP17GUSISpecificTable          # GUSISpecificData<GUSIhostent, &.GUSIKillHostEnt>::get(GUSISpecificTable*)
+__dt__11GUSIOTNetDBFv          # GUSIOTNetDB::~GUSIOTNetDB()
+gethostid__11GUSIOTNetDBFv             # GUSIOTNetDB::gethostid()
+inet_ntoa__11GUSIOTNetDBF7in_addr              # GUSIOTNetDB::inet_ntoa(in_addr)
+gethostbyaddr__11GUSIOTNetDBFPCvUli            # GUSIOTNetDB::gethostbyaddr(const void*,unsigned long,int)
+gethostbyname__11GUSIOTNetDBFPCc               # GUSIOTNetDB::gethostbyname(const char*)
+Resolver__11GUSIOTNetDBFv              # GUSIOTNetDB::Resolver()
+Instantiate__11GUSIOTNetDBFv           # GUSIOTNetDB::Instantiate()
+__dt__49GUSISpecificData<11GUSIhostent,&.GUSIKillHostEnt>Fv            # GUSISpecificData<GUSIhostent, &.GUSIKillHostEnt>::~GUSISpecificData()
+__ct__11GUSIOTNetDBFv          # GUSIOTNetDB::GUSIOTNetDB()
+GUSIOTNetDBNotify
+__dc_arr
+__del_arr
+__new_arr
+__init_arr
+__copy
+__som_check_ev
+__som_check_new
+__vt__Q23std13bad_exception            # std::bad_exception::__vt
+__vt__Q23std9exception         # std::exception::__vt
+what__Q23std9exceptionCFv              # std::exception::what() const
+what__Q23std13bad_exceptionCFv         # std::bad_exception::what() const
+__end__catch
+__throw
+__dt__Q23std9exceptionFv               # std::exception::~exception()
+__unexpected
+__dt__Q23std13bad_exceptionFv          # std::bad_exception::~bad_exception()
+__unregister_fragment
+__register_fragment
+__global_destructor_chain
+__destroy_global_chain
+__register_global_object
+__destroy_new_array3
+__destroy_new_array2
+__destroy_new_array
+__destroy_arr
+__construct_array
+__dt__26__partial_array_destructorFv           # __partial_array_destructor::~__partial_array_destructor()
+__construct_new_array
+__throw_catch_compare
+unexpected__3stdFv             # std::unexpected()
+set_unexpected__3stdFPFv_v             # std::set_unexpected(void (*)(void))
+terminate__3stdFv              # std::terminate()
+set_terminate__3stdFPFv_v              # std::set_terminate(void (*)(void))
+__vt__Q23std8bad_cast          # std::bad_cast::__vt
+__vt__Q23std10bad_typeid               # std::bad_typeid::__vt
+what__Q23std10bad_typeidCFv            # std::bad_typeid::what() const
+what__Q23std8bad_castCFv               # std::bad_cast::what() const
+__dynamic_cast
+__dt__Q23std8bad_castFv                # std::bad_cast::~bad_cast()
+__get_typeid
+__dt__Q23std10bad_typeidFv             # std::bad_typeid::~bad_typeid()
+nothrow__3std          # std::nothrow
+__dla__FPvRCQ23std9nothrow_t           # operator delete[](void*,const std::nothrow_t&)
+__dl__FPvRCQ23std9nothrow_t            # operator delete(void*,const std::nothrow_t&)
+__dla__FPv             # operator delete[](void*)
+__nwa__FUlRCQ23std9nothrow_t           # operator new[](unsigned long,const std::nothrow_t&)
+__nwa__FUl             # operator new[](unsigned long)
+__dl__FPv              # operator delete(void*)
+__nw__FUlRCQ23std9nothrow_t            # operator new(unsigned long,const std::nothrow_t&)
+__nw__FUl              # operator new(unsigned long)
+__throws_bad_alloc__3std               # std::__throws_bad_alloc
+__vt__Q23std9bad_alloc         # std::bad_alloc::__vt
+__new_handler__3std            # std::__new_handler
+what__Q23std9bad_allocCFv              # std::bad_alloc::what() const
+__del_hdl
+__new_hdl
+set_new_handler__3stdFPFv_v            # std::set_new_handler(void (*)(void))
+__throw_bad_alloc__3stdFv              # std::__throw_bad_alloc()
+__dt__Q23std9bad_allocFv               # std::bad_alloc::~bad_alloc()
+qd
+exit
+clrscr
+getch
+kbhit
+SIOUXSetTitle
+__ttyname
+ReadCharsFromConsole
+WriteCharsToConsole
+RemoveConsole
+InstallConsole
+SIOUXHandleOneEvent
+SIOUXisinrange
+SIOUXDragRect
+SIOUXBigRect
+SIOUXSettings
+SIOUXTextWindow
+SIOUXState
+SIOUXUseWaitNextEvent
+SIOUXQuitting
+SIOUXselstart
+SIOUXDoMenuChoice
+SIOUXDoEditSelectAll
+SIOUXDoEditClear
+SIOUXDoEditPaste
+SIOUXDoEditCopy
+SIOUXDoEditCut
+SIOUXDoSaveText
+SIOUXUpdateMenuItems
+SIOUXSetupMenus
+SIOUXDoPrintText
+SIOUXDoPageSetup
+SIOUXYesNoCancelAlert
+SIOUXCantSaveAlert
+SIOUXSetupTextWindow
+SIOUXDoContentClick
+SIOUXMyGrowWindow
+SIOUXUpdateStatusLine
+MoveScrollBox
+SIOUXUpdateScrollbar
+SIOUXUpdateWindow
+SIOUXDrawGrowBox
+AdjustText
+SIOUXIsAppWindow
+__console_exit
+__stdio_exit
+__aborting
+__exit
+exit
+__atexit
+atexit
+fix_start
+vec_free
+vec_realloc
+vec_calloc
+vec_malloc
+__pool_free_all
+calloc
+realloc
+free
+malloc
+__msize
+deallocate_from_fixed_pools
+allocate_from_fixed_pools
+__files
+__flush_line_buffered_output_files
+__flush_all
+__close_all
+__init_file
+__find_unopened_file
+__llmod
+__lmod
+__mod
+__lldiv
+__ldiv
+__div
+__llmul
+__lmul
+__mul
+__lladd
+__ladd
+__add
+lldiv
+ldiv
+div
+llabs
+labs
+abs
+__assertion_failed
+bsearch
+setbuf
+setvbuf
+__flush_buffer
+__load_buffer
+__prep_buffer
+__convert_to_newlines
+__convert_from_newlines
+ccommand
+puts
+fputs
+putchar
+putc
+fputc
+__put_char
+__ungotten
+ungetc
+gets
+fgets
+getchar
+getc
+fgetc
+__get_char
+__ctype_map
+__lower_map
+__upper_map
+fwrite
+fread
+errno
+_splitpath
+_makepath
+_strrev
+_itow
+_itoa
+_strspnp
+_strnset
+_strset
+_strdate
+_strupr
+_wstrrev
+_strnicmp
+_stricmp
+_heapmin
+_gcvt
+_ultoa
+_strlwr
+_wcsspnp
+_wcsnset
+_wcsset
+_wcsrev
+_wcsnicmp
+_wcsicmp
+_wcsupr
+_wcslwr
+__temp_file_mode
+__set_idle_proc
+__get_file_modes
+__handle_reopen
+__handle_open
+__reopen
+freopen
+fopen
+fflush
+fclose
+tmpfile
+tmpnam
+__rename_file
+__delete_file
+__temp_file_name
+rewind
+fsetpos
+fseek
+_fseek
+fgetpos
+ftell
+_ftell
+__lconv
+localeconv
+setlocale
+wcstombs
+mbstowcs
+wctomb
+mbtowc
+mblen
+memcmp
+__memrchr
+memchr
+memset
+memmove
+memcpy
+__fill_mem
+__copy_longs_rev_unaligned
+__copy_longs_unaligned
+__copy_longs_rev_aligned
+__copy_longs_aligned
+__move_mem
+__copy_mem
+__stdio_atexit
+perror
+ferror
+feof
+clearerr
+__path2fss
+__sys_pointer_size
+__sys_free
+__sys_alloc
+sprintf
+snprintf
+vsprintf
+vsnprintf
+vfprintf
+vprintf
+fprintf
+printf
+__StringWrite
+__FileWrite
+qsort
+srand
+rand
+sscanf
+vsscanf
+vfscanf
+scanf
+fscanf
+__StringRead
+__FileRead
+__strerror
+strerror
+strstr
+strtok
+strcspn
+strspn
+strpbrk
+strrchr
+strxfrm
+strcoll
+strchr
+strncmp
+strcmp
+strncat
+strcat
+strncpy
+strcpy
+strlen
+atof
+strtod
+strtold
+__strtold
+atol
+atoi
+strtoll
+strtol
+strtoull
+strtoul
+__strtoull
+__strtoul
+system
+getenv
+__month_to_days
+strftime
+ctime
+asctime
+difftime
+clock
+__leap_year
+__to_gm_time
+__get_time
+__get_clock
+_fcntl
+_creat
+_open
+_mkdir
+_fstat
+_stat
+_write
+_unlink
+_ttyname
+_sleep
+_rmdir
+_read
+_lseek
+_isatty
+_getlogin
+_getcwd
+_exec
+_cuserid
+_close
+_chdir
+__new_umask
+_fileno
+_umask
+_ftype
+_fcreator
+_chmod
+__gettype
+__getcreator
+__ctopstring
+__system7present
+utimes
+_uname
+__float_nan
+__float_huge
+__double_min
+__double_max
+__double_epsilon
+__double_tiny
+__double_huge
+__double_nan
+__extended_min
+__extended_max
+__extended_epsilon
+__extended_tiny
+__extended_huge
+__extended_nan
+fwide
+fgetws
+fputws
+ungetwc
+fgetwc
+getwchar
+getwc
+fputwc
+putwchar
+putwc
+watof
+wcstod
+__wcstold
+watol
+watoi
+wcstoll
+wcstol
+wcstoull
+wcstoul
+__wcstoull
+__wcstoul
+wctrans
+towctrans
+__wctype_map
+__wlower_map
+__wupper_map
+iswctype
+wctype
+wctob
+wmemcmp
+wmemchr
+wmemset
+wmemmove
+wmemcpy
+vswprintf
+swprintf
+vfwprintf
+vwprintf
+fwprintf
+wprintf
+__wStringWrite
+__wFileWrite
+swscanf
+vswscanf
+vfwscanf
+vwscanf
+wscanf
+fwscanf
+__wStringRead
+__wFileRead
+wcsstr
+wcstok
+wcscspn
+wcsspn
+wcspbrk
+wcsrchr
+wcsxfrm
+wcscoll
+wcschr
+wcsncmp
+wcscmp
+wcsncat
+wcscat
+wcsncpy
+wcscpy
+wcslen
+wcsftime
+wctime
+wasctime
+__fminl
+__fmaxl
+__fdiml
+__nextafterl
+__remquol
+__copysignl
+__remainderl
+__fmodl
+__modfl
+__truncl
+llroundl
+lroundl
+__roundl
+llrintl
+lrintl
+__rintl
+__nearbyintl
+__floorl
+__ceill
+__lgammal
+__gammal
+__erfcl
+__erfl
+__hypotl
+__sqrtl
+__powl
+__fabsl
+scalblnl
+scalbnl
+__logbl
+__log2l
+__log1pl
+__expm1l
+__exp2l
+__log10l
+__logl
+__ldexpl
+__frexpl
+__expl
+__atanhl
+__asinhl
+__acoshl
+__tanhl
+__sinhl
+__coshl
+__tanl
+__sinl
+__cosl
+__atan2l
+__atanl
+__asinl
+__acosl
+fminf
+fmaxf
+fdimf
+remquof
+copysignf
+remainderf
+fmodf
+truncf
+llroundf
+lroundf
+roundf
+llrintf
+lrintf
+rintf
+nearbyintf
+floorf
+ceilf
+lgammaf
+gammaf
+erfcf
+erff
+hypotf
+sqrtf
+powf
+fabsf
+scalblnf
+scalbnf
+logbf
+log2f
+log1pf
+expm1f
+exp2f
+log10f
+logf
+ldexpf
+frexpf
+expf
+atanhf
+asinhf
+acoshf
+tanhf
+sinhf
+coshf
+tanf
+sinf
+cosf
+atan2f
+atanf
+asinf
+acosf
+nextafter
+llround
+lround
+llrint
+lrint
+scalbln
+scalbn
diff --git a/Mac/Build/PythonInterpreter.mcp b/Mac/Build/PythonInterpreter.mcp
new file mode 100644 (file)
index 0000000..e829252
Binary files /dev/null and b/Mac/Build/PythonInterpreter.mcp differ
diff --git a/Mac/Build/PythonStandSmall.mcp b/Mac/Build/PythonStandSmall.mcp
new file mode 100644 (file)
index 0000000..dd73e7a
Binary files /dev/null and b/Mac/Build/PythonStandSmall.mcp differ
diff --git a/Mac/Build/PythonStandalone.mcp b/Mac/Build/PythonStandalone.mcp
new file mode 100644 (file)
index 0000000..040ccaa
Binary files /dev/null and b/Mac/Build/PythonStandalone.mcp differ
diff --git a/Mac/Build/_dummy_tkinter.mcp b/Mac/Build/_dummy_tkinter.mcp
new file mode 100644 (file)
index 0000000..8ab7543
Binary files /dev/null and b/Mac/Build/_dummy_tkinter.mcp differ
diff --git a/Mac/Contrib/AECaptureParser/AECaptureParser.py b/Mac/Contrib/AECaptureParser/AECaptureParser.py
new file mode 100644 (file)
index 0000000..3d74f64
--- /dev/null
@@ -0,0 +1,362 @@
+'''
+AECaptureParser makes a brave attempt to convert the text output
+of the very handy Lasso Capture AE control panel
+into close-enough executable python code.
+
+In a roundabout way AECaptureParser offers the way to write lines of AppleScript
+and convert them to python code. Once Pythonised, the code can be made prettier,
+and it can run without Capture or Script Editor being open.
+
+You need Lasso Capture AE from Blueworld:
+ftp://ftp.blueworld.com/Lasso251/LassoCaptureAE.hqx
+
+Lasso Capture AE prints structured ascii representations in a small window.
+As these transcripts can be very complex, cut and paste to AECaptureParser, it parses and writes
+python code that will, when executed, cause the same events to happen.
+It's been tested with some household variety events, I'm sure there will be tons that
+don't work.
+
+All objects are converted to standard aetypes.ObjectSpecifier instances.
+
+How to use:
+       1. Start the Capture window
+       2. Cause the desired appleevent to happen
+               - by writing a line of applescript in Script Editor and running it (!)
+               - by recording some action in Script Editor and running it
+       3. Find the events in Capture:
+               - make sure you get the appropriate events, cull if necessary
+               - sometimes Capture barfs, just quit and start Capture again, run events again
+               - AECaptureParser can process multiple events - it will just make more code.
+       4. Copy and paste in this script and execute
+       5. It will print python code that, when executed recreates the events.
+
+Example:
+       For instance the following line of AppleScript in Script Editor
+                       tell application "Finder"
+                               return application processes
+                       end tell
+       will result in the following transcript:
+                       [event: target="Finder", class=core, id=getd]
+                       '----':obj {form:indx, want:type(pcap), seld:abso(«616C6C20»), from:'null'()}
+                       [/event]
+       Feed a string with this (and perhaps more) events to AECaptureParser
+       
+Some mysteries:
+       *       what is '&subj' - it is sent in an activate event:      &subj:'null'()
+               The activate event works when this is left out. A possibility?
+       *       needs to deal with embedded aliasses
+
+
+'''
+__version__ = '0.002'
+__author__ = 'evb'
+
+
+import string 
+
+opentag = '{'
+closetag = '}'
+
+
+
+import aetools
+import aetypes
+
+class eventtalker(aetools.TalkTo):
+       pass
+
+def processes():
+       '''Helper function to get the list of current processes and their creators
+       This code was mostly written by AECaptureParser! It ain't pretty, but that's not python's fault!'''
+       talker = eventtalker('MACS')
+       _arguments = {}
+       _attributes = {}
+       p = []
+       names = []
+       creators = []
+       results = []
+       # first get the list of process names
+       _arguments['----'] = aetypes.ObjectSpecifier(want=aetypes.Type('pcap'),
+                       form="indx", seld=aetypes.Unknown('abso', "all "), fr=None)
+       _reply, _arguments, _attributes = talker.send('core', 'getd', _arguments, _attributes)
+       if _arguments.has_key('errn'):
+               raise aetools.Error, aetools.decodeerror(_arguments)
+       if _arguments.has_key('----'):
+               p = _arguments['----']
+       for proc in p:
+               names.append(proc.seld)
+       # then get the list of process creators
+       _arguments = {}
+       _attributes = {}
+       AEobject_00 = aetypes.ObjectSpecifier(want=aetypes.Type('pcap'), form="indx", seld=aetypes.Unknown('abso', "all "), fr=None)
+       AEobject_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('fcrt'), fr=AEobject_00)
+       _arguments['----'] = AEobject_01
+       _reply, _arguments, _attributes = talker.send('core', 'getd', _arguments, _attributes)
+       if _arguments.has_key('errn'):
+               raise aetools.Error, aetools.decodeerror(_arguments)
+       if _arguments.has_key('----'):
+               p = _arguments['----']
+       for proc in p:
+               creators.append(proc.type)
+       # then put the lists together
+       for i in range(len(names)):
+               results.append((names[i], creators[i]))
+       return results
+
+               
+class AECaptureParser:
+       '''convert a captured appleevent-description into executable python code'''
+       def __init__(self, aetext):
+               self.aetext = aetext
+               self.events = []
+               self.arguments = {}
+               self.objectindex = 0
+               self.varindex = 0
+               self.currentevent =  {'variables':{}, 'arguments':{}, 'objects':{}}
+               self.parse()
+       
+       def parse(self):
+               self.lines = string.split(self.aetext, '\n')
+               for l in self.lines:
+                       if l[:7] == '[event:':
+                               self.eventheader(l)
+                       elif l[:7] == '[/event':
+                               if len(self.currentevent)<>0:
+                                       self.events.append(self.currentevent)
+                                       self.currentevent = {'variables':{}, 'arguments':{}, 'objects':{}}
+                                       self.objectindex = 0
+                       else:
+                               self.line(l)
+       
+       def line(self, value):
+               '''interpret literals, variables, lists etc.'''
+               # stuff in [  ], l ists
+               varstart = string.find(value, '[')
+               varstop = string.find(value, ']')
+               if varstart <> -1 and varstop <> -1 and varstop>varstart:
+                       variable = value[varstart:varstop+1]
+                       name = 'aevar_'+string.zfill(self.varindex, 2)
+                       self.currentevent['variables'][name] = variable
+                       value = value[:varstart]+name+value[varstop+1:]
+                       self.varindex = self.varindex + 1
+               # stuff in Â«  Â»
+               # these are 'ordinal' descriptors of 4 letter codes, so translate
+               varstart = string.find(value, '«')
+               varstop = string.find(value, '»')
+               if varstart <> -1 and varstop <> -1 and varstop>varstart:
+                       variable = value[varstart+1:varstop]
+                       t = ''
+                       for i in range(0, len(variable), 2):
+                               c = eval('0x'+variable[i : i+2])
+                               t = t + chr(c)
+                       
+                       name = 'aevar_'+string.zfill(self.varindex, 2)
+                       self.currentevent['variables'][name] = '"' + t + '"'
+                       value = value[:varstart]+name+value[varstop+1:]
+                       self.varindex = self.varindex + 1
+               pos = string.find(value, ':')
+               if pos==-1:return
+               ok = 1
+               while ok <> None:
+                       value, ok = self.parseobject(value)
+               self.currentevent['arguments'].update(self.splitparts(value, ':'))
+               
+               # remove the &subj argument?
+               if self.currentevent['arguments'].has_key('&subj'):
+                       del self.currentevent['arguments']['&subj']
+                       
+               # check for arguments len(a) < 4, and pad with spaces
+               for k in self.currentevent['arguments'].keys():
+                       if len(k)<4:
+                               newk = k + (4-len(k))*' '
+                               self.currentevent['arguments'][newk] = self.currentevent['arguments'][k]
+                               del self.currentevent['arguments'][k]
+
+       def parseobject(self, obj):
+               a, b = self.findtag(obj)
+               stuff = None
+               if a<>None and b<>None:
+                       stuff = obj[a:b]
+                       name = 'AEobject_'+string.zfill(self.objectindex, 2)
+                       self.currentevent['objects'][name] = self.splitparts(stuff, ':')
+                       obj = obj[:a-5] + name + obj[b+1:]
+                       self.objectindex = self.objectindex +1
+               return obj, stuff
+               
+       def nextopen(self, pos, text):
+               return string.find(text, opentag, pos)
+               
+       def nextclosed(self, pos, text):
+               return string.find(text, closetag, pos)
+       
+       def nexttag(self, pos, text):
+               start = self.nextopen(pos, text)
+               stop = self.nextclosed(pos, text)
+               if start == -1:
+                       if stop == -1:
+                               return -1, -1
+                       return 0, stop
+               if start < stop and start<>-1:
+                       return 1, start
+               else:
+                       return 0, stop
+                                       
+       def findtag(self, text):
+               p = -1
+               last = None,None
+               while 1:
+                       kind, p = self.nexttag(p+1, text)
+                       if last[0]==1 and kind==0:
+                               return last[1]+len(opentag), p
+                       if (kind, p) == (-1, -1):
+                               break
+                       last=kind, p
+               return None, None
+       
+       def splitparts(self, txt, splitter):
+               res = {}
+               parts = string.split(txt, ', ')
+               for p in parts:
+                       pos = string.find(p, splitter)
+                       key = string.strip(p[:pos])
+                       value = string.strip(p[pos+1:])
+                       res[key] = self.map(value)
+               return res
+               
+       def eventheader(self, hdr):
+               self.currentevent['event'] = self.splitparts(hdr[7:-1], '=')
+       
+       def printobject(self, d):
+               '''print one object as python code'''
+               t = []
+               obj = {}
+               obj.update(d)
+               t.append("aetypes.ObjectSpecifier(")
+               if obj.has_key('want'):
+                       t.append('want=' + self.map(obj['want']))
+                       del obj['want']
+                       t.append(', ')
+               if obj.has_key('form'):
+                       t.append('form=' + addquotes(self.map(obj['form'])))
+                       del obj['form']
+                       t.append(', ')
+               if obj.has_key('seld'):
+                       t.append('seld=' + self.map(obj['seld']))
+                       del obj['seld']
+                       t.append(', ')
+               if obj.has_key('from'):
+                       t.append('fr=' + self.map(obj['from']))
+                       del obj['from']
+               if len(obj.keys()) > 0:
+                       print '# ', `obj`                       
+               t.append(")")
+               return string.join(t, '')
+       
+       def map(self, t):
+               '''map some Capture syntax to python
+               matchstring : [(old, new), ... ]
+               '''
+               m = {
+                               'type(': [('type(', "aetypes.Type('"), (')', "')")],
+                               "'null'()": [("'null'()", "None")],
+                               'abso(': [('abso(', "aetypes.Unknown('abso', ")],
+                               '\96':    [('\96', '"')],
+                               '\94':    [('\94', '"')],
+                               '[':    [('[', '('), (', ', ',')],
+                               ']':    [(']', ')')],
+                               '«':    [('«', "«")],
+                               '»':    [('»', "»")],
+                               
+                       }
+               for k in m.keys():
+                       if string.find(t, k) <> -1:
+                               for old, new in m[k]:
+                                       p = string.split(t, old)
+                                       t = string.join(p, new)
+               return t
+               
+       def printevent(self, i):
+               '''print the entire captured sequence as python'''
+               evt = self.events[i]
+               code = []
+               code.append('\n# start event ' + `i` + ', talking to ' + evt['event']['target'])
+               # get the signature for the target application
+               code.append('talker = eventtalker("'+self.gettarget(evt['event']['target'])+'")')
+               code.append("_arguments = {}")
+               code.append("_attributes = {}")
+               # write the variables
+               for key, value in evt['variables'].items():
+                       value = evt['variables'][key]
+                       code.append(key + ' = ' + value)
+               # write the object in the right order
+               objkeys = evt['objects'].keys()
+               objkeys.sort()
+               for key in objkeys:
+                       value = evt['objects'][key]
+                       code.append(key + ' = ' + self.printobject(value))
+               # then write the arguments
+               for key, value in evt['arguments'].items():
+                       code.append("_arguments[" + addquotes(key) + "] = " + value )
+               code.append('_reply, _arguments, _attributes = talker.send("'+
+                               evt['event']['class']+'", "'+evt['event']['id']+'", _arguments, _attributes)')
+               code.append("if _arguments.has_key('errn'):")
+               code.append('\traise aetools.Error, aetools.decodeerror(_arguments)')   
+               code.append("if _arguments.has_key('----'):")
+               code.append("\tprint _arguments['----']")
+               code.append('# end event ' + `i`)
+               return string.join(code, '\n')
+       
+       def gettarget(self, target):
+               '''get the signature for the target application'''
+               target = target[1:-1]
+               if target == 'Finder':
+                       return "MACS"
+               apps = processes()
+               for name, creator in apps:
+                       if name == target:
+                               return creator
+               return '****'
+                       
+       def makecode(self):
+               code = []
+               code.append("\n\n")
+               code.append("# code generated by AECaptureParser v " + __version__)
+               code.append("# imports, definitions for all events")
+               code.append("import aetools")
+               code.append("import aetypes")
+               code.append("class eventtalker(aetools.TalkTo):")
+               code.append("\tpass")
+               code.append("# the events")
+               # print the events
+               for i in range(len(self.events)):
+                       code.append(self.printevent(i))
+               code.append("# end code")
+               return string.join(code, '\n')
+
+def addquotes(txt):
+       quotes = ['"', "'"]
+       if not txt[0] in quotes and not txt[-1] in quotes:
+               return '"'+txt+'"'
+       return txt 
+       
+       
+
+
+
+
+# ------------------------------------------
+#      the factory
+# ------------------------------------------
+
+# for instance, this event was captured from the Script Editor asking the Finder for a list of active processes.
+
+eventreceptacle = """
+
+[event: target="Finder", class=core, id=setd]
+'----':obj {form:prop, want:type(prop), seld:type(posn), from:obj {form:name, want:type(cfol), seld:\96MoPar:Data:DevDev:Python:Python 1.5.2c1:Extensions\94, from:'null'()}}, data:[100, 10]
+[/event]
+
+"""
+
+aet = AECaptureParser(eventreceptacle)
+print aet.makecode()
diff --git a/Mac/Contrib/BBPy.lm/BBPy.c b/Mac/Contrib/BBPy.lm/BBPy.c
new file mode 100644 (file)
index 0000000..bcb8d4e
--- /dev/null
@@ -0,0 +1,456 @@
+#include <AEDataModel.h>
+
+#define DEBUG 0
+
+#define kComponentSignatureString "BBPy.LM"                 
+#include <Debugging.h>
+
+
+#include <BBLMInterface.h>
+#include <BBXTInterface.h>
+//#include <BBLMTextIterator.h>
+
+#include <ctype.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#include <Sound.h>
+
+#if DEBUG
+void debugf_(const char* func,const char* fileName,long line, const char*fmt,...)
+{
+       va_list arg;
+       char msg[256];
+       va_start(arg, fmt);
+       vsnprintf(msg,256 ,fmt, arg);
+    DebugAssert(COMPONENT_SIGNATURE, DEBUG_NO_OPTIONS, kComponentSignatureString ": " , msg, nil, fileName, line, 0 );
+
+       //debug_string(msg);
+}
+#define debugf(FMT,...)  debugf_( __FUNCTION__,__FILE__, __LINE__,FMT,__VA_ARGS__);
+#else
+#define debugf(FMT,...) 
+#endif
+
+typedef const char *Str; 
+
+
+enum{
+       kPyBBLMStringSubst =  kBBLMFirstUserRunKind
+};
+
+#define iswordchar(x) (isalnum(x)||x=='_')
+
+
+struct runloc{
+       bool past_gap;
+       long pos;
+       long last_start;
+       unsigned char*p;
+};
+
+char start(struct runloc& r,BBLMParamBlock &pb)
+{
+       r.past_gap = false;
+       r.last_start = pb.fCalcRunParams.fStartOffset;
+       r.pos = pb.fCalcRunParams.fStartOffset;
+       r.p = ((unsigned char*)pb.fText) + pb.fCalcRunParams.fStartOffset;
+       // Adjust for the gap if weÕre not already past it.
+       if ((!r.past_gap) && (r.pos >= pb.fTextGapLocation)){
+               r.p += pb.fTextGapLength;
+               r.past_gap = true;
+       }
+       return *r.p;
+
+}
+
+char nextchar(struct runloc&r,BBLMParamBlock &pb)
+{
+       if ( r.pos< pb.fTextLength){
+               ++r.pos;
+               ++r.p;
+               if ((!r.past_gap) && (r.pos >= pb.fTextGapLocation)){
+                       r.p += pb.fTextGapLength;
+                       r.past_gap = true;
+               }
+               return *r.p;
+       }
+       else{
+               return 0;
+       }
+}
+
+bool addRun(BBLMRunCode kind, int  start,int len , const BBLMCallbackBlock& bblm_callbacks)
+{
+       if (len > 0){ // Tie off the code run we were in, unless the length is zero.
+               debugf("Run %d %d:%d", kind, start, start+len-1 );
+               return bblmAddRun(      &bblm_callbacks, 'Pyth',
+                                                       kind, start, len, false);
+                                                       
+       }
+       else{
+               return true;
+       }
+}                                      
+
+bool addRunBefore (BBLMRunCode kind,struct runloc& r, const BBLMCallbackBlock& bblm_callbacks)
+{
+       bool more_runs = addRun(kind, r.last_start, r.pos - r.last_start, bblm_callbacks);
+       r.last_start =  r.pos;
+       return more_runs;
+}
+
+bool addRunTo (BBLMRunCode kind, struct runloc& r, const BBLMCallbackBlock& bblm_callbacks)
+{
+       bool more_runs = addRun(kind, r.last_start, r.pos - r.last_start+1, bblm_callbacks);
+       r.last_start =  r.pos+1;
+       return more_runs;
+}
+
+
+bool colorstr( char delim,
+                               BBLMParamBlock &pb,
+                               struct runloc &r,
+                               const BBLMCallbackBlock &bblm_callbacks)
+{
+       bool tripple = false , pers = false, lookup = false, more_runs = true;
+       char c = nextchar(r,pb);
+
+       if (c == delim){
+               c = nextchar(r,pb);
+               if (c == delim){
+                       tripple = true;
+                       c = nextchar(r,pb);
+               }  
+               else{
+                       //double
+                       return addRunBefore(kBBLMRunIsSingleString,r,bblm_callbacks);
+               }       
+       }
+       while (c && more_runs){
+               if (pers ){
+                       if (isalpha(c)){
+                               more_runs = addRunTo(kPyBBLMStringSubst,r,bblm_callbacks);
+                       }
+                       else if (c == '('){
+                               lookup = true;
+                       }
+               }
+               pers = false;
+               if (c == delim){
+                       if (tripple){
+                               if ((c = nextchar(r,pb))== delim && (c = nextchar(r,pb)) == delim){
+                                       break; // end of tripple-quote.
+                               }  
+                       }
+                       else{
+                               break; // end of single-quote.
+                       }
+                       
+               }
+               else if (c== '\\'){
+                       nextchar(r,pb);
+               }
+               else if (c=='\r'||c=='\n'){
+                       if (!tripple){  
+                               break;
+                       }
+               }
+               else if (c=='%'){
+                       more_runs = addRunBefore(kBBLMRunIsSingleString,r,bblm_callbacks);
+                       pers = true;
+               }
+               else if (c==')' && lookup){
+                       more_runs = addRunTo(kPyBBLMStringSubst,r,bblm_callbacks);
+                       lookup = false;
+               }
+               c = nextchar(r,pb);
+       }
+       return more_runs && addRunTo(lookup?kPyBBLMStringSubst:kBBLMRunIsSingleString,r,bblm_callbacks);
+}
+
+bool colorcomment(BBLMParamBlock &pb,
+                               struct runloc &r,
+                               const BBLMCallbackBlock &bblm_callbacks)
+{
+       while (char c = nextchar(r,pb)){
+               if (c=='\r'|| c=='\n'){
+                       break;
+               }
+       }
+       return addRunTo(kBBLMRunIsLineComment,r,bblm_callbacks);
+}
+
+void CalculateRuns(BBLMParamBlock &pb,
+                       const BBLMCallbackBlock &bblm_callbacks)
+
+{
+       const struct rundesc    *state = NULL;
+       bool more_runs=true;
+               
+       struct runloc r;
+       
+       char c = start(r,pb);
+       
+       while (c && more_runs){
+       loop:
+               // Process a char
+               if (state==NULL){
+                       //If we're in the basic 'code' state, check for each interesting char (rundelims[i].start).
+                       switch (c){
+                       case '\'':
+                       case '"': 
+                               more_runs = addRunBefore(kBBLMRunIsCode,r,bblm_callbacks);
+                               if (more_runs){
+                                       more_runs = colorstr(c,pb,r,bblm_callbacks);
+                               }
+                               break;
+                       case '#' :
+                               more_runs = addRunBefore(kBBLMRunIsCode,r,bblm_callbacks);
+                               if (more_runs){
+                                       more_runs = colorcomment(pb,r,bblm_callbacks); 
+                               }
+                               break;
+                       default:
+                               break;
+                       }
+
+               }
+               c = nextchar(r,pb);
+       }
+       if (more_runs){
+               addRunBefore(kBBLMRunIsCode,r,bblm_callbacks);
+       }
+       
+
+}
+static void AdjustRange(BBLMParamBlock &params,
+                                               const BBLMCallbackBlock &callbacks)
+{      
+       DescType language;
+       BBLMRunCode kind;
+       SInt32 charPos;
+       SInt32 length;
+       UInt32 index = params.fAdjustRangeParams.fStartIndex;
+       
+       while(  index > 0 &&
+                       bblmGetRun(&callbacks, index, language, kind, charPos, length) &&
+                       (kind==kPyBBLMStringSubst||kind==kBBLMRunIsSingleString)){
+               index--;
+       };
+        params.fAdjustRangeParams.fStartIndex = index;
+}
+
+
+// The next couple funcs process the text of a file assumming it's in 1 piece in memory,
+// so they may not be called from CalculateRuns.
+
+bool matchword(BBLMParamBlock &pb, const char *pat ,unsigned long *pos)
+{      
+       const char *asciText = (const char *) (pb.fTextIsUnicode?NULL:pb.fText);
+
+       int i;
+       for (i=0; pat[i]; i++){
+               if (*pos+i>=pb.fTextLength){
+                       return false;
+               }
+               if (asciText[*pos+i] != pat[i]){
+                       return false;
+               }
+       }
+       if ((*pos+i<pb.fTextLength)&&iswordchar(asciText[*pos+i])){
+               return false;
+       }
+       *pos+=i;
+       return true;
+}      
+
+int matchindent(BBLMParamBlock &pb, UInt32 *pos)
+{      
+       const char *asciText = (const char *) (pb.fTextIsUnicode?NULL:pb.fText);
+       int indent=0;
+               
+       while(*pos<pb.fTextLength){
+               switch (/*(char)(pb.fTextIsUnicode?uniText[pos]:*/asciText[*pos]/*)*/){
+               case ' ':
+                       ++*pos;
+                       indent++;
+                       break;  
+               case '\t':
+                       ++*pos;         
+                       indent+=8;
+                       break;
+               case '#':
+                       return -1;
+                       break;
+               default:
+                       return indent;
+                       break;
+               }
+       }       
+}
+
+
+void eat_line(BBLMParamBlock &pb, unsigned long* pos)
+{
+       const char *asciText = (const char *) (pb.fTextIsUnicode?NULL:pb.fText);
+       while (asciText[*pos]!='\r' && asciText[*pos]!='\n' && *pos<pb.fTextLength) {++*pos;}
+       while ((asciText[*pos]=='\r' || asciText[*pos]=='\n') && *pos<pb.fTextLength) {++*pos;}
+
+}
+
+void addItem(BBLMParamBlock &pb, UInt32 pos, int nest, BBLMFunctionKinds kind,
+                       const BBLMCallbackBlock *bblm_callbacks)
+{
+       UInt32 funcstartpos = pos;
+       UInt32 funcnamelen=0;
+       UInt32 offset=0;
+       const char *asciText = (const char *) pb.fText;
+       UInt32 index;
+       OSErr err;
+       
+       while (isspace(asciText[pos]) && pos<pb.fTextLength) {++pos;}
+       UInt32 fnamestart = pos;
+       while ((isalnum(asciText[pos])||asciText[pos]=='_') && pos<pb.fTextLength) {pos++; funcnamelen++;}
+       
+       err = bblmAddTokenToBuffer(     bblm_callbacks, 
+                                                               pb.fFcnParams.fTokenBuffer,
+                                                               (void*)&asciText[fnamestart],
+                                                               funcnamelen,
+                                                               pb.fTextIsUnicode,
+                                                               &offset);
+       BBLMProcInfo procInfo; 
+       procInfo.fFunctionStart = fnamestart;   //      char offset in file of first character of function
+       procInfo.fFunctionEnd = pos;    //      char offset of last character of function
+       
+       procInfo.fSelStart = fnamestart;                //      first character to select when choosing function
+       procInfo.fSelEnd = pos;         //      last character to select when choosing function
+       
+       procInfo.fFirstChar = fnamestart;               //      first character to make visible when choosing function
+       
+       procInfo.fKind = kind;
+       
+       procInfo.fIndentLevel = nest;   //      indentation level of token
+       procInfo.fFlags = 0;                    //      token flags (see BBLMFunctionFlags)
+       procInfo.fNameStart = offset;           //      char offset in token buffer of token name
+       procInfo.fNameLength = funcnamelen;     //      length of token name
+                                                                                                                               
+       err = bblmAddFunctionToList(bblm_callbacks,     
+                                                               pb.fFcnParams.fFcnList,
+                                                               procInfo,
+                                                               &index);
+}
+
+
+
+enum{
+       maxnest=5
+};
+
+void ScanForFunctions(BBLMParamBlock &pb,
+                       const BBLMCallbackBlock &bblm_callbacks)
+{
+
+       const char *asciText = (const char *) (pb.fTextIsUnicode?NULL:pb.fText);
+       UniCharPtr uniText = (UniCharPtr) (pb.fTextIsUnicode?pb.fText:NULL);
+       
+       int indents[maxnest]= {0};
+       int nest = 0;
+       
+       UInt32 pos=0; // current character offset
+
+       
+       while (pos<pb.fTextLength){
+               
+               int indent = matchindent(pb, &pos);
+               
+               if (indent >= 0){
+                       for (int i=0; i <= nest; i++){
+                               if (indent<=indents[i]){
+                                       nest = i;
+                                       indents[nest]=indent;
+                                       goto x;
+                               }
+                       }
+                       indents[++nest]=indent;
+                       x:
+               
+                       if (matchword(pb,"def",&pos)){
+                               addItem( pb, pos, nest, kBBLMFunctionMark, &bblm_callbacks);
+                       }
+                       else if (matchword(pb, "class", &pos)){
+                               addItem( pb, pos, nest, kBBLMTypedef, &bblm_callbacks);
+                       }
+               }
+               eat_line(pb,&pos);
+       }
+       
+}
+
+OSErr main(    BBLMParamBlock &params,
+                       const BBLMCallbackBlock &bblm_callbacks,
+                       const BBXTCallbackBlock &bbxt_callbacks)
+{
+       OSErr result;
+
+       if ((params.fSignature != kBBLMParamBlockSignature) ||
+               (params.fLength < sizeof(BBLMParamBlock)))
+       {
+               return paramErr;
+       }
+       
+       switch (params.fMessage)
+       {
+               case kBBLMInitMessage:
+               case kBBLMDisposeMessage:
+               {
+                       result = noErr; // nothing to do
+                       break;
+               }
+               
+               case kBBLMCalculateRunsMessage:
+                       CalculateRuns(params, bblm_callbacks);
+                       result = noErr;
+                       break;
+
+               case kBBLMScanForFunctionsMessage:
+                       ScanForFunctions(params, bblm_callbacks);
+                       result = noErr;
+                       break;
+
+               case kBBLMAdjustRangeMessage:
+                       AdjustRange(params, bblm_callbacks);
+                       result = noErr;
+                       break;
+               
+               case kBBLMMapRunKindToColorCodeMessage:
+                       switch (params.fMapRunParams.fRunKind){
+                       case kPyBBLMStringSubst:
+                               params.fMapRunParams.fColorCode = kBBLMSGMLAttributeNameColor;
+                               params.fMapRunParams.fMapped =  true;
+                               break;  
+                       default:
+                               params.fMapRunParams.fMapped =  false;
+                       }
+                       result = noErr;
+                       break;
+
+               case kBBLMEscapeStringMessage:
+               case kBBLMAdjustEndMessage:
+               case kBBLMMapColorCodeToColorMessage:
+               case kBBLMSetCategoriesMessage:
+               case kBBLMMatchKeywordMessage:
+               {
+                       result = userCanceledErr;
+                       break;
+               }
+                       
+               default:
+               {
+                       result = paramErr;
+                       break;
+               }
+       }
+       return result;  
+}
\ No newline at end of file
diff --git a/Mac/Contrib/BBPy.lm/PythonBBLM.txt b/Mac/Contrib/BBPy.lm/PythonBBLM.txt
new file mode 100644 (file)
index 0000000..540060a
--- /dev/null
@@ -0,0 +1,12 @@
+This is the Python Language Module for BBEdit.
+
+This software is a plugin to  Bare Bones Software's BBEdit 6.0.2 (or more), designed to make editing & browsing Python Language files easer.
+
+It parses any file ending in .py (or extentions of your choice.) providing BBEdit with the information BBEdit needs to provide services for python files similar to those it provides for 'C'. Namely: syntax coloring and populating BBEdit's '\80' popup menu with file's functions and classes.
+
+This Plug-in needs to be placed in your :BBEdit 6.0:BBEdit Support:Language Modules: folder.
+
+If you wish, I have no objections to redistributing it in whole or in part, modify it, or beating small fury animals to death with rolled up printouts of the source code.
+
+Christopher Stern
+cistern@earthlink.net
\ No newline at end of file
diff --git a/Mac/Contrib/BBPy/PythonSlave.py b/Mac/Contrib/BBPy/PythonSlave.py
new file mode 100644 (file)
index 0000000..3014f7a
--- /dev/null
@@ -0,0 +1,129 @@
+"""PythonSlave.py
+An application that responds to three types of apple event: 
+       'pyth'/'EXEC':  execute direct parameter as Python
+       'aevt', 'quit': quit
+       'aevt', 'odoc': perform python scripts
+
+Copyright Â© 1996, Just van Rossum, Letterror
+"""
+
+__version__ = "0.1.3"
+
+import FrameWork
+import sys
+import traceback
+import aetools
+import string
+import AE
+import EasyDialogs
+import os
+import Qd
+from Types import *
+from Events import charCodeMask, cmdKey
+import MacOS
+import Evt
+
+def dummyfunc(): pass
+
+modulefilename = dummyfunc.func_code.co_filename
+
+def Interact(timeout = 50000000):                      # timeout after 10 days...
+       AE.AEInteractWithUser(timeout)
+
+
+class PythonSlave(FrameWork.Application):
+       def __init__(self):
+               FrameWork.Application.__init__(self)
+               AE.AEInstallEventHandler('pyth', 'EXEC', ExecHandler)
+               AE.AEInstallEventHandler('aevt', 'quit', QuitHandler)
+               AE.AEInstallEventHandler('aevt', 'odoc', OpenDocumentHandler)
+       
+       def makeusermenus(self):
+               self.filemenu = m = FrameWork.Menu(self.menubar, "File")
+               self._quititem = FrameWork.MenuItem(m, "Quit", "Q", self._quit)
+       
+       def do_kHighLevelEvent(self, event):
+               (what, message, when, where, modifiers) = event
+               try:
+                       AE.AEProcessAppleEvent(event)
+               except AE.Error, detail:
+                       print "Apple Event was not handled, error:", detail
+       
+       def do_key(self, event):
+               (what, message, when, where, modifiers) = event
+               c = chr(message & charCodeMask)
+               if modifiers & cmdKey and c == '.':
+                       return
+               FrameWork.Application.do_key(self, event)
+       
+       def idle(self, event):
+               Qd.InitCursor()
+       
+       def quit(self, *args):
+               raise self
+       
+       def getabouttext(self):
+               return "About PythonSlave\83"
+       
+       def do_about(self, id, item, window, event):
+               EasyDialogs.Message("PythonSlave " + __version__ + "\rCopyright Â© 1996, Letterror, JvR")
+       
+
+def ExecHandler(theAppleEvent, theReply):
+       parameters, args = aetools.unpackevent(theAppleEvent)
+       if parameters.has_key('----'):
+               if parameters.has_key('NAME'):
+                       print '--- executing "' + parameters['NAME'] + '" ---'
+               else:
+                       print '--- executing "<unknown>" ---'
+               stuff = parameters['----']
+               MyExec(stuff + "\n")                    # execute input
+               print '--- done ---'
+       return 0
+
+def MyExec(stuff):
+       stuff = string.splitfields(stuff, '\r') # convert return chars
+       stuff = string.joinfields(stuff, '\n')  # to newline chars
+       Interact()
+       saveyield = MacOS.EnableAppswitch(1)
+       try:
+               exec stuff in {}
+       except:
+               MacOS.EnableAppswitch(saveyield)
+               traceback.print_exc()
+       MacOS.EnableAppswitch(saveyield)
+
+def OpenDocumentHandler(theAppleEvent, theReply):
+       parameters, args = aetools.unpackevent(theAppleEvent)
+       docs = parameters['----']
+       if type(docs) <> ListType:
+               docs = [docs]
+       for doc in docs:
+               fss, a = doc.Resolve()
+               path = fss.as_pathname()
+               if path <> modulefilename:
+                       MyExecFile(path)
+       return 0
+
+def MyExecFile(path):
+       saveyield = MacOS.EnableAppswitch(1)
+       savewd = os.getcwd()
+       os.chdir(os.path.split(path)[0])
+       print '--- Executing file "' + os.path.split(path)[1] + '"'
+       try:
+               execfile(path, {"__name__": "__main__"})
+       except:
+               traceback.print_exc()
+               MacOS.EnableAppswitch(saveyield)
+       MacOS.EnableAppswitch(saveyield)
+       os.chdir(savewd)
+       print "--- done ---"
+
+def QuitHandler(theAppleEvent, theReply):
+       slave.quit()
+       return 0
+
+
+slave = PythonSlave()
+print "PythonSlave", __version__, "ready."
+slave.mainloop()
diff --git a/Mac/Contrib/PythonScript/ReadMe.txt b/Mac/Contrib/PythonScript/ReadMe.txt
new file mode 100644 (file)
index 0000000..455f12a
--- /dev/null
@@ -0,0 +1,86 @@
+
+PythonScript
+------------
+v0.5 beta 1 24/04/98
+
+author: Bill Bedford, <billb@mousa.demon.co.uk>
+
+This suite of modules is a first attempt at writing a more user friendly 
+python/appleevent interface. The files in the suite are:
+
+PythonScript
+------------
+
+Loads three dictionaries generated by getaete into __dict__'s of three 
+classes and thus gives us direct assess to all the methods in the aete.  
+Each method now contains all the information needed to build apple events.
+
+The general usage is
+
+>>>PythonScript.PsScript(SIGNATURE, TIMEOUT, IGNORING) 
+
+where 
+SIGNATURE is the target application
+TIMEOUT is in ticks
+and IGNORING is a boolean and determines whether the script waits for a reply 
+from the target before going on to the next event 
+
+>>>PythonScript.PyScript(Event, Object, keywdarg1..., keywdarg2...etc)
+
+Object is a appleevent object specifier and is of the form
+
+PythonScript.PsClass.Class1(arg).Class2(arg)\83.Property()
+
+All applescript event, class and property names are capitalised to 
+distinguish them from python methods.
+
+getaete
+-------
+
+Reads the aete of the target application and returns it as a list of three 
+dictionaries, which represent all the events, properties and enumeration in 
+the aete.  (the fourth dictionary, comparisons, has never been implemented 
+in applescript so I have not used it) It also reads the applescript aeut 
+and adds any suites that are missing (ie where the application author has 
+set his suite to inherit from the aeut.)  and the applescript suite, which 
+gives the language methods
+
+printaete
+---------
+
+Produces a text file with the aete set out in a human readable form, 
+similar to the Open Dictionary command in the applescript editor.
+
+
+baetools, baepack, baetypes
+---------------------------
+
+These are direct equivalents of aetools, aepack, aetypes in the standard 
+distribution.  Some methods and classes have been enhanced others are 
+redundant
+
+PyScriptTest, testeudora
+------------------------
+
+A couple of test scripts.  Testeudora is an updated version of the one in 
+the standard distribution.
+        
+        
+        
+        
+        
+Still To Do (in no particular order)
+-----------
+
+These modules are much slower than applescript.  I believe they could be 
+made faster by rewriting the aete parser in getaete and/or by putting in 
+some form of persistent storage so that the class dictionaries can be cached.
+        
+The parsing of the appleevent replies need rewriting.
+
+Support for the use of scripting additions.
+
+A Python aeut needs to be written, much of the applescript one is redundant 
+in python.
+
+Probably a few other things I haven't thought of yet.
diff --git a/Mac/Demo/applescript/Disk_Copy/Special_Events.py b/Mac/Demo/applescript/Disk_Copy/Special_Events.py
new file mode 100644 (file)
index 0000000..a98eb8a
--- /dev/null
@@ -0,0 +1,424 @@
+"""Suite Special Events: Commands for mounting Disk Copy images
+Level 1, version 1
+
+Generated from Macintosh HD:Hulpprogramma's:Disk Copy
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'ddsk'
+
+class Special_Events_Events:
+
+       _argmap_mount = {
+               'access_mode' : 'Acss',
+               'checksum_verification' : 'VChk',
+               'signature_verification' : 'VSig',
+               'RAM_caching' : 'Cach',
+       }
+
+       def mount(self, _object, _attributes={}, **_arguments):
+               """mount: Mounts an Disk Copy image as a disk volume
+               Required argument: a reference to the disk image to be mounted
+               Keyword argument access_mode: the access mode for mounted volume (default is "any", i.e. best possible)
+               Keyword argument checksum_verification: Verify the checksum before mounting?
+               Keyword argument signature_verification: Verify the DigiSign\8e signature before mounting?
+               Keyword argument RAM_caching: Cache the disk image in RAM? (if omitted, don't cache)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a reference to mounted disk
+               """
+               _code = 'ddsk'
+               _subcode = 'Moun'
+
+               aetools.keysubst(_arguments, self._argmap_mount)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'Acss', _Enum_Acss)
+               aetools.enumsubst(_arguments, 'VChk', _Enum_bool)
+               aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+               aetools.enumsubst(_arguments, 'Cach', _Enum_bool)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_execute_DiskScript = {
+               'checksum_verification' : 'VChk',
+               'signature_verification' : 'VSig',
+       }
+
+       def execute_DiskScript(self, _object, _attributes={}, **_arguments):
+               """execute DiskScript: Executes a Disk Copy-specific DiskScript
+               Required argument: a reference to the DiskScript to execute
+               Keyword argument checksum_verification: Should checksums be verified when mounting images referenced in the DiskScript?
+               Keyword argument signature_verification: Should the DigiSign\8e signature of the DiskScript and the images it references be verified?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ddsk'
+               _subcode = 'XEQd'
+
+               aetools.keysubst(_arguments, self._argmap_execute_DiskScript)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'VChk', _Enum_bool)
+               aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def unmount(self, _object, _attributes={}, **_arguments):
+               """unmount: Unmount and eject (if necessary) a volume
+               Required argument: a reference to disk to be unmounted (and ejected)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ddsk'
+               _subcode = 'Umnt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_create = {
+               'saving_as' : 'SvAs',
+               'logical_blocks' : 'Blks',
+               'zeroing' : 'Zero',
+               'leave_image_mounted' : 'Moun',
+               'filesystem' : 'Fsys',
+       }
+
+       def create(self, _object, _attributes={}, **_arguments):
+               """create: Create a new Disk Copy document
+               Required argument: the name of the volume to create
+               Keyword argument saving_as: the disk image to be created
+               Keyword argument logical_blocks: the number of logical blocks
+               Keyword argument zeroing: Should all blocks on the disk be set to zero?
+               Keyword argument leave_image_mounted: Should the image be mounted after it is created?
+               Keyword argument filesystem: file system to use (Mac OS Standard/compatible, Mac OS Enhanced)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a reference to newly created disk image (or newly mounted disk)
+               """
+               _code = 'ddsk'
+               _subcode = 'Crea'
+
+               aetools.keysubst(_arguments, self._argmap_create)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'SvAs', _Enum_fss_)
+               aetools.enumsubst(_arguments, 'Blks', _Enum_long)
+               aetools.enumsubst(_arguments, 'Zero', _Enum_bool)
+               aetools.enumsubst(_arguments, 'Moun', _Enum_bool)
+               aetools.enumsubst(_arguments, 'Fsys', _Enum_Fsys)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def verify_checksum(self, _object, _attributes={}, **_arguments):
+               """verify checksum: Verify the checksum of a Disk Copy 4.2 or a Disk Copy 6.0 read-only document
+               Required argument: the disk image to be verified
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the result of the checksum verification
+               """
+               _code = 'ddsk'
+               _subcode = 'Vcrc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def verify_signature(self, _object, _attributes={}, **_arguments):
+               """verify signature: Verify the DigiSign\8e signature for a Disk Copy document
+               Required argument: the disk image to be verified
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Is the DigiSign\8e signature valid?
+               """
+               _code = 'ddsk'
+               _subcode = 'Vsig'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_sign_image = {
+               'using_signer' : 'Sinr',
+       }
+
+       def sign_image(self, _object, _attributes={}, **_arguments):
+               """sign image: Add a DigiSign\8e signature to a Disk Copy document
+               Required argument: the disk image to be signed
+               Keyword argument using_signer: a reference to signer file to use
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ddsk'
+               _subcode = 'Asig'
+
+               aetools.keysubst(_arguments, self._argmap_sign_image)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'Sinr', _Enum_alis)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_create_a_floppy_from = {
+               'signature_verification' : 'VSig',
+               'erase_confirmation' : 'Cfrm',
+               'make_multiple_floppies' : 'Mult',
+       }
+
+       def create_a_floppy_from(self, _object, _attributes={}, **_arguments):
+               """create a floppy from: create a floppy disk from a Disk Copy document
+               Required argument: the disk image to make a floppy from
+               Keyword argument signature_verification: Should the DigiSign\8e signature be verified before creating a floppy disk?
+               Keyword argument erase_confirmation: Should the user be asked to confirm the erasure of the previous contents of floppy disks?
+               Keyword argument make_multiple_floppies: Should the user be prompted to create multiple floppy disks?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ddsk'
+               _subcode = 'Bfpy'
+
+               aetools.keysubst(_arguments, self._argmap_create_a_floppy_from)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+               aetools.enumsubst(_arguments, 'Cfrm', _Enum_bool)
+               aetools.enumsubst(_arguments, 'Mult', _Enum_bool)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_check_image = {
+               'details' : 'ChDe',
+       }
+
+       def check_image(self, _object, _attributes={}, **_arguments):
+               """check image: Check the disk imageÕs internal data structures for any inconsistencies.  Works on NDIF, Disk Copy 4.2, DART\8e, or DiskSet images.
+               Required argument: the disk image to be verified
+               Keyword argument details: Should the disk image details be displayed?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a record containing a boolean (true/false) value if the image passes consistency tests, and the numbers of warnings and errors
+               """
+               _code = 'ddsk'
+               _subcode = 'Chek'
+
+               aetools.keysubst(_arguments, self._argmap_check_image)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'ChDe', _Enum_bool)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_segment_image = {
+               'segment_count' : 'SGCT',
+               'segment_size' : 'SGSZ',
+               'segment_name' : 'SGNM',
+               'image_ID' : 'SGID',
+       }
+
+       def segment_image(self, _object, _attributes={}, **_arguments):
+               """segment image: Segment a NDIF R/W or R/O image into smaller pieces
+               Required argument: the disk image to be segmented
+               Keyword argument segment_count: the number of image segments to create
+               Keyword argument segment_size: the size of image segments (in blocks) to create
+               Keyword argument segment_name: the root name for each image segment file
+               Keyword argument image_ID: string used to generate a unique image ID to group the segments
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a list of references to the image segments created
+               """
+               _code = 'ddsk'
+               _subcode = 'SGMT'
+
+               aetools.keysubst(_arguments, self._argmap_segment_image)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_create_SMI = {
+               'source_images' : 'SMI1',
+               'launching_application' : 'SMI2',
+               'launching_document' : 'SMI3',
+               'version_string' : 'SMI4',
+               'checksum_verification' : 'VChk',
+               'signature_verification' : 'VSig',
+               'image_signing' : 'SImg',
+       }
+
+       def create_SMI(self, _object, _attributes={}, **_arguments):
+               """create SMI: Creates a self-mounting image (SMI) from a list of NDIF disk images
+               Required argument: the self-mounting image to create
+               Keyword argument source_images: a list of references to sources images
+               Keyword argument launching_application: the path to an application to launch
+               Keyword argument launching_document: the path to a document to open
+               Keyword argument version_string: sets the 'vers' 1 resource of the self-mounting image
+               Keyword argument checksum_verification: Should the checksum of the source images be verified before creating the SMI?
+               Keyword argument signature_verification: Should the DigiSign\8e signature of the source images be verified before creating the SMI?
+               Keyword argument image_signing: Should the SMI be given a digital signature when it is created?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a reference to the self-mounting image created
+               """
+               _code = 'ddsk'
+               _subcode = 'MSMI'
+
+               aetools.keysubst(_arguments, self._argmap_create_SMI)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'VChk', _Enum_bool)
+               aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+               aetools.enumsubst(_arguments, 'SImg', _Enum_bool)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class Verify_Checksum_reply_record(aetools.ComponentItem):
+       """Verify Checksum reply record -  """
+       want = 'Rcrc'
+class validity(aetools.NProperty):
+       """validity - true if checksum is valid """
+       which = 'Vlid'
+       want = 'bool'
+class expected_checksum(aetools.NProperty):
+       """expected checksum - checksum value stored in the image header (in hexadecimal) """
+       which = 'crcE'
+       want = 'TEXT'
+class calculated_checksum(aetools.NProperty):
+       """calculated checksum - checksum value actually calculated (in hexadecimal) """
+       which = 'crcA'
+       want = 'TEXT'
+
+class Check_Image_reply_record(aetools.ComponentItem):
+       """Check Image reply record -  """
+       want = 'Rchk'
+class consistency(aetools.NProperty):
+       """consistency - Does the image pass consistency checks? """
+       which = 'Rch1'
+       want = 'bool'
+class error_count(aetools.NProperty):
+       """error count - the number of errors recorded """
+       which = 'Rch2'
+       want = 'long'
+class warning_count(aetools.NProperty):
+       """warning count - the number of warnings recorded """
+       which = 'Rch3'
+       want = 'long'
+Verify_Checksum_reply_record._propdict = {
+       'validity' : validity,
+       'expected_checksum' : expected_checksum,
+       'calculated_checksum' : calculated_checksum,
+}
+Verify_Checksum_reply_record._elemdict = {
+}
+Check_Image_reply_record._propdict = {
+       'consistency' : consistency,
+       'error_count' : error_count,
+       'warning_count' : warning_count,
+}
+Check_Image_reply_record._elemdict = {
+}
+_Enum_Acss = {
+       'read_and_write' : 'RdWr',      # read/write access
+       'read_only' : 'Rdxx',   # read-only access
+       'any' : 'Anyx', # best possible access
+}
+
+_Enum_Fsys = {
+       'Mac_OS_Standard' : 'Fhfs',     # classic HFS file system
+       'compatible_Mac_OS_Extended' : 'Fhf+',  # new HFS+ file system
+}
+
+_Enum_alis = None # XXXX enum alis not found!!
+_Enum_fss_ = None # XXXX enum fss  not found!!
+_Enum_long = None # XXXX enum long not found!!
+_Enum_bool = None # XXXX enum bool not found!!
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'Rchk' : Check_Image_reply_record,
+       'Rcrc' : Verify_Checksum_reply_record,
+}
+
+_propdeclarations = {
+       'crcE' : expected_checksum,
+       'Rch2' : error_count,
+       'crcA' : calculated_checksum,
+       'Rch3' : warning_count,
+       'Vlid' : validity,
+       'Rch1' : consistency,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'Acss' : _Enum_Acss,
+       'Fsys' : _Enum_Fsys,
+}
diff --git a/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py b/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py
new file mode 100644 (file)
index 0000000..931246e
--- /dev/null
@@ -0,0 +1,477 @@
+"""Suite Standard Suite: Common terms for most applications
+Level 1, version 1
+
+Generated from Macintosh HD:Hulpprogramma's:Disk Copy
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'Core'
+
+class Standard_Suite_Events:
+
+       _argmap_save = {
+               '_in' : 'kfil',
+               'using_format' : 'SvAs',
+               'checksum_verification' : 'VChk',
+               'signature_verification' : 'VSig',
+               'image_signing' : 'SImg',
+               'leave_image_mounted' : 'Moun',
+               'percent_free_space' : 'Slop',
+               'logical_blocks' : 'Blks',
+               'zeroing' : 'Zero',
+       }
+
+       def save(self, _object, _attributes={}, **_arguments):
+               """save: Save an object
+               Required argument: the source object
+               Keyword argument _in: the target object
+               Keyword argument using_format: the format for the target
+               Keyword argument checksum_verification: Should the checksum be verified before saving?
+               Keyword argument signature_verification: Should the DigiSign\8e signature be verified before saving?
+               Keyword argument image_signing: Should the image be signed?
+               Keyword argument leave_image_mounted: Should the image be mounted after saving?
+               Keyword argument percent_free_space: percent free space to reserve (for image folder operation, 0-255%)
+               Keyword argument logical_blocks: number of logical blocks in the image (for image folder operation)
+               Keyword argument zeroing: Should all the blocks in the image be set to zeros? (for image folder operation)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the result of the save operation
+               """
+               _code = 'core'
+               _subcode = 'save'
+
+               aetools.keysubst(_arguments, self._argmap_save)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'kfil', _Enum_obj_)
+               aetools.enumsubst(_arguments, 'SvAs', _Enum_SvAs)
+               aetools.enumsubst(_arguments, 'VChk', _Enum_bool)
+               aetools.enumsubst(_arguments, 'VSig', _Enum_bool)
+               aetools.enumsubst(_arguments, 'SImg', _Enum_bool)
+               aetools.enumsubst(_arguments, 'Moun', _Enum_bool)
+               aetools.enumsubst(_arguments, 'Slop', _Enum_long)
+               aetools.enumsubst(_arguments, 'Blks', _Enum_long)
+               aetools.enumsubst(_arguments, 'Zero', _Enum_bool)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def do_script(self, _object, _attributes={}, **_arguments):
+               """do script: Execute an attached script located in the folder "Scripts"
+               Required argument: the script to be executed
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'dosc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class application(aetools.ComponentItem):
+       """application - The Disk Copy application """
+       want = 'capp'
+class version(aetools.NProperty):
+       """version - the version of this application """
+       which = 'vers'
+       want = 'vers'
+class name(aetools.NProperty):
+       """name - the name of this application """
+       which = 'pnam'
+       want = 'TEXT'
+class comment(aetools.NProperty):
+       """comment - the comment associated with the application """
+       which = 'comt'
+       want = 'TEXT'
+class driver_version(aetools.NProperty):
+       """driver version - the version of the disk image driver """
+       which = 'dVer'
+       want = 'vers'
+class nonejectable_mode(aetools.NProperty):
+       """nonejectable mode - Should mounted images be non-ejectable? """
+       which = 'otto'
+       want = 'bool'
+class save_log_file(aetools.NProperty):
+       """save log file - Should the log file be saved on disk? """
+       which = 'PSaL'
+       want = 'bool'
+class use_speech(aetools.NProperty):
+       """use speech - Should Disk Copy use spoken feedback? """
+       which = 'PTlk'
+       want = 'bool'
+class smart_Save_As(aetools.NProperty):
+       """smart Save As - Should the Save As... dialog box automatically go to the right folder? """
+       which = 'PSSP'
+       want = 'bool'
+class checksum_verification(aetools.NProperty):
+       """checksum verification - Should image checksums be verified? """
+       which = 'PVeC'
+       want = 'bool'
+class signature_verification(aetools.NProperty):
+       """signature verification - Should digital signatures be verified? """
+       which = 'PVeS'
+       want = 'bool'
+class exclude_DiskScripts(aetools.NProperty):
+       """exclude DiskScripts - Should images referenced in DiskScripts/DiskSets be excluded from verification? """
+       which = 'PExD'
+       want = 'bool'
+class exclude_remote_images(aetools.NProperty):
+       """exclude remote images - Should images that are located on network volumes be excluded from verification? """
+       which = 'PExR'
+       want = 'bool'
+class image_signing(aetools.NProperty):
+       """image signing - Should images be signed with a digital signature? """
+       which = 'PSiI'
+       want = 'bool'
+class leave_image_mounted(aetools.NProperty):
+       """leave image mounted - Should images be mounted after they are created? """
+       which = 'PMoA'
+       want = 'bool'
+class erase_confirmation(aetools.NProperty):
+       """erase confirmation - Should the user be required to confirm commands that erase disks? """
+       which = 'PCoE'
+       want = 'bool'
+class zeroing(aetools.NProperty):
+       """zeroing - Should all blocks of a new image be set to zero? """
+       which = 'PZeB'
+       want = 'bool'
+class default_create_size(aetools.NProperty):
+       """default create size - the default size for a new image, in blocks (512 bytes per block) """
+       which = 'PDeS'
+       want = 'long'
+class default_create_name(aetools.NProperty):
+       """default create name - the default volume name for a new image """
+       which = 'PDeN'
+       want = 'TEXT'
+class make_multiple_floppies(aetools.NProperty):
+       """make multiple floppies - Should the user be prompted to make multiple floppy disk images at a time? """
+       which = 'PBuM'
+       want = 'bool'
+class auto_image_upon_insert(aetools.NProperty):
+       """auto image upon insert - Should a newly-inserted disk automatically be processed into an image? """
+       which = 'Paim'
+       want = 'bool'
+class eject_after_auto_image(aetools.NProperty):
+       """eject after auto image - Should auto-imaged disks be ejected afterwards? """
+       which = 'Pejc'
+       want = 'bool'
+class auto_copy_upon_floppy_insert(aetools.NProperty):
+       """auto copy upon floppy insert - Instead of auto-imaging, should newly-inserted floppy disks be copied? """
+       which = 'Pcpf'
+       want = 'bool'
+class volume_suffix(aetools.NProperty):
+       """volume suffix - the default volume name suffix """
+       which = 'PDiE'
+       want = 'TEXT'
+class image_suffix(aetools.NProperty):
+       """image suffix - the default image name suffix """
+       which = 'PImE'
+       want = 'TEXT'
+class default_file_system(aetools.NProperty):
+       """default file system - the default file system type for new blank images """
+       which = 'Pfsy'
+       want = 'Fsys'
+class default_image_format(aetools.NProperty):
+       """default image format - the default image file format """
+       which = 'Pdfm'
+       want = 'SvAs'
+
+class disk(aetools.ComponentItem):
+       """disk - A mounted volume """
+       want = 'Disk'
+
+name = name
+
+comment = comment
+class locked(aetools.NProperty):
+       """locked - Is the disk locked? """
+       which = 'islk'
+       want = 'bool'
+class creation_date(aetools.NProperty):
+       """creation date - the creation date of disk """
+       which = 'ascd'
+       want = 'ldt '
+class modification_date(aetools.NProperty):
+       """modification date - the modification date of disk """
+       which = 'asmo'
+       want = 'ldt '
+class crc32_checksum(aetools.NProperty):
+       """crc32 checksum - the crc-32 checksum of the disk """
+       which = 'Xcrc'
+       want = 'TEXT'
+class disk_copy_4_2e_2_checksum(aetools.NProperty):
+       """disk copy 4.2 checksum - the Disk Copy 4.2 checksum of the disk """
+       which = 'Xc42'
+       want = 'TEXT'
+class block_count(aetools.NProperty):
+       """block count - the number of blocks on disk """
+       which = 'Xblk'
+       want = 'long'
+class file_system(aetools.NProperty):
+       """file system - the file system used on disk """
+       which = 'Xfsi'
+       want = 'TEXT'
+
+class folder(aetools.ComponentItem):
+       """folder - A folder or directory on a disk """
+       want = 'Fold'
+
+name = name
+
+comment = comment
+
+creation_date = creation_date
+
+modification_date = modification_date
+
+class disk_image(aetools.ComponentItem):
+       """disk image - A disk image file """
+       want = 'DImg'
+
+name = name
+
+comment = comment
+
+locked = locked
+
+creation_date = creation_date
+
+modification_date = modification_date
+class file_format(aetools.NProperty):
+       """file format - the format of the disk image file """
+       which = 'Ifmt'
+       want = 'TEXT'
+class signed(aetools.NProperty):
+       """signed - Does the disk image have a DigiSign\8e signature? """
+       which = 'Isin'
+       want = 'bool'
+class compressed(aetools.NProperty):
+       """compressed - Is the disk image compressed? """
+       which = 'Icom'
+       want = 'bool'
+class segmented(aetools.NProperty):
+       """segmented - Is the disk image segmented? """
+       which = 'Iseg'
+       want = 'bool'
+class segments(aetools.NProperty):
+       """segments - a list of references to other segments that make up a complete image """
+       which = 'Isg#'
+       want = 'fss '
+class disk_name(aetools.NProperty):
+       """disk name - the name of the disk this image represents """
+       which = 'Idnm'
+       want = 'TEXT'
+
+crc32_checksum = crc32_checksum
+
+disk_copy_4_2e_2_checksum = disk_copy_4_2e_2_checksum
+
+block_count = block_count
+
+file_system = file_system
+class data_fork_size(aetools.NProperty):
+       """data fork size - the size (in bytes) of the data fork of the disk image """
+       which = 'Idfk'
+       want = 'long'
+class resource_fork_size(aetools.NProperty):
+       """resource fork size - the size (in bytes) of the resource fork of the disk image """
+       which = 'Irfk'
+       want = 'long'
+
+class Save_reply_record(aetools.ComponentItem):
+       """Save reply record - Result from the save operation """
+       want = 'cpyR'
+class resulting_target_object(aetools.NProperty):
+       """resulting target object - a reference to the target object after it has been saved """
+       which = 'rcpO'
+       want = 'obj '
+class copy_type(aetools.NProperty):
+       """copy type - the way in which the target object was saved """
+       which = 'rcpT'
+       want = 'rcpT'
+application._propdict = {
+       'version' : version,
+       'name' : name,
+       'comment' : comment,
+       'driver_version' : driver_version,
+       'nonejectable_mode' : nonejectable_mode,
+       'save_log_file' : save_log_file,
+       'use_speech' : use_speech,
+       'smart_Save_As' : smart_Save_As,
+       'checksum_verification' : checksum_verification,
+       'signature_verification' : signature_verification,
+       'exclude_DiskScripts' : exclude_DiskScripts,
+       'exclude_remote_images' : exclude_remote_images,
+       'image_signing' : image_signing,
+       'leave_image_mounted' : leave_image_mounted,
+       'erase_confirmation' : erase_confirmation,
+       'zeroing' : zeroing,
+       'default_create_size' : default_create_size,
+       'default_create_name' : default_create_name,
+       'make_multiple_floppies' : make_multiple_floppies,
+       'auto_image_upon_insert' : auto_image_upon_insert,
+       'eject_after_auto_image' : eject_after_auto_image,
+       'auto_copy_upon_floppy_insert' : auto_copy_upon_floppy_insert,
+       'volume_suffix' : volume_suffix,
+       'image_suffix' : image_suffix,
+       'default_file_system' : default_file_system,
+       'default_image_format' : default_image_format,
+}
+application._elemdict = {
+}
+disk._propdict = {
+       'name' : name,
+       'comment' : comment,
+       'locked' : locked,
+       'creation_date' : creation_date,
+       'modification_date' : modification_date,
+       'crc32_checksum' : crc32_checksum,
+       'disk_copy_4_2e_2_checksum' : disk_copy_4_2e_2_checksum,
+       'block_count' : block_count,
+       'file_system' : file_system,
+}
+disk._elemdict = {
+}
+folder._propdict = {
+       'name' : name,
+       'comment' : comment,
+       'creation_date' : creation_date,
+       'modification_date' : modification_date,
+}
+folder._elemdict = {
+}
+disk_image._propdict = {
+       'name' : name,
+       'comment' : comment,
+       'locked' : locked,
+       'creation_date' : creation_date,
+       'modification_date' : modification_date,
+       'file_format' : file_format,
+       'signed' : signed,
+       'compressed' : compressed,
+       'segmented' : segmented,
+       'segments' : segments,
+       'disk_name' : disk_name,
+       'crc32_checksum' : crc32_checksum,
+       'disk_copy_4_2e_2_checksum' : disk_copy_4_2e_2_checksum,
+       'block_count' : block_count,
+       'file_system' : file_system,
+       'data_fork_size' : data_fork_size,
+       'resource_fork_size' : resource_fork_size,
+}
+disk_image._elemdict = {
+}
+Save_reply_record._propdict = {
+       'resulting_target_object' : resulting_target_object,
+       'copy_type' : copy_type,
+}
+Save_reply_record._elemdict = {
+}
+_Enum_UIAc = {
+       'never_interact' : 'eNvr',      # DonÕt allow any interaction at all
+       'interact_with_self' : 'eInS',  # Only allow interaction from internal events
+       'interact_with_local' : 'eInL', # Allow interaction from any event originating on this machine
+       'interact_with_all' : 'eInA',   # Allow interaction from network events
+}
+
+_Enum_SvAs = {
+       'NDIF_RW' : 'RdWr',     # read/write NDIF disk image
+       'NDIF_RO' : 'Rdxx',     # read-only NDIF disk image
+       'NDIF_Compressed' : 'ROCo',     # compressed NDIF disk image
+       'Disk_Copy_4_2e_2' : 'DC42',    # Disk Copy 4.2 disk image
+}
+
+_Enum_rcpT = {
+       'block_disk_copy' : 'cpBl',     # block-by-block disk-level copy
+       'files_and_file_ID_copy' : 'cpID',      # all files including desktop databases and file IDÕs
+       'files_and_desktop_info' : 'cpDT',      # all files and most desktop information
+       'files_only' : 'cpFI',  # all files but no desktop information
+       'disk_image_conversion' : 'cpCV',       # disk image format conversion
+       'disk_image_creation' : 'cpCR', # disk image creation
+}
+
+_Enum_long = None # XXXX enum long not found!!
+_Enum_bool = None # XXXX enum bool not found!!
+_Enum_obj_ = None # XXXX enum obj  not found!!
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'DImg' : disk_image,
+       'capp' : application,
+       'Disk' : disk,
+       'Fold' : folder,
+       'cpyR' : Save_reply_record,
+}
+
+_propdeclarations = {
+       'Xcrc' : crc32_checksum,
+       'PDeS' : default_create_size,
+       'Idnm' : disk_name,
+       'PSSP' : smart_Save_As,
+       'Pcpf' : auto_copy_upon_floppy_insert,
+       'pnam' : name,
+       'Isin' : signed,
+       'otto' : nonejectable_mode,
+       'PExD' : exclude_DiskScripts,
+       'Iseg' : segmented,
+       'islk' : locked,
+       'asmo' : modification_date,
+       'PTlk' : use_speech,
+       'Pfsy' : default_file_system,
+       'PVeC' : checksum_verification,
+       'Xc42' : disk_copy_4_2e_2_checksum,
+       'rcpO' : resulting_target_object,
+       'Paim' : auto_image_upon_insert,
+       'comt' : comment,
+       'PCoE' : erase_confirmation,
+       'dVer' : driver_version,
+       'PDeN' : default_create_name,
+       'PBuM' : make_multiple_floppies,
+       'rcpT' : copy_type,
+       'PDiE' : volume_suffix,
+       'Ifmt' : file_format,
+       'Pdfm' : default_image_format,
+       'ascd' : creation_date,
+       'Pejc' : eject_after_auto_image,
+       'PZeB' : zeroing,
+       'PExR' : exclude_remote_images,
+       'PImE' : image_suffix,
+       'PVeS' : signature_verification,
+       'PSaL' : save_log_file,
+       'Xblk' : block_count,
+       'PMoA' : leave_image_mounted,
+       'Isg#' : segments,
+       'Irfk' : resource_fork_size,
+       'Icom' : compressed,
+       'Xfsi' : file_system,
+       'Idfk' : data_fork_size,
+       'vers' : version,
+       'PSiI' : image_signing,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'SvAs' : _Enum_SvAs,
+       'UIAc' : _Enum_UIAc,
+       'rcpT' : _Enum_rcpT,
+}
diff --git a/Mac/Demo/building.html b/Mac/Demo/building.html
new file mode 100644 (file)
index 0000000..556eddd
--- /dev/null
@@ -0,0 +1,514 @@
+<HTML>
+<HEAD>
+<TITLE>Building Mac Python from source</TITLE>
+</HEAD>
+<BODY>
+<H1>Building Mac Python from source</H1>
+<HR>
+
+<B>Note</B>: This document is mostly still for Python 2.0, so
+it is not correct. See the <a href="http://www.cwi.nl/~jack/macpython.html">
+MacPython homepage</a> for an updated version, and if none is available
+complain bitterly to me and work on it should progress faster.
+<p>
+
+This document explains how to build MacPython from source. This is
+necessary if you want to make modifications to the Python core. Building
+Python is not something to be undertaken lightly, you need a reasonable
+working knowledge of the CodeWarrior development environment, a good net
+connection and probably quite some time too. <p>
+
+The information density in this file is high, so you should probably
+print it and read it at your leasure. Most things are explained only
+once (and probably in the wrong place:-). <p>
+
+<blockquote>
+First a warning: this information may become outdated if a new CodeWarrior is
+released after MacPython. The 
+<a href="http://www.cwi.nl/~jack/macpython.html">MacPython homepage</a> will
+hopefully have updated instructions in that case.
+</blockquote>
+
+I am very interested in feedback on this document, send your
+comments to the <A
+HREF="http://www.python.org/sigs/pythonmac-sig/">Mac Python Special
+Interest Group</A>.
+
+<H2>What you need.</H2>
+
+The following things you definitely need:
+
+<UL>
+
+<LI> You need a MacPython source distribution, of course. You can
+obtain one from <A HREF="ftp://ftp.cwi.nl/pub/jack/python/mac">
+ftp://ftp.cwi.nl/pub/jack/python/mac</A> or from the companion webpage
+at <A HREF="http://www.cwi.nl/~jack/macpython.html">
+http://www.cwi.nl/~jack/macpython.html</A> (which has up-to-date links
+to the other packages needed too) and possibly also from the standard
+<A HREF="ftp://ftp.python.org/pub/python/mac">python.org ftp
+site</A>. <BR>
+
+A better alternative is to check the sources straight out of the CVS
+repository, see below. Most of the packages mentioned here are also
+available through CVS. Check the section on <a href="#cvs">CVS
+repository use</a> below.
+
+<LI> You need MetroWerks CodeWarrior. The current distribution has
+been built with CodeWarrior Pro 6.1. Ordering information is
+available on the <A HREF="http://www.metrowerks.com/">MetroWerks
+homepage</A>. Building Python with MPW or Think/Symantec C is
+probably impossible without major surgery.
+
+<LI> You need GUSI version 2, the Grand Unified Socket Interface, by
+Matthias Neeracher. The original GUSI is obtainable from <A
+HREF="ftp://gusi.sourceforge.net/pub/gusi/">
+ftp://gusi.sourceforge.net/pub/gusi/</A>. At
+the moment Python is built with a slightly modified version of GUSI
+2.1.1, so it may be better to check the <A
+HREF="http://www.cwi.nl/~jack/macpython.html">MacPython homepage</A>
+for a GUSI that is most easily used for building Python. 
+<br>
+
+If nothing is listed there (yet) you will have problems building a
+Carbon Python. Complaining loudly on the pythonmac-sig@python.org mailing
+list will make me work faster towards distributing Carbon-GUSI:-).
+</UL>
+
+<A NAME="optional">The MacPython project files are configured to
+include a plethora of optional modules</A>, and these modules need a
+number of extra packages. To use the project files as-is you have to
+download these packages too. Python has all such modules as
+dynamically loaded modules, so if you don't need a certain package it
+suffices to just refrain from builing the extension module.
+Here are the locations for the various things
+you need:
+
+<UL>
+
+<LI> Tcl and Tk are in a sad state on the Mac, the standard source distributions
+simply don't compile, so I have created a distribution especially for use
+with MacPython. 
+See the section on <A HREF="#tcltk">building Tcl/Tk Python</A>
+below.
+
+<LI> Waste, a TextEdit replacement written by Marco Piovanelli, <A
+HREF="mailto:piovanel@kagi.com">&lt;piovanel@kagi.com&gt;</A>.  Python
+was built using version 2.0, which is included in the CodeWarrior
+package. You can also obtain it from <A
+HREF="http://www.boingo.com/waste">&lt;http://www.boingo.com/waste&gt;</A>
+and various other places.
+
+<LI> Gdbm library for the Mac. Available from Jack's Mac software page at
+<A HREF="http://www.cwi.nl/~jack/macsoftware.html">
+http://www.cwi.nl/~jack/macsoftware.html</A> and <A HREF="ftp://ftp.cwi.nl/pub/jack/mac">
+ftp://ftp.cwi.nl/pub/jack/mac</A>. Also in the MacPython cvs repository at
+<code>lib-src/gdbm</code>.
+
+<LI> JPEG library by the Independent JPEG Group. A version including
+Mac projects can be found at Jack's page mentioned above. 
+The most recent JPEG library can always be obtained from <A
+HREF="ftp://ftp.uu.net/graphics/jpeg/">ftp://ftp.uu.net/graphics/jpeg/</A>. Again,
+also in the MacPython cvs repository at <code>lib-src/jpeg</code>.
+
+<LI> The netpbm/pbmplus, libtiff, zlib and png libraries. The netpbm distribution
+(which includes libtiff) is generally available on Internet ftp
+servers. For Python pbmplus, an older incarnation of netpbm, is
+functionally identical to netpbm, since Python only uses the library
+and not the complete applications. A distribution with correct
+projects and library source only is available from, you guessed it, Jack's Mac software
+page mentioned above. And, guessed it again, in the MacPython cvs repository
+at <code>lib-src/netpbm</code>, etc. The only gotcha is that libtiff lives in
+<code>lib-src/netpbm/libtiff</code>, for historical reasons.
+
+</UL>
+
+<H2>Setting Up</H2>
+
+Now that you have collected everything you should start with building
+the various parts.  If you don't want to fix
+access paths try to set things up as follows:
+
+<PRE>
+Top-level-folder:
+       GUSI2
+       GUSI2Carbon
+       imglibs
+               jpeg
+               netpbm
+                       libtiff
+               zlib
+               png
+       gdbm
+       Python
+               Modules
+               ...
+               Mac
+                       Modules
+                       Build
+                       ...
+       Tcl/Tk Folder
+               tcl8.0
+               tk8.0
+               MoreFiles 1.4.3
+</PRE>
+
+If your setup of the libraries is exactly the same as mine (which is
+not very likely, unless you happen to work from the same CVS
+repository) you can use the project <code>buildlibs.prj</code> in the
+<code>:Mac:Build</code> folder to build all needed libraries in one
+fell swoop, otherwise you will have to build the libraries one by
+one. <p>
+
+First build GUSI, both the norla one and the Carbon variant.
+ <p>
+
+Next, in
+<code>libjpeg</code>, <code>pbmplus</code>,
+<code>zlib</code>, <code>libpng</code>, <code>gdbm</code>,
+and<code>libtiff</code> you build all projects. Usually the projects are in "mac"
+subfolders, sometimes they are in the main folder. Tcl/tk is a special
+case, see below.
+
+<H2><A NAME="tcltk">Building Tcl/Tk</H2>
+
+The Tcl/Tk 8.3.0 source distribution does not work on the Mac. I have created
+an archive of the sources that I used to build _tkinter for MacPython,
+you can obtain this from <a 
+href="ftp://ftp.cwi.nl/pub/jack/python/mac/tcltk830src-for-python.sit">
+ftp://ftp.cwi.nl/pub/jack/python/mac/tcltk830src-for-python.sit</a>. Only the
+libraries needed to build _tkinter for PPC have been fixed. <P>
+
+Note that if you use a different release of Tcl and Tk than the ones
+I have used you may have to adapt the Python <code>tkresources.rsrc</code> file.
+This is easiest done by building <code>SimpleTk</code> and copying the TEXT, ICON
+and CRSR resources from it to <code>tkresources.rsrc</code>. This allows
+the <code>_tkinter</code> module to work without an installed Tk/Tcl on your
+machine. <P>
+
+Also note that the <code>_tkinter.ppc.slb</code> that is normally distributed
+in the <code>PlugIns</code> folder is the one from the Imaging extension,
+which has some extra features needed by PIL (and which features should not
+hinder normal operation).
+
+</UL>
+
+Build first the Tcl library, then
+SimpleTcl (test it by typing <code>ls -l</code> in the window you get)
+then the Tk library, then SimpleTk (which can again be tested with
+<code>ls -l</code>). If this all worked you are all set to try
+building Python.
+
+<H2>Building Waste</H2>
+
+You do not need to build the Waste libraries, as Python includes the
+source modules themselves.
+
+<H2>The organization of the Python source tree</H2>
+
+Time for a short break, while we have a look at the organization of
+the Python source tree.  At the top level, we find the following
+folders:
+
+<DL>
+<DT> Demo
+<DD> Demo programs that are not Mac-specific. Some of these may not
+work.
+
+<DT> Extensions
+<DD> Extensions to the interpreter that are not Mac-specific. Contains
+the <code>img</code>, <code>Imaging</code> and <code>Numerical</code> extensions
+in this distribution.
+
+<DT> Grammar
+<DD> The Python grammar. Included for reference only, you cannot build
+the parser on a Mac.
+
+<DT> Include
+<DD> Machine-independent header files.
+
+<DT> Modules
+<DD> Machine-independent optional modules. Not all of these will work
+on the Mac.
+
+<DT> Objects
+<DD> Machine-independent code for various object types. Most of these are
+not really optional: the interpreter will not function without them.
+
+<DT> Parser
+<DD> The Python parser (machine-independent).
+
+<DT> Python
+<DD> The core interpreter. Most files are machine-independent, some
+are unix-specific and not used on the Mac.
+
+<DT> Tools
+<DD> Tools for python developers. Contains <code>modulator</code> which
+builds skeleton C extension modules, <code>bgen</code> which generates
+complete interface modules from information in C header files and
+<code>freeze</code> which is used to turn Python scripts into real
+applications (used by MacFreeze and BuildApplication) There are some
+readme files, but more documentation is sorely needed.
+
+</DL>
+
+All the mac-specific stuff lives in the <code>Mac</code> folder:
+<DL>
+<DT> Build
+<DD> This is where the project files live and where you build the
+libraries, shared libraries, executables and plugin modules. All the
+resulting binaries, except for intermedeate results, are deposited in
+the toplevel folder or the Mac:PlugIns folder (for plugin modules).
+
+<DT> Compat
+<DD> Unix-compatability routines. Most of these are not used anymore,
+since GUSI provides a rather complete emulation, but you may need
+these if you are trying to build a non-GUSI python.
+
+<DT> Demo
+<DD> Mac-specific demo programs, some of them annotated.
+
+<DT> Include
+<DD> Mac-specific but compiler-independent include files. 
+
+<DT> Lib
+<DD> Mac-specific standard modules. The <code>toolbox</code> folder
+contains modules specifically needed with various MacOS toolbox
+interface modules.
+
+<DT> Modules
+<DD> Mac-specific builtin modules. Theoretically these are all
+optional, but some are rather essential (like
+<code>macmodule</code>). A lot of these modules are generated with
+<code>bgen</code>, in which case the bgen input files are included so
+you can attempt to regenerate them or extend them.
+
+<DT> MPW
+<DD> MPW-specific files. These have not been used or kept up-to-date
+for a long time, so use at your own risk.
+
+<DT> mwerks
+<DD> Mwerks-specific sources and headers. Contains glue code for
+Pythons shared-library architecture, a replacement for
+<code>malloc</code> and a directory with various projects for building
+variations on the Python interpreter. The <code>mwerks_*.h</code>
+files here are the option-setting files for the various interpreters
+and such, comparable to the unix command-line <code>-D</code> options
+to the compiler. Each project uses the correct option file as its
+"prefix file" in the "C/C++ language" settings. Disabling optional
+modules (for the 68K interpreter), building non-GUSI interpreters and
+various other things are accomplished by modifying these files (and
+possibly changing the list of files included in the project window, of
+course).
+
+<DT> PlugIns
+<DD> This is where the Classic and Carbon dynamically-loaded plugin modules live.
+
+<DT> Python
+<DD> Mac-specific parts of the core interpreter.
+
+<DT> Resources
+<DD> Resource files needed to build the interpreter.
+
+<DT> Scripts
+<DD> A collection of various mac-specific Python scripts. Some are
+essential, some are useful but few are documented, so you will have to
+use your imagination to work them out.
+
+<DT> Tools
+<DD> A collection of tools, usually bigger than those in the scripts
+folder. The important ones here are the IDE and macfreeze. The IDE is built
+with the buildIDE.py script, which puts the resulting applet in the toplevel
+folder. Macfreeze is usually invoked through the BuildApplication script,
+but for more control over the freezing process you can run the main script here.
+
+
+<DT> Unsupported
+<DD> Modules that are not supported any longer but may still work with a little effort.
+</DL>
+
+<H2>Building the 68K interpreter</H2>
+
+68K Python is no longer supported, and the projects are not included in the
+source distribution anymore. If you really want to build Python for the 68K
+your best bet is to check the sources out of the CVS repository. The latest
+projects (in :Mac:build:) that support 68K development are tagged as such,
+and are dated around August 2000. If you plan on doing this announce it on
+the SIG, please. <p>
+
+<H2>Building the PPC interpreter</H2>
+<em>This is different under 2.1. You are best off using the fullbuild.py
+script. </em><p>
+First you optionally build the external libraries with buildlibs.prj. Next, 
+the projects for
+interpreter, core library and applet skeleton  are all linked together, so
+building the PythonInterpreter target in <code>PythonEngine.prj</code> 
+will result in everything being built. The
+resulting applications and fat shared library are deposited in the main
+Python folder. Finally, you build all the plugins with the plugins.prj project.
+
+For completeness sake here is a breakdown of the projects:
+
+<DL>
+
+<DT> PythonCore (with subproject PythonCorePPC)
+<DD> The shared library that contains the bulk of the interpreter and
+its resources. It is a good idea to immedeately put an alias to this
+shared library in the <code>Extensions</code> folder of your system
+folder.  Do exactly that: put an <em>alias</em> there, copying or
+moving the file will cause you grief later if you rebuild the library and
+forget to copy it to the extensions folder again. The InstallPython applet
+will also do this, along with creating the plugin aliases. <br>
+Note that the subproject looks a bit silly nowadays (with no more CFM68K
+support) but you will have to live with that for this release.
+
+<DT> PythonInterpeter
+<DD> The interpreter. This is basically a routine to call out to the
+shared library. Unlike in previous releases the same program is used for
+creating applets (for which formerly PythonApplet was used). <p>
+
+<DT> Plugin projects
+<DD> Each plugin module has a separate project. The <code>Plugins.prj</code>
+project tries to build them all, but is known to be flakey. See <code>fullbuild</code>
+below for a better way to build everything.
+</DL>
+
+After creating the alias to <code>PythonCore</code> you remove any old
+<code>Python 2.0b1 Preferences</code> file from the <code>Preferences</code> folder
+(if you had python installed on your system before) and run the interpreter once
+to create the correct preferences file.  <p>
+
+Next, you have to build the extension modules.
+The <code>PlugIns.ppc</code> project has all the
+other projects as subprojects and builds everything (but see the gotcha above).
+<p>
+
+Finally, you must build the standard applets:
+<code>EditPythonPrefs</code>, <code>BuildApplet</code>, etc. This is
+easiest done with the <code>fullbuild</code> script from
+<code>Mac:scripts</code>. <p>
+
+<BLOCKQUOTE>
+Actually, the <code>fullbuild</code> script can be used to build
+everything, but you need a fully-functional interpreter before you can
+use it (and one that isn't rebuilt in the process: you cannot rebuild
+a running program). You could copy the interpreter to a different
+place and use that to run fullbuild. The <code>PythonStandSmall.prj</code>
+project builds an interpreter that is suited to this, and it can also come
+in handy if you need to debug things (which is easier in a static program). <p>
+
+</BLOCKQUOTE>
+
+You are all set now, and should read the release notes and
+<code>ReadMe</code> file from the <code>Mac</code> folder.
+
+<H2>Rebuilding <code>.exp</code> files</H2>
+
+Occasionally it may be necessary to rebuild your PythonCore <code>.exp</code>
+file, a file that controls which symbols are exported by your PythonCore
+shared library. Rebuild it if you get unexpected undefined symbols when you
+are building a plugin module. <p>
+
+Rebuilding the .exp file is done by first removing the file and removing the
+reference to it in the project (in the "config" section). Next, build PythonCore.
+This will create a new .exp file. Edit this file to remove the references to
+the symbols <code>__initialize</code>, <code>__terminate</code>, <code>setjmp</code>,
+<code>longjmp</code>, <code>vec_longjmp</code>, <code>main</code> and (for PPC) <code>__ptmf_null</code> or (for
+CFM68K) <code>__start</code> and <code>dummy_init_routine</code>.
+Next, add the .exp file to the project
+again and rebuild PythonCore. <p>
+
+This rather convoluted procedure is needed to ensure that plugin modules don't
+accidentally link with those entrypoints from PythonCore, which will not work because
+those routines have to be in the same code fragment as they are used from.
+
+<H2><a name="cvs">Using the CVS source archive</a></H2>
+
+<em>Please check the MacPython homepage to see whether this information is
+still current: MacPython should move to sourceforge shortly. </em><p>
+
+It is possible (and probably best) to access the Python sources through remote CVS. The
+advantage of this is that you get the very latest sources, so any bug
+fixed or new features will be immedeately available. This is also the
+disadvantage, of course: as this is the same tree as is used for
+development it may sometimes be a little less stable. <p>
+
+The CVS client of choice is Alexandre Parenteau's MacCVS. It can be
+obtained through the <a href="http://www.wincvs.org">WinCVS
+homepage</a>. MacCVS uses Internet Config to set file types correctly
+based on the filename extension. In the maccvs preferences you should
+also set (in the "binary files" section) "use mac encoding:
+applesingle" and (in the "text files" section) "use ISO latin 1
+conversion". <p>
+
+It is also a good idea to disable Quicktime Exchange in the Quicktime
+control panel. Quicktime Exchange will magically map some extensions to
+filetypes, and this can seriously hinder you if, for instance, <code>.bmp</code>
+is not a Windows bitmap file. <p>
+
+The machine-independent Python sources are checked out from the main
+Python CVS archive on sourceforge.net, see the <a
+href="http://www.python.org/download/cvs.html">Source access via
+CVS</a> page for details. When you check the sources out you will get
+something like <code>Python:dist:src</code>, and under that the
+<code>Modules</code>, <code>Lib</code>, etc hierarchy. The
+<code>src</code> folder should be renamed to <code>Python</code>, and
+is what this document refers to as the "toplevel Python folder". <P>
+
+Next, <em>in a separate folder</em>, you check out the
+mac-specific sources. You then move the <code>Mac</code> folder from this
+checkout (the only folder with anything in it) to the Python source folder.
+Note that the checking out in a separate folder and moving is necessary,
+due to the way cvs works.
+
+The CVS path to use for the mac stuff can be found
+at the <a href="http://www.cwi.nl/~jack/macpython.html">MacPython
+homepage</a>. Finally, you check out the external libraries needed in
+the parent of the toplevel Python folder. The CVS path for these libraries is
+also mentioned at the MacPython homepage. <p>
+
+
+You should end up with a folder structure as described at the top of this
+document. <p>
+
+Note that while the Mac folder is now a subfolder of your toplevel Python
+folder this does not mean that they "act as one" as far as CVS is concerned.
+To update all your sources you have to do a "cvs update" in the toplevel
+Python folder and another one in the Mac folder. This is again a cvs problem:
+it cannot deal with subpackages coming from different repositories. <p>
+
+<H2>Odds and ends</H2>
+
+Some remarks that I could not fit in elsewhere:
+
+<UL>
+
+<LI> It may be possible to use the <code>PythonCore</code> shared
+library to embed Python in another program, if your program can live
+with using GUSI for I/O. Use PythonCore in stead of your MSL C library
+(or, at the very least, link it before the normal C library).
+
+<LI> It is possible to build PPC extension modules without building a
+complete Python. The binary distribution installer can optionally install
+all the needed folders (the develop option). A template for a dynamic module can be found in
+<code>xx.prj</code>.
+
+<LI> The Python shared library architecture is a variant of the architecture
+described as "application with shared libraries and dropins" in the MetroWerks
+"Targeting MacOS" documentation. The Python Application and applet-template use
+the <code>MSL AppRuntime.Lib</code> runtime library (with properly set CFM
+initialization and termination routines). PythonCore uses <code>MSL Runtime.Lib</code>,
+which is really intended for standalone programs but which we fool into working by
+providing a dummy main program.
+It is linked statically into PythonCore (and exported to the applications and plugins)
+so we do not have to distribute yet another shared library. Plugin modules use
+<code>MSL ShlibRuntime.Lib</code> (not the dropin runtime: modules are never unloaded)
+and obtain the rest from PythonCore. PythonCore uses a
+non-standard initialization entry point, <code>__initialize_with_resources</code>, to
+be able to obtain resources from the library file later on. Plugins can do the same
+(_tkinter does) or use the standard <code>__initialize</code> entry point.
+
+
+</UL>
+</BODY>
+</HTML>
diff --git a/Mac/Demo/calldll/readme b/Mac/Demo/calldll/readme
new file mode 100644 (file)
index 0000000..1e64dfe
--- /dev/null
@@ -0,0 +1,48 @@
+Preliminary notes/documentation for the calldll module, version 0.2.
+====================================================================
+
+Calldll allows you to call random C functions from python without writing any
+C code. It is mainly meant to call MacOS toolbox routines for which no Python
+wrapper module is available. It is also incomplete, in that only a few argument
+types are currently supported. Please let me know which other argument types
+you need, and/or whether you have any ideas on a general "escape" allowing people
+to pass anything.
+
+The module exports three functions:
+- symtable = getlibrary(libraryname)
+       Get a reference to import library libraryname. "InterfaceLib" is the most commonly
+       used one, containing most toolbox routines. The symbol table can be used
+       to lookup routines to be passed to newcall: "symtable.WaitNextEvent" will
+       return the address of routine WaitNextEvent. and so will "symtable['WaitNextEvent']".
+       The symtable is a mapping, so you can use keys() and len(...) to inspect it.
+- symtable = getdiskfragment(file)
+       Load the specified file (given by fsspec or filename) and return a reference to
+       its symboltable.
+- callable = newcall(routine, returntype, [argtype, ...])
+       Return a callable object. You specify the C routine to be called (as explained above),
+       the type of the return value and the argument types. The resulting object can
+       be called from Python code in the normal way, and typechecking on arguments is
+       performed (but, of course, if you specify incorrect argument types in this call
+       you may well crash your machine). Printing a callable will give you a description
+       of the (C-) calling sequence.
+
+The C return value can be one of 'None', 'Byte', 'Short', 'Long', 'Pstring' (a pascal
+string returned by address, copied to a Python string), 'Cobject' (a wrapper around a void
+pointer), 'Handle' (a new handle, returned as a Res.Resource object) or 'OSErr' (which raises
+MacOS.Error if non-zero).
+
+Arguments can be any of 'InByte', 'InShort', 'InLong', 'InString' (a python string, with the
+address of the data passed to the C routine, so be careful!), 'InPstring' (a python string copied
+to a Str255 and passed by address),  'InCobject', 'InHandle', 'OutByte' (storage is allocated for
+a single byte, the address passed to C and the resulting value returned to Python), 'OutShort',
+'OutLong', 'OutPstring' (again: storage pre-allocated and the address passed to C), 'OutCobject'
+(storage for a void * is allocated, this void ** is passed to C and the resulting void * is
+encapsulated in the Cobject returned) or 'OutHandle' (ditto, which means that this is usually *not*
+what you use, you normally use 'InHandle' because most toolbox calls expect you to preallocate
+the handle).
+
+All values to be returned (from the return value and the Out arguments) are collected. If there
+aren't any None is returned, if there is one value this value is returned, if there are multiple
+values a tuple is returned.
+
+There is test code in testcalldll.py, and a minimal example in samplecalldll.py.
diff --git a/Mac/Demo/textedit/ped.py b/Mac/Demo/textedit/ped.py
new file mode 100644 (file)
index 0000000..9b222a3
--- /dev/null
@@ -0,0 +1,348 @@
+# A minimal text editor.
+#
+# To be done:
+# - Update viewrect after resize
+# - Handle horizontal scrollbar correctly
+# - Functionality: find, etc.
+
+from Menu import DrawMenuBar
+from FrameWork import *
+import Win
+import Qd
+import TE
+import Scrap
+import os
+import macfs
+
+class TEWindow(ScrolledWindow):
+       def open(self, path, name, data):
+               self.path = path
+               self.name = name
+               r = windowbounds(400, 400)
+               w = Win.NewWindow(r, name, 1, 0, -1, 1, 0x55555555)
+               self.wid = w
+               x0, y0, x1, y1 = self.wid.GetWindowPort().portRect
+               x0 = x0 + 4
+               y0 = y0 + 4
+               x1 = x1 - 20
+               y1 = y1 - 20
+               vr = dr = x0, y0, x1, y1
+               ##vr = 4, 0, r[2]-r[0]-15, r[3]-r[1]-15
+               ##dr = (0, 0, vr[2], 0)
+               Qd.SetPort(w)
+               Qd.TextFont(4)
+               Qd.TextSize(9)
+               self.ted = TE.TENew(dr, vr)
+               self.ted.TEAutoView(1)
+               self.ted.TESetText(data)
+               w.DrawGrowIcon()
+               self.scrollbars()
+               self.changed = 0
+               self.do_postopen()
+               self.do_activate(1, None)
+               
+       def do_idle(self):
+               self.ted.TEIdle()
+               
+       def getscrollbarvalues(self):
+               dr = self.ted.destRect
+               vr = self.ted.viewRect
+               height = self.ted.nLines * self.ted.lineHeight
+               vx = self.scalebarvalue(dr[0], dr[2]-dr[0], vr[0], vr[2])
+               vy = self.scalebarvalue(dr[1], dr[1]+height, vr[1], vr[3])
+               print dr, vr, height, vx, vy
+               return None, vy
+               
+       def scrollbar_callback(self, which, what, value):
+               if which == 'y':
+                       if what == 'set':
+                               height = self.ted.nLines * self.ted.lineHeight
+                               cur = self.getscrollbarvalues()[1]
+                               delta = (cur-value)*height/32767
+                       if what == '-':
+                               delta = self.ted.lineHeight
+                       elif what == '--':
+                               delta = (self.ted.viewRect[3]-self.ted.lineHeight)
+                               if delta <= 0:
+                                       delta = self.ted.lineHeight
+                       elif what == '+':
+                               delta = -self.ted.lineHeight
+                       elif what == '++':
+                               delta = -(self.ted.viewRect[3]-self.ted.lineHeight)
+                               if delta >= 0:
+                                       delta = -self.ted.lineHeight
+                       self.ted.TEPinScroll(0, delta)
+                       print 'SCROLL Y', delta
+               else:
+                       pass # No horizontal scrolling
+               
+       def do_activate(self, onoff, evt):
+               print "ACTIVATE", onoff
+               ScrolledWindow.do_activate(self, onoff, evt)
+               if onoff:
+                       self.ted.TEActivate()
+                       self.parent.active = self
+                       self.parent.updatemenubar()
+               else:
+                       self.ted.TEDeactivate()
+
+       def do_update(self, wid, event):
+               Qd.EraseRect(wid.GetWindowPort().portRect)
+               self.ted.TEUpdate(wid.GetWindowPort().portRect)
+               self.updatescrollbars()
+               
+       def do_contentclick(self, local, modifiers, evt):
+               shifted = (modifiers & 0x200)
+               self.ted.TEClick(local, shifted)
+               self.updatescrollbars()
+               self.parent.updatemenubar()
+
+       def do_char(self, ch, event):
+               self.ted.TESelView()
+               self.ted.TEKey(ord(ch))
+               self.changed = 1
+               self.updatescrollbars()
+               self.parent.updatemenubar()
+               
+       def close(self):
+               if self.changed:
+                       save = EasyDialogs.AskYesNoCancel('Save window "%s" before closing?'%self.name, 1)
+                       if save > 0:
+                               self.menu_save()
+                       elif save < 0:
+                               return
+               if self.parent.active == self:
+                       self.parent.active = None
+               self.parent.updatemenubar()
+               del self.ted
+               self.do_postclose()
+               
+       def menu_save(self):
+               if not self.path:
+                       self.menu_save_as()
+                       return # Will call us recursively
+               print 'Saving to ', self.path
+               dhandle = self.ted.TEGetText()
+               data = dhandle.data
+               fp = open(self.path, 'wb')  # NOTE: wb, because data has CR for end-of-line
+               fp.write(data)
+               if data[-1] <> '\r': fp.write('\r')
+               fp.close()
+               self.changed = 0
+               
+       def menu_save_as(self):
+               fss, ok = macfs.StandardPutFile('Save as:')
+               if not ok: return
+               self.path = fss.as_pathname()
+               self.name = os.path.split(self.path)[-1]
+               self.wid.SetWTitle(self.name)
+               self.menu_save()
+               
+       def menu_cut(self):
+               self.ted.TESelView()
+               self.ted.TECut()
+               Scrap.ZeroScrap()
+               TE.TEToScrap()
+               self.updatescrollbars()
+               self.parent.updatemenubar()
+               self.changed = 1
+               
+       def menu_copy(self):
+               self.ted.TECopy()
+               Scrap.ZeroScrap()
+               TE.TEToScrap()
+               self.updatescrollbars()
+               self.parent.updatemenubar()
+               
+       def menu_paste(self):
+               TE.TEFromScrap()
+               self.ted.TESelView()
+               self.ted.TEPaste()
+               self.updatescrollbars()
+               self.parent.updatemenubar()
+               self.changed = 1
+               
+       def menu_clear(self):
+               self.ted.TESelView()
+               self.ted.TEDelete()
+               self.updatescrollbars()
+               self.parent.updatemenubar()
+               self.changed = 1
+               
+       def have_selection(self):
+               return (self.ted.selStart < self.ted.selEnd)
+
+class Ped(Application):
+       def __init__(self):
+               Application.__init__(self)
+               self.num = 0
+               self.active = None
+               self.updatemenubar()
+               
+       def makeusermenus(self):
+               self.filemenu = m = Menu(self.menubar, "File")
+               self.newitem = MenuItem(m, "New window", "N", self.open)
+               self.openitem = MenuItem(m, "Open...", "O", self.openfile)
+               self.closeitem = MenuItem(m, "Close", "W", self.closewin)
+               m.addseparator()
+               self.saveitem = MenuItem(m, "Save", "S", self.save)
+               self.saveasitem = MenuItem(m, "Save as...", "", self.saveas)
+               m.addseparator()
+               self.quititem = MenuItem(m, "Quit", "Q", self.quit)
+               
+               self.editmenu = m = Menu(self.menubar, "Edit")
+               self.undoitem = MenuItem(m, "Undo", "Z", self.undo)
+               self.cutitem = MenuItem(m, "Cut", "X", self.cut)
+               self.copyitem = MenuItem(m, "Copy", "C", self.copy)
+               self.pasteitem = MenuItem(m, "Paste", "V", self.paste)
+               self.clearitem = MenuItem(m, "Clear", "", self.clear)
+               
+               # Not yet implemented:
+               self.undoitem.enable(0)
+               
+               # Groups of items enabled together:
+               self.windowgroup = [self.closeitem, self.saveitem, self.saveasitem, self.editmenu]
+               self.focusgroup = [self.cutitem, self.copyitem, self.clearitem]
+               self.windowgroup_on = -1
+               self.focusgroup_on = -1
+               self.pastegroup_on = -1
+               
+       def updatemenubar(self):
+               changed = 0
+               on = (self.active <> None)
+               if on <> self.windowgroup_on:
+                       for m in self.windowgroup:
+                               m.enable(on)
+                       self.windowgroup_on = on
+                       changed = 1
+               if on:
+                       # only if we have an edit menu
+                       on = self.active.have_selection()
+                       if on <> self.focusgroup_on:
+                               for m in self.focusgroup:
+                                       m.enable(on)
+                               self.focusgroup_on = on
+                               changed = 1
+                       if hasattr(Scrap, 'InfoScrap'):
+                               on = (Scrap.InfoScrap()[0] <> 0)
+                       else:
+                               # Not there yet on Carbon, simply always enable
+                               on = 1
+                       if on <> self.pastegroup_on:
+                               self.pasteitem.enable(on)
+                               self.pastegroup_on = on
+                               changed = 1
+               if changed:
+                       DrawMenuBar()
+
+       #
+       # Apple menu
+       #
+       
+       def do_about(self, id, item, window, event):
+               EasyDialogs.Message("A simple single-font text editor")
+                       
+       #
+       # File menu
+       #
+
+       def open(self, *args):
+               self._open(0)
+               
+       def openfile(self, *args):
+               self._open(1)
+
+       def _open(self, askfile):
+               if askfile:
+                       fss, ok = macfs.StandardGetFile('TEXT')
+                       if not ok:
+                               return
+                       path = fss.as_pathname()
+                       name = os.path.split(path)[-1]
+                       try:
+                               fp = open(path, 'rb') # NOTE binary, we need cr as end-of-line
+                               data = fp.read()
+                               fp.close()
+                       except IOError, arg:
+                               EasyDialogs.Message("IOERROR: "+`arg`)
+                               return
+               else:
+                       path = None
+                       name = "Untitled %d"%self.num
+                       data = ''
+               w = TEWindow(self)
+               w.open(path, name, data)
+               self.num = self.num + 1
+               
+       def closewin(self, *args):
+               if self.active:
+                       self.active.close()
+               else:
+                       EasyDialogs.Message("No active window?")
+               
+       def save(self, *args):
+               if self.active:
+                       self.active.menu_save()
+               else:
+                       EasyDialogs.Message("No active window?")
+               
+       def saveas(self, *args):
+               if self.active:
+                       self.active.menu_save_as()
+               else:
+                       EasyDialogs.Message("No active window?")
+                       
+               
+       def quit(self, *args):
+               for w in self._windows.values():
+                       w.close()
+               if self._windows:
+                       return
+               self._quit()
+               
+       #
+       # Edit menu
+       #
+       
+       def undo(self, *args):
+               pass
+               
+       def cut(self, *args):
+               if self.active:
+                       self.active.menu_cut()
+               else:
+                       EasyDialogs.Message("No active window?")
+               
+       def copy(self, *args):
+               if self.active:
+                       self.active.menu_copy()
+               else:
+                       EasyDialogs.Message("No active window?")
+               
+       def paste(self, *args):
+               if self.active:
+                       self.active.menu_paste()
+               else:
+                       EasyDialogs.Message("No active window?")
+
+       def clear(self, *args):
+               if self.active:
+                       self.active.menu_clear()
+               else:
+                       EasyDialogs.Message("No active window?")
+               
+       #
+       # Other stuff
+       #       
+
+       def idle(self, *args):
+               if self.active:
+                       self.active.do_idle()
+
+def main():
+       App = Ped()
+       App.mainloop()
+       
+if __name__ == '__main__':
+       main()
+       
diff --git a/Mac/Distributions/(vise)/Python 2.1.vct b/Mac/Distributions/(vise)/Python 2.1.vct
new file mode 100644 (file)
index 0000000..d86b1be
--- /dev/null
@@ -0,0 +1 @@
+(This file must be converted with BinHex 4.0)\r:!!"@59-a9NPc03!!!!D8p`!#1hU!Ve0@3e3!N!8'P2Hh$4A4J!%$#`!!!!%!N!8\r'P2F!N!FXJ!%$#d0@3e3!"Nj"!*!'!TF)'J!!8%&$5d*#FQ4$6d4&3N4*8P"56dT\r*6N414'C*6!#3$3C1d3!'@cN!"Pb2!!CFP3!'A3%!"T(*!!D4m!#3$%4@3e3!,`!\r0!H8"Q!2Jrj!%!3He1jp2Y6ZI6`!!!(3!!!!#!J!!!3#3'IRrfa!P!*!&!J#3"!S\r!!!!)"!F!N"(J!*!(rrrrr[["!*!L8(PdD'pZ)$)Z-84@3e3!N!J$i!)J!,)""lF\r,a0@h#m6Q!!!!GJ!!!(3!!#!"!*!F%#S!!!!"!!)!N!3%!!!!#!3(!*!E!BZL!3#\r3)N4PE@p%9N08!*!3YV",+3#3"hF!!!"f!!!J!3#3("!V!!!!!J!#!*!%"`!!!!J\r%"`#3'`'-SJ#3)f0XBA0cCA0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aEr,0A"lX!!!PH!!!KB`#3#+'&p!F!!!"h!!(X*`!$!!$rrrrq!*!)%#`!!!!\r#!*!%#CB!N"S"MD)!N"m%!*!&BQPdGQ9M,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\rA4%*1690A4!#3#,8QTK'e*UB4!!!%f!!!$2B!N!Mk'Ip@!!!!G`!"l#J!!`!!rrr\rrrJ#3#"!Y!!!!!J#3"!Q@!*!D!BfL!*!I"!#3"@0XBA0c,Q4[BdC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&[fX[aEp`!!#GB!!"k)!*!)EhRR4!!!!(F\r!!H`T!!-!!2rrrri!N!J3,J!!!!)!N!3+PJ#3'J'0SJ#3(`3!N!9$Efe`E'9i,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,m@rHbr&[h!!!+qJ!!(M!\r!N!J@'LF(!!!!G`!"l#S!!`!!rrrrrJ#3#"![!!!!!J#3"!L@!*!D!BfL!*!I"!#\r3"84KG'9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,m@rLbr&[\ri!!!#6!!!"1%!N!KNq$Ee!!!!G`!"l#X!!`!!rrrrrJ#3#"!`!!!!!J#3"!D@!*!\rD!BfL!*!I"!#3"84LE5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&[kX[aEqJ!!![i!!!D8!*!)k$&0S!!!!(F!!H`X!!-!!2rrrri!N!J3-3!!!!)\r!N!3)PJ#3'J'0SJ#3(`3!N!95B@jRC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&[kX[aEqJ!!#0B!!"ba!*!)r#m1,!!!!(F!!H`Y!!-!!2rrrri\r!N!J3-J!!!!)!N!3'PJ#3'J'0SJ#3(`3!N!95BA3ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&45+Q0S!*!)X[aEqE,m@rN!!!&U!!!#93#3#(j4UGX!!!"h!!(X,J!\r$!!$rrrrq!*!)%$-!!!!#!*!%"TB!N"S"MD)!N"m%!*!&8N9"4%e&4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,m@rZbr&[l!!!$KJ!!"rF!N!Ji)iCp!!!\r!G`!"l#m!!`!!rrrrrJ#3#"!d!!!!!J#3"!D@!*!D!BfL!*!I"!#3"9*PGLj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&[lX[aEq`!!!B)!!!1R!*!\r)Pb2dkJ!!!(F!!H``!!-!!2rrrri!N!J303!!!!)!N!3'PJ#3'J'0SJ#3(`3!N!9\r@C@-ZF(P%9N08!*!3YV",-!#3"hJ!!!"f!!!!!3#3("!f!!!!!J!#!*!%#`!!!!J\r%"`#3'`'-SJ#3)f0[EA"KFQPcEfjc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG\r*43#3#,,mA!+br&`#!!!!*J!!!"i!N!KT66RD!!!!H!!"l$)!!`!!rrrrrJ#3#"!\rh!!!!!J#3"!L@!*!D!BkL!*!I"!#3"A"KG(4PFQjc4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88LTMD!#3#,,mA!'br&`"!!!%qJ!!#5!!N!L(F!X$!!!!H!!"l$-!!`!\r!rrrrrJ#3#"!i!!!!!J#3"!D@!*!D!BkL!*!I"!#3"9*&384048C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`$X[aF!`!!!c3!!!A&!*!)HDmU2`!!!(J\r!!H`d!!-!!2rrrri!N!J313!!!!)!N!3-PJ#3'J'1SJ#3(`3!N!9bC@GPH(4PFh3\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF"E,mA!8!!!+i!!!\r%l3#3#"q@LB!!!!"i!!(X03!$!!$rrrrq!*!)%$S!!!!#!*!%$TB!N"S"MU)!N"m\r%!*!&FfpbG'PZCh4PFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aF"V,mA!B!!!0b!!!(S3#3#!DAZ9`!!!"i!!(X0J!$!!$rrrrq!*!)%$X!!!!\r#!*!%$CB!N"S"MU)!N"m%!*!&FhPcG'9YG'9cG#j`H84@3e3!N"#fX%Xj!*!(HJ!\r!!(B!!!!"!*!F%%%!!!!#!!)!N!3$!!!!#!3(!*!E!BbL!*!MC'jc4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA!kbr&`1!!!"QJ!!!e!!N!MPV6"B!!!\r!HJ!"l$d!!`!!rrrrrJ#3#""#!!!!!J#3"!b@!*!D!C!!SJ#3(`3!N!9KFfGPG'K\r[Fh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF$l,mA!m!!!%\r`!!!"k`#3#"FT4EN!!!"k!!(X2J!$!!$rrrrq!*!)%%-!!!!#!*!%#jB!N"S"N!#\rL!*!I"!#3"@4ZFf0XBA0c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA!qdkcLF!!!5+J!!1h-!N!JYCQ8'!!!!HJ!"l$m!!`!!rrrrrJ#3#""%!!!\r!!J#3"!Q@!*!D!C!!SJ#3(`3!N!9NER0XD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aF%E,mA"%!!!$B!!!"5J#3#2h4`"!!!!"k!!(X3!!$!!$\rrrrrq!*!)%%8!!!!#!*!%$*B!N"S"N!#L!*!I"!#3"@4ZFfp`BfpNC5j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`4X[aF%3!!!S!!!!6$!*!)P6e\r@iJ!!!(S!!Ha"!!-!!2rrrri!N!J34J!!!!)!N!3+PJ#3'J'3!+)!N"m%!*!&C'j\rcG(P`C5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&`0X[aF$3!\r!!C)!!!+!!*!)0aEpa`!!!(S!!Ha#!!-!!2rrrri!N!J34`!!!!)!N!3'PJ#3'J'\r3!+)!N"m%!*!&8N9"4%e&4&C$9!#3%,AI-Rkehc,V!!!!H`!!!(B!!!!"!*!F%%J\r!!!!#!!)!N!3&!!!!#!8(!*!CrrrrrJ!"!*!LC@eLC@4'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&4$9dP&!*!)X[aF%lDkSpX!!!*X!!!%J!#3#"GPra)!!!%!!!'UI3!\r$!!$rrrrq!*!)&f!!!!!#!*!%#*B!N"S#(!!"!*!H"3#3"8eKDf9QD@aP4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mA"@fMRUE!!!"iJ!!!cB!N!J4(Dl\rS!!!"!!!"URi!!`!!rrrrrJ#3#"GK!!!!!J#3"!D@!*!D!K`!!3#3(J8!N!9548&\r%689'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aF&VD1HTX!!!-%!!!\r'0`#3##2dlJ!!!!%!!!'UI!!$!!$rrrrq!*!)&em!!!!#!*!%"TB!N"S#(!!"!*!\rH"3#3"@4PE@mZBd4@3e3!N"#fXf+c!*!'!3%!!!$r!!!!!3#3("GL!!!!!J!#!*!\r%"J!!!!J&"`#3'`)E!!%!N#*PH(4PEQ4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r$9dP&!*!)X[aF'V,mA"S!!!"H!!!!D3#3##Va$X-!!!%"!!'UJ!!$!!$rrrrq!*!\r)&f-!!!!#!*!%#TB!N"S#(3!"!*!H"3#3"@eKDf9IBfaPB@j'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)X[aF'l,mA"X!!!$H!!!"G3#3#'GD1AF!!!%"!!'\rUJ3!$!!$rrrrq!*!)&f3!!!!#!*!%#jB!N"S#(3!"!*!H"3#3"@eKDf9IFfKKFQ9\rN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA"bbr&`F!!!!fJ!!!@J\r!N!ME*2(k!!!"!3!"US)!!`!!rrrrrJ#3#"GP!!!!!J#3"!Z@!*!D!Kd!!3#3(J8\r!N!9YB@YPAh0dBA4TBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&`\rCX[aF'3!!!9B!!!*e!*!)(biI13!!!3%!!DU$!!-!!2rrrri!N!JACJ!!!!)!N!3\r'PJ#3'J)G!!%!N"i&!*!&8N9"4%e&4&C$9!#3%,D`5ci!N!Gq!!!!GJ!!!!%!N"`\r3@!!!!!)!!J#3"!F!!!!)"!F!N"X"M+)!N#0YC$9dCA0d4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,,mA#Qbr&`T!!!!$!!!!!-!N!Je*%(#!!!!IJ!"l&3\r!!`!!rrrrrJ#3#""C!!!!!J#3"!1@!*!D!C5L!*!I"!#3"@C[EdC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`UX[aF+J!!!hB!!!L'!*!)4Ef#0`!!!(i\r!!Ha9!!-!!2rrrri!N!J3@J!!!!)!N!3-PJ#3'J'8SJ#3(`3!N!9YC$9NFQPfCA)\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aF+,,mA#J!!!%H!!!\r"Y3#3#$!a%3X!!!"q!!(X9J!$!!$rrrrq!*!)%&X!!!!#!*!%"TB!N"S"P+)!N"m\r%!*!&8N9"4%e&4&C$9!#3%,Db'F3!N!Gr!!!!GJ!!!!%!N"`3A!!!!!)!!J#3"!X\r!!!!)"!F!N"X"M+)!N#0YCA4KBfaKFh0PFdC@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&`XX[aF,!!!"3J!!!f9!*!)@j9Y*3!!!(m!!HaB!!-!!2rrrri\r!N!J3A3!!!!)!N!3*PJ#3'J'9SJ#3(`3!N!9&D@CQC@`ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)X[aF,E,mA#d!!!AN!!!453#3#+BRK&-!!!"r!!(\rX@3!$!!$rrrrq!*!)%&i!!!!#!*!%"jB!N"S"PD)!N"m%!*!&4@jeE5j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9%e6588!N!Lbr&`cY-AUDJ!!(C`!!&"M!*!)I5#\r0f3!!!(m!!HaD!!-!!2rrrri!N!J3A`!!!!)!N!3+PJ#3'J'9SJ#3(`3!N!9TEQ4\rPH#jSG'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,,mA$@br&`e!!!\r-S!!!,3F!N!M)fd@j!!!!I`!"l&X!!`!!rrrrrJ#3#""J!!!!!J#3""'@!*!D!C@\rL!*!I"!#3"@ePG'%YGQaKC'PYDA)ZG(Kd4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,,mA#qfMRUE!!!$N!!!!!Yp!*!)C[ea8J!!!(m!!HaF!!-!!2rrrri\r!N!J3B3!!!!)!N!3(PJ#3'J'9SJ#3(`3!N!90CA4K,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mA$#br&``!!!"V!!!"+J!N!Lq2F`c!!!!I`!"l&d\r!!`!!rrrrrJ#3#""L!!!!!J#3"!Q@!*!D!C@L!*!I"!#3"90TEA"XC5j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`aX[aF-3!!#6B!!"m'!*!)2S%\rN%3!!!(m!!HaH!!-!!2rrrri!N!J3B`!!!!)!N!3)PJ#3'J'9SJ#3(`3!N!96H@j\rMD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`bX[aF-J!!"0i\r!!"!P!*!)-G0+5!!!!(m!!HaI!!-!!2rrrri!N!J3C!!!!!)!N!3)PJ#3'J'9SJ#\r3(`3!N!98FQ&MC5j`H84@3e3!N"#fX%Y4!*!(J!!!!(B!!!!"!*!F%'8!!!!#!!)\r!N!3'!!!!#!3(!*!E!BbL!*!MF'&bFf9b4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,,mA$Zbr&`l!!!!*!!!!"X!N!MRM3ia!!!!J!!"l'%!!`!!rrrrrJ#\r3#""Q!!!!!J#3"!b@!*!D!CDL!*!I"!#3"@4[Bh0dFQPZCbj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`mY)[hI3!!"a)!!"CD!*!)8Nde*J!!!)!\r!!HaL!!-!!2rrrri!N!J3C`!!!!)!N!3+PJ#3'J'@SJ#3(`3!N!9PH'&YF'aP,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA$Lbr&`j!!!!6!!!!&X\r!N!J,R6"@!!!!J!!"l'-!!`!!rrrrrJ#3#""S!!!!!J#3"!@@!*!D!CDL!*!I"!#\r3"8C*6%964PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mA$Uf)P%e!!!\r"H!!!!Z3!N!JK,Tf,!!!!J!!"l'B!!`!!rrrrrJ#3#""U!!!!!J#3"!D@!*!D!CD\rL!*!I"!#3"9*&384048C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`\rpX[aF23!!!#B!!!!G!*!)-k[NS`!!!)!!!HaR!!-!!2rrrri!N!J3D`!!!!)!N!3\r*PJ#3'J'@SJ#3(`3!N!9cD@e`E'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)X[aF2V,mA$i!!!&1!!!#j3#3#*1EBed!!!#!!!(XD!!$!!$rrrrq!*!\r)%'`!!!!#!*!%#CB!N"S"PU)!N"m%!*!&FfpeFQ0P,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mA$kebdmV!!!#$!!!"+N!N!LLD$Te!!!!J!!"l'N\r!!`!!rrrrrJ#3#""Y!!!!!J#3"!k@!*!D!CDL!*!I"!#3"A4PFh4IF'&bFf9b,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA$qbr&`r!!!&'J!!%2`\r!N!JSeKiM!!!!J!!"l'S!!`!!rrrrrJ#3#""Z!!!!!J#3"!Z@!*!D!CDL!*!I"!#\r3"A4PH'P`FQ8ZC'&d4&C$9!#3%,D`5e`!N!H"!!!!GJ!!!!%!N"`3E`!!!!)!!J#\r3"!8!!!!)"!F!N"X"M+)!N#0`C'PcG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&a%X[aF4!!!"Ai!!!qY!*!)55Mm&!!!!)%!!HaX!!-!!2rrrri!N!J\r3F!!!!!)!N!3*PJ#3'J'ASJ#3(`3!N!9ME'PPER3ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aF4E,mA%8!!!Ad!!!1P`#3#,[Cpq)!!!#"!!(XE3!\r$!!$rrrrq!*!)%(%!!!!#!*!%#*B!N"S"Pk)!N"m%!*!&BfeNCRFZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF4V,mA%B!!!CU!!!5Q3#3#&9kC(m\r!!!#"!!(XEJ!$!!$rrrrq!*!)%()!!!!#!*!%#TB!N"S"Pk)!N"m%!*!&Bfe`G(*\rPC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a'X[aF4J!!#fB\r!!#%6!*!)B&MVD`!!!)%!!Ha[!!-!!2rrrri!N!J3F`!!!!)!N!3*PJ#3'J'ASJ#\r3(`3!N!9MGR0XD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rF4l,mA%F!!!IX!!!9mJ#3#%id*,N!!!#"!!(XF!!$!!$rrrrq!*!)%(3!!!!#!*!\r%#TB!N"S"Pk)!N"m%!*!&BhCcE'pMDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&a!X[aF33!!"rJ!!"Z+!*!)`HjR-`!!!)%!!Haa!!-!!2rrrri\r!N!J3G3!!!!)!N!3+PJ#3'J'ASJ#3(`3!N!9'8e"bEhKj,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mA%Lbr&a)!!!!XJ!!!3m!N!K5fCCk!!!!J3!\r"l()!!`!!rrrrrJ#3#""f!!!!!J#3"!D@!*!D!CHL!*!I"!#3"@eKBbj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a)X[aF5!!!"'!!!!['!*!)pA0\rI3J!!!)%!!Hac!!-!!2rrrri!N!J3G`!!!!)!N!33PJ#3'J'ASJ#3(`3!N!9YB@Y\rPBfKKEQGPE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA%Q\rc(9SE!!!"T!!!!Zm!N!JV9k-0!!!!J3!"l(3!!`!!rrrrrJ#3#""i!!!!!J#3"!H\r@!*!D!CHL!*!I"!#3"A*MFf*eEA"'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aF5V,mA%S!!!,F!!!&l`#3#'63X"!!!!#"!!(XG3!$!!$rrrrq!*!)%(N\r!!!!#!*!%$*B!N"S"Pk)!N"m%!*!&FQ0cBfaTC@jd,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mA%UeJ#Pj!!!-I!!!+4J!N!Ldkk4B!!!!J3!"l(B\r!!`!!rrrrrJ#3#""k!!!!!J#3"!Q@!*!D!CHL!*!I"!#3"A*MFfaTBLj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a#X[aF3J!!"GJ!!"*`!*!)r62\r[4!!!!)%!!Hah!!-!!2rrrri!N!J3H`!!!!)!N!3,PJ#3'J'ASJ#3(`3!N!953e0\r3FQpiH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&a-XaeD(!!\r!!&`!!!"e!*!)%c+B``!!!)%!!Hai!!-!!2rrrri!N!J3I!!!!!)!N!3%PJ#3'J'\rASJ#3(`3!N!9bBhCc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA%b\rbr&a-!!!0BJ!!+HN!N!M!IL,+!!!!J3!"l(N!!`!!rrrrrJ#3#""p!!!!!J#3"!H\r@!*!D!CHL!*!I"!#3"A*MGR-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0\rS!*!)X[aF3V,mA%)!!!Fk!!!3U!#3#"kSFLd!!!#"!!(XHJ!$!!$rrrrq!*!)%(i\r!!!!#!*!%"TB!N"S"Pk)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K83eG*43#3#,,mA%fc(9SF!!!!A!!!!(8!N!La4(M5!!!!J3!"l(X!!`!!rrr\rrrJ#3#""r!!!!!J#3"!5@!*!D!CHL!*!I"!#3"A*bBh0'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aF6V,mA%i!!!9B!!!0N!!!N!K5r'*5!!!!J3!"l(`\r!!`!!rrrrrJ#3#"#!!!!!!J#3"!H@!*!D!CHL!*!I"!#3"A*bBh-ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF6V,mA%i!!!'1!!!$@J#3#-Peq08\r!!!#"!!(XI3!$!!$rrrrq!*!)%)%!!!!#!*!%#jB!N"S"Pk)!N"m%!*!&Ff9MGA*\rTG(NZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF6l,mA%m!!!9\rf!!!1jJ#3#0)UF8J!!!#"!!(XIJ!$!!$rrrrq!*!)%))!!!!#!*!%#CB!N"S"Pk)\r!N"m%!*!&Ff9bGQ9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rmA&#br&a3!!!"!!!!!Fd!N!MXff0`!!!!J3!"l(m!!`!!rrrrrJ#3#"#$!!!!!J#\r3"!U@!*!D!CHL!*!I"!#3"A0eEA4bC@8ZF(P%9N08!*!3YGmbJ,AI-Zd!!!##!!!\r!GJ!!!!%!N"`3K!!!!!)!!J#3"!8!!!!)"3F!N"Rrrrrq!!%!N#*`HA0fFNC@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&a8YN#aK!!!#P!!!"b"!*!)j!X\r-(3!!!3)!!DU'!!-!!2rrrri!N!JAD3!!!!)!N!3(PJ#3'J)H!!%!N"i&!*!&F(P\rcGR)ZBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&a5YN#aK!!!!X!\r!!!9!!*!)EVThm`!!!3)!!DU&!!-!!2rrrri!N!JAD!!!!!)!N!3)PJ#3'J)H!!%\r!N"i&!*!&6@&VC@CTE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[a\rEpEEIZr`!!!0q!!!($!#3#'`$Jp-!!!"f!!(X*3!#!!$rrrrq!*!)%)F!!!!#!*!\r%"TB!N"S"M+)!N"m%!*!&8N9"4%e&4&C$9!#3%,D`5h8!N!H$!!!!GJ!!!!%!N"`\r3L!!!!!)!!J#3"!-!!!!)"!F!N"X"M+)!N#0bF'0'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&4$9dP&!*!)X[aF9l,mA&F!!!#'!!!"D3#3#!%eRC-!!!#$!!(XK!!$!!$\rrrrrq!*!)%)N!!!!#!*!%#*B!N"S"QD)!N"m%!*!&68&158C&8e4'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF@E,mA&N!!!M#!!!ACJ#3#$94MKJ!!!#\r$!!(XK3!$!!$rrrrq!*!)%)S!!!!#!*!%$TB!N"S"QD)!N"m%!*!&E@peER4ME'P\rPER3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF@V,mA&S!!!@\rU!!!43J#3#1HXCMF!!!#$!!(XKJ!$!!$rrrrq!*!)%)X!!!!#!*!%$*B!N"S"QD)\r!N"m%!*!&EQCcBfaTC@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#\r3#,,mA&Hbr&aA!!!#4J!!"!3!N!MT%%$,!!!!J`!"l)F!!`!!rrrrrJ#3#"#-!!!\r!!J#3"!D@!*!D!CQL!*!I"!#3"9*&384048C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&aDX[aF@J!!!ZB!!!M`!*!)3EJ&h!!!!)-!!Hb)!!-!!2rrrri\r!N!J3M3!!!!)!N!33PJ#3'J'CSJ#3(`3!N!9bER9cCA*cBfaTC@jd,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA&Zbr&aE!!!BaJ!!@NN!N!L+[p3\re!!!!J`!"l)N!!`!!rrrrrJ#3#"#1!!!!!J#3"!D@!*!D!CQL!*!I"!#3"A*`Bbj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&aBX[aF@!!!!5J!!!)\rF!*!)hB+@!*!%J`!"l)S!!`!!rrrrrJ#3#"#2!!!!!J#3"!5@!*!D!CQL!*!I"!#\r3"93ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aFA,,mA&`!!!$\rB!!!#Z3#3#+(XAmi!!!#$!!(XL`!$!!$rrrrq!*!)%*!!!!!!!J#3"!5@!*!D!CQ\rL!*!I"!#3"A4PFh4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFAE,\rmA&d!!!5i!!!3,J#3#2cSAJB!!!#$!!(XM!!$!!$rrrrq!*!)%*%!!!!#!*!%"TB\r!N"S"QD)!N"m%!*!&H'4b,R"j4&C$9!#3%,E"dTi!N!H%!!!!GJ!!!!%!N"`3NJ!\r!!!)!!J#3"!F!!!!)"!F!N"X"M+)!N#0cBh*TF(4c4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mA''br&aK!!!!p!!!!F%!N!L1k-I&!!!!K!!"l)i!!`!\r!rrrrrJ#3#"#6!!!!!J#3"!H@!*!D!CUL!*!I"!#3"@*PCA)ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFBV,mA')!!!M8!!!9+!#3##H#bdN!!!#\r%!!(XM`!$!!$rrrrq!*!)%*3!!!!#!*!%#*B!N"S"QU)!N"m%!*!&CA&QDAJZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFBl,mA'-!!!(k!!!$Q!#\r3#&!(!r3!!!#%!!(XN!!!!`!!rrrrrJ#3#"#9!!!!!J#3"!H@!*!D!CUL!*!I"!#\r3"@CKBh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFC,DkSp`\r!!!'b!!!$CJ#3#2#h5ci!!!#%!!(XN3!$!!$rrrrq!*!)%*B!!!!#!*!%"jB!N"S\r"QU)!N"m%!*!&CR*[E5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&aPX[aFC3!!"GS!!!l$!*!)5IcJkJ!!!)3!!Hb5!!-!!2rrrri!N!J3P`!!!!)\r!N!3,PJ#3'J'DSJ#3(`3!N!9QG("cG'&dFbj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&aQX[aFCJ!!""3!!!RA!*!)+2(S93!!!)3!!Hb6!!-!!2r\rrrri!N!J3Q!!!!!)!N!3+PJ#3'J'DSJ#3(`3!N!9XF(GKG'0S,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA'HcPTDY!!!"(!!!!F%!N!K9T3ZV!!!\r!K!!"l*3!!`!!rrrrrJ#3#"#C!!!!!J#3"!U@!*!D!CUL!*!I"!#3"@eKDf9NDA)\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFD,,mA'J!!!8!!!!\r,h3#3#!)N"A8!!!#%!!(XP3!$!!$rrrrq!*!)%*S!!!!#!*!%#CB!N"S"QU)!N"m\r%!*!&E@&bDfpf,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA'Q\rbr&aT!!!%@!!!#JF!N!Jp%+NZ!!!!K!!"l*B!!`!!rrrrrJ#3#"#E!!!!!J#3"!k\r@!*!D!CUL!*!I"!#3"@eLEhKMEfjfCA*d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mA'Ubr&aU!!!#MJ!!"J`!N!L6%YX)!!!!K!!"l*F!!`!!rrr\rrrJ#3#"#F!!!!!J#3"!L@!*!D!CUL!*!I"!#3"@eVFQ0c,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mA'Zbr&aV!!!&4!!!$0S!N!JFcJKA!!!!K!!\r"l*J!!`!!rrrrrJ#3#"#G!!!!!J#3"!L@!*!D!CUL!*!I"!#3"@e[FR0P,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA'bbr&aX!!!#'J!!!kd!N!M\radIeL!!!!K!!"l*N!!`!!rrrrrJ#3#"#H!!!!!J#3"!L@!*!D!CUL!*!I"!#3"@e\r`HR"T,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&A4%*1690A4!#3#,8QTL1e*UBM!!!\r%F!!!#A)!N!Lh%4Yb!!!!K!!"l*S!!`!!rrrrrJ#3#"#I!!!!!J#3"!b@!*!D!CU\rL!*!I"!#3"@jPGh0XDA0d,Q4[BdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbr&aYX[aFEJ!!$k!!!#YK!*!)[HaY(J!!!)3!!HbE!!-!!2rrrri!N!J3S!!\r!!!)!N!3,PJ#3'J'DSJ#3(`3!N!9ZCAGcE'PcG#j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr&a[YVUMh!!!!I!!!!0p!*!)NQ25e`!!!)3!!HbF!!-\r!!2rrrri!N!J3S3!!!!)!N!3&PJ#3'J'DSJ#3(`3!N!9`D5j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a[X[aFE`!!"F)!!!iT!*!)#S'#`!!!!)3\r!!HbG!!-!!2rrrri!N!J3SJ!!!!)!N!3&PJ#3'J'DSJ#3(`3!N!9`F#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a`X[aFF!!!!2`!!!'m!*!)ZK0\rUA3!!!)3!!HbH!!-!!2rrrri!N!J3S`!!!!)!N!3*PJ#3'J'DSJ#3(`3!N!9`FQP\rYCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aFAl,mA'!!!!(\r#!!!$$`#3#"(1[B!!!!#%!!(XR`!$!!$rrrrq!*!)%+3!!!!#!*!%"TB!N"S"QU)\r!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA('\rbr&aa!!!"H!!!!ZF!N!JBEUNa!!!!K!!"l+!!!`!!rrrrrJ#3#"#P!!!!!J#3"!Q\r@!*!D!CUL!*!I"!#3"A0MFQP`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&abYVUMh!!!"1!!!!c5!*!)`N%df3!!!)3!!HbK!!-!!2rrrri!N!J\r3TJ!!!!)!N!30PJ#3'J'DSJ#3(`3!N!9eEQ*TFR4SC'&j,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mA(+br&ab!!!$H!!!#,)!N!JHFU#0!!!!K!!\r"l+)!!`!!rrrrrJ#3#"#R!!!!!J#3"!Q@!*!D!CUL!*!I"!#3"A9`C'&dC5j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&acX[aFF`!!!&)!!!"E!*!\r)EKhVp`!!!)3!!HbM!!-!!2rrrri!N!J3U!!!!!)!N!3&PJ#3'J'DSJ#3(`3!N!9\rhD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf3,'&YN#aK3!!!b!\r!!!Lq!*!)FM@3!18!!Lmb!!)[4!!$!!$rrrrq!*!)'k!!!!!#!*!%#CB!N"S"QU)\r!N"m%!*!&FA9PC@jc,R"j4&C$9!#3%,D`5m)!N!H&!!!!GJ!!!!%!N"`3U3!!!!)\r!!J#3"!-!!!!)"!F!N"X"M+)!N#0cCfP%9N08!*!3YV",``#3"iB!!!#&!!!!!3#\r3("#U!!!!!`!#!*!%!J!!!!J%"`#3'`'ESJ#3)f&X4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,83%H'e%"(K!!!"F!!!!`X!N!L,`p&G!!!!KJ!"l+F!"!!\r!rrrrrJ#3#"#V!!!!!J#3"!U@!*!D!CbL!*!I"!#3"@&XGf&dBfJZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4iE83%H%!!!(D!!!#j3#3#'TAEr8\r!!!#'!!(XU!!%!!$rrrrq!*!)%+`!!!!#!*!%$*B!N"S"R+)!N"m%!*!&BR*[B@4\rMBA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H+e%"(L!!!\r#`!!!"T-!N!KBhjJM!!!!KJ!"l+N!"!!!rrrrrJ#3#"#Y!!!!!J#3"!L@!*!D!Cb\rL!*!I"!#3"@0YF'&Q,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,8\r3%H+e%"(L!!!"DJ!!"4F!N!JpZTTN!!!!KJ!"l+S!"!!!rrrrrJ#3#"#Z!!!!!J#\r3"!f@!*!D!CbL!*!I"!#3"@0YF'&QAfC[FQdZCQ4'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)Y4!4iV83%H)!!!NF!!!8P!#3#"#r'm3!!!#'!!(XU`!%!!$\rrrrrq!*!)%+m!!!!#!*!%#jB!N"S"R+)!N"m%!*!&D@jdCA*MEfdZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4iV83%H)!!!(1!!!$)!#3#*D5)0`\r!!!#'!!(XV!!%!!$rrrrq!*!)%,!!!!!#!*!%#CB!N"S"R+)!N"m%!*!&E'PcG'9\rZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H+e%"(L!!!!hJ!\r!!8F!N!KZk6mG!!!!KJ!"l+d!"!!!rrrrrJ#3#"#a!!!!!J#3"!L@!*!D!CbL!*!\rI"!#3"@jKE@9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H+\re%"(L!!!#4!!!"6`!N!Mf[e%S!!!!KJ!"l+i!"!!!rrrrrJ#3#"#b!!!!!J#3"!Z\r@!*!D!CbL!*!I"!#3"A"XBAPKD@CQ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,83%H+e%"(L!!!",!!!!EN!N!LAD`p!!!!!KJ!"l+m!"!!!rrrrrJ#\r3#"#c!!!!!J#3"!Z@!*!D!CbL!*!I"!#3"A"XBAPLB@0V,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,83%H+e%"(L!!!#%J!!!pF!N!JU(39[!!!!KJ!\r"l,!!"!!!rrrrrJ#3#"#d!!!!!J#3"!U@!*!D!CbL!*!I"!#3"A"XBAP[E'3ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4iV83%H)!!!%Q!!!"SJ#\r3#*CMRa`!!!#'!!(XX3!%!!$rrrrq!*!)%,8!!!!#!*!%#*B!N"S"R+)!N"m%!*!\r&FQ&ND@mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)Y4!4iE83%H%\r!!!'L!!!#k!#3#*68"Hd!!!#'!!(XXJ!%!!$rrrrq!*!)%,B!!!!#!*!%"TB!N"S\r"R+)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8\r3%H+e%"(L!!!!lJ!!!E)!N!J"BUP6!!!!KJ!"l,-!"!!!rrrrrJ#3#"#h!!!!!J#\r3"!Z@!*!D!CbL!*!I"!#3"A*PBep`E'&j,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,83%H+e%"(L!!!",J!!!Ed!N!LrC,""!!!!KJ!"l,3!"!!!rrr\rrrJ#3#"#i!!!!!J#3"!Q@!*!D!CbL!*!I"!#3"A*PBfpbC#j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(LY4!4iJ!!!B)!!!*6!*!)5%%JG3!!!)B\r!!Hbe!!3!!2rrrri!N!J3Z3!!!!)!N!3+PJ#3'J'FSJ#3(`3!N!9eEQPMBA0d,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H+e%"(L!!!!aJ!!!68\r!N!M82Vd&!!!!KJ!"l,B!"!!!rrrrrJ#3#"#k!!!!!J#3"!5@!*!D!CbL!*!I"!#\r3"AJZF(P%9N08!*!3YV",a3#3"iF!!!#&!!!!!3#3("#l!!!!!`!#!*!%"3!!!!J\r%"`#3'`'ESJ#3)f&eC'P[4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8\r3%H+e%"(L!!!#&!!!"4-!N!J#)#48!!!!K`!"l,J!"!!!rrrrrJ#3#"#m!!!!!J#\r3"!H@!*!D!CfL!*!I"!#3"A"XBANZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r5+Q0S!*!)Y4!4iV83%H)!!!$Q!!!"63#3#+`PTA-!!!#(!!(XZ3!%!!$rrrrq!*!\r)%,d!!!!#!*!%"TB!N"S"RD)!N"m%!*!&8N9"4%e&4&C$9!#3%,D`5m8!N!H*!!!\r!K3!!!!%!N"`3``!!!!-!!J#3"!)!!!!)"!F!N"X"Qk)!N#0MC%C@3e3!N!F))!!\r!!3#3#!F!N")"9d4#6Ne69d3!N!Le%"(MY4!4i`!!!k!!!!K2!*!)'`2%!J!!!)N\r!!Hc!!!3!!2rrrri!N!J3a!!!!!)!N!3'PJ#3'J'ISJ#3(`3!N!9$4#jNEf0'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4il83%H-!!!&D!!!#63#3#)*\rQ$qm!!!#*!!(X`3!%!!$rrrrq!*!)%-8!!!!#!*!%#CB!N"S"Rk)!N"m%!*!&Bf4\rKD@CQ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H1e%"(M!!!\r"#J!!!D`!N!K"KQJf!!!!L3!"l--!"!!!rrrrrJ#3#"$(!!!!!J#3"!Q@!*!D!Cq\rL!*!I"!#3"@aTFh4MC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\re%"(MY4!4i`!!"'S!!!T`!*!)2R*G"3!!!)N!!Hc%!!3!!2rrrri!N!J3b!!!!!)\r!N!3*PJ#3'J'ISJ#3(`3!N!9`E'&jBf3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&45+Q0S!*!)Y4!4il83%H-!!!)d!!!%)!#3#'D6M2!!!!#*!!(Xa3!%!!$rrrr\rq!*!)%-N!!!!#!*!%"TB!N"S"Rk)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,83%H1e%"(M!!!"`J!!![d!N!M-"*CS!!!!L3!"l-B\r!"!!!rrrrrJ#3#"$+!!!!!J#3"!Q@!*!D!CqL!*!I"!#3"A*PBhCMC#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(MY4!4i`!!"HJ!!!kq!*!)fXq\rJc!!!!)N!!Hc(!!3!!2rrrri!N!J3b`!!!!)!N!3*PJ#3'J'ISJ#3(`3!N!9cC@j\rNBf3ZF(P%9N08!*!3YV",aJ#3"iS!!!#&!!!!!3#3("$-!!!!!`!#!*!%!`!!!!J\r%"`#3'`'ESJ#3)fCXF%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Le%"(\rMY4!4i`!!!3S!!!,H!*!)"1)Gh3!!!)S!!Hc*!!3!!2rrrri!N!J3c3!!!!)!N!3\r*PJ#3'J'JSJ#3(`3!N!9dBf&MD'8ZCQ4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)Y4!4il83%H-!!!%8!!!"j`#3#+f3!"bm!!!!LJ!"l-S!"!!!rrrrrJ#\r3#"$1!!!!!J#3"!Q@!*!D!D#L!*!I"!#3"A4MB@0SC5j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9%0A588!N!Le%"(MY4!4i`!!!8!!!!4+!*!)k#rr"3!!!)S!!Hc\r,!!3!!2rrrri!N!J3c`!!!!)!N!3+PJ#3'J'JSJ#3(`3!N!9dCA0dAf0L,QCN4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H1e%"(M!!!#aJ!!"HX!N!K\rbj&+C!!!!LJ!"l-`!"!!!rrrrrJ#3#"$3!!!!!J#3"!U@!*!D!D#L!*!I"!#3"A4\rPFh4IBf)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y4!4il83%H-\r!!!%b!!!%+3#3#16K@p3!!!#+!!(Xc3!%!!$rrrrq!*!)%0%!!!!#!*!%$*B!N"S\r"S+)!N"m%!*!&G'9cG&pZEf0L,QCN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,83%H5e%"(N!!!#"!!!"$J!N!M*634f!!!!LJ!"l-i!"!!!rrrrrJ#3#"$\r5!!!!!J#3"!b@!*!D!D#L!*!I"!#3"A4PFh4IEQpMBLj`H84@3e3!N"#fX%[(!*!\r(L`!!!)8!!!!"!*!F%0-!!!!$!!)!N!3#!!!!#!3(!*!E!CZL!*!MCfa'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4j,83%H3!!!-#!!!)e!#3#&@EAYd\r!!!#,!!(Xd!!%!!$rrrrq!*!)%03!!!!#!*!%#jB!N"S"SD)!N"m%!*!&BQ&MDfC\rKBf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4j,83%H3!!!$\rk!!!"QJ#3#-$f*c`!!!#,!!(Xd3!%!!$rrrrq!*!)%08!!!!#!*!%#CB!N"S"SD)\r!N"m%!*!&CfaTEQC[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8\r3%H5ePp[F!!!'[!!!$f3!N!Ke`Nph!!!!L`!"l0)!"!!!rrrrrJ#3#"$J!!!!!J#\r3"!L@!*!D!D'L!*!I"!#3"@YTG'9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,83%H5e%"(N!!!,kJ!!-3%!N!Lj,VQ(!!!!L`!"l0-!"!!!rrrrrJ#\r3#"$K!!!!!J#3"!L@!*!D!D'L!*!I"!#3"@YeER0d,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&A4%*1690A4!#3#,83%H5e%"(N!!!%[J!!#9J!N!LN`')1!!!!L`!"l03\r!"!!!rrrrrJ#3#"$L!!!!!J#3"!U@!*!D!D'L!*!I"!#3"@eME'pMDbjNEf0'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4j,83%H3!!"Gk!!"*k3#3#*[\rbpI3!!!#,!!(Xe3!%!!$rrrrq!*!)%1-!!!!#!*!%#CB!N"S"SD)!N"m%!*!&E@0\rXEf0V,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H5e%"(N!!!\r$mJ!!#'N!N!Lf#[h9!!!!L`!"l0B!"!!!rrrrrJ#3#"$N!!!!!J#3"!Q@!*!D!D'\rL!*!I"!#3"@eTH'PZCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\re%"(NY4!4j!!!"13!!!bb!*!)(H!j)!!!!)X!!HcA!!3!!2rrrri!N!J3j3!!!!)\r!N!3)PJ#3'J'KSJ#3(`3!N!9ZGA*LFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&)UBfJ!N!Le%"(NY4!4j!!!![3!!!9J!*!)l"DjP`!!!)X!!HcB!!3!!2rrrri\r!N!J3jJ!!!!)!N!3'PJ#3'J'KSJ#3(`3!N!9548&%689'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)Y4!4j,83%H3!!!5J!!!,I3#3#)-+%@J!!!#,!!(Xf3!\r%!!$rrrrq!*!)%1F!!!!#!*!%"jB!N"S"SD)!N"m%!*!&HR*RBLj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Le%"(KY4!4i3!!!@S!!!,p!*!)6Q`#5J!\r!!)8!!HbP!!-!!2rrrri!N!J3k!!!!!)!N!3'PJ#3'J'ESJ#3(`3!N!9548&%689\r%9N08!*!3YV",b!#3"id!!!#&!!!!!3#3("$T!!!!!`!#!*!%!J!!!!J%"`#3'`'\rESJ#3)h0f4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H@e%"(P!!!\r#L!!!"0F!N!MR"FrF!!!!M3!"l18!"!!!rrrrrJ#3#"$U!!!!!J#3"!b@!*!D!D1\rL!*!I"!#3"@*eFR0dBf&`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Le%"(PY4!4j3!!"%S!!!Sr!*!)CC6J-!!!!)d!!HcQ!!3!!2rrrri!N!J3k`!\r!!!)!N!3,PJ#3'J'MSJ#3(`3!N!9MEfjdBf&`G#j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&)UBfJ!N!Le%"(PY4!4j3!!!L!!!!2(!*!)"Q-hfJ!!!)d!!HcR!!3\r!!2rrrri!N!J3l!!!!!)!N!3'PJ#3'J'MSJ#3(`3!N!9548&%689'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4jE83%H8!!!-B!!!([!#3#,ACa(`!!!#\r0!!(Xk!!%!!$rrrrq!*!)%1d!!!!#!*!%#TB!N"S"Sk)!N"m%!*!&FQGLCh*KBLj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(PY4!4j3!!!5i!!!(\rd!*!)m48h0J!!!)d!!HcT!!3!!2rrrri!N!J3lJ!!!!)!N!31PJ#3'J'MSJ#3(`3\r!N!9cD@e`E'9TER"eG#j`H84@3e3!N"#fX%[)!*!(MJ!!!)8!!!!"!*!F%1m!!!!\r$!!)!N!3&!!!!#!3(!*!E!CZL!*!MGQPNC@p'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y4!4kE83%HN!!!@'!!!26J#3#&+[+K3!!!#1!!(Xk`!%!!$rrrr\rq!*!)%2!!!!!#!*!%#*B!N"S"T+)!N"m%!*!&BA"XBANZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)Y4!4kV83%HS!!!Y!!!!G2`#3#&1N'6N!!!#1!!(\rXl!!%!!$rrrrq!*!)%2%!!!!#!*!%$*B!N"S"T+)!N"m%!*!&BfeTCLeQD@aY,Qe\rc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H@e%"(P!!!$Z!!!#QF\r!N!J5p4Zk!!!!MJ!"l1d!"!!!rrrrrJ#3#"$b!!!!!J#3""'@!*!D!D5L!*!I"!#\r3"84TFh"XBAP@D@4PEdPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,83%H@e%"(P!!!'b!!!%BN!N!LpEbea!!!!MJ!"l1i!"!!!rrrrrJ#3#"$c!!!\r!!J#3"!L@!*!D!D5L!*!I"!#3"84cC@jN,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,83%HZe%"(V!!!%TJ!!$Hi!N!KDAZ1j!!!!MJ!"l1m!"!!!rrr\rrrJ#3#"$d!!!!!J#3"!U@!*!D!D5L!*!I"!#3"@PYCf0[ERBZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4jE83%H8!!!BQ!!!3-3#3#2fj3*!!!!!\r!MJ!"l2!!"!!!rrrrrJ#3#"$e!!!!!J#3"!k@!*!D!D5L!*!I"!#3"8aTGQ9@D@4\rPEdPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H@e%"(P!!!\r&%!!!$EN!N!MQqK!D!!!!MJ!"l2%!"!!!rrrrrJ#3#"$f!!!!!J#3"!q@!*!D!D5\rL!*!I"!#3"8aTGQ9@D@4PEdpeG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Le%"(PYCIEh!!!"*)!!!`4!*!)lMjqP3!!!)i!!Hcb!!3!!2rrrri!N!J\r3p`!!!!)!N!3,PJ#3'J'NSJ#3(`3!N!92E'4@Bfp`H5j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&)UBfJ!N!Le%"(PY4!4jJ!!"Z)!!!la!*!)mA#3!"N!!!#1!!(\rXm`!%!!$rrrrq!*!)%2J!!!!#!*!%"TB!N"S"T+)!N"m%!*!&8N9"4%e&4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HZe%"(V!!!#cJ!!"QX!N!Lr4-c\rB!!!!MJ!"l23!"!!!rrrrrJ#3#"$j!!!!!J#3"!b@!*!D!D5L!*!I"!#3"A*RBM*\rfD@4PEbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(VY4!4k`!\r!!)i!!!#k!*!)JXqTC`!!!)i!!Hce!!3!!2rrrri!N!J3qJ!!!!)!N!3,PJ#3'J'\rNSJ#3(`3!N!9cC@jNC'9QFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Le%"(QY4!4jJ!!!P3!!!6[!*!)K&(`6!!!!)i!!Hcf!!3!!2rrrri!N!J3q`!\r!!!)!N!3-PJ#3'J'NSJ#3(`3!N!9@B@4NBf&MD'8ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)Y4!4jV83%HB!!"ZZ!!"F!*!*e9&@p`!!!)i!!Hch!!3\r!!2rrrri!N!J3r!!!!!)!N!3&PJ#3'J'NSJ#3(`3!N!9@BLj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%0A588!N!Le%"(QY4!4jJ!!"!!!!#(%!*!)%b'Aj`!!!)i\r!!Hci!!3!!2rrrri!N!J3r3!!!!)!N!3*PJ#3'J'NSJ#3(`3!N!9@BNC[FQdZCQ4\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4jV@!+AS!!!N'!!!CdJ#\r3#%B$rM-!!!#1!!(Xq3!%!!$rrrrq!*!)%2i!!!!#!*!%#*B!N"S"T+)!N"m%!*!\r&9Q0[F(NZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4jV83%HB\r!!!e'!!!YEJ#3#+0(VUm!!!#1!!(XqJ!%!!$rrrrq!*!)%2m!!!!#!*!%"TB!N"S\r"T+)!N"m%!*!&9N05,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8\r3%HDe%"(Q!!!'bJ!!(63!N!LMB4bq!!!!MJ!"l2X!"!!!rrrrrJ#3#"%!N!3#!*!\r%#jB!N"S"T+)!N"m%!*!&9Q0b5@jNCAJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y4!4jl83%HF!!!Fi!!!C@J#3#*39BCi!!!#1!!(Xr!!%!!$rrrr\rq!*!)%3%!!!!#!*!%#*B!N"S"T+)!N"m%!*!&9Q9NDA3ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)Y4!4jl83%HF!!!,D!!!Af`#3#,M%5hX!!!#1!!(\rXr3!%!!$rrrrq!*!)%3)!!!!#!*!%$*B!N"S"T+)!N"m%!*!&9Q9NDA4'Eh*Y,QC\rN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HDe%"(Q!!!K9J!!GMi\r!N!MEibUj!!!!MJ!"l2i!"!!!rrrrrJ#3#"%$!!!!!J#3"!L@!*!D!D5L!*!I"!#\r3"9C'D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HHe%"(\rR!!!$&J!!"h)!N!K"l+8*!!!!MJ!"l2m!"!!!rrrrrJ#3#"%%!!!!!J#3"!H@!*!\rD!D5L!*!I"!#3"9CQDAJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)Y4!4jl83%HF!!!"+!!!!6`#3#*0Q$`F!!!#1!!(Y!!!%!!$rrrrq!*!)%38!!!!\r#!*!%#jB!N"S"T+)!N"m%!*!&9QGPEQ9bD@-ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)Y4!4jV83%HB!!!18!!!)r3#3#,B5YC3!!!#1!!(Y!3!%!!$\rrrrrq!*!)%3B!!!!#!*!%#jB!N"S"T+)!N"m%!*!&9NGbB@*LCA)ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!9G%3Nj08eG%!*!)Y4!4kl83%HX!!!MD!!!6BJ#3#$eS``S\r!!!#1!!(Y!J!%!!$rrrrq!*!)%3F!!!!#!*!%#CB!N"S"T+)!N"m%!*!&GQPNC@m\rZC'pM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%Hbe%"(X!!!&+J!\r!$(F!N!MpV(*H!!!!MJ!"l3-!"!!!rrrrrJ#3#"%)!!!!!J#3"!b@!*!D!D5L!*!\rI"!#3"ACTC'9[-R*RBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\re%"(SY4!4k!!!",`!!"0b!*!)mSX"A`!!!)i!!Hd%!!3!!2rrrri!N!J4#3!!!!)\r!N!3*PJ#3'J'NSJ#3(`3!N!9@D@9hCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y4!4k,83%HJ!!!9N!!!0[`#3#2!&&#J!!!#1!!(Y"3!%!!$rrrr\rq!*!)%3S!!!!#!*!%#*B!N"S"T+)!N"m%!*!&9QPZCQmZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y4!4k,83%HJ!!!,X!!!(43#3#,lSCVS!!!#1!!(\rY"J!%!!$rrrrq!*!)%3X!!!!#!*!%#TB!N"S"T+)!N"m%!*!&9QeVDR"PCbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(SY4!4k!!!$!J!!#"3!*!\r)b[p5pJ!!!)i!!Hd(!!3!!2rrrri!N!J4$!!!!!)!N!3)PJ#3'J'NSJ#3(`3!N!9\r@F'aKH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(SYCIEh!!\r!$V`!!#G#!*!)U`pZ,J!!!)i!!Hd)!!3!!2rrrri!N!J4$3!!!!)!N!3(PJ#3'J'\rNSJ#3(`3!N!9@FQ9M,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8\r3%HQePp[F!!!2+J!!+Ai!N!Lp(mDJ!!!!MJ!"l3N!"!!!rrrrrJ#3#"%1!!!!!J#\r3"!L@!*!D!D5L!*!I"!#3"9CbC@0L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,83%HQe%"(T!!!&LJ!!#hX!N!LpUKSd!!!!MJ!"l3S!"!!!rrrrrJ#\r3#"%2!!!!!J#3"!Z@!*!D!D5L!*!I"!#3"9CbC@0PDACP,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,83%HQe%"(T!!!&T!!!$Ed!N!Mj"8T9!!!!MJ!\r"l3X!"!!!rrrrrJ#3#"%3!!!!!J#3"!L@!*!D!D5L!*!I"!#3"9CcC@jN,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HQe%"(T!!!!lJ!!!A-!N!J\r6QkaH!!!!MJ!"l3`!"!!!rrrrrJ#3#"%4!!!!!J#3"!L@!*!D!D5L!*!I"!#3"9C\rcG'&d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HQeJ#Pk!!!\r$f!!!#3X!N!K!`LXa!!!!MJ!"l3d!"!!!rrrrrJ#3#"%5!!!!!J#3"!L@!*!D!D5\rL!*!I"!#3"9CdD@eP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8\r3%HQe%"(T!!!$)!!!"lS!N!LJlb,L!!!!MJ!"l3i!"!!!rrrrrJ#3#"%6!!!!!J#\r3"!U@!*!D!D5L!*!I"!#3"9CeEQT`C@FZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y4!4l,83%H`!!!&b!!!$$3#3#2'S5#J!!!#1!!(Y$`!%!!$rrrr\rq!*!)%43!!!!#!*!%$TB!N"S"T+)!N"m%!*!&Gf&dBfKMGA*cEh)ZF(P%9N08!*!\r3YV",cJ#3"im!!!"f!!!!!3#3("%9!!!!!J!#!*!%"`!!!!J%"`#3'`'-SJ#3)h0\r[BfYPG(0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF`,,mA-!!!!$\r8!!!"%3#3#2-JJ@d!!!#2!!(Y%3!$!!$rrrrq!*!)%4B!!!!#!*!%$*B!N"S"TD)\r!N"m%!*!&BR*[B@4MBA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA-#efc8m!!!"V!!!!U3!N!M-d,DY!!!!M`!"l4)!!`!!rrrrrJ#3#"%A!!!\r!!J#3"!U@!*!D!D@L!*!I"!#3"@9MD'pcGR)ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aF`,AE06`!!!*X!!!%F3#3#+"B"HX!!!#2!!(Y%`!$!!$\rrrrrq!*!)%4J!!!!#!*!%#CB!N"S"TD)!N"m%!*!&CQPZCf9b,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-#efc8m!!!'B!!!$LN!N!K9MIfB!!!\r!M`!"l43!!`!!rrrrrJ#3#"%C!!!!!J#3"!D@!*!D!D@L!*!I"!#3"@CdF#j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c!X[aF`!!!#Y!!!#"(!*!\r)BmJUU3!!!)m!!Hd9!!-!!2rrrri!N!J4'J!!!!)!N!3*PJ#3'J'PSJ#3(`3!N!9\rREh"SCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF`,3DEJN\r!!!4-!!!)EJ#3#"G[Yp3!!!#2!!(Y&J!$!!$rrrrq!*!)%4X!!!!#!*!%#*B!N"S\r"TD)!N"m%!*!&E@0KFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aF`E,mA-%!!!$8!!!"%J#3#*,&cUJ!!!#2!!(Y&`!$!!$rrrrq!*!)%4`!!!!\r#!*!%#*B!N"S"TD)!N"m%!*!&FQ&ND@mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&45+Q0S!*!)X[aF[l,mA,m!!!(!!!!$E3#3#"9BN!!!N!52!!(Y'!!$!!$rrrr\rq!*!)%4d!!!!#!*!%"TB!N"S"TD)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mA-'br&c"!!!"K!!!!RN!N!MZ#$iG!!!!M`!"l4N\r!!`!!rrrrrJ#3#"%H!!!!!J#3"!U@!*!D!D@L!*!I"!#3"A*`HA4SEfiZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF`EAE06`!!!)U!!!%#J#3#)`\rFJX8!!!#2!!(Y'J!$!!$rrrrq!*!)%4m!!!!#!*!%#jB!N"S"TD)!N"m%!*!&FR"\rjG'K[EQ3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF`EAE06`\r!!!35!!!*%`#3#$(0FR-!!!#2!!(Y'`!$!!$rrrrq!*!)%5!!!!!#!*!%#CB!N"S\r"TD)!N"m%!*!&G'9XEQ9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA-'efc8m!!!$2!!!"aB!N!KqSl*%!!!!M`!"l4`!!`!!rrrrrJ#3#"%K!!!\r!!J#3"!f@!*!D!D@L!*!I"!#3"A4SFQpeCfK`GA3ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aF`EAE06d!!!)@!!!&"!#3#0"4&#)!!!#2!!(Y(3!\r$!!$rrrrq!*!)%5)!!!!#!*!%#TB!N"S"TD)!N"m%!*!&G@4`C@0SEbj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c"X[aF`J!!!,3!!!$F!*!)XVU\rM)`!!!)m!!HdH!!-!!2rrrri!N!J4)`!!!!)!N!3+PJ#3'J'PSJ#3(`3!N!9eEQP\rMBA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-+br&c#!!!\r!YJ!!!0d!N!MbD@!,!!!!M`!"l4m!!`!!rrrrrJ#3#"%N!!!!!J#3"!f@!*!D!D@\rL!*!I"!#3"A9ZDAKME'PPER3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aF`V,mA-)!!!%1!!!"IJ#3#1#*0GF!!!#2!!(Y)!!$!!$rrrrq!*!)%58\r!!!!#!*!%$CB!N"S"TD)!N"m%!*!&G@jTH(0PFRCPFLj`H84@3e3!N"#fjUpUYZD\r[DJ!!!*)!!!"f!!!!!3#3("&!!!!!!J!#!*!%"`!!!!J%"`#3'`'-SJ#3)h4SFQ9\rKC(0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4mVD6T3!!!!4m!!!\r)X!#3#$MPSh8!!!#5!!(Y2!!$!!$rrrrq!*!)%8%!!!!#!*!%"TB!N"S"U+)!N"m\r%!*!&BR9R,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%I+fNk8\r!!!!'*!!!%%3!N!LF'@Nf!!!!NJ!"l6d!!`!!rrrrrJ#3#"&#!!!!!J#3"!H@!*!\rD!DLL!*!I"!#3"@CTEQ3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)Y4!4mE83%I%!!!-+!!!(q`#3#$@T44N!!!#5!!(Y2J!$!!$rrrrq!*!)%8-!!!!\r#!*!%$*B!N"S"U+)!N"m%!*!&4f9ZCA*KG'pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88LTMD!#3#,83%I'f3,'&!!!"@J!!!R!!N!MJ#rkS!!!!NJ!"l6m!!`!\r!rrrrrJ#3#"&%!!!!!J#3"!D@!*!D!DLL!*!I"!#3"9*&384048C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(bY4!4mJ!!'0S!!&56!*!)HIL6L!!!!*)\r!!He!!!-!!2rrrri!N!J443!!!!)!N!3(PJ#3'J'SSJ#3(`3!N!9cH@jM,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%I+fNk8"!!!%@J!!$!%!N!K\r*5khr!!!!NJ!"l8%!!`!!rrrrrJ#3#"&'!!!!!J#3"!Q@!*!D!DLL!*!I"!#3"A4\rPE'jPG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf3,'&YN#aK3!\r!"ki!!"@c!*!)m)BP+`!#,lS!!Lqm!!-!!2rrrri!N!JER`!!!!)!N!3-PJ#3'J'\rSSJ#3(`3!N!9$Eh*[GA4TEQ8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)YN#aN!#fiCJ9!!!#IJ!!"Yd!N!LhASG$!!)[ZJ!#,ld!!`!!rrrrrJ#3#"Z\rH!!!!!J#3"!H@!*!D!DLL!*!I"!#3"@CMEA!ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YN#aN!#fiCJ9!!!%G!!!#pi!N!Mr40,L!!)[ZJ!#,m%!!`!\r!rrrrrJ#3#"ZG!!!!!J#3"!Z@!*!D!DLL!*!I"!#3"A0aG@&cD'9b,R"j4&C$9!#\r3%,D`5p!!N!H6!!!!GJ!!!!%!N"`45!!!!!)!!J#3"!F!!!!)"!F!N"X"M+)!N#0\rdDfPZG'9b4&C$9!#3%,D`5p!!N!H8!!!!N`!!!!%!N"`453!!!!-!!J#3"!8!!!!\r)"!F!N"X"UD)!N#0RG@PNEdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&c0X[aFc3!!#rB!!#VK!*!)CQUk#`!!!*3!!He'!!3!!2rrrri!N!J45J!!!!)\r!N!30PJ#3'J'USJ#3(`3!N!9"G(4b4'PKE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mA-fbr&c0!!!#(!!!"%-!N!KZqU5#!!!!P!!"l8F!"!!\r!rrrrrJ#3#"&,!!!!!J#3"!Z@!*!D!DUL!*!I"!#3"@*bEhGZD@&Z,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-fbr&c0!!!(F!!!&LN!N!K5cZP\rV!!!!P!!"l8J!"!!!rrrrrJ#3#"&-!!!!!J#3"!q@!*!D!DUL!*!I"!#3"@0KERC\rKFf9fC@jdFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c1X[a\rFcJ!!"63!!!Yi!*!)rjem)J!!!*3!!He*!!3!!2rrrri!N!J463!!!!)!N!3*PJ#\r3'J'USJ#3(`3!N!9ND@&XEfFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aFcV,mA-i!!!1U!!!(RJ#3#(!XA*3!!!#8!!(Y5J!%!!$rrrrq!*!)%8i\r!!!!#!*!%$*B!N"S"UU)!N"m%!*!&C@aPBh4bEfjc,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mA-kbr&c1!!!&m!!!$dF!N!K5`P,K!!!!P!!"l8X\r!"!!!rrrrrJ#3#"&2!!!!!J#3"!L@!*!D!DUL!*!I"!#3"@KKEQpT,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-kbr&c1!!!!b!!!!6!!N!J`X9+\rB!!!!P!!"l8`!"!!!rrrrrJ#3#"&3!!!!!J#3"!L@!*!D!DUL!*!I"!#3"@KPE'a\r[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-kbr&c1!!!"-!!\r!!Id!N!L8`&R9!!!!P!!"l8d!"!!!rrrrrJ#3#"&4!!!!!J#3"!b@!*!D!DUL!*!\rI"!#3"@PYB@GPC(*KGbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&c1X[aFcJ!!!)i!!!$0!*!)A*1Q'J!!!*3!!He1!!3!!2rrrri!N!J48J!!!!)\r!N!3-PJ#3'J'USJ#3(`3!N!9TE@&RCACTCAFZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aFcV,mA-i!!!5N!!!-L!#3#"mVYE3!!!#8!!(Y6`!%!!$\rrrrrq!*!)%9-!!!!#!*!%"jB!N"S"UU)!N"m%!*!&DfPXE#j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c2X[aFc`!!!F`!!!1'!*!)$`d@N`!!!*3\r!!He3!!3!!2rrrri!N!J49!!!!!)!N!3,PJ#3'J'USJ#3(`3!N!9XDA0dG(*PC5j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c0X[aFc3!!#,i!!"C\r-!*!)JBXPM3!!!*3!!He4!!3!!2rrrri!N!J493!!!!)!N!3+PJ#3'J'USJ#3(`3\r!N!90B@j3B@GP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-q\rbr&c2!!!)$!!!'C%!N!MLR,XK!!!!P!!"l9)!"!!!rrrrrJ#3#"&@!!!!!J#3"!H\r@!*!D!DUL!*!I"!#3"@eLEhJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aFcE,mA-d!!!5d!!!0&`#3#%TQG4F!!!#8!!(Y8`!%!!$rrrrq!*!)%9F\r!!!!#!*!%$CB!N"S"UU)!N"m%!*!&6@PYC9CTCAGPFLj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&c2X[aFc`!!!D`!!!4N!*!)r686TJ!!!*3!!He\r8!!3!!2rrrri!N!J4@!!!!!)!N!34PJ#3'J'USJ#3(`3!N!9ZCAGYC@jeBQ&bC'9\rYEbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c2X[aFc`!!!4B\r!!!'j!*!)#,0i)`!!!*3!!He9!!3!!2rrrri!N!J4@3!!!!)!N!30PJ#3'J'USJ#\r3(`3!N!9[F(4TEfjYC@je,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA-qbr&c3!!!$A!!!"R%!N!Lc-)kT!!!!P!!"l9B!"!!!rrrrrJ#3#"&D!!!\r!!J#3"!L@!*!D!DUL!*!I"!#3"A"KD@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mA0#br&c3!!!(C!!!%+-!N!JUXrTq!!!!P!!"l9N!"!!!rrr\rrrJ#3#"&G!!!!!J#3"!D@!*!D!DUL!*!I"!#3"A*YG#j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&c0X[aFc3!!"5)!!!eZ!*!)N!#jS-i!!!#8!!(\rY@J!%!!$rrrrq!*!)%9i!!!!#!*!%$TB!N"S"UU)!N"m%!*!&8fKPE'aAD@jNEhF\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFd,,mA0!!!"4`!!!\rm$`#3#!LPb8`!!!#8!!(Y@`!%!!$rrrrq!*!)%9m!!!!#!*!%$*B!N"S"UU)!N"m\r%!*!&FfpXDA4KDA*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rmA0'br&c4!!!3Z!!!2LF!N!LGTE'-!!!!P!!"l9`!"!!!rrrrrJ#3#"&J!!!!!J#\r3"!Z@!*!D!DUL!*!I"!#3"A0[FR4fDA0e,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mA0'br&c4!!!&cJ!!$iS!N!Ml#QX@!!!!P!!"l9d!"!!!rrr\rrrJ#3#"&K!!!!!J#3"!Q@!*!D!DUL!*!I"!#3"A0fDfPXE#j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c4X[aFd3!!!L!!!!BA!*!)YSjN&J!!!*3\r!!HeH!!3!!2rrrri!N!J4BJ!!!!)!N!3*PJ#3'J'USJ#3(`3!N!9cGfPdBfJZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFdE,mA0%!!!M)!!!ES`#\r3#*`6T(%!!!#8!!(YA`!%!!$rrrrq!*!)%@-!!!!#!*!%#*B!N"S"UU)!N"m%!*!\r&G'YYB@iZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFdE,mA0%\r!!!&%!!!#'!#3#%TB,&B!!!#8!!(YB!!%!!$rrrrq!*!)%@3!!!!#!*!%"jB!N"S\r"UU)!N"m%!*!&GfPcD#j`H84@3e3!N"#fX%[8!*!(P3!!!*-!!!!"!*!F%@8!!!!\r$!!)!N!3%!!!!#!3(!*!E!DQL!*!ME@&dG%C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&c5X[aFdJ!!!9)!!!*`!*!)H%K6@!!!!*8!!HeL!!3!!2rrrri\r!N!J4CJ!!!!)!N!34PJ#3'J'VSJ#3(`3!N!8`-#e)48a-6beA6e*-4#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c5X[aFdJ!!!E`!!!-e!*!)rDd\rP4!!!!*8!!HeM!!3!!2rrrri!N!J4C`!!!!)!N!36PJ#3'J'VSJ#3(`3!N!9KEQP\rYBA4TEfiYFfPYF'aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rmA0+br&c5!!!#-!!!"#!!N!K*Umf5!!!!P3!"l@3!"!!!rrrrrJ#3#"&S!!!!!J#\r3""b@!*!D!DZL!*!I"!#3"@&ZD@eKG'P[ELeh,ACPE'pMDA4j,@0dFQ`ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFdV,mA0)!!!,'!!!&T!#3#!J\r1d`X!!!#9!!(YC3!%!!$rrrrq!*!)%@N!!!!#!*!%'jB!N"S"Uk)!N"m%!*!&BQP\rZC#eh,@eeE(3YBf&XE(-YF#edHA"P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,,mA0+br&c5!!!"IJ!!!T)!N!J9#kLP!!!!P3!"l@B!"!!!rrrrrJ#\r3#"&U!!!!!J#3""@@!*!D!DZL!*!I"!#3"@0KERCKFbeNC@e[,A0TEA"XC5j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c6X[aFd`!!!`B!!!HM!*!\r)%U2jXJ!!!*8!!HeR!!3!!2rrrri!N!J4D`!!!!)!N!35PJ#3'J'VSJ#3(`3!N!9\rMB@jfBA-YCh*TC'4TEQFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aFdl,mA0-!!!-b!!!)I`#3#)3khj3!!!#9!!(YD!!%!!$rrrrq!*!)%@`!!!!\r#!*!%(*B!N"S"Uk)!N"m%!*!&Bf&ZGQ&c,@e[GQPZCbe[FLeMFQ9KG'PZCbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c6X[aFd`!!!VJ!!!Gh!*!\r)b(XkN3!!!*8!!HeT!!3!!2rrrri!N!J4E3!!!!)!N!3BPJ#3'J'VSJ#3(`3!N!9\rMB@jfBA-YE@pfD@jR,AFYE@peFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)X[aFdl,mA0-!!!2+!!!*N3#3#2N!,9B!!!#9!!(YDJ!%!!$rrrrq!*!\r)%@i!!!!#!*!%&jB!N"S"Uk)!N"m%!*!&Bf&ZGQ&c,@eeE(3YDA4PE5ecC@`ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFdl,mA0-!!!+b!!!&V3#\r3#18[bk)!!!#9!!(YD`!%!!$rrrrq!*!)%@m!!!!#!*!%'TB!N"S"Uk)!N"m%!*!\r&Bf&ZGQ&c,A*PB@4TEQFYG'&R,@PZCQmZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)X[aFdl,mA0-!!!)Q!!!%"J#3#&RElb-!!!#9!!(YE!!%!!$rrrr\rq!*!)%A!!!!!#!*!%'TB!N"S"Uk)!N"m%!*!&Bf&ZGQ&c,AFYGfPNCf9d,@4bBAF\rYC@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFe,,mA03!!!0\r!!!!(-3#3#)jG3k)!!!#9!!(YE3!%!!$rrrrq!*!)%A%!!!!#!*!%'CB!N"S"Uk)\r!N"m%!*!&Bf&ZGQ&c,AGTG'JYFf0bEfaXBQ&bFbj`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr&c8X[aFe!!!!k)!!!I5!*!)&`SA@`!!!*8!!HeZ!!3\r!!2rrrri!N!J4FJ!!!!)!N!30PJ#3'J'VSJ#3(`3!N!9ND@&XEfFYBQpi,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA05br&c8!!!"FJ!!!T`!N!L\rdNYTB!!!!P3!"l@m!"!!!rrrrrJ#3#"&c!!!!!J#3"!q@!*!D!DZL!*!I"!#3"@9\rZG(*j,A0TEA"XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c\r8X[aFe!!!!YB!!!B6!*!)j2(l$!!!!*8!!He`!!3!!2rrrri!N!J4G!!!!!)!N!3\rGPJ#3'J'VSJ#3(`3!N!9PER4bH5ehDA4S,A0SBA*PC#efBA*TB@*XC5j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c8X[aFe!!!!T)!!!5F!*!)a%F\r,23!!!*8!!Hea!!3!!2rrrri!N!J4G3!!!!)!N!3@PJ#3'J'VSJ#3(`3!N!9VD@a\rXD@jR,AGTEQ4[Gbeh,AGY,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA05br&c8!!!*c!!!)Qd!N!LCr0hS!!!!P3!"lA)!"!!!rrrrrJ#3#"&f!!!\r!!J#3""b@!*!D!DZL!*!I"!#3"@ePER8YB@aX,A4jF'9c,@pQ,@9ZG(*TCA-ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFeE,mA08!!!4!!!!-M`#\r3#*d1ka3!!!#9!!(YF`!%!!$rrrrq!*!)%AF!!!!#!*!%$TB!N"S"Uk)!N"m%!*!\r&E@9ZG5ecD@e`E'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rFeE,mA08!!!%N!!!#)!#3##12ppm!!!#9!!(YG!!%!!$rrrrq!*!)%AJ!!!!#!*!\r%(CB!N"S"Uk)!N"m%!*!&EQpd,AGSBA3YH@pe,@eTCfKd,A4SD@jV,6%ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFeE,mA08!!!&5!!!#G!#3#22\rN,4F!!!#9!!(YG3!%!!$rrrrq!*!)%AN!!!!#!*!%(CB!N"S"Uk)!N"m%!*!&EQp\rd,AGSBA3YH@pe,@eTCfKd,A4SD@jV,6)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)X[aFeE,mA08!!!+)!!!%[`#3#"NUDGJ!!!#9!!(YGJ!%!!$rrrr\rq!*!)%AS!!!!#!*!%(CB!N"S"Uk)!N"m%!*!&F'&MDf9b,@&ZC#e`E'&MCA)YG'p\rRCA4SCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFeE,mA08\r!!!&1!!!#U3#3#128-@8!!!#9!!(YG`!%!!$rrrrq!*!)%AX!!!!#!*!%%*B!N"S\r"Uk)!N"m%!*!&F'&MDf9b,A0TEA"XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&c9X[aFe3!!!MJ!!!3j!*!)rC!!($J!!!#9!!(YH!!%!!$rrrr\rq!*!)%A`!!!!#!*!%%*B!N"S"Uk)!N"m%!*!&F'aKBf9b,A0TEA"XC5j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c9X[aFeJ!!!Mi!!!8!N!RYfXR\rC!!!!P3!"lAN!"!!!rrrrrJ#3#"&p!!!!!J#3"!k@!*!D!DZL!*!I"!#3"A"[EQF\rYC'9YEbda,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA0Dbr&c\r@!!!$)J!!#')!N!KS4KYl!!!!P3!"lAS!"!!!rrrrrJ#3#"&q!!!!!J#3""Z@!*!\rD!DZL!*!I"!#3"A"bD@jdD@jR,@0[Eh*NFbe[CLeTG'9YFbj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c@X[aFeJ!!!X`!!!E`!*!)4SGLYJ!!!*8\r!!Hel!!3!!2rrrri!N!J4I`!!!!)!N!39PJ#3'J'VSJ#3(`3!N!9bB@4TEf*eG(4\r[ELecD@e`E'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aFdV,\rmA0)!!!&'!!!#!3#3#,IcZaJ!!!#9!!(YI!!%!!$rrrrq!*!)%B!!!!!#!*!%"TB\r!N"S"Uk)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA0Dbr&c@!!!#U!!!"`i!N!KJ`mNb!!!!P3!"lAd!"!!!rrrrrJ#3#"'"!!!\r!!J#3""Q@!*!D!DZL!*!I"!#3"A*eBQ*PFLeLB@jN,@*[H#eNC@e[,6%ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFeV,mA0B!!!*k!!!'6!#3#,i\r9UlX!!!#9!!(YIJ!%!!$rrrrq!*!)%B)!!!!#!*!%&CB!N"S"Uk)!N"m%!*!&FR9\rLBQ9b,@aTEQ8YC'9YEbda,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA0Dbr&c@!!!"N!!!!!-N!*!)R%ImF!!!!*8!!Her!!3!!2rrrri!N!J4J`!\r!!!)!N!33PJ#3'J'VSJ#3(`3!N!9cE'PNCA)YC'9YEbda,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mA0Dbr&c@!!!"BJ!!!T`!N!K-qr`K!!!!P3!\r"lB!!"!!!rrrrrJ#3#"'%!!!!!J#3""b@!*!D!DZL!*!I"!#3"A0eBQ0XBA0c,@9\riDA0dD@jR,AGTC'GPG(-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aFel,mA0F!!!5N!!!-r!#3#)[rd0J!!!#9!!(YJ3!%!!$rrrrq!*!)%B8!!!!\r#!*!%%jB!N"S"Uk)!N"m%!*!&G(G[,A*KC'P[,@GbEh9`Fbj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&cAX[aFe`!!!C)!!!0+!*!),'VIe`!!!*8\r!!Hf#!!3!!2rrrri!N!J4KJ!!!!)!N!3APJ#3'J'VSJ#3(`3!N!9hD@jNEhFYBh*\rPBA4TEfiYE@pbC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c\rAX[aFe`!!!@J!!!+d!*!)9Bih5J!!!*8!!Hf$!!3!!2rrrri!N!J4K`!!!!)!N!3\rCPJ#3'J'VSJ#3(`3!N!9hD@jNEhFYBh*PBA4TEfiYFfPYF'aP,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA0Hc0mI+!!!#(!!!"*S!N!JAE#-'!!!\r!P3!"lB3!"!!!rrrrrJ#3#"')!!!!!J#3""f@!*!D!DZL!*!I"!#3"AGTEQ4[Gbe\rMFQ9KG'P[ELeh,@a[Bf&dD@pZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LT\rMD!#3#,,mA-bbr&c-!!!""J!!!DF!N!LJK2r4!!!!N`!"l83!!`!!rrrrrJ#3#"'\r*!!!!!J#3"!D@!*!D!DQL!*!I"!#3"9*&3840484@3e3!N"#fX%[C!*!(P`!!!(B\r!!!!"!*!F%Cd!!!!#!!)!N!3%!!!!#!3(!*!E!BbL!*!MHQaTBNC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&cEXaeD(3!!"5)!!!lq!*!)*IY0K3!!!*F\r!!HfC!!-!!2rrrri!N!J4RJ!!!!)!N!3,PJ#3'J'YSJ#3(`3!N!9YD@jTChTTF#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&cEXaeD(3!!!Ei!!!3\rX!*!)G"%VF!!!!*F!!HfD!!-!!2rrrri!N!J4R`!!!!)!N!3,PJ#3'J'YSJ#3(`3\r!N!9kE'PLC'9YEbj`H84@3e3!N"#fX%Xp!*!'!3)!!iBi!!!!!3#3("Q2!!!!!J!\r#!*!%"`!!!!J%"`#3'`'-SJ#3)fPYF(9dD@a'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)YB1L'E@LEMS!!!NN!!!HJ`#3#0A88#d!!iCC!!1'@J!$!!$rrrr\rq!*!)'Bi!!!!#!*!%$*B!N"S#8U)!N"m%!*!&D@e`Eh*dCA*c,R"j4&C$9!#3%,D\r`5pJ!N!B"!`!%KNF!!!!"!*!F'LB!!!!#!!)!N!3$!!!!#!3(!*!E!BbL!*!MH'e\rX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B8Vpff&+rG!!!"GJ!!!qd\r!N!LGrB!a!!5(C3!%KfB!!`!!rrrrrJ#3#"SP!!!!!J#3"!f@!*!D!R5L!*!I"!#\r3"@9XC@eIBfpeER3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YK5\r[hEB8Vpd!!!)%!!!%`3#3#'PI+d!!")GP!!5(C`!$!!$rrrrq!*!)'L3!!!!#!*!\r%$*B!N"S#G+)!N"m%!*!&FQpeEQ4dFQP`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,B8Vpff&+rG!!!#XJ!!#")!N!J)4Je&!!5(C3!%KfJ!!`!!rrr\rrrJ#3#"SM!!!!!J#3"!Z@!*!D!R5L!*!I"!#3"A*cFc*SG'eX,R"j4&C$9!#3%,D\rb'F-!N!B""!!#,YF!!!!"!*!F'j`!!!!#!!)!N!3'!!!!#!3(!*!E!BbL!*!MBh9\rbFf9c4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,CfXd'fGV0"!!!*pJ!\r!'N8!N!MM`BF'!!)ZkJ!#,ZX!!`!!rrrrrJ#3#"ZE!!!!!J#3"!H@!*!D!RLL!*!\rI"!#3"@aTCQ8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YRDc3EC\rfXd%!!!9f!!!D*J#3#$1JUFd!!LlU!!)Zl!!$!!$rrrrq!*!)'jS!!!!#!*!%#TB\r!N"S#H+)!N"m%!*!&EQ0eFR0PFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!LfGV0"YRDc33!!!`!!!!RN!*!)mHL-cJ!#,ZS!!LlY!!-!!2rrrri!N!J\rEQ3!!!!)!N!3(PJ#3'J*iSJ#3(`3!N!9bB@PZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88LTMD!#3#,CfXd'fMRUD!!!#8!!!"!#3#5iZJ[%!!LlU!!)ZlJ!$!!$\rrrrrq!*!)'jJ!!!!#!*!%"TB!N"S#H+)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,D1HTUfMRUD!!!#bJ!!"HX!N!KI4rQI!!)ZkJ!\r#,Zm!!`!!rrrrrJ#3#"ZA!!!!!J#3"!Q@!*!D!RLL!*!I"!#3"A*PF'9KG#j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfGV0(YRDc4`!!"+i!!!dT!*!\r)Xa(iF3!#,ZS!!Ll`!!-!!2rrrri!N!JEPJ!!!!)!N!3*PJ#3'J*iSJ#3(`3!N!9\rdBfa[BfXZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YRDc4lCfXdF\r!!"!#!!"K1`#3#&QC5V8!!LlU!!)Zm3!$!!$rrrrq!*!)'j8!!!!#!*!%"jB!N"S\r#H+)!N"m%!*!&H'eKFbj`H84@3e3!N"#fjUpUYZD[D`!!!38!#$Pc!!!!!3#3("b\rU!!!!!J!#!*!%!`!!!!J%"`#3'`'-SJ#3)h4TH%4@3e3!N"#fjUpUYZD[D`!!!38\r!#$TG!!!!!3#3("bT!!!!!`!#!*!%"`!!!!J%"`#3'`+VSJ#3)f*TG'eKF(0'9N0\r8!*!(##!!!!%!N!J(!*!5!9K365"(5dp1!*!)YYqlrVEIZri!!!%)!!!*"J#3#&,\rZJh3!#$TL!!JkB`!%!!$rrrrq!*!)(+J!!!!#!*!%#CB!N"S#VD)!N"m%!*!&B@*\r[GA3ZH("Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,EIZrqfhl[r!!!\r!K!!!!4`!N!L5KNP)!!JkBJ!)1Q3!"!!!rrrrrJ#3#"bR!!!!!J#3"!L@!*!D!Uf\rL!*!I"!#3"@*[E'3ZH'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,E\rIZrqfhl[r!!!!JJ!!!58!N!LG9G*T!!JkBJ!)1Q8!"!!!rrrrrJ#3#"bQ!!!!!J#\r3"!Z@!*!D!UfL!*!I"!#3"@0KF'PdB@`ZH'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&\rB3NdJ4dY26J#3#,EIZrqfhl[r!!!!J!!!!58!N!LVD`8A!!JkBJ!)1QB!"!!!rrr\rrrJ#3#"bP!!!!!J#3"!Z@!*!D!UfL!*!I"!#3"@0PER4PFQSZH'*Y4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,EIZrqfhl[r!!!!Z!!!!i!!N!MTCLBc!!J\rkBJ!)1QF!"!!!rrrrrJ#3#"bN!!!!!J#3"!b@!*!D!UfL!*!I"!#3"@0[E@*[BQp\ri,RKLE8C@3e3!N!F))!!!!3#3#!F!N")"@&"0)%G,6di!N!Lfhl[rYYqlr`!!!9J\r!!!N1!*!)5Vd%LJ!)1Q)!#$TS!!3!!2rrrri!N!JFS`!!!!)!N!3-PJ#3'J+YSJ#\r3(`3!N!9MEfeLEf*[H#jiF'e'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)YYqlrlEIZrm!!!#m!!!)l!#3#13I-a-!#$TL!!JkD3!%!!$rrrrq!*!)(+)!!!!\r#!*!%$TB!N"S#VD)!N"m%!*!&BfpYBQpLEhJZH("Y,M&'9N08!*!(##!!!!%!N!J\r(!*!5!9K#65"(5dp1!*!)YYqlrlEIZrm!!!#Z!!!$HJ#3##,14&)!#$TL!!JkDJ!\r%!!$rrrrq!*!)(+%!!!!#!*!%#TB!N"S#VD)!N"m%!*!&C(*TGQ9K,RKLE8C@3e3\r!N!F))!!!!3#3#!F!N")"@&"0)%G,6di!N!Lfhl[rYYqlr`!!!0B!!!9E!*!)k2i\rd&J!)1Q)!#$TV!!3!!2rrrri!N!JFS!!!!!)!N!3+PJ#3'J+YSJ#3(`3!N!9NFQP\rfC@%ZH("Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&B8%dJ4dY26J#3#,EIZrqfhl[r!!!\r![J!!#28!N!M2I+(i!!JkBJ!)1Q`!"!!!rrrrrJ#3#"bI!!!!!J#3"!L@!*!D!Uf\rL!*!I"!#3"@9iDA3ZH("Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,E\rIZrqfhl[r!!!!VJ!!!hd!N!K)+UYB!!JkBJ!)1Qd!"!!!rrrrrJ#3#"bH!!!!!J#\r3"!Z@!*!D!UfL!*!I"!#3"@CTE'9LEhJZH'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&\rB8%dJ4dY26J#3#,EIZrqfhl[r!!!!jJ!!#3B!N!LbBhT9!!JkBJ!)1Qi!"!!!rrr\rrrJ#3#"bG!!!!!J#3"!Z@!*!D!UfL!*!I"!#3"@CTE'9LEhJZH("Y4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,EIZrqfhl[r!!!!IJ!!!5)!N!Mr#jT1!!J\rkBJ!)1Qm!"!!!rrrrrJ#3#"bF!!!!!J#3"!U@!*!D!UfL!*!I"!#3"@PdB@aTBbj\riBQe'9N08!*!(##!!!!%!N!J(!*!5!9K#65"(5dp1!*!)YYqlrlEIZrm!!!"m!!!\r"*3#3#%bHGhd!#$TL!!JkF!!%!!$rrrrq!*!)(*X!!!!#!*!%#jB!N"S#VD)!N"m\r%!*!&DR9cG'PQH5jiBQe'9N08!*!(##!!!!%!N!J(!*!5!9K#65"(5dp1!*!)YYq\rm!,EI[!#3"(i!!!%I!*!)$I-kC!!)1Q)!#$Ta!!3!!2rrrri!N!JFQJ!!!!)!N!3\r*PJ#3'J+YSJ#3(`3!N!9XC@CdDLjiBQe'9N08!*!(##!!!!%!N!J(!*!5!9K#65"\r(5dp1!*!)YYqm!,EI[!#3"0J!!!0d!*!)kMFBmJ!)1Q)!#$Tb!!3!!2rrrri!N!J\rFQ3!!!!)!N!3)PJ#3'J+YSJ#3(`3!N!9ZCA4h,RKLE8C@3e3!N!F))!!!!3#3#!F\r!N")"@&"0)%G,6di!N!Lfhl`!YYqm!!!!!6J!!!9U!*!)3QK2C!!)1Q)!#$Tc!!3\r!!2rrrri!N!JFQ!!!!!)!N!3)PJ#3'J+YSJ#3(`3!N!9ZCA4h,RK`E8C@3e3!N!F\r))!!!!3#3#!F!N")"@&"0)%G,6di!N!Lfhl`!YYqm!!!!!5!!!!Ma!*!)D8MJ[!!\r)1Q)!#$Td!!3!!2rrrri!N!JFP`!!!!)!N!3,PJ#3'J+YSJ#3(`3!N!9[F(4YC@j\re,RK`E8C@3e3!N!F))!!!!3#3#!F!N")"@%*0)%G,6di!N!Lfhl`!YYqm!*!%GJ!\r!!5)!N!JAc1ch!!JkBJ!)1R8!"!!!rrrrrJ#3#"b@!!!!!J#3"!U@!*!D!UfL!*!\rI"!#3"A*TCfKdDLjiBQe'9N08!*!(##!!!!%!N!J(!*!5!9K365"(5dp1!*!)YYq\rm!,EI[!!!!!%q!!!*0!#3#)@!m`N!#$TL!!JkGJ!%!!$rrrrq!*!)(*8!!!!#!*!\r%#TB!N"S#VD)!N"m%!*!&Ff9XC@0d,RK`E8C@3e3!N!F))!!!!3#3#!F!N")"4dP\r'CQpRE'8!N!Lfhl`!YYqm!!!!+bS!!#XL!*!)G(#Qf3!)1Q)!#$Th!!3!!2rrrri\r!N!JFP!!!!!)!N!3(PJ#3'J+YSJ#3(`3!N!9dDAJZCfPQ4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&B3NdJ4dY26J#3#,EI[!#fhl`!N!4q!!!"+`#3##f-$X-!#$TL!!JkH!!\r%!!$rrrrq!*!)(*-!!!!#!*!%$CB!N"S#VD)!N"m%!*!&G@jNCA*XD@jP,RKLE8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!Lfhl[qYYqlrJ!!!4!!!!&h!*!\r))NT"pJ!)1Pd!#$TH!!-!!2rrrri!N!JFNJ!!!!)!N!3)PJ#3'J+VSJ#3(`3!N!9\r#98G6,R4iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!Lfhl[qYYqlrJ!\r!"DJ!!!d#!*!)+Dqk-!!)1Pd!#$TI!!-!!2rrrri!N!JFN3!!!!)!N!3,PJ#3'J+\rVSJ#3(`3!N!9*6P0838a-,R4iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3\r!N!Lfhl[qYYqlrJ!!!DB!!!,8!*!)ZQ@5h`!)1Pd!#$TJ!!-!!2rrrri!N!JFN!!\r!!!!#!*!%#TB!N"S#Uk)!N"m%!*!&8N9"4%e&,R4iG%4@3e3!N"#fjUpVYZD[D`!\r!!38!#$TG!!!!!3#3("b2!!!!!`!#!*!%"`!!!!J%"`#3'`+VSJ#3)h0KEA"XCA0\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YYqm!,EI[!!!!!-H!!!'3J#\r3#-M4JMB!#$Tj!!JkHJ!%!!$rrrrq!*!)()i!!!!#!*!%#TB!N"S#V+)!N"m%!*!\r&3Q&XE'p[ELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lfhl`!YYq\rm!!!!!a!!!!Aj!*!)%("ldJ!)1RN!#$Tl!!3!!2rrrri!N!JFM3!!!!)!N!3*PJ#\r3'J+XSJ#3(`3!N!9#G'j#EhJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)YYqm!,EI[!%!!!Bm!!!EX`#3#(*r%Ai!#$Tj!!JkI!!%!!$rrrrq!*!)()`\r!!!!#!*!%#CB!N"S#V+)!N"m%!*!&3fe`5@eR,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,EI[!Lfhl`)!!!&*J!!$1-!N!JJBjX&!!JkH3!)1Rd!"!!\r!rrrrrJ#3#"b,!!!!!J#3"!Z@!*!D!UbL!*!I"!#3"80[E@*[3Qpi,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,EI[!Lfhl`)!!!&L!!!$9m!N!KLX+4\rr!!JkH3!)1Ri!"!!!rrrrrJ#3#"b+!!!!!J#3"!U@!*!D!UbL!*!I"!#3"80[ER4\rbEf`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YYqm#,EI[!J!!!8\r)!!!283#3#!Mbi6)!#$Tj!!JkI`!%!!$rrrrq!*!)()N!!!!#!*!%#jB!N"S#V+)\r!N"m%!*!&6QpdC8*[EfXZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)YYqm#EEI[!N!!!33!!!)r3#3#(Ch4i!!#$Tj!!JkJ!!%!!$rrrrq!*!)()J!!!!\r#!*!%#TB!N"S#V+)!N"m%!*!&6h"d6@9ZG5j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lfhl`*YYqm#3!!!j`!!!Ir!*!)6!VaBJ!)1RN!#$U"!!3!!2r\rrrri!N!JFK`!!!!)!N!3+PJ#3'J+XSJ#3(`3!N!93Eh"0C@je,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,EI[!Qfhl`*!!!&U!!!#jX!N!JCTfU[!!J\rkH3!)1S)!"!!!rrrrrJ#3#"b'!!!!!J#3"!U@!*!D!UbL!*!I"!#3"90)6'PcG$%\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YYqm#EEI[!N!!!GN!!!\r5E!#3#'3#eEi!#$Tj!!JkJ`!%!!$rrrrq!*!)()8!!!!#!*!%#TB!N"S#V+)!N"m\r%!*!&8dK-DA0d-Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lfhl`\r*YYqm#3!!"2S!!!Tf!*!)PE()Y`!)1RN!#$U%!!3!!2rrrri!N!JFK!!!!!)!N!3\r(PJ#3'J+XSJ#3(`3!N!98FQ9P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,EIZrkfhl[q!!!GLJ!!GCB!N!KVVI0I!!JkA3!)1Q%!!`!!rrrrrJ#3#"b\r$!!!!!J#3"!f@!*!D!UZL!*!I"!#3"A4TH(GTC'GPG(-ZF(P%9N08!*!)!q!#@`"\rA!3Hh#m6UY`[%m!!!!*J!!!"d!!!J!3#3("'K!!!!!3!#!*!%#J!!!!J%"`#3%D!\r!N!N"LmM"!*!L4AKdC@jcD@pZFd4@3e3!N"#h#m6UY`[%l`!!!*N!!!#B!!!J!3#\r3("'L!!!!!J!#!*!%"`!!!!J%"`#3%D!!N!N"VXJ"!*!L5@eKCfPZCdC@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9%0A588!N!LdUqPHYX4V$J!!-&`!!(q+!*!)%*Ujq3!\r!!*N!!HfG!!-!!2rrrri!N!J4S`!!!!)!N!3(PJ#3'J'[b!#3(`3!N!9$5%&14d9\r64PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,)9FYbeCX))!!!$YJ!!%a-\r!N!Kc[('Y!!!!Q3!"lCi!!`!!rrrrrJ#3#"'N!!!!!J#3"!L@!*!D!Dr)!*!I"!#\r3"8026P4&6P464PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,)9FYfeCX)\r)!!!'q!!!%$F!N!KFk1[#!!!!Q3!"lCm!!`!!rrrrrJ#3#"'P!!!!!J#3"!H@!*!\rD!Dr)!*!I"!#3"8C28Ne"9&0%9N08!*!3YV",h!#3"jS!!!#C!!!!!3#3("'Q!!!\r!!`!#!*!%"J!!!!J%"`#3'`'[b!#3)dPYB@GPFdC@3e3!N!F))!!!!3#3#!F!N")\r"4dP'CNT@9e)!N!Lb&A,cXK9bm`!!2PJ!!$r3!*!)C$4!#3!!!*S!!HfM!!3!!2r\rrrri!N!J4T`!!!!)!N!3)PJ#3'J'`b!#3(`3!N!9XC@jK,QGTCNC@3e3!N!F))!!\r!!3#3#!F!N")"5P"&4dT@9e)!N!Lb&A,eXK9bp3!!%Pi!!",N!*!)Z9fTM!!!!*S\r!!HfN!!3!!2rrrri!N!J4U!!!!!)!N!3)PJ#3'J'`b!#3(`3!N!9XC@jK,QT`CdC\r@3e3!N!F))!!!!3#3#!F!N")"8&"(68G,6di!N!Lb&A-)XK9c#`!!YN)!!-!2!*!\r)a$lbB3!!!*S!!HfP!!3!!2rrrri!N!J4U3!!!!)!N!3)PJ#3'J'`b!#3(`3!N!9\rXC@jK,R"`E84@3e3!N"#h#m6VY`[%lJ!!!*`!!!#C!!!!!3#3("'[!!!!!`!#!*!\r%!`!!!!J%"`#3%D!!N!N"VmJ!N#0358a'9N08!*!(##!!!!%!N!J(!*!3"3!"FfK\rXBP"jG'J!N!LbmbpAY`ZYP`!#G1J!"AM&!!!!CJ!!!C,bIe,I!!!!R!!"lD`!"!!\r!rrrrrJ#3#"'`!!!!!J#3""#@!*!3J!#3#3'b`!#3(`B!N!9ID@eKCfPZCbj`F'-\rZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,E%E0+h#kie!!*\rdk!!&H-8!!!"S!!!"P[`[U[`!"eQr!!GC`3!%!!$rrrrq!*!)(&i!!!!#!*!%%jB\r!N"!J!*!*!E+)!*!I"`#3"!&ID@eKCfPZCbjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,)9Fa'eCX)+!!!0dJ!!,LX!N!KKC3Y[!!!!R!!\r"lDi!"!!!rrrrrJ#3#"'b!!!!!J#3""'@!*!D!E,)!*!I"!#3"8&bCdPYB@GP8'a\reCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fa5bi`PP!!!\r%SJ!!#dS!N!Lrpf8G!!!!R!!"lDm!"!!!rrrrrJ#3#"'c!!!!!J#3"!k@!*!D!E,\r)!*!I"!#3"8*NCNC[ER4'D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,)9FaLeCX)+!!!((!!!%Hm!N!Jap(Ih!!!!R!!"lE!!"!!!rrrrrJ#3#"'\rd!!!!!J#3""'@!*!D!E,)!*!I"!#3"8*YF%PYB@GP8'aeCfPZ,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FaUeCX)+!!!#Q!!!"J3!N!KM!H24!!!\r!R!!"lE%!"!!!rrrrrJ#3#"'e!!!!!J#3"!k@!*!D!E,)!*!I"!#3"80[ER4KD@j\rPFNP2,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FaZeCX)+!!!\r$,J!!"`m!N!JlIAG5!!!!R!!"lE)!"!!!rrrrrJ#3#"'f!!!!!J#3""'@!*!D!E,\r)!*!I"!#3"80eFNPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,)9FabeCX)+!!!$CJ!!"Q8!N!LBpkJA!!!!R!!"lE-!"!!!rrrrrJ#\r3#"'h!!!!!J#3""'@!*!D!E,)!*!I"!#3"84MH%PYB@GP8'aeCfPZ,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FafeCX)+!!!+dJ!!'e3!N!J2l`I\rQ!!!!R!!"lE3!"!!!rrrrrJ#3#"'i!!!!!J#3""'@!*!D!E,)!*!I"!#3"89`FdP\rYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fb'\reCX)+!!!%iJ!!#bJ!N!J'62[#!!!!R!!"lE8!"!!!rrrrrJ#3#"'j!!!!!J#3""'\r@!*!D!E,)!*!I"!#3"8CXD8PYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,)9Fb@bi`PS!!!%h!!!$,S!N!MQ@%IK!!!!R!!"lEB!"!!\r!rrrrrJ#3#"'k!!!!!J#3"!Z@!*!D!E,)!*!I"!#3"8C[ER4'D@aP,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FbQeCX),!!!)S!!!&"%!N!M)9BA\rR!!!!R!!"lEF!"!!!rrrrrJ#3#"'l!!!!!J#3""'@!*!D!E,)!*!I"!#3"8C`H%P\rYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FbZ\reCX),!!!#b!!!"FX!N!L'c5V*!!!!R!!"lEJ!"!!!rrrrrJ#3#"'m!!!!!J#3""'\r@!*!D!E,)!*!I"!#3"8GLFNPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,)9FbqeCX),!!!$PJ!!"Pi!N!MdU'*'!!!!R!!"lEN!"!!\r!rrrrrJ#3#"'p!!!!!J#3"!k@!*!D!E,)!*!I"!#3"8GN5@eKCf9'D@aP,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fc'eCX),!!!,3J!!(JJ!N!K\ra#mM"!!!!R!!"lES!"!!!rrrrrJ#3#"'q!!!!!J#3""'@!*!D!E,)!*!I"!#3"8G\rTCNPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)\r9FcDb&A-f!!!%M!!!#e-!N!M!(Fep!!!!R!!"lEX!"!!!rrrrrJ#3#"'r!!!!!J#\r3""1@!*!D!E,)!*!I"!#3"8GTEA"(FQ&ND@9ZG%CTE'8ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)XK9c0l)9FcF!!!*%!!!%X!#3#(5m3[!!!!#F!!(\rY[!!%!!$rrrrq!*!)%F!!!!!#!*!%%TB!N"S"XXJ!N"m%!*!&4fPYF&"KE'9dG'9\r'D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FcHeCX),!!!\r$)J!!"Z)!N!MaN9Cl!!!!R!!"lEd!"!!!rrrrrJ#3#"("!!!!!J#3""'@!*!D!E,\r)!*!I"!#3"8PMEdPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,)9FcLfa'X2!!!FYJ!!@q-!N!KGp#'j!!!!R!!"lEi!"!!!rrrrrJ#\r3#"(#!!!!!J#3"!L@!*!D!E,)!*!I"!#3"8PYB@GP,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,)9FcLeCX)-!!!$)J!!$*%!N!JM(%6J!!!!R!!"lEm\r!"!!!rrrrrJ#3#"($!!!!!J#3"!f@!*!D!E,)!*!I"!#3"8PYB@GP3fK[F(-ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c1E9Q`J`!!!4H!!!2b`#\r3#*JTE3-!!!#F!!(Y`!!%!!$rrrrq!*!)%F3!!!!#!*!%$*B!N"S"XXJ!N"m%!*!\r&5@eKCf9%FQ&h,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FcQ\reCX)-!!!#B!!!"8i!N!MA2*P1!!!!R!!"lF%!"!!!rrrrrJ#3#"(&!!!!!J#3"!q\r@!*!D!E,)!*!I"!#3"8PYB@GP4@jSB@jMC5j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lb&A-jY@E#$!!!#hi!!#$)!*!)TP$$*!!!!*`!!Hh#!!3!!2r\rrrri!N!J4aJ!!!!)!N!3-PJ#3'J'bb!#3(`3!N!9*E@&RC8CTE'8ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XZ-*JE9Q`J`!!!'5!!!#H`#3#13&0#8\r!!!#F!!(Y``!%!!$rrrrq!*!)%FF!!!!#!*!%$TB!N"S"XXJ!N"m%!*!&5@eKCf9\r'D@aP58mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c1V9Q`J`\r!!!)1!!!$Y3#3#(`b#R!!!!#F!!(Ya!!%!!$rrrrq!*!)%FJ!!!!#!*!%$TB!N"S\r"XXJ!N"m%!*!&5@eKCf9'D@adCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)XK9c1l9Q`J`!!!5)!!!*i3#3#$PRbFd!!!#F!!(Ya3!%!!$rrrrq!*!\r)%FN!!!!#!*!%$*B!N"S"XXJ!N"m%!*!&5@eKCf9'Efjd,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,)9FcZeCX)-!!!$a!!!#U%!N!Mf@#bS!!!!R!!\r"lFB!"!!!rrrrrJ#3#"(+!!!!!J#3"!q@!*!D!E,)!*!I"!#3"8PYB@GP8'&XCA4\rdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A-mY@E#$!!!!2B\r!!!&+!*!)3fF2D3!!!*`!!Hh(!!3!!2rrrri!N!J4b`!!!!)!N!3-PJ#3'J'bb!#\r3(`3!N!9*E@&RC9"KG'JZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)XK9c2,)9Fc`!!!'J!!!#P!#3#!-FV5J!!!#F!!(Yb!!%!!$rrrrq!*!)%F`!!!!\r#!*!%%*B!N"S"XXJ!N"m%!*!&5@eKCf96CA&eC@jMC5j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lb&A-mY@E#$3!!"8i!!!k"!*!)PEc[e!!!!*`!!Hh\r*!!3!!2rrrri!N!J4c3!!!!)!N!3-PJ#3'J'bb!#3(`3!N!9*E@&RC90dBA3ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c2E9Q`Jd!!!G'!!!9-3#\r3#$YAFDJ!!!#F!!(YbJ!%!!$rrrrq!*!)%Fi!!!!#!*!%#TB!N"S"XXJ!N"m%!*!\r&5@eKCf98Dbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A-pY@E\r#$3!!!XB!!!9I!*!)V!$eL`!!!*`!!Hh,!!3!!2rrrri!N!J4c`!!!!)!N!3,PJ#\r3'J'bb!#3(`3!N!9*E@&RC9GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lb&A-hY@E##`!!#e`!!"mr!*!)R!*ek3!!!*`!!Hh-!!3!!2rrrri!N!J\r4d!!!!!)!N!33PJ#3'J'bb!#3(`3!N!9*E8PYB@GP8'aeCfPZ,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FcfeCX)0!!!$E!!!"YF!N!LGeAD2!!!\r!R!!"lFd!"!!!rrrrrJ#3#"(4!!!!!J#3""'@!*!D!E,)!*!I"!#3"8PYG%PYB@G\rP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FckeCX)\r0!!!'E!!!$a8!N!KZCb%#!!!!R!!"lFi!"!!!rrrrrJ#3#"(5!!!!!J#3""+@!*!\rD!E,)!*!I"!#3"8P`G'0*E@&RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lb&A0!Y@E#$3!!$8!!!#@r!*!)l*!!#LN!!!#F!!(Yc`!%!!$\rrrrrq!*!)%G-!!!!#!*!%%TB!N"S"XXJ!N"m%!*!&5R"PCdPYB@GP8'aeCfPZ,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fd1b&A0$!!!$+!!!"V3\r!N!JT58+K!!!!R!!"lG!!"!!!rrrrrJ#3#"(8!!!!!J#3""5@!*!D!E,)!*!I"!#\r3"8eM5@4KFdPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,)9Fd1eCX)0!!!$I!!!"jN!N!MZADH&!!!!R!!"lG%!"!!!rrrrrJ#3#"(\r9!!!!!J#3""'@!*!D!E,)!*!I"!#3"8eTBdPYB@GP8'aeCfPZ,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fd1eCX)0!!!#U!!!"MN!N!Lb6p+E!!!\r!R!!"lG)!"!!!rrrrrJ#3#"(@!!!!!J#3""+@!*!D!E,)!*!I"!#3"8e`C@G*E@&\rRC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0%Y@E\r#$3!!!mS!!!IH!*!)lmmZa!!!!*`!!Hh6!!3!!2rrrri!N!J4e`!!!!)!N!34PJ#\r3'J'bb!#3(`3!N!90Fh"*E@&RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lb&A0%XZ-*K!!!%h!!!$,j!*!)5UYJGJ!!!*`!!Hh8!!3!!2r\rrrri!N!J4f!!!!!)!N!3-PJ#3'J'bb!#3(`3!N!92E'9'D@aP58mZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c4V)9FdB!!!)@!!!%*J#3#*JHbpF\r!!!#F!!(Ye3!%!!$rrrrq!*!)%GN!!!!#!*!%$TB!N"S"XXJ!N"m%!*!&8'&XCA4\rdC8CTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c4l9Q`Ji\r!!!-)!!!&ZJ#3#0K!1h-!!!#F!!(YeJ!%!!$rrrrq!*!)%GS!!!!#!*!%%CB!N"S\r"XXJ!N"m%!*!&8'0N5@eKCf93E(9RD@iZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)XK9c5E9Q`Ji!!!F8!!!AB`#3#-+#-8`!!!#F!!(Ye`!%!!$rrrr\rq!*!)%GX!!!!#!*!%$TB!N"S"XXJ!N"m%!*!&8'0Q4QpZG%CTE'8ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c5l9Q`Ji!!!DB!!!2$3#3##PVVbN\r!!!#F!!(Yf!!%!!$rrrrq!*!)%G`!!!!#!*!%%CB!N"S"XXJ!N"m%!*!&8'0i5@e\rKCf93E(9RD@iZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c6,9\rQ`Ji!!!B@!!!2[3#3#,KSqCd!!!#F!!(Yf3!%!!$rrrrq!*!)%Gd!!!!#!*!%%CB\r!N"S"XXJ!N"m%!*!&8'4Q5@eKCf93E(9RD@iZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)XK9c6E)9Fdd!!!0N!!!'F`#3#"Z&-!%!!!#F!!(YfJ!%!!$\rrrrrq!*!)%Gi!!!!#!*!%%jB!N"S"XXJ!N"m%!*!&8'PiBA**E@&RC9"XG@GTELj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A01Y@E#$J!!$JJ!!#E\rH!*!)HI$p$!!!!*`!!HhE!!3!!2rrrri!N!J4h`!!!!)!N!34PJ#3'J'bb!#3(`3\r!N!93EQG*E@&RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lb&A05Y@E#$J!!"()!!!Va!*!)UQ*Z(!!!!*`!!HhF!!3!!2rrrri!N!J4i!!\r!!!)!N!34PJ#3'J'bb!#3(`3!N!93F'e*E@&RC9"XG@GTELj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A06Y@E#$J!!"$S!!!Sd!*!)0Y+qU`!!!*`\r!!HhG!!3!!2rrrri!N!J4i3!!!!)!N!34PJ#3'J'bb!#3(`3!N!93Ff4*E@&RC9"\rXG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0&Y@E#$J!\r!"k`!!"0j!*!)V3lU$3!!!*`!!HhH!!3!!2rrrri!N!J4iJ!!!!)!N!3*PJ#3'J'\rbb!#3(`3!N!938d4bBAFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)XK9c9V9Q`Ji!!!0q!!!(b`#3#%$N)9i!!!#F!!(Yh`!%!!$rrrrq!*!)%H-!!!!\r#!*!%%CB!N"S"XXJ!N"m%!*!&8fGT5@eKCf93E(9RD@iZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)XK9c@E9Q`Jm!!!0J!!!'jJ#3#-DHa1F!!!#F!!(\rYi!!%!!$rrrrq!*!)%H3!!!!#!*!%%CB!N"S"XXJ!N"m%!*!&8h9Z5@eKCf93E(9\rRD@iZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9cA,9Q`Jm!!!)\rJ!!!$RJ#3#1'b4TN!!!#F!!(Yi3!%!!$rrrrq!*!)%H8!!!!#!*!%#*B!N"S"XXJ\r!N"m%!*!&9'&b58mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9\rcA,9Q`Jm!!!5q!!!,8!#3#(Z6H@!!!!#F!!(YiJ!%!!$rrrrq!*!)%HB!!!!#!*!\r%%CB!N"S"XXJ!N"m%!*!&9'GK5@eKCf93E(9RD@iZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)XK9cB,E%D`m!!"6U!!!m13#3#&(6Qm)!!!#F!!(Yi`!\r%!!$rrrrq!*!)%HF!!!!#!*!%%TB!N"S"XXJ!N"m%!*!&9'PQCNPYB@GP8'aeCfP\rZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Ff'eCX)2!!!*B!!\r!'0B!N!JBJ#m6!!!!R!!"lH3!"!!!rrrrrJ#3#"(S!!!!!J#3""'@!*!D!E,)!*!\rI"!#3"9GYCNPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,)9Ff5eCX)2!!!$-!!!"Nm!N!Lb#k1R!!!!R!!"lH8!"!!!rrrrrJ#3#"(\rT!!!!!J#3""'@!*!D!E,)!*!I"!#3"9KLE8PYB@GP8'aeCfPZ,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FfDeCX)2!!!%I!!!#ES!N!MKAY+N!!!\r!R!!"lHB!"!!!rrrrrJ#3#"(U!!!!!J#3""'@!*!D!E,)!*!I"!#3"9K`E8PYB@G\rP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,M#BQbi`Q\r*!!!$3J!!"J3!N!LYlS9r!!!!R!!"lHF!"!!!rrrrrJ#3#"(V!!!!!J#3""@@!*!\rD!E,)!*!I"!#3"9K@9'KeE@**E@&RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!LeCX)2Y@E#$`!!!-B!!!$Y!*!)0T9Pr!!$KhB!!iGh!!3\r!!2rrrri!N!JCM3!!!!)!N!3,PJ#3'J'bb!#3(`3!N!9IAfPZDA4IAbj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeCX)2Y@E#$`!!"6S!!!`f!*!)2pf\rRC`!$KhB!!iH`!!3!!2rrrri!N!JCM!!!!!)!N!3,PJ#3'J'bb!#3(`3!N!98D@C\rQ9'&RFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lb&A,PXK9bj3!\r!!!`!!!!%!*!)YhmD43!!!*N!!HfJ!!-!!2rrrri!N!J4l!!!!!)!N!3(PJ#3'J'\r[b!#3(`3!N!9358`ZF(4S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,)\r9FZDfa'X2!!!1h!!!*@X!N!Kb-60!!!!!Q3!"lD%!!`!!rrrrrJ#3#"(Y!!!!!J#\r3"!D@!*!D!Dr)!*!I"!#3"9*&3840484@3e3!N"#f`G+`!*!(R3!!!*N!!!!"!*!\rF%Hi!!!!$!!)!N!3%!!!!#!3(!*!E!Dr)!*!M8f&ZC8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lb&A0TXK9cD3!!!E!!!!,U!*!),rEAd!!!!*d!!HhT!!3\r!!2rrrri!N!J4l`!!!!)!N!3(PJ#3'J'cb!#3(`3!N!9NC@e[,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,M#BUbi`Q+!!!!p!!!!@m!N!MI9Fap!!!\r!R3!"lHS!"!!!rrrrrJ#3#"(`!!!!!J#3"!D@!*!D!E2)!*!I"!#3"9*&384048C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0XY@E#%!!!"fJ!!"3!N!N\r"0e5@!!!!R3!"lHX!"!!!rrrrrJ#3#"(a!!!!!J#3"!H@!*!D!E2)!*!I"!#3"A0\rKEQ8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)Y@E#%,9Q`K!!!!V\ri!!!CY3#3#(&J6p!!!iHe!!1(Z3!%!!$rrrrq!*!)'BX!!!!#!*!%#jB!N"S"XmJ\r!N"m%!*!&Ff&ZC@4[BbjdH(4%9N08!*!3YV",j`#3"ji!!!#C!!!!!3#3("(b!!!\r!!`!#!*!%"`!!!!J%"`#3'`'[b!#3)e0MFQP`G(0'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)XK9cEl)9Ffm!!!KH!!!9`!#3#-B5Sid!!!#H!!(Yl3!%!!$\rrrrrq!*!)%I-!!!!#!*!%#TB!N"S"Y-J!N"m%!*!&BQ4Q-R"TE#j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0`XK9cF!!!!R!!!!6p!*!)iSJqC!!\r!!*i!!HhZ!!3!!2rrrri!N!J4p!!!!!)!N!3,PJ#3'J'db!#3(`3!N!9PEQKKEQ0\rPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0cXZ-*M!!!!rB\r!!!Pr!*!)CMF3SJ!!!*i!!Hh[!!3!!2rrrri!N!J4p3!!!!)!N!3+PJ#3'J'db!#\r3(`3!N!9PH("XEf4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)\r9FhDb&A0f!!!%hJ!!#U)!N!La9*)1!!!!RJ!"lI!!"!!!rrrrrJ#3#"(f!!!!!J#\r3"!Z@!*!D!E6)!*!I"!#3"@GTCQeKDf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,)9FhQb&A0j!!!%VJ!!#TX!N!K9p[X1!!!!RJ!"lI%!"!!!rrr\rrrJ#3#"(h!!!!!J#3"!Z@!*!D!E6)!*!I"!#3"@PYB@GP-R"j,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fi#b&A1!!!!$2!!!"Ud!N!LJmHl#!!!\r!RJ!"lI)!"!!!rrrrrJ#3#"(i!!!!!J#3"!U@!*!D!E6)!*!I"!#3"A"KD@jdCA)\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9cJ,9Q`K!!!!1U!!!\r)6J#3#*ZXbm8!!!#H!!(Ym`!%!!$rrrrq!*!)%IN!!!!#!*!%$CB!N"S"Y-J!N"m\r%!*!&F'PXBfpZGQ9bG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbi`Q-XZ-*M!!!$M`!!$VF!*!)jcTRG`!!!*i!!Hhd!!3!!2rrrri!N!J4qJ!!!!)\r!N!3-PJ#3'J'db!#3(`3!N!9`D@aNFQPfCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)XK9cJE)9Fi%!!!0%!!!'j!#3#%6[bAJ!!!#H!!(Yp3!%!!$\rrrrrq!*!)%IX!!!!#!*!%#TB!N"S"Y-J!N"m%!*!&F'PXCQPXC5j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A1#XK9cJJ!!!NS!!!5&!*!)TkVUEJ!\r!!*i!!Hhf!!3!!2rrrri!N!J4r!!!!!)!N!3+PJ#3'J'db!#3(`3!N!9`D@aQEfj\rd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fi1b&A1$!!!$d!!\r!#$F!N!Jr#i"S!!!!RJ!"lIF!"!!!rrrrrJ#3#"(p!!!!!J#3"!Z@!*!D!E6)!*!\rI"!#3"A"TE("bD@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)\r9Fi5b&A1%!!!$N!!!!!N+!*!)DemTMJ!!!*i!!Hhi!!3!!2rrrri!N!J4rJ!!!!)\r!N!3*PJ#3'J'db!#3(`3!N!9`E'&jCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&45+Q0S!*!)XK9cEl)9Ffm!!!23!!!*T3#3#1$behd!!!#H!!(Yq3!%!!$rrrr\rq!*!)%Im!!!!#!*!%"TB!N"S"Y-J!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,)9Fi@b&A1&!!!$)!!!"KB!N!M@kEeC!!!!RJ!"lIS\r!"!!!rrrrrJ#3#")!N!3#!*!%$TB!N"S"Y-J!N"m%!*!&G'KbCA0SEfaNCA)ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9cKV)9Fj)!!!'Z!!!$8`#\r3#*Z,[f8!!!#H!!(Yq`!%!!$rrrrq!*!)%J%!!!!#!*!%#CB!N"S"Y-J!N"m%!*!\r&GQPPGf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,9Q`JHeCX)\r(!!!!LJ!!!,%!N!J+j6',!!1(CJ!$KfF!!`!!rrrrrJ#3#"Q*!!!!!J#3"!@@!*!\rD!Dq!!3#3(J3!N!9#98P-4%4@3e3!N"#h#m6`Y`[%mJ!!!+!!!!#B!!!!!3#3(")\r&!!!!!J!#!*!%!`!!!!J%"`#3%D!!N!N"VS$!!*!LD@eR4&C$9!#3%,D`5qS!N!H\rK!!!!S!!!!!%!N"`5"J!!!!-!!J#3"!-!!!!)"!F!N"X"YS$!!*!L6'PL4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9GRUb&ACk!!!$fJ!!#Fi!N!J-$p1\rY!!!!S3!"lJ)!"!!!rrrrrJ#3#")(!!!!!J#3"!D@!*!D!EH!`!#3(J3!N!9TE@F\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9fHl)9GRX!!!E%!!!\r9a3#3#)G@')B!!!#K!!(Z!`!%!!$rrrrq!*!)%JJ!!!!#!*!%#CB!N"S"Yi$!!*!\rH"!#3"@PYCf*YF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&AC\rmY1)Gm!!!%Ui!!%)T!*!)+R%@A`!!!+%!!Hi%!!3!!2rrrri!N!J5#3!!!!)!N!3\r0PJ#3'J'hJ-!!N"i%!*!&D@eRBfpZGQ9bG#j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lb&ACpXZmbSJ!!"GJ!!"(%!*!)rhLXlJ!!!+%!!Hi&!!3!!2r\rrrri!N!J5#J!!!!)!N!3+PJ#3'J'hJ-!!N"i%!*!&D@eRDR"PCbj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&ACpXK9fI3!!"*J!!!b5!*!)l'VEj!!\r!!+%!!Hi'!!3!!2rrrri!N!J5#`!!!!)!N!3+PJ#3'J'hJ-!!N"i%!*!&D@eRF'P\rMG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&ACqXK9fIJ!!!MJ\r!!!@-!*!)U[4hd`!!!+%!!Hi(!!3!!2rrrri!N!J5$!!!!!)!N!3+PJ#3'J'hJ-!\r!N"i%!*!&D@eRF(KiH#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rb&ACqXK9fIJ!!!l)!!!eq!*!)I9!XU!!!!+%!!Hi)!!3!!2rrrri!N!J5$3!!!!)\r!N!3*PJ#3'J'hJ-!!N"i%!*!&D@eRFfGT,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,)9GRkb&ACq!!!$JJ!!#-8!N!MK5lA9!!!!S3!"lJN!"!!!rrr\rrrJ#3#")1!!!!!J#3"!Q@!*!D!EH!`!#3(J3!N!9TE@GiBQdZF(P%9N08!*!3Y`[\r%m,F,a2%!!!#L!!!!S!!!!!%!N"`5$`!!!!-!!J#3"!-!!!!)"!F!N"'J!*!*!ED\r!`!#3)NeKBdC@3e3!N!F))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,CdpkQh#kf\rJ!!!F*!!!0ci!!!"S!!!"PQp2)cN!!!#L!!(Z#`!%!!$rrrrq!*!)%K!!!!!#!*!\r%%jB!N"#!!*!*!EL!J!#3(JB!N!9TE@GMEfa[FQeKF#j`F'-ZFfaL4PC$9!#3"`J\rJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6aUlF,VD%!!!Yb!!!JiJ!!!'B!!!'\r5k$ApB3!!!+)!!Hi-!!3!!2rrrri!N!J5%3!!!!)!N!34PJ#3%)!!N!N"Z)#!!*!\rH"J#3"@PYCfC[FQeKG#j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*\r3HA4S!*!)YR6hpVF,VDJ!!"d3!!!rh!!!!'B!!!'5DV"pP`!!!+)!!Hi0!!3!!2r\rrrri!N!J5%J!!!!)!N!31PJ#3%)!!N!N"Z)#!!*!H"J#3"@PYCfGTCLj`F'-ZFfa\rL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YV)HPVF,VDX!!2rd!!)\rI43!!!'3!!!'55'MG83!!!+)!!Hi1!!3!!2rrrri!N!J5%`!!!!)!N!32PJ#3%)!\r!N!N"Z)#!!*!H"J#3"@PYCfT`C@FZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N"!\r&!!&cD'aL8(PdD!#3#,CdmF+h#kfL!!!0F!!!'bX!!!"N!!!"MRe5Mi3!!!#L!!(\rZ$`!%!!$rrrrq!*!)%K3!!!!#!*!%$CB!N"#!!*!*!EL!J!#3(JB!N!9TE@G[F#j\r`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6h`VF,VD3\r!!"K`!!!eB`!!!'3!!!'5b%-&UJ!!!+)!!Hi3!!3!!2rrrri!N!J5&3!!!!)!N!3\r1PJ#3%)!!N!N"Z)#!!*!H"J#3"@PYCh"LE5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!\r)"`#3%!8!!A0SE'*3HA4S!*!)YR6iU,F,VDB!!"Y+!!!kV3!!!'3!!!'51S+!f`!\r!!+)!!Hi4!!3!!2rrrri!N!J5&J!!!!)!N!31PJ#3%)!!N!N"Z)#!!*!H"J#3"@P\rYCh"RE5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6\ri&lF,VDi!!+U-!!&m(`!!!'3!!!'5GeS-33!!!+)!!Hi5!!3!!2rrrri!N!J5&`!\r!!!)!N!31PJ#3%)!!N!N"Z)#!!*!H"J#3"@PYCh"ZCbj`F'-ZFfaL4PC$9!#3"`J\rJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6iU,F,VDF!!"ei!!""*J!!!'3!!!'\r5RmN1%3!!!+)!!Hi6!!3!!2rrrri!N!J5'!!!!!)!N!31PJ#3%)!!N!N"Z)#!!*!\rH"J#3"@PYCh"`E5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4\rS!*!)YR6[qEF,VDm!!"N!!!!eP3!!!'3!!!'5S3GV$!!!!+)!!Hi8!!3!!2rrrri\r!N!J5'3!!!!)!N!31PJ#3%)!!N!N"Z)#!!*!H"J#3"@PYCh0RD5j`F'-ZFfaL4PC\r$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6iXVF,VDd!!*ZF!!-`%J!\r!!'J!!!'5900H@`!!!+)!!Hi9!!3!!2rrrri!N!J5'J!!!!)!N!32PJ#3%)!!N!N\r"Z)#!!*!H"J#3"@PYCh4TCQBZF("M,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!\r"FfKXBP"jG'J!N!LfNmrIY`ZZ3!!!(#)!!$G1!!!!DJ!!!CTde[B$!!)`H3!#-(i\r!"!!!rrrrrJ#3#"Z-!!!!!J#3""D@!*!3)!#3#3'iJ%!!N"i(!*!%!@PYCf0[E'p\rbE@&`,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!\r)YT236VF,VN%!!!Yk!!!JmJ!!!'`!!!'@aalZ%`!#-(N!!M#'!!3!!2rrrri!N!J\rEK3!!!!)!N!38PJ#3%#!!N!N"Z)"!!*!H"`#3"!&TE@GQEh*YBA3ZBf&bBQpZ,R0\rXBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!LfNp#5Y`ZZ6!!!(4B\r!!$rF!!!!CJ!!!C+Cc`lr!!)`H3!#-)i!"!!!rrrrrJ#3#"Yq!!!!!J#3""'@!*!\r3)!#3#3'iJ%!!N"i(!*!%!@PYCfGTCLjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#\r3"`F!N"!&!!&cD'aL8(PdD!#3#,D6d+Lh#kj1!!$rrJ!#(e8!!!"Q!!!"PZr-YRi\r!!M"j!!)`PJ!%!!$rrrrq!*!)'hF!!!!#!*!%%TB!N"!J!*!*!EL!3!#3(JF!N!3\r"D@eRDR"PCbjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(P\rdD!#3#,D6d&1h#kj"!!!0H!!!'bX!!!"S!!!"NKe3R"J!!M"j!!)`R`!%!!$rrrr\rq!*!)'fm!!!!#!*!%%*B!N"!J!*!*!EL!3!#3(JF!N!3"D@eREh!ZBf&bBQpZ,R0\rXBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!LfNp"RY`ZZ4!!!'(S\r!!$9c!!!!CJ!!!C,Q@[!R!!)`H3!#-+F!"!!!rrrrrJ#3#"YS!!!!!J#3""'@!*!\r3)!#3#3'iJ%!!N"i(!*!%!@PYCh"LE5jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#\r3"`F!N"!&!!&cD'aL8(PdD!#3#,D6d(Dh#kj'!!!E6J!!1Vd!!!"Q!!!"NV2'2YB\r!!M"j!!)`V`!%!!$rrrrq!*!)'f%!!!!#!*!%%CB!N"!J!*!*!EL!3!#3(JF!N!3\r"D@eRF'GY,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4\rS!*!)YT23clF,VP%!!+U1!!&m(`!!!'J!!!'5+R,2#3!#-(N!!M#h!!3!!2rrrri\r!N!JE@J!!!!)!N!34PJ#3%#!!N!N"Z)"!!*!H"`#3"!&TE@G`EQFZBf&bBQpZ,R0\rXBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!LfNp#%Y`ZZ53!!(Ai\r!!%%f!!!!C!!!!C)9JFe!!!)`H3!#-,m!"!!!rrrrrJ#3#"Y6!!!!!J#3""'@!*!\r3)!#3#3'iJ%!!N"i(!*!%!@PYCh"`E5jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#\r3"`F!N"!&!!&cD'aL8(PdD!#3#,D6bQHh#kj5!!!C#!!!0C8!!!"N!!!"NP+'l%B\r!!M"j!!)`a`!%!!$rrrrq!*!)'d`!!!!#!*!%%CB!N"!J!*!*!EL!3!#3(JF!N!3\r"D@eRFfGT,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4\rS!*!)YT259lF,VP!!!*ZQ!!-`)J!!!'J!!!'@!"Ekl!!#-(N!!M$2!!3!!2rrrri\r!N!JE43!!!!)!N!35PJ#3%#!!N!N"Z)"!!*!H"`#3"!&TE@GdD@CQ,Q0KFQ*[ELj\rcE'*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)XK9fE,)9GQ`!!!TF!!!\r9YJ#3#,3F8fN!!!#J!!(Z!!!$!!$rrrrq!*!)%KX!!!!#!*!%#TB!N"S"YS$!!*!\rH"!#3"9*&384045jTE@G%9N08!*!3YV",rJ#3"k-!!!#J!!!!!3#3(")F!!!!!`!\r#!*!%"!!!!!J%"`#3'`'fJ-!!N#*dCA0d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,)9GS+b&AD#!!!#E!!!"@d!N!JH-h8`!!!!S`!"lKF!"!!!rrrrrJ#\r3#")G!!!!!J#3"!f@!*!D!EQ!`!#3(J3!N!9RE(4PFh4fD@9h,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&38%G04dY26J#3#,)9GSDb&AD'!!!Y!J!!-LS!N!KSUcRr!!!\r!S`!"lKJ!"!!!rrrrrJ#3#")H!!!!!J#3"!q@!*!D!EQ!`!#3(J3!N!9TELeRFQ9\rj,A3bBLj`Cfe'9N08!*!(##!!!!%!N!J(!*!5!9"34de(5dp1!*!)XK9fKV)9GSB\r!!!6)!!"253#3#*qNh2N!!!#M!!(Z'3!%!!$rrrrq!*!)%Km!!!!#!*!%#jB!N"S\r"ZB$!!*!H"!#3"@PZ,@PMEfiZF'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&(58CQ5PC\rA8J#3#,)9GSbb&AD0!!!cH!!!0*d!N!JBEcB*!!!!S`!"lKS!"!!!rrrrrJ#3#")\rJ!!!!!J#3"!k@!*!D!EQ!`!#3(J3!N!9TELeYBA!YG$*L,QGTCNC@3e3!N!F))!!\r!!3#3#!F!N")"8&"(68G,6di!N!Lb&ADCXK9fQJ!!Jd!!!*Cp!*!)Y'8FiJ!!!+-\r!!HiE!!3!!2rrrri!N!J5)3!!!!)!N!31PJ#3'J'jJ-!!N"i%!*!&D@iYFQGL,A3\rbBLj`F'e'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9fQV)e9ed!!!(\rd!!!$q`#3#1PD@aS!!!#M!!(Z-J!%!!$rrrrq!*!)%MJ!!!!#!*!%$TB!N"S"ZB$\r!!*!H"!#3"A4PFh4MEfjfCA*d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,)9GTbblc+M!!!'fJ!!(aN!N!K@$YZ!!!!!S`!"lM-!"!!!rrrrrJ#3#")\rj!!!!!J#3"!U@!*!D!EQ!`!#3(J3!N!9dCA0dD@eR,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,)9GTfb&ADG!!!#E!!!"@d!N!JH-h8`!!!!S`!"lM3\r!"!!!rrrrrJ#3#")k!!!!!J#3"!Z@!*!D!EQ!`!#3(J3!N!9dCA0dGQPPGbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&ADGY1Y)1J!!"ai!!"+&!*!\r))Eh,J!!!!+-!!Hie!!3!!2rrrri!N!J51`!!!!)!N!3-PJ#3'J'jJ-!!N"i%!*!\r&H(4PFh4fD@9h,R"j4&C$9!#3#!2J!Kd!@3%(Y`[%pVF,a5F!!!#T!!!!G!!!!!%\r!N"`5@`!!!!%!!J#3"!-!!!!)"!F!N"(J!*!*!B[c!*!M6'PL4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,@43U#h#24d!!!05J!!,4J!N!MY8H(Y!!!!U3!\r$L13!!J!!rrrrrJ#3#"QB!!!!!J#3"!f@!*!D!EqL!*!I"!#3"AGPBQ*bEhGcCA)\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFLYXlF)p()!!!S@!!!\rGa!#3#!DYRP-!!!#T!!1)`3!#!!$rrrrq!*!)'CF!!!!#!*!%#CB!N"S"[k)!N"m\r%!*!&FfpMDf9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@#PeH\rfhAY$!!!Ap!!!ALd!N!K[K5,`!!!!U3!$L+8!!J!!rrrrrJ#3#"Q@!!!!!J#3"!D\r@!*!D!EqL!*!I"!#3"A"bC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!LeJ#Q+Y`MdE`!!(L`!!''4!*!)EZ`Ve`!!!+N!!iL(!!)!!2rrrri!N!JCP3!\r!!!)!N!3+PJ#3'J'rSJ#3(`3!N!9TEA"eG'PX,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,AE08kfNk86!!!0`J!!*E%!!!"b!!!"QKfLqGF!!!#T!!1\r)I3!#!!$rrrrq!*!)'C3!!!!#!*!%#TB!N"S"[k)!N"m%!*!&Cf9dG'9iG#j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+fbY`MdE!!!))i!!'&0!*!\r))FI+$J!!!+N!!iKY!!)!!2rrrri!N!JCN`!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9\r$EfpVD@8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB!TL,D6T3X\r!!!*'!!!&B!#3#!UH5!F!!!#T!!1)@3!#!!$rrrrq!*!)'C)!!!!#!*!%#CB!N"S\r"[k)!N"m%!*!&BA4PH'Pd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA@'fNk8,!!!Er!!!JP`!N!K-l-f5!!!!U3!"lPB!!J!!rrrrrJ#3#"*F!!!\r!!J#3"!H@!*!D!EqL!*!I"!#3"@&TCQ-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)X[aGBEDkSq-!!!4'!!!+FJ#3#1`,r28!!!#T!!(Z9`!#!!$rrrr\rq!*!)%Pd!!!!#!*!%#CB!N"S"[k)!N"m%!*!&B@jjC'*Y,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mA@+h#24Y!!!-k!!!+@`!N!LKPrGj!!!!U3!\r"lPJ!!J!!rrrrrJ#3#"*H!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"@&cH@jMD'&d,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@+h#2m6!!!5iJ!!3@%\r!N!L@VRYf!!!!U3!"lPN!!J!!rrrrrJ#3#"*I!!!!!J#3"!Z@!*!D!EqL!*!I"!#\r3"@&cH@jMEh*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@+\rfNk8,!!!'VJ!!(1`!N!J`@Y[Q!!!!U3!"lPS!!J!!rrrrrJ#3#"*J!!!!!J#3"!Z\r@!*!D!EqL!*!I"!#3"@&eC'P[C'9f,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,,mA@+fNk8,!!!$)!!!"pm!N!M[eqiL!!!!U3!"lPX!!J!!rrrrrJ#\r3#"*K!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"@*KFf8f0#j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&eIYUpUS`!!&UB!!%!b!*!)QpM-pJ!!!+N!!Hj\rF!!)!!2rrrri!N!J5BJ!!!!)!N!34PJ#3'J'rSJ#3(`3!N!9#BA0P5&488&0PFRC\rPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eIYT1P"`!!##3\r!!"@U!*!)CDUb6J!!!+N!!HjG!!)!!2rrrri!N!J5B`!!!!)!N!3+PJ#3'J'rSJ#\r3(`3!N!9#BA0dD@pZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rmA@+h#24Y!!!4J!!!4ZX!N!KaV"bZ!!!!U3!"lPi!!J!!rrrrrJ#3#"*N!!!!!J#\r3"!D@!*!D!EqL!*!I"!#3"@*NBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&eLYUpUTJ!!%&B!!$VM!*!)BJRE[!!!!+N!!HjI!!)!!2rrrri!N!J\r5C3!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9LD@jSCAJZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aGBlDkSq-!!!(q!!!)IJ#3#'h+D6N!!!#T!!(ZB!!\r#!!$rrrrq!*!)%QB!!!!#!*!%#CB!N"S"[k)!N"m%!*!&BQPcC@0d,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@1fNk8-!!!*X!!!($F!N!LLX8P\r6!!!!U3!"lQ%!!J!!rrrrrJ#3#"*R!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"@0KE'9\rZC'&b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@5fhAY#!!!\rLA!!!Ia8!N!L3!$Y093!!!+N!!HjL!!)!!2rrrri!N!J5D!!!!!)!N!3'PJ#3'J'\rrSJ#3(`3!N!9MCfNZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rGAlD[DU3!!!cF!!!RP`#3#+jlUkN!!!#T!!(ZB`!#!!$rrrrq!*!)%QN!!!!#!*!\r%%*B!N"S"[k)!N"m%!*!&3dG*5&488&0PFRCPFLj`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!LcPTD`Y`MdE3!!"QJ!!"6#!*!)QP9B&!!!!+N!!HjN!!)\r!!2rrrri!N!J5DJ!!!!)!N!3)PJ#3'J'rSJ#3(`3!N!9MD(9ZDbj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eNYZ'B+`!!#,!!!"Tb!*!)jN1Ga3!\r!!+N!!HjP!!)!!2rrrri!N!J5D`!!!!)!N!3'PJ#3'J'rSJ#3(`3!N!9ME@3ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGCED[DUB!!!ad!!!R+J#\r3#"X%,MX!!!#T!!(ZCJ!#!!$rrrrq!*!)%Q`!!!!#!*!%"jB!N"S"[k)!N"m%!*!\r&BfpNC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%!pKYT1P$J!\r!%T!!!!"&E`#3#)TRmQJ!!!#T!!(ZC`!#!!$rrrrq!*!)%Qd!!!!#!*!%#CB!N"S\r"[k)!N"m%!*!&BfpNC@0c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA@@h#24Z!!!%SJ!!#`8!N!Kfm!Ye!!!!U3!"lQJ!!J!!rrrrrJ#3#"*Z!!!\r!!J#3"!Q@!*!D!EqL!*!I"!#3"@0[C'9[F#j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&ePYT1P$J!!",i!!!aa!*!)k1*,4J!!!+N!!HjT!!)!!2r\rrrri!N!J5E`!!!!)!N!3,PJ#3'J'rSJ#3(`3!N!9MEfa[FR0jFbj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ePYT1P$J!!!mJ!!!MR!*!)9U[2b!!\r!!+N!!HjU!!)!!2rrrri!N!J5F!!!!!)!N!3,PJ#3'J'rSJ#3(`3!N!9MEfeYB@j\rNFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ePY`Mr%`!!"EJ\r!!"$S!*!)#j0-#!!!!+N!!HjV!!)!!2rrrri!N!J5F3!!!!)!N!30PJ#3'J'rSJ#\r3(`3!N!9MEfe`D@aPB@aX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA@#f`FL@!!!4N!!!!%-U!*!)SFQHD!!!!+N!!HjX!!)!!2rrrri!N!J5FJ!\r!!!)!N!32PJ#3'J'rSJ#3(`3!N!9$EfjQD@G3BA*cCA)ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)X[aGCED6T3m!!!QD!!!J53#3#'SCi3#3"+N!!Hj\rY!!)!!2rrrri!N!J5F`!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9MEh"j,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@DfNk82!!!"`!!!!qJ!N!KP&H!\rF!!!!U3!"lQi!!J!!rrrrrJ#3#"*d!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"@0[F(P\rIFQ9R,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@DfQ,,Z!!!\r!q!!!!C!!!*!)eDHMNJ!!!+N!!Hj[!!)!!2rrrri!N!J5G3!!!!)!N!3*PJ#3'J'\rrSJ#3(`3!N!9NBQKKFfJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aGCVEGHd)!!!(N!!!%A!#3#'Ab*r)!!!#T!!(ZF!!#!!$rrrrq!*!)%RB!!!!\r#!*!%#jB!N"S"[k)!N"m%!*!&C'PbBf&MD'8ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aGClF)ra-!!!Xd!!!LS3#3#0b1N!!B!!!!U3!"lR%!!J!\r!rrrrrJ#3#"*h!!!!!J#3"!D@!*!D!EqL!*!I"!#3"@4TFbj`H84@3e3!N"#h#m8\r$Y`[&"3!!!+S!!!#T!!!!!3#3("*i!!!!!J!#!*!%#3!!!!J%"`#3'`'rSJ#3)f4\rTFh4eG'PXFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")EYYel43!\r!!-`!!!%4!*!)#Dj4X!!!!+S!!HlQ!!-!!2rrrri!N!J5H3!!!!)!N!3,PJ#3'J(\r!SJ#3(`3!N!9IAfPZDA4IAbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Le%")EY`MdG3!!#8!!!"Pp!*!)-CfFI3!!!+S!!HlR!!-!!2rrrri!N!J5HJ!\r!!!)!N!32PJ#3'J(!SJ#3(`3!N!9KFQ0SDACPAh9dD@`ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y4!5'lE"b*J!!#am!!#S'3#3#-L'q,8!!!#U!!(\rZk!!$!!$rrrrq!*!)%RX!!!!#!*!%$*B!N"S"`+)!N"m%!*!&Bf0[EA"TE'9b,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%KZfhl`3!!!A4!!!5pB\r!N!J"d11T!!!!UJ!"lZN!!`!!rrrrrJ#3#"*m!!!!!J#3"!D@!*!D!F#L!*!I"!#\r3"@0YC#j`H84@3e3!N"#h#m8&Y`[&"3!!!+X!!!#U!!!!!3#3("*p!!!!!`!#!*!\r%"`!!!!J%"`#3'`(!SJ#3)f0[E@eKEQ4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)Y4!5(,@!+C)!!!$`!!!#3J#3#)q!ba8!!!#V!!(ZqJ!%!!$rrrrq!*!\r)%Ri!!!!#!*!%#jB!N"S"`D)!N"m%!*!&AepTEQPdAemZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,B8Vq8!!!Cm!!!63!#3#$%pE3X!!!#V!!(\rZq`!%!!$rrrrq!*!)%Rm!!!!#!*!%#*B!N"S"`D)!N"m%!*!&BQ4TFh3ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,B*24N!!!3D!!!-#!#3#!j\rl`&J!!!#V!!(Zr!!%!!$rrrrq!*!)%S!!!!!#!*!%$CB!N"S"`D)!N"m%!*!&BQ4\rTFh4IC(9YBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")FYK5\r[jJ!!"53!!"$9!*!)VJGZ8`!!!+X!!Hlp!!3!!2rrrri!N!J5J3!!!!)!N!3)PJ#\r3'J("SJ#3(`3!N!9LG@PXC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Le%")GYK5[jJ!!#D)!!"ql!*!)JaXk'!!!!+X!!Hlq!!3!!2rrrri!N!J5JJ!\r!!!)!N!30PJ#3'J("SJ#3(`3!N!9LG@PXC&pME'PL,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,83%KffhAY'!!!EHJ!!B0X!N!JNA`q#!!!!U`!"l[m\r!"!!!rrrrrJ#3#"+$!!!!!J#3"!b@!*!D!F'L!*!I"!#3"@*eD@aNAf9iG#j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")GYJNp)3!!%6S!!$X+!*!\r)5@HRL!!!!+X!!Hm!!!3!!2rrrri!N!J5K!!!!!)!N!3,PJ#3'J("SJ#3(`3!N!9\rLG@PXC&p`H5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")GYK5\r[jJ!!!i!!!!XJ!*!*%"Um!!!!U`!"l`%!"!!!rrrrrJ#3#"+&!!!!!J#3"!L@!*!\rD!F'L!*!I"!#3"@0XC@&Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,83%KffMRUi!!!A9J!!9aF!N!JKR8LF!!!!U`!"l`)!"!!!rrrrrJ#3#"+'!!!\r!!J#3"!U@!*!D!F'L!*!I"!#3"@PZFh4KE'`ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)Y4!5(EB*25)!!!N1!!!I!`#3#&+D(a`!!!#V!!([!`!%!!$\rrrrrq!*!)%SF!!!!#!*!%$TB!N"S"`D)!N"m%!*!&D@jcG'&XE&pXD@)ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(EEI["%!!"4B!!"'e!#3#&,\rPP(!!!!#V!!(["!!%!!$rrrrq!*!)%SJ!!!!#!*!%#*B!N"S"`D)!N"m%!*!&Ff4\rTFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y@-V)VB*24N!!"+\r!!!"$-J#3#!NR+m`!!iN)!!1*$!!%!!$rrrrq!*!)'8m!!!!#!*!%$*B!N"S"`D)\r!N"m%!*!&BQ4TFh4IFR"Y,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,@!+C1h#24f!!"1a!!!K#`!N!LG8rlr!!1*#!!$L3d!"!!!rrrrrJ#3#"P1!!!\r!!J#3""#@!*!D!F'L!*!I"!#3"@*NDA0dAhGTEQPZFh3ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y@-V)lE&dIm!!!6Q!!!00!#3#*,`0f!!!iN)!!1\r*%J!%!!$rrrrq!*!)'8d!!!!#!*!%%*B!N"S"`D)!N"m%!*!&BR9TE'4IFf0bDA"\rdFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeBbXMY@-V)`!!!9)\r!!!,2!*!)FmAD@!!$L3J!!iN8!!3!!2rrrri!N!JC6!!!!!)!N!33PJ#3'J("SJ#\r3(`3!N!9MEfeYB@jNAh4PEA"XBA4P4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,9M+b1f&+rQ!!!1IJ!!-dN!N!K!1"-P!!1*#!!$L48!"!!!rrrrrJ#3#"P\r,!!!!!J#3"!Q@!*!D!F'L!*!I"!#3"@0[EQCTCbj`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!LfS0(%YUB9i`!!!f!!!!Ri!*!)J5JI"!!$L3J!!iNA!!3\r!!2rrrri!N!JC5J!!!!)!N!32PJ#3'J("SJ#3(`3!N!9TER0dB@aXAf4KG'%ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y@-V)lB*25)!!!)J!!!&Y3#\r3#0NGrKB!!iN)!!1*'!!%!!$rrrrq!*!)'8N!!!!#!*!%%TB!N"S"`D)!N"m%!*!\r&D@jcG'&XE&pSC@&NCA*c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,9M+b5f#6dL!!!$&!!!#$J!N!MFQ1&l!!1*#!!$L4S!"!!!rrrrrJ#3#"P)!!!\r!!J#3""+@!*!D!F'L!*!I"!#3"@PZFh4KE'aIFf0bDA"dFbj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")EYJNp$!!!#f!!!#!2!*!)SdGF@!!!!+S\r!!HlU!!-!!2rrrri!N!J5L3!!!!)!N!3(PJ#3'J(!SJ#3(`3!N!9MEh*P,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%KZf#6d-!!!'J!!!%2)!N!K\rM59KC!!!!UJ!"lZX!!`!!rrrrrJ#3#"++!!!!!J#3"!Z@!*!D!F#L!*!I"!#3"@4\rPF&peG'PX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%KZf#6d\r-!!!+ZJ!!(YF!N!M"4mN@!!!!UJ!"lZ`!!`!!rrrrrJ#3#"+,!!!!!J#3"!Z@!*!\rD!F#L!*!I"!#3"@4TFPpeG'PX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,B8X%Qh#24e!!!Ve!!!T"i!N!Lqh@L4!!!!UJ!"lZd!!`!!rrrrrJ#3#"+\r-!!!!!J#3"!H@!*!D!F#L!*!I"!#3"@4TFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)Y4!5'l@VXF`!!!9Q!!!1'`#3#&Eb9$i!!!#U!!(ZlJ!$!!$\rrrrrq!*!)%Sd!!!!#!*!%#CB!N"S"`+)!N"m%!*!&CA*bEh*c,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%Kbf#6dB!!!@$!!!4k`!N!JAj!9&!!!\r!UJ!"lZm!!`!!rrrrrJ#3#"+1!!!!!J#3"!q@!*!D!F#L!*!I"!#3"@CKEQ0jAfG\rPG'p`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")FYU$4$`!\r!#VJ!!#!G!*!)&8KKc3!!!+S!!Hl`!!-!!2rrrri!N!J5M`!!!!)!N!3-PJ#3'J(\r!SJ#3(`3!N!9QD@aPAh9dD@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)Y4!5(,B*24J!!",H!!"(&3#3#,$G&D`!!!#U!!(Zm3!$!!$rrrrq!*!)%T!\r!!!!!!J#3"!q@!*!D!F#L!*!I"!#3"@ecGQ0MEfe`D@aPFLj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&)UBfJ!N!Le*U8!Y5DP!!!!!Ei!!!-G!*!)#,Cbk!!!!+S\r!!Hlb!!-!!2rrrri!N!J5N3!!!!)!N!3'PJ#3'J(!SJ#3(`3!N!9548&%689'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,B*24J!!!Jq!!!@M3#3#,B\rekVB!!!#U!!(Zm`!$!!$rrrrq!*!)%T)!!!!#!*!%#*B!N"S"`+)!N"m%!*!&Fh"\rKGfiZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,E&dIm!!!p\r1!!!c&!#3#1X&rSN!!!#U!!(Zp!!$!!$rrrrq!*!)%T-!!!!#!*!%$*B!N"S"`+)\r!N"m%!*!&FhPcBfpZCQPR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,83%KbelBE3!!!4e!!!1jm!N!LFYJL1!!!!UJ!"l[8!!`!!rrrrrJ#3#"+8!!!\r!!J#3"!b@!*!D!F#L!*!I"!#3"A4PH(4ICQPXC5j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Le%")FY`MdG3!!$&i!!#L1!*!)3Z!,KJ!!!+S!!Hlf!!-\r!!2rrrri!N!J5P3!!!!)!N!33PJ#3'J(!SJ#3(`3!N!9eEQPiBf0[EA"TE'9b,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,DJdF5fiCJc!!!BJJ!!3dJ\r!N!JNc8'q!!!!UJ!"l[F!!`!!rrrrrJ#3#"+@!!!!!J#3"!H@!*!D!F#L!*!I"!#\r3"A9dD@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,EI["%\r!!"!S!!!Y(J#3#(RehLB!!!#U!!(Zq!!$!!$rrrrq!*!)%TF!!!!#!*!%#TB!N"S\r"`+)!N"m%!*!&GQ9bFfP[ELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!LeJ#Q1YUpUY!!!%'J!!$Jf!*!)A)DUF!!$L2!!!iMc!!-!!2rrrri!N!JC4`!\r!!!)!N!32PJ#3'J(!SJ#3(`3!N!9LBh"`BfpYF'PXCA)ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)YB!TMlEI["!!!"81!!"%DJ#3##YCK5N!!iM`!!1\r)p`!$!!$rrrrq!*!)'8B!!!!#!*!%%TB!N"S"`+)!N"m%!*!&BhPRGfPZBf0[EA"\rTE'9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,9M+b'fhl`4!!!\r,eJ!!)iN!N!Jfr'0E!!1)m!!$L2`!!`!!rrrrrJ#3#"P&!!!!!J#3"!b@!*!D!F#\rL!*!I"!#3"@9iG'9ZFfP[ELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!LeUl(hYJNp'!!!$VS!!$1H!*!)A(*9q`!$L2!!!iMr!!-!!2rrrri!N!JC4!!\r!!!)!N!3,PJ#3'J(!SJ#3(`3!N!9QD@aPE'PcG#j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!LfMR`JYX4Q[!!!#Ki!!#&i!*!)QF"cq3!#-G!!!M(K!!-\r!!2rrrri!N!JE1!!!!!)!N!34PJ#3'J(!SJ#3(`3!N!9YGf9bDh0MEfe`D@aPFLj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eRYT1P%3!!$'3!!#9\rR!*!)@BrY2!!!!+N!!Hjb!!)!!2rrrri!N!J5k3!!!!)!N!3+PJ#3'J'rSJ#3(`3\r!N!9NEh0`BA4S,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@H\rfaG(k!!!&*!!!%*J!N!Km9d)V!!!!U3!"lR-!!J!!rrrrrJ#3#",U!!!!!J#3"!U\r@!*!D!EqL!*!I"!#3"@4eE@*NBQdZF(P%9N08!*!3YV)CmJ#3"kd!!!#T!!!!!3#\r3(",V!!!!!J!#!*!%#3!!!!J%"`#3'`'rSJ#3)f9ZBfpND@jRFdC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")MYPaNr3!!"!i!!!R3!!!!G!!!!CS"c0N\ra!!!!V3!"leF!!`!!rrrrrJ#3#",X!!!!!J#3"!Z@!*!D!F1L!*!I"!#3"9pID@j\rTG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L1eC(32!!!\r#U!!!"im!N!Lp46Q&!!!!V3!"leJ!!`!!rrrrrJ#3#",Y!!!!!J#3"!U@!*!D!F1\rL!*!I"!#3"@&XD@&cCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)Y4!5)l83%L-!!!&N!!!#h`!!!()!!!'DTS-M83!!!+d!!HpC!!-!!2rrrri!N!J\r5lJ!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9KFf0TD5j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Le%")MY4!5)`!!!J3!!!6U!*!)B*-`Z`!!!+d!!HpD!!-\r!!2rrrri!N!J5l`!!!!)!N!3+PJ#3'J($SJ#3(`3!N!9MD'&bE@&`,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L1fMRUj!!!+c!!!+%%!N!LrD9l\rl!!!!V3!"leX!!`!!rrrrrJ#3#",`!!!!!J#3"!L@!*!D!F1L!*!I"!#3"@0`-$-\rh,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L1fMRUj!!!&HJ!\r!&c-!N!M`9-eM!!!!V3!"le`!!`!!rrrrrJ#3#",a!!!!!J#3"!Q@!*!D!F1L!*!\rI"!#3"@0`-6!`0Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")\rMYSjkZ3!!#ZJ!!#Jh!*!)DZJ3@3!!!+d!!HpG!!-!!2rrrri!N!J5mJ!!!!)!N!3\r*PJ#3'J($SJ#3(`3!N!9MF$%`-MBZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)Y4!5)lD1HVN!!!8%!!!52J#3#*XPMTJ!!!#Y!!([AJ!$!!$rrrrq!*!\r)%[-!!!!#!*!%#CB!N"S"`k)!N"m%!*!&Bh!a-M8`,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,83%L1fMRUj!!!'&J!!&m%!N!LYZL)U!!!!V3!"lem\r!!`!!rrrrrJ#3#",d!!!!!J#3"!Q@!*!D!F1L!*!I"!#3"@0`-6)e-5j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")MYSjkZ3!!!iB!!!M(!*!)P4G\rIK`!!!+d!!HpJ!!-!!2rrrri!N!J5p3!!!!)!N!3*PJ#3'J($SJ#3(`3!N!9MF$%\rb06)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5)lD1HVN!!!@\rk!!!9b`#3#,VBc4d!!!#Y!!([B3!$!!$rrrrq!*!)%[B!!!!#!*!%#CB!N"S"`k)\r!N"m%!*!&Bh!a-M8c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8\r3%L1fMRUj!!!$b!!!#G)!N!L-,lTQ!!!!V3!"lf)!!`!!rrrrrJ#3#",h!!!!!J#\r3"!Q@!*!D!F1L!*!I"!#3"@0`-6)e0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Le%")MYSjkZ3!!"F3!!")I!*!)&!F(m3!!!+d!!HpM!!-!!2rrrri\r!N!J5q!!!!!)!N!3*PJ#3'J($SJ#3(`3!N!9MF$%b068ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y4!5)lD1HVN!!!@b!!!3f3#3#*8a&8F!!!#Y!!(\r[C!!$!!$rrrrq!*!)%[N!!!!#!*!%#CB!N"S"`k)!N"m%!*!&Bh!a-M8f,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L5fMRUj!!!&(!!!%[8!N!N\rHKD!!!!#Y!!([C3!$!!$rrrrq!*!)%[S!!!!#!*!%#CB!N"S"`k)!N"m%!*!&Bh!\ra-M8h,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L5fMRUj!!!\r%%J!!#Z3!N!JQrU$h!!!!V3!"lfB!!`!!rrrrrJ#3#",l!!!!!J#3"!Q@!*!D!F1\rL!*!I"!#3"@0`-6)e1#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\re%")NYSjkZ3!!#Z)!!#28!*!)+&E'+!!!!+d!!HpR!!-!!2rrrri!N!J5r!!!!!)\r!N!3)PJ#3'J($SJ#3(`3!N!9MF$3b0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Le%")NYSjkZJ!!"jS!!"[r!*!)VS@UX!!!!+d!!HpS!!-!!2rrrri\r!N!J5r3!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$3c0bj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!#Xi!!#K"!*!)`5F$33!!!+d!!Hp\rT!!-!!2rrrri!N!J5rJ!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$8`-#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!"`J!!"`Q!*!),$(\rCf!!!!+d!!HpU!!-!!2rrrri!N!J5r`!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$F\rc0bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!"fB\r!!"[L!*!)B2m8b!!!!+d!!HpV!!-!!2rrrri!N!J6!*!%!J#3"!L@!*!D!F1L!*!\rI"!#3"@0`0cFe,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L5\rfMRUk!!!(DJ!!'fJ!N!L&XfqB!!!!V3!"lf`!!`!!rrrrrJ#3#"-"!!!!!J#3"!L\r@!*!D!F1L!*!I"!#3"@0`1$8`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,83%L5fMRUk!!!("J!!(*-!N!KDa2-G!!!!V3!"lfd!!`!!rrrrrJ#3#"-\r#!!!!!J#3"!L@!*!D!F1L!*!I"!#3"@0`1$8b,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,83%L5fMRUk!!!'N!!!!"X6!*!)F+'p&J!!!+d!!HpZ!!-\r!!2rrrri!N!J6!`!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Je05j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!"PB!!"AY!*!)Ph#6m!!\r!!+d!!Hp[!!-!!2rrrri!N!J6"!!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Je0Lj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!"f3!!"X\rQ!*!)'IQBD`!!!+d!!Hp`!!-!!2rrrri!N!J6"3!!!!)!N!3)PJ#3'J($SJ#3(`3\r!N!9MF$Je0bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSj\rkZJ!!"iB!!"`S!*!)qL[ib`!!!+d!!Hpa!!-!!2rrrri!N!J6"J!!!!)!N!3)PJ#\r3'J($SJ#3(`3!N!9MF$Jf-#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Le%")NYSjkZ`!!"ii!!"`B!*!)hTk%ZJ!!!+d!!Hpb!!-!!2rrrri!N!J6"`!\r!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf-5j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Le%")NYSjkZ`!!"j`!!"Tc!*!)P'6"R!!!!+d!!Hpc!!-!!2r\rrrri!N!J6#!!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf-Lj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZ`!!"jJ!!"ZC!*!)2Jh+D3!!!+d\r!!Hpd!!-!!2rrrri!N!J6#3!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf-bj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZ`!!"bi!!"VU!*!\r)SE1I0!!!!+d!!Hpe!!-!!2rrrri!N!J6#J!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9\rMF$Jf0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")PYSjkZ`!\r!"k)!!"`6!*!)2HL+53!!!+d!!Hpf!!-!!2rrrri!N!J6#`!!!!)!N!3)PJ#3'J(\r$SJ#3(`3!N!9MF$Jf05j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\re%")PYSjkZ`!!"VS!!"[*!*!)GrDr&!!!!+d!!Hph!!-!!2rrrri!N!J6$!!!!!)\r!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf0Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Le%")PYSjkZ`!!"[J!!"T*!*!)J%kQ4`!!!+d!!Hpi!!-!!2rrrri\r!N!J6$3!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf15j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Le%")PYSjkZ`!!"N`!!"D"!*!)N9@#0`!!!+d!!Hp\rj!!-!!2rrrri!N!J6$J!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jh0#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")PYSjkZ`!!#Si!!#G@!*!)ZSR\r`5!!!!+d!!Hpk!!-!!2rrrri!N!J6$`!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$J\rh05j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")PYSjkZ`!!!F`\r!!!1b!*!)SXf-C!!!!+d!!Hpl!!-!!2rrrri!N!J6%!!!!!)!N!3-PJ#3'J($SJ#\r3(`3!N!9TFfmi1$8jAc%ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)Y4!5*ED1HV`!!!1Z!!!013#3#-"fkpi!!!#Y!!([I!!$!!$rrrrq!*!)%a%!!!!\r#!*!%$CB!N"S"`k)!N"m%!*!&DA0[1$Je19ma-#j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Le%")PYSjk[!!!""J!!!pF!*!)q"6D%J!!!+d!!Hpp!!-\r!!2rrrri!N!J6%J!!!!)!N!30PJ#3'J($SJ#3(`3!N!9TFfmi1$8jAc%c,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L@fMRUm!!!$&J!!#SF!N!L\rAhQ,b!!!!V3!"lhi!!`!!rrrrrJ#3#"-6!!!!!J#3"!f@!*!D!F1L!*!I"!#3"@P\rcEcJi06PI-63ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*ED\r1HV`!!!*@!!!&13#3#%@*XRm!!!#Y!!([I`!$!!$rrrrq!*!)%a3!!!!#!*!%$CB\r!N"S"`k)!N"m%!*!&DA0[1$Je19ma05j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Le%")PYSjk[!!!"!)!!!p*!*!)q13kA`!!!+d!!Hq!!!-!!2rrrri\r!N!J6&3!!!!)!N!3-PJ#3'J($SJ#3(`3!N!9TFfmi1$8jAc)ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*ED1HV`!!!-Q!!!+"J#3#,lP04X!!!#\rY!!([J3!$!!$rrrrq!*!)%aB!!!!#!*!%$*B!N"S"`k)!N"m%!*!&DA0[1$Je19m\rc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L@fMRUm!!!$c!!\r!$GB!N!JIV"[q!!!!V3!"li)!!`!!rrrrrJ#3#"-A!!!!!J#3"!b@!*!D!F1L!*!\rI"!#3"@PcEcJi06PI0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\re%")PYSjk[!!!"3`!!"8*!*!)j)GrF!!!!+d!!Hq$!!-!!2rrrri!N!J6'!!!!!)\r!N!3-PJ#3'J($SJ#3(`3!N!9TFfmi1$8jAc8ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)Y4!5*ED1HV`!!!4B!!!0b3#3##0rc@N!!!#Y!!([K!!$!!$\rrrrrq!*!)%aN!!!!#!*!%$*B!N"S"`k)!N"m%!*!&DA0[1$Je19mf,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L@fMRUm!!!%cJ!!%LJ!N!JEp%h\r)!!!!V3!"li8!!`!!rrrrrJ#3#"-D!!!!!J#3"!b@!*!D!F1L!*!I"!#3"@PcEcJ\ri06PI0bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QYSjk[!!\r!!k)!!!Uk!*!)2MBJX`!!!+d!!Hq'!!-!!2rrrri!N!J6'`!!!!)!N!3-PJ#3'J(\r$SJ#3(`3!N!9TFfmi1$8jAcJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)Y4!5*VD1HV`!!!)q!!!%p3#3##m2['B!!!#Y!!([K`!$!!$rrrrq!*!)%a`\r!!!!#!*!%$*B!N"S"`k)!N"m%!*!&DA0[1$Je19mj,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,83%LDfMRUm!!!'h!!!(!N!N!Mq9[Uh!!!!V3!"liJ\r!!`!!rrrrrJ#3#"-G!!!!!J#3"!Q@!*!D!F1L!*!I"!#3"@Y[D6KIFLj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QY4!5*J!!!@J!!!,T!*!)SjG\rLB`!!!+d!!Hq*!!-!!2rrrri!N!J6(J!!!!)!N!3+PJ#3'J($SJ#3(`3!N!9XBA4\rTEPma,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LDfMRUm!!!\r'U!!!'2%!N!K()GLB!!!!V3!"liS!!`!!rrrrrJ#3#"-I!!!!!J#3"!q@!*!D!F1\rL!*!I"!#3"@eKBepMHA*TE'aTBbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Le%")QYSjk[3!!"bS!!"T!!*!)QF!rG`!!!+d!!Hq,!!-!!2rrrri!N!J\r6)!!!!!)!N!3-PJ#3'J($SJ#3(`3!N!9YB@0ICh*PC@XZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y4!5*VD1HVd!!!G+!!!C$`#3#,*iYCX!!!#Y!!(\r[M!!$!!$rrrrq!*!)%b%!!!!#!*!%$TB!N"S"`k)!N"m%!*!&E@&MAfPMC@aKEQ3\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*VD1HVd!!!F#!!!\rF!*!*#P1TK`!!!+d!!Hq0!!-!!2rrrri!N!J6)J!!!!)!N!30PJ#3'J($SJ#3(`3\r!N!9YB@0IE'&dD@ib,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8\r3%LDfMRUp!!!(9J!!'5m!N!KIZM-#!!!!V3!"lii!!`!!rrrrrJ#3#"-M!!!!!J#\r3"!b@!*!D!F1L!*!I"!#3"@eKBepbEfeKELj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Le%")QYSjk[3!!"d3!!"P&!*!)F"aPf`!!!+d!!Hq2!!-!!2r\rrrri!N!J6*!!!!!)!N!31PJ#3'J($SJ#3(`3!N!9YB@0IG(9bDfPcD#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QY4!5*J!!!C`!!!-b!*!)-MC\rX5J!!!+d!!Hq3!!!$!!$rrrrq!*!)%b8!!!!#!*!%"jB!N"S"`k)!N"m%!*!&E@*\rMFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QY4!5*J!!!9i\r!!!+3!!#3#%Sl2qX!!!#Y!!([N3!$!!$rrrrq!*!)%bB!!!!#!*!%&CB!N"S"`k)\r!N"m%!*!&FQ&hAh9ZD@0[C'9ICA0MBA"P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,83%LDe%")Q!!!"9J!!!S3!N!M[$h(R!!!!V3!"lj)!!`!!rrr\rrrJ#3#"-R!!!!!J#3""'@!*!D!F1L!*!I"!#3"A9ZD@0[C'9ICA0MBA"P,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LDe%")Q!!!"@J!!!SS!N!M\rD#jJZ!!!!V3!"lj-!!`!!rrrrrJ#3#"-S!!!!!J#3""1@!*!D!F1L!*!I"!#3"A9\rZD@0[C'9ID@jdCA*ZB@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)Y4!5*V83%LB!!!&8!!!#E3#3#&j`b2%!!!#Y!!([P!!$!!$rrrrq!*!)%bN!!!!\r#!*!%#CB!N"S"`k)!N"m%!*!&GA4QAc%f,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,83%LDe%")Q!!!"@J!!!RB!N!KL2JbB!!!!V3!"lj8!!`!!rrr\rrrJ#3#"-U!!!!!J#3"!b@!*!D!F1L!*!I"!#3"A9dCPma0PpLC5j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QY4!5*J!!!9S!!!*f!*!)fHq'@`!\r!!+d!!Hq@!!-!!2rrrri!N!J6+`!!!!)!N!3-PJ#3'J($SJ#3(`3!N!9eG'CI-6C\rIE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*l83%LF!!!&\r5!!!#DJ#3#0l"mNS!!!#Y!!([P`!$!!$rrrrq!*!)%b`!!!!#!*!%#*B!N"S"`k)\r!N"m%!*!&GA4QAcJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y@4\rd$l9NG!m!!!'5!!!$)!#3#'@bM6S!!iQ+!!1*aJ!$!!$rrrrq!*!)'5-!!!!#!*!\r%$*B!N"S"`k)!N"m%!*!&G@jNC@CTEQ9N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,4$Bl1fNk84!!!,bJ!!+$m!N!Mc-CX#!!!!U3!"lR8!!J!!rrr\rrrJ#3#"-Z!!!!!J#3"!U@!*!D!EqL!*!I"!#3"@CTE'9MEA!ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGD,D6T4)!!!Y`!!!QU3#3#)A5Qmm!!!#\rT!!(ZGJ!#!!$rrrrq!*!)%bm!!!!#!*!%$*B!N"S"[k)!N"m%!*!&CQPXC@PZF(9\rd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@Lfhl`2!!!$L!!\r!#@m!N!Mk*[-+!!!!U3!"lRF!!J!!rrrrrJ#3#"-`!!!!!J#3"!U@!*!D!EqL!*!\rI"!#3"@CZE@&dBfJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rGD,D[DUF!!!ak!!!fdJ#3#(l&m"B!!!#T!!(ZH!!#!!$rrrrq!*!)%c%!!!!#!*!\r%$*B!N"S"[k)!N"m%!*!&CQpbE@&dG'9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mA@QfNk85!!!&k!!!%GF!N!J)QLiX!!!!U3!"lRN!!J!!rrr\rrrJ#3#"-b!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"@C`CQpbE@&d,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@Qh#24Z!!!F)!!!AdB!N!LmL'3f!!!\r!U3!"lRS!!J!!rrrrrJ#3#"-c!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"@CdF'aTBLj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eTYT1P%`!!"h!!!"3\rq!*!)F)KViJ!!!+N!!Hjl!!)!!2rrrri!N!J60!!!!!)!N!3*PJ#3'J'rSJ#3(`3\r!N!9RCA4[F(3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGDEE\r&dIX!!!4Z!!!,8J#3#%0@X8X!!!#T!!(ZI!!#!!$rrrrq!*!)%c8!!!!#!*!%#TB\r!N"S"[k)!N"m%!*!&Cf9dF'&cFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&eTYT1P%`!!!H`!!!@U!*!),X*kjJ!!!+N!!Hjp!!)!!2rrrri!N!J\r60J!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9RE'pL,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mA@QfVfUS!!!(H!!!&G-!N!K4SAUX!!!!U3!"lRi!!J!\r!rrrrrJ#3#"-h!!!!!J#3"!b@!*!D!EqL!*!I"!#3"@G[F'KPFQaTBLj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eUYYel3J!!$@!!!#lV!*!)bIa\rTAJ!!!+N!!Hjr!!)!!2rrrri!N!J61!!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9RHQP\r`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@UfZU2N!!!5M!!\r!6'i!N!K8UPS@!!!!U3!"lS!!!J!!rrrrrJ#3#"-j!!!!!J#3""'@!*!D!EqL!*!\rI"!#3"@KdE@aPER4TG(PNC@Cc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mA@UfVfUS!!!)VJ!!+FJ!N!KIrJSb!!!!U3!"lS%!!J!!rrrrrJ#3#"-\rk!!!!!J#3"!U@!*!D!EqL!*!I"!#3"@KdE@aXD@)ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aGDVF)p'i!!"k%!!"Xj`#3#*6%G#3!!!#T!!(ZJJ!\r#!!$rrrrq!*!)%cX!!!!#!*!%#TB!N"S"[k)!N"m%!*!&D(4dF'aTBLj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eUYUpUU3!!%-`!!%,N!*!)6$E\rC%!!!!+N!!Hk$!!)!!2rrrri!N!J62!!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9TD'p\r[Dh-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGE,DmS(N!!#4\rk!!#%f!#3#1Cd!4i!!!#T!!(ZK!!#!!$rrrrq!*!)%cd!!!!#!*!%#TB!N"S"[k)\r!N"m%!*!&D@eKF'aTBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&eXYT@rVJ!!"'S!!!e3!*!))T5iS3!!!+N!!Hk&!!)!!2rrrri!N!J62J!!!!)\r!N!3*PJ#3'J'rSJ#3(`3!N!9TE@GSC()ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)X[aGEED[DUN!!!0L!!!(pJ#3#!9Qc9d!!!#T!!(ZKJ!#!!$rrrr\rq!*!)%cm!!!!#!*!%#TB!N"S"[k)!N"m%!*!&Df9jGfpbC#j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eYYUpUU3!!"&B!!!fD!*!)'&!9p`!!!+N\r!!Hk(!!)!!2rrrri!N!J63!!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9VEQ9P,R"j4&C\r$9!#3%,Db'I8!N!HZ!!!!U3!!!!%!N"`633!!!!)!!J#3"!F!!!!)"!F!N"X"[k)\r!N#0XD@)YEfaN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LHe%")\rR!!!%-J!!#5S!N!Km0ITb!!!!VJ!"ljN!!`!!rrrrrJ#3#"0#!!!!!J#3"!U@!*!\rD!F5L!*!I"!#3"@&NC("KBfXZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)Y4!5*lCfXh8!!!0B!!!(Y`#3#&iBa!F!!!#Z!!([QJ!$!!$rrrrq!*!)%d-\r!!!!#!*!%"TB!N"S"a+)!N"m%!*!&Bfe`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,83%LHfGV0e!!!$TJ!!#"X!N!KrlLX9!!!!VJ!"ljX!!`!!rrr\rrrJ#3#"0%!!!!!J#3"!Z@!*!D!F5L!*!I"!#3"@0YF'0KBfKP,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LHfVfUi!!!%$!!!#AB!N!J'%p+L!!!\r!VJ!"lj`!!`!!rrrrrJ#3#"0&!!!!!J#3"!Z@!*!D!F5L!*!I"!#3"@0[C'9SB@0\rV,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LHfGV0f!!!'[!!\r!&j8!N!K8bmCd!!!!VJ!"ljd!!`!!rrrrrJ#3#"0'!!!!!J#3"!Q@!*!D!F5L!*!\rI"!#3"@4TFQ0YF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")\rRY4!5*`!!!Y`!!!C)!*!)ZD*qC!!!!+i!!HqH!!-!!2rrrri!N!J64`!!!!)!N!3\r(PJ#3'J(%SJ#3(`3!N!9NG@e`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,83%LHe%")R!!!"%J!!!Ni!N!JZR08K!!!!VJ!"ljm!!`!!rrrrrJ#3#"0\r)!!!!!J#3"!H@!*!D!F5L!*!I"!#3"@CTEQ3ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)Y4!5*lCfXhB!!"&!!!!l!3#3#%'R1c%!!!#Z!!([S!!$!!$\rrrrrq!*!)%dN!!!!#!*!%"TB!N"S"a+)!N"m%!*!&CQed,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,83%LHfVfUi!!!#3J!!"bJ!N!JHA"V(!!!!VJ!\r"lk%!!`!!rrrrrJ#3#"0+!!!!!J#3"!H@!*!D!F5L!*!I"!#3"@GbCA!ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*l83%LF!!!#J!!!")!#3#2d\r3B2F!!!#Z!!([SJ!$!!$rrrrq!*!)%dX!!!!#!*!%#jB!N"S"a+)!N"m%!*!&E'p\rMDfCTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5+,83%LJ\r!!!*F!!!'%!#3#*RM!$)!!!#Z!!([S`!$!!$rrrrq!*!)%d`!!!!#!*!%#CB!N"S\r"a+)!N"m%!*!&EQ9hC'Pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,83%LLfVfUi!!!4ZJ!!1Pi!N!Mi%[pf!!!!VJ!"lk3!!`!!rrrrrJ#3#"00!!!\r!!J#3"!@@!*!D!F5L!*!I"!#3"@jT,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,83%LLfVfUj!!!$E!!!#Ni!N!KHS2[q!!!!VJ!"lk8!!`!!rrrrrJ#\r3#"01!!!!!J#3"!Z@!*!D!F5L!*!I"!#3"A"KBfYYB@PX,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,83%LHfGV0e!!!-FJ!!*hJ!N!LIp[F*!!!!VJ!\r"lkB!!`!!rrrrrJ#3#"02!!!!!J#3"!H@!*!D!F5L!*!I"!#3"9"KFQ%ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5+,83%LJ!!!*f!!!&"J#3#,4\rdeCX!!!#Z!!([T`!$!!$rrrrq!*!)%e!!!!!#!*!%"jB!N"S"a+)!N"m%!*!&F'p\rXH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")SY4!5+!!!!,3\r!!!%8!*!)!jG0lJ!!!+i!!HqS!!-!!2rrrri!N!J683!!!!)!N!3(PJ#3'J(%SJ#\r3(`3!N!9bB@jN,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LL\rfVfUj!!!&UJ!!$qJ!N!ME36LF!!!!VJ!"lkN!!`!!rrrrrJ#3#"05!!!!!J#3"!@\r@!*!D!F5L!*!I"!#3"A4L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,83%LLe%")S!!!"F!!!!SN!N!JFJe52!!!!VJ!"lkS!!`!!rrrrrJ#3#"06!!!\r!!J#3"!H@!*!D!F5L!*!I"!#3"A9dD@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y4!5+,83%LJ!!!!H!!!!&3#3#(R9cDS!!!#Z!!([U`!$!!$rrrr\rq!*!)%e3!!!!#!*!%$*B!N"S"a+)!N"m%!*!&GfKKG(0[G@jN,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LLfGV0f!!!%!J!!#+!!N!JHY&aB!!!\r!VJ!"lk`!!`!!rrrrrJ#3#"09!!!!!J#3"!H@!*!D!F5L!*!I"!#3"ATYEf3ZF(P\r%9N08!*!3Y`[&#lF,a3X!!!#`!!!!U3!!!!%!N"`6H3!!!!)!!J#3"!B!!!!)#!F\r!N"&!!*!*!Er!!*!ME'PL,A4V4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mAK#h#24h!!!'BJ!!(,)!N!MG,ce!!!!!X!!"lp%!!`!!rrrrrJ#3#"0k!!!\r!!J#3"!Q@!*!33!#3#3('`!#3(`J!N!9$B@jfBA-ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aH%,BL88d!!!*X!!!'+3#3#%J#je-!!!#`!!([dJ!\r$!!$rrrrq!*!)%hX!!!!#!*!%#CB!N""!!*!*!FE!!*!I#!#3"84TB@a[Cbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i3YCIEk!!!#0S!!#)e!*!\r)h-%M8J!!!,!!!Hr6!!-!!2rrrri!N!J6I!!!!!)!N!30PJ#3%%!!N!N"aX!!N"m\r)!*!&4QPXC84TB@a[Cbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&i3YL*463!!!+B!!!$K!*!)6UrF53!!!,!!!Hr8!!-!!2rrrri!N!J6I3!!!!)\r!N!3)PJ#3%%!!N!N"aX!!N"m)!*!&4QPi9'XZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aH%,BL88d!!!+`!!!&m`#3#'E3fFJ!!!#`!!([e3!$!!$\rrrrrq!*!)%hi!!!!#!*!%$jB!N""!!*!*!FE!!*!I#!#3"90MFQpXE'9N9'9iG#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i4X[aH%3!!"+`!!!j\r%!*!)F2!HKJ!!!,!!!Hr@!!-!!2rrrri!N!J6I`!!!!)!N!32PJ#3%%!!N!N"aX!\r!N"m)!*!&8fPYF'aP4'PKE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mAK'ePp[T!!!$'J!!"VX!N!M5MpVS!!!!X!!"lpF!!`!!rrrrrJ#3#"1\r!!!!!!J#3""'@!*!33!#3#3('`!#3(`J!N!9dDd0[E'pb3fK[Eh0PFLj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i5YL*46J!!!Vi!!!Ac!*!)N3X\r0+3!!!,!!!HrB!!-!!2rrrri!N!J6J3!!!!)!N!34PJ#3%%!!N!N"aX!!N"m)!*!\r&G'Y$EfeYEfj%D@&XEfFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aH%E@jTAS!!!0H!!!&9J#3#%-jdf-!!!#`!!([f3!$!!$rrrrq!*!)%i)!!!!\r#!*!%$TB!N""!!*!*!FE!!*!I#!#3"94VBfpZFh4KER4c,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mAK'f)P&0!!!0JJ!!,1!!N!JK8d6,!!!!X!!\r"lpS!!`!!rrrrrJ#3#"1$!!!!!J#3"!L@!*!33!#3#3('`!#3(`J!N!98Df4ZC#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i5X[aH%J!!!p)!!!R\rl!*!)9D-(XJ!!!,!!!HrE!!-!!2rrrri!N!J6K!!!!!)!N!32PJ#3%%!!N!N"aX!\r!N"m)!*!&G'Y'D@aP4'PKE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mAK+fVfUk!!!'S!!!%mN!N!MqU-@M!!!!X!!"lp`!!`!!rrrrrJ#3#"1\r&!!!!!J#3"!Q@!*!33!#3#3('`!#3(`J!N!9dDdC[ER3ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)X[aH%ED[DVS!!'dF!!)(K!#3#%RA(4%!!!#`!!(\r[h3!$!!$rrrrq!*!)%iB!!!!#!*!%#TB!N""!!*!*!FE!!*!I#!#3"94VD@jdCA)\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH%V,mAK)!!!3B!!!\r-&J#3#(ei'B-!!!#`!!([hJ!$!!$rrrrq!*!)%iF!!!!#!*!%$jB!N""!!*!*!FE\r!!*!I#!#3"A4V6@9cFf&RC8*[H#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&i5YUpUZJ!!"ii!!"V!!*!)Ke[NG`!!!,!!!HrI!!-!!2rrrri!N!J\r6L!!!!!)!N!34PJ#3%%!!N!N"aX!!N"m)!*!&G'Y6D@e`E'9%D@&XEfFZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Xh'lM,CfXhF!!!QU!!!V!3#3#1%\r4"b3!!!#`!!([i!!$!!$rrrrq!*!)%iN!!!!#!*!%#CB!N""!!*!*!FE!!*!I#!#\r3"A4eFR4XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lfhl`5YYq\rm%J!!)-B!!,-8!*!)9R5jH3!)2)8!#$b-!!-!!2rrrri!N!JFJJ!!!!)!N!3'PJ#\r3%%!!N!N"aX!!N"m)!*!&9'Pi,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mA@ffPEq[!!!$HJ!!#@B!N!M(4-TG!!!!U3!"lSJ!!J!!rrrrrJ#3#"1\r+!!!!!J#3"!b@!*!D!EqL!*!I"!#3"@aTEQ9MB@0SC5j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&eYY`MdE`!!'T)!!'hQ!!!!FJ!!!CUM$6*$!!!\r!U3!"lSN!!J!!rrrrrJ#3#"1,!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"@a[Bf&XC5j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eYYT@rV`!!#%B!!"H\r@!*!)c*P2ZJ!!!+N!!Hk+!!)!!2rrrri!N!J6M!!!!!)!N!3+PJ#3'J'rSJ#3(`3\r!N!9YB@0`BA4S,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@f\rfVfUU!!!%-!!!$"X!N!J(fBHm!!!!U3!"lSX!!J!!rrrrrJ#3#"10!!!!!J#3"!k\r@!*!D!EqL!*!I"!#3"@eKBh9bE$*`BA4S,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mA@kh#24[!!!*rJ!!)cN!N!KLP)qU!!!!U3!"lS`!!J!!rrr\rrrJ#3#"11!!!!!J#3"!U@!*!D!EqL!*!I"!#3"@eKD@aLEhJZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGEVD[DUS!!!PF!!!G03#3#2X(i`S!!!#\rT!!(ZM3!#!!$rrrrq!*!)%im!!!!#!*!%#TB!N"S"[k)!N"m%!*!&E@&TE'0KF#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eZYUpUUJ!!(p`!!)(\rU!*!)2rAP)`!!!+N!!Hk1!!)!!2rrrri!N!J6N!!!!!!#!*!%#*B!N"S"[k)!N"m\r%!*!&E@KXD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGEVD\rmS(N!!!G`!!!CAJ#3#+iQh%`!!!#T!!(ZM`!#!!$rrrrq!*!)%j%!!!!#!*!%$*B\r!N"S"[k)!N"m%!*!&E@PYCA4[Efac,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,,mA@qfVfUV!!!*!!!!(,F!N!J(+M0f!!!!U3!"lT!!!!)!!2rrrri\r!N!J6NJ!!!!)!N!3-PJ#3'J'rSJ#3(`3!N!9YD@ePG(P`CA-ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGB,D[DU3!!!A+!!!1a3#3#+DGP&8!!!#\rT!!(ZN3!#!!$rrrrq!*!)%j-!!!!#!*!%$CB!N"S"[k)!N"m%!*!&6@PYC9GbDA4\rPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&e[Y`MdE`!!$BB\r!!$Sj!*!)J%EQd3!!!+N!!Hk5!!)!!2rrrri!N!J6P!!!!!)!N!3*PJ#3'J'rSJ#\r3(`3!N!9YD@eTCRNZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rGElEGHd)!!!AB!!!5SJ#3#)j1I)B!!!#T!!(ZN`!#!!$rrrrq!*!)%j8!!!!#!*!\r%$*B!N"S"[k)!N"m%!*!&EA9XG'PQD@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mA@qfZU2N!!!#M!!!"X%!N!M&R0r!!!!!U3!"lT3!!J!!rrr\rrrJ#3#"1@!!!!!J#3"!L@!*!D!EqL!*!I"!#3"@eeG'9i,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mA@qh#24`!!!%i!!!%$3!N!Ki83m,!!!!U3!\r"lT8!!J!!rrrrrJ#3#"1A!!!!!J#3"!L@!*!D!EqL!*!I"!#3"@jPG(*M,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@qfVfUX!!!4hJ!!4Ti!N!J\rBb2V(!!!!U3!"lTB!!J!!rrrrrJ#3#"1B!!!!!J#3"!U@!*!D!EqL!*!I"!#3"@j\rZG("XD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGF,DQ&H)\r!!""1!!!bI3#3#-9eN!"J!!!!U3!"lTF!!J!!rrrrrJ#3#"1C!!!!!J#3"!Q@!*!\rD!EqL!*!I"!#3"@jdF'&dD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbr&e`YVUMj3!!!U!!!!Ib!*!)fZB3q`!!!+N!!HkB!!)!!2rrrri!N!J6QJ!\r!!!)!N!30PJ#3'J'rSJ#3(`3!N!9ZG(9bE$*`BA4S,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,EGISZfhAk,!!!3i!!!3rN!N!JR#p-*!!!!U3!"lTN\r!!J!!rrrrrJ#3#"1E!!!!!J#3"!@@!*!D!EqL!*!I"!#3"@pc,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&A4%*1690A4!#3#,CFCNDfA'C'!!!,"!!!(6X!N!K(9dGL!!!\r!U3!"lTS!!J!!rrrrrJ#3#"1F!!!!!J#3"!H@!*!D!EqL!*!I"!#3"A"NBLjNEf0\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGFED[DU`!!#$#!!"ei`#\r3#!bi#$8!!!#T!!(ZQ`!#!!$rrrrq!*!)%jd!!!!#!*!%"TB!N"S"[k)!N"m%!*!\r&F'4L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAA+h#24`!!!\rBIJ!!Cm)!N!K[3mXj!!!!U3!"lT`!!J!!rrrrrJ#3#"1H!!!!!J#3"!Q@!*!D!Eq\rL!*!I"!#3"A"TBfYXC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&ebYUpUV3!!#l!!!#EB!*!)b!Blm3!!!+N!!HkG!!)!!2rrrri!N!J6R`!!!!)\r!N!3)PJ#3'J'rSJ#3(`3!N!9`DA"PFbj`H84@3e3!N"#fX%e#!*!(YJ!!!+N!!!!\r"!*!F%lS!!!!#!!)!N!3-!!!!#!3(!*!E!EqL!*!MF'aKG#eRC@jPFQPM4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAKLf#6d[!!!!I!!!!4`!N!L)dL*\rX!!!!YJ!"lr`!!`!!rrrrrJ#3#"1l!!!!!J#3"!@@!*!D!FbL!*!I"!#3"A*PCf9\rZ4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAA+fVfUY!!!(#!!!'SN\r!N!K`C`,I!!!!U3!"lTi!!J!!rrrrrJ#3#"3H!!!!!J#3"!Q@!*!D!EqL!*!I"!#\r3"A"[F'9Z-Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ecYUp\rUV3!!#qi!!#-*!*!)DjN2pJ!!!+N!!HkI!!)!!2rrrri!N!J8(`!!!!)!N!3*PJ#\r3'J'rSJ#3(`3!N!9`Eh"XD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aGFlF)p(!!!!L3!!!!(GF!N!Lp,423!!!!U3!"lU!!!J!!rrrrrJ#3#"3\rJ!!!!!J#3"!b@!*!D!EqL!*!I"!#3"A"[FfPiCQPXC5j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&ecY`MdF!!!$VS!!#ZQ!*!)Z&3"hJ!!!+N!!Hk\rK!!)!!2rrrri!N!J8)3!!!!)!N!3-PJ#3'J'rSJ#3(`3!N!9`Eh0TH("KG'JZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGFlD[DUi!!!Mb!!!K9`#\r3#*4KUpF!!!#T!!(ZSJ!#!!$rrrrq!*!)&#)!!!!#!*!%#CB!N"S"[k)!N"m%!*!\r&F("bD@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&A4%*1690A4!#3#,CFCPDfA'C\r@!!!R[J!!E[J!N!Lq@+eC!!!!U3!"lU-!!J!!rrrrrJ#3#"3M!!!!!J#3"!Z@!*!\rD!EqL!*!I"!#3"A"bEfCTE'8ZC'pM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mAA@fhAY$!!!C)J!!81-!N!LZ#"M!!!!!U3!"lU3!!J!!rrrrrJ#3#"3\rN!!!!!J#3"!U@!*!D!EqL!*!I"!#3"A"bEfCTE'8ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aGH,F)p(!!!"Jb!!"BRJ#3#06H*!J!!!#T!!(ZT3!\r#!!$rrrrq!*!)&#8!!!!#!*!%#CB!N"S"[k)!N"m%!*!&F(0dBA4c,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAALfVfU[!!!&e!!!%,8!N!J4QrD\rH!!!!U3!"lUB!!J!!rrrrrJ#3#"3Q!!!!!J#3"!D@!*!D!EqL!*!I"!#3"A"dH5j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eiYUpUV`!!"5`!!!Z\rb!*!)@G#21`!!!+N!!HkR!!)!!2rrrri!N!J8*`!!!!)!N!30PJ#3'J'rSJ#3(`3\r!N!9`H9pMEfe`D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rmAALfVfU[!!!0cJ!!,4i!N!L-PYGU!!!!U3!"lUJ!!J!!rrrrrJ#3#"3S!!!!!J#\r3"!Q@!*!D!EqL!*!I"!#3"A"jBfaLFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&eJYVUMi`!!!rB!!!mG!*!)leHf9`!!!+N!!HkT!!)!!2rrrri\r!N!J8+3!!!!)!N!3)PJ#3'J'rSJ#3(`3!N!94G@9eC5j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&eiYZ'B,J!!"Ci!!"#V!*!)2'H"j!!!!+N!!Hk\rU!!)!!2rrrri!N!J8+J!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9aG@p`FQNZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGHEDkSq8!!"[B!!"92`#3#$M\r-c"N!!!#T!!(ZU`!#!!$rrrrq!*!)&#X!!!!#!*!%#CB!N"S"[k)!N"m%!*!&FQ&\rZC'pY,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAQfXK8#!!!\r"hJ!!!c%!N!Ml0IP"!!!!U3!"lU`!!J!!rrrrrJ#3#"3X!!!!!J#3"!@@!*!D!Eq\rL!*!I"!#3"A*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAQ\rfXK8$!!!)3J!!&'%!N!JrX#[Y!!!!U3!"lUd!!J!!rrrrrJ#3#"3Y!!!!!J#3"!b\r@!*!D!EqL!*!I"!#3"A*PBfpZGQ9bG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&ejYVUMj3!!!f)!!!GP!*!)0k1$iJ!!!+N!!HkZ!!)!!2rrrri\r!N!J8,J!!!!)!N!32PJ#3'J'rSJ#3(`3!N!9bC@GPH&pcH@jdBAJZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGHVDb&3-!!!K%!!!B03#3#%ViM,%\r!!!#T!!(ZV`!#!!$rrrrq!*!)&#m!!!!#!*!%#CB!N"S"[k)!N"m%!*!&FQ9RFh9\rL,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAUfXK8$!!!$@!!\r!$'X!N!LUeT[k!!!!U3!"lV!!!J!!rrrrrJ#3#"3`!!!!!J#3"!H@!*!D!EqL!*!\rI"!#3"A*PF()ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGHVD\rb&3-!!!kB!!!br`#3#!Zr()B!!!#T!!(ZX3!#!!$rrrrq!*!)&$%!!!!#!*!%#*B\r!N"S"[k)!N"m%!*!&FQ9iC@-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aGHVDb&3-!!#%q!!"k+3#3#16ima)!!!#T!!(ZXJ!#!!$rrrrq!*!)&$)\r!!!!#!*!%#CB!N"S"[k)!N"m%!*!&FQCM1$)b,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mAAUfXK8$!!!'D!!!%#m!N!JNjPX[!!!!U3!"lV-!!J!\r!rrrrrJ#3#"3c!!!!!J#3"!k@!*!D!EqL!*!I"!#3"A*XBfpYF'aPG'9b,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83$f+fZU2P!!!*lJ!!*1)!N!M\r(QJ4(!!!!U3!"lV3!!J!!rrrrrJ#3#"3d!!!!!J#3"!k@!*!D!EqL!*!I"!#3"A*\r[BQpdF'&bFf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAU\rfXK8$!!!'2!!!$p`!N!K'B'3M!!!!U3!"lV8!!J!!rrrrrJ#3#"3e!!!!!J#3"!L\r@!*!D!EqL!*!I"!#3"A0MD'9N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mAAZh#24a!!!3[!!!4!S!N!L5@H8S!!!!U3!"lVB!!J!!rrrrrJ#3#"3\rf!!!!!J#3"!U@!*!D!EqL!*!I"!#3"A0RE@aXD@)ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aGHlDb&3-!!!9`!!!4KJ#3#$0@LIB!!!#T!!(ZY`!\r#!!$rrrrq!*!)&$F!!!!#!*!%#CB!N"S"[k)!N"m%!*!&FfKPE(CP,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAZh#2m8!!!(6!!!(NN!N!LC5-C\r'!!!!U3!"lVJ!!J!!rrrrrJ#3#"3i!!!!!J#3"!L@!*!D!EqL!*!I"!#3"A0SE'9\ri,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAZfXK8%!!!&1J!\r!$f!!N!M2"mp'!!!!U3!"lVN!!J!!rrrrrJ#3#"3j!!!!!J#3"!Q@!*!D!EqL!*!\rI"!#3"A0SGA4TE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&e\rJYUpUT!!!#,J!!"LZ!*!)0,"")`!!!+N!!Hkk!!)!!2rrrri!N!J81J!!!!)!N!3\r6PJ#3'J'rSJ#3(`3!N!96D@e`E'9)9&438f9bGQ9b,R"j4&C$9!#3%,F,a3fh#m8\r3!!!!`!!!!+N!!!!"!*!F&$X!!!!#!!)!N!30!!!!#!3(!*!4S!#3#3'rX`#3)h0\rTG'8YF'&MDf&RCA0'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)Y4!5-V8\r3%M)!!!"L!!!!G`#3#!%M-S3!!!$!!!(`B!!$!!$rrrrq!*!)&$`!!!!#!*!%"TB\r!N"S"eU)!N"m%!*!&8N9"4%e&4&C$9!#3%,F,a3fh#m8-!!!""J!(@iX!!!!"!*!\rF(&d!!!!$!!)!N!3$!!!!#!3(!*!4S!#3#3(@N3#3)dC'9%C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!LebfBVY`Zh"3!!!1i!!!+@!*!)4F6JR`!(@ii!"eZ\r2!!3!!2rrrri!N!JFA!!!!!)!N!3,PJ#3'J+SN3#3(`3!N!9IAfPZDA4IAbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LebfBVY`Zh"3!!#RB!!#Qm!*!\r)ZX`R6J!(@ii!"eZ3!!!%!!$rrrrq!*!)(&X!!!!#!*!%"TB!N"S#U*%!N"m%!*!\r&4NC8,R"j4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,F,Z[kh#lV\rq!!"00!!!Lri!!!"Q!!!"P[p$Sa%!"eZ1!!GEN3!%!!$rrrrq!*!)(&S!!!!#!*!\r%%TB!N"!J!*!*!UL"!*!I"`#3"!&QCR4`B@0V,Q0KFQ*[ELjcE'*'9N08!*!(##!\r!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lh#lq1Y`ZrMJ!!653!!)[1!!!!CJ!!!C,\r42@#G!!GEMJ!(@j)!"!!!rrrrrJ#3#"aC!!!!!J#3"!q@!*!3J!#3#3+SN!!!N"m\r'!*!&CQCdF'&MDbj`F'-ZFfaL4&C$9!#3%,F,a3kh#m80!!!""J!(@iX!!!!"!*!\rF(&J!!!!$!!)!N!3#!!!!#!3(!*!E!GD4!*!M68&'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YFYQ,EF,Y`B!!$'d!!$Y93#3#-[Hdj-!"eZ6!!GEP!!%!!$\rrrrrq!*!)(&F!!!!#!*!%#jB!N"S#Tj%!N"m%!*!&AepTEQPdAemZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YMQKF,F,Y`F!!!G8!!!HI`#3#1(X65%\r!"eZ6!!GEP3!%!!$rrrrq!*!)(&B!!!!#!*!%$CB!N"S#Tj%!N"m%!*!&B@0dDAC\rPBA4dFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf1D&[Y`Zh"J!\r!!)B!!!$Q!*!)T`j0@`!(@j-!"eZ@!!3!!2rrrri!N!JF93!!!!)!N!30PJ#3'J+\rRN3#3(`3!N!9039pfCA*cD@pZ,R"j4&C$9!#3%,F,a3kh#m82!!!""J!(@iX!!!!\r"!*!F(&3!!!!$!!)!N!3(!!!!#!3(!*!4S!#3#3(@N3#3)djeE@9bD@0'9N08!*!\r(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)Y`ZjM,F,ZRB!!&L@!!$`(J!!!'B\r!!!'5baD-h3!(@jF!"eZB!!3!!2rrrri!N!JF8`!!!!)!N!34PJ#3%#!!N!N#TS%\r!N"m(!*!%!9pZG@e`H5jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0\rSE'*3HA4S!*!)Y`ZqiVF,[Z)!!&L3!!!!m"i!!!"N!!!"N[Q+CiJ!"eZA!!GEQ3!\r%!!$rrrrq!*!)(&)!!!!#!*!%$TB!N"#!!*!*!UD3!!#3(`B!N!9IER9YF(NZF("\rM,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!Lh#lRFY`ZkJ!!\r!)LB!!&$$!!!!D!!!!CEP%!J(!!GEP`!(@jS!"!!!rrrrrJ#3#"a4!!!!!J#3""1\r@!*!D!UD"!*!I"`#3"!&KFR*KH@CZFbjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"!*!\r)"`#3%!8!!A0SE'*3HA4S!*!)Y`Zr*VF,[bB!!#)Q!!"3``!!!'J!!!'5%AQP4J!\r(@jF!"eZE!!3!!2rrrri!N!JF8!!!!!)!N!33PJ#3'J+QN!!!N"m'!*!&BA*bBAP\rQER-ZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LebfBNYFY\rQ*!!!#!S!!"lJ!*!)e(kZPJ!(@jF!"eZF!!3!!2rrrri!N!JF6`!!!!)!N!32PJ#\r3'J+QN3#3(`3!N!9"FR*KH9"bD@jdCA)ZF(P'9N08!*!(##!!!!(!!*!("`#3%!8\r!!A0SE'*3HA4S!*!)Y`Zk5,F,ZSJ!!eFB!!Lr'J!!!'S!!!'DE32&+`!(@jF!"eZ\rG!!3!!2rrrri!N!JF6J!!!!)!N!3@PJ#3%#!!N!N#TS%!N"m(!*!%!@aKF'&MDep\rXDA4P,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!L\rh#lp6Y`Zr8`!$9a)!#,m+!!!!D!!!!CB43Leh!!GEP`!(@ji!"!!!rrrrrJ#3#"a\r0!!!!!J#3""1@!*!3J!#3#3+QN!!!N"m'!*!&E'&`B@0VAfaTG'8ZF("M,R0XBNC\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#lF%Y`Zh"!!!#bB!!#`A!*!\r)'Gfef!!(@jF!"eZI!!3!!2rrrri!N!JF6!!!!!)!N!33PJ#3'J+QN3#3(`3!N!9\r-D@jPBA*"E'GPBR*K,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F\r,Y`5h#lF%!!!#6J!!"LN!N!LVIVb,!!GEP`!(@k!!"!!!rrrrrJ#3#"a,!!!!!J#\r3"!Q@!*!D!UD4!*!I"!#3"8eKG(*TH#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lh#lF%Y`Zh"!!!$5)!!#90!*!)V'JGNJ!(@jF!"eZK!!3!!2rrrri\r!N!JF5J!!!!)!N!3(PJ#3'J+QN3#3(`3!N!906'&L,R"j4PC$9!#3"`JJ!!!"`!#\r3"`F!N"!&!!&cD'aL8(PdD!#3#,F,ZDZh#lTj!!!LDJ!!81N!!!"U!!!"PTTY0JB\r!"eZA!!GESJ!%!!$rrrrq!*!)(%N!!!!#!*!%&CB!N"!J!*!*!UD"!*!I"`#3"!&\rYG@adD@&bFQ&j,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"\rjG'J!N!Lh#lljY`Zqq3!!)QJ!!&$T!!!!CJ!!!CBRdVjm!!GEP`!(@k-!"!!!rrr\rrrJ#3#"a)!!!!!J#3""+@!*!3J!#3#3+QN!!!N"m'!*!&EA9XG'PKFR*KH5j`F'-\rZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A,CLUh#lF%!!!CQ!!\r!@N%!N!J,UjDX!!GEP`!(@k3!"!!!rrrrrJ#3#"a(!!!!!J#3"!U@!*!D!UD4!*!\rI"!#3"8jeE@9bD@-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YMQ\rKEEF,Y`3!!!!F!!!!%`#3#-fRfLi!"eZA!!GET3!%!!$rrrrq!*!)(%B!!!!#!*!\r%%TB!N"S#TT%!N"m%!*!&ER9YCA*TBepfCA*cD@pZ,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,A,CLUebfBU!!!#a!!!#D3!N!LBHU8A!!GEP`!(@kB\r!"!!!rrrrrJ#3#"a&!!!!!J#3"!b@!*!D!UD4!*!I"!#3"9"bC@0TFfP[ELj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#lF%Y`Zh"!!!$JS!!$A8!*!\r)*ILBQ3!(@jF!"eZR!!3!!2rrrri!N!JF4!!!!!)!N!31PJ#3'J+QN3#3(`3!N!9\r5B@jNEfe"FR*KH5j`H8C@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!L\rh#lRlY`ZkK!!!-"!!!&Uq!!!!CJ!!!C,C21k@!!GEP`!(@kJ!"!!!rrrrrJ#3#"a\r$!!!!!J#3""'@!*!3)!#3#3+QJ3#3(`F!N!3"FQ&ZE'PL,Q0KFQ*[ELjcE'*'9N0\r8!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lh#lmpY`Zr23!!,r`!!&U1!!!\r!C!!!!C,ZiShK!!GEP`!(@kN!"!!!rrrrrJ#3#"a#!!!!!J#3"!k@!*!3J!#3#3+\rQN!!!N"m'!*!&FQ&ZE'PL,R"`BbjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0\rSE'*3HA4S!*!)Y`Zja,F,ZRd!!#Rk!!#Fk3!!!'J!!!'5"LSae3!(@jF!"eZU!!3\r!!2rrrri!N!JF33!!!!)!N!33PJ#3%#!!N!N#TS%!N"m(!*!%!A9YBA4S,Q0KFQ*\r[ELjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lh#lm3Y`Zr%!!\r!+IJ!!*cC!!!!BJ!!!BliGjLM!!GEP`!(@kX!"!!!rrrrrJ#3#"a!!!!!!J#3"!f\r@!*!3J!#3#3+QN!!!N"m'!*!&G@eKG'JZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!LebfBVYV5jl`!!!p3!!!fl!*!)Ur9lM3!(@jF!"eZX!!3\r!!2rrrri!N!JF2`!!!!)!N!3-PJ#3'J+QN3#3(`3!N!99Ff9b3A*bBANZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)Y`ZkP,F,[eB!!!!3!!!!#!#3#,5\r-b1)!"eZ,!!GEM!!$!!$rrrrq!*!)($i!!!!#!*!%#jB!N"S"eT%!N"m%!*!&6R9\rYCA*TBbj`G'K%9N08!*!3Y`[&%,F,a3m!!!%'!!GEL`!!!!%!N"`F23!!!!-!!J#\r3"!-!!!!)"!F!N"X"eT%!N#056NG'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)YFYQ,VA,CLi!!!'1!!!$UJ#3##Vc`U)!"eZY!!GEVJ!%!!$rrrrq!*!)($`\r!!!!#!*!%#jB!N"S#TC%!N"m%!*!&AepTEQPdAemZF(P'9N08!*!(##!!!!(!!*!\r("`#3%!8!!A0SE'*3HA4S!*!)Y`Zk`EF,ZX%!!"'m!!!PkJ!!!'3!!!'5$YL!p!!\r(@kd!"eZ[!!3!!2rrrri!N!JF1`!!!!)!N!31PJ#3'J+PJ3#3(`F!N!3"8Nj(,Q0\rKFQ*[ELjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lh#lp[Y`Z\rrF!!!%FJ!!#B+!!!!C!!!!Bi!6dS9!!GEV3!(@l!!"!!!rrrrrJ#3#"`k!!!!!J#\r3"!Z@!*!D!U@3!!#3(`B!N!956NFZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!LebfBZYFYQ,J!!!H`!!!6)!*!)QH4@'`!(@kd!"eZa!!3!!2r\rrrri!N!JF13!!!!)!N!30PJ#3'J+PN3#3(`3!N!96G'&dDA0dD@0c,R"j4&C$9!#\r3%,F,a3fh#m80!!!""`!)SCd!!!!"!*!F(,X!!!!$!!)!N!3&!!!!#!3(!*!E!GD\r4!*!MDfPZC(0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y`Zh#,F,Y`J\r!!!"%!!!!2!#3#"XNkAF!#+'P!!LKTJ!%!!$rrrrq!*!)(,S!!!!#!*!%#jB!N"S\r#VT%!N"m%!*!&AepTEQPdAemZF(P'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"\rjG'J!N!Lh#lXVY`Zl+`!!"M!!!"*D!!!!CJ!!!C+DS-@C!!LKT3!)SDF!"!!!rrr\rrrJ#3#"bj!!!!!J#3""'@!*!D!Uk4!*!I"!#3"9pVD@jNFbjMBA*LEfiZFfaL4PC\r$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)Y`ZrUEF,[kN!!!BX!!!5@J!\r!!'3!!!'53`IB'`!)SD8!#+'S!!3!!2rrrri!N!JFZ!!!!!)!N!31PJ#3'J+ZN3#\r3(`3!N!9IDfPZC(-ZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lh#lF)Y`Zh#!!!"Ji!!"Vp!*!)H6%md3!)SD8!#+'T!!3!!2rrrri!N!JFY`!\r!!!)!N!3)PJ#3'J+ZN3#3(`3!N!9VD@jNFbj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lh#lF)Y`Zh#!!!!"J!!!!3!*!)'QaFDJ!)SD8!#+'U!!3!!2r\rrrri!N!JFYJ!!!!)!N!33PJ#3'J+ZN3#3(`3!N!9VD@jNFepfCA*cD@pZ,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAZfiCJ[!!!-[J!!)T`!!!#\r@!!!"QL4QfX%!!!#T!!(ZZ`!#!!$rrrrq!*!)&$d!!!!#!*!%"jB!N"S"[k)!N"m\r%!*!&FfPdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&emYV)\r9"!!!&XS!!%L2!*!)ZdLa5`!!!+N!!Hkm!!)!!2rrrri!N!J82J!!!!)!N!3+PJ#\r3'J'rSJ#3(`3!N!9cEA4`E'PL,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mAAbfXK8%!!!)'J!!&e)!N!K$clJB!!!!U3!"lVd!!J!!rrrrrJ#3#"3\rr!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"A0ZC'KNFLj`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr&eJY`MdE3!!%d!!!%2A!*!)&d6JX`!!!+N!!Hkq!!)\r!!2rrrri!N!J83!!!!!)!N!32PJ#3'J'rSJ#3(`3!N!96Ef0VCA46CA*fCA)ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!2BVEKQ#m!!!S'!!!IcJ#\r3#0iQXN`!!!#T!!(Z[`!#!!$rrrrq!*!)&%%!!!!#!*!%"TB!N"S"[k)!N"m%!*!\r&Fh*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83$f+fiCJ`!!!\r+m!!!,J`!N!L,Hkl!!!!!U3!"lX!!!J!!rrrrrJ#3#"4#!!!!!J#3"!k@!*!D!Eq\rL!*!I"!#3"A0bC9pMEfe`D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,83$f+fiCJ`!!!)aJ!!'dX!N!M4TH(A!!!!U3!"lX%!!J!!rrrrrJ#3#"4\r$!!!!!J#3""#@!*!D!EqL!*!I"!#3"A0bC9pMEfjcG'&ZG(-ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!2BVEKQ$%!!"9f!!"I1!#3#+#X8'3!!!#\rT!!(Z`J!#!!$rrrrq!*!)&%3!!!!#!*!%$*B!N"S"[k)!N"m%!*!&Fh*PAh"KFR0\rP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAbfZU2Q!!!#`J!\r!"S-!N!KJRhR$!!!!U3!"lX-!!J!!rrrrrJ#3#"4&!!!!!J#3"!H@!*!D!EqL!*!\rI"!#3"A0dBA3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGI,D\rb&33!!!2F!!!*$!#3#,#LiD%!!!#T!!(Za!!#!!$rrrrq!*!)&%B!!!!#!*!%$*B\r!N"S"[k)!N"m%!*!&Fh4KG'0KBfKP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,,mAAbfZU2Q!!!"@!!!!`X!N!LNC31Z!!!!U3!"lX8!!J!!rrrrrJ#\r3#"4(!!!!!J#3"!U@!*!D!EqL!*!I"!#3"A0dBA4fCR-ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)X[aGI,DkSqB!!!dk!!!UaJ#3#!9#c@F!!!#T!!(\rZaJ!#!!$rrrrq!*!)&%J!!!!#!*!%#CB!N"S"[k)!N"m%!*!&Fh4bD@jR,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@#fVfUP!!!'`!!!&rN!N!M\rSC%fr!!!!U3!"lXF!!J!!rrrrrJ#3#"4*!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"90\rdFQPZCdP2,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,1VSkZfVfU\ra!!!1DJ!!-%F!N!LDT%j)!!!!U3!"lXJ!!J!!rrrrrJ#3#"4+!!!!!J#3"!b@!*!\rD!EqL!*!I"!#3"A0dFQPZCfpXC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&epYSjkY3!!$QJ!!%#$!*!)BI3q%!!!!+N!!Hl*!!)!!2rrrri!N!J\r85`!!!!)!N!3)PJ#3'J'rSJ#3(`3!N!9cG@jKG5j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr&epYSjkY3!!!I!!!!63!*!)+QDYE!!!!+N!!Hl+!!)\r!!2rrrri!N!J86!!!!!)!N!3,PJ#3'J'rSJ#3(`3!N!9cG@jKG@4TEbj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&epYFa693!!!bi!!!DB!*!)9dc\r9k3!!!+N!!Hl,!!)!!2rrrri!N!J863!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9cH@e\rLEf`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y1XiTEF)p(-!!!h\rB!!!`jJ#3#,1465`!!!#T!!(Zc!!#!!$rrrrq!*!)&%i!!!!#!*!%#jB!N"S"[k)\r!N"m%!*!&G'&LEQ&ZERNZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aGIEE&dI`!!"%@!!!mA!!!!(!!!!'DP060&3!!!+N!!Hl0!!)!!2rrrri!N!J\r86`!!!!)!N!3-PJ#3'J'rSJ#3(`3!N!9dC@aZCA4XD@)ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)X[aGIVE&dI`!!!NN!!!BbJ#3#%(Kh88!!!#T!!(\rZcJ!#!!$rrrrq!*!)&&!!!!!#!*!%#jB!N"S"[k)!N"m%!*!&G'9YF'CTE'8ZF(P\r%9N08!*!3Y`[&%,F,a4d!!!$"!!!!U3!!!!%!N"`883!!!!)!!J#3"!3!!!!)"!F\r!N"X"[k)!N#0dCA0d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mALZ\rbr&iV!!!!1!!!!#m!N!L42p!T!!!!`3!"m'-!!`!!rrrrrJ#3#"46!!!!!J#3"!Z\r@!*!D!GHL!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&96%&\rA9&C24!#3#,-PBM#c0mI2!!"#D!!!@m8!N!MCdPiq!!!!`3!"m'3!!`!!rrrrrJ#\r3#"48!!!!!J#3"!b@!*!D!GHL!*!I"!#3"@&eC'P[G'9cG#jKG8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&iVYFY23J!!!)i!!!$*!*!)k,jb63!!!-%\r!!I"P!!-!!2rrrri!N!J893!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9KGA4[G'9cG#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&iaX[aH-3!!r6`!!AA\rp!*!)KD45E!!!!-%!!I"Q!!-!!2rrrri!N!J89J!!!!)!N!3,PJ#3'J(ASJ#3(`3\r!N!9RFQ9jFQGL,R9eC84@3e3!N"#h#m8GY`[&*J!!!-)!!!$"!!!!!3#3("4A!!!\r!!`!#!*!%"J!!!!J%"`#3'`(ASJ#3)fpeG("eG%C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!Lbr&j2X[aH6`!!!"!!!!!)!*!)H0$me!!!!-)!!I$!!!3!!2r\rrrri!N!J8@!!!!!)!N!3(PJ#3'J(BSJ#3(`3!N!9dCA0dAf&X4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K83eG*43#3#,,mANqbr&j2!!!!&!!!!!X!N!KZcVlI!!!!`J!\r"m-%!"!!!rrrrrJ#3#"4C!!!!!J#3"!U@!*!D!GLL!*!I"!#3"A4PFh4IBA*bBAP\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH6l,mANm!!!!@!!!!$3#\r3##4A[H8!!!$#!!(``J!%!!$rrrrq!*!)&&S!!!!#!*!%$*B!N"S"f+)!N"m%!*!\r&G'9cG&pKG@4TEfp`4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP#\rd3f1j!!!%$!!!"F3!N!L9m"jp!!!!`J!"m--!"!!!rrrrrJ#3#"4E!!!!!J#3"!f\r@!*!D!GLL!*!I"!#3"A4PFh4IBQPZBA0MD@P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&4$9dP&!*!)Y%0MZE4$BlN!!!!8!!!!$!#3#(dNQ+!!!!$#!!(`a!!%!!$rrrr\rq!*!)&&`!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pLD@jSCAK'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH8,,mAP!!!!!8!!!!#`#3#!qej2-!!!$\r#!!(`a3!%!!$rrrrq!*!)&&d!!!!#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pLFf4\rNBNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j3YSjka3!!!0i!!!&\rN!*!)694ZF3!!!-)!!I$'!!3!!2rrrri!N!J8AJ!!!!)!N!3-PJ#3'J(BSJ#3(`3\r!N!9dCA0dAf*eD@adD@j'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[a\rH8,,mAP!!!!!3!!!!#!#3#,10SV)!!!$#!!(`a`!%!!$rrrrq!*!)&&m!!!!#!*!\r%"jB!N"S"f+)!N"m%!*!&G'9cG&pMC%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0\rA588!N!Lbr&j3X[aH8!!!!"!!!!!)!*!)He3SZJ!!!-)!!I$)!!3!!2rrrri!N!J\r8B!!!!!)!N!3(PJ#3'J(BSJ#3(`3!N!9dCA0dAf0X4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K83eG*43#3#,,mAP'br&j4!!!!&!!!!!X!N!M+,U9p!!!!`J!"m-N!"!!\r!rrrrrJ#3#"4K!!!!!J#3"!U@!*!D!GLL!*!I"!#3"A4PFh4IBfeKG'K'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y1XiU,6V1+J!!!!@!!!!$J#3#*NGSUX\r!!!$#!!(`bJ!%!!$rrrrq!*!)&')!!!!#!*!%$CB!N"S"f+)!N"m%!*!&G'9cG&p\rMEfjdB@PZFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lc*@&9YT1P)J!\r!!&3!!!"j!*!)`,iqcJ!!!-)!!I$,!!3!!2rrrri!N!J8B`!!!!)!N!3-PJ#3'J(\rBSJ#3(`3!N!9dCA0dAf0`D@0VE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP\r&!*!)X[aH8E,mAP%!!!!8!!!!#`#3#&a0,pm!!!$#!!(`c!!%!!$rrrrq!*!)&'3\r!!!!#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pMFRP`G%C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!Lbr&j4X[aH83!!!")!!!!*!*!)GFMMRJ!!!-)!!I$0!!3\r!!2rrrri!N!J8C3!!!!)!N!3)PJ#3'J(BSJ#3(`3!N!9dCA0dAf4LE8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j4X[aH83!!!"!!!!!)!*!)IKXq2`!\r!!-)!!I$1!!3!!2rrrri!N!J8CJ!!!!)!N!3(PJ#3'J(BSJ#3(`3!N!9dCA0dAf4\rX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP'br&j4!!!!&!!!!!X\r!N!MLQ`iM!!!!`J!"m-m!"!!!rrrrrJ#3#"4R!!!!!J#3"!U@!*!D!GLL!*!I"!#\r3"A4PFh4ICA*bEQp'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH8VD\rJd4S!!!%5!!!#63#3#&K'D#B!!!$#!!(`d!!%!!$rrrrq!*!)&'J!!!!#!*!%$jB\r!N"S"f+)!N"m%!*!&G'9cG&pPH'0PF(4TEfjc4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K83eG*43#3#,83$f5h#24r!!!$[J!!(-F!N!J$HVP"!!!!`J!"m0%!"!!!rrr\rrrJ#3#"4T!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4PFh4ICAKdBf&XE%C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j5X[aH8J!!!"3!!!!,!*!)'GaIr3!\r!!-)!!I$5!!3!!2rrrri!N!J8DJ!!!!)!N!3+PJ#3'J(BSJ#3(`3!N!9dCA0dAfC\rMER4X4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,6V1+LdkcLS!!!!&!!\r!!!X!N!MHM*f2!!!!`J!"m0-!"!!!rrrrrJ#3#"4V!!!!!J#3"!U@!*!D!GLL!*!\rI"!#3"A4PFh4ICQpbDc&'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[a\rH8V,mAP)!!!!5!!!!#J#3#,FEl!B!!!$#!!(`e!!%!!$rrrrq!*!)&'`!!!!#!*!\r%#CB!N"S"f+)!N"m%!*!&G'9cG&pRC'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r83eG*43#3#,,mAP+br&j5!!!!%!!!!!J!N!KmAB"Q!!!!`J!"m08!"!!!rrrrrJ#\r3#"4Y!!!!!J#3"!H@!*!D!GLL!*!I"!#3"A4PFh4ICfa'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&4$9dP&!*!)X[aH8VEGHdN!!!)!!!!%h!#3#06KXj`!!!$#!!(`eJ!\r%!!$rrrrq!*!)&'i!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pRFQ&YE@&b4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP1br&j6!!!!%J!!!!N!N!L\r%0i-F!!!!`J!"m0F!"!!!rrrrrJ#3#"4[!!!!!J#3"!L@!*!D!GLL!*!I"!#3"A4\rPFh4ICh*`4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,-hap#c0mI3!!!\r!%J!!!!S!N!Mdj%pA!!!!`J!"m0J!"!!!rrrrrJ#3#"4`!!!!!J#3"!Q@!*!D!GL\rL!*!I"!#3"A4PFh4IChTTF%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L\rbr&j6X[aH8`!!!"B!!!!0!*!))m1l6`!!!-)!!I$C!!3!!2rrrri!N!J8F3!!!!)\r!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAfPYB@GPEh"'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&4$9dP&!*!)X[aH8l,mAP-!!!!@!!!!$3#3#,IIPKF!!!$#!!(`fJ!%!!$\rrrrrq!*!)&()!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pTE@GQD@aP4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP1eN8+M!!!!9!!!!'i!N!Kb[S&\r`!!!!`J!"m0X!"!!!rrrrrJ#3#"4c!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4\rIE'pZCdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j6YK5[k3!!!(J\r!!!#V!*!)a$%JF`!!!-)!!I$F!!3!!2rrrri!N!J8G!!!!!)!N!3*PJ#3'J(BSJ#\r3(`3!N!9dCA0dAfeKG'K'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[a\rH9,,mAP3!!!%X!!!#"`#3#-j3U5)!!!$#!!(`h3!%!!$rrrrq!*!)&(8!!!!#!*!\r%#*B!N"S"f+)!N"m%!*!&G'9cG&pYC$9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r$9dP&!*!)X[aH6l,mANm!!!2J!!!*Y`#3#$4iUKN!!!$#!!(`hJ!%!!$rrrrq!*!\r)&(B!!!!#!*!%$jB!N"S"f+)!N"m%!*!&G'9cG&p0D@eP9h*TG'9b4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K83eG*43#3#,83$f@fPErD!!!"$J!!!M3!N!JEl!99!!!\r!`J!"m0m!"!!!rrrrrJ#3#"4h!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4IE@e\rKF%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j8X[aH9!!!!%B!!!"\rM!*!)dpM)j!!!!-)!!I$J!!3!!2rrrri!N!J8H!!!!!)!N!3)PJ#3'J(BSJ#3(`3\r!N!9dCA0dAfjPGdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j8X[a\rH9!!!!"`!!!!8!*!)%[$iB!!!!-)!!I$K!!3!!2rrrri!N!J8H3!!!!)!N!3)PJ#\r3'J(BSJ#3(`3!N!9dCA0dAfjTFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588\r!N!Lbr&j8X[aH9!!!!$J!!!!`!*!)A(eS2!!!!-)!!I$L!!3!!2rrrri!N!J8HJ!\r!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAfjdF'&dD%C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!Lbr&j8X[aH9!!!!'i!!!#)!*!)&E-[a3!!!-)!!I$M!!3\r!!2rrrri!N!J8H`!!!!)!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAfp`BfpNCA0'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH9EAE0A%!!!##!!!!V3#3#$Z\rA8)3!!!$#!!(`j!!%!!$rrrrq!*!)&(`!!!!#!*!%$jB!N"S"f+)!N"m%!*!&G'9\rcG&p[F'9bBA4TEfjc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP@\rbr&j9!!!!Z!!!!U-!N!KAmdTr!!!!`J!"m18!"!!!rrrrrJ#3#"4p!!!!!J#3"!f\r@!*!D!GLL!*!I"!#3"A4PFh4IEh"PFQ&dEh*'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&4$9dP&!*!)Xb9K9VAYKY8!!!"8!!!!H!#3#)K'8DS!!!$#!!(`jJ!%!!$rrrr\rq!*!)&(i!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&p`D@0VE'9'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH9ED6T5)!!!%3!!!%AJ#3#$E#f!d!!!$\r#!!(`j`!%!!$rrrrq!*!)&(m!!!!#!*!%#*B!N"S"f+)!N"m%!*!&G'9cG&p`DfG\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)XaeD)EAE0A%!!!"+!!!!L3#\r3#1c,'K%!!!$#!!(`k!!%!!$rrrrq!*!)&)!!!!!#!*!%#jB!N"S"f+)!N"m%!*!\r&G'9cG&p`Eh"PEM*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH9E,\rmAP8!!!#k!!!"b!#3#+"iHNd!!!$#!!(`k3!%!!$rrrrq!*!)&)%!!!!#!*!%#*B\r!N"S"f+)!N"m%!*!&G'9cG&p`EhG'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP\r&!*!)X[aH9V,mAPB!!!"-!!!!H`#3#%dKd#m!!!$#!!(`kJ!%!!$rrrrq!*!)&))\r!!!!#!*!%#*B!N"S"f+)!N"m%!*!&G'9cG&p`Gf4'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&4$9dP&!*!)Y4!2CED9[pS!!!)k!!!+5J#3#28C@5d!!!$#!!(`k`!%!!$\rrrrrq!*!)&)-!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&p`H@9iF'&d4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPDeZD@!!!!!-J!!!#N!N!Kf9iI\rB!!!!`J!"m1`!"!!!rrrrrJ#3#"5%!!!!!J#3"!H@!*!D!GLL!*!I"!#3"A4PFh4\rIFQ9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH9V,mAPB!!!&U!!!\r'F`#3#2KQR!N!!!$#!!(`l3!%!!$rrrrq!*!)&)8!!!!#!*!%#TB!N"S"f+)!N"m\r%!*!&G'9cG&pbC@GPH%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j\r@X[aH9J!!!"3!!!!-!*!)Ze6L%J!!!-)!!I$Z!!3!!2rrrri!N!J8KJ!!!!)!N!3\r,PJ#3'J(BSJ#3(`3!N!9dCA0dAh*QBcJb-NC@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9%0A588!N!Lbr&j@X[aH9J!!!#J!!!!I!*!)A469`J!!!-)!!I$[!!3!!2rrrri\r!N!J8K`!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAh*RBQPYCdC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%0A588!N!Lbr&jAYT@rf`!!!'S!!!"f!*!)'VPF2`!!!-)\r!!I$`!!3!!2rrrri!N!J8L!!!!!)!N!3+PJ#3'J(BSJ#3(`3!N!9dCA0dAh*[G'p\rb4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPHeN8+M!!!!&!!!!!`\r!N!MVhAHL!!!!`J!"m2%!"!!!rrrrrJ#3#"5*!!!!!J#3"!Z@!*!D!GLL!*!I"!#\r3"A4PFh4IFf9XC@0d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,-PB9H\rc*@&A!!!!+!!!!#F!N!K*#5Ml!!!!`J!"m2)!"!!!rrrrrJ#3#"5+!!!!!J#3"!L\r@!*!D!GLL!*!I"!#3"A4PFh4IFfKK4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG\r*43#3#,,mAPHbr&jA!!!!,J!!!#8!N!L*h'a#!!!!`J!"m2-!"!!!rrrrrJ#3#"5\r,!!!!!J#3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IFfPREQ&X4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,,mAPHbr&jA!!!!*!!!!"`!N!K)l6-(!!!!`J!"m23\r!"!!!rrrrrJ#3#"5-!!!!!J#3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IFfpMDf9d4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPHbr&jA!!!!&J!!!!i!N!K\r-XS[a!!!!`J!"m28!"!!!rrrrrJ#3#"50!!!!!J#3"!f@!*!D!GLL!*!I"!#3"A4\rPFh4IFh4bCR4TE@9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)XjD@Y,1\r@PV3!!!"`!!"1p!#3#1V$FA8!!!$#!!(`pJ!%!!$rrrrq!*!)&)i!!!!#!*!%#jB\r!N"S"f+)!N"m%!*!&G'9cG&pcG(*TEQG'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r$9dP&!*!)X[aH@,,mAPJ!!!"Z!!"1m`#3#-EM5EF!!!$#!!(`p`!%!!$rrrrq!*!\r)&)m!!!!#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pcG(*[F%C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9%0A588!N!Lbr&jBX[aH@!!!!"3!!!!-!*!)V*lBi!!!!-)!!I$\ri!!3!!2rrrri!N!J8N!!!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pcG(*eBh4\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH@,,mAPJ!!!!D!!!!%3#\r3#&fBU*!!!!!!`J!"m2N!"!!!rrrrrJ#3#"54!!!!!J#3""#@!*!D!GLL!*!I"!#\r3"A4PFh4IFh9ZBA9ND@pNCAC'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)X[aH@,,mAPJ!!!"-!!!!BJ#3#2iZ3mm!!!$#!!(`qJ!%!!$rrrrq!*!)&*)!!!!\r#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pdD(*PB@4'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&4$9dP&!*!)X[aH@,,mAPJ!!!!5!!!!#J#3#+'d&,`!!!$#!!(`q`!%!!$\rrrrrq!*!)&*-!!!!#!*!%#CB!N"S"f+)!N"m%!*!&G'9cG&pdD@eP4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPQbr&jC!!!!&!!!!!`!N!K(1FfH!!!\r!`J!"m2`!"!!!rrrrrJ#3#"58!!!!!J#3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IG'P\rYD@jR4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPQh#25!!!!5YJ!\r!2YS!N!Ja5Q6D!!!!`J!"m2d!"!!!rrrrrJ#3#"59!!!!!J#3"!f@!*!D!GLL!*!\rI"!#3"A4PFh4IG'pVC@jTHQ9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)X[aH@E,mAPN!!!$-!!!"3`#3#,%ldSm!!!$#!!(`rJ!%!!$rrrrq!*!)&*B!!!!\r#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pdHA"PFdC@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!Le%!pPYEQPJ!!!!))!!!%5!*!)44Uj0!!!!-)!!I$r!!3!!2r\rrrri!N!J8P`!!!!)!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAh9ZD@0[C'9'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y4!2CEC!XCS!!!#%!!!!Q`#3#(SbH8N\r!!!$#!!(a!!!%!!$rrrrq!*!)&*J!!!!#!*!%%*B!N"S"f+)!N"m%!*!&G'9cG&p\reEQPMEf4PC'&dB8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&jCX[a\rH@3!!!"3!!!!-!*!)"H*4%3!!!-)!!I%"!!3!!2rrrri!N!J8Q3!!!!)!N!3,PJ#\r3'J(BSJ#3(`3!N!9dCA0dAh9ZF'&MDdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0\rA588!N!Lc*@&AXb9K9`!!!"B!!!!1!*!)0[5!0`!!!-)!!I%#!!3!!2rrrri!N!J\r8QJ!!!!)!N!30PJ#3'J(BSJ#3(`3!N!9dCA0dAh9cCA*ND@0d4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K83eG*43#3#,-PB9Hc*@&A!!!!&J!!!!i!N!JDSQL'!!!!`J!\r"m3-!"!!!rrrrrJ#3#"5E!!!!!J#3"!f@!*!D!GLL!*!I"!#3"A4PFh4IGA0PFQa\rTFh4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y4!2CE@43U3!!!!B!!!\r!%!#3#-!iFFi!!!$#!!(a"!!%!!$rrrrq!*!)&*`!!!!#!*!%$jB!N"S"f+)!N"m\r%!*!&G'9cG&peFf9bFh4bD@jR4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#\r3#,83$f@eUl)f!!!!B!!!!(X!N!Lfl@22!!!!`J!"m38!"!!!rrrrrJ#3#"5G!!!\r!!J#3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IGfPZFQ9R4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K83eG*43#3#,8QT3+e,4kr!!!!4!!!!%F!N!JZ8Z,F!!!!`J!"m3B!"!!\r!rrrrrJ#3#"5H!!!!!J#3"!f@!*!D!GLL!*!I"!#3"A4PFh4IGfPZFfpeEQ4'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH@E,mAPN!!!!8!!!!$!#3#'Q\r1hVi!!!$#!!(a"`!%!!$rrrrq!*!)&*m!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9\rcG&piE@aXD@*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y5DP!V8QT3)\r!!!!@!!!!$3#3#+phYZm!!!$#!!(a#!!%!!$rrrrq!*!)&+!!!!!#!*!%$*B!N"S\r"f+)!N"m%!*!&G'9cG&pkDA"QD@aP4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG\r*43#3#,,mAPUfZU2V!!!!UJ!!!@-!N!Mkq[1F!!!!`J!"m3N!"!!!rrrrrJ#3#"5\rK!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4IHQaTBNC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!LeJ#QHYB!TRJ!!!%!!!!"!!*!)42hE@!!$L[8!!iVi!!3\r!!2rrrri!N!JC)J!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAf&dCAKTG%C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lebdp'YFY24J!!!*J!!!*T!*!)RZ)\rm4J!$L[8!!iVk!!3!!2rrrri!N!JC)3!!!!)!N!31PJ#3'J(BSJ#3(`3!N!9dCA0\rdAf&eCf&cFfPRENC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeX+Q(YHf\r'e!!!!6`!!!)&!*!)N!!NRTN!!iVe!!1,!!!%!!$rrrrq!*!)'5!!!!!#!*!%#*B\r!N"S"f+)!N"m%!*!&G'9cG&pMCfP'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP\r&!*!)YFLYZVA)VES!!!&S!!!(c3#3#0,*HAJ!!iVe!!1,!J!%!!$rrrrq!*!)'4m\r!!!!#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pME'&cFdC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!LeT4ffYVUMk`!!!$J!!!"!!*!)mi3@aJ!$L[8!!iX%!!3\r!!2rrrri!N!JC(J!!!!)!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAf0[EA"TE'9'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YFLYZVF)p(m!!!&D!!!%'`#3#!8\rch#m!!iVe!!1,"J!%!!$rrrrq!*!)'4d!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9\rcG&pMEfpVD@9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YFY24VA,6dB\r!!!!k!!!!-3#3#"#Y'X!!!iVe!!1,#`!%!!$rrrrq!*!)'4`!!!!#!*!%$*B!N"S\r"f+)!N"m%!*!&G'9cG&pNEh0`BA4S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG\r*43#3#,AE0A'efc9a!!!!%J!!!!S!N!Lk9VTT!!1+p3!$La!!"!!!rrrrrJ#3#"N\rE!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4ICQPXC8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!LeJRr!YB*r`!!!!"3!!!!-!*!)CN!bc`!$L[8!!iX5!!3\r!!2rrrri!N!JC'J!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAfC[FQeKG%C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeJRr!YB+AA3!!!"!!!!!)!*!)qm@\rFU3!$L[8!!iX6!!3!!2rrrri!N!JC'3!!!!)!N!3(PJ#3'J(BSJ#3(`3!N!9dCA0\rdAfGM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,A)VEUeb+fk!!!!&!!\r!!!`!N!KC!Hja!!1+p3!$La8!"!!!rrrrrJ#3#"NB!!!!!J#3"!Z@!*!D!GLL!*!\rI"!#3"A4PFh4ICf9dEh"d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,A\rE0A'efc9a!!!!bJ!!!a`!N!L'lbLe!!1+p3!$LaB!"!!!rrrrrJ#3#"NA!!!!!J#\r3"!b@!*!D!GLL!*!I"!#3"A4PFh4ICf9dG'9iG%C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!LeJRr"YB*r`3!!!")!!!!+!*!)BJDfj`!$L[8!!iXE!!3!!2r\rrrri!N!JC&J!!!!)!N!3*PJ#3'J(BSJ#3(`3!N!9dCA0dAfKKFfK'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)YFLYZVA)VES!!!!B!!!!$`#3#*H02NB!!iV\re!!1,(J!%!!$rrrrq!*!)'48!!!!#!*!%$TB!N"S"f+)!N"m%!*!&G'9cG&pXBA*\rRC@CTE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YA'r5lD1HXB!!!#\rF!!!"'`#3#"Mc+38!!iVe!!1,(`!%!!$rrrrq!*!)'43!!!!#!*!%%TB!N"S"f+)\r!N"m%!*!&G'9cG&pXD@jeH'&eC'P[C'9f4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r83eG*43#3#,@!+Cqebdp'!!!!(!!!!"-!N!MIHYF5!!1+p3!$Lb%!"!!!rrrrrJ#\r3#"N6!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4PFh4IE'pZCf9iF%C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%0A588!N!LeK$a"YRDcIJ!!!a!!!"Pp!*!)T23m*`!$L[8\r!!iXP!!3!!2rrrri!N!JC%J!!!!)!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAfeTEQP\rNEfe'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YB1L0l@$SMF!!!!F!!!\r!%`#3#!NdYBd!!iVe!!1,+`!%!!$rrrrq!*!)'4%!!!!#!*!%$*B!N"S"f+)!N"m\r%!*!&G'9cG&p[F'9ZF(4j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,A\r)VEUfMRV'!!!"kJ!!#+i!N!JK99[h!!1+p3!$Lbi!"!!!rrrrrJ#3#"N3!!!!!J#\r3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IF'&bFf9b4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K83eG*43#3#,A-8eHefc9a!!!!6!!!!5J!N!K2iZPG!!1+p3!$Lc%!"!!!rrr\rrrJ#3#"N2!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4IF'pXE%C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%0A588!N!LeNU[TYC+Vk3!!!$`!!!!c!*!)"0+d$3!$L[8\r!!iXc!!3!!2rrrri!N!JC$J!!!!)!N!31PJ#3'J(BSJ#3(`3!N!9dCA0dAh"[FfP\riF'&dD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeJk)hYB1L0`!!!%!\r!!!!q!*!)5JA#XJ!$L[8!!iXe!!3!!2rrrri!N!JC$3!!!!)!N!3)PJ#3'J(BSJ#\r3(`3!N!9dCA0dAh"dH8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeJRr\r"YZ'B2`!!!")!!!!*!*!)E2QP`!!$L[8!!iY"!!3!!2rrrri!N!JC$!!!!!)!N!3\r)PJ#3'J(BSJ#3(`3!N!9dCA0dAh0bC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0\rA588!N!LeJRr"YSjkaJ!!!,`!!!&d!*!)I8TC'3!$L[8!!iY-!!3!!2rrrri!N!J\rC#`!!!!)!N!3)PJ#3'J(BSJ#3(`3!N!9dCA0dAh9MENC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!Lefc9aYGXeF3!!!"3!!!!-!*!)qYN2-!!$L[8!!iY3!!3\r!!2rrrri!N!JC#J!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAh9bE'aTBNC@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeVk9cYSjkaJ!!!3S!!!6p!*!)S1P\rPCJ!$L[8!!iY4!!3!!2rrrri!N!JC#3!!!!)!N!30PJ#3'J(BSJ#3(`3!N!9dCA0\rdAh9bE("KFR0P4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,AYKY5fVfV\r'!!!!SJ!!!AJ!N!JZ&DY`!!243J!%(*m!"!!!rrrrrJ#3#"Qj!!!!!J#3"!f@!*!\rD!GLL!*!I"!#3"A4PFh4I8h4bD@jR58p'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r$9dP&!*!)YJNp-lE"b*`!!!"`!!!!`J#3#!F-D[N!"$Q`!!3jZ`!%!!$rrrrq!*!\r)'IF!!!!#!*!%$TB!N"S"f+)!N"m%!*!&G'9cG&pMCQG`BA*cCA*'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)YJNp-lB*26-!!!!8!!!!$!#3#"0TCHm!"$Q\r`!!3jfJ!%!!$rrrrq!*!)'IB!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pTEA"\r[FR4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YJNp-lB*26-!!!"#!!!\r!43#3#1k#e"F!"$Q`!!3ji3!%!!$rrrrq!*!)'I8!!!!#!*!%$TB!N"S"f+)!N"m\r%!*!&G'9cG&pYD@ePG'p[E(0'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)YJNp-lBL89J!!!$Z!!!$Y`#3#,*#[VS!"$Q`!!3jq`!%!!$rrrrq!*!)'I3!!!!\r#!*!%#*B!N"S"f+)!N"m%!*!&G'9cG&pcBAK'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&4$9dP&!*!)YJNp-lB*26-!!!!5!!!!#J#3#$26#K)!"$Q`!!3k&3!%!!$rrrr\rq!*!)'I-!!!!#!*!%#CB!N"S"f+)!N"m%!*!&G'9cG&phBACP4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K83eG*43#3#,B8VqQf&+rT!!!!G!!!!0)!N!J5H-1(!!5++`!\r%LMi!"!!!rrrrrJ#3#"S*!!!!!J#3"!f@!*!D!GLL!*!I"!#3"A4PFh4IBfp`H9p\rbC@G'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YT1P)ED6T5%!!!!@!!!\r!$3#3#'-bpUJ!!M-4!!)c%J!%!!$rrrrq!*!)'cF!!!!#!*!%$*B!N"S"f+)!N"m\r%!*!&G'9cG&pIAf&XE&pI4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,D\r1HX@fMRV&!!!!I!!!!48!N!M'XPmP!!)c%3!#-aJ!"!!!rrrrrJ#3#"Xf!!!!!J#\r3"!b@!*!D!GLL!*!I"!#3"A4PFh4IBQ&cG'P[ENC@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!LfGV0pYRDcI3!!!"3!!!!-!*!)[`BJm!!#-a%!!M-E!!3!!2r\rrrri!N!JE03!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAf*TFf9MG%C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9%0A588!N!LfMRV&YSjka3!!!"3!!!!,!*!)PiSdaJ!\r#-a%!!M-G!!3!!2rrrri!N!JE0!!!!!)!N!3+PJ#3'J(BSJ#3(`3!N!9dCA0dAf*\reCQP[4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,DJd4UfS0%D!!!!%J!\r!!!S!N!J1L`MZ!!)c%3!#-am!"!!!rrrrrJ#3#"Xc!!!!!J#3"!Q@!*!D!GLL!*!\rI"!#3"A4PFh4IBf&`D8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LfMRV\r&YSjka3!!!(i!!!&j!*!)X3rDj!!#-a%!!M-M!!3!!2rrrri!N!JE-J!!!!)!N!3\r4PJ#3'J(BSJ#3(`3!N!9dCA0dAf0SBA*YBA"MEf4PBdC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!LfMRV&YSjka3!!#pS!!)UH!*!)lmG"q3!#-a%!!M-R!!3\r!!2rrrri!N!JE-3!!!!)!N!30PJ#3'J(BSJ#3(`3!N!9dCA0dAf0[CA*MD@pZ4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,D1HX@fMRV&!!!"6!!!"F%!N!K\r1Y*cJ!!)c%3!#-bJ!"!!!rrrrrJ#3#"X`!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4\rPFh4IBfpYF'&bC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LfVfV'YYq\rm&3!!"&J!!"[i!*!)G)@J$3!#-a%!!M-`!!3!!2rrrri!N!JE,`!!!!)!N!3-PJ#\r3'J(BSJ#3(`3!N!9dCA0dAf4TCQCXD@*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r$9dP&!*!)YUpUalEI["8!!!B)!!!D,J#3#%NY5")!!M-4!!)c-J!%!!$rrrrq!*!\r)'bi!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pNEf0dCA0d4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K83eG*43#3#,D1HX@fMRV&!!!!&J!!!!d!N!JFhDX@!!)c%3!\r#-c3!"!!!rrrrrJ#3#"XY!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4PFh4IC(9YBQ4\rLE8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LfMRV'YSjkaJ!!!"J!!!!\r2!*!)KcU2RJ!#-a%!!M-m!!3!!2rrrri!N!JE,!!!!!)!N!31PJ#3'J(BSJ#3(`3\r!N!9dCA0dAfCeEQ0KG(4bFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L\rf)P&BYL*4@!!!!$S!!!!h!*!)4q-UjJ!#-a%!!M00!!3!!2rrrri!N!JE+`!!!!)\r!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAfeKD@aLEhK'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&4$9dP&!*!)YSjkaVD1HXB!!!'1!!!EN3#3#"XRrQd!!M-4!!)cD3!%!!$\rrrrrq!*!)'bS!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pbD@0SBfe`4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,DBX[Lfhl`9!!!"%!!!!F%!N!LMSR2\r)!!)c%3!#-f`!"!!!rrrrrJ#3#"XT!!!!!J#3"!U@!*!D!GLL!*!I"!#3"A4PFh4\rIFf0[F'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YSjkaVD1HXB!!!!\r8!!!!$!#3#))ppMB!!M-4!!)cH!!%!!$rrrrq!*!)'bJ!!!!#!*!%#jB!N"S"f+)\r!N"m%!*!&G'9cG&pcG@jNFRP'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)YU$4'lDJd4X!!!!@!!!!$J#3#(Em*&-!!M-4!!)cH3!%!!$rrrrq!*!)'bF!!!!\r#!*!%$CB!N"S"f+)!N"m%!*!&G'9cG&pcH@edB@*XC8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!LfMRV'YSjkaJ!!!%B!!!"(!*!)1LNHK`!#-a%!!M0l!!3\r!!2rrrri!N!JE*J!!!!)!N!39PJ#3'J(BSJ#3(`3!N!9dCA0dAh4SFQ9KC'9NG'9\rYF'CTE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YU$4'lEKQ$m!!!!\r@!!!!$3#3#'!XC"F!!M-4!!)cLJ!%!!$rrrrq!*!)'b8!!!!#!*!%$*B!N"S"f+)\r!N"m%!*!&G'9cG&phC@&VFQ9Q4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#\r3#,D1HXDfMRV(!!!!@!!!!(m!N!LUj@AA!!)c%3!#-ii!"!!!rrrrrJ#3#"XN!!!\r!!J#3"!k@!*!D!GLL!*!I"!#3"A4PFh4IH(*PB@4XD@jP4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,E"b*bf`FLF!!!!'!!!!"!!N!Ld14(3!!FSG`!(+(N\r!"!!!rrrrrJ#3#"`X!!!!!J#3"!q@!*!D!GLL!*!I"!#3"A4PFh4IAepQGA4eFQ9\rIAdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lf`FLFYX()R!!!!"B!!!!\r0!*!)ii0eX!!(+(F!"bL`!!3!!2rrrri!N!JF+`!!!!)!N!3-PJ#3'J(BSJ#3(`3\r!N!9dCA0dAfPZFh"PBh4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YXA\r5",F)raS!!!!m!!!!P`#3#$,P3SF!"hLa!!GihJ!%!!$rrrrq!*!)(()!!!!#!*!\r%#jB!N"S"f+)!N"m%!*!&G'9cG&pQGA4eFQ9'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&4$9dP&!*!)YXA5",E&dJ3!!!!m!!!!I!#3#%M-5JB!"hLa!!Gij!!%!!$rrrr\rq!*!)((%!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pRE'pLB@a'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)YYel5EEGHdN!!!!@!!!!$3#3#$MBI4-!#$e\rh!!JpN3!%!!$rrrrq!*!)()%!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pMEfe\r`E'9i4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,EI["@fhl`9!!!!&J!\r!!!d!N!K3,GGL!!JpG`!)2D)!"!!!rrrrrJ#3#"b!!!!!!J#3"!b@!*!D!GLL!*!\rI"!#3"A4PFh4ICQjYBA4MD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L\rfhl`9YYqm&3!!!"J!!!!2!*!)P5PhU3!)2AF!#$hV!!3!!2rrrri!N!JFI`!!!!)\r!N!31PJ#3'J(BSJ#3(`3!N!9dCA0dAh4bB@0PBQ&MDdC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!Lh#24qY`MdIJ!!!$J!!!!`!*!)TB8'k`!)SR3!#+*j!!3\r!!2rrrri!N!JFY3!!!!)!N!30PJ#3'J(BSJ#3(`3!N!9dCA0dAf&cH@jMD'&d4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,F)p(qh#24r!!!!C!!!!(8!N!M\rK5q)'!!LLG!!)SUm!"!!!rrrrrJ#3#"bd!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4\rPFh4ID(4dF'aTBNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lh#24rY`M\rdI`!!!"3!!!!-!*!)MQIF5!!)SR3!#++f!!3!!2rrrri!N!JFX`!!!!)!N!3,PJ#\r3'J(BSJ#3(`3!N!9dCA0dAfa[Bf&XC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&iaYL*48!!!#$`!!"U0!*!)0fNmD`!!!-%!!I"R!!-!!2rrrri!N!J\r8SJ!!!!)!N!3+PJ#3'J(ASJ#3(`3!N!9`HA0dEfjP,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mAM'fiCJm!!!9kJ!!Gr3!N!KUij%S!!!!`3!"m'J\r!!`!!rrrrrJ#3#"5M!!!!!J#3"!Z@!*!D!GHL!*!I"!#3"A*PAh4PFh4c,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM'f)P&3!!!)S!!!)hN!N!K\r#5C+c!!!!`3!"m'N!!`!!rrrrrJ#3#"5N!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A*\rPCf9iAh4PFh4c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM+\rh#2mB!!!1JJ!!+i8!N!LpAYU@!!!!`3!"m'S!!`!!rrrrrJ#3#"5P!!!!!J#3"!Z\r@!*!D!GHL!*!I"!#3"A*PCh*dCA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,,mAM+br&ib!!!"&J!!!JB!N!MaV,QN!!!!`3!"m'X!!`!!rrrrrJ#\r3#"5Q!!!!!J#3"!Q@!*!D!GHL!*!I"!#3"A*PF'9bCLj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&ibYUpU[`!!"8!!!!hY!*!)mcEaP!!!!-%!!I"\rX!!-!!2rrrri!N!J8T`!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9cEh*dF'9bCLj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ibYSjk[`!!!A)!!!+U!*!\r)*K1M%!!!!-%!!I"Y!!-!!2rrrri!N!J8U!!!!!)!N!3+PJ#3'J(ASJ#3(`3!N!9\rdCA0dAf&X,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM+fMRU\rr!!!&,!!!'J%!N!Jr2bGa!!!!`3!"m'i!!`!!rrrrrJ#3#"5T!!!!!J#3"!f@!*!\rD!GHL!*!I"!#3"A4PFh4IBA*bBANZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)X[aH-lD1HVm!!!8D!!!CZ`#3#'ffH3N!!!$"!!(`E`!$!!$rrrrq!*!\r)&+S!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&pKG@4TEfp`,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM1fNk8H!!!2Q!!!4J#3#6phU"!!!!$\r"!!(`F!!$!!$rrrrq!*!)&+X!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG&pL-5j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&icYSjk[`!!#KJ!!#V\rE!*!)fm(aDJ!!!-%!!I"a!!-!!2rrrri!N!J8V!!!!!)!N!3+PJ#3'J(ASJ#3(`3\r!N!9dCA0dAf)b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM1\rfMRUr!!!%9J!!#[-!N!JT3eIk!!!!`3!"m()!!`!!rrrrrJ#3#"5Y!!!!!J#3""#\r@!*!D!GHL!*!I"!#3"A4PFh4IBQPZBA0MD@NZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)Y%0MYlD1HVm!!!'H!!!$b!!!!(!!!!'D#2@&+!!!!-%!!I"\rc!!-!!2rrrri!N!J8VJ!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAf*TEQKPH#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&icYYqm&!!!!X)!!!E\r4!*!)TVK#i3!!!-%!!I"d!!-!!2rrrri!N!J8V`!!!!)!N!30PJ#3'J(ASJ#3(`3\r!N!9dCA0dAf*cC'4L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rmAM5br&id!!!!GJ!!!-m!N!JFi&(Z!!!!`3!"m(8!!`!!rrrrrJ#3#"5`!!!!!J#\r3"!q@!*!D!GHL!*!I"!#3"A4PFh4IBR9TE(4TELj`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr&idYSjk[`!!!H)!!!0B!*!)UXb,p3!!!-%!!I"f!!-\r!!2rrrri!N!J8X3!!!!)!N!3+PJ#3'J(ASJ#3(`3!N!9dCA0dAf0N,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM5fMRV!!!!'"J!!$e8!N!JQNjG\ra!!!!`3!"m(F!!`!!rrrrrJ#3#"5b!!!!!J#3"!U@!*!D!GHL!*!I"!#3"A4PFh4\rIBf`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH0,D1HX!!!!%\rf!!!$+!#3#%"ah2F!!!$"!!(`H!!$!!$rrrrq!*!)&,-!!!!#!*!%$CB!N"S"ek)\r!N"m%!*!&G'9cG&pME@&dD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!LdkcLRYL*483!!!e!!!!dG!*!)K"C&X!!!!-%!!I"j!!-!!2rrrri!N!J8Y!!\r!!!)!N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAf0[ER4KD@jc,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,-PB9+fNk8I!!!!0!!!!%!!N!Mk!REI!!!!`3!\r"m(S!!`!!rrrrrJ#3#"5e!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4IBh"TBfY\rXC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&idYSjk`!!!!+)\r!!!$H!*!)JI22M`!!!-%!!I"l!!-!!2rrrri!N!J8YJ!!!!)!N!30PJ#3'J(ASJ#\r3(`3!N!9dCA0dAf0bHA"d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mAM5fhl`8!!!"PJ!!!hm!N!JB-CG'!!!!`3!"m(`!!`!!rrrrrJ#3#"5h!!!\r!!J#3"!Z@!*!D!GHL!*!I"!#3"A4PFh4IC'*Y,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mAM5faG)$!!!"CJ!!!Z3!N!K6e-d4!!!!`3!"m(d!!`!\r!rrrrrJ#3#"5i!!!!!J#3"!U@!*!D!GHL!*!I"!#3"A4PFh4IC'`ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH0ED1HX!!!!1@!!!)8J#3#+1!LN3\r!!!$"!!(`IJ!$!!$rrrrq!*!)&,N!!!!#!*!%$CB!N"S"ek)!N"m%!*!&G'9cG&p\rPFR*ZEbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ieYU$4&`!\r!"$J!!!UJ!*!)JPUDc`!!!-%!!I"r!!-!!2rrrri!N!J8ZJ!!!!)!N!35PJ#3'J(\rASJ#3(`3!N!9dCA0dAf9iBf9`G'P[ER-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y4!2BlF)p(X!!!BS!!!9+J#3#-)Q+[%!!!$"!!(`J!!$!!$rrrr\rq!*!)&,X!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&pPH(4MB@aX,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM@h#24l!!!"k!!!"$J!N!L+G*2\rf!!!!`3!"m)%!!`!!rrrrrJ#3#"5m!!!!!J#3"!f@!*!D!GHL!*!I"!#3"A4PFh4\rICQ0ZG'`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y6N4alF)p(X\r!!!-5!!!'Q!#3#$V`AeJ!!!$"!!(`JJ!$!!$rrrrq!*!)&,d!!!!#!*!%$CB!N"S\r"ek)!N"m%!*!&G'9cG&pQEh*V-5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!LejqMSYYqm&!!!!Bi!!!06!*!)jeI#L`!!!-%!!I#$!!-!!2rrrri!N!J\r8[J!!!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0dAfGNBQdZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)X[aH0ED1HX%!!!NB!!!Cm!#3#((G)Z`!!!$"!!(\r`K!!$!!$rrrrq!*!)&,m!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG&pRE#j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ieYYel53!!%e3!!$ZT!*!\r)&[6d3`!!!-%!!I#&!!-!!2rrrri!N!J8`!!!!!)!N!32PJ#3'J(ASJ#3(`3!N!9\rdCA0dAfGbB@eYBA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rH0VD1HX%!!!%5!!!#6`#3#"9`#PX!!!$"!!(`KJ!$!!$rrrrq!*!)&-%!!!!#!*!\r%#jB!N"S"ek)!N"m%!*!&G'9cG&pRFR!ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Xb9K8lD1HX%!!!)@!!!%d!#3#"LeMNm!!!$"!!(`K`!$!!$rrrr\rq!*!)&-)!!!!#!*!%$*B!N"S"ek)!N"m%!*!&G'9cG&pRHQP`,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMDfMRV#!!!'5J!!&F8!N!Kjq*lm!!!\r!`3!"m)J!!`!!rrrrrJ#3#"6$!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4ID@e\rKCf9[F#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ifYUpU`J!\r!"JJ!!""a!*!)K@8C6!!!!-%!!I#*!!-!!2rrrri!N!J8a!!!!!)!N!32PJ#3'J(\rASJ#3(`3!N!9dCA0dAfPYCfCTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)X[aH0VD1HX)!!!SQ!!!LC3#3#22Qc&N!!!$"!!(`LJ!$!!$rrrrq!*!\r)&-8!!!!#!*!%$*B!N"S"ek)!N"m%!*!&G'9cG&pXEfjR,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mAMDh#24m!!!'r!!!&i`!N!KUC$Nr!!!!`3!\r"m)X!!`!!rrrrrJ#3#"6'!!!!!J#3"!b@!*!D!GHL!*!I"!#3"A4PFh4IE@&dD#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ifYRDcH`!!!@`!!!-\r#!*!)9B#'fJ!!!-%!!I#-!!-!!2rrrri!N!J8a`!!!!)!N!3,PJ#3'J(ASJ#3(`3\r!N!9dCA0dAfeN05j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i\rbYL*48!!!"NB!!"'d!*!)c68UcJ!!!-%!!I#0!!-!!2rrrri!N!J8b!!!!!)!N!3\r5PJ#3'J(ASJ#3(`3!N!9dCA0dAdeTE@9AFQPdCA)ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)Y4!2C,D[DX-!!!4f!!!0&!#3#*V8'%8!!!$"!!(`MJ!\r$!!$rrrrq!*!)&-N!!!!#!*!%$*B!N"S"ek)!N"m%!*!&G'9cG&pYE@&`,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMHfiCJp!!!$HJ!!#)i!N!L\rCR34f!!!!`3!"m)m!!`!!rrrrrJ#3#"6+!!!!!J#3"!Z@!*!D!GHL!*!I"!#3"A4\rPFh4IEQ9h,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMHfMRV\r#!!!"I!!!!dS!N!K393[N!!!!`3!"m*!!!!-!!2rrrri!N!J8b`!!!!)!N!3,PJ#\r3'J(ASJ#3(`3!N!9dCA0dAfjTFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&ihYUpU``!!!G)!!!DL!*!)1Za@l!!!!-%!!I#4!!-!!2rrrri!N!J\r8c!!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAfjdF'&dD#j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ihYU$4'3!!!M!!!!Hb!*!)rRP%%J!!!-%\r!!I#5!!-!!2rrrri!N!J8c3!!!!)!N!32PJ#3'J(ASJ#3(`3!N!9dCA0dAfp`Bfp\rNCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH0lBL893!!!'\r!!!!#K`#3#)53!#Ee!!!!`3!"m*-!!`!!rrrrrJ#3#"61!!!!!J#3""+@!*!D!GH\rL!*!I"!#3"A4PFh4IEh"PFQ&dD@pZFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&ihYRDcI!!!!U)!!!Ed!*!)SMSmL`!!!-%!!I#8!!-!!2rrrri\r!N!J8c`!!!!)!N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAfp`CA*KG'pb,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,-PB91fNk8J!!!!-!!!!$i!N!L"XJR\r9!!!!`3!"m*8!!`!!rrrrrJ#3#"63!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4\rIF'PMDfaP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMHfVfV\r$!!!'j!!!'@i!N!K%kAM5!!!!`3!"m*B!!`!!rrrrrJ#3#"64!!!!!J#3"!Z@!*!\rD!GHL!*!I"!#3"A4PFh4IF'YR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,-G@L'fS0%C!!!$N!!!!!JU!*!)5hAEY`!!!-%!!I#A!!-!!2rrrri!N!J\r8dJ!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAh"[F'9Z-Lj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&iiYRDcI!!!"!`!!!q$!*!)Xk&F4!!!!-%\r!!I#B!!-!!2rrrri!N!J8d`!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9dCA0dAh"[Gbj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&iiYUpUa!!!!QB!!!C\rR!*!)BjNh2`!!!-%!!I#C!!-!!2rrrri!N!J8e!!!!!)!N!3,PJ#3'J(ASJ#3(`3\r!N!9dCA0dAh"hC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%!p\rNYRDcI!!!"M!!!"@Y!*!)pG0AQ3!!!-%!!I#D!!-!!2rrrri!N!J8e3!!!!)!N!3\r2PJ#3'J(ASJ#3(`3!N!9dCA0dAh"jCAK`BA3ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aH1,EKQ$d!!!YD!!!`V3#3#131Q5B!!!$"!!(`Q`!$!!$\rrrrrq!*!)&0B!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG&pbC5j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&iiYSjk``!!"1J!!!k#!*!)S`+*&J!\r!!-%!!I#F!!-!!2rrrri!N!J8e`!!!!)!N!30PJ#3'J(ASJ#3(`3!N!9dCA0dAh*\rPCf9i,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMLfMRV$!!!\r%hJ!!$NB!N!MUKqdh!!!!`3!"m*d!!`!!rrrrrJ#3#"6B!!!!!J#3"!k@!*!D!GH\rL!*!I"!#3"A4PFh4IFQCM1$)b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mAMQfMRV$!!!#*!!!"GJ!N!JRh[e4!!!!`3!"m*i!!`!!rrrrrJ#3#"6\rC!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IFQGLD@eR,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mAMQfGV0p!!!!iJ!!!DS!N!K(&6UQ!!!!`3!\r"m*m!!`!!rrrrrJ#3#"6D!!!!!J#3"!f@!*!D!GHL!*!I"!#3"A4PFh4IFQpdEh)\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH1ED1HX-!!!)@!!!\r&a`#3#)1RmNm!!!$"!!(`S!!$!!$rrrrq!*!)&0X!!!!#!*!%$TB!N"S"ek)!N"m\r%!*!&G'9cG&pcC@aPBh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)Xb9K9,-PB93!!!('!!!#j3#3##)()%F!!!$"!!(`S3!$!!$rrrrq!*!)&0`!!!!\r#!*!%#jB!N"S"ek)!N"m%!*!&G'9cG&pcD'%ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aH1ED1HX-!!!)f!!!&RJ#3#-lrBkN!!!$"!!(`SJ!$!!$\rrrrrq!*!)&0d!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9cG&pcD@GZB@`ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH1EEKQ$i!!!95!!!3dJ#3##m\r59kS!!!$"!!(`S`!$!!$rrrrq!*!)&0i!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9\rcG&pcEf0VCA3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH1VE\rKQ$i!!!GJ!!!@13!!!(`!!!'DD'`8FJ!!!-%!!I#N!!-!!2rrrri!N!J8h`!!!!)\r!N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAh0dFQCdD@eP,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,1@PV5fMRV$!!!"L!!!!kX!N!Jq0EFp!!!!`3!"m+8\r!!`!!rrrrrJ#3#"6J!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IFh4bD@jR,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMUfMRV$!!!&(!!!$NS\r!N!K22e*m!!!!`3!"m+B!!`!!rrrrrJ#3#"6K!!!!!J#3"!f@!*!D!GHL!*!I"!#\r3"A4PFh4IFh4bEh!ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rH1VCfXhd!!!8U!!!3m3#3#!dSTT!!!!!!`3!"m+F!!`!!rrrrrJ#3#"6L!!!!!J#\r3"!k@!*!D!GHL!*!I"!#3"A4PFh4IFh4bG@0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mAMUh#24p!!!",J!!!NB!N!KY$LD*!!!!`3!"m+J!!`!\r!rrrrrJ#3#"6M!!!!!J#3""1@!*!D!GHL!*!I"!#3"A4PFh4IFh9ZBA9ND@pNCAB\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH1VEKQ$i!!!88!!!\r-A!#3#(1&Sq)!!!$"!!(`U3!$!!$rrrrq!*!)&13!!!!#!*!%$jB!N"S"ek)!N"m\r%!*!&G'9cG&pcGA"`Eh*d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mAMUfMRV%!!!$0J!!#b3!N!K8'&TY!!!!`3!"m+S!!`!!rrrrrJ#3#"6P!!!\r!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IG'KbC@&N,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mAMZfGV0p!!!"CJ!!!k!!N!K$a,Ba!!!!`3!"m+X\r!!`!!rrrrrJ#3#"6Q!!!!!J#3"!b@!*!D!GHL!*!I"!#3"A4PFh4IG'PYC5j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ilYSjka!!!!+J!!!&L!*!\r)a*j-J!!!!-%!!I#X!!-!!2rrrri!N!J8j`!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9\rdCA0dAh4TE@PZCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i\rlYSjka!!!!)3!!!$@!*!)#1dT%J!!!-%!!I#Y!!-!!2rrrri!N!J8k!!!!!)!N!3\r3PJ#3'J(ASJ#3(`3!N!9dCA0dAh4[Df9ZDATP,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mAMZh#2mC!!!,"!!!,3)!N!K)j![+!!!!`3!"m+i!!`!\r!rrrrrJ#3#"6T!!!!!J#3"!f@!*!D!GHL!*!I"!#3"A4PFh4IG(P`CA-ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YT1P2ED[DX8!!"&U!!",X!#3#0E\rDZd)!!!$"!!(`V`!$!!$rrrrq!*!)&1S!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9\rcG&peEQPMEf4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83$f5\rfMRV%!!!$e!!!$aJ!N!KL"eTc!!!!`3!"m,!!!`!!rrrrrJ#3#"6V!!!!!J#3""1\r@!*!D!GHL!*!I"!#3"A4PFh4IG@jTBfpNC@4KG'%ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aH1lCfXhd!!!+L!!!*ZJ#3##93hRm!!!$"!!(`X3!\r$!!$rrrrq!*!)&1`!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9cG&peER"KBfXZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Xb9K9EF)raS!!!*d!!!'B!#\r3#0hRkCm!!!$"!!(`XJ!$!!$rrrrq!*!)&1d!!!!#!*!%%*B!N"S"ek)!N"m%!*!\r&G'9cG&peFf9bC'PMG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rc*@&9YSjka!!!"-!!!!m9!*!),N6&j!!!!-%!!I#c!!-!!2rrrri!N!J8lJ!!!!)\r!N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAh9cCA*XDA0d,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,83$f5fVfV&!!!"m!!!",m!N!K*62U6!!!!`3!"m,3\r!!`!!rrrrrJ#3#"6[!!!!!J#3""+@!*!D!GHL!*!I"!#3"A4PFh4IGA0PFR0dFQP\rZCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%!pNYSjka!!!"ZS\r!!"9h!*!)M0`X!J!!!-%!!I#e!!-!!2rrrri!N!J8m!!!!!)!N!31PJ#3'J(ASJ#\r3(`3!N!9dCA0dAhGTER*PCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Le*U8#YL*49`!!!*`!!!$+!*!)p*-DT3!!!-%!!I#f!!-!!2rrrri!N!J8m3!\r!!!)!N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAhGTER0[G@jN,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mAMZfMRV%!!!"3J!!!K3!N!KG+p+(!!!!`3!\r"m,F!!`!!rrrrrJ#3#"6b!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IH'eXE'P\rL,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8QT3+h#24q!!!%5J!\r!#NN!N!JDC[Gi!!!!`3!"m,J!!`!!rrrrrJ#3#"6c!!!!!J#3"!q@!*!D!GHL!*!\rI"!#3"A4PFh4IHQP`CQPXC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbr&imYVUMk`!!#%S!!"2)!*!)jf09fJ!!!-%!!I#j!!-!!2rrrri!N!J8p!!\r!!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0dAhTXD@)ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aH2,,mAM`!!!"d!!!!L!#3#&jTKGd!!!$"!!(`ZJ!\r$!!$rrrrq!*!)&28!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG'&XE#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&j"X[aH33!!Y(`!!4UU!*!)[Lj\r@U3!!!-%!!I#l!!-!!2rrrri!N!J8pJ!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9dCA0\rdD@eR,R9eC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&j,X[aH5`!\r!Y-3!!4UZ!*!)&AAI"!!!!-%!!I#m!!-!!2rrrri!N!J8p`!!!!)!N!3-PJ#3'J(\rASJ#3(`3!N!9dCA0dD@eRFLjeG@9'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0\rS!*!)X[aH6V,mANi!!+AF!!$UK3#3##SL)QX!!!$"!!(`[3!$!!$rrrrq!*!)&2J\r!!!!#!*!%#jB!N"S"ek)!N"m%!*!&G'9cG(*RBLjeG@9'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aH6VF)p(i!!!3!!!!*E3#3#%#`44d!!!$"!!(`[J!\r$!!$rrrrq!*!)&2N!!!!#!*!%%CB!N"S"ek)!N"m%!*!&G'pVC@jTHQ9IG'9cG(-\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YB*r`,BL89!!!!p1!!!\rP6J#3#0r8!RB!!iTl!!1+JJ!$!!$rrrrq!*!)'3J!!!!#!*!%"TB!N"S"ek)!N"m\r%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@43U1fVfV\r!!!!)9J!!)E!!N!K`V08,!!1+H`!$LSF!!`!!rrrrrJ#3#"N(!!!!!J#3"!q@!*!\rD!GHL!*!I"!#3"A0dFQPZCepdCA0dFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9%0A588!N!LeK$`lYB3m1`!!!PJ!!!99!*!)6EDFR3!$LRX!!iU)!!-!!2rrrri\r!N!JC"J!!!!)!N!3)PJ#3'J(ASJ#3(`3!N!9dCA0d,RKYE%C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!LeJ#QEYSjk[`!!!3`!!!)q!*!)PKa9q3!$LRX!!iU\r,!!-!!2rrrri!N!JC"3!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAf&dCAKTG#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lebdp$YL*483!!!TB!!!i\r@!*!)Mi@9V!!$LRX!!iU0!!-!!2rrrri!N!JC"!!!!!)!N!34PJ#3'J(ASJ#3(`3\r!N!9dCA0dAf&eCf&cFfPRELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!LeX+Q(YSjk`!!!#!`!!"Np!*!)L+k"X`!$LRX!!iU9!!-!!2rrrri!N!JC!`!\r!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9dCA0dAf0RD5j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Leb+fiYT1P(J!!"+i!!!j5!*!)S[jmP`!$LRX!!iUA!!-\r!!2rrrri!N!JC!J!!!!)!N!30PJ#3'J(ASJ#3(`3!N!9dCA0dAf0XBA0c,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@P(EDfZU2U!!!"2J!!!iX!N!J\r0V!U`!!1+H`!$LTN!!`!!rrrrrJ#3#"N"!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4\rPFh4IBfpYF'PXC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+f\riY`MdH`!!!M3!!!9C!*!)+X6cJJ!$LRX!!iUE!!-!!2rrrri!N!JC!*!%!J#3"!k\r@!*!D!GHL!*!I"!#3"A4PFh4IBfp[DfPP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,A,6d1fVfV"!!!"aJ!!"I%!N!JFK*b9!!1+H`!$LU!!!`!!rrr\rrrJ#3#"Mr!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4IC'pcF'&dD#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lefc9`YSjk`3!!!63!!!1N!*!)&Ih\rDh!!$LRX!!iUP!!-!!2rrrri!N!JBrJ!!!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0\rdAfCTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB*r`,F*$+)\r!!!F+!!!M[!#3#*aA'R)!!iTl!!1+T`!$!!$rrrrq!*!)'2d!!!!#!*!%$TB!N"S\r"ek)!N"m%!*!&G'9cG&pQEh*YBA3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)YB*r`,D1HX%!!!4d!!!2L!#3#1iJ!PB!!iTl!!1+U!!$!!$rrrrq!*!\r)'2`!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG&pRBbj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Leb+fiYSjk`3!!"!S!!!r$!*!)c3YMC3!$LRX!!iU\rU!!-!!2rrrri!N!JBq`!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAfGPG'p`G#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lefc9`YL*48J!!#-B!!"E\rm!!!!J!!!!CSV'YXq!!1+H`!$LUX!!`!!rrrrrJ#3#"Mk!!!!!J#3"!q@!*!D!GH\rL!*!I"!#3"A4PFh4ICf9dG'9iG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!LeJRr!YL*48`!!!4i!!!)4!*!)Mk"BjJ!$LRX!!iU`!!-!!2rrrri!N!J\rBq3!!!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0dAfKKFfJZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)YFLYZEF)p(`!!!6S!!!1[`#3##51h(N!!iTl!!1\r+X`!$!!$rrrrq!*!)'2J!!!!#!*!%%CB!N"S"ek)!N"m%!*!&G'9cG&pXBA*RC@C\rTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YA'r5lB*26%!!!,\r'!!!(rJ#3##)`4"X!!iTl!!1+Y!!$!!$rrrrq!*!)'2F!!!!#!*!%&CB!N"S"ek)\r!N"m%!*!&G'9cG&pXD@jeH'&eC'P[C'9f,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,AE0kUf)P&8!!!!4J!!!$d!N!J2"bY8!!1+H`!$LVB!!`!!rrr\rrrJ#3#"Mf!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4IE'pZCf9iF#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeK$`lYVUMkJ!!$5J!!$e(!*!)1k,\r-[`!$LRX!!iUk!!-!!2rrrri!N!JBp3!!!!)!N!32PJ#3'J(ASJ#3(`3!N!9dCA0\rdAfeTEQPNEfdZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L0lD\r1HX)!!!%S!!!#B!#3#1I-M!N!!iTl!!1+`!!$!!$rrrrq!*!)'23!!!!#!*!%$jB\r!N"S"ek)!N"m%!*!&G'9cG&p[F'9ZF(4j,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,A)VEUfMRV#!!!%jJ!!%p)!N!L,'TZq!!1+H`!$LX-!!`!!rrr\rrrJ#3#"Mc!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IF'&bFf9b,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A-8eHfMRV#!!!&M!!!%2X!N!KHTp%\rJ!!1+H`!$LXB!!`!!rrrrrJ#3#"Mb!!!!!J#3"!b@!*!D!GHL!*!I"!#3"A4PFh4\rIF'pXE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeNU[TYUpU``!\r!!AB!!!5l!*!)haC*p!!$LRX!!iV)!!-!!2rrrri!N!JBm3!!!!)!N!34PJ#3'J(\rASJ#3(`3!N!9dCA0dAh"[FfPiF'&dD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!LeJk)hY`MdI3!!"2i!!!`L!*!)Via"e`!$LRX!!iV+!!-!!2rrrri\r!N!JBm!!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9dCA0dAh"dH5j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!LeJRr!YZ'B2J!!$4)!!$Ae!!!!HJ!!!CT15h3\rq!!1+H`!$LYB!!`!!rrrrrJ#3#"M[!!!!!J#3"!Z@!*!D!GHL!*!I"!#3"A4PFh4\rIFh*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@#Im#fPErC!!!\r%*!!!$+8!N!KMEYa)!!1+H`!$LZ)!!`!!rrrrrJ#3#"MZ!!!!!J#3"!Z@!*!D!GH\rL!*!I"!#3"A4PFh4IG@0Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,AE0A'fS0%D!!!%B!!!$4N!N!K1"MXH!!1+H`!$LZB!!`!!rrrrrJ#3#"MY!!!\r!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IGA*XE'PL,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,@[TA+fMRV%!!!#+!!!#"B!N!M0GM(b!!1+H`!$LZF\r!!`!!rrrrrJ#3#"MX!!!!!J#3""#@!*!D!GHL!*!I"!#3"A4PFh4IGA*XF'&bFf8\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YJUYUED[DX!!!!&f!!!\r$Y!#3#"[A3jJ!!p$)!!3FRJ!$!!$rrrrq!*!)'EJ!!!!#!*!%%*B!N"S"ek)!N"m\r%!*!&G'9cG&p6G(*TEQG*6bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9'K%EA!\r!N!Lf*N-6YLC$%`!!!Q3!!!9U!*!)Zp-09J!%15m!"$Np!!-!!2rrrri!N!JCmJ!\r!!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0d,RKYE#j[GA4'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)YJNp-,E"b*X!!!CB!!!BI!#3#%lUc"%!"$N[!!3j5J!\r$!!$rrrrq!*!)'I%!!!!#!*!%%CB!N"S"ek)!N"m%!*!&G'9cG&pMCQG`BA*cCA)\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YJNp-EEI["3!!!)L!!!\r%k3#3#"ha3@%!"$N[!!3jD3!$!!$rrrrq!*!)'I!!!!!#!*!%$TB!N"S"ek)!N"m\r%!*!&G'9cG&pTEA"[FR3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)YJNp-EB*26%!!!$S!!!"m!#3#*M(PX8!"$N[!!3jF!!$!!$rrrrq!*!)'Hm!!!!\r#!*!%%CB!N"S"ek)!N"m%!*!&G'9cG&pYD@ePG'p[E(-ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)YT1P2ED6T6d!!!Zd!!"!9!#3#*Q"(6-!"$N[!!3\rjLJ!$!!$rrrrq!*!)'Hi!!!!#!*!%#jB!N"S"ek)!N"m%!*!&G'9cG&pcBAJZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YJNp-VCfXhd!!!&!!!!#m`#\r3#)!L+Gi!"$N[!!3jT3!$!!$rrrrq!*!)'Hd!!!!#!*!%$*B!N"S"ek)!N"m%!*!\r&G'9cG&phBACP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B8VqL\rf&+rT!!!!f!!!!Xd!N!MH24[G!!5*U3!%LF`!!`!!rrrrrJ#3#"S)!!!!!J#3""#\r@!*!D!GHL!*!I"!#3"A4PFh4IBfp`H9pbC@FZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YT1P(VF)p(S!!!Dk!!!6S`#3#*APqY%!!M*j!!)bIJ!$!!$\rrrrrq!*!)'b-!!!!#!*!%$jB!N"S"ek)!N"m%!*!&F'PMDfaPG'9cG'9b,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D6T4kfb`i*!!!&%!!!$hm!N!M\ribph4!!)bH3!#-SN!!`!!rrrrrJ#3#"XL!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4\rPFh4IAepKE'aIAbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfMRU\rrYSjk[`!!!#J!!!!J!*!)B+R[e`!#-RN!!M+4!!-!!2rrrri!N!JE)3!!!!)!N!3\r2PJ#3'J(ASJ#3(`3!N!9dCA0dAf*KFh4TEfiZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YRDcHlCfXhX!!!-N!!!9R3#3#+%2AP!!!M*j!!)bP!!$!!$\rrrrrq!*!)'b!!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9cG&pLDA0PBh3ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YSjk[lD1HVm!!!13!!!!"li!N!M\rQ+b%@!!)bH3!#-TB!!`!!rrrrrJ#3#"XI!!!!!J#3"!f@!*!D!GHL!*!I"!#3"A4\rPFh4IBR9QD@mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YU$4&lF\r)p(X!!!%'!!!"l3#3#"-F@I!!!M*j!!)bQ!!$!!$rrrrq!*!)'ai!!!!#!*!%$*B\r!N"S"ek)!N"m%!*!&G'9cG&pMBA"T,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,D1HX#fMRV!!!!"e!!!"0`!N!K0-'50!!)bH3!#-T`!!`!!rrrrrJ#\r3#"XG!!!!!J#3""5@!*!D!GHL!*!I"!#3"A4PFh4IBfKKFQeKF'0[C'9M,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D1HX#fMRV!!!!#QJ!!#d`!N!K\r1%hbl!!)bH3!#-U!!!`!!rrrrrJ#3#"XF!!!!!J#3""#@!*!D!GHL!*!I"!#3"A4\rPFh4IBfpPFQ0TEfiZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YSj\rk`,D1HX!!!!&Z!!!%"J#3##'qU6F!!M*j!!)bS3!$!!$rrrrq!*!)'aX!!!!#!*!\r%$jB!N"S"ek)!N"m%!*!&G'9cG&pMEfe`BA*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,D[DX#fVfV!!!!!1!!!!$`!N!MAhA3`!!)bH3!#-UN!!`!\r!rrrrrJ#3#"XD!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4IC'PQCQaTBLj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfVfV!YUpU`3!!!$3!!!!c!*!\r)l"+eZ!!#-RN!!M+V!!-!!2rrrri!N!JE'3!!!!)!N!32PJ#3'J(ASJ#3(`3!N!9\rdCA0dAf4[Bh4PFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YSj\rk`,D1HX!!!!'!!!!#cJ#3#+JTZ$%!!M*j!!)bV3!$!!$rrrrq!*!)'aJ!!!!#!*!\r%$jB!N"S"ek)!N"m%!*!&G'9cG&pNG@eLC'*Y,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,D1HX'f`FLE!!!%-!!!$d!!N!KS-PD!!!)bH3!#-V8!!`!\r!rrrrrJ#3#"XA!!!!!J#3""'@!*!D!GHL!*!I"!#3"A4PFh4ICR9ZBf&dG(*c,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,BL895h#24m!!!"L!!!!f`\r!N!L'`-Q[!!)bH3!#-XB!!`!!rrrrrJ#3#"X@!!!!!J#3"!q@!*!D!GHL!*!I"!#\r3"A4PFh4IE@&TE'*[H#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rfMRV$YSjk``!!"DJ!!"Ja!*!)1hLaX3!#-RN!!M,L!!-!!2rrrri!N!JE&3!!!!)\r!N!32PJ#3'J(ASJ#3(`3!N!9dCA0dAh*TBfKMEA!ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)YSjka,F)p(d!!!+U!!!(#!#3#,lLE"8!!M*j!!)bm3!\r$!!$rrrrq!*!)'a-!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9cG&pcG@jNFRNZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YU$4'EDkSqX!!!#8!!!!h`#\r3#(-mTHX!!M*j!!)bm`!$!!$rrrrq!*!)'a)!!!!#!*!%%*B!N"S"ek)!N"m%!*!\r&G'9cG&pcH@edB@*XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rfMRV%Y`MdI3!!"!)!!!Nh!*!)!cq23!!#-RN!!M,e!!-!!2rrrri!N!JE%3!!!!)\r!N!3BPJ#3'J(ASJ#3(`3!N!9dCA0dAh4SFQ9KC'9NG'9YF'CTE'8ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YU$4'VF)p(i!!!JJ!!!RMJ#3#0q%p"J\r!!M*j!!)c"!!$!!$rrrrq!*!)'a!!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&p\rhC@&VFQ9Q,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D1HX@fMRV\r&!!!"I!!!!mi!N!JaJq9b!!)bH3!#-`J!!`!!rrrrrJ#3#"X2!!!!!J#3""'@!*!\rD!GHL!*!I"!#3"A4PFh4IH(*PB@4XD@jP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,D1HX@fMRV&!!!"hJ!!""F!N!JAp+$0!!)bH3!#-``!!`!!rrr\rrrJ#3#"X1!!!!!J#3"!b@!*!D!GHL!*!I"!#3"A4PFh4MEf4PBbj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf`FLEYXA5!`!!!M)!!!G2!*!),p!Pd!!\r(*pi!"bI[!!-!!2rrrri!N!JF+J!!!!)!N!35PJ#3'J(ASJ#3(`3!N!9dCA0dAep\rICR9dGA*PAemZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YX()QlE\rKQ$d!!!HS!!!DRJ#3#!qARFm!"bIH!!FS+!!$!!$rrrrq!*!)(#N!!!!#!*!%$jB\r!N"S"ek)!N"m%!*!&G'9cG&pTER0`C@0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,E&dJ1h#2mC!!!"+J!!!eS!N!J,Q9YJ!!Gi$J!(H%`!!`!!rrr\rrrJ#3#"a`!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4ICR9dGA*P,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,E&dJ1fhAY*!!!!R!!!!1)!N!Md,25\r'!!Gi$J!(H%d!!`!!rrrrrJ#3#"a[!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4\rICR9dGA*P-5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfaG)$YXA\r5!`!!!(!!!!#8!*!)iGTNm`!(H!i!"hK1!!-!!2rrrri!N!JFEJ!!!!)!N!32PJ#\r3'J(ASJ#3(`3!N!9dCA0dAfCeG(9bC6)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y`Mr'EF)raN!!!"`!!!!U3#3#%Q4%JX!"hJ1!!Gi6`!$!!$rrrr\rq!*!)('d!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&pQGA4eFQ8c,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F)raQh#2mC!!!!E!!!!*B!N!Jq'45\rm!!Gi$J!(H&!!!`!!rrrrrJ#3#"aX!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4\rICR9dGA*P0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#2mCY`M\rr'3!!!(!!!!#e!*!)Tpkj"`!(H!i!"hK4!!-!!2rrrri!N!JFD`!!!!)!N!32PJ#\r3'J(ASJ#3(`3!N!9dCA0dAfCeG(9bC68ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y`Mr'EF)raN!!!"f!!!!RJ#3#1%N)i!!"hJ1!!Gi8J!$!!$rrrr\rq!*!)('S!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&pQGA4eFQ8f,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F)raQh#2mC!!!!I!!!!-%!N!MEbbk\rK!!Gi$J!(H&-!!`!!rrrrrJ#3#"aT!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4\rICR9dGA*P0bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfaG)$YXA\r5!`!!!A)!!!2L!*!)*Aq6(3!(H!i!"hKC!!-!!2rrrri!N!JFD!!!!!)!N!31PJ#\r3'J(ASJ#3(`3!N!9dCA0dAfGXEf*KE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!LfaG)%Y`MdI3!!#!!!!"kV!*!)Q8+MN3!(H!i!"hL&!!-!!2rrrri\r!N!JFC`!!!!)!N!30PJ#3'J(ASJ#3(`3!N!9dCA0dAh0MEh"P,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F)raLh#2mB!!!!+J!!!#%!N!MYJHNa!!J\rmd!!)208!!`!!rrrrrJ#3#"aq!!!!!J#3"!U@!*!D!GHL!*!I"!#3"@j[Bf&bCA3\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YYel5EEGHdN!!!,H!!!\r(-3#3#-5)lV-!#$c3!!Jmr!!$!!$rrrrq!*!)((d!!!!#!*!%$jB!N"S"ek)!N"m\r%!*!&G'9cG&pMEfe`E'9i,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,EI["5fhl`8!!!"K!!!",m!N!J%pEMT!!Jmd!!)23d!!`!!rrrrrJ#3#"am!!!\r!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4ICQjYBA4MD#j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lfhl`9Y`Mr'3!!!J!!!!8i!*!)5UZk@!!)20!!#$e\rH!!-!!2rrrri!N!JFH`!!!!)!N!34PJ#3'J(ASJ#3(`3!N!9dCA0dAh4bB@0PBQ&\rMDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#24kY`MdHJ!!!PJ\r!!!A+!*!)hLrEF`!)SFS!#+(I!!-!!2rrrri!N!JFXJ!!!!)!N!33PJ#3'J(ASJ#\r3(`3!N!9dCA0dAf&cH@jMD'&d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,F)p(bh#24m!!!"DJ!!!Y`!N!JVplb&!!LKbJ!)SKi!!`!!rrrrrJ#3#"b\ra!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4ID(4dF'aTBLj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#24mY`MdI!!!!E`!!!@,!*!)%Y#!U!!)SFS\r!#+)P!!-!!2rrrri!N!JFX!!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAfa[Bf&\rXC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eqY`MdF`!!$rJ\r!!%D2!*!)dj6mqJ!!!+N!!Hl2!!)!!2rrrri!N!J8qJ!!!!)!N!3-PJ#3'J'rSJ#\r3(`3!N!9dD(*PB@4TEQFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aGIlE&dI`!!!48!!!,U!#3#+G'i*-!!!#T!!(Zd!!#!!$rrrrq!*!)&2X!!!!\r#!*!%#CB!N"S"[k)!N"m%!*!&G'pKD@CQ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mAAqfVfUb!!!&"J!!#dX!N!MdR#Ef!!!!U3!"lY%!!J!!rrr\rrrJ#3#"6m!!!!!J#3"!L@!*!D!EqL!*!I"!#3"A4[Df9Z,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mAB#fiCJa!!!-(!!!*pi!N!J6(2j1!!!!U3!\r"lY)!!J!!rrrrrJ#3#"6p!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"A4[Df9ZDATP,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAB#h#24c!!!,*!!!+33\r!N!K-&"p2!!!!U3!"lY-!!J!!rrrrrJ#3#"6q!!!!!J#3"!b@!*!D!EqL!*!I"!#\r3"A4bB@0PBQ&MDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&f\r!YXA4r3!!!AJ!!!0[!*!)kDTAA!!!!+N!!Hl8!!)!!2rrrri!N!J8r`!!!!)!N!3\r'PJ#3'J'rSJ#3(`3!N!9dG(NZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aGJ,83$f-!!!)m!!!&6`#3#1pJhLm!!!#T!!(Ze3!#!!$rrrrq!*!)&3#\r3"!)!N!3)PJ#3'J'rSJ#3(`3!N!9dHA"PFbj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&f"YYel4!!!",`!!!fQ!*!))BCpYJ!!!+N!!Hl@!!)!!2r\rrrri!N!J9!3!!!!)!N!3+PJ#3'J'rSJ#3(`3!N!9dHR"KFR0P,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAB'h#24d!!!`UJ!!ZIF!N!Mc33A-!!!\r!U3!"lYF!!J!!rrrrrJ#3#"8#!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"A9bE'aTBLj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LdaHTkY`MdG!!!+5)!!**\rA!*!)Xle`l3!!!+N!!HlB!!)!!2rrrri!N!J9!`!!!!)!N!3+PJ#3'J'rSJ#3(`3\r!N!9eFQaXD@)b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAB'\rfaG(p!!!*bJ!!)G`!N!KJ&0LQ!!!!U3!"lYN!!J!!rrrrrJ#3#"8%!!!!!J#3"!Z\r@!*!D!EqL!*!I"!#3"A9bE("KFR0P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,,mAB'e%!pM!!!#a!!!"E`!N!K16,T,!!!!U3!"lYS!!J!!rrrrrJ#\r3#"8&!!!!!J#3"!H@!*!D!EqL!*!I"!#3"A9cCA)ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)X[aGBEF)ra-!!!(-!!!'*3#3#,-(6j-!!!#T!!(Zf`!\r#!!$rrrrq!*!)&3B!!!!#!*!%#jB!N"S"[k)!N"m%!*!&9A0PFN4TBh3ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGBEDkSq-!!!,d!!!0aJ#3#0R\rZrIm!!!#T!!(Zh!!#!!$rrrrq!*!)&3F!!!!#!*!%#jB!N"S"[k)!N"m%!*!&9A0\rPFNaTFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!2BED6T3S\r!!!GH!!!GDJ#3##"6NcJ!!!#T!!(Zh3!#!!$rrrrq!*!)&3J!!!!#!*!%$CB!N"S\r"[k)!N"m%!*!&9A0PFP0dFQPZCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&f#YXA4rJ!!#'i!!"AH!*!))PJIc`!!!+N!!HlH!!)!!2rrrri!N!J\r9#3!!!!)!N!3&PJ#3'J'rSJ#3(`3!N!9eG5j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&f#YXA4rJ!!$fB!!%80!*!)3YEYQ3!!!+N!!HlI!!)!!2r\rrrri!N!J9#J!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9hBACP,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mAB+fhAY%!!!#fJ!!#$!!N!Lham(J!!!!U3!\r"lZ!!!J!!rrrrrJ#3#"8,!!!!!J#3"!U@!*!D!EqL!*!I"!#3"AGSD@0SC')ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGJVD1HVF!!!DX!!!5UJ#\r3#*T3,DX!!!#T!!(Zi3!#!!$rrrrq!*!)&3`!!!!#!*!%#jB!N"S"[k)!N"m%!*!\r&GfKbB@jNEfdZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGJVE\r&dIi!!!FF!!!F@`#3#2S$*Bi!!!#T!!(ZiJ!#!!$rrrrq!*!)&3d!!!!#!*!%#CB\r!N"S"[k)!N"m%!*!&H'4bE'PL,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mAB1fhAY&!!!GGJ!!L'J!N!Mfa6R4!!!!U3!"lZ-!!J!!rrrrrJ#3#"8\r1!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"AKYE'aTBLj`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Le%!pMY`MdG!!!&qB!!&eJ!*!)02V3j!!!!+N!!HlN!!)\r!!2rrrri!N!J9$`!!!!)!N!3+PJ#3'J'rSJ#3(`3!N!9kDA"QD@aP,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@!+BLfNk8,!!!#4J!!"@!!N!J+RNJ\r(!!1)9!!$L&N!!J!!rrrrrJ#3#"MV!!!!!J#3"!Q@!*!D!ErL!*!I"!#3"@&dCAK\rTG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+fbY`MdE!!!))i\r!!'&0!*!))FI+$J!$L&3!!iKY!!)!!2rrrri!N!JBkJ!!!!)!N!3*PJ#3'J'riJ#\r3(`3!N!9$EfpVD@8ZF(P%9N08!*!3Y`[&!VF,a3)!!!%#!!1)9!!!!!%!N"`Bk3!\r!!!)!!J#3"!B!!!!)"!F!N"X"[k)!N#0MGA*cCA0'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YB1L0,F)p(8!!!,`!!!'D3#3#"9D"Ni!!iMU!!1)k`!$!!$\rrrrrq!*!)'1J!!!!#!*!%#jB!N"S#4+)!N"m%!*!&AepTEQPdAemZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L0,CfXh)!!!0'!!!*C3#3#1%KL&m\r!!iMU!!1)l!!$!!$rrrrq!*!)'1F!!!!#!*!%#*B!N"S#4+)!N"m%!*!&BA0MD@N\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YDa5(E@X8Kd!!!A-!!!\r@B3#3#!rdp13!!iMU!!1)l3!$!!$rrrrq!*!)'1B!!!!#!*!%#TB!N"S#4+)!N"m\r%!*!&D'&cAfYPH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeJk)\rdYE#T9!!!"b!!!"IT!*!)l"T$S`!$L1S!!iMZ!!-!!2rrrri!N!JBj3!!!!)!N!3\r+PJ#3'J*%SJ#3(`3!N!9dCAKdF'&N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,@$SM5eZD9k!!!$CJ!!"l`!N!J"`Z8@!!1)kJ!$L1m!!`!!rrrrrJ#\r3#"MN!!!!!J#3"!U@!*!D!N5L!*!I"!#3"AGbBA"`CA)ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)YRDcFlCfXh-!!!#'!!!!SJ#3#(2T%XX!!M(*!!)\rac3!$!!$rrrrq!*!)'`d!!!!#!*!%#*B!N"S#4+)!N"m%!*!&F'&ZC@`ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YGXe6VD6T4-!!!h#!!!PX3!!!()\r!!!'D(D,je`!$L&3!!iKp!!)!!2rrrri!N!JBi`!!!!)!N!3+PJ#3'J'riJ#3(`3\r!N!9RCA4dCAKd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@!+BU\rh#24[!!!H,!!!BC%!N!KZl#[A!!1)9!!$L)F!!J!!rrrrrJ#3#"ML!!!!!J#3"!U\r@!*!D!ErL!*!I"!#3"@PYF(9dD@`ZF(P%9N08!*!3YV"033#3"J%#!!1)9!!!!!%\r!N"`Bi3!!!!)!!J#3"!d!!!!)"!F!N"X"[k)!N#0`E'&d,@CbC@9LFf3d4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AE0@kefc9Z!!!$,!!!#"m!N!J'MRE\r3!!1+#`!$LJ`!!`!!rrrrrJ#3#"MJ!!!!!J#3"!L@!*!D!N1L!*!I"!#3"8C$6P4\r-,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AE0@kefc9Z!!!)qJ!\r!(Q%!N!K-0(lf!!1+#`!$LJd!!`!!rrrrrJ#3#"MI!!!!!J#3"!@@!*!D!N1L!*!\rI"!#3"8P1,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,AE0@kefc9\rZ!!!!G!!!!3`!N!KV![lK!!1+#`!$LJi!!`!!rrrrrJ#3#"MH!!!!!J#3"!@@!*!\rD!N1L!*!I"!#3"A*PCf9Z4&C$9!#3%,D`68)!N!B"!J!$L&3!!!!"!*!F'0X!!!!\r#!!)!N!30!!!!#!3(!*!E!EqL!*!MF'aKG#eQFQ9PBR0N08C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lefc9ZYGXeEJ!!!cB!!!Jf!*!)9)%*b`!$LK%!!iS\r5!!-!!2rrrri!N!JBfJ!!!!)!N!3)PJ#3'J*#SJ#3(`3!N!9'3dj86#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lefc9ZYGXeEJ!!#2S!!"jK!*!)6$4\rqpJ!$LK%!!iS6!!-!!2rrrri!N!JBf3!!!!)!N!3&PJ#3'J*#SJ#3(`3!N!9*6Lj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lefc9ZYGXeEJ!!!(3!!!%\r-!*!)D`,qi3!$LK%!!iS8!!-!!2rrrri!N!JBf!!!!!)!N!3&PJ#3'J*#SJ#3(`3\r!N!9bC@GPENC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeJTGAYYel3`!\r!&r3!!&iY!*!)Ei8Lm!!$L&3!!iLP!!)!!2rrrri!N!JBe3!!!!)!N!3'PJ#3'J'\rriJ#3(`3!N!9`FQ8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFL\rYXlF)p()!!!S@!!!Ga!#3#!DYRP-!!iK8!!1)`3!#!!$rrrrq!*!)'03!!!!#!*!\r%#CB!N"S"[q)!N"m%!*!&FfpMDf9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,@43U#h#24d!!!05J!!,4J!N!MY8H(Y!!1)9!!$L13!!J!!rrrrrJ#\r3#"M6!!!!!J#3"!f@!*!D!ErL!*!I"!#3"AGPBQ*bEhGcCA)ZF(P%9N08!*!3Y`[\r&*lF,a5J!!!%#!!1)9!!!!!%!N"`BdJ!!!!)!!J#3"!-!!!!)"!F!N"X"[k)!N#0\riE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L0lF)p)!!!!)f!!!\r$m`#3#'Y#"0%!!iYD!!1,@`!$!!$rrrrq!*!)'0%!!!!#!*!%#jB!N"S#2k)!N"m\r%!*!&AepTEQPdAemZF(P%9N08!*!3Y`[&*lF,a5F!!!%#!!1,@J!!!!%!N"`Bd!!\r!!!-!!J#3"!-!!!!)"!F!N"X#2k)!N#0NEfe'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)YB1L0lDmS(d!!!6`!!!0NJ#3#*ViN!#9!!1,A!!$Led!"!!!rrr\rrrJ#3#"M2!!!!!J#3"!Z@!*!D!N'L!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@$SMHh#25!!!!BIJ!!G`%!N!LfHd[F!!1\r,A!!$Lei!"!!!rrrrrJ#3#"M1!!!!!J#3"!U@!*!D!N'L!*!I"!#3"@eTEQPNEfd\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L0lEKQ%%!!!Lm!!!\rRR`#3#+UC+$%!!iYF!!1,A`!%!!$rrrrq!*!)'-d!!!!#!*!%#TB!N"S#3D)!N"m\r%!*!&F(9XE'4[E5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf[+"\rpYVbJI3!!"$)!!!X-!*!)!b'kH`!(+2X!"bMp!!3!!2rrrri!N!JF+!!!!!)!N!3\r*PJ#3'J*"SJ#3(`3!N!9NEfebC@FZF(P%9N08!*!3YV"06J#3"J%#!!1,@J!!!!%\r!N"`Bc!!!!!-!!J#3"!F!!!!)"!F!N"X#2k)!N#0`BA*cCA*c4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,@ZCCDeVQ@@!!!!K!!!!+F!N!Kk!qQh!!1,B!!\r$Lf%!"!!!rrrrrJ#3#"M,!!!!!J#3"!Z@!*!D!N#L!*!I"!#3"9pID@jTG&pI,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B*265f#6dd!!!!DJ!!!(!\r!N!KCD%h0!!3k)3!%1L-!"!!!rrrrrJ#3#"RX!!!!!J#3"!L@!*!D!N#L!*!I"!#\r3"@9iF'&d,R"j4&C$9!#3%,EQVk+fjUqL!!!"!J!$LeS!!!!"!*!F'-S!!!!$!!)\r!N!3$!!!!#!3(!*!E!MqL!*!MFf&i4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,@$SMLf)P&C!!!%iJ!!$D3!N!J(2'Ra!!1,BJ!$Lf-!"!!!rrrrrJ#3#"M\r*!!!!!J#3"!Z@!*!D!MkL!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,@$SMLfiCK#!!!'"J!!%MB!N!McUAkE!!1,BJ!$Lf3\r!"!!!rrrrrJ#3#"M)!!!!!J#3"!k@!*!D!MkL!*!I"!#3"9pPH'0PF(4TEfjc,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@$SMLfQ,,j!!!)-J!!)%%\r!N!KD`p*r!!1,BJ!$Lf8!"!!!rrrrrJ#3#"M(!!!!!J#3"!k@!*!D!MkL!*!I"!#\r3"@9iF'&dFQ9KC'9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@\r$SMLf)P&C!!!14J!!-`)!N!MDV@"k!!1,BJ!$LfB!"!!!rrrrrJ#3#"M'!!!!!J#\r3"!U@!*!D!MkL!*!I"!#3"@KKEQ4XCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)YB1L1,CfXhi!!!I3!!!G$!#3#%Pp1hB!!iYL!!1,C`!%!!$rrrr\rq!*!)'-8!!!!#!*!%#jB!N"S#2U)!N"m%!*!&Ff&iGA4TE(-ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L1,EGHdX!!!e#!!!a*!#3#&pdIrX!!iY\rL!!1,D!!%!!$rrrrq!*!)'-3!!!!#!*!%$*B!N"S#2U)!N"m%!*!&H'eXFQ9KC'9\rb,R"j4&C$9!#3%,D`68%!N!B""!!%0qJ!!!!"!*!F'HX!!!!#!!)!N!3+!!!!#!3\r(!*!E!EqL!*!MF'aKG#eLC@pc08C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lf#6dZYJNp,J!!!eS!!!Q%!*!)N!!@TQ!!"$NC!!3j'J!$!!$rrrrq!*!)'HS\r!!!!#!*!%#*B!N"S#D+)!N"m%!*!&4N019%`ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YJNp,lB*25m!!!Hb!!!Je3#3##"Nl*J!"$NC!!3j'`!$!!$\rrrrrq!*!)'HN!!!!#!*!%"CB!N"S#D+)!N"m%!*!&58iZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)YJNp,lB*25m!!!#F!!!!q`#3#)1PUR)!"$NC!!3\rj(!!$!!$rrrrq!*!)'HJ!!!!#!*!%"CB!N"S#D+)!N"m%!*!&FQ9RC@j'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YUpUTlDkSq3!!"h3!!"ai`#3#")-2S%\r!!M%J!!)a23!#!!$rrrrq!*!)'``!!!!#!*!%#TB!N"S"[q)!N"m%!*!&C'PQCQa\rTBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfMRUZYYqm$`!!+pi\r!!)kG!*!)9Kj+'3!#-5!!!M&!!!)!!2rrrri!N!JE#`!!!!)!N!3+PJ#3'J'riJ#\r3(`3!N!9NEf0dCA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D\rJd3fh#24a!!!8XJ!!4(J!N!K,@bdD!!)a)!!#-CX!!J!!rrrrrJ#3#"X+!!!!!J#\r3"!L@!*!D!ErL!*!I"!#3"A0YG("N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,CfXfkfaG(q!!!*PJ!!(fJ!N!KS5f'8!!)a)!!#-F!!!J!!rrrrrJ#\r3#"X*!!!!!J#3"!Z@!*!D!ErL!*!I"!#3"AGKFQjTEQGc,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,DJd3kh#2m8!!!%5!!!%M3!N!L%S"BD!!)a)!!\r#-F)!!J!!rrrrrJ#3#"X)!!!!!J#3"!U@!*!D!ErL!*!I"!#3"AGPB@YbC@BZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YX()PVEGHd%!!!0!!!!)83#\r3#,4MmPB!"bD3!!!(*T%!!J!!rrrrrJ#3#"`R!!!!!J#3"!f@!*!33!#3#3'riJ#\r3(`3!N!9IAfCeG(9bC9pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,E"b*Dh#24[!!!E%!!!D(m!N!Le`H!S!!FQN!!!"bE(!!)!!2rrrri!N!JF*J!\r!!!)!N!3+PJ#3%%!!N!N"[q)!N"m%!*!&D@jcF'9MG#j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lf`FLAY`MdF3!!5[`!!5Ke!*!)MSAd!3!(*T!!!!F\rQl!!#!!$rrrrq!*!)(#8!!!!#!*!%#*B!N""!!*!*!ErL!*!I"!#3"A"jC'pM,R"\rj4&C$9!#3%,F,a3fh#m8-!!!""`!(GTN!!!!"!*!F('B!!!!#!!)!N!3,!!!!#!3\r(!*!E!EqL!*!MF'aKG#ebDA0MEh0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)YXA5!EEGHdJ!!!'X!!!&-J#3#&i%h2-!"hIM!!Ghj!!$!!$rrrrq!*!)('8\r!!!!#!*!%%*B!N"S#UD)!N"m%!*!&FQPcBfpcC@jfDA*[ELj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!LfaG)"Y`MdH!!!$5!!!#&@!*!)ZG#&[!!(Gq-\r!"hIP!!-!!2rrrri!N!JFC!!!!!)!N!30PJ#3'J+TSJ#3(`3!N!9bDA0MEh0`BA4\rS,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,E&dJ+faG)#!!!$[J!\r!#@d!N!L',2Mb!!Ghi`!(GqB!!`!!rrrrrJ#3#"aM!!!!!J#3"!f@!*!D!UQL!*!\rI"!#3"A*[GA*X-R"KG'JZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)YXA4qVE&dIS!!!%)!!!"S!#3#-,I0(X!"hDC!!Gh(J!#!!$rrrrq!*!)(')!!!!\r#!*!%#TB!N"$J!*!*!Erc!*!I"!#3"94&8Ne*6e-ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)YZ'B-EF)p()!!!IJ!!!H83#3#-I%Adi!#$YB!!JlfJ!\r#!!$rrrrq!*!)((S!!!!#!*!%#jB!N"$J!*!*!Erc!*!I"!#3"A0jEA4KBQaP,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,EI["#h#24c!!!E+!!!B3`\r!N!KZ'F$#!!Jl@!!)1qF!!J!!rrrrrJ#3#"aj!!!!!J#3"!Z@!*!3i!#3#3'rm`#\r3(`3!N!9eEQPdG'9cG#j`H84@3e3!N!J$i!)J!3m""lF,a5Lh#m9)!!!!``!!!(3\r!!!!"!*!F&4!!!!!"!!)!N!3$!!!!#!3(!*!4i!#3#3',iJ%!N#*0B@0'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%,,F,S0!!!!%)!!!"R`#3#+he2,i\r!!!$$!!(a#`!#!!$rrrrq!*!)&4%!!!!#!*!%%*B!N"S"fD)!N"m%!*!&Af0SC@0\rVGQ9bFfP[ELj`H84@3e3!N"#h#m8TY`[&,!!!!-3!!!$$!!!!!3#3("85!!!!!J!\r#!*!%"`!!!!J%"`#3'`(CSJ#3)d0[ER4bD@*%9N08!*!3YV"08!#3"m8!!!$%!!!\r!!3#3("86!!!!!`!#!*!%$`!!!!J%"`#3'`(DSJ#3)d&&3f&`G(9bC9"KFR0PFNC\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le*r4VY5IdD`!!$dB!!#b6!*!\r)K@6E`J!!!-8!!I%4!!3!!2rrrri!N!J9&!!!!!)!N!35PJ#3'J(ESJ#3(`3!N!9\r"480KF(4eFQ93BA*cCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!\r)Y5Ie*E8Rp58!!!#U!!!!l3!!!43!!!@Z,8BhEJ!!!-8!!I%5!!3!!2rrrri!N!J\r9&3!!!!)!N!3+PJ#3'J(ESJ#3(`3!N!9bC@&NE@8ZG(Kd4&C$9!#3%,E83pB!N!I\r'!!!!a!!!!!%!N"`9&J!!!!-!!J#3"!3!!!!)"!F!N"X"fU)!N#0#3P"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AM,bkeibmZ!!!&1!!!$0`!N!K@VUm\r,!!!!aJ!"m43!"!!!rrrrrJ#3#"8A!!!!!J#3"!k@!*!D!GbL!*!I"!#3"9"jG'K\r[EP0XBACP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,A4%QfcqM\rK!!!#Z!!!"2N!N!Me#3*5!!!!aJ!"m48!"!!!rrrrrJ#3#"8B!!!!!J#3"!D@!*!\rD!GbL!*!I"!#3"9*&384048C@3e3!)b!!N!3))!!J!3#3#!F!N")"3N*B9&)UBfJ\r!N!LcfQ%MXpTK)`#3#J91!!!*24,ZN@3!!M1T!!)cV!!%!!$rrrrq!*!)'`F!!!!\r#!*!%$CB!N"S"h+)!N"m%!*!&8R9Z)'&c)&"jG'K[EN4@3e3!N"#fXKS*!*!(c3!\r!!-3!!!!"!*!F&5J!!!!$!!)!N!3%!!!!#!3(!*!E!GUL!*!MEh0KE8C@3e3!N!F\r))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,,[@+UfPF!c!!!)aJ!!&-`!!!"S!!!\r"MYI"hUS!!!$0!!(a*J!%!!$rrrrq!*!)&5N!!!!#!*!%$*B!N"S"ik)!N"m%!*!\r&6e0"E5j`F'-ZFfaL4&C$9!#3%,F,a5Zh#m8U!!!!cJ!!!-3!!!!"!*!F&5S!!!!\r$!!)!N!31!!!!#!3(!*!E!GUL!*!M8(PdD'pZ4'9dC@0dEh*'9N08!*!(##!!!!%\r!N!J(!*!5!@PMEfj038063!#3"l0%+jbc4#ZF!*!,aJ!!!HDdp!&b!!E$)J!'`b-\r!"!!!rrrrrJ#3#"Zf!!!!!J#3"!@@!*!D!H5L!*!I"!#3"8PMEfi04PC$9!%"J!#\r3"!JJ!#!"!*!)"`#3%J&[Ff&c9'pj8`#3#,EQe6#fjY8`!*!+(9i!!$03BB'Er!!\r!!-i!!I%T!!3!!2rrrri!N!J9,!!!!!)!N!30PJ#3'J(NSJ#3(`3!N!92F'9Z8(P\rdD'pZ6'PL4PC$9!%"J!#3"!JJ!#!"!*!)"`#3%J&[Ff&c9'pj8`#3#,EQe6#fjY8\r`!*!+(I`!!$@lFXF&)!!!!-i!!I%U!!3!!2rrrri!N!J9,3!!!!)!N!39PJ#3'J(\rNSJ#3(`3!N!92F'9Z8(PdD'pZ6'PL)(GTG'JJ6P0'9N08!*!(##!!!!%!N!J(!*!\r5!@4dC'*cG'3e!*!)YZE9-EEQe6%!N!SM,J!!Dd8$Q3*D!!!!cJ!"m5X!"!!!rrr\rrrJ#3#"8Z!!!!!J#3"!k@!*!D!H5L!*!I"!#3"9"jG'K[EN4PG'9MG'pb4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,0+0e+c5MG5!!!%0!!!#D8!!!&5!!!\r"I[L)%G!!!!$1!!(a,!!%!!$rrrrq!*!)&5m!!!!#!*!%#TB!N"S"j+)!N"m%!*!\r&FQ9KC'eP,R4iG%4@3e3!N"#fX%e3!*!(c`!!!-3!!!!"!*!F&6!!!!!$!!)!N!3\r-!!!!#!3(!*!E!GUL!*!M8(PdD'pZ8f0bDA"d4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,A4&'fA%cI!!!0eJ!!+Ti!N!LG6kUZ!!!!c`!"m5i!"!!!rrr\rrrJ#3#"8a!!!!!J#3"!U@!*!D!H@L!*!I"!#3"@*KCA"KBfXZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%8E,A4&%!!!X'!!!GA!#3#02$H")!!!$\r2!!(a,`!%!!$rrrrq!*!)&6)!!!!#!*!%#jB!N"S"jD)!N"m%!*!&BQ&PG'p[E(-\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%8ECF6-S!!!i`!!!\rcpJ#3#!1B91d!!!$2!!(a-!!%!!$rrrrq!*!)&6-!!!!#!*!%#jB!N"S"jD)!N"m\r%!*!&BQ&PG(P`CA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG\r%8E,A4&%!!!eD!!!QK`#3#$L[hA-!!!$2!!(a-3!%!!$rrrrq!*!)&63!!!!#!*!\r%#TB!N"S"jD)!N"m%!*!&Cf9dB@9dC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbed44XYG%8J!!$)`!!#(P!*!)fDU&EJ!!!-m!!I%b!!3!!2rrrri\r!N!J903!!!!)!N!3-PJ#3'J(PSJ#3(`3!N!9`FQPZG'&PG'8ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%8,,A4&!!!!%`!!!#8`#3#12b(BJ!!!$\r2!!(a-`!%!!$rrrrq!*!)&6B!!!!#!*!%$jB!N"S"jD)!N"m%!*!&8(P6Bh*TF(4\r8CA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&'bed44!!!\r+eJ!!(lm!N!K*--Ch!!!!c`!"m63!"!!!rrrrrJ#3#"8h!!!!!J#3"!q@!*!D!H@\rL!*!I"!#3"9"jG'K[EP0MFQP`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4\rdH(3!N!Lbr'kKX[aZS3!!"0S!!!Sb!*!)EEHGC`!!!-m!!I%e!!3!!2rrrri!N!J\r91!!!!!)!N!3+PJ#3'J(PSJ#3(`3!N!95C@&N6@8ZG(Kd4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,A4&+bed45!!!#'J!!"'8!N!J$AHZ,!!!!c`!"m6B\r!"!!!rrrrrJ#3#"8j!!!!!J#3"!f@!*!D!H@L!*!I"!#3"A4PFh4PG@4[FQ%ZF(P\r%9N08!*!3Y`[&+lF,a5X!!!$5!!!!a!!!!!%!N"`92`!!!!-!!J#3"!J!!!!)"!F\r!N"X"fU)!N#06D'9bE'pMDdC@3e3!N!F))!!!!3#3#!F!N")"DA0cF'CZC'B!N!L\rfjY8bYZE9-J!!!9)!!!)d!!!#c!!!#QiFcX5!!!!!dJ!"m6d!"!!!rrrrrJ#3#"9\r!!!!!!J#3"!q@!*!D!HLL!*!I"!#3"9"jG'K[ELeNEf0c,R0bBdC@3e3!N!F))!!\r!!3#3#!F!N")"DA0cF'CZC'B!N!LfjY8bYZE9-J!!!8J!!!)b!!!#fJ!!#Qk+0bb\r'!!!!dJ!"m6i!"!!!rrrrrJ#3#"9"!!!!!J#3"!k@!*!D!HLL!*!I"!#3"9"jG'K\r[ELe'39%ZFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&TFh0`CQjNCJ#3#,EQe6+fjY8\rb!!!"AJ!!!RB!!!,@!!!+LJphcCJ!!!$5!!(a2`!%!!$rrrrq!*!)&8)!!!!#!*!\r%#TB!N"S"k+)!N"m%!*!&8(PdD'pZ,R0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9(4dH(3!N!Lbed45XYG%8J!!!@i!!!**!*!),qNhD`!!!0)!!I&!!!3!!2rrrri\r!N!J93`!!!!)!N!3+PJ#3'J(SSJ#3(`3!N!9bC@&NE@8ZG(Kd4&C$9!#3%,Db'JN\r!N!B"!`!$dES!!!!"!*!F'EF!!!!$!!)!N!3-!!!!#!3(!*!E!GUL!*!M5@eKCf9\r)C@a`CA*c4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,Aa0pbem6IF!!!\r#"!!!"&)!N!M[@5H4!!3FS!!%(+%!"!!!rrrrrJ#3#"Qf!!!!!J#3""1@!*!D!PZ\rL!*!I"!#3"89iG&"TH%eKF&GbBA"`CA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)YI%hh,Aa0p`!!!Y#!!!Ga`#3#&ZHk08!""bJ!!3FSJ!%!!$rrrr\rq!*!)'E8!!!!#!*!%#jB!N"S#@k)!N"m%!*!&5@eKCf90B@-ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)YI%hh,Aa0p`!!!L!!!!I3!#3#!blp6m!""b\rJ!!3FS`!%!!$rrrrq!*!)'E3!!!!#!*!%$CB!N"S#@k)!N"m%!*!&6@pfD@99G'P\rXFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lem6IZYI%hlJ!!!Li\r!!!2@!*!)"c#Zj`!%(+!!""bN!!3!!2rrrri!N!JCX`!!!!)!N!3'PJ#3'J*ESJ#\r3(`3!N!95C@&N6@9%9N08!*!3YV"083#3"J%&!!49D!!!!!%!N"`Cq3!!!!-!!J#\r3"!J!!!!)"!F!N"X"fU)!N#0cG(*`G'PYC8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lf#r14YJ[cQ`!!#bJ!!"k1!*!)+QlIk`!%9Bm!"&@3!!!%!!$rrrr\rq!*!)'IJ!!!!#!*!%#jB!N"S#DD)!N"m%!*!&Fh4bF(4TE@8ZF(P%9N08!*!3YV)\rD#J#3"J%'!!)cT3!!!!%!N"`E"3!!!!-!!J#3"!S!!!!)"!F!N"X"fU)!N#08B@*\rME'9KEQ9b4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,CfYJ+fGVB#!!!\r&V!!!$eX!N!J`8U16!!)cc`!#-p!!"!!!rrrrrJ#3#"X%!!!!!J#3"!f@!*!D!RH\rL!*!I"!#3"94KBQ0XC@&ZCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0\rS!*!)YRDf!ECfYJ)!!!2f!!!(a`#3#01C2$-!!M22!!)cd3!%!!$rrrrq!*!)'`-\r!!!!#!*!%%CB!N"S#Gk)!N"m%!*!&9'&LBfaPB@jPFLj548&%689%9N08!*!3Y`[\r&+VF,a5N!!!%)!!I%3`!!)!%!N"`FGJ!!!!-!!J#3"!F!!!!)"!F!N"X"fU)!N#0\r#3P"j,QaY4PC$9!%!J!#3"!JJ!#!"!*!)"`#3%!8!!8*#6%e5+Q0S!*!)YXad`lE\r-IXm!!!Ni!!!8L`!!!9B!!!-(MMCCU!!(a%X!"m4-!!3!!2rrrri!N!JFG3!!!!)\r!N!3'PJ#3'J+USJ#3(`3!N!93HA4SEfj'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\rdG(Kd!*!)YXESplEcrG`!!!(#!!!$%3!!!0!!!!@Zq!Nc(!!(a%X!"m41!!3!!2r\rrrri!N!JFG!!!!!)!N!31PJ#3'J+USJ#3(`3!N!93HA4SEfj#3Na0,R4iG%4@3e3\r!N"#h#m8XY`[&-!!!!0-!!!$$!!!!!3#3("9%!!!!!J!#!*!%"!!!!!J%"`#3'`(\rCSJ%!N#*%C@e[4&C$9!#3#[q3"!%(Y`[%RlF,a*m!!!%1!!!"$!!!!!%!N"`B%`!\r!!!-!!J#3"!N!!!!)"3F!N"X#+!!"!*!LD@jdCA*cE'P`4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,,A4&Qbed4C!!!#1J!!"k8!N!MLp,eq!!!"$J!"Ubm\r!"!!!rrrrrJ#3#"J8!!!!!J#3"!k@!*!D!LS!!3#3(J8!N!9*ER4PFR0XDA"-D@)\rZBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbed4CXYG%@3!!!3B!!!)\rL!*!)ZV"hFJ!!!3i!!DX`!!3!!2rrrri!N!JB&3!!!!)!N!31PJ#3'J)U!!%!N"i\r&!*!&5@jdCA*cE'P`6'PL,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)XYG%@E,A4&N!!!F@!!!@b`#3#$)IiV%!!!%1!!'V-3!%!!$rrrrq!*!)'"B!!!!\r#!*!%%CB!N"S#+J!"!*!H"3#3"@PZG'9bFfaTF'e[C(9XC5jM4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K89@f"0J#3#,,A4&5fiCf6!!!38!!!*ri!N!M1'q4!!!!!d`!\r"m8)!!`!!rrrrrJ#3#"9&!!!!!J#3""#@!*!D!HQL!*!I"!#3"@&`F'aPFf0bDA"\rd,QKdE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&49EB%f!*!)XYG%9,F,`l3!!"q\r)!!"8M`!!!,J!!!'D!+a+13!!!0-!!I&$!!-!!2rrrri!N!J94J!!!!)!N!30PJ#\r3'J(TSJ#3(`3!N!9LG@PXC'PZCbjSG'eX4&C$9!#3%,D`69)!N!I8!!!!d`!!!!%\r!N"`94`!!!!-!!J#3"!F!!!!)"!F!N"X"kD)!N#0MB@aXC'aX4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88LTMD!#3#,-@`S'c&X+"!!!'+!!!$9J!N!J`5-@5!!!!e!!\r"m9%!"!!!rrrrrJ#3#"9)!!!!!J#3"!D@!*!D!HUL!*!I"!#3"A*PB@4YC8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lc&X+"XaE#J3!!!B3!!!,V!*!)0Yq\reY`!!!03!!I&5!!3!!2rrrri!N!J953!!!!)!N!33PJ#3'J(USJ#3(`3!N!9cB@e\r`E'9MB@aXC'aX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,-@`S'\rc&X+"!!!$+!!!$5S!N!PpilF!!!$8!!(a8`!%!!$rrrrq!*!)&8S!!!!#!*!%$TB\r!N"S"kU)!N"m%!*!&G'9cG'0KE'aNE'`ZF(P%9N08!*!3Y`[&,EF,a5d!!!$9!!!\r!d`!!!!%!N"`95`!!!!-!!J#3"!-!!!!)"!F!N"X"kD)!N#0MCfP'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%9l,A4&F!!!!m!!!!0!#3#,@'GVd!!!$\r9!!(a9J!%!!$rrrrq!*!)&8d!!!!#!*!%$TB!N"S"kk)!N"m%!*!&BfGTG'9cG#j\rMCfNZF(P'9N08!*!(##!!!!%!N!J(!*!5!A*cFQ058d9%!*!)YZE9-VEQe6)!N!S\r,9J!!(bBeSG`Z!!!!e3!"m9F!"!!!rrrrrJ#3#"91!!!!!J#3""#@!*!D!HZL!*!\rI"!#3"@0RDA4PFh3ZBfGT,R*cFQ0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)XYG%9l84HrN!!!+b!!!&Q3#3#$iZfMJ!!!$9!!(a@!!%!!$rrrrq!*!)&8m\r!!!!#!*!%$TB!N"S"kk)!N"m%!*!&FQ9KE'0RDA4PFh3ZF(P'9N08!9+!!*!%##!\r!)!%!N!J(!*!2`!F!!8&38%a3HA3i)!#3"l8"YJfe!EB0!!!$cJ!!"iJ!!"*)!!!\rUA9"kBjF!"X0@!!E$9`!%!!$rrrrq!*!)'l8!!!!#!*!%#jB!N"S"kk)!N"m%!*!\r&BfGTG'9cG#jMCfP'9N08!*!(##!!!!%!N!J(!*!5!94&@&408dP&!*!)XYG%9,8\r4Hpd!!!LL!!!6'!#3#%*m%pJ!!!$6!!(a4!!$!!$rrrrq!*!)&9!!!!!#!*!%#*B\r!N"S"kD)!N"m%!*!&BfGT,QKdE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&49EB%\rf!*!)XYG%9,AJLIF!!!2U!!!(eJ#3#+VC5b%!!!$6!!(a43!$!!$rrrrq!*!)&9%\r!!!!#!*!%#TB!N"S"k3!"!*!H"3#3"@9YBQ9N,QKdE@a%9N08!*!+rj!%!3Hh#m5\rIY`[%R`!!!3d!!!%-!!!!!3#3("J2!!!!!`!#!*!%"3!!!!J&"`#3'`)S!!%!N#*\rPE@*PC%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbed4AXYG%9`!!!Xi\r!!!@a!*!)H**5p!!!!3d!!DXX!!3!!2rrrri!N!JB%!!!!!)!N!3'PJ#3'J)T!!%\r!N"i&!*!&C'9YEbjM4PC$9!#3"`JJ!!!"!*!)"`#3%J&069"b3eG*43#3#,,A4&H\rbed4A!!!,@J!!BHm!N!Ke@Y-@!!!"$3!"Ubd!"!!!rrrrrJ#3#"J4!!!!!J#3"!f\r@!*!D!LN!!3#3(J8!N!9PE@*PC'4PE@mZF(*U4&C$9!#3%,8kFdDe1R0&!!!!eJ!\r!!0-!!!!"!*!F&9)!!!!$!!)!N!3)!!!!#!3(!*!E!HQL!*!MCAKKEA"XC6"'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%@,,A4&J!!!'k!!!%$J#3#'5\rQDE-!!!$@!!(a@J!%!!$rrrrq!*!)&9-!!!!#!*!%$*B!N"S"l+)!N"m%!*!&BfK\rPBfYdCAKd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K89@f"0J#3#,,A4&5bed4\r8!!!(BJ!!%,m!N!JH-3)!N!66!!(a4J!$!!$rrrrq!*!)&93!!!!#!*!%$CB!N"S\r"kD)!N"m%!*!&CAKKEA"XC6!ZD(4YE%4@3e3!N"#h#m8ZY`[&,3!!!0F!!!$6!!!\r!!3#3("99!!!!!`!#!*!%#!!!!!J%"`#3'`(TSJ#3)f9iB@e`E'8a4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&(58CQEfGXC3#3#,4ZiA@dEZ&f!!!*$!!!#JS!N!J8TrAT!!!\r!e`!"m9`!"!!!rrrrrJ#3#"9@!!!!!J#3"!q@!*!D!HfL!*!I"!#3"@4ZFfa[EfY\reF#da,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LdEZ&fYA@[iJ!\r!!V`!!!Bq!*!)ZM6K1`!!!0F!!I&G!!3!!2rrrri!N!J99`!!!!)!N!31PJ#3'J(\rYSJ#3(`3!N!9NER0XEfpVGA!Y-5j`H8C@3e3!N!F))!!!!3#3#!F!N")"FR0bBe*\r6483!N!LfjY8bYZE9-J#3#J'#!!!"qXkSbq8!!!$A!!(aAJ!%!!$rrrrq!*!)&9J\r!!!!#!*!%%*B!N"S"lD)!N"m%!*!&C'jcE'p[Dh9`,6%ZFR0bBdC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%e28e-!N!Lbed48Y'lKA!!!%#)!!#B3!*!)@d*9'3!!!0-\r!!I&(!!-!!2rrrri!N!J9@3!!!!)!N!30PJ#3'J(TSJ#3(`3!N!9PH'&YF'aP-5j\rSG'eX4&C$9!#3%,F,a5kh#m8Y!!!!f!!!!0-!!!!"!*!F&9S!!!!$!!)!N!3)!!!\r!#!3(!*!E!HQL!*!MCAKKEA"XC6*'9N08!*!(##!!!!%!N!J(!*!5!8G*4QC[Cfa\rP!*!)Y'lKGl4ZiAF!!!Ud!!!,U!#3#2MVdiN!!!$B!!(aB!!%!!$rrrrq!*!)&9X\r!!!!#!*!%$jB!N"S"lU)!N"m%!*!&C'jcE'p[Dh9`,6)ZCfPQ4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,4ZiAHfX@FS!!!$dJ!!#MS!N!MUE&BC!!!!f!!\r"m@%!"!!!rrrrrJ#3#"9F!!!!!J#3"!k@!*!D!HkL!*!I"!#3"@4ZFfa[EfYeF#d\rb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&bFh*M8P0&4!#3#,EQe61fjY8c!*!+!FJ\r!!!*KBSQQ@`!!!0J!!I&L!!3!!2rrrri!N!J9A3!!!!)!N!33PJ#3'J(ZSJ#3(`3\r!N!9NER0XEfpVGA!Y-LjbFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K868p68`#\r3#,,A4&@dEZ&G!!!0Y!!!)1J!N!K[D-A&!!!!d`!"m8J!!`!!rrrrrJ#3#"9H!!!\r!!J#3"!f@!*!D!HQL!*!I"!#3"@9iB@e`E'8b,QKdE@a'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&406e06!*!)XYG%9EAJLL-!!![%!!!FX`#3#0b,9UF!!!$6!!(a53!\r$!!$rrrrq!*!)&9m!!!!#!*!%$CB!N"S"kD)!N"m%!*!&CR*PCATTEQFZD(4YE%4\r@3e3!N"#fX%e5!*!(f3!!!0-!!!!"!*!F&@!!!!!$!!)!N!3+!!!!#!3(!*!E!HQ\rL!*!MD(4YE#jTBfpZFdC@3e3!N!F))!!!!3#3#!F!N")"G(4bEh4dH(3!N!Le*qC\raY5IQF3!!0[S!!$H%!*!)HM+F[`!!!0N!!I&N!!3!!2rrrri!N!J9B3!!!!)!N!3\r1PJ#3'J([SJ#3(`3!N!9MFQ9KG'9YB@YP,R"ZCdC@3e3!N!F))!!!!3#3#!F!N")\r"4dP'CQpRE'8!N!Lc&X+#XaE#JJ!!!T`!!!2b!*!)U+TU0J!!!0N!!I&P!!3!!2r\rrrri!N!J9BJ!!!!)!N!3-PJ#3'J([SJ#3(`3!N!9YDf&`F'aPG#jRD@C'9N08!*!\r(##!!!!%!N!J(!*!5!8G*4QC[CfaP!*!)XaE#JV-@`S)!!"PB!!!C6`#3#2N-Ab!\r!!!$C!!(aCJ!%!!$rrrrq!*!)&@-!!!!#!*!%$CB!N"S"lk)!N"m%!*!&E@pNG@a\rKG'pb,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"4dP'CQpRE'8!N!Lc&X+#XaE#JJ!\r!$j`!!"#(!*!)+k4ZRJ!!!0N!!I&R!!3!!2rrrri!N!J9C!!!!!)!N!3,PJ#3'J(\r[SJ#3(`3!N!9[F(4TEfjc,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"4dP'CQpRE'8\r!N!Lc&X+#XaE#JJ!!%ri!!"6J!*!)APKS5!!!!0N!!I&S!!3!!2rrrri!N!J9C3!\r!!!)!N!32PJ#3'J([SJ#3(`3!N!9`FQ9QCA*PEQ0PFbjRD@C'9N08!*!(##!!!!%\r!N!J(!*!5!8G*4QC[CfaP!*!)XaE#JV-@`S)!!!+3!!!!!q`!N!Ka#P,b!!!!f3!\r"m@N!"!!!rrrrrJ#3#"9Q!!!!!J#3"!U@!*!D!HqL!*!I"!#3"A"jG'K[ELjRD@C\r%9N08!*!3YV"08J#3"pS!!!$6!!!!!3#3("9R!!!!!`!#!*!%#3!!!!J%"`#3'`(\rTSJ#3)fPYCf*bEhGcC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4\rCXYG%@3!!"*`!!!`D!*!)aC[dfJ!!!0S!!I&V!!3!!2rrrri!N!J9D!!!!!)!N!3\r-PJ#3'J(`SJ#3(`3!N!9TE@GLFQphFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)XYG%@EBC#l3!!!+k!!!&dJ#3#12`Nm-!!!$D!!(aE!!%!!$rrrr\rq!*!)&@N!!!!#!*!%$*B!N"S"m+)!N"m%!*!&E@&MAfPYB@GP,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K868p68`#3#,,A4&@e*r8b!!!+QJ!!'4d!N!MHC9XE!!!\r!d`!"m8S!!`!!rrrrrJ#3#"9U!!!!!J#3"!U@!*!D!HQL!*!I"!#3"@PZC'9i,QK\rdE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&406e06!*!)Y5IQ8,8RkUd!!"JX!!"\r"BJ#3##)0HrX!!!$6!!(a5`!$!!$rrrrq!*!)&@X!!!!#!*!%%TB!N"S"kD)!N"m\r%!*!&EA"hCAKdC@jcD@pZFbjSG'eX4&C$9!#3%,F,a5qh#m8Z!!!!f`!!!0-!!!!\r"!*!F&@`!!!!$!!)!N!3+!!!!#!3(!*!E!HQL!*!M8%P$9'*bEhGcC8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4AYS%d+!!!"Ri!!"$)!*!)@5GdPJ!\r!!0X!!I&Z!!3!!2rrrri!N!J9E3!!!!)!N!30PJ#3'J(aSJ#3(`3!N!9MD@0ZBR*\r[Gh0P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&DfJ63`!!!\r'HJ!!%-!!N!L#33k)!!!!f`!"m@m!"!!!rrrrrJ#3#"9Z!!!!!J#3"!f@!*!D!I'\rL!*!I"!#3"8P$6djLFQphFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)Y)P!d,D6TZ8!!!C5!!!2i`#3#&'eXk%!!!$E!!(aF!!%!!$rrrrq!*!)&@m\r!!!!#!*!%%*B!N"S"mD)!N"m%!*!&EfaN8%P$9'*bEhGcC5j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"FR0bBe*6483!N!LfjY8bYZE9-J#3#rJ!!!'8N!$MdSX!!!$E!!(\raF3!%!!$rrrrq!*!)&A!!!!!#!*!%%TB!N"S"mD)!N"m%!*!&EfaN8%P$9'*bEhG\rcC5jbFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&DfJ63e!!!\r&YJ!!$F!!N!LE2%9c!!!!f`!"mA)!"!!!rrrrrJ#3#"9a!!!!!J#3"!f@!*!D!I'\rL!*!I"!#3"9"*3e4LFQphFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!A*cFQ058d9\r%!*!)YZE9-VEQe6)!N!S"B!!!!Updaqki!!!!f`!"mA-!"!!!rrrrrJ#3#"9b!!!\r!!J#3"!q@!*!D!I'L!*!I"!#3"9"*3e4LFQphFf8ZFR0bBdC@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbed4@YS%d13!!"TS!!"$i!*!))L31P!!!!0X!!I&\rd!!3!!2rrrri!N!J9F`!!!!)!N!31PJ#3'J(aSJ#3(`3!N!935808BR*[Gh0P-Lj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&9YJ6B!N!Lbed49XYG%93!!'e`!!%6\r3!*!)JLTCY3!!!0-!!I&-!!-!!2rrrri!N!J9G!!!!!)!N!3-PJ#3'J(TSJ#3(`3\r!N!9`E(9RD@jc,QKdE@a%9N08!*!3Y6Tc4V8kFdB!!!$F!!!!d`!!!!%!N"`9G3!\r!!!-!!J#3"!J!!!!)"!F!N"X"kD)!N#0`FQPZG'PZCdC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbed4DXYG%@J!!"-B!!!Uj!*!)L`58I!!!!0`!!I&f!!3\r!!2rrrri!N!J9GJ!!!!)!N!32PJ#3'J(bSJ#3(`3!N!93FQPZG'PZCd4PE@mZF(P\r%9N08!*!3Y6Tc4V8kFdB!!!$G!!!!d`!!!!%!N"`9G`!!!!-!!J#3"!N!!!!)"!F\r!N"X"kD)!N#0aG@PMDh4TE@9'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)XYG%@V,A4&S!!!,L!!!&hJ#3#-iUe+!!!!$G!!(aH!!%!!$rrrrq!*!)&AJ!!!!\r#!*!%%*B!N"S"mk)!N"m%!*!&6@pfD@9*EPGTEQ4[Gbj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbed4DXYG%@J!!"*i!!!S+!*!)&f*Z33!!!0d!!I&\rj!!3!!2rrrri!N!J9H3!!!!)!N!36PJ#3'J(cSJ#3(`3!N!9@CA*j8fPYF'aP8'a\rKH@9b,R"j4&C$9!#3%,8kFdHe1R0'!!!!hJ!!!0-!!!!"!*!F&AS!!!!$!!)!N!3\r*!!!!#!3(!*!E!HQL!*!MFQ9cEh9bBf9c4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,86Fc+e%h-b!!!#G!!!"CS!N!J0a#!'!!!!hJ!"mAX!"!!!rrrrrJ#\r3#"9l!!!!!J#3"!U@!*!D!I5L!*!I"!#3"@0[F(PbCA-ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)XYG%@V,A4&S!!!(D!!!&$`#3#1Ucm[-!!!$H!!(\raI!!%!!$rrrrq!*!)&A`!!!!#!*!%#TB!N"S"p+)!N"m%!*!&E'PcG(*PFbj`H84\r@3e3!N"#e1R0(Y6Tc4J!!!1!!!!$6!!!!!3#3("@"!!!!!`!#!*!%"3!!!!J%"`#\r3'`(TSJ#3)h0[G@jN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&Z\rbed4E!!!'FJ!!$r)!N!MS#k6R!!!!i!!"mB)!"!!!rrrrrJ#3#"@#!!!!!J#3"!L\r@!*!D!IDL!*!I"!#3"@e[FR0P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,A4&Zbed4E!!!%d!!!$5S!N!Mq#mHG!!!!i!!"mB-!"!!!rrrrrJ#3#"@\r$!!!!!J#3"!Z@!*!D!IDL!*!I"!#3"@e[FR0PE'PL,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,A4&bbed4F!!!"M!!!")`!N!K[@9r)!!!!i!!"mB3\r!"!!!rrrrrJ#3#"@%!!!!!J#3"!Z@!*!D!IDL!*!I"!#3"A"XBAPKD@CQ,R"j4&C\r$9!#3%,D`69-!N!IK!!!!d`!!!!%!N"`9K3!!!!-!!J#3"!B!!!!)"!F!N"X"kD)\r!N#0cF'9PBfK'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%A,6V52i\r!!!G+!!!9FJ#3#&M"0Z3!!!$K!!(aKJ!%!!$rrrrq!*!)&BB!!!!#!*!%#*B!N"S\r"pk)!N"m%!*!&Ch*KD@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)XYG%A,,A4&`!!!'#!!!#DJ#3##KkY%m!!!$K!!(aK`!%!!$rrrrq!*!)&BF!!!!\r#!*!%"TB!N"S"pk)!N"m%!*!&D(9Y,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r83eG*43#3#,,A4&bbed4F!!!pm!!!X4!!N!K2b*G2!!!!i3!"mBJ!"!!!rrrrrJ#\r3#"@)!!!!!J#3"!D@!*!D!IHL!*!I"!#3"90$8NP39%4@3e3!N"#h#m8`Y`[&,`!\r!!1)!!!$6!!!!!3#3("@*!!!!!`!#!*!%#!!!!!J%"`#3'`(TSJ#3)h4PH(4PC'P\rd4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&ffpSqE!!!*j!!!(rB\r!N!LckLEK!!!!iJ!"mBS!"!!!rrrrrJ#3#"@+!!!!!J#3"!D@!*!D!ILL!*!I"!#\r3"A"PC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&9YJ6B!N!Lbed49XYG%93!\r!$ZJ!!#8l!*!)R1+-Q!!!!0-!!I&0!!-!!2rrrri!N!J9L`!!!!)!N!30PJ#3'J(\rTSJ#3(`3!N!9dCAKdC@4TG#jSG'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K89@f\r"0J#3#,,A4&Dei)ZM!!!Gj!!!6@J!N!M2KY"m!!!!d`!"m8i!!`!!rrrrrJ#3#"@\r-!!!!!J#3"!U@!*!D!HQL!*!I"!#3"A9cD@jR,QKdE@a%9N08!*!3YV)D$3#3"q-\r!!!$6!!!!!3#3("@0!!!!!`!#!*!%"3!!!!J%"`#3'`(TSJ#3)hGKFh4P4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&ffR0ZC!!!@HJ!!8N3!N!Ke6'X\r,!!!!i`!"mB`!"!!!rrrrrJ#3#"@1!!!!!J#3"!Q@!*!D!IQL!*!I"!#3"@KdE@a\rPC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4GYTcEQ3!!%A)\r!!$k"!*!)lI*KY!!!!1-!!I'0!!3!!2rrrri!N!J9M`!!!!)!N!3(PJ#3'J(jSJ#\r3(`3!N!9cGf9N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&f\rfNkEQ!!!-)!!!+'`!N!M!MGG+!!!!i`!"mBi!"!!!rrrrrJ#3#"@3!!!!!!)!N!3\r'PJ#3'J(jSJ#3(`3!N!9hC@3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&49EB%\rf!*!)XYG%9V,A4&B!!!M)!!!6@3#3#$,NKa)!!!$6!!(a6`!$!!$rrrrq!*!)&C%\r!!!!#!*!%#TB!N"S"kD)!N"m%!*!&Gf&cG'8ZD(4YE%4@3e3!N"#fX%e4YV"083!\r!!3m!!iZJ!!!!!3#3("M$!!!!!`!#!*!%#`!!!!J%"`#3'`(TSJ#3)f&`F'aPFf0\rbDA"d4&C$9!#3%,D`69%!N!B"$`!$Lkm!!!!"!*!F'-)!!!!%!!)!N!3*!!!!#!3\r(!*!E!MbL!*!M4'PcDep$Eh"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,A'%*+eaKXp!!!"*J!!!Xm!N!L-Nkjp!!1,X3!$Ll)!"3!!rrrrrJ#3#"M"!!!\r!!J#3"!Z@!*!D!MfL!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,A'%)QeaK#1!!!,N!!!!$U)!*!)$V)DM3!$Ll%!!iZc!!8\r!!2rrrri!N!JB`!!!!!)!N!34PJ#3'J)pSJ#3(`3!N!96F'9MD@&XAd9fC@jdFbj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaK#%YFB3K!!!$Z)!!$V\rm!*!)-*&-j3!$Ll%!!iZd!!8!!2rrrri!N!JB[`!!!!)!N!34PJ#3'J)pSJ#3(`3\r!N!96G'&ZC'&bC&p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!LeaK#1YFB3N!!!!!2i!!!D%J#3#&E)*(3!!iZa!!1,Y3!&!!$rrrrq!*!)',i\r!!!!#!*!%%CB!N"S#2D)!N"m%!*!&9A4TE'PdH9p&GQ9ZG(-ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB2clA''fd!!!$Q!!!"HJ!!!4J!!!@Zr1"\rdCJ!$Lkm!!iZ`!!3!!2rrrri!N!JB[3!!!!)!N!3,PJ#3'J)mSJ#3(`3!N!9YB@Y\rPC'PcDbj`H84@3e3!N"#fXKS0!*!'!4!!"X-m!!!!!3#3("Zd!!!!!`!#!*!%"`!\r!!!J%"`#3'`(TSJ#3)e"XG@G*ER0'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"\rjG'J!N!Lek[X(YHVl"`!!![)!!!A,!!!!DJ!!!CDkh'06!!E$G`!'`hJ!"!!!rrr\rrrJ#3#"Zc!!!!!J#3""5@!*!D!RbL!*!I"!#3"@0[ER4bEfacG(*TF#j`F'-ZFfa\rL4&C$9!#3%,F,a6#h#m8q!!!!j!!!!--!!!!"!*!F&C)!!!!#!!)!N!3$!!!!#!3\r(!*!E!GQL!*!M6'PL4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'+\rfUK()!!!%$J!!#YX!N!J2RCNj!!!!j!!"mC!!!!-!!2rrrri!N!J9N`!!!!)!N!3\r-PJ#3'J(kSJ#3(`3!N!9"G@4TEepYB@-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)XYG%BlDdZpm!!!TD!!!G0J#3#!rXi*X!!!$N!!(aNJ!$!!$rrrr\rq!*!)&C8!!!!#!*!%$CB!N"S"qU)!N"m%!*!&BR9TE'4dEfpXFbj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'kPYA@`@3!!"RS!!")4!*!)SN'kPJ!\r!!13!!I'6!!-!!2rrrri!N!J9PJ!!!!)!N!3+PJ#3'J(kSJ#3(`3!N!9MCQeQD@a\rP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'5bed4N!!!%`J!\r!$A-!N!Jmq*%G!!!!j!!"mC3!!`!!rrrrrJ#3#"@A!!!!!J#3"!L@!*!D!IUL!*!\rI"!#3"@4LE@&M,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'1\rfZ+EY!!!4`J!!2ji!!!%b!!!#(f)Xj-m!!!$N!!(aP3!$!!$rrrrq!*!)&CJ!!!!\r#!*!%$TB!N"S"qU)!N"m%!*!&4@&cH84TB@a[Ch-ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)Y[69UVEdfIi!!"8F!!"UN!!!N!KN(Jh(!!!!j!!"mCB\r!!`!!rrrrrJ#3#"@C!!!!!J#3"!k@!*!D!IUL!*!I"!#3"@CTEQ4PFR4[Efac,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'1fe'#q!!!I)!!!FS-\r!N!MNM,kF!!!!j!!"mCJ!!`!!rrrrrJ#3#"@E!!!!!J#3"!b@!*!D!IUL!*!I"!#\r3"8CbB@eP9fpbDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4\rNYTcER!!!#)i!!"UF!*!)IdShe3!!!13!!I'C!!-!!2rrrri!N!J9R!!!!!)!N!3\r&PJ#3'J(kSJ#3(`3!N!9TBbj`H84@3e3!N"#fXKS2!*!(j3!!!13!!!!"!*!F&Cd\r!!!!$!!)!N!30!!!!#!3(!*!E!IUL!*!ME'PL,A0MFQP`G'PZCdC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'kQX[aZTJ!!&[`!!*UJ!*!)9DJZ'J!!!18\r!!I'R!!3!!2rrrri!N!J9RJ!!!!)!N!38PJ#3'J(lSJ#3(`3!N!9"F("XC90MFQP\r`G&p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeZDFKYEQ\rR)3!!#G!!!#eJ!*!)SFT,$3!!!18!!I'S!!3!!2rrrri!N!J9R`!!!!)!N!3GPJ#\r3'J(lSJ#3(`3!N!9$Ef4P9f&bFQP[FPp6G'&ZC'&bC&p6G@PdC5j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4QXYG%CJ!!"5S!!#C!!*!)35prN!!\r!!!$P!!(aU3!%!!$rrrrq!*!)&D!!!!!#!*!%%jB!N"S"qk)!N"m%!*!&4QPZC'9\rbAcGI-&p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'k\rQX[aZTJ!!)1J!!-T@!*!)dcrN6J!!!18!!I'U!!3!!2rrrri!N!J9S3!!!!)!N!3\r2PJ#3'J(lSJ#3(`3!N!9'D@jNCA*I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YFB"GEA'!A8!!#D!!!$GFJ#3#'N+'[`!!!$P!!(aU`!%!!$\rrrrrq!*!)&D)!!!!#!*!%'CB!N"S"qk)!N"m%!*!&6@9dFQphCA*VFep6D'9XE&p\r6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4RXYG%C`!\r!#J3!!#FH!*!)PH#f6`!!!18!!I'X!!3!!2rrrri!N!J9S`!!!!)!N!3EPJ#3'J(\rlSJ#3(`3!N!94G@PMDd4bBAGI4h*KF'KTBh0I8h9TG'8ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)XYG%Cl,A4'F!!!*F!!!&k3#3#'ZS&mX!!!$P!!(\raV3!%!!$rrrrq!*!)&D3!!!!#!*!%(jB!N"S"qk)!N"m%!*!&8A9TBfY%FQ&hAdG\rbBA"SD@0cAe0eF("XC@ePER4KE%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbed4RXYG%C`!!!VB!!!Z'!*!)X"QKk`!!!18!!I'Z!!3!!2rrrri!N!J9T3!\r!!!)!N!34PJ#3'J(lSJ#3(`3!N!95CA&eDA*PC&p6G@PdC5j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'kYX[aZV3!!$VJ!!%aQ!*!)rp(iQJ!!!18\r!!I'[!!3!!2rrrri!N!J9TJ!!!!)!N!34PJ#3'J(lSJ#3(`3!N!96G'&ZC'&bC&p\r6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'kYX[aZV3!\r!!T!!!!!&1!#3#2plBR%!!!$P!!(aX!!%!!$rrrrq!*!)&DF!!!!#!*!%&CB!N"S\r"qk)!N"m%!*!&8h4KEQ4KFQ4I99*-Ah0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,A4'Hbed4R!!!#i!!!"c`!N!JMkr(P!!!!j3!"mE%!"!!\r!rrrrrJ#3#"@S!!!!!J#3"!k@!*!D!IZL!*!I"!#3"94KBQaPAe0eDA4P,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'Lbed4S!!!%pJ!!$Z-!N!J\r"0AG+!!!!j3!"mE)!"!!!rrrrrJ#3#"@T!!!!!J#3"!f@!*!D!IZL!*!I"!#3"94\rPH(4I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%D,,\rA4'J!!!GU!!!KK`#3##$&GGF!!!$P!!(aX`!%!!$rrrrq!*!)&DS!!!!#!*!%%jB\r!N"S"qk)!N"m%!*!&9(P`C9p1B@ePFep6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr'kYX[aZV3!!#@i!!$E8!*!)qjJ8[3!!!18!!I'd!!3\r!!2rrrri!N!J9U`!!!!)!N!3-PJ#3'J(lSJ#3(`3!N!9A9eGI8h9TG'8ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YEC"!,@f5M`!!!qk!!"6N!!!N!K\r)hG,p!!E$T`!'`kS!"!!!rrrrrJ#3#"Zb!!!!!J#3""5@!*!D!IZL!*!I"!#3"80\r[C'9ABA*bD@pbAh0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,@f5P+eYNUP!!!*Z!!!+qS!N!KRGMiT!!E$T`!'`ki!"!!!rrrrrJ#3#"Za!!!\r!!J#3""b@!*!D!IZL!*!I"!#3"8ePG(*[Gf9bDh0I8h4KEQ4KFQ4I8h9TG'8ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YH,Fd,ALh0!!!!"-!!!!6`!\r!!4J!!!@ZJSjeIJ!'`kF!"X1a!!3!!2rrrri!N!JEX!!!!!)!N!3'PJ#3'J(lSJ#\r3(`3!N!95C@&N6@9%9N08!*!3Y`[&1lF,a6`!!!$Q!!!!j!!!!!%!N"`9V!!!!!-\r!!J#3"!X!!!!)"!F!N"X"qU)!N#0XD@)YG'p[E'*[H%C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbed4VYPa-j!!!$!i!!#@%!*!)lSp!(3!!!1B!!I'i!!3\r!!2rrrri!N!J9V`!!!!)!N!3*PJ#3'J(mSJ#3(`3!N!9KCA"KBfXZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%DlA'!#N!!!Y'!!!H#`#3#'9@Pe3\r!!!$Q!!(aZJ!%!!$rrrrq!*!)&E%!!!!#!*!%#TB!N"S"r+)!N"m%!*!&B@9dEfp\rXFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4XYPa-d3!!$G`\r!!$2F!*!)l%A2l!!!!1B!!I'l!!3!!2rrrri!N!J9XJ!!!!)!N!3+PJ#3'J(mSJ#\r3(`3!N!9KCA4jF'9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,-\r&U"1fVf1U!!!3EJ!!9kX!!!"k!!!"QL0qN@S!!!$Q!!(a[!!%!!$rrrrq!*!)&E-\r!!!!#!*!%$CB!N"S"r+)!N"m%!*!&3A"`C@&bB@jMC5j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbed4TYUpMUJ!!)(`!!)QF!!!!I!!!!CU65A1`!!!\r!jJ!"mEd!"!!!rrrrrJ#3#"@d!!!!!J#3"!k@!*!D!IbL!*!I"!#3"8&`F'aP4AC\rPER4c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A-ZUffVf1U!!!\r#6J!!"T)!N!JFF%98!!!!jJ!"mEi!"!!!rrrrrJ#3#"@e!!!!!J#3"!Z@!*!D!Ib\rL!*!I"!#3"8*KE'a[Efjc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,A4'QfVf1U!!!#d!!!#4S!N!JLB#a)!!!!jJ!"mEm!"!!!rrrrrJ#3#"@f!!!\r!!J#3"!f@!*!D!IbL!*!I"!#3"80[EA"[EQ9ZG(-ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)Y(eE`,D6TZF!!!)5!!!'c`#3#-KK$)F!!!$Q!!(a`!!\r%!!$rrrrq!*!)&EF!!!!#!*!%%TB!N"S"r+)!N"m%!*!&3fpZG(*[E%&MBf9cFfp\rb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D[CY@fVfE9!!!2Z!!\r!3DJ!N!L#cLqG!!!!jJ!"mF%!"!!!rrrrrJ#3#"@i!!!!!J#3"!Z@!*!D!IbL!*!\rI"!#3"80[ER4bEfac,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,\rA4'QfZ+V3!!!#c!!!"qN!N!J8l)"!!!!!jJ!"mF)!"!!!rrrrrJ#3#"@j!!!!!J#\r3"!U@!*!D!IbL!*!I"!#3"84TB@a[Ch-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)XkZNh,D[BlN!!!-#!!!,RJ#3#2"PKhd!!!$Q!!(a``!%!!$rrrr\rq!*!)&ES!!!!#!*!%$*B!N"S"r+)!N"m%!*!&4(*KCf0[ER0d,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A-ZUffVf1j!!!#Z!!!"kX!N!K9cCeN!!!\r!jJ!"mF3!"!!!rrrrrJ#3#"@l!!!!!J#3"!Q@!*!D!IbL!*!I"!#3"89fC@jdFbj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4UYUpMZ3!!!Pi!!!A\rm!*!)AX"Gk3!!!1B!!I(&!!3!!2rrrri!N!J9[!!!!!)!N!3)PJ#3'J(mSJ#3(`3\r!N!9'EfjdFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfVf1rYUp\rM[`!!$%S!!$Y,!*!)MfB+Z!!!!1B!!I('!!3!!2rrrri!N!J9[3!!!!)!N!3)PJ#\r3'J(mSJ#3(`3!N!9*BfpZFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbed4UYUpMZ3!!!8)!!!+f!*!)R6,!*J!!!1B!!I((!!3!!2rrrri!N!J9[J!\r!!!)!N!3)PJ#3'J(mSJ#3(`3!N!9-DA0dFbj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Ldk*p,Y1LI5`!!!qi!!!Sk!*!)paA(Z3!!!1B!!I()!!3!!2r\rrrri!N!J9[`!!!!)!N!30PJ#3'J(mSJ#3(`3!N!90C@4TB84PFf0b,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,N2-1fVf1j!!!#F!!!"Pm!N!Mj$Ac\rY!!!!jJ!"mFN!"!!!rrrrrJ#3#"A!!!!!!J#3"!L@!*!D!IbL!*!I"!#3"8ePER9\rc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'UfR0ZG!!!(e!!\r!&%F!N!JJj['D!!!!jJ!"mFS!"!!!rrrrrJ#3#"A"!!!!!J#3"!k@!*!D!IbL!*!\rI"!#3"8eTEQP"48CbB@eP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,-*N[DfVf1k!!!"b!!!"2)!N!KfXCj3!!!!jJ!"mFX!"!!!rrrrrJ#3#"A#!!!\r!!J#3"!k@!*!D!IbL!*!I"!#3"9&%6fCQFf0bC@9Z,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,D[CY@fVfE9!!!'%J!!%ZB!N!Mq+-mr!!!!jJ!"mF`\r!"!!!rrrrrJ#3#"A$!!!!!J#3"!b@!*!D!IbL!*!I"!#3"9&eD@0V4(*KGbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfJ8fNYUpMZJ!!*!3!!)RP!*!\r)!JEQV3!!!1B!!I(0!!3!!2rrrri!N!J9a!!!!!)!N!3-PJ#3'J(mSJ#3(`3!N!9\r4G@PMDe4TE@8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XZ3m`lD\r[BlS!!!%+!!!#JJ#3#$L*,Ei!!!$Q!!(acJ!%!!$rrrrq!*!)&F8!!!!#!*!%$*B\r!N"S"r+)!N"m%!*!&8Q9cEh9bBf9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r88(PdD!#3#,D[CYHfVfEA!!!1@J!!00N!N!KdI@-i!!!!jJ!"mFm!"!!!rrrrrJ#\r3#"A'!!!!!J#3"!L@!*!D!IbL!*!I"!#3"90[G@jN,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,A4'ZfVf1k!!!"e!!!",`!N!LDAb+&!!!!jJ!"mG!\r!"!!!rrrrrJ#3#"A(!!!!!J#3"!Z@!*!D!IbL!*!I"!#3"94PH(4&C'Pd,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@,T$bfVf1k!!!$UJ!!#+m!N!L\rTXmm$!!!!jJ!"mG%!"!!!rrrrrJ#3#"A)!!!!!J#3"!f@!*!D!IbL!*!I"!#3"9G\r"8e4&BfpZFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YUpQelE\rfPiF!!!G%!!!D$`#3#*A4#$3!!!$Q!!(adJ!%!!$rrrrq!*!)&FN!!!!#!*!%#TB\r!N"S"r+)!N"m%!*!&9fPZC'phFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0\rA588!N!Le41NYY86[@3!!!13!!!&X!*!)KCF0T3!'`qJ!"X2f!!3!!2rrrri!N!J\rEV`!!!!)!N!33PJ#3'J(mSJ#3(`3!N!9)G'eX8Q9ZC'9bD@jR,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'5bed4N!!!"fJ!!!r!!N!MDbh@M!!!\r!j!!"mCS!!`!!rrrrrJ#3#"A+!!!!!J#3"!Z@!*!D!IUL!*!I"!#3"@eKBf0KBfK\rP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mEU@fGXIU!!#%+!!\r"NC%!N!MY@,4`!!!!j!!"mCX!!`!!rrrrrJ#3#"A,!!!!!J#3"!b@!*!D!IUL!*!\rI"!#3"@eKBf9bFQpbFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr'kPYXrZqJ!!"Li!!""B!*!)S8TaA3!!!13!!I'F!!-!!2rrrri!N!J9c!!!!!)\r!N!3)PJ#3'J(kSJ#3(`3!N!90380'8bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!LdJ@CcY68D`3!!!rB!!!h@!!!"EJ!!"FU#RG,d!!!!j!!"mCd!!`!\r!rrrrrJ#3#"A0!!!!!J#3"!Q@!*!D!IUL!*!I"!#3"@eKBfCcELj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4PYXX@!J!!"2!!!!bM!*!)82lTj`!\r!!13!!I'H!!-!!2rrrri!N!J9cJ!!!!)!N!30PJ#3'J(kSJ#3(`3!N!9YB@0[Fh4\r[Efac,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'@bed4P!!!\r$NJ!!#!`!N!MJB3I)!!!!j!!"mCm!!`!!rrrrrJ#3#"A2!!!!!J#3"!Q@!*!D!IU\rL!*!I"!#3"@eKBh4dH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rc5MCSYKN[`3!!#G`!!"U%!*!)mK)#LJ!!!13!!I'J!!-!!2rrrri!N!J9d!!!!!)\r!N!33PJ#3'J(kSJ#3(`3!N!93DAK0BA"AFQ&`F'9b,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,A4'@bi`2C!!!&4!!!&0S!N!KpHKVc!!!!j!!"mD%\r!!`!!rrrrrJ#3#"A4!!!!!J#3"!k@!*!D!IUL!*!I"!#3"A"bC@CPFQ9ZBf9c,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'@bed4P!!!%8!!!#E%\r!N!JpNPlp!!!!j!!"mD)!!`!!rrrrrJ#3#"A5!!!!!J#3"!k@!*!D!IUL!*!I"!#\r3"A"jAh*PFfpeFQ0P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rA4'@fUk("!!!%[!!!$Ki!N!K0p[2U!!!!j!!"mD-!!`!!rrrrrJ#3#"A6!!!!!J#\r3"!k@!*!D!IUL!*!I"!#3"A"jG'K[ER"bC@Cc,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,A4'@bed4P!!!#kJ!!#8m!N!K&PJ`r!!!!j!!"mD3!!`!\r!rrrrrJ#3#"A8!!!!!J#3"!q@!*!D!IUL!*!I"!#3"A&eD@9dBfpZFfpXC5j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4MXYG%B`!!!H`!!!3I!*!\r)FPm!m3!!!13!!I'P!!-!!2rrrri!N!J9e3!!!!)!N!3,PJ#3'J(kSJ#3(`3!N!9\r6Eh9ZC%eRFLj`H84@3e3!N"#h#m8qY`[&2`!!!1F!!!$N!!!!!3#3("A@!!!!!`!\r#!*!%"!!!!!J%"`#3'`(kSJ#3)h4PFh4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)XYG%E,DFfjm!!!ID!!!6,!#3#)fSTQB!!!$R!!(ae!!%!!$rrrrq!*!\r)&GF!!!!#!*!%$jB!N"S"rD)!N"m%!*!&389cCA*fCA*dCA0d,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&bFh*M8P0&4!#3#,EQe65fjY8d!*!+(KS!!'2$@9+Nh`!!!1F\r!!I(9!!3!!2rrrri!N!J9f!!!!!)!N!34PJ#3'J(pSJ#3(`3!N!9"4A0PFRCPFR4\rPFh3ZFR0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4XXYG%E!!\r!$J`!!#c'!*!)Bl)8*`!!!1F!!I(@!!3!!2rrrri!N!J9f3!!!!)!N!3(PJ#3'J(\rpSJ#3(`3!N!9KCA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rA4'fbed4Y!!!"jJ!!"&d!N!LfQ,)0!!!!j`!"mGF!"!!!rrrrrJ#3#"AD!!!!!J#\r3"!Q@!*!D!IfL!*!I"!#3"@0YG'9cG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbed4YXYG%E3!!!RB!!!45!*!)+(q-+J!!!1F!!I(B!!3!!2rrrri\r!N!J9f`!!!!)!N!3+PJ#3'J(pSJ#3(`3!N!9MG'*dCA0d,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,1@PJUcPTB+!!!#+!!!"(d!N!LQY0U3!!!!!1F\r!!I(C!!3!!2rrrri!N!J9h!!!!!)!N!3,PJ#3'J(pSJ#3(`3!N!9NFQ&RG'9cG#j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4YYTcER`!!"U3!!!q\r$!*!)eQ9"K!!!!1F!!I(D!!3!!2rrrri!N!J9h3!!!!)!N!3(PJ#3'J(pSJ#3(`3\r!N!9PBfK[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'fbed4\rY!!!!R!!!!48!N!M"Kp-Z!!!!j`!"mGX!"!!!rrrrrJ#3#"AH!!!!!J#3"!q@!*!\rD!IfL!*!I"!#3"@CRBQGdD@ePG'9cG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbed4YXYG%E3!!!5!!!!(A!*!)m49,dJ!!!1F!!I(F!!3!!2rrrri\r!N!J9h`!!!!)!N!30PJ#3'J(pSJ#3(`3!N!9TBfGXG@9dCA0d,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'fbed4Y!!!"&!!!!GB!N!MpJdcd!!!\r!j`!"mGd!"!!!rrrrrJ#3#"AJ!!!!!J#3"!k@!*!D!IfL!*!I"!#3"A"bEfGbCA0\rcBQ&b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'fbed4Y!!!\r%p!!!$Hi!N!J2H`al!!!!j`!"mGi!"!!!rrrrrJ#3#"AK!!!!!J#3"!D@!*!D!If\rL!*!I"!#3"A4KC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4\rZXYG%EJ!!!2B!!!')!*!)d`6ZR3!!!1F!!I(I!!3!!2rrrri!N!J9iJ!!!!)!N!3\r(PJ#3'J(pSJ#3(`3!N!9dBh4X,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,A4'kbed4Z!!!"Y!!!!VN!N!JV"c()!!!!j`!"mH!!"!!!rrrrrJ#3#"A\rM!!!!!J#3"!H@!*!D!IfL!*!I"!#3"A4NE'FZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)XYG%EV,A4'i!!!)5!!!$b!#3#0aBRM%!!!$R!!(ai3!%!!$\rrrrrq!*!)&H3!!!!#!*!%%*B!N"S"rD)!N"m%!*!&G'4XCepYEf4PE'9cFbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4ZXYG%EJ!!!pi!!!L,!*!\r)KKHdN3!!!1F!!I(L!!3!!2rrrri!N!J9j3!!!!)!N!3(PJ#3'J(pSJ#3(`3!N!9\rdC@aX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4'kbed4Z!!!\r!8!!!!&X!N!JFJ6ZT!!!!j`!"mH-!"!!!rrrrrJ#3#"AQ!!!!!J#3"!k@!*!D!If\rL!*!I"!#3"A4PFh4ICQPZC'9bAf&P4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,4f`mHdGX2(!!!!P!!!!0i!N!K-VQ9)!!!!j`!"mH3!"!!!rrrrrJ#3#"A\rR!!!!!J#3""D@!*!D!IfL!*!I"!#3"A4PFh4IFf9dBfpZG(*[E'4KG'%ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%EV,A4'i!!!%`!!!#@3#3#2V\rL,P!!!!$R!!(aj3!%!!$rrrrq!*!)&HJ!!!!#!*!%$CB!N"S"rD)!N"m%!*!&G'9\rcG&pcG@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4ZXYG\r%EJ!!!C3!!!-!N!Pce*G-!!!!j`!"mHB!"!!!rrrrrJ#3#"AT!!!!!J#3""'@!*!\rD!IfL!*!I"!#3"A4PFh4QD@jNCA*[F'9Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,A4'qbed4[!!!%"!!!#1-!N!LG&BC1!!!!j`!"mHF!"!!!rrr\rrrJ#3#"AU!!!!!J#3"!L@!*!D!IfL!*!I"!#3"A4XDA0d,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,A4'qeGE"N!!!$@J!!"a%!N!KXpej@!!!!j`!\r"mHJ!"!!!rrrrrJ#3#"AV!!!!!J#3"!q@!*!D!IfL!*!I"!#3"A4XDA0dAf4TB@a\r[Cbj`H8C@3e3!N!F))!!!!3#3#!F!N")"FR0bBe*6483!N!Lf)P5!YL*8J!#3#q!\r!!!'IrQZ'X`!!!1F!!I(T!!3!!2rrrri!N!J9l!!!!!)!N!34PJ#3'J(pSJ#3(`3\r!N!9dE'PcG&pND@&XEfFZFR0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbed4[XYG%E`!!!U3!!!A$!*!)4FHK,`!!!1F!!I(U!!3!!2rrrri!N!J9l3!\r!!!)!N!3)PJ#3'J(pSJ#3(`3!N!9dE@9ZG5j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbed4[YT1Qj`!!!cS!!!G4!*!))`FP0!!!!1F!!I(V!!3!!2r\rrrri!N!J9lJ!!!!)!N!30PJ#3'J(pSJ#3(`3!N!9dFf0bEfaXGfPZ,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'qbed4[!!!"%J!!!D8!N!JD)+[\rQ!!!!j`!"mH`!"!!!rrrrrJ#3#"A[!!!!!J#3"!H@!*!D!IfL!*!I"!#3"A4cEQ3\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%El,A4'm!!!$@!!!\r"03#3#!)!FYF!!!$R!!(al3!%!!$rrrrq!*!)&I!!!!!#!*!%"TB!N"S"rD)!N"m\r%!*!&G(4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'qbed4\r[!!!$1!!!"`B!N!K1lCPX!!!!j`!"mHi!"!!!rrrrrJ#3#"Aa!!!!!J#3"!Q@!*!\rD!IfL!*!I"!#3"A4dC@4TG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbed4[XYG%E`!!!j)!!!Ih!*!)lheaCJ!!!1F!!I([!!3!!2rrrri!N!J9mJ!\r!!!)!N!3*PJ#3'J(pSJ#3(`3!N!9dGf9NDA3ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)XYG%F,,A4(!!!!#!!!!!SJ#3#)+bSMS!!!$R!!(am!!%!!$\rrrrrq!*!)&I-!!!!#!*!%"jB!N"S"rD)!N"m%!*!&G(GTELj`H84@3e3!N"#fXKS\r9!*!'!4!!!p+T!!!!!3#3("QY!!!!"!!#!*!%#!!!!!J%"`#3'`(pSJ#3)feVBhG\r`FQpU4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AaYU#emEIZ!!!!LJ!\r!!1-!!!%D!!!&VX+9c-J!""be!!3FY`!&!!$rrrrq!*!)'DN!!!!#!*!%$jB!N"S\r#9k)!N"m%!*!&G'9cG'eVBhG`FQpU,R"j4&C$9!#3%,Db'KB!N!B"%3!'a$J!!!!\r"!*!F'ki!!!!&!!)!N!3$!!!!#!3(!*!E!PHL!*!ME'PL4PC$9!#3"`JJ!!!"!*!\r)"`#3%!8!!A0SE'*3HA4S!*!)YI'p8EAd3q`!!!@B!!!-)`!!!'J!!!'5hL"!A`!\r'a$X!"X3m!!B!!2rrrri!N!JEV3!!!!)!N!33PJ#3'J*lSJ#3(`3!N!9YDf0hG'9\rcG#j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,Ad3K5ep%2\rF!!!3)!!!c!)!N!K'Z"$U!!E%1!!'a$N!"3!!rrrrrJ#3#"ZX!!!!!J#3""#@!*!\rD!PHL!*!I"!#3"@eVBhGdCA0d,R"bDLjiE@a'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y8'BFl9"Q(-!!!1J!!!(G`#3#)RVDKi!!i[a!!1,r3!$!!$rrrr\rq!*!)',J!!!!#!*!%#CB!N"S"qU)!N"m%!*!&D@0[F'9Z,R"j4&C$9!#3%,D`69@\rfX%e@!!!"$`!$Lr%!!!!"!*!F',F!!!!$!!)!N!35!!!!#!3(!*!E!IUL!*!ME'P\rL,A0MFQP`G("KBfYKCf9c4&C$9!#3%,D`698!N!B"$`!$M"`!!!!"!*!F',B!!!!\r%!!)!N!3,!!!!#!3(!*!E!MHL!*!M3fpNC9GKFR*TEh*'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)YF)KGVA$-8%!!!&Q!!!$[J!!!%!!!!%k)Sf'p3!$M"d\r!!i`H!!8!!2rrrri!N!JBY3!!!!)!N!3,PJ#3'J)lSJ#3(`3!N!9IAfPZDA4IAbj\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le`L&MYF-a2`!!$lJ!!&1\r+!*!)XN6&63!$M"d!!i`I!!8!!2rrrri!N!JBY!!!!!)!N!38PJ#3'J)lSJ#3(`3\r!N!9$Ef4P9f&bFQP[FPpcG@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Le`L&dYF-a2`!!0q!!!5Ih!*!)TDmZbJ!$M"d!!i`J!!8!!2rrrri!N!J\rBX`!!!!)!N!3CPJ#3'J)lSJ#3(`3!N!90CA4bEhGPFQYcAe0SC@aXAe0eDA4P,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A#)1Le`c%r!!!#h!!!"G3\r!!!"!!!!"1XVrcT3!!i`G!!1-)3!&!!$rrrrq!*!)',)!!!!#!*!%#jB!N"S#1k)\r!N"m%!*!&8Q9aG@PbC@3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)YF)Jk,A$-6m!!!Qm!!!VrJ#3#-ai9YJ!!i`G!!1-)J!&!!$rrrrq!*!)',%!!!!\r#!*!%%CB!N"S#1k)!N"m%!*!&8h4KEQ4KFQ4I8h9TG'8ZF(P%9N08!*!3YV"093#\r3"J%2!!1-(!!!!!%!N"`BX!!!!!3!!J#3"!J!!!!)"!F!N"X#0k)!N#0&H("XEh*\rPFNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJKIYFB)A`!!!B3!!!4\rT!*!)!Z89&!!$M#-!!i`N!!8!!2rrrri!N!JBV`!!!!)!N!3,PJ#3'J)kSJ#3(`3\r!N!9IAfPZDA4IAbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJK\rGYFB)A3!!!a3!!!JS!*!)LhIH!3!$M#-!!i`P!!8!!2rrrri!N!JBVJ!!!!)!N!3\rHPJ#3'J)kSJ#3(`3!N!90D@0bEh0[CR4I5@jdCA*ZCA4I4AK`E'pbCA)ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB)AEA'#&d!!!)q!!!%D3#3#0b\r8kZJ!!i`M!!1-*J!&!!$rrrrq!*!)'+d!!!!#!*!%%CB!N"S#1U)!N"m%!*!&6Q9\rdFf0KF'9I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB\r)AEA'#&d!!!+J!!!,Q`#3#&3Pa`%!!i`M!!1-*`!&!!$rrrrq!*!)'+`!!!!#!*!\r%%CB!N"S#1U)!N"m%!*!&8Q9aG@PbC@4I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)YFB)AEA'#&d!!!*B!!!%U3#3#*XUlC!!!!1-)`!$M#J\r!"3!!rrrrrJ#3#"LV!!!!!J#3"!b@!*!D!MUL!*!I"!#3"9956&p6G@PdC5j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJKGYFB)A3!!#eJ!!&1k!*!\r)2`[k)J!$M#-!!i`T!!8!!2rrrri!N!JBUJ!!!!)!N!38PJ#3'J)kSJ#3(`3!N!9\rAC@*I3R*[Gh0PFPp6G@PdC5j`H84@3e3!N"#fX%e@!*!'!3m!!i`F!!!!!3#3("L\rT!!!!"!!#!*!%"J!!!!J%"`#3'`)hSJ#3)dCTEQ4PFNC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!LeaJ$AYFL`)3!!!KB!!!II!*!)B5LTN`!$M#S!!i`V!!8\r!!2rrrri!N!JBU!!!!!)!N!3,PJ#3'J)jSJ#3(`3!N!9IAfPZDA4IAbj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJ$8YFL`(J!!#IB!!%5Y!*!)4Kc\r@+!!$M#S!!i`X!!8!!2rrrri!N!JBT`!!!!)!N!3CPJ#3'J)jSJ#3(`3!N!9$Efj\rdB@PZCA*cAf&ZC&pQEfaNCA*c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,A'!05eb,!H!!!85J!!@D3!N!JV&NPY!!1-+J!$M#d!"3!!rrrrrJ#3#"L\rQ!!!!!J#3""#@!*!D!MQL!*!I"!#3"89KFQaTCA*IG'9bEA-ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB!e,A)X"m!!!-m!!!)C3#3#2J*[r`!!i`\rU!!1-,J!&!!$rrrrq!*!)'+8!!!!#!*!%$jB!N"S#1D)!N"m%!*!&4@jeE@9bBA4\rTEfjc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A'!05eb,!I!!!\r'h!!!'qF!N!LUY%Zb!!1-+J!$M#m!"3!!rrrrrJ#3#"LN!!!!!J#3""D@!*!D!MQ\rL!*!I"!#3"8CTE'9cAf&ZC&pcG@PdBf&cCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YFB!e,A)X"i!!!SX!!![[3#3#$l!H9B!!i`U!!1--!!&!!$\rrrrrq!*!)'+-!!!!#!*!%%*B!N"S#1D)!N"m%!*!&4QPZC'9bAd*KFfPMFbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJ$8YFL`(J!!#"J!!#B"!*!\r)jPSj5`!$M#S!!i`a!!8!!2rrrri!N!JBSJ!!!!)!N!32PJ#3'J)jSJ#3(`3!N!9\r'D@jNCA*IDA4PEA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB\r!e,A)X"m!!!A'!!!A$!#3#$NrCq!!!i`U!!1--J!&!!$rrrrq!*!)'+%!!!!#!*!\r%%CB!N"S#1D)!N"m%!*!&6f*cEfaPG'9IG'9bEA-ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&43HA4S!*!)YFB!e,A)X"m!!!5Q!!!3f`#3#%Y@lAB!!i`U!!1--`!\r&!!$rrrrq!*!)'+!!!!!#!*!%%TB!N"S#1D)!N"m%!*!&8(*[Bf9cFepME'&cFf9\rc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A'!-qeb,!H!!!'lJ!\r!+I)!N!MP'+Dm!!1-+J!$M$3!"3!!rrrrrJ#3#"LI!!!!!J#3""'@!*!D!MQL!*!\rI"!#3"90dB@jNBA*NAe0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,A'!05eb,!I!!!)(J!!)NF!N!JA#"+`!!1-+J!$M$8!"3!!rrrrrJ#3#"L\rH!!!!!J#3""1@!*!D!MQL!*!I"!#3"94jF'9I4'9QD@jTG'P[ER-ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB!e,A)X"m!!!Z-!!![83#3#1pd"1!\r!!i`U!!1-0J!&!!$rrrrq!*!)'*d!!!!#!*!%%CB!N"S#1D)!N"m%!*!&9fPZC'p\rhAf0XBA0cCA-ZF(P%9N08!*!3YV"09J#3"J%2!!1-(!!!!!%!N"`BR!!!!!3!!J#\r3"!J!!!!)"!F!N"X#0k)!N#01CA4cBf&`C8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Le`LdcYF-aS3!!!FB!!!8p!!!!3!!!!6SD''Rf!!1-0`!$M$J!"3!\r!rrrrrJ#3#"LE!!!!!J#3"!Z@!*!D!MLL!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A#,5qe`c'I!!!(&J!!)P8!N!M)0kG\rN!!1-0`!$M$N!"3!!rrrrrJ#3#"LD!!!!!J#3""#@!*!D!MLL!*!I"!#3"8e[HQP\rXE'&IFh9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YF)Y-,A\r$-Cm!!!0N!!!)q3#3#%(4#2m!!i`h!!1-1J!&!!$rrrrq!*!)'*N!!!!#!*!%$CB\r!N"S#1+)!N"m%!*!&8'phCA*3E'&ZG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Le`LdPYF-aR`!!!X3!!!Z`!!!!3!!!!6U5TpGF!!1-0`!$M$X!"3!\r!rrrrrJ#3#"LB!!!!!J#3""'@!*!D!MLL!*!I"!#3"9*PFA9TFQ9NAh0eDA4P,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A#,5De`c'I!!!(#!!!'@X\r!N!MSJ05E!!1-0`!$M$`!"3!!rrrrrJ#3#"LA!!!!!J#3""'@!*!D!MLL!*!I"!#\r3"90dB@jNBA*NAe0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,A#,5He`c'I!!!#R!!!"9F!N!KSF06l!!1-0`!$M$d!"3!!rrrrrJ#3#"L@!!!\r!!J#3""@@!*!D!MLL!*!I"!#3"90dB@jNBA*NAe956&pcG@PdC5j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le`LdaYF-aR`!!!p!!!!T,!!!!3!!!!6V\r@XN",!!1-0`!$M$i!"3!!rrrrrJ#3#"L9!!!!!J#3"!H@!*!D!MLL!*!I"!#3"94\rPH(3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YF)Y,EA$-Cm!!!P\rQ!!!fc`#3#1!fblJ!!i`h!!1-2`!&!!$rrrrq!*!)'*3!!!!#!*!%&CB!N"S#1+)\r!N"m%!*!&9fpbE'4AD@4P9f9LAh0eDA4P,R"j4&C$9!#3%,D`69B!N!B"$`!$M"`\r!!!!"!*!F'*-!!!!%!!)!N!3*!!!!#!3(!*!E!MHL!*!M8h4N8h9TG'9c4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A$,3Ze`bd,!!!#'!!!"fd!N!M0%q6\r"!!1-3!!$M%%!"3!!rrrrrJ#3#"L5!!!!!J#3"!Z@!*!D!MDL!*!I"!#3"9pID@j\rTG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A$,3Ue`bd+!!!\rJ(!!!`N`!N!JI*drD!!1-3!!$M%)!"3!!rrrrrJ#3#"L4!!!!!J#3""5@!*!D!MD\rL!*!I"!#3"8&`F'aP8f0bDA"dAe0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,A$,3Ue`bd+!!!*,J!!*aB!N!LLGSA3!!1-3!!$M%-!"3!!rrr\rrrJ#3#"L3!!!!!!)!N!3HPJ#3'J)fSJ#3(`3!N!90B@0TER4[FfKI3fpZEQ9MG'P\rfDA4jAd0XBA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YF-Y#VA\r$,3S!!!RQ!!!QbJ#3#$RSlT-!!ia!!!1-4!!&!!$rrrrq!*!)')m!!!!#!*!%'jB\r!N"S#0U)!N"m%!*!&8A9TBfY%FQ&hAdGbBA"SD@0cAe0eDA4P,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A$,3Ue`bd+!!!#8J!!"Fi!N!K6diT[!!1\r-3!!$M%8!"3!!rrrrrJ#3#"L1!!!!!J#3""k@!*!D!MDL!*!I"!#3"9&eD@0V4(*\rKGep(FQ&`D'PMFep6GA"`E'9YC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Le`bd+YF-Y#J!!!43!!!(!!*!)p$4!j`!$M%!!!ia'!!8!!2rrrri!N!J\rBM3!!!!)!N!34PJ#3'J)fSJ#3(`3!N!95CA&eDA*PC&p6G@PdC5j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le`bd+YF-Y#J!!$X)!!&$#!*!)d3qbV`!\r$M%!!!ia(!!8!!2rrrri!N!JBM!!!!!)!N!34PJ#3'J)fSJ#3(`3!N!96G'&ZC'&\rbC&p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le`bd+YF-\rY#J!!!X!!!!Dm!*!)JE8K'`!$M%!!!ia)!!8!!2rrrri!N!JBL`!!!!)!N!31PJ#\r3'J)fSJ#3(`3!N!98B@*XC9p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Le`bd+YF-Y#J!!"H`!!"3m!*!)GTFGcJ!$M%!!!ia*!!8!!2rrrri\r!N!JBLJ!!!!)!N!30PJ#3'J)fSJ#3(`3!N!98CAKdAe0eDA4P,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A$,3Ue`bd+!!!'HJ!!(3B!N!KEJ21M!!1\r-3!!$M%S!"3!!rrrrrJ#3#"L*!!!!!J#3""1@!*!D!MDL!*!I"!#3"94jF'9I6Q&\rYCA0I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YEQR)EA\r'"QX!!!,S!!!'!`#3#2@C3Ti!!i[a!!1-"!!$!!$rrrrq!*!)')J!!!!#!*!%#jB\r!N"S"qU)!N"m%!*!&ER0bC@e[G'8ZF(P%9N08!*!3YV)D%`#3"J%3!!25-3!!!!%\r!N"`CU!!!!!-!!J#3"!X!!!!)"!F!N"X"qU)!N#0YDf0hF(*[DQ9MG%C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LemE"cYT1m[`!!!m!!!!Uk!!!"2!!!"JE\r2'ECj!!3FU`!%(+`!"!!!rrrrrJ#3#"QR!!!!!J#3"!Z@!*!D!PDL!*!I"!#3"9p\rID@jTG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AaXBHep%2\rC!!!#*J!!"*%!!!%8!!!&VJ)U8e`!""bV!!3FV3!%!!$rrrrq!*!)'DB!!!!#!*!\r%#jB!N"S#9U)!N"m%!*!&BhGdB@aVCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)YH4[YVD9[UB!!!A)!!!3k3!!!6`!!!B'S',*I`!%(+X!""bZ!!3\r!!2rrrri!N!JCT3!!!!)!N!3,PJ#3'J*@SJ#3(`3!N!9MGhKYE'GPELj`H84@3e3\r!N"#fX%eB!*!'!4%!!M56!!!!!3#3("X#!!!!"!!#!*!%$`!!!!J%"`#3'`*@SJ#\r3)h4PEA"XBA4P,@0KFQ*[ENC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"PF()!N!L\rf4dqbYNG2XJ!!!(J!!!%K!!!!MJ!!!GDr+aGV!!)dP`!#0*J!"3!!rrrrrJ#3#"X\r"!!!!!J#3""Q@!*!D!RDL!*!I"!#3"A4PEA"XBA4P,@&XE'aTBR*KFQPPFbjiE@a\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YHKZSVASEU)!!!"`!!!"&`!\r!!53!!!B'!1dVl!!#0*F!!M5C!!8!!2rrrri!N!JE!*!%!J#3""H@!*!D!RDL!*!\rI"!#3"A4PEA"XBA4P,@&XE(0[GA*MCA-ZH'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88LTMD!#3#,ASF$#ek(!`!!!!H!!!!1X!!!%B!!!&VX58iZN!!M5A!!)dQJ!\r&!!$rrrrq!*!)'[m!!!!#!*!%&TB!N"S#GU)!N"m%!*!&G'9YF'aKG'8YCh*[GA"\rXDA0d,RKYE%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"PF()!N!Lf4e!lYNG31`!\r!!(`!!!$Y!!!!LJ!!!GCr*XU%!!)dP`!#0*X!"3!!rrrrrJ#3#"Vq!!!!!J#3""Q\r@!*!D!RDL!*!I"!#3"A4PEA"XBA4P,@GbEh9`E'PcG'aTBLjiE@a'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&45+Q0S!*!)YHK[6,ASEd`!!!"F!!!!``!!!4B!!!@ZClD\rbi!!#0*F!!M5F!!8!!2rrrri!N!JDr3!!!!)!N!3@PJ#3'J*fSJ#3(`3!N!9dC@e\r`E'&dC5eXD@jVEh*NCA)ZH'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88'9`FJ#\r3#,C(6rQf4e!'!!!!AJ!!!-8!!!#'!!!"eV&2TrB!!M5A!!)dR3!&!!$rrrrq!*!\r)'[`!!!!#!*!%'CB!N"S#GU)!N"m%!*!&G'9YF'aKG'8YE'PZDfpbC'9bE'PL,RK\rYE%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!LemDbPYP"k63!!!+)!!!*\rT!!!")!!!"JB&`r28!!)dP`!#0*i!"3!!rrrrrJ#3#"Vl!!!!!J#3""H@!*!D!RD\rL!*!I"!#3"A4PEA"XBA4P,A0PBA*MD'4TFR-ZH'eX4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K83eG*43#3#,D4*GDfNmhf!!!D6!!")%S!!!#5!!!"QS(Fe&`!!M5A!!)\rdR`!&!!$rrrrq!*!)'[S!!!!#!*!%%*B!N"S#GU)!N"m%!*!&G'9YF'aKG'8ZF(*\rU,RKYE%4@3e3!N"#fX%eB!*!'!4%!!M56!!!!!3#3("Vj!!!!"!!#!*!%$!!!!!J\r%"`#3'`*@SJ#3)h4PEA"XBA4P,A"`BdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rPF()!N!Lf4dqbYNG2XJ!!!(J!!!%K!!!!M!!!!GDr+aGV!!)dS!!#0+%!"3!!rrr\rrrJ#3#"Vi!!!!!J#3""Q@!*!D!R@L!*!I"!#3"A4PEA"XBA4P,@&XE'aTBR*KFQP\rPFbjiE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YHKZSVASEU)!!!"\r`!!!"&`!!!53!!!B'!1dVl!!#0+!!!M5L!!8!!2rrrri!N!JDp`!!!!)!N!3APJ#\r3'J*eSJ#3(`3!N!9dC@e`E'&dC5eKE'acEh9bBf9c,RKYE%C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&)UBfJ!N!Lek(!`YHK`-!!!!(J!!!$V!!!"'!!!"Dl%P1,T!!)\rdS!!#0+-!"3!!rrrrrJ#3#"Vf!!!!!J#3""D@!*!D!R@L!*!I"!#3"A4PEA"XBA4\rP,@GbEh9`E'PcG#jiE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&43CA"b!*!)YNG\r31lC(8$X!!!"m!!!!l3!!!)S!!!(@IbE+K!!#0+!!!M5N!!8!!2rrrri!N!JDp3!\r!!!)!N!3CPJ#3'J*eSJ#3(`3!N!9dC@e`E'&dC5eRFQpeF'aTFh4XD@)ZH'eX4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,ASEdbek'p-!!!!A!!!!--!!!%\r@!!!&VQHfXZ!!!M5J!!)dT3!&!!$rrrrq!*!)'[3!!!!#!*!%&TB!N"S#GD)!N"m\r%!*!&G'9YF'aKG'8YE'PZDfpbC'9b,RKYE%C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"PF()!N!Lf4drjYNG3"J!!!&i!!!$&!!!!KJ!!!GDa6kIf!!)dS!!#0+B!"3!\r!rrrrrJ#3#"Vc!!!!!J#3""Q@!*!D!R@L!*!I"!#3"A4PEA"XBA4P,@aTEQY[FQ4\rPFQaTBLjiE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YI'XTEC3HNd\r!!!#L!!!#D3!!!5!!!!B'"F2ce!!#0+!!!M5R!!8!!2rrrri!N!JDmJ!!!!)!N!3\rAPJ#3'J*eSJ#3(`3!N!9dC@e`E'&dC5ecC@&bBfKNDA*c,RKYE%C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%0A588!N!LfNkT8YT1ZDJ!!%(B!!0(f!!!!JJ!!!CV4DL$\r3!!)dS!!#0+J!"3!!rrrrrJ#3#"Va!!!!!J#3""#@!*!D!R@L!*!I"!#3"A4PEA"\rXBA4P,R"bDLjiE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YHIb&lA\rRmli!!!TZ!!!K#J#3#2hVN!$r!!25-3!%(+S!!`!!rrrrrJ#3#"QH!!!!!J#3"!k\r@!*!D!IUL!*!I"!#3"ACTC'9[FQ9KC'9b,R"j4&C$9!#3%,F,a8#h#m9%!!!!k!!\r!!--!!!!"!*!F&I3!!!!#!!)!N!3(!!!!#!3(!*!4i!#3#3(CiJ#3)e"XG@G*ER0\r'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Le+6[[Y`ZY3`!*,pS!&8!\re!!%FXJ!%A$@j"&Q9!!!!k!!"mI)!!`!!rrrrrJ#3#"Ae!!!!!J#3""#@!*!3`!#\r3#3(q`!#3(`J!N!9IG'YTER4PFLj`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8\r!!A0SE'*3HA4S!*!)X`@X!VF,V9-!!"%B!!"&2!!!!')!!!'11(mCj`!!!1J!!I(\rd!!-!!2rrrri!N!J9p`!!!!)!N!3,PJ#3%)!!N!N"rS)!N"m'!*!&3A"`,R"`Bbj\rcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!LblH%NY`ZY'`!!%R!\r!!#Z#!!!!BJ!!!C)jkiU,!!!!k!!"mI8!!`!!rrrrrJ#3#"Ai!!!!!J#3"!q@!*!\r3J!#3#3(qJJ#3(`B!N!9MB@aXC'aX,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!\r3"3!"FfKXBP"jG'J!N!Lbj+QRY`ZY@3!!$Q`!!#l8!!!!BJ!!!BkP4"K3!!!!k!!\r"mIB!!`!!rrrrrJ#3#"Aj!!!!!J#3"!U@!*!3J!#3#3(qJJ#3(`B!N!9ME5j`F'-\rZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZ5TS,F,V8N!!!-\r-!!!&8J!!!'J!!!'@pE4*M`!!!1J!!I(h!!-!!2rrrri!N!J9qJ!!!!)!N!36PJ#\r3%)!!N!N"rS)!N"m'!*!&3fpXEh*3D@0VCA)ZF("M,R0XBNC@3e3!N!F))!!!!3#\r3#!F!N"!&!!&cD'aL8(PdD!#3#,,Yi5Qh#kdJ!!!2)!!!*B-!!!"L!!!"MLF%!b-\r!!!$S!!(aq!!$!!$rrrrq!*!)&IX!!!!#!*!%#jB!N"#!!*!*!Ik#!*!I"J#3"@0\rdBLj`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZhKNEF\r,V@-!!!IN!!!A,J!!!'3!!!'12'%drJ!!!1J!!I(l!!-!!2rrrri!N!J9rJ!!!!)\r!N!3+PJ#3%)!!N!N"rS)!N"m'!*!&4QdZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F\r!N"!&!!&cD'aL8(PdD!#3#,,NUC!!Y`ZY*!!!,()!!&a5!!!!BJ!!!BkYVr%Q!!!\r!k!!"mI`!!`!!rrrrrJ#3#"Ar!!!!!J#3"!b@!*!3J!#3#3(qJJ#3(`B!N!9RC'*\rY,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!LblH'9Y`Z\rYD3!!"S3!!"3I!!!!BJ!!!Bl$@@Gq!!!!k!!"mId!!`!!rrrrrJ#3#"B!N!3#!*!\r%$*B!N"#!!*!*!Ik#!*!I"J#3"8KPE(!ZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F\r!N"!&!!&cD'aL8(PdD!#3#,,NUC+h#kdS!!!1,!!!*LX!!!"N!!!"NR(4Aim!!!$\rS!!(arJ!$!!$rrrrq!*!)&J%!!!!#!*!%$TB!N"#!!*!*!Ik#!*!I"J#3"@PMCfa\reC5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZhKQVF\r,V@i!!",k!!"1C3!!!')!!!'1`J-(j!!!!1J!!I(r!!-!!2rrrri!N!J@!J!!!!)\r!N!3,PJ#3%)!!N!N"rS)!N"m'!*!&5@0Z,R"`BbjcE'*'9N08!*!(##!!!!%!N!J\r(!*!3"3!"FfKXBP"jG'J!N!LblH'HY`ZYFJ!!%%`!!$6q!!!!CJ!!!BjIH$Ui!!!\r!k!!"mJ!!!`!!rrrrrJ#3#"B$!!!!!J#3"!b@!*!3J!#3#3(qJJ#3(`B!N!9-DA0\rd,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lbj$3DY`Z\rY,3!!#E)!!"QF!!!!C!!!!C*6,Hmq!!!!k!!"mJ%!!`!!rrrrrJ#3#"B%!!!!!J#\r3""'@!*!3J!#3#3(qJJ#3(`B!N!9YB@0cF'9PBfJZF("M,R0XBNC@3e3!N!F))!!\r!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,,NUD'h#ke1!!!([!!!&Zm!!!"S!!!"NZ#\rXRA3!!!$S!!(b!`!$!!$rrrrq!*!)&JB!!!!#!*!%%*B!N"#!!*!*!Ik#!*!I"J#\r3"9"bD@jdD@jR,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J\r!N!Lc#DAkY`ZYG`!!$#3!!#3I!!!!BJ!!!C*@Qapa!!!!k!!"mJ3!!`!!rrrrrJ#\r3#"B(!!!!!J#3"!k@!*!3J!#3#3(qJJ#3(`B!N!94C'pQCR-ZF("M,R0XBNC@3e3\r!N!F))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,,YiE#h#kep!!"XC!!"k*d!!!"\rJ!!!"MJ5C$Id!!!$S!!(b"3!$!!$rrrrq!*!)&JJ!!!!#!*!%#TB!N"#!!*!*!Ik\r#!*!I"J#3"9&d,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!\r)YTcETVDFfkB!!!")!!!!63#3##*QIC8!!!$S!!(b"J!$!!$rrrrq!*!)&JN!!!!\r#!*!%#TB!N"#!!*!*!Ik#!*!I"!#3"A*PB@4YC5jdH(4'9N08!*!(##!!!!%!N!J\r(!*!3"3!"FfKXBP"jG'J!N!LblH'dY`ZYJ3!!"2!!!!Y+!!!!BJ!!!BjAKG,8!!!\r!k!!"mJF!!`!!rrrrrJ#3#"B+!!!!!J#3"!f@!*!3J!#3#3(qJJ#3(`B!N!96Bh*\rKF#j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZhKZ,F\r,VBB!!"I@!!"-@3!!!'!!!!'1`1raT3!!!1J!!I))!!-!!2rrrri!N!J@#`!!!!)\r!N!3,PJ#3%)!!N!N"rS)!N"m'!*!&8fjN,R"`BbjcE'*'9N08!*!(##!!!!%!N!J\r(!*!3"3!"FfKXBP"jG'J!N!LblH'pY`ZYLJ!!#$i!!"A'!!!!CJ!!!C)Yc0lH!!!\r!k!!"mJN!!`!!rrrrrJ#3#"B-!!!!!J#3""'@!*!3J!#3#3(qJJ#3(`B!N!96EQ4\rTD'p[Dh-ZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,,\rYiFfh#kf2!!!4AJ!!1M)!!!"L!!!"MU,mk)F!!!$S!!(b#J!$!!$rrrrq!*!)&Jd\r!!!!#!*!%#TB!N"#!!*!*!Ik#!*!I"J#3"94&,R"`BbjcE'*'9N08!*!(##!!!!%\r!N!J(!*!3"3!"FfKXBP"jG'J!N!Lbj+QAY`ZY03!!PBB!!A3"!!!!BJ!!!Bi'%6M\r-!!!!k!!"mJX!!`!!rrrrrJ#3#"B1!!!!!J#3"!f@!*!3J!#3#3(qJJ#3(`B!N!9\rhBA0dC5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZ5\rTQEF,V6N!!&UF!!$0G3!!!'3!!!'1QQMalJ!!!1J!!I)0!!-!!2rrrri!N!J@%!!\r!!!)!N!3-PJ#3%)!!N!N"rS)!N"m'!*!&HQaTBLj`F'-ZFfaL4PC$9!#3"`JJ!!!\r"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YE1V*VF,V48!!*eU!!(PI`!!!')!!!'5j45\rL[3!$M)S!!ibE!!-!!2rrrri!N!JBK`!!!!)!N!32PJ#3%)!!N!N"rS)!N"m'!*!\r&F(PPH("KG#j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!\r)YV)GElF,V3d!!!5X!!!*!3!!!'B!!!'5Zi$cr`!#0-N!!M6,!!-!!2rrrri!N!J\rDl`!!!!)!N!34PJ#3%)!!N!N"rS)!N"m'!*!&Ah0jEA4KBQaP,R"`BbjcE'*'9N0\r8!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!LfXKeiY`ZY%3!!"8B!!!Vf!!!\r!C!!!!C+&J"Cm!!)db3!#0-d!!`!!rrrrrJ#3#"VY!!!!!J#3""'@!*!3J!#3#3(\rqJJ#3(`B!N!9IG'9cG'0KF'NZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N"!&!!&\rcD'aL8(PdD!#3#,Db(@+h#kd+!!!4jJ!!-cX!!!"S!!!"NMji+[8!!M6*!!)dd!!\r$!!$rrrrq!*!)'ZX!!!!#!*!%%*B!N"#!!*!*!Ik#!*!I"J#3"9phC@&VFQ9Q,R"\r`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lbj+QRY`ZY@3!\r!$Q`!!#l8!!!!BJ!!!BkP4"K3!!)db3!#00F!!`!!rrrrrJ#3#"VQ!!!!!J#3"!U\r@!*!3J!#3#3(qJJ#3(`B!N!9$E5j`F'-ZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!\r&!!&cD'aL8(PdD!#3#,Db(Xfh#kff!!!%X!!!#3%!!!"X!!!"PTYJQLX!!M6*!!)\rdbJ!$!!$rrrrq!*!)'[!!!!!#!*!%&*B!N"!J!*!*!IkJ!*!I"`#3"!&IFhPYG'&\rLE'8ZBf&bBQpZ,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!L\rfXKlGY`ZYZJ!!"8J!!!Vf!!!!E!!!!CCbjEU-!!)db3!#0-`!!`!!rrrrrJ#3#"V\rZ!!!!!J#3""5@!*!3)!#3#3(qS!#3(`F!N!3"Ah4PFh4MBA"T,Q0KFQ*[ELjcE'*\r'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YV)HZlF,VE-!!"(`!!!\rc1`!!!'J!!!'@9[DMhJ!#0-N!!M62!!-!!2rrrri!N!JDl!!!!!)!N!36PJ#3%#!\r!N!N"rU!!N"m(!*!%!9phC@&VFQ9Q,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!\r("`#3%!8!!A0SE'*3HA4S!*!)YT2#BVF,VIi!!"&U!!"'G`!!!'B!!!'5ClJpbJ!\r#0-N!!M65!!-!!2rrrri!N!JDk3!!!!)!N!31PJ#3%#!!N!N"rU!!N"m(!*!%!8&\r`F#jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,D\r6`Kkh#kh%!!!5GJ!!+j)!!!"N!!!"P[VM4a8!!M6*!!)de!!$!!$rrrrq!*!)'ZJ\r!!!!#!*!%%TB!N"!J!*!*!IkJ!*!I"`#3"!&MB@aXC'aX,Q0KFQ*[ELjcE'*'9N0\r8!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2#H,F,VJ-!!!iN!!!Y!3!\r!!'3!!!'14+pEi3!#0-N!!M6@!!-!!2rrrri!N!JDj`!!!!)!N!30PJ#3%#!!N!N\r"rU!!N"m(!*!%!80Y,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0\rSE'*3HA4S!*!)YT2#9VF,VIN!!!-'!!!&8J!!!'J!!!'D-[fjc`!#0-N!!M6B!!-\r!!2rrrri!N!JDj3!!!!)!N!3@PJ#3%#!!N!N"rU!!N"m(!*!%!80[E'pb8'PMDf9\rb,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2\r#KEF,VJJ!!!G)!!!8[`!!!'3!!!'1fkpER3!#0-N!!M6G!!-!!2rrrri!N!JDj!!\r!!!)!N!30PJ#3%#!!N!N"rU!!N"m(!*!%!8CY,Q0KFQ*[ELjcE'*'9N08!*!(##!\r!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2%!lF,VFJ!!#af!!"F8J!!!')!!!'\r53%(K0J!#0-N!!M6I!!-!!2rrrri!N!JDi`!!!!)!N!32PJ#3%#!!N!N"rU!!N"m\r(!*!%!@GNBQdZBf&bBQpZ,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"\rjG'J!N!LfR2ZjY`ZYd!!!#TS!!"S9!!!!CJ!!!C)N,2D*!!)db3!#01-!!`!!rrr\rrrJ#3#"VK!!!!!J#3""'@!*!3)!#3#3(qS!#3(`F!N!3"D@0RE(9P,Q0KFQ*[ELj\rcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2#QlF,VJi!!"2\r)!!"5X`!!!'B!!!'5PP#[[!!#0-N!!M6P!!-!!2rrrri!N!JDi!!!!!)!N!31PJ#\r3%#!!N!N"rU!!N"m(!*!%!8PMELjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F\r!N"!&!!&cD'aL8(PdD!#3#,D6`ULh#ki8!!!3h!!!1,X!!!"N!!!"NXb9Yi-!!M6\r*!!)dj`!$!!$rrrrq!*!)'Ym!!!!#!*!%$jB!N"!J!*!*!IkJ!*!I"`#3"!&-DA0\rd,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2\r$rVF,VEi!!*ei!!(PM`!!!'J!!!'@5,!IeJ!#0-N!!M6X!!-!!2rrrri!N!JDh3!\r!!!)!N!35PJ#3%#!!N!N"rU!!N"m(!*!%!A"jCAK`BA3ZBf&bBQpZ,R0XBNC@3e3\r!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!LfNm+qY`ZZ'!!!$$!!!#3r!!!\r!C!!!!C+DN!"a%!!#0-N!!M6Z!!-!!2rrrri!N!JDh!!!!!)!N!34PJ#3%#!!N!N\r"rU!!N"m(!*!%!9&NEfCQFbjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!\r&!!&cD'aL8(PdD!#3#,D6a"5h#kiG!!"T,!!"ekF!!!"N!!!"ML2$kRd!!M6*!!)\rdm!!$!!$rrrrq!*!)'YX!!!!#!*!%$CB!N"!J!*!*!IkJ!*!I"`#3"!&4G#jMBA*\rLEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,DFr#Uh#ki\rK!!!%E!!!#Y8!!!"S!!!"NQ`&#FB!!M6*!!)dm`!$!!$rrrrq!*!)'YS!!!!#!*!\r%%*B!N"!J!*!*!IkJ!*!I"`#3"!&6Bh*KF#jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!\r"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,D6`Z1h#kiQ!!!8+J!!2H`!!!"Q!!!"NTC\rhfHB!!M6*!!)dp3!$!!$rrrrq!*!)'YN!!!!#!*!%$TB!N"!J!*!*!IkJ!*!I"`#\r3"!&6EQ3ZBf&bBQpZ,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J\r!N!LfNm,`Y`ZZ+J!!#$`!!"A'!!!!DJ!!!CBRYr"B!!)db3!#02F!!`!!rrrrrJ#\r3#"VB!!!!!J#3""5@!*!3)!#3#3(qS!#3(`F!N!3"8fjND@K[EfYc,Q0KFQ*[ELj\rcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT%PNEF,VLi!!"'\rU!!!m"3!!!'3!!!'1VDNJ+J!#0-N!!M6j!!-!!2rrrri!N!JDe`!!!!)!N!30PJ#\r3%#!!N!N"rU!!N"m(!*!%!94&,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#\r3%!8!!A0SE'*3HA4S!*!)YTd"p,F,VGJ!!0aq!!),k!!!!'J!!!'5d5J6S!!#0-N\r!!M6p!!-!!2rrrri!N!JDe3!!!!)!N!33PJ#3%#!!N!N"rU!!N"m(!*!%!AGKFh4\rP,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2\r%"EF,VGd!!&UL!!$0G3!!!'B!!!'5TmZ)bJ!#0-N!!M8!!!-!!2rrrri!N!JDe!!\r!!!)!N!32PJ#3%#!!N!N"rU!!N"m(!*!%!ATXD@)ZBf&bBQpZ,R0XBNC@3e3!N!F\r))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,EGRRZh#khb!!!"q!!!!f%!!!"U!!!\r"PN*La3S!#$p&!!Jr5J!$!!$rrrrq!*!)((J!!!!#!*!%%jB!N"$J!*!*!IlL!*!\rI"!#3"9pdDfPZG'9b,Q0KFQ*[ELjcE'*%9N08!*!3Y`[&4EF,a8B!!!$T!!!!``!\r!!!%!N"`@%3!!!!)!!J#3"!F!!!!)"!F!N"X"fD)!N#0cBh*TF(4c4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4*Zbed5E!!!#i!!!"P3!N!JM3*B3!!!\r!k3!"mK%!!`!!rrrrrJ#3#"B8!!!!!J#3"!k@!*!D!IqL!*!I"!#3"8*eD@aN3A"\r`E'9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&bFh*M8P0&4!#3#,84I,1f`HYD!*!\r+"!3!!!ZAhL&D&!!!!1N!!I)5!!-!!2rrrri!N!J@&3!!!!)!N!33PJ#3'J(rSJ#\r3(`3!N!9#G@PXC%&`F'aPG#jbFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,A4*ZfAaB3!!!&MJ!!$&3!N!L6`)Zk!!!!k3!"mK-!!`!!rrrrrJ#3#"B\r@!!!!!J#3""1@!*!D!IqL!*!I"!#3"8*eD@aN3A"`E'PMBA4TEfiZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!A*cFQ058d9%!*!)YL*6`lE"ke3!N!S&*J!!$N2[b35H!!!\r!k3!"mK3!!`!!rrrrrJ#3#"BA!!!!!J#3""@@!*!D!IqL!*!I"!#3"8*eD@aN3A"\r`E'PMBA4TEfiZFR0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed5\rEYZN+FJ!!"ji!!"9H!*!)Kk&G"3!!!1N!!I)@!!-!!2rrrri!N!J@'3!!!!)!N!3\r5PJ#3'J(rSJ#3(`3!N!9$EfjQD@GeFQ93HA4SEfiZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!A*cFQ058d9%!*!)XdSi6lES+&F!N!S-JJ!!)RFIJN!I!!!!k3!"mKF!!`!\r!rrrrrJ#3#"BD!!!!!J#3""5@!*!D!IqL!*!I"!#3"80[EQCTCh9bC9"jG'K[ELj\rbFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4*kbed5H!!!"9J!\r!!PX!N!MU$1NM!!!!k3!"mKJ!!`!!rrrrrJ#3#"BE!!!!!J#3"!H@!*!D!IqL!*!\rI"!#3"@0bE'BZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%R,D\rFfk`!!!HF!!!9p`#3#%"R6ZF!!!$T!!(b'3!$!!$rrrrq!*!)&K`!!!!#!*!%%TB\r!N"S"rk)!N"m%!*!&4@4TG&"jG'K[EP"bC@Cc,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&bFh*M8P0&4!#3#,9"Q(5f`HY"!*!+$V3!!#5'EGCi9J!!!1N!!I)D!!-!!2r\rrrri!N!J@(3!!!!)!N!38PJ#3'J(rSJ#3(`3!N!9&C'Pd8(PdD'pZ8(*PCR-ZFR0\rbBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbed5FYK8aJ`!!"0!!!!b\rN!!!!G!!!!CSGYk2X!!!!k3!"mKX!!`!!rrrrrJ#3#"BH!!!!!J#3""5@!*!D!Iq\rL!*!I"!#3"89NDA43HA4SEfj3FQ9QFd*),Q*S4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r58e*$8P0&4!#3#,EQe6DfjY8f!*!+"Ai!!""8-1B@c3!!!1N!!I)F!!-!!2rrrri\r!N!J@(`!!!!)!N!3@PJ#3'J(rSJ#3(`3!N!9&C'Pd8(PdD'pZ8(*PCR0#5#jbFh*\rM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,,mEV@fGXIa!!#!U!!"I*S\r!N!Kd85Rj!!!!k3!"mKd!!`!!rrrrrJ#3#"BJ!!!!!J#3"!U@!*!D!IqL!*!I"!#\r3"@9bFQpbFbjdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XZ-$qV,\rM!rS!!!+!!!!%HJ#3#'hb5L!!!!$T!!(b(J!$!!$rrrrq!*!)&L%!!!!#!*!%$jB\r!N"S"rk)!N"m%!*!&CQPZC'GbC@eXD@jc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,A4*qbed5I!!!#FJ!!"0B!N!J4-H-@!!!!k3!"mL!!!`!!rrr\rrrJ#3#"BM!!!!!J#3"!q@!*!D!IqL!*!I"!#3"@CTH'CTE'9dHA"PFbj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed5JYYfMT3!!$1i!!#QJ!!!!U!!\r!!GEQh)N-!!!!k3!"mL)!!`!!rrrrrJ#3#"BP!!!!!J#3"!b@!*!D!IqL!*!I"!#\r3"@CeE'aLG@PXC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"FR0bBe*6483!N!LfVf1\rlYUpMZ`#3#J,+!!!'NM!@4'8!!!$T!!(b)`!$!!$rrrrq!*!)&LB!!!!#!*!%$TB\r!N"S"rk)!N"m%!*!&CR9XE'*eD@aN,R*cFQ0'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)XYG%S,A)Vqm!!"Z-!!"IB3#3#032q+3!!!$T!!(b*!!$!!$rrrr\rq!*!)&LF!!!!#!*!%%CB!N"S"rk)!N"m%!*!&Cf9ZFh9TG'9YEf4eE'8ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XZhINE,Yhj%!!!)m!!!%I!#3#0-\rjq!m!!!$T!!(b*3!$!!$rrrrq!*!)&LJ!!!!#!*!%$*B!N"S"rk)!N"m%!*!&E@&\rVC@0XC@&Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8T3M1fbaP\rG!!!*5!!!(-J!N!L0DTb+!!!!k3!"mLB!!`!!rrrrrJ#3#"BT!!!!!J#3"!U@!*!\rD!IqL!*!I"!#3"8eV4'PcG()ZF(P'9N08!*!(##!!!!%!N!J(!*!5!A*cFQ058d9\r%!*!)YZE90VEQe6B!N!S#pJ!!"CQ"bIYV!!!!k3!"mLF!!`!!rrrrrJ#3#"BU!!!\r!!J#3"!b@!*!D!IqL!*!I"!#3"8eV4'PcG()ZFR0bBdC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbed5GYV&R1`!!#e!!!#-*!*!)*`N$S3!!!1N!!I)S!!-\r!!2rrrri!N!J@+`!!!!)!N!30PJ#3'J(rSJ#3(`3!N!90Dd4TFh4bAh9T,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4+#fH!Z,!!!%D!!!$5J!N!J\rNMF6#!!!!k3!"mLN!!`!!rrrrrJ#3#"BX!!!!!J#3"!b@!*!D!IqL!*!I"!#3"@e\rVCA0dFR*PFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed5GXYG\r%R3!!!Q!!!!9#!*!)l@)$b!!!!1N!!I)V!!-!!2rrrri!N!J@,J!!!!)!N!30PJ#\r3'J(rSJ#3(`3!N!93B@0V6'PL4'Pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&bFh*\rM8P0&4!#3#,EQe6DfjY8f!*!+!jB!!!X,!3*q[3!!!1N!!I)X!!-!!2rrrri!N!J\r@,`!!!!)!N!32PJ#3'J(rSJ#3(`3!N!93B@0V6'PL4'Pb,R*cFQ0'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%SE,A4+%!!!(J!!!$@J#3#&KG%Yd!!!$\rT!!(b,3!$!!$rrrrq!*!)&M!!!!!#!*!%"TB!N"S"rk)!N"m%!*!&FR9Z,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4*feGE#H!!!$m!!!#Hd!N!L\r(Ii0M!!!!k3!"mLi!!`!!rrrrrJ#3#"Ba!!!!!J#3"!q@!*!D!IqL!*!I"!#3"9*\reENaTBP0MFQP`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"FR0bBe*6483!N!LfjY8\rfYZE90`#3#J@3!!!!$1A8E[qF!!!!k3!"mLm!!`!!rrrrrJ#3#"Bb!!!!!J#3""'\r@!*!D!IqL!*!I"!#3"9*eENaTBP0MFQP`G#jbFh*M4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,A4+'bed5K!!!$L!!!#&-!N!JKlhFr!!!!k3!"mM!!!`!\r!rrrrrJ#3#"Bc!!!!!J#3"!Q@!*!D!IqL!*!I"!#3"A9ZFfKKFLj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf4dKHYUpMZ`!!"ri!!"Mq!!!"fJ!!"`6\r"6c#q!!)e!J!#04-!!`!!rrrrrJ#3#"V6!!!!!J#3""5@!*!D!IqL!*!I"!#3"@G\rPER"XG@GTER"bEfTPBh4c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,D6TZbfR0ZY!!!%i!!!#`m!N!M%QNBd!!)e!J!#04B!!`!!rrrrrJ#3#"V5!!!\r!!J#3""H@!*!D!IqL!*!I"!#3"@eTFh0TEQGMBA*LEfjYCA4SEf4c,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,CGVAQfX-`Y!!!*P!!!($d!!!%F!!!\r&VYJJD@B!!M8#!!)e)3!$!!$rrrrq!*!)'Y%!!!!#!*!%#TB!N"S"rk)!N"m%!*!\r&G@jhC@&fC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld8dM1Y&0\r*"J!!!8i!!!*P!!!"AJ!!"DjD-a0h!!)e!J!#05)!!`!!rrrrrJ#3#"V3!!!!!J#\r3"!k@!*!D!IqL!*!I"!#3"ATKF("jBfCTE'9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88LTMD!#3#,D`[1bfX,cX!!!!CJ!!!(X!N!L"XU*h!!E%D!!'a)N!!`!\r!rrrrrJ#3#"ZT!!!!!J#3"!k@!*!D!IqL!*!I"!#3"A9ZGf9KGQ8ZBfpZCQPR4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,D`Yk@fX,HP!!!!CJ!!!(X!N!L\r"XU*h!!E%D!!'a)X!!`!!rrrrrJ#3#"ZS!!!!!J#3""'@!*!D!IqL!*!I"!#3"A9\rZGf9KGQ8ZF(NZBfpZCQPR4PC$9!)3B!)!!!!))!!J!3#3#!F!N"!&!!&"8&"-8(P\rdB5!!N!HfpU28Y[DMe3!!!DJ!!!-%!!!TjJ!!PZ[(1a'8!!LNG!!)T*-!!`!!rrr\rrrJ#3#"b[!!!!!J#3"!H@!*!D!IqL!*!I"!#3"A9ZGf9KGQ9%9N08!*!3Y`[&5,F\r,a8S!!!$U!!!!``!!!!%!N"`@0!!!!!)!!J#3"!8!!!!)"!F!N"X"fD)!N#08Efp\rXFd4@3e3!N"#h#m9)Y`[&4`!!!1X!!!$U!!!!!3#3("Be!!!!!`!#!*!%!`!!!!J\r%"`#3'`)!SJ#3)d0(58C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le&1i\r)YA@`U!!!!h`!!!HG!*!)qaHBQJ!!!1X!!I)d!!3!!2rrrri!N!J@0`!!!!)!N!3\r4PJ#3'J)"SJ#3(`3!N!9#G@PXC%0(58&`F'aPG#j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"FR0bBe*6483!N!Lf&+qAYX(Uh!#3#J%5!!!"E0A!Jkd!!!$V!!(b03!%!!$\rrrrrq!*!)&MJ!!!!#!*!%%jB!N"S#!D)!N"m%!*!&3R9TE'4$4dP"F("XCA3ZFR0\rbBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!Le&1i)Y46Z#!!!"9S!!!Z\r[!*!))m*92`!!!1X!!I)f!!3!!2rrrri!N!J@13!!!!)!N!31PJ#3'J)"SJ#3(`3\r!N!9$4dPI8N9"4%e&,R4iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\re&1i)Y46Z#!!!#HB!!"Gk!*!)j&RAj`!!!1X!!I)i!!3!!2rrrri!N!J@1`!!!!)\r!N!34PJ#3'J)"SJ#3(`3!N!93HA4SEfj$4dP6E'&fC5j`H8C@3e3!N!F))!!!!3#\r3#!F!N")"FR0bBe*6483!N!Lf&+qAYX(Ui!#3#J%3!!!"E"C@E8)!!!$V!!(b13!\r%!!$rrrrq!*!)&M`!!!!#!*!%%jB!N"S#!D)!N"m%!*!&8(PdD'pZ3dG*8faKGQ8\rZFR0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&0d6@`!N!LeVl+@YFc"93!!""3\r!!!K&!!!!6!!!!6j!ELUL!!1-bJ!$M-i!"!!!rrrrrJ#3#"L&!!!!!J#3"!L@!*!\rD!J'L!*!I"!#3"@0RD5jSG'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#\r3#,@[XQUeVl*U!*!9!ic+!!1-d3!%!!$rrrrq!*!)')3!!!!#!*!%&CB!N"S#!D)\r!N"m%!*!&8(PdD'pZ3dG*8faKGQ8ZCA*bEh*c4PC$9!)3J!#3"!JJ!#!"!*!)"`#\r3%!8!!8&38%a3HA4K)!#3"lF,a"5h#m3@!!!"TJ!!!`3!!"jb!!"i2+pJiL3!"hV\r0!!GkcJ!%!!$rrrrq!*!)('%!!!!#!*!%$TB!N"S#!D)!N"m%!*!&3R9TE'4$4dP\r"F("XCA4'9N08!K#!!*!%##!!)!%!N!J(!*!3"3!"39"36&"jG'%J!*!(Y`[%%EF\r,a"-!!!'Q!!!$"!!!*iB!!)b`pbEKD`!(HXd!"hV6!!3!!2rrrri!N!JFB!!!!!)\r!N!31PJ#3'J)"SJ#3(`3!N!93HA4SEfj$4dP6E'&fC84@3e3!N"#h#m9)Y`[&53!\r!!1`!!!$U!!!!!3#3("Bp!!!!!`!#!*!%!`!!!!J%"`#3'`)!SJ#3)dP%48C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HeNYA@`b3!!!M!!!!4k!*!)mqY\rAJ!!!!1`!!I)l!!3!!2rrrri!N!J@2J!!!!)!N!3,PJ#3'J)#SJ#3(`3!N!9#G@P\rXC%P%45j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HeNY%RYC!!\r!"c)!!"ID!*!)c+TGi`!!!1`!!I)m!!3!!2rrrri!N!J@2`!!!!)!N!32PJ#3'J)\r#SJ#3(`3!N!9'Efjd8f9dG'PZCh-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)Y%RYCEE8@@F!!!0%!!!+*`#3#-jR)Q`!!!$X!!(b23!%!!$rrrrq!*!\r)&N!!!!!#!*!%#jB!N"S#!U)!N"m%!*!&6@&M8(*PCR-ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y%RYCE4*l@8!!!AS!!!6[J#3#-ZfIMm!!!$X!!(\rb2J!%!!$rrrrq!*!)&N%!!!!#!*!%%*B!N"S#!U)!N"m%!*!&6@pNG@aP3R*[Gh0\rPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HePY%RYC3!!"%!\r!!!Y-!*!)"fY3"J!!!1`!!I)r!!3!!2rrrri!N!J@3J!!!!)!N!34PJ#3'J)#SJ#\r3(`3!N!93FQpQD@aP3R*[Gh0PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Ld5HePYX3KBJ!!$XS!!#jI!*!)9hXjrJ!!!1`!!I*!!!3!!2rrrri!N!J\r@3`!!!!)!N!3-PJ#3'J)#SJ#3(`3!N!93H8*bEhGcCA)ZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y%RYCVDFfkF!!!`k!!!X0`#3#&T$BJ3!!!$X!!(\rb33!%!!$rrrrq!*!)&N3!!!!#!*!%$*B!N"S#!U)!N"m%!*!&8(P$EfjcEfaP,R"\rj4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,4*l@Dd5HeQ!!!BZJ!!BU3\r!N!KFhdAh!!!!l!!"mN)!"!!!rrrrrJ#3#"C&!!!!!J#3"!f@!*!D!J+L!*!I"!#\r3"9"j4'9LG@GRCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%R\rYCVDkSh`!!!V+!!!HmJ#3###615m!!!$X!!(b3`!%!!$rrrrq!*!)&NB!!!!#!*!\r%$TB!N"S#!U)!N"m%!*!&8(P%Ef06C@&bBfJZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)Y%RYCVDkSh`!!#E+!!#3!-X!!!$!!!!"rMRRi"8!!!$X!!(\rb4!!%!!$rrrrq!*!)&NF!!!!#!*!%#CB!N"S#!U)!N"m%!*!&8(P&C'Pd,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,4*l@HfZU0m!!!(MJ!!%,S!N!J\r,DLkH!!!!l!!"mN8!"!!!rrrrrJ#3#"C)!!!!!J#3"!b@!*!D!J+L!*!I"!#3"9"\rj4QpZG'PQH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HeRY%R\rYC`!!"")!!!Vk!*!)8e`-bJ!!!1`!!I*'!!3!!2rrrri!N!J@53!!!!)!N!33PJ#\r3'J)#SJ#3(`3!N!93H8PZG'9bB@0dDACP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,4*l@Hd5HeR!!!"jJ!!"#S!N!J8Y`@$!!!!l!!"mNF!"!!!rrr\rrrJ#3#"C+!!!!!J#3"!b@!*!D!J+L!*!I"!#3"9"jG'K[ENP%45j`H8C@3e3"!)!\r!N!3))!!J!3#3#!F!N")"FR0bBe*6483!N!Ld5HeRYX(V*`#3#KIJ!!!eSYa'Na)\r!!!$X!!(b5!!%!!$rrrrq!*!)&NX!!!!#!*!%$TB!N"S#!U)!N"m%!*!&8(PdD'p\rZ584&,R*cFQ0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYClE0Z&`\r!!!R-!!!Ji`#3#,mljZ`!!!$X!!(b53!%!!$rrrrq!*!)&N`!!!!#!*!%%*B!N"S\r#!U)!N"m%!*!&8(PdD'pZ584&6@&TELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Ld5HeRYY4Bi3!!"LJ!!!pf!*!))3!Vf!!!!1`!!I*+!!3!!2rrrri\r!N!J@63!!!!)!N!3*PJ#3'J)#SJ#3(`3!N!96F'aKFfJZF(P'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)Y%RYCl4*l@F!!!'Z!!!$EJ#3#'UbPVm!!!$X!!(\rb5`!%!!$rrrrq!*!)&Ni!!!!#!*!%"*B!N"S#!U)!N"m%!*!&9bj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HeSYXfq%`!!$YB!!$#h!*!)XRBp8!!\r!!1`!!I*-!!3!!2rrrri!N!J@6`!!!!)!N!32PJ#3'J)#SJ#3(`3!N!9ABA"`E'P\rMBA4TEfiZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYD,D6TZN\r!!"2`!!"*p`#3#'+6ajm!!!$X!!(b63!%!!$rrrrq!*!)&P!!!!!#!*!%#*B!N"S\r#!U)!N"m%!*!&9f*KFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)Y%RYD,D6TZN!!!JJ!!!Re3#3#'+%UM%!!!$X!!(b6J!%!!$rrrrq!*!)&P%!!!!\r#!*!%$*B!N"S#!U)!N"m%!*!&9f0[ER4bEfac,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&bFh*M8P0&4!#3#,EQe6@fjY8e!*!+#Bi!!"0hbP+m9!!!!1`!!I*2!!3!!2r\rrrri!N!J@8J!!!!)!N!3-PJ#3'J)#SJ#3(`3!N!9AD@4RCA4c,R*cFQ0'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYD,@'lDB!!!&m!!!$LJ#3#"0Eadd\r!!!$X!!(b8!!%!!$rrrrq!*!)&P-!!!!#!*!%#*B!N"S#!U)!N"m%!*!&9fYPHA-\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYD,D6TZN!!!aF!!!\rZa`#3#%5KQ*B!!!$X!!(b83!%!!$rrrrq!*!)&P3!!!!#!*!%#CB!N"S#!U)!N"m\r%!*!&9faTFh4c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,4*l@Q\rfR0ZS!!!(%J!!'9-!N!KAH8K8!!!!l!!"mP)!"!!!rrrrrJ#3#"C9!!!!!J#3"!Q\r@!*!D!J+L!*!I"!#3"9GYC@jeFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Ld5HeTYT1Qk3!!!m!!!!Y$!*!)pMfT!J!!!1`!!I*6!!3!!2rrrri!N!J\r@9J!!!!)!N!30PJ#3'J)#SJ#3(`3!N!9AFA9TBfYdD@eP,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,4*l@Qd5HeT!!!-`J!!+3)!N!LjP9-"!!!!l!!\r"mP3!"!!!rrrrrJ#3#"CA!!!!!J#3"!U@!*!D!J+L!*!I"!#3"9GcEf0VCA3ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYDEDkSh`!!"QF!!"Y#`#\r3#2LT9e%!!!$X!!(b93!%!!$rrrrq!*!)&PJ!!!!#!*!%#*B!N"S#!U)!N"m%!*!\r&9h4PH(3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYDE8P2%B\r!!!B#!!!8Y3#3#%RKXM)!!!$X!!(b9J!%!!$rrrrq!*!)&PN!!!!#!*!%$CB!N"S\r#!U)!N"m%!*!&9h4bB@0PBQ&MDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Ld5HeTYT1QkJ!!%[S!!%$q!*!)dP+EK`!!!1`!!I*A!!3!!2rrrri!N!J\r@@J!!!!)!N!3,PJ#3'J)#SJ#3(`3!N!9AGfPZC'phFbj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!LeKZfRYBEYT`!!!2J!!!'G!*!)#d,%Z3!$M03!!ic\rY!!3!!2rrrri!N!JBJ`!!!!)!N!3,PJ#3'J)#SJ#3(`3!N!9AE@PZD@&`F#j`H84\r@3e3!N"#h#m9+Y`[&5J!!!1d!!!$U!!!!!3#3("CE!!!!!`!#!*!%#3!!!!J%"`#\r3'`)!SJ#3)feKBfCbC@9kC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbed5(YA6TG3!!!N)!!!9$!*!)4D6k#!!!!1d!!I*C!!3!!2rrrri!N!J@A!!!!!)\r!N!30PJ#3'J)$SJ#3(`3!N!9NDA*PBh4TGQ9c,R"j4&C$9!#3%,8kFe'e1R03!!!\r!lJ!!!1d!!!!"!*!F&Pd!!!!%!!)!N!3&!!!!#!3(!*!E!J1L!*!MD'9XE'p'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%L,,A4)J!!!"5!!!!A`#3#,K\r[3m8!!!$Z!!(bC!!&!!$rrrrq!*!)&Pi!!!!#!*!%#*B!N"S#"+)!N"m%!*!&D'9\rXE'mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y"T[bE4*kMX!!!2\rB!!!*13#3#(VKCY%!!!$Y!!(b@J!%!!$rrrrq!*!)&Pm!!!!#!*!%$*B!N"S#!k)\r!N"m%!*!&E@&MCR*PCATP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&bFh*M8P0&4!#\r3#,EQe6@fjY8e!*!+!IJ!!!1-rR-jV`!!!1d!!I*E!!3!!2rrrri!N!J@B!!!!!)\r!N!31PJ#3'J)$SJ#3(`3!N!9YB@0QFQ9PHQ8ZFR0bBdC@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbed5(YA@`qJ!!"C)!!""e!*!)`jPTZ`!!!1d!!I*F!!3\r!!2rrrri!N!J@B3!!!!)!N!32PJ#3'J)$SJ#3(`3!N!9YB@0QFQ9PHQ9RG@NZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%KlEGLTN!!!NX!!!B2!#\r3#2h5$0N!!!$Y!!(bA3!%!!$rrrrq!*!)&Q)!!!!#!*!%$CB!N"S#!k)!N"m%!*!\r&E@&MCf9ZAf*TELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed5\r)XYG%L!!!!*`!!!$R!*!*Ur4Y!!!!l3!"mPi!"!!!rrrrrJ#3#"CM!!!!!J#3"!k\r@!*!D!J1L!*!I"!#3"@eKBfGPEPpTEQC[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,A4)Lbed5)!!!"e!!!!qB!N!M@PbT#!!!!l3!"mPm!"!!!rrr\rrrJ#3#"CN!!!!!J#3"!k@!*!D!J1L!*!I"!#3"@eKBfGPEPpbFh*M,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4)Ld3f6I!!!&cJ!!$i3!N!LpKG%\rL!!!!l3!"mQ!!"!!!rrrrrJ#3#"CP!!!!!J#3"!f@!*!D!J1L!*!I"!#3"@eKBfG\rPEPpcFQ-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%L,,A8TJ\r!!!#F!!!!k3#3#,Z*KZ`!!!$Y!!(bB3!%!!$rrrrq!*!)&QB!!!!#!*!%$TB!N"S\r#!k)!N"m%!*!&E@&MCf9ZCA*KG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)XYG%L,EGKjX!!!5D!!!+i!#3#&h@-AX!!!$Y!!(bBJ!%!!$rrrrq!*!\r)&QF!!!!#!*!%%TB!N"S#!k)!N"m%!*!&E@&ME@pNG@aPCQPZC'9b,R"j4&C$9!#\r3#[q3"!%(Y`[%S,F,a+%!!!%3!!!""!!!!!%!N"`B(J!!!!)!!J#3"!B!!!!)"3F\r!N"X#)!!"!*!LEAGPFQYc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,\rA4)feT5pT!!!%!J!!#$F!!!#!!!!"QQQb(pd!!!%3!!'V1J!$!!$rrrrq!*!)'"m\r!!!!#!*!%$*B!N"S#,!!"!*!H"3#3"@9bFQj[Ah9ZDAJZD%C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9%0A588!N!Lbed50YFYER`!!!`3!!!F1!!!!IJ!!!CU@D(Nk!!!\r"%!!"UcX!!`!!rrrrrJ#3#"JJ!!!!!J#3""D@!*!D!L`!!3#3(J8!N!9YGf9bDh0\rIBA"`E'9dAf0[EQCTCbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,\rA4)ffPJ`,!!!$IJ!!"pi!!!#3!!!!!CSS9+$4!!!"%!!"Uc`!!`!!rrrrrJ#3#"J\rK!!!!!J#3""Q@!*!D!L`!!3#3(J8!N!9YGf9bDh0IEQpZFfKKFQ9NAf0[EQCTCbj\rS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4)feSQ2#!!!"*J!!!IS\r!!!"f!!!"QRA9@J!!!!%3!!'V23!$!!$rrrrq!*!)'#)!!!!#!*!%&TB!N"S#,!!\r"!*!H"3#3"@ehCA*VFep`E(9RD@jIBfpZCQPR,QK'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&4$9dP&!*!)XYG%MEA,@i-!!!1q!!!)P3!!!(J!!!'D654Z@J!!!4!!!DX\rq!!-!!2rrrri!N!JB)`!!!!)!N!3@PJ#3'J)X!!%!N"i&!*!&EAGPFQYcAh0SBA*\rPC&pMEfjQD@FZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbed50YTB\r,M`!!!hi!!!IB!!!"CJ!!!CSQcEK#!!!"%!!"Ucm!!`!!rrrrrJ#3#"JN!!!!!J#\r3""@@!*!D!L`!!3#3(J8!N!9YGf9bDh0IFfeKE'aIBfpZCQPR,QK'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y+UR)EA,@hF!!!0H!!!(SJ!!!(J!!!'Dd%H\ra43!!!4!!!DY!!!-!!2rrrri!N!JB*3!!!!)!N!3EPJ#3'J)X!!%!N"i&!*!&EAG\rPFQYcAh4SFQ9KC(0YB@aXAf0[EQCTCbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r83eG*43#3#,,A4)fe1QS$!!!!p!!!!DX!!!"i!!!"QNc@'Y`!!!%3!!'V33!$!!$\rrrrrq!*!)'#B!!!!#!*!%'*B!N"S#,!!"!*!H"3#3"@ehCA*VFepdDh"XG@GTEPp\rMEfjQD@FZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Le2P81YTB,KJ!\r!!pS!!!M*!!!!J!!!!CT%$FL+!!0PE!!$C@m!!`!!rrrrrJ#3#"L#!!!!!J#3""D\r@!*!D!L`!!3#3(J8!N!9YGf9bDh0IBf&bBQpZAf0[EQCTCbjS4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K83eG*43#3#,9j3#UebeYM!!!$V!!!#(N!!!#!!!!"QN"%6r!\r!!f9X!!0PF!!$!!$rrrrq!*!)')%!!!!#!*!%'TB!N"S#,!!"!*!H"3#3"@ehCA*\rVFepMBA*LEfjRGA0TAf0[EQCTCbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG\r*43#3#,D4*2UfN56m!!!"P!!!!VX!!!"f!!!"QMCE3E-!!MGS!!)hE3!$!!$rrrr\rq!*!)'Xm!!!!#!*!%(*B!N"S#,!!"!*!H"3#3"@ehCA*VFepMBA*LEfj`E(9RD@j\rIBfpZCQPR,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YSdQXlDFfkN\r!!!3X!!!*$`!!!(J!!!'DmP+c)!!#0fJ!!MG[!!-!!2rrrri!N!JDcJ!!!!)!N!3\rBPJ#3'J)X!!%!N"i&!*!&EAGPFQYcAfjcBf&bBQpZAf0[EQCTCbjS4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K83eG*43#3#,D'T@#fKU@q!!!%8J!!#DS!!!"f!!!"QS,\r!E+J!!MGS!!)hFJ!$!!$rrrrq!*!)'Xd!!!!#!*!%'*B!N"S#,!!"!*!H"3#3"@e\rhCA*VFepcD'0KFQ*[EPpMEfjQD@FZD%4@3e3!N!VrN!3""lF,a*kh#m5H!!!""3!\r!!33!!!!"!*!F&k`!!!!#!!)!N!3&!!!!#!8(!*!E!L!!!3#3)N*eD@aN4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&069"b3eG*43#3#,BhB9Df0f&@!!!4%!!!KKS!N!L[2D9\r3!!!""3!"Ua!!!`!!rrrrrJ#3#"Ie!!!!!J#3"!D@!*!D!L%!!3#3(J8!N!9iH#j\r`FQT'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YMGK9VBhB9B!!!!3!!!\r!"`#3#!*f,$i!!!%&!!'V%3!$!!$rrrrq!*!)&rB!!!!#!*!%#TB!N"S#)3!"!*!\rH"3#3"AKi,R"bDLjPH("%9N08!*!+rj!%!3Hh#m5IY`[%R`!!!3m!!!%%!!!!!3#\r3("JA!!!!!J!#!*!%"`!!!!J&"`#3'`)J!!%!N#**EQ0XG@4P4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K83eG*43#3#,4*kMUfVf1U!!!6bJ!!5[d!!!"q!!!"QSB5Jq%\r!!!%2!!'V-`!$!!$rrrrq!*!)'"J!!!!#!*!%#*B!N"S#+`!"!*!H"3#3"@0[EQC\rTCbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4'+bed4L!!!#XJ!\r!"5m!N!MRYS+%!!!"$`!"Uc3!!`!!rrrrrJ#3#"JC!!!!!J#3""+@!*!D!LX!!3#\r3(J8!N!9RCA4KF("XBRPMFQ9KG'pb,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r$9dP&!*!)XYG%BVF,`mN!!!!D!!!!%3!!!(S!!!'D4(XLG`!!!3m!!DXe!!-!!2r\rrrri!N!JB'J!!!!)!N!3-PJ#3'J)V!!%!N"i&!*!&E@&MBR9TE'4ZEbjS4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4'+eP8LT!!!"X!!!!ZJ!!!"f!!!\r"QVEjHZ8!!!%2!!'V0J!$!!$rrrrq!*!)'"X!!!!#!*!%#CB!N"S#+`!"!*!H"3#\r3"@eKBf4PCR-ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Ld'QSTY`Z\rUI`!!#Ei!!"Uq!!!!p!!!!CUrr#M"!!!"$`!"UcF!!`!!rrrrrJ#3#"JF!!!!!J#\r3"!Q@!*!D!LX!!3#3(J8!N!9YB@0RE(9P,QK'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&4$9dP&!*!)XYG%BVDVPi!!!!P5!!!@a!!!!43!!!'DG$U4+J!!!3m!!DXi!!-\r!!2rrrri!N!JB(3!!!!)!N!34PJ#3'J)V!!%!N"i&!*!&F(PdD'pZFQ9cEh9bBf9\rc,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YC9%bVDU%FJ!!!,i!!!\r,[`!!!5B!!!A+&prA63!$C@3!!f9U!!-!!2rrrri!N!JBJ!!!!!)!N!31PJ#3'J)\rV!!%!N"i&!*!&F(PYB@0dEfpXBQpi,QK%9N08!*!)!q!#A!%4!3Hh#m9,Y`[&63!\r!!2!!!!"d!!!!!3#3("Cc!!!!!3!#!*!%"!!!!!J%"`#3'`',SJ#3)deTFf0'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH@VF)raX!!!f!!!!C'3#3#1%\r+rLX!!!$`!!(bF3!#!!$rrrrq!*!)&R3!!!!#!*!%"*B!N"S#"U)!N"m%!*!&380\r,8dC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&jEYL*4@J!!$!)!!"e\rG!*!)+MH[-`!!!2!!!I*b!!)!!2rrrri!N!J@G3!!!!)!N!3*PJ#3'J)'SJ#3(`3\r!N!9"59JY6Np8490'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH@l,\rmAPX!!!0L!!!'L`#3#'Ghe%!!!!$`!!(bF`!#!!$rrrrq!*!)&RB!!!!#!*!%"CB\r!N"S#"U)!N"m%!*!&3Na98N*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)X[aH@l,mAPX!!!US!!!@GJ#3#'*a&#S!!!$`!!(bG!!#!!$rrrrq!*!)&RF!!!!\r#!*!%#TB!N"S#"U)!N"m%!*!&3Na98N)Z6&98@NC@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!Lbr&jEX[aH@`!!"a3!!!p*!*!)!IC5AJ!!!2!!!I*e!!)!!2r\rrrri!N!J@H!!!!!)!N!30PJ#3'J)'SJ#3(`3!N!9#6&953LjA58j%6eG64PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mARQbr&jj!!!KrJ!!9cN!N!J*%*'\r$!!!!m!!"mRJ!!J!!rrrrrJ#3#"Cl!!!!!J#3"!U@!*!D!JDL!*!I"!#3"@0SC@&\rdFfKPCA4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aHHE,mARN!!!Y\rm!!!DH3#3#-pP*aJ!!!$`!!(bH3!#!!$rrrrq!*!)&R`!!!!#!*!%#jB!N"S#"U)\r!N"m%!*!&BfpYF'&bDA0[ER0'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)X[aHHV,mARS!!!5F!!!*R`#3##L[I5-!!!$`!!(bH`!#!!$rrrrq!*!)&Ri!!!!\r#!*!%$*B!N"S#"U)!N"m%!*!&C@4TG'aTEQ8YCQPi4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mARUbr&jk!!!)pJ!!'Nd!N!Ja3pNT!!!!m!!"mR`!!J!\r!rrrrrJ#3#"Cr!!!!!J#3"!Z@!*!D!JDL!*!I"!#3"@CKF6*SG'eX,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mARUbr&jk!!!"XJ!!#18!N!M+mQB\rN!!!!m!!"mRi!!J!!rrrrrJ#3#"D"!!!!!J#3"!k@!*!D!JDL!*!I"!#3"@CTH'C\reEQ0`G(*c,R0S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAR1efc9\rc!!'qG!!%a+d!N!M!Q5QK!!!!m!!"mRm!!J!!rrrrrJ#3#"D#!!!!!J#3"!H@!*!\rD!JDL!*!I"!#3"8K*8e428PP'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)X[aHFl,mAR-!!!*k!!!%+3#3#$(SF)-!!!$`!!(bJ!!#!!$rrrrq!*!)&S-!!!!\r#!*!%#TB!N"S#"U)!N"m%!*!&5&"9@#e16e4&8dC@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!Lbr&jdX[aHG!!!"UJ!!!b)!*!)A[*5pJ!!!2!!!I+"!!)!!2r\rrrri!N!J@K!!!!!)!N!3%PJ#3'J)'SJ#3(`3!N!9)@9"&4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,,mARUbr&jk!!!!3!!!!%)!N!MDI4qH!!!!m!!"mS)\r!!J!!rrrrrJ#3#"D&!!!!!J#3"!U@!*!D!JDL!*!I"!#3"@PZC'9ZG#j`FQp'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aHH,F)p)%!!'c`!!%CD!#3#1#\r6*$%!!!$`!!(bK!!#!!$rrrrq!*!)&SF!!!!#!*!%"*B!N"S#"U)!N"m%!*!&6N9\rA8dC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&jiX[aHH!!!"!S!!!M\r,!*!)3N1d83!!!2!!!I+&!!)!!2rrrri!N!J@L!!!!!)!N!3+PJ#3'J)'SJ#3(`3\r!N!9149K8,8j29%964PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mARL\rbr&ji!!!$X!!!"jF!N!L3!1a)cJ!!!2!!!I+'!!)!!2rrrri!N!J@L3!!!!)!N!3\r(PJ#3'J)'SJ#3(`3!N!93Eh*dD@jR4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LT\rMD!#3#,,mARLbr&ji!!!'f!!!$SS!N!MYj,!l!!!!m!!"mSF!!J!!rrrrrJ#3#"D\r+!!!!!J#3"!f@!*!D!JDL!*!I"!#3"9"98NP'@5j548&%689'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)X[aHJEF)p))!!)lX!!(JEJ#3#0YKFT)!!!$`!!(\rbL!!#!!$rrrrq!*!)&SX!!!!#!*!%$TB!N"S#"U)!N"m%!*!&F(PdD'pZ,@e[C'8\rZC@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aHJVF)p))!!""F!!!\rSX`#3#'9dXh)!!!$`!!(bL3!#!!$rrrrq!*!)&S`!!!!#!*!%#TB!N"S#"U)!N"m\r%!*!&F(PdD'pZ,QeKENC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&j\rjYGXeF`!!"!J!!!F`!*!)K)F"%!!!!2!!!I++!!)!!2rrrri!N!J@M3!!!!)!N!3\r'PJ#3'J)'SJ#3(`3!N!9548&%689'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aHJV,mAS)!!!0m!!!+E3#3#(F6Vcm!!!$`!!(bM!!#!!$rrrrq!*!)&Sm\r!!!!#!*!%#jB!N"S#"U)!N"m%!*!&FQ9ZG@eLCA)ZF(P'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&4$9dP&!*!)X[aHHE,mARN!!!FD!!!2J3#3#&AY',`!!!$`!!(bM3!\r#!!$rrrrq!*!)&T!!!!!!!J#3"!1@!*!D!JDL!*!I"!#3"9*'4%C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9(4dH(3!N!Le%!pPYJNp03!!-8J!!*I3!*!)%Q,Q&3!!!2!\r!!I+1!!)!!2rrrri!N!J@N3!!!!)!N!3,PJ#3'J)'SJ#3(`3!N!9eEQPMEf4P,R4\riG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&k#X[aHJJ!!!8B!!!(\rb!*!)q2i9e!!!!2!!!I+2!!)!!2rrrri!N!J@NJ!!!!)!N!3*PJ#3'J)'SJ#3(`3\r!N!9fCh*TEQ4PCR0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YGXeFlA\rE0A-!!!0`!!!)[`#3#+'frq`!!id!!!10#J!#!!$rrrrq!*!)'(m!!!!#!*!%&TB\r!N"S#"U)!N"m%!*!&CQPZC&pbC@0eFR0TEfjXD@eTG#j`H84@3e3!N"#fX%eLYV"\r0BJ!!!4%!")`r!!!!!3#3("S'!!!!!J!#!*!%!`!!!!J%"`#3'`)'SJ#3)e*368C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lf&+rUYK5[kJ!!"D!!!"31!*!\r)A(d$)J!%M&S!")aE!!-!!2rrrri!N!JD"3!!!!)!N!3CPJ#3'J*XSJ#3(`3!N!9\r#C8p`C@iY8(PdD'pZ,90PG(9`,R"KG'0S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r83eG*43#3#,B8VqZf&+rV!!!(&J!!'ai!N!Ja1fIp!!5-@J!%M&`!!`!!rrrrrJ#\r3#"S%!!!!!J#3""+@!*!D!QbL!*!I"!#3"@*PEh"PELe`HA4SEfiZFh"PBdC@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lf&+rVYK5[k`!!!1`!!!'L!*!)Z5@\rPD3!%M&S!")aG!!-!!2rrrri!N!JD!`!!!!)!N!3-PJ#3'J*XSJ#3(`3!N!9YB@Y\rP,A0`C@-ZFfK'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YK5[kVB8VqS\r!!!'Z!!!$5J#3#"NB5%m!")aD!!5-AJ!$!!$rrrrq!*!)'J)!!!!#!*!%"TB!N"S\r#E+)!N"m%!*!&8N9"4%e&4&C$9!#3%,D`6@)!N!B"%3!%M&S!!!!"!*!F'J%!!!!\r$!!)!N!3(!!!!#!3(!*!E!QbL!*!M9'YTER4PFNC@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!Lf&+rVYK5[k`!!!&`!!!"J!*!)4`6B,J!%M&m!")aJ!!3!!2r\rrrri!N!JD!*!%!J#3"!Q@!*!D!QZL!*!I"!#3"A0PG(9`,Q0QCdC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lf&+rVYK5[k`!!!K!!!!41!*!)N5p)*3!%M&m\r!")aK!!3!!2rrrri!N!JCr`!!!!)!N!3)PJ#3'J*VSJ#3(`3!N!9cCA4eF#j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LfNk8NYT@rhJ!!!E!!!!1#!*!\r)4YImMJ!#09S!!M9Q!!)!!2rrrri!N!JD03!!!!)!N!3(PJ#3'J)'SJ#3(`3!N!9\rRC'*TEQPd4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,DkSqbh#25"!!!\r$'!!!"C`!N!J@`5#Y!!FUb3!(+X`!!J!!rrrrrJ#3#"`N!!!!!J#3"!U@!*!D!JD\rL!*!I"!#3"8*P6e-Y6Np8490'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)Y`MdJEF)p)%!!"af!!"L0`#3#,Y"ZmX!#+62!!LNd`!#!!$rrrrq!*!)(+i!!!!\r#!*!%$CB!N"S#"U)!N"m%!*!&3Q928becCA4eF#j`H8C@3e3!N!F))!!!!3#3#!F\r!N"!&!!&cD'aL8(PdD!%!!Si!d3!!YM1K)EF,`q3!$$K-!"db`J!!UVS!!CbAINh\r6[J!!!(3!!H`K!!%!!2rrrri!N!J@P3!!!!)!N!3+PJ#3%)!!N!N"Li)!N"m'!*!\r&8(PdD'pZ3fpbC8C@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J"!!+2!#)\r!!,D(eZ1h#m2h!!ZRK!!FCQS!!+Uq!!'FQ`$DSUF!!!"d!!)Zd`!"!!$rrrrq!*!\r)'k%!!!!#!*!%%*B!N"!J!*!*!BZJ!*!I"`#3"!&3HA4SEfj$Eh*P3f&bBQpZ4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!%!!K[rr!!!XYG%,,F,X[`!!"!S!!!\rN[J#3#!X-cI!!!!"d!!(X)`!"!!$rrrrq!*!)&TF!!!!#!*!%"TB!N"S"Lk)!N"m\r%!*!&8N9"4%e&4&C$9!#3#!2J!PRrr3%(Y`[%dEF,a5J!!!$a!!!!G!!!!!%!N"`\r@Q!!!!!%!!J#3"!J!!!!)"!F!N"X"Lk)!N#05C@aZEh4PFdC@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9%0A588!N!Lbed3VXYG%+`!!,1J!!'c$!*!)$IH*m3!!!2%!!I%\r0!!)!!2rrrri!N!J@Q3!!!!)!N!3(PJ#3'J)(SJ#3(`3!N!9)59086e*C4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4#bh#l%e!!!,&!!!'5X!!!#!!!!\r"Q[$B[LN!!!$a!!(a$J!#!!$rrrrq!*!)&TS!!!!#!*!%#*B!N"S#"k)!N"m%!*!\r&8Q9XEQpdCA0'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YDjPIlF)p%d\r!!!k!!!!``3#3#-dQDdi!!lpH!!1rA`!#!!$rrrrq!*!)'CN!!!!#!*!%"jB!N"S\r#"k)!N"m%!*!&6%P$48j6484@3e3!N!J$i!*F!,F""lF,a8kh#m9B!!!!mJ!!!(3\r!!!!"!*!F&TX!!!!"!!)!N!3&!!!!#!3(!*!E!BZL!3#3)P4[Efac4&C$9!#3%,E\rQX#bfjV!Y!!!"&3!!!4)!!!!"!*!F'$d!!!!#!!)!N!3'!!!!#!8(!*!E!LkL!3#\r3)QCbC@9kC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&leY6K-(`!\r!!CS!!!80!*!)Srap1!!!!48!!DYA!!-!!2rrrri!N!JB2`!!!!)!N!3*PJ#3'J)\raSJ%!N"i&!*!&BQYQD@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA[@cUk1Y!!!$DJ!!#%-!N!L)9*qH!!!"&3!"UeJ!!`!!rrrrrJ#3#"K!!!!\r!!J#3""+@!*!D!M'L!3#3(J8!N!9MD'9MDf9iG'9ZFfP[ER-ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHpV@Afr!!!!N%!!!@)!#3#"DmJVF!!!%\r9!!'V@3!$!!$rrrrq!*!)'%%!!!!#!*!%'*B!N"S#-D)"!*!H"3#3"@0SC@0VCAK\rdC@jcD@pZFephD@ic-Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!L\rbr&lfYVbJJ`!!""i!!!pD!*!)kS8YZ`!!!48!!DYD!!-!!2rrrri!N!JB3J!!!!)\r!N!38PJ#3'J)aSJ%!N"i&!*!&CAKdC@jcD@pZFephD@ic-LjTEQP'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHpVEI["d!!"-b!!!q'`#3#-86,d!!!!%\r9!!'V@`!$!!$rrrrq!*!)'%-!!!!#!*!%#CB!N"S#-D)"!*!H"3#3"@CbC@9kC5j\r`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lfX[aHpJ!!!#!!!!!\rA!*!)8,V8T`!!!48!!DYF!!-!!2rrrri!N!JB4!!!!!)!N!3)PJ#3'J)aSJ%!N"i\r&!*!&D'9XE'mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHplE\rI["d!!!*+!!!&1!#3#$[6(M-!!!%9!!'VA3!$!!$rrrrq!*!)'%8!!!!#!*!%$CB\r!N"S#-D)"!*!H"3#3"@eKDf9MEfjQD@FZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)X[aHpl@43V)!!!28!!!*D!#3#+'jNHm!!!%9!!'VAJ!$!!$rrrr\rq!*!)'%B!!!!#!*!%$CB!N"S#-D)"!*!H"3#3"@eKDf9QFQ9PHQ8ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHpl,mA[F!!!'5!!!$I!#3#$q3!#J\ra!!!"&3!"Uem!!`!!rrrrrJ#3#"K(!!!!!J#3"!q@!*!D!M'L!3#3(J8!N!9YB@Y\rPE@&VC@CTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHplE\rI["i!!!r#!!!p@`#3#!(UP*3!!!%9!!'VB!!$!!$rrrrq!*!)'%J!!!!#!*!%$jB\r!N"S#-D)"!*!H"3#3"@e[C(9XC@CTEQ4PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&lhYYqm(J!!!j3!!!Q&!*!)QY@(G`!!!48!!DYK!!-!!2r\rrrri!N!JB53!!!!)!N!30PJ#3'J)aSJ%!N"i&!*!&F'&bFf9cCA4eF#j`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&leYSjkhJ!!%eB!!$''!*!)Y5$\r4P!!!!48!!DYL!!-!!2rrrri!N!JB5J!!!!)!N!3'PJ#3'J)aSJ%!N"i&!*!&8N9\r"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8690*43#3#,,mA[HeSQjG!!!+[J!\r!(#B!N!KZ"$3r!!!"&3!"Uf-!!`!!rrrrrJ#3#"K,!!!!!J#3"!U@!*!D!M'L!3#\r3(J8!N!9hD@ic-LjSG'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rmA[LeP812!!!(,!!!%[%!N!KXjJ5b!!!"&3!"Uf3!!`!!rrrrrJ#3#"K-!!!!!J#\r3""+@!*!D!M'L!3#3(J8!N!9hD@jYB@YPE@&VC@CTE'8ZF(P%9N08!*!3YV"30,D\r`8$8!!!%@!!!"%J!!!!%!N"`B63!!!!)!!J#3"!N!!!!)"3F!N"X#,J!"!*!LE@p\rNG@aKG'pb4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA`1br&m$!!!\r#8J!!"8N!N!L4PLN'!!!"&J!"UfB!!`!!rrrrrJ#3#"K1!!!!!J#3"!U@!*!D!M)\r!!3#3(J8!N!9&@%&08%a&,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mA`5br&m%!!!&E!!!%`#3#8fNjUF!!!%@!!'VC`!$!!$rrrrq!*!)'%m!!!!\r#!*!%$*B!N"S#-J!"!*!H"3#3"@GPEQe[C(9XC5j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr&m%X[aI"!!!#I!!!$L'!*!)5Mhm+`!!!4B!!DYS!!-\r!!2rrrri!N!JB8!!!!!)!N!3-PJ#3'J)b!!%!N"i&!*!&E@pNG@aKG'pb,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mA`1br&m%!!!#0!!!!p3!N!M\rBD)%`!!!"&J!"UfN!!`!!rrrrrJ#3#"K4!!!!!J#3"!D@!*!D!M)!!3#3(J8!N!9\r548&%689'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI",,mA`3!!!+\r5!!!&03#3#1R,aT)!!!%@!!'VDJ!$!!$rrrrq!*!)'&)!!!!#!*!%%TB!N"S#-J!\r"!*!H"3#3"90MFQpXE'9N6'PcG'*[H#j`H84@3e3!N"#fX&!e!*!'!4F!!!%@!!!\r!!3#3("K6!!!!!`!#!*!%#3!!!!J&"`#3'`)b!!%!N#*8C@e`E'&dCA0'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"EAE0B`!N"B"&`!"Ufi!"!!!rrr\rrrJ#3#"K8!!!!!J#3"!Q@!*!D!M-!!3#3(J8!N!9MEh"jFQPRD(4'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"E,mA`8!!!"'!!!!F3#3#"SR'Ai!!!%\rA!!'VE`!%!!$rrrrq!*!)'&8!!!!#!*!%#jB!N"S#-`!"!*!H"3#3"@e[C(9XC9p\rSC@&N4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA`@br&m&!!!!V!!\r!!1d!N!KTEk$"!!!"&`!"Uh!!"!!!rrrrrJ#3#"K@!!!!!J#3"!f@!*!D!M-!!3#\r3(J8!N!9YEf4eE'9IE@9dD'pN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#\r3#,,mA`@br&m&!!!"`J!!!bN!N!JAZ54i!!!"&`!"Uh%!"!!!rrrrrJ#3#"KA!!!\r!!J#3"!Z@!*!D!M-!!3#3(J8!N!9YEf4eE'9IG'&TE%C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!Lbr&m&X[aI"3!!!*B!!!$k!*!))&ABRJ!!!4F!!DYb!!3\r!!2rrrri!N!JB@!!!!!)!N!3,PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAfKPB@4'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"E,mA`B!!!#N!!!!j3#3#1S\r%Nk`!!!%A!!'VF`!%!!$rrrrq!*!)'&N!!!!#!*!%$CB!N"S#-`!"!*!H"3#3"@p\rLDQ9MG&pYCA4SEf4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"V,\rmA`B!!!"X!!!!G3#3#!LV(5)!!!%A!!'VG!!%!!$rrrrq!*!)'&S!!!!#!*!%$*B\r!N"S#-`!"!*!H"3#3"@pLDQ9MG&pYE'PcG%C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9%0A588!N!Lbr&m'X[aI"J!!!*J!!!$E!*!)rbqM,3!!!4F!!DYe!!3!!2rrrri\r!N!JB@`!!!!)!N!3+PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAfjPGdC@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%0A588!N!Lbr&m'X[aI"J!!!E`!!!1(!*!)IMT"R3!!!4F\r!!DYf!!3!!2rrrri!N!JBA!!!!!)!N!33PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh0\rdFR9MG(9bC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&m'X[aI"J!\r!!BS!!!1&!*!)$1RL@`!!!4F!!DYh!!3!!2rrrri!N!JBA3!!!!)!N!3,PJ#3'J)\rc!!%!N"i&!*!&Ef*UC@0dAh4KD@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP\r&!*!)X[aI"V,mA`B!!!%U!!!#Y`#3#'k#4EN!!!%A!!'VH!!%!!$rrrrq!*!)'&i\r!!!!#!*!%&*B!N"S#-`!"!*!H"3#3"@pLDQ9MG&pdF&pKFepYBA"`D@jR4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA`Hbr&m(!!!#GJ!!$-X!N!J0,9[\r$!!!"&`!"UhN!"!!!rrrrrJ#3#"KI!!!!!J#3""1@!*!D!M-!!3#3(J8!N!9[BQT\rPBh4IG("IBA0IER9YBQ9b4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,\rmA`Hbr&m(!!!"`J!!"GN!N!Lm1!pK!!!"&`!"UhS!"!!!rrrrrJ#3#"KJ!!!!!J#\r3""@@!*!D!M-!!3#3(J8!N!9[BQTPBh4IG("IBA0IFf9aG@9ZBf9'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"l,mA`F!!!#%!!!!YJ#3#&'TS-8!!!%\rA!!'VH`!%!!$rrrrq!*!)''%!!!!#!*!%$TB!N"S#-`!"!*!H"3#3"@pLDQ9MG&p\rdF&pMB@aX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA`Hbr&m(!!!\r!B!!!!(%!N!JK!Z(X!!!"&`!"Uh`!"!!!rrrrrJ#3#"KL!!!!!J#3""'@!*!D!M-\r!!3#3(J8!N!9[BQTPBh4IG("IBfpYF'&bC8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9%0A588!N!Lbr&m(X[aI"`!!!()!!!"m!*!)Ne#K$3!!!4F!!DYp!!3!!2rrrri\r!N!JBB`!!!!)!N!34PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh4`Af4PB@aXEf0'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI#,,mA`J!!!#3!!!!!-3!N!K\rb9LIB!!!"&`!"Uhi!"!!!rrrrrJ#3#"KN!!!!!J#3""'@!*!D!M-!!3#3(J8!N!9\r[BQTPBh4IG("ICf9dBA4dFNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L\rbr&m)X[aI#!!!!&`!!!"Q!*!)0EXjf`!!!4F!!DYr!!3!!2rrrri!N!JBC3!!!!)\r!N!31PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh4`AfKKFfK'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&4$9dP&!*!)X[aI#,,mA`J!!!"q!!!!P`#3#5[U"3!!!4F!!DZ!!!3\r!!2rrrri!N!JBCJ!!!!)!N!32PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh4`Ah"bD@j\rd4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA`Qbr&m*!!!!F!!!!)N\r!N!J#r5Pc!!!"&`!"Ui%!"!!!rrrrrJ#3#"KR!!!!!J#3"!k@!*!D!M-!!3#3(J8\r!N!9[BQTPBh4IG("IFQ9`FNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L\rbr&m*X[aI#3!!!+B!!!$D!*!)N[UZC`!!!4F!!DZ#!!3!!2rrrri!N!JBD!!!!!)\r!N!34PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh4`Ah0PG'&dG(*'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)X[aI#E,mA`N!!!"`!!!!L3#3#0l[Qj3!!!%A!!'\rVJ`!%!!$rrrrq!*!)''N!!!!#!*!%$CB!N"S#-`!"!*!H"3#3"@pLDQ9MG&pdF&p\rcG(*'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI",,mA`3!!!E3!!!\rG@J#3#-%B%`J!!!%@!!'VD`!$!!$rrrrq!*!)''S!!!!#!*!%#TB!N"S#-J!"!*!\rH"3#3"94VCAKdFQ%ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rI",,mA`3!!!*m!!!'0J#3#'2D"Qm!!!%@!!'VE!!$!!$rrrrq!*!)''X!!!!#!*!\r%#jB!N"S#-J!"!*!H"3#3"ACKFR0eBR0d,R"j4&C$9!#3%,D`6@-!N!Ic!!!!mJ!\r!!!%!N"`@R!!!!!)!!J#3"!F!!!!)"!F!N"X##+)!N#0KG@4TEh"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAZDe%!q%!!!3L!!!36!!N!MkiR*&!!!\r!m`!"mT3!!`!!rrrrrJ#3#"DG!!!!!J#3"!H@!*!D!JQL!*!I"!#3"@&eC'P[F(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aHjV3DEKd!!!E'!!!2V3#\r3#*Z0%Y!!!!$c!!(bP3!$!!$rrrrq!*!)&Ti!!!!#!*!%"TB!N"S##D)!N"m%!*!\r&8N9"4%e&4&C$9!#3%,D`6@3!N!Id!!!!mJ!!!!%!N"`@R`!!!!)!!J#3"!B!!!!\r)"!F!N"X##+)!N#0QBA&hDAT'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aHlE83$i3!!"6X!!!j[J#3#233)2%!!!$d!!(bP`!$!!$rrrrq!*!)&U!!!!!\r#!*!%#TB!N"S##U)!N"m%!*!&CQ&aBfpZCLj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&lZX[aHlJ!!!%J!!!",!*!)kFefa`!!!23!!I+B!!-!!2r\rrrri!N!J@S3!!!!)!N!3+PJ#3'J)+SJ#3(`3!N!9QBA&MGA0d,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAZkbr&lZ!!!#TJ!!"6F!N!P,F5`!!!$\rd!!(bQ3!$!!$rrrrq!*!)&U)!!!!#!*!%"jB!N"S##U)!N"m%!*!&CQ&aGbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&l[Y4!2K!!!'8!!!'()!*!\r))@(dJJ!!!23!!I+D!!-!!2rrrri!N!J@S`!!!!)!N!3*PJ#3'J)+SJ#3(`3!N!9\rQBA&hDASZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aHl,,mAZ`\r!!!L%!!!5aJ#3#!)ZmZ!!!!$d!!(bQ`!$!!$rrrrq!*!)&U3!!!!#!*!%"TB!N"S\r##U)!N"m%!*!&8N9"4%e&4&C$9!#3%,E,'J#3#2B!!!$b!!!!!3#3("Dd!!!!!J!\r#!*!%"!!!!!J%"`#3'`))SJ#3)fNa1'j'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)Y4!4UlE&dK)!!"98!!!r)J#3#1dXN3d!!!$f!!(bV!!$!!$rrrrq!*!\r)&V8!!!!#!*!%$*B!N"S#$+)!N"m%!*!&F(PRCA4dCAKd,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,AE0BbfaG)5!!!(m!!!&Ai!N!J55JAd!!1033!\r$M8)!!`!!rrrrrJ#3#"Kq!!!!!J#3"!Q@!*!D!JbL!*!I"!#3"@ecCfCYG#j`H84\r@3e3!N"#h#m93Y`[&9!!!!2F!!!$b!!!!!3#3("Df!!!!!J!#!*!%"!!!!!J%"`#\r3'`))SJ#3)fPNE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XeF(dE0\rA"p%!!!!i!!!!,`#3#&f*%l8!!!$h!!(bVJ!$!!$rrrrq!*!)&VF!!!!#!*!%#jB\r!N"S#$D)!N"m%!*!&AepTEQPdAemZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)X[aHq,D1HYm!!!-%!!!+5!#3##i05A-!!!$h!!(bV`!$!!$rrrrq!*!\r)&VJ!!!!#!*!%$CB!N"S#$D)!N"m%!*!&3A9dEd9iF'&ZC#j`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&liXjD@Z!!!&&B!!&!a!*!)-NMYTJ!!!2F\r!!I+`!!-!!2rrrri!N!J@Z3!!!!)!N!30PJ#3'J)0SJ#3(`3!N!9"GA4[5@jNC@j\rd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[Ld'QiH!!!#e!!\r!"VB!N!McA5-J!!!!p`!"mV%!!`!!rrrrrJ#3#"Dk!!!!!J#3"!Z@!*!D!JfL!*!\rI"!#3"8*TEQ4TEQGc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,1\r"JF+fMRVI!!!)5!!!'F3!N!MXQ"4[!!!!p`!"mV)!!`!!rrrrrJ#3#"Dl!!!!!J#\r3"!Z@!*!D!JfL!*!I"!#3"80KE'a8DA"c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,1"JF'fMRVI!!!#pJ!!"hm!N!MhphGS!!!!p`!"mV-!!`!!rrr\rrrJ#3#"Dm!!!!!J#3""#@!*!D!JfL!*!I"!#3"80KE'a8DA"AD@jNEhFZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aHqE6V1,N!!$Bb!!#6ZJ#3#"'\r8Z0J!!!$h!!(bY!!$!!$rrrrq!*!)&Vd!!!!#!*!%#CB!N"S#$D)!N"m%!*!&3fK\rKEQGP6'pR4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[QfMRVI!!!\r('!!!'-%!N!J,NrcA!!!!p`!"mV8!!`!!rrrrrJ#3#"Dq!!!!!J#3"!q@!*!D!Jf\rL!*!I"!#3"80XBA0c3R*[Gh0PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&ljYZ'B9`!!#5)!!#,f!*!)Q8j)f!!!!2F!!I+f!!-!!2rrrri!N!J\r@[`!!!!)!N!34PJ#3'J)0SJ#3(`3!N!9$Efa[FN4PE'9RBA4[FLj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9(4dH(3!N!LdkcLpY1Xi[3!!!$J!!!!`!*!)q1m%Q`!\r!!2F!!I+h!!-!!2rrrri!N!J@`!!!!!)!N!32PJ#3'J)0SJ#3(`3!N!9MEfjQD@F\rYG@jTH#jdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)Y1Xi[V6V1,i\r!!!!m!!!!0!#3#0Xkr2-!!!$h!!(bZ!!$!!$rrrrq!*!)&X%!!!!#!*!%$TB!N"S\r#$D)!N"m%!*!&BfpZCQPR,AGTELjdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\rdG(Kd!*!)Y1Xi[V9GGT!!!!!$*!!!"[B!N!J&Ald"!!!!p`!"mVN!!`!!rrrrrJ#\r3#"E#!!!!!J#3"!U@!*!D!JfL!*!I"!#3"@0[EQCTCbjdH(4'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&43HA4S!*!)X[aHqED1HYm!!!Mi!!!Nf3#3#%S*&&`!!!$h!!(\rbZJ!$!!$rrrrq!*!)&X-!!!!#!*!%#jB!N"S#$D)!N"m%!*!&4'9LG@GRCA)ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHqVD1HYm!!!%b!!!$2`#\r3#$HZ%fB!!!$h!!(bZ`!$!!$rrrrq!*!)&X3!!!!#!*!%$*B!N"S#$D)!N"m%!*!\r&4'9XC@GKG'pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[U\rh#2mU!!!CZJ!!@d%!N!MZZ''E!!!!p`!"mV`!!`!!rrrrrJ#3#"E&!!!!!J#3"!q\r@!*!D!JfL!*!I"!#3"89NDA4[FPGTEQ4[Gbj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&m!X[aI!3!!!h3!!!SM!*!)IK9Y5`!!!2F!!I+p!!-!!2r\rrrri!N!J@aJ!!!!)!N!30PJ#3'J)0SJ#3(`3!N!9PGQ9ZG("KFR0P,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,,mA`'c9`I5!!!(*!!!%@J!N!MrlDl\rS!!!!p`!"mVi!!`!!rrrrrJ#3#"E(!!!!!J#3"!U@!*!D!JfL!*!I"!#3"@9iG'9\rZC#jdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHqVD1HZ!!!!4\rB!!!2M!#3#1Ub@,X!!!$h!!(b[`!$!!$rrrrq!*!)&XJ!!!!#!*!%#jB!N"S#$D)\r!N"m%!*!&4QPXC8aTFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aHqVD1HZ!!!!Fm!!!@BJ#3#*aL4%!!!!$h!!(b`!!$!!$rrrrq!*!)&XN!!!!\r#!*!%%TB!N"S#$D)!N"m%!*!&4QpbE@&d8'&bB@GbBA"S,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mA[Zbr&ll!!!"YJ!!"5%!N!JAB"Z8!!!!p`!\r"mX%!!`!!rrrrrJ#3#"E+!!!!!J#3"!k@!*!D!JfL!*!I"!#3"8CbB@eP9QPPGf9\rb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[ZcJB($!!!&#!!\r!$hS!N!ME&1hE!!!!p`!"mX)!!`!!rrrrrJ#3#"E,!!!!!J#3"!f@!*!D!JfL!*!\rI"!#3"8GbCA"%D@&XEfFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!\r)X[aI!ED1HZ-!!!N3!!!9#`#3#2F&LcX!!!$h!!(b``!$!!$rrrrq!*!)&X`!!!!\r#!*!%#*B!N"S#$D)!N"m%!*!&D'9XF#jdH(4%9N08!*!3YV)D*`#3"rJ!!!$h!!!\r!!3#3("E0!!!!!`!#!*!%"3!!!!J%"`#3'`)0SJ#3)dPMEfjc4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&(58CQEfGXC3#3#,83%Dbe%"'X!!!!J!!!!(J!N!MK!Kel!!!!q!!\r"mZX!"!!!rrrrrJ#3#"E1!!!!!J#3"!U@!*!D!JkL!*!I"!#3"@C[E'4PFLjRD@C\r'9N08!*!(##!!!!%!N!J(!*!5!8G*4QC[CfaP!*!)YLC#eVCfXiF!!!"S!!!!B!#\r3#-pQiS!!!!$i!!(bl!!%!!$rrrrq!*!)&Xm!!!!#!*!%$CB!N"S#$U)!N"m%!*!\r&E@PZGA0ZEf4P,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"4dP'CQpRE'8!N!Le%"'\rXY4!4V!!!!)B!!!"p!*!)d[J(L`!!!2J!!I,Y!!3!!2rrrri!N!J@d!!!!!)!N!3\r1PJ#3'J)1SJ#3(`3!N!9[F'9ZCQpXC'9b,QGTCNC@3e3!N!F))!!!!3#3#!F!N")\r"4dP'CQpRE'8!N!Lf*N,@YLC#eJ!!!&J!!!"2!*!)5rBQF`!!!2J!!I,Z!!3!!2r\rrrri!N!J@d3!!!!)!N!3-PJ#3'J)1SJ#3(`3!N!9`E(9cEQpNC5jRD@C'9N08!*!\r(##!!!!%!N!J(!*!5!8G*4QC[CfaP!*!)Y4!4VVCfXiF!!!#'!!!!I3#3#"*$-Yd\r!!!$i!!(bl`!%!!$rrrrq!*!)&Y)!!!!#!*!%#TB!N"S#$U)!N"m%!*!&F(PdD'p\rZ,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"4dP'CQpRE'8!N!Le%"'ZY4!4VJ!!!&i\r!!!"9!*!)#E81YJ!!!2J!!I,`!!3!!2rrrri!N!J@d`!!!!)!N!3'PJ#3'J)1SJ#\r3(`3!N!9dDbjRD@C'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)X[aI!EE\rGHe)!!!"!!!!!1!#3#)Y))rJ!!!$h!!(ba!!$!!$rrrrq!*!)&Y3!!!!#!*!%#*B\r!N"S#$D)!N"m%!*!&D@4XC5jLBA4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4\rS!*!)X[aI!E8QT3`!!!#-!!!!eJ#3#"4EJ(J!!!$h!!(ba3!$!!$rrrrq!*!)&Y8\r!!!!#!*!%"jB!N"S#$D)!N"m%!*!&D@4XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!Lbr&m"Y1Xi[J!!!'B!!!#3!!#3#$k)S"`!!!$h!!(baJ!$!!$\rrrrrq!*!)&YB!!!!#!*!%#*B!N"S#$D)!N"m%!*!&D@4XC5j`HAG'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)Y1XiZVD1HZ!!!!51!!!0cJ#3#%R9!(%!!!$\rh!!(ba`!$!!$rrrrq!*!)&YF!!!!#!*!%#jB!N"S#$D)!N"m%!*!&5@4XC80[EQB\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Xh'lMVD1HZ!!!!-L!!!\r-(!#3#&md'13!!!$h!!(bb!!$!!$rrrrq!*!)&YJ!!!!#!*!%$TB!N"S#$D)!N"m\r%!*!&5@4XC8KTFh4[FRNZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aI!VEKQ&F!!!!H!!!!&3#3#(JdZhX!!!$h!!(bb3!$!!$rrrrq!*!)&YN!!!!\r#!*!%#TB!N"S#$D)!N"m%!*!&D@4XCACPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&llYUB9lJ!!"NJ!!"ZE!*!)T4Jp,J!!!2F!!I,+!!-!!2r\rrrri!N!J@fJ!!!!)!N!3-PJ#3'J)0SJ#3(`3!N!9*6d*TEQ4TEQFZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI!V,mA`)!!!(Z!!!)Z`#3#$%I#[B\r!!!$h!!(bb`!$!!$rrrrq!*!)&YX!!!!#!*!%#TB!N"S#$D)!N"m%!*!&Df9jC'9\rQFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lc(9STYSjki!!!"13\r!!!m%!*!)QY2'JJ!!!2F!!I,-!!-!!2rrrri!N!J@h!!!!!)!N!39PJ#3'J)0SJ#\r3(`3!N!90G@adD90MFQpXE'9N6'PcG(-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)Y1XiZVD1HZ%!!!&i!!!$(!#3#,5!IU`!!!$h!!(bc3!$!!$rrrr\rq!*!)&Yd!!!!#!*!%%CB!N"S#$D)!N"m%!*!&6A9XG'P6G'&dGA0#BA)ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)X[aHql6V1,X!!!G#!!!3!`#3#(a\r1$-3!!!$h!!(bcJ!$!!$rrrrq!*!)&Yi!!!!#!*!%#*B!N"S#$D)!N"m%!*!&6N9\rA8bjdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Xi'"`lD1HZ%!!!5\rU!!!3+`#3#&!ZT08!!!$h!!(bc`!$!!$rrrrq!*!)&Ym!!!!#!*!%%*B!N"S#$D)\r!N"m%!*!&6f*UC@0d3R*[Gh0PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!LdkcLlY1XiZ`!!#9i!!#+G!*!)b6bk0`!!!2F!!I,3!!-!!2rrrri!N!J\r@i!!!!!)!N!34PJ#3'J)0SJ#3(`3!N!92E'46G'&MDeCTCAGPFLj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lmYSjki3!!"CS!!!r1!*!)Z$YJd!!\r!!2F!!I,4!!-!!2rrrri!N!J@i3!!!!)!N!32PJ#3'J)0SJ#3(`3!N!92GA4`GA4\rAD@jNEhFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y1XiZlD1HZ)\r!!!Nf!!!D`!#3#!G1"SS!!!$h!!(bdJ!$!!$rrrrq!*!)&Z)!!!!#!*!%$CB!N"S\r#$D)!N"m%!*!&8'&bC@j0BA4MD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lc(9STYSjkiJ!!!`i!!!Sj!*!)#e'qDJ!!!2F!!I,6!!-!!2rrrri!N!J\r@i`!!!!)!N!31PJ#3'J)0SJ#3(`3!N!93BA4S3R*[Gh0PFLj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lpYUB9l`!!![S!!!Sd!*!)(,ccG!!!!2F\r!!I,8!!-!!2rrrri!N!J@j!!!!!)!N!30PJ#3'J)0SJ#3(`3!N!93CA*MEfaKG'p\rb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,1"JF5fZU2d!!!@'!!\r!5cd!N!M&JKkq!!!!p`!"mY8!!`!!rrrrrJ#3#"EP!!!!!J#3"!U@!*!D!JfL!*!\rI"!#3"9"j8'&bFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rHrEF)p*)!!"M@!!"I@3#3#-H4a98!!!$h!!(beJ!$!!$rrrrq!*!)&ZB!!!!#!*!\r%#TB!N"S#$D)!N"m%!*!&8(P6D'9XE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9(4dH(3!N!Lbr&lpY1Xi[!!!!ii!!!DT!*!)2*`Ll`!!!2F!!I,A!!-!!2rrrri\r!N!J@j`!!!!)!N!3+PJ#3'J)0SJ#3(`3!N!9548&%688ZG(Kd4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,83$i@fMRVL!!!+3J!!*#N!N!LeS,kr!!!!p`!\r"mYJ!!`!!rrrrrJ#3#"ES!!!!!J#3"!q@!*!D!JfL!*!I"!#3"9*PE@pdC8PZG'9\rbF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lpYJNp9J!!"JJ\r!!"GC!*!)e'VIS!!!!2F!!I,C!!-!!2rrrri!N!J@k3!!!!)!N!33PJ#3'J)0SJ#\r3(`3!N!95CA"XB@0P4'PKE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mA[kfMRVL!!!(G!!!&Q)!N!J1#Udl!!!!p`!"mYS!!`!!rrrrrJ#3#"E\rU!!!!!J#3""#@!*!D!JfL!*!I"!#3"90MFQP`G%*TEQ4TEQFZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHrVD1HZ)!!!43!!!2Q`#3#)N[I'8!!!$\rh!!(bf`!$!!$rrrrq!*!)&ZX!!!!#!*!%$jB!N"S#$D)!N"m%!*!&8f0bEfaXC@4\r-DA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[kbr&lq!!!\r#KJ!!#RF!N!K1+FaS!!!!p`!"mY`!!`!!rrrrrJ#3#"EX!!!!!J#3""#@!*!D!Jf\rL!*!I"!#3"90PBA*MD%*TEQ4TEQFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)X[aHrV,mA[i!!!*H!!!(S!#3#"rGiTB!!!$h!!(bh3!$!!$rrrrq!*!\r)&Zd!!!!#!*!%$jB!N"S#$D)!N"m%!*!&8f9KFQ0S4'PKE'pR,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[kbr&lq!!!$pJ!!$aF!N!KjL)@Q!!!\r!p`!"mYi!!`!!rrrrrJ#3#"EZ!!!!!J#3""1@!*!D!JfL!*!I"!#3"90PBA*MD%4\rTB@a[Cd*KFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHrV0\rA"p!!!!HX!!!DD3#3#04N3Nm!!!$h!!(bh`!$!!$rrrrq!*!)&Zm!!!!#!*!%$jB\r!N"S#$D)!N"m%!*!&8f9KFQ0S4@jRD@jP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mA[qfMRVL!!!$RJ!!$$d!N!Kq`P,&!!!!p`!"mZ!!!`!!rrr\rrrJ#3#"E`!!!!!J#3"!b@!*!D!JfL!*!I"!#3"90PF'&bBA4[FLj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lrYSjkiJ!!")3!!!kj!*!)+G9i1!!\r!!2F!!I,K!!-!!2rrrri!N!J@m3!!!!)!N!31PJ#3'J)0SJ#3(`3!N!96G'&MDeC\rTCAGPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m$X[aI!`!\r!!(S!!!$T!*!)!TV,D`!!!2F!!I,L!!-!!2rrrri!N!J@mJ!!!!)!N!3,PJ#3'J)\r0SJ#3(`3!N!9dCA0dBfpNC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3\r!N!Lbr&lrYL*4BJ!!$ZB!!##U!*!)HBKi[`!!!2F!!I,M!!-!!2rrrri!N!J@m`!\r!!!)!N!3)PJ#3'J)0SJ#3(`3!N!986d42,R4iG%C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!LcJB(&YSjki`!!!eJ!!!R9!*!)8hJmbJ!!!2F!!I,N!!-!!2r\rrrri!N!J@p!!!!!)!N!3+PJ#3'J)0SJ#3(`3!N!98EfpX9'P`,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,1"JFDd'QiI!!!3!!!!1SX!N!JD,A)[!!!\r!p`!"mZ8!!`!!rrrrrJ#3#"Ee!!!!!J#3"!f@!*!D!JfL!*!I"!#3"94bC@9AD@4\rRCA3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI!,0A"p%!!!Q\rU!!!Rm3#3#14r!kB!!!$h!!(bjJ!$!!$rrrrq!*!)&[B!!!!#!*!%%*B!N"S#$D)\r!N"m%!*!&9@jNEd4PE'9RBA4[FLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&m!XkZMV`!!![B!!!Q+!*!)T$)cT`!!!2F!!I,R!!-!!2rrrri!N!J\r@p`!!!!)!N!36PJ#3'J)0SJ#3(`3!N!9AD@4RCA45C@4TFQ9MG'pb,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA`#fMRVM!!!#l!!!#1i!N!JPVp(\r$!!!!p`!"mZJ!!`!!rrrrrJ#3#"Ei!!!!!J#3"!f@!*!D!JfL!*!I"!#3"9GTEQ4\r[GdaTFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI!,1"JFB\r!!!()!!!%)J#3#',d68m!!!$h!!(bk3!$!!$rrrrq!*!)&[N!!!!#!*!%$CB!N"S\r#$D)!N"m%!*!&@Qp[E8KPD@GSG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lh#2mUY`Mr+J!!"83!!!mI!*!)H)aYN3!$M83!!ie*!!-!!2rrrri!N!J\rBI3!!!!)!N!34PJ#3'J)0SJ#3(`3!N!9#FQphFf9b3fpZG(*[E#j`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9%0A588!N!LfQFcGYTR-h3!!!*J!!!$`!*!)8kcFq`!\r#0D`!!MA%!!-!!2rrrri!N!JD0!!!!!)!N!3%PJ#3'J)0SJ#3(`3!N!9TC'aP4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,DCc0ffVfVA!!!%)!!!$'`!N!L\rkmIJC!!)eV!!#0H)!!`!!rrrrrJ#3#"Sc!!!!!J#3"!L@!*!D!JfL!*!I"!#3"A0\rPG(9`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,Cdl(QfG1b"!!!\r!0J!!!#i!!!"+!!!"61l3$iX!"X8@!!E&)3!$!!$rrrrq!*!)'kF!!!!#!*!%$TB\r!N"S#$D)!N"m%!*!&BfpZCQPR,@eKBbjdH(4%9N08!*!3Y`[&9,F,a98!!!$j!!!\r!mJ!!!!%!N"`@qJ!!!!)!!J#3"!B!!!!)"!F!N"X##+)!N#0`H@jMD'9'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI%,-hapX!!!!i!!!!,`#3#*%rd#N\r!!!$j!!(bmJ!$!!$rrrrq!*!)&[X!!!!#!*!%#jB!N"S#$k)!N"m%!*!&AepTEQP\rdAemZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI#E0A"p-!!!8\rU!!!33J#3#%DZN9m!!!$j!!(bm`!$!!$rrrrq!*!)&[`!!!!#!*!%$CB!N"S#$k)\r!N"m%!*!&3fKTF&CTCAGPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbr&m*XeF(d`!!$&`!!#(X!*!)99-d@J!!!2N!!I,d!!-!!2rrrri!N!J@r3!\r!!!)!N!3+PJ#3'J)2SJ#3(`3!N!9$Efa[FN4#,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mA`Uc9`I6!!!*YJ!!*kN!N!L(aVX%!!!!q3!"m[8!!`!\r!rrrrrJ#3#"Eq!!!!!J#3""#@!*!D!JqL!*!I"!#3"84PG'&TE(0@D@9hCA)ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)XeF(eE0A"p8!!!#L!!!!p3#\r3#%`3%$-!!!$j!!(bpJ!$!!$rrrrq!*!)&[m!!!!#!*!%%*B!N"S#$k)!N"m%!*!\r&D(4YE$3`BfpXEh*c,R4iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&m+Y`Mr+`!!#$)!!"SM!*!)lZ*M*J!!!2N!!I,h!!-!!2rrrri!N!JA!*!%!J#\r3"!f@!*!D!JqL!*!I"!#3"8aTFh4@D@9hCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aI#VF)rb`!!!P5!!!B"3#3#%$*ME8!!!$j!!(bq!!$!!$\rrrrrq!*!)&`%!!!!#!*!%"jB!N"S#$k)!N"m%!*!&6@&TELj`H8C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9(4dH(3!N!Lc9`I9XeF(e3!!"&`!!"C8!*!)R`EqKJ!!!2N\r!!I,j!!-!!2rrrri!N!JA!J!!!!)!N!32PJ#3'J)2SJ#3(`3!N!9ZB@ePC'0[E'p\rbFbjdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI%,DJd5m!!!5\rf!!!1Y3#3#$P9,2X!!!$j!!(bqJ!$!!$rrrrq!*!)&`-!!!!#!*!%%CB!N"S#$k)\r!N"m%!*!&F(P$Efa[FN0SEfpcCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r$9dP&!*!)X[aI%E,mAa%!!!#%!!!!Y`#3#(P`l@F!!!$j!!(bq`!$!!$rrrrq!*!\r)&`3!!!!#!*!%"TB!N"S#$k)!N"m%!*!&F(PZBfKP4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K83eG*43#3#,,mAa'br&m4!!!!K!!!!,8!N!KERNl3!!!!q3!"m[`!!`!\r!rrrrrJ#3#"F&!!!!!J#3"!U@!*!D!JqL!*!I"!#3"A"jEQ0SC5j`HAG'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI$,F)rb`!!!`U!!!T0`#3#%(IX'B\r!!!$j!!(br3!$!!$rrrrq!*!)&`B!!!!#!*!%$jB!N"S#$k)!N"m%!*!&8(PZBfK\rP9fPNCf9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mA`bh#2m\rX!!!@9!!!2%J!N!L0ik&X!!!!q3!"m[i!!`!!rrrrrJ#3#"F(!!!!!J#3"!D@!*!\rD!JqL!*!I"!#3"9*&384048C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&m0Y`Mr,!!!$e3!!$P%!*!)rpN+$3!!!2N!!I,r!!-!!2rrrri!N!JA#!!!!!)\r!N!31PJ#3'J)2SJ#3(`3!N!96G(*TF&CTCAGPFLj`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr&m0XeF(e3!!"QS!!",N!*!)l'!T[3!!!2N!!I-!!!-\r!!2rrrri!N!JA#3!!!!)!N!31PJ#3'J)2SJ#3(`3!N!96GfPdBfKLEf&bC#j`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m0Y`Mr,!!!"q3!!"VX!*!\r)IF`G6J!!!2N!!I-"!!-!!2rrrri!N!JA#J!!!!)!N!30PJ#3'J)2SJ#3(`3!N!9\r8CAKd9QPPGf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA`q\rfS0%Z!!!(#J!!')3!N!LAQfrR!!!!q3!"m`)!!`!!rrrrrJ#3#"F,!!!!!J#3"!q\r@!*!D!JqL!*!I"!#3"94jF'9TEPCTCAGPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9(4dH(3!N!Lc9`I@XeF(eJ!!"6i!!!`3!*!)lJ[kp`!!!2N!!I-$!!-!!2r\rrrri!N!JA$!!!!!)!N!30PJ#3'J)2SJ#3(`3!N!9hC@*MEfa[FR-ZG(Kd4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,0A"pDc9`I@!!!"N!!!!!E9!*!)[IM\re&`!!!2N!!I-%!!-!!2rrrri!N!JA$3!!!!)!N!3,PJ#3'J)2SJ#3(`3!N!9hC@*\rcB@CP,R4iG%4@3e3!N"#fX%eS!*!(qJ!!!2N!!!!"!*!F&`i!!!!$!!)!N!3"!!!\r!#!3(!*!E!JqL!*!M@%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!Lbr&m\r4X[aI%3!!%cJ!!%2I!*!)2%M+K`!!!2S!!I-'!!3!!2rrrri!N!JA$`!!!!)!N!3\r(PJ#3'J)3SJ#3(`3!N!9bCf)ZG(Kd4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4\riG!#3#,,mAa+br&m5!!!#rJ!!"8J!N!K6'6iR!!!!qJ!"m`F!"!!!rrrrrJ#3#"F\r3!!!!!J#3"!b@!*!D!K#L!*!I"!#3"AKXD@0PER0P,R4iG%C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&)UBfJ!N!Lbr&lQYJNp93!!!NJ!!!3@!*!)m*!!fAi!!!$b!!(\rbNJ!#!!$rrrrq!*!)&a%!!!!#!*!%"TB!N"S##+)!N"m%!*!&8N9"4%e&4&C$9!#\r3%,F,a9@h#m9A!!!!q`!!!2)!!!!"!*!F&a)!!!!#!!)!N!3(!!!!#!3(!*!E!JL\rL!*!MFf0bDA"dFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m5YSj\rki`!!!TS!!!@S!*!)4r#1I`!!!2X!!I-*!!-!!2rrrri!N!JA%`!!!!)!N!3-PJ#\r3'J)4SJ#3(`3!N!9LHA4PH@9KFR-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)Y1Xi[l6V1,m!!!CX!!!56!#3#(HPB2F!!!$l!!(c#J!$!!$rrrrq!*!\r)&a3!!!!#!*!%$TB!N"S#%D)!N"m%!*!&BfKPBfYKF("PEQ3ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI%VD1HZ-!!!+#!!!(P`#3#*,IX!`!!!$\rl!!(c#`!$!!$rrrrq!*!)&a8!!!!#!*!%#jB!N"S#%D)!N"m%!*!&BfKPBfY`H@-\rZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI%VD1HZ3!!!Mi!!!\rAJ3#3#)fSEa)!!!$l!!(c$!!$!!$rrrrq!*!)&aB!!!!#!*!%#jB!N"S#%D)!N"m\r%!*!&BfaKFh0QDAJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rI%lD1HZ3!!!%q!!!#H3#3#)c3l1%!!!$l!!(c$3!$!!$rrrrq!*!)&aF!!!!#!*!\r%#jB!N"S#%D)!N"m%!*!&Bfp`HA4TE@8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)X[aI%l6V1,m!!!%!!!!"i!#3#"5YLmN!!!$l!!(c$J!$!!$rrrr\rq!*!)&aJ!!!!#!*!%"jB!N"S#%D)!N"m%!*!&Bh*XCLj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&m6X[aI%`!!!YB!!!Em!*!)$RDS&J!!!2X!!I-\r2!!-!!2rrrri!N!JA'3!!!!)!N!3,PJ#3'J)4SJ#3(`3!N!9MGR0QD@aPFbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9%e69d3!N!Lf*N+rYLC#[`!!"0`!!!M!!*!\r)d")h+J!!!2X!!I-3!!-!!2rrrri!N!JA'J!!!!)!N!3+PJ#3'J)4SJ#3(`3!N!9\rNGA4bC@8ZC'pM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAa1fMRV\rN!!!#RJ!!"N)!N!Mm)ApN!!!!q`!"ma%!!`!!rrrrrJ#3#"FE!!!!!J#3"!Q@!*!\rD!K'L!*!I"!#3"@4eG(*PC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbr&m6YHf'f`!!!Yi!!!@V!*!)"YLfX!!!!2X!!I-5!!-!!2rrrri!N!JA(!!\r!!!)!N!3*PJ#3'J)4SJ#3(`3!N!9PF(4KCh-ZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aI%lD1HZ3!!!()!!!$r!#3#3rDEJ!!!2X!!I-6!!-!!2r\rrrri!N!JA(3!!!!)!N!31PJ#3'J)4SJ#3(`3!N!9QD@jNE'PZDh0dEbj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m8YSjkj!!!$-`!!#H0!*!)rmh\rU)`!!!2X!!I-8!!-!!2rrrri!N!JA(J!!!!)!N!3*PJ#3'J)4SJ#3(`3!N!9QDAK\rMD@3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI&,D1HZ3!!!(\r3!!!%HJ#3#'C3BbF!!!$l!!(c&3!$!!$rrrrq!*!)&am!!!!#!*!%$*B!N"S#%D)\r!N"m%!*!&CQPiD'9KC'9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mAa5fMRVN!!!#5!!!"+)!N!JUVZqP!!!!q`!"maB!!`!!rrrrrJ#3#"FJ!!!\r!!J#3"!b@!*!D!K'L!*!I"!#3"@CTH'j[G'PMC5j`H8C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9&"jG'J!N!Lbr&m8YSjkj!!!!@)!!!0$!*!)aSmD@3!!!2X!!I-A!!-\r!!2rrrri!N!JA)3!!!!)!N!3)PJ#3'J)4SJ#3(`3!N!9QDAK`Fbj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m8YSjkj!!!$I)!!$'!!*!)hpiLd3!\r!!2X!!I-B!!-!!2rrrri!N!JA)J!!!!)!N!3-PJ#3'J)4SJ#3(`3!N!9QG("YDA*\rbEh)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!2KVD1HZ3!!!T\r@!!!Iq`#3#'#X4FB!!!$l!!(c'3!$!!$rrrrq!*!)&b-!!!!#!*!%#jB!N"S#%D)\r!N"m%!*!&Cf9ZBfpNC@-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!\r)X[aI&,D1HZ8!!!D`!!!8%`#3#-8lali!!!$l!!(c'J!$!!$rrrrq!*!)&b3!!!!\r#!*!%"jB!N"S#%D)!N"m%!*!&D$*`H5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&m9YSjkj3!!"3i!!!k(!*!)drJ1D!!!!2X!!I-E!!-!!2rrrri\r!N!JA*3!!!!)!N!3)PJ#3'J)4SJ#3(`3!N!9TCQ4PCLj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&m9Y1Xi[`!!!3)!!!(M!*!)AC6Y2J!!!2X!!I-\rF!!-!!2rrrri!N!JA*J!!!!)!N!3(PJ#3'J)4SJ#3(`3!N!9XCQ0b,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAa@fMRVP!!!#jJ!!#9S!N!KVITA\r2!!!!q`!"mad!!`!!rrrrrJ#3#"FR!!!!!J#3"!Z@!*!D!K'L!*!I"!#3"@aTEQY\rdFQ9P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAa@fMRVP!!!\r"CJ!!!TN!N!M8C%i3!!!!q`!"mai!!`!!rrrrrJ#3#"FS!!!!!J#3"!D@!*!D!K'\rL!*!I"!#3"@aXE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m\r9Y`MdP!!!"@S!!!pV!*!)3S++P!!!!2X!!I-I!!-!!2rrrri!N!JA+3!!!!)!N!3\r,PJ#3'J)4SJ#3(`3!N!9XEfGYCA*RC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&m9YSjkj3!!#Ki!!"p+!*!)X%+EpJ!!!2X!!I-J!!-!!2rrrri\r!N!JA+J!!!!)!N!32PJ#3'J)4SJ#3(`3!N!9YB@PXCA*NB@9YEfiZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI&ED1HZ8!!!IU!!!9I3#3#09XV")\r!!!$l!!(c)3!$!!$rrrrq!*!)&bX!!!!#!*!%#TB!N"S#%D)!N"m%!*!&E@9dD'C\rTH#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m@YSjkj3!!!RB\r!!!BY!*!)Mk$Y"3!!!2X!!I-L!!-!!2rrrri!N!JA,!!!!!)!N!3*PJ#3'J)4SJ#\r3(`3!N!9YDh*PB@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rI&VD[DYN!!"(D!!![j!#3#0Y!qVd!!!$l!!(c)`!$!!$rrrrq!*!)&bd!!!!#!*!\r%#*B!N"S#%D)!N"m%!*!&EQ4TCQBZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r3HA4S!*!)X[aI&VD1HZ8!!!4i!!!*TJ#3#*d&#$F!!!$l!!(c*!!$!!$rrrrq!*!\r)&bi!!!!#!*!%#CB!N"S#%D)!N"m%!*!&EQdbC'9Q,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mAaDfMRVP!!!(hJ!!&cJ!N!MV6mHl!!!!q`!"mb8\r!!`!!rrrrrJ#3#"F[!!!!!J#3"!Z@!*!D!K'L!*!I"!#3"@pLDQGbBA"S,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,3DEL#fMRVQ!!!$,!!!"VN!N!K\r2*iQ'!!!!q`!"mbB!!`!!rrrrrJ#3#"F`!!!!!J#3""#@!*!D!K'L!*!I"!#3"A"\rKFR0PC@jdDA4TCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a\rI&VD1HZB!!!CJ!!!3kJ#3#%KdXj)!!!$l!!(c*`!$!!$rrrrq!*!)&c%!!!!#!*!\r%#TB!N"S#%D)!N"m%!*!&F'&dD'CTH#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9&"jG'J!N!Lbr&m@YSjkjJ!!"FS!!!pY!*!)JriYN3!!!2X!!I-S!!-!!2rrrri\r!N!JA-J!!!!)!N!3)PJ#3'J)4SJ#3(`3!N!9`C'9`Fbj`H8C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9&"jG'J!N!Lbr&mAYSjkjJ!!%1S!!%Ak!*!)*ERf*J!!!2X!!I-\rT!!-!!2rrrri!N!JA-`!!!!)!N!3+PJ#3'J)4SJ#3(`3!N!9`D@jNC@jd,R"j4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaHfMRVQ!!!#3!!!"))!N!K\rP`VYR!!!!q`!"mbS!!`!!rrrrrJ#3#"Fd!!!!!J#3"!L@!*!D!K'L!*!I"!#3"A"\rdB@Gc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mAa+e%!q&!!!\r%i!!!#E-!N!J1bkXY!!!!q`!"mbX!!`!!rrrrrJ#3#"Fe!!!!!J#3"!D@!*!D!K'\rL!*!I"!#3"9*&384048C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m\rAX[aI&`!!!S`!!!AV!*!)-T-&"!!!!2X!!I-X!!-!!2rrrri!N!JA0J!!!!)!N!3\r)PJ#3'J)4SJ#3(`3!N!9bCh*PF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&mAYSjkjJ!!!3`!!!)[!*!)YqkP%3!!!2X!!I-Y!!-!!2rrrri!N!J\rA0`!!!!)!N!3(PJ#3'J)4SJ#3(`3!N!9cG@CQ,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mAaHfMRVQ!!!$K!!!#B`!N!KL5MK9!!!!q`!"mbi!!`!\r!rrrrrJ#3#"Fi!!!!!J#3"!H@!*!D!K'L!*!I"!#3"A0eE68ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI',D1HZB!!#jX!!$,!3#3#%QBI)N!!!$\rl!!(c,`!$!!$rrrrq!*!)&cN!!!!#!*!%$*B!N"S#%D)!N"m%!*!&G'9iD6*SG'e\rX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaLfMRVR!!!(0!!\r!&U%!N!K0NH(#!!!!q`!"mc!!!`!!rrrrrJ#3#"Fk!!!!!J#3"!Z@!*!D!K'L!*!\rI"!#3"A4bC@9cH@jM,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,\rmAaQbr&mC!!!#!!!!"*S!N!J'*hMd!!!!q`!"mc%!!`!!rrrrrJ#3#"Fl!!!!!J#\r3"!Z@!*!D!K'L!*!I"!#3"A9ZG'&LD@Cj,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,,mAaQfMRVR!!!#AJ!!"BF!N!K(4a[p!!!!q`!"mc)!!`!!rrr\rrrJ#3#"Fm!!!!!J#3"!L@!*!D!K'L!*!I"!#3"AGSD@0S,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,,mAaQfMRVR!!!%B!!!#Z-!N!L+'jPP!!!!q`!\r"mc-!!`!!rrrrrJ#3#"Fp!!!!!J#3"!H@!*!D!K'L!*!I"!#3"AKiBfNZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YDqPK,D1HZF!!"[X!!"H2`#3#2V\r*f,J!!ifJ!!10b!!$!!$rrrrq!*!)'(`!!!!#!*!%#*B!N"S#%D)!N"m%!*!&G(*\rKBf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YJNp9lD1HZB!!!B\r-!!!@L`#3#(V["b`!"$aS!!3mM!!$!!$rrrrq!*!)'H8!!!!#!*!%#CB!N"S#%D)\r!N"m%!*!&FQ9NC@e[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B\r*29Hf#6eA!!!,E!!!)BN!N!L`(L,K!!3mD!!%2)d!!`!!rrrrrJ#3#"RN!!!!!J#\r3"!Z@!*!D!K'L!*!I"!#3"A*PD@jNC@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K83eG*43#3#,E&dK1faG)6!!!!1!!!!$!!N!JXief%!!GlZJ!(Hpd!!`!!rrr\rrrJ#3#"aI!!!!!J#3"!@@!*!D!K'L!*!I"!#3"A"jC'pM4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,EKQ&QfiCKC!!!!)J!!!"N!N!L[X6(G!!K!J`!)3+F\r!!`!!rrrrrJ#3#"ah!!!!!J#3"!Q@!*!D!K'L!*!I"!#3"A"jC'pM,R"jGd4@3e3\r!N"#fX%eU!*!(r!!!!2)!!!!"!*!F&ci!!!!#!!)!N!3-!!!!#!3(!*!E!JLL!*!\rMGQ9bFfP[EQ0SC@0V4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaQ\rbr&mC!!!"!J!!!DN!N!JG3RqC!!!!r!!"mc8!!`!!rrrrrJ#3#"Fr!!!!!J#3""#\r@!*!D!K+L!*!I"!#3"9pMD'9MDhCPFR0TEfiZF(P'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)X[aI'V,mAaS!!!+b!!!&3!#3#*+b4'8!!!$m!!(c0J!$!!$\rrrrrq!*!)&d!!!!!#!*!%%*B!N"S#%U)!N"m%!*!&BfKPBfYfCA*cD@pZFbj`H8C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&mDX[aI'J!!"%J!!!rS!*!\r)ZcX5@`!!!2`!!I-h!!-!!2rrrri!N!JA33!!!!)!N!34PJ#3'J)5SJ#3(`3!N!9\r`HACPFR0TEfjMD'9MDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!L\rbr&mCX[aI'3!!!ri!!!KI!*!)FE!PjJ!!!2`!!I-i!!-!!2rrrri!N!JA3J!!!!)\r!N!3'PJ#3'J)5SJ#3(`3!N!9548&%689%9N08!*!3Y`[&@,F,a9F!!!$p!!!!mJ!\r!!!%!N"`A3`!!!!)!!J#3"!S!!!!)"!F!N"X##+)!N#0hC@*MD'9MDf9b4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mAaUdLrH-!!!"VJ!!!Xi!N!K9$b'\rb!!!!r3!"mcS!!`!!rrrrrJ#3#"G%!!!!!J#3"!D@!*!D!K1L!*!I"!#3"9*&384\r048C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&mDX[aI'J!!$%i!!#[\r*!*!)GfQ8H3!!!2d!!I-l!!-!!2rrrri!N!JA43!!!!)!N!3+PJ#3'J)6SJ#3(`3\r!N!9dDh4[Efac,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaZ\rdLrH-!!!3IJ!!1q8!N!K*CKfi!!!!r3!"mc`!!`!!rrrrrJ#3#"G'!!!!!J#3"!L\r@!*!D!K1L!*!I"!#3"AGMCh9T,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P\rdD!#3#,,mAaZbr&mE!!!!PJ!!!-)!N!JAlGF$!!!!r3!"mcd!!`!!rrrrrJ#3#"G\r(!!!!!J#3"!L@!*!D!K1L!*!I"!#3"AGME@&M,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,,mAaZh#258!!!JdJ!!EYm!N!J%I-E"!!!!r3!"mci!!`!\r!rrrrrJ#3#"G)!!!!!J#3"!f@!*!D!K1L!*!I"!#3"AGPBQ0SC@0VCA)ZF(P'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI'l8Y(X8!!!6k!!!0D`#3#$l\rIfD3!!!$p!!(c2`!$!!$rrrrq!*!)&dN!!!!#!*!%$*B!N"S#%k)!N"m%!*!&Gf9\rLFh9MDf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaZdLrH\r0!!!(p!!!'jB!N!J`Rr02!!!!r3!"md!!!`!!rrrrrJ#3#"G+!!!!!J#3"!L@!*!\rD!K1L!*!I"!#3"AGcCh9T,R"j4&C$9!#3%,E"dekf`G0H!!!"%`!!!4)!!!!"!*!\rF'#X!!!!#!!)!N!3%!!!!#!8(!*!E!Li!!3#3)Q*RC@j%9N08!*!3YX(6AJ#3"J%\r8!!!"%`!!!!%!N"`B,!!!!!-!!J#3"!3!!!!)"3F!N"X#,`!"!*!LBQGPENC@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lRX[aHj`!!!)`!!!&,!*!)+80\r-43!!!43!!DY'!!3!!2rrrri!N!JB,3!!!!)!N!3(PJ#3'J)`!!%!N"i&!*!&BQG\rPELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lSY"TZ(3!!"FS\r!!"M&!*!)!cU'b3!!!43!!DY(!!3!!2rrrri!N!JB,J!!!!)!N!30PJ#3'J)`!!%\r!N"i&!*!&BQGPEN*eCQCPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lbr&lSYPaNA!!!#!S!!"SL!!!!HJ!!!CTV,Die!!!"&!!"UdJ!"!!!rrrrrJ#\r3#"J[!!!!!J#3""#@!*!D!M!!!3#3(J8!N!9LCf9Z4f9ZCA*KG'pb,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAZUfA'4F!!!"F!!!![3!!!"m!!!\r"QUc6jbJ!!!%8!!'V53!%!!$rrrrq!*!)'$!!!!!#!*!%&CB!N"S#-!!"!*!H"3#\r3"@*RC@j(C@jPFQ&dEh*(FQpeF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lbr&lUX[aHkJ!!!Ui!!!ZQ!*!))&-#(!!!!43!!DY+!!3!!2rrrri!N!J\rB-3!!!!)!N!34PJ#3'J)`!!%!N"i&!*!&BQGPENKPBA"#G@CQCA)ZF(P'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHklD"-d3!!!$f!!!"EJ!!!+i!!!(\r@)L'[6J!!!43!!DY,!!3!!2rrrri!N!JB-J!!!!)!N!33PJ#3'J)`!!%!N"i&!*!\r&BQGPEQa[Bf&dD@pZFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L\rbr&lUYPaNA!!!![S!!!Ki!!!!IJ!!!CVEh$Z*!!!"&!!"Ud`!"!!!rrrrrJ#3#"J\rc!!!!!J#3"!f@!*!D!M!!!3#3(J8!N!9LCf9Z6@pNG@aP,R"j4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K88(PdD!#3#,-G@b1fA'4G!!!)Q!!!(BB!!!#8!!!"QQhFdCN\r!!!%8!!'V63!%!!$rrrrq!*!)'$3!!!!#!*!%&jB!N"S#-!!"!*!H"3#3"@*RC@j\r2BQTPBh4%C@CTEQPdD@pZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,,mAZUbr&lU!!!)2!!!&AB!N!J+55lH!!!"&!!"Udi!"!!!rrrrrJ#3#"Je!!!\r!!J#3"!f@!*!D!M!!!3#3(J8!N!9LCf9Z6h9dF(9d,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,,mAZZbr&lV!!!"P!!!"Im!N!JCe$X5!!!"&!!"Udm\r!"!!!rrrrrJ#3#"Jf!!!!!J#3""+@!*!D!M!!!3#3(J8!N!9LCf9Z8h4KBfY#G@C\rQCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHkl,mAZX!!!+\rQ!!!'c!#3#%J`qk-!!!%8!!'V8!!%!!$rrrrq!*!)'$F!!!!#!*!%%jB!N"S#-!!\r"!*!H"3#3"@*RC@j6G(*TEQG#G@CQCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&43HA4S!*!)X[aHkl@,SL)!!!GF!!!B"`#3#&1CP`)!!!%8!!'V83!%!!$rrrr\rq!*!)'$J!!!!#!*!%#jB!N"S#-!!"!*!H"3#3"@*RC@j8HA"P,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAZZbr&lV!!!$6!!!#8d!N!MQ8G80!!!\r"&!!"Ue)!"!!!rrrrrJ#3#"Jj!!!!!J#3"!q@!*!D!M!!!3#3(J8!N!9LCf9Z9Q&\rbD@&LE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHklE"b+8\r!!!HN!!!9M!!!!%!!!!%kj1-fY!!!!43!!DY6!!3!!2rrrri!N!JB1J!!!!)!N!3\r0PJ#3'J)`!!%!N"i&!*!&E@&MFh9`F'pbG#j`H8C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9&"jG'J!N!Lbr&lVYX()T3!!&&`!!%0k!!!!`!!!!I*rGZZ%!!!"&!!"Ue3\r!"!!!rrrrrJ#3#"Jl!!!!!J#3"!b@!*!D!M!!!3#3(J8!N!9cBf&ZG'p[E(-ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aHjV,mAZB!!!$D!!!"G3#\r3#,eqfL-!!!%6!!'V4!!$!!$rrrrq!*!)'$`!!!!#!*!%"TB!N"S#,`!"!*!H"3#\r3"9*&3840484@3e3!N"#fX%eU!*!(rJ!!!2)!!!!"!*!F&dX!!!!#!!)!N!3&!!!\r!#!3(!*!E!JLL!*!MGfpbE'4'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!\r)X[aI(,,mAa`!!!8H!!!,-J#3###c$q)!!!$q!!(c3J!$!!$rrrrq!*!)&d`!!!!\r#!*!%"TB!N"S#&+)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r83eG*43#3#,,mAabcJB((!!!9S!!!0XJ!N!K3263M!!!!rJ!"md-!!`!!rrrrrJ#\r3#"G0!!!!!J#3"!@@!*!D!K5L!*!I"!#3"AG[FQaN4&C$9!#3%,F,a8kh#m91!!!\r"'!!$M4X!!!!"!*!F'(X!!!!#!!)!N!3)!!!!#!3(!*!E!JLL!*!MBfpYF'PXCA*\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFLYcVB8Vqd!!!&H!!!$'J#\r3#*pNq3N!!idJ!!10)3!$!!$rrrrq!*!)'(S!!!!#!*!%#TB!N"S#0+)!N"m%!*!\r&BfpYF'PXC5j`H84@3e3!N"#h#m91Y`[&6J!!!4J!!idJ!!!!!3#3("Kj!!!!!`!\r#!*!%#!!!!!J%"`#3'`)dSJ#3)f0[EA"TE'9b4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K88(PdD!#3#,A)VFkh#253!!!!!A!!!!+U!*!)idVV@3!$M5-!!idN!!3!!2r\rrrri!N!JBH!!!!!)!N!3,PJ#3'J)eSJ#3(`3!N!9IAfPZDA4IAbj`H8C@3e3!N!F\r))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+h1YL*4B3!!#c3!!%jb!*!)SCqbT!!\r$M5-!!idP!!3!!2rrrri!N!JBG`!!!!)!N!3'PJ#3'J)eSJ#3(`3!N!9KFh3ZF(P\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFLYcVF)p*!!!!!!M!!!!-X\r!N!L(Vi(q!!10)`!$M5B!"!!!rrrrrJ#3#"Kf!!!!!J#3"!Q@!*!D!M@L!*!I"!#\r3"@0[ER0dFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+h1YN#\raSJ!!!63!!!2!!*!)4c!GkJ!$M5-!!idR!!3!!2rrrri!N!JBG3!!!!)!N!3(PJ#\r3'J)eSJ#3(`3!N!9YDA0M,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#\r3#,A)VFkh#253!!!!'a!!!''X!*!)e6HYNJ!$M5-!!idS!!3!!2rrrri!N!JBG!!\r!!!)!N!3+PJ#3'J)eSJ#3(`3!N!9`H@&cFf9Y,R"j4PC$9!#3"`JJ!!!"!*!)"`#\r3%J&849K88(PdD!#3#,A)VFkh#254!!!J&J!!QFi!N!KT!1-$!!10)`!$M5N!"!!\r!rrrrrJ#3#"Kc!!!!!J#3"!b@!*!D!M@L!*!I"!#3"A"jBfpNC@GPELj`H8C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+h2Y`MdN3!!)E)!!+3`!*!)&HT\rCb3!$M5-!!idU!!3!!2rrrri!N!JBFJ!!!!)!N!31PJ#3'J)eSJ#3(`3!N!9dFQ&\rZFfC[FQePFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+h2Y`M\rdN3!!"Di!!"#Z!*!)5`3fE!!$M5-!!idV!!3!!2rrrri!N!JBF3!!!!)!N!3+PJ#\r3'J)eSJ#3(`3!N!9fDA0TG'pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4\riG!#3#,BL8@'f)P&K!!!#CJ!!"MB!N!L+rVRE!!)eL3!#0B`!"!!!rrrrrJ#3#"S\rb!!!!!J#3"!H@!*!D!M@L!*!I"!#3"@&cG#jdH(4'9N08!*!(##!!!!%!N!J(!*!\r5!94&@&43HA4S!*!)YL*4BEBL8@%!!!CB!!!6P`#3#*%PXNm!!M@*!!)eM3!%!!$\rrrrrq!*!)'M%!!!!#!*!%#CB!N"S#0D)!N"m%!*!&BA0dCf9Z,R"j4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F)p*!!Y`MdN!!!!!+D!!!(-J#3#&G-A`d\r!#+8!!!LP"J!%!!$rrrrq!*!)(+d!!!!#!*!%#CB!N"S#0D)!N"m%!*!&CR9dGA*\rP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F)p*'h#254!!!,iJ!\r!,YF!N!KKL8"C!!LP!!!)T3S!"!!!rrrrrJ#3#"bX!!!!!J#3"!U@!*!D!M@L!*!\rI"!#3"A0jE@*[E(-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFL\rYcVA)VFi!!!'S!!!$L3#3#0qPKa3!!idJ!!10)J!$!!$rrrrq!*!)'(!!!!!#!*!\r%"jB!N"S#0+)!N"m%!*!&C'9YEbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"\rjG'J!N!Lf#6e9YJNp93!!!@J!!!-A!*!)(9H*H3!%1qB!"$[T!!-!!2rrrri!N!J\rCi`!!!!)!N!3+PJ#3'J)dSJ#3(`3!N!9NG@e`F(PM,R"j4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K88(PdD!#3#,B*29@f#6e9!!!!P!!!!0)!N!MM(V!T!!3ljJ!%1qS\r!!`!!rrrrrJ#3#"RL!!!!!J#3"!L@!*!D!M5L!*!I"!#3"A0PG(9`,R"j4PC$9!#\r3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B8Vqff&+rY!!!#H!!!"CS!N!JEdpe\r2!!5-C`!%M'X!!`!!rrrrrJ#3#"Rq!!!!!J#3"!Z@!*!D!M5L!*!I"!#3"A*PCh*\rdCA0d,R"j4&C$9!#3%,Db'LS!N!B"'3!%1q%!!!!"!*!F'H%!!!!#!!)!N!3(!!!\r!#!3(!*!E!JLL!*!MG@jTBfpNC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J\r!N!Lf#6eAYT1P-J!!&X3!!&"-!*!)S%%0H`!%2*F!"$bB!!-!!2rrrri!N!JCi!!\r!!!)!N!35PJ#3'J*RSJ#3(`3!N!9YB@YPG@jTBfpNC@4KG'%ZF(P'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!3!#rJ%@!!#bed3XYKNE$3!!!5J!!!(L!*!)@KE\rEb!!!!(8!!DV)!!%!!2rrrri!N!JB+3!!!!)!N!3+PJ#3'J)D!!%!N"i%!*!&8Q9\rKC%eP,@4PGN4@3e3!N!J$i!,r!&F""lF,a+'h#m5K!!!"%3!!!(8!!!!"!*!F'#F\r!!!!"!!)!N!3(!!!!#!8(!*!E!KS!!3#3)Ne[C(9XCA0'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&4$9dP&!*!)X[aHTEAE0B!!!!FD!!!6&!!!!(!!!!'DIE8R8`!!!4%\r!!H`A!!)!!2rrrri!N!JB+!!!!!)!N!3+PJ#3'J)Y!!%!N"i&!*!&H(KYEf4eE'8\rZBd4@3e3!N!J$i!,r!!B""lF,a*Hh#m5D!!!"!`!!!(8!!!!"!*!F&f`!!!!"!!)\r!N!3(!!!!#!8(!*!E!KS!!3#3)NPZBfaeC'9'9N08!*!(##!!!!%!N!J(!*!5!94\r&@&4$9dP&!*!)X[aG3lF)ra%!!"Pk!!"pJ!!!!$i!!!%kN8KP-!!!!3-!!DU+!!)\r!!2rrrri!N!JAE3!!!!)!N!3+PJ#3'J)I!!%!N"i&!*!&B@*cG(*KBh3ZD%C@3e3\r!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e%YGXe5J!!!@3!!!-B!*!)EJd\rJr3!!!3-!!DU,!!)!!2rrrri!N!JAEJ!!!!)!N!3)PJ#3'J)I!!%!N"i&!*!&BQP\rdFf9d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG4,AE08S!!!%\ri!!!$S3#3#"-)BAJ!!!%$!!'UM!!#!!$rrrrq!*!)&fm!!!!#!*!%$TB!N"S#(`!\r"!*!H"3#3"@*eCQCPFQpLDQ9MG#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG\r*43#3#,,mA85fhl`1!!!%RJ!!$Bd!!!$J!!!"1ZbM*cN!!!%$!!'UM3!#!!$rrrr\rq!*!)&h!!!!!#!*!%"jB!N"S#(`!"!*!H"3#3"@0PGQ&X,QK'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)X[aG4,EKQ#N!!!,!!!!)k!#3#*a[k'J!!!%$!!'\rUMJ!#!!$rrrrq!*!)&h%!!!!#!*!%$CB!N"S#(`!"!*!H"3#3"@0XBA0cEf*UC@0\rd,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG4,AE08S!!!*H!!!\r'R!#3#$V(a$`!!!%$!!'UM`!#!!$rrrrq!*!)&h)!!!!#!*!%#CB!N"S#(`!"!*!\rH"3#3"@0[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Le%!p\rGYDqPFJ!!!q3!!!dD!*!)5'+*%3!!!3-!!DU3!!!#!!$rrrrq!*!)&h-!!!!#!*!\r%#*B!N"S#(`!"!*!H"3#3"@0[C'9MFbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r83eG*43#3#,,mA8@fhl`1!!!%!!!!#CF!N!KZ@+3@!!!"!`!"UT%!!J!!rrrrrJ#\r3#"Gd!!!!!J#3"!Q@!*!D!Km!!3#3(J8!N!9MEfe`D@aP,QK'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)X[aG4E@43T`!!!(U!!!&ZJ#3#!lmI2X!!!%$!!'\rUNJ!#!!$rrrrq!*!)&h8!!!!#!*!%$jB!N"S#(`!"!*!H"3#3"@0[EA"XCAK[BQT\rPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e%YD*Z23!!"VS\r!!!qc!*!)&p%YSJ!!!3-!!DU6!!)!!2rrrri!N!JAGJ!!!!)!N!3,PJ#3'J)I!!%\r!N"i&!*!&Be0dFQPZCdP2,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)X[aG4EAE08S!!!&F!!!%i!#3#!MFL13!!!%$!!'UP!!#!!$rrrrq!*!)&hF!!!!\r#!*!%$*B!N"S#(`!"!*!H"3#3"@4TBh4[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F\r!N")"9%9B9%0A588!N!Lbr&e&YGXe5J!!!N`!!!4N!!!!2J!!!6UiYVSP!!!"!`!\r"UT8!!J!!rrrrrJ#3#"Gi!!!!!J#3"!Q@!*!D!Km!!3#3(J8!N!9PFR*MEf4P,QK\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG4EAE08S!!!#N!!!!q`#\r3#%U)QP)!!!%$!!'UPJ!#!!$rrrrq!*!)&hN!!!!#!*!%"TB!N"S#(`!"!*!H"3#\r3"@9fB@`ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e(YGXe5J!\r!!8)!!!1k!*!)e00[b!!!!3-!!DUA!!)!!2rrrri!N!JAHJ!!!!)!N!3-PJ#3'J)\rI!!%!N"i&!*!&CQPXC@pLDQ9MG#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG\r*43#3#,,mA8Lefc9,!!!"C!!!!Y!!N!KCa5q8!!!"!`!"UTJ!!J!!rrrrrJ#3#"G\rl!!!!!J#3"!f@!*!D!Km!!3#3(J8!N!9QE'pKG'pLDQ9MG#jS4PC$9!#3"`JJ!!!\r"!*!)"`#3%J&849K83eG*43#3#,,mA8UfhAY"!!!%2J!!#cB!!!"!!!!"1JD4,$%\r!!!%$!!'UQ3!#!!$rrrrq!*!)&h`!!!!#!*!%$CB!N"S#(`!"!*!H"3#3"@CbB@e\rPEf*UC@0d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG6VEKQ#N\r!!!(8!!!&[`#3#)*h(DS!!!%$!!'UQJ!#!!$rrrrq!*!)&hd!!!!#!*!%$*B!N"S\r#(`!"!*!H"3#3"@CeEQ0[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0\rA588!N!Lbr&e1YFY22`!!!F`!!!9[!*!)Q"+"T`!!!3-!!DUE!!)!!2rrrri!N!J\rAIJ!!!!)!N!3+PJ#3'J)I!!%!N"i&!*!&Ch*KE@PZDA3ZD%C@3e3!N!F))!!!!3#\r3#!F!N")"9%9B9%0A588!N!Lbr&e1YGXe5`!!!a)!!!IP!*!)aY32#3!!!3-!!DU\rF!!)!!2rrrri!N!JAI`!!!!)!N!3*PJ#3'J)I!!%!N"i&!*!&Ch*KE@eKFLjS4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA8qefc9,!!!"m!!!"J)!N!K\rF$l46!!!"!`!"UTd!!J!!rrrrrJ#3#"H!!!!!!J#3"!L@!*!D!Km!!3#3(J8!N!9\rTEA"[FR3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e2YGXe5`!\r!""B!!!M&!*!)[A$jRJ!!!3-!!DUH!!)!!2rrrri!N!JAJ3!!!!)!N!3,PJ#3'J)\rI!!%!N"i&!*!&D@jdEf*UC@0d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP\r&!*!)X[aG6lAE08X!!!#H!!!"(3#3#(B2Tr)!!!%$!!'UR`!#!!$rrrrq!*!)&i)\r!!!!#!*!%#jB!N"S#(`!"!*!H"3#3"@PZG(*MD'9MDbjS4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,,mA8qefc9,!!!#Q!!!"`B!N!L(0jDR!!!"!`!"UU!\r!!J!!rrrrrJ#3#"H$!!!!!J#3"!b@!*!D!Km!!3#3(J8!N!9XDA0dEf*UC@0d,QK\r'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG6lAE08X!!!1)!!!'lJ#\r3#)PA'%J!!!%$!!'US3!#!!$rrrrq!*!)&i3!!!!#!*!%$CB!N"S#(`!"!*!H"3#\r3"@a[EQGTER4bCA"b,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[a\rG6lB*23B!!!)#!!!&r`#3#$IdrjX!!!%$!!'USJ!#!!$rrrrq!*!)&i8!!!!#!*!\r%$*B!N"S#(`!"!*!H"3#3"@a[EQG[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")\r"9%9B9%0A588!N!Lbr&e2YTR-e`!!!3)!!!,'!*!)A"he03!!!3-!!DUN!!)!!2r\rrrri!N!JAK`!!!!)!N!3*PJ#3'J)I!!%!N"i&!*!&E@&bFfKKE#jS4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9#efc9,!!!!NJ!!!2d!N!KVmkNQ!!!\r"!`!"UU8!!J!!rrrrrJ#3#"H)!!!!!J#3"!f@!*!D!Km!!3#3(J8!N!9YCA4KCh*\rKE@eKFLjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9#efc9,!!!\r#KJ!!"bJ!N!K"k"DP!!!"!`!"UUB!!J!!rrrrrJ#3#"H*!!!!!J#3"!k@!*!D!Km\r!!3#3(J8!N!9YCA4SEf4[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0\rA588!N!Lbr&e3YTLblJ!!"A`!!!cj!!!"L!!!!CUda1EH!!!"!`!"UUF!!J!!rrr\rrrJ#3#"H+!!!!!J#3"!b@!*!D!Km!!3#3(J8!N!9YEf4cGA"`Eh*d,QK'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG8,AE08`!!!$b!!!#1J#3#2hJ(H3\r!!!%$!!'UU!!#!!$rrrrq!*!)&iX!!!!#!*!%$TB!N"S#(`!"!*!H"3#3"@e[C(9\rXC@pLDQ9MG#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9'efc9\r-!!!"j!!!!qi!!!"!!!!"1LaZ8P8!!!%$!!'UVJ!#!!$rrrrq!*!)&j%!!!!#!*!\r%"TB!N"S#(`!"!*!H"3#3"@j[C'8ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0\rA588!N!Lbr&e6Y`Mr%3!!'V!!!&(H!!!!e!!!!CSk9TAc!!!"!`!"UUm!!J!!rrr\rrrJ#3#"H5!!!!!J#3"!L@!*!D!Km!!3#3(J8!N!9[BQTPBh3ZD%C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e8YZ'B+J!!$LS!!#V1!!!!J!!!!CUTh6Z\rH!!!"!`!"UV!!!J!!rrrrrJ#3#"H6!!!!!J#3"!Q@!*!D!Km!!3#3(J8!N!9[BQT\rTEA"X,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG9,F)ra)!!!B\r'!!!31`#3#(Vj!Ud!!!%$!!'UX3!#!!$rrrrq!*!)&j3!!!!#!*!%#*B!N"S#(`!\r"!*!H"3#3"@p`BfpNC5jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,\rmA95faG(j!!!"TJ!!!iF!N!L5cfp,!!!"!`!"UV)!!J!!rrrrrJ#3#"H9!!!!!J#\r3"!L@!*!D!Km!!3#3(J8!N!9[Ff4PCR-ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9\rB9%0A588!N!Lbr&e8YGXe6!!!!3i!!!*P!*!)J'N$$3!!!3-!!DUc!!)!!2rrrri\r!N!JAPJ!!!!)!N!3+PJ#3'J)I!!%!N"i&!*!&F'&bFf9dEfXZD%C@3e3!N!F))!!\r!!3#3#!F!N")"9%9B9%0A588!N!Lfb`'hY`N#d`!!!NJ!!!6Y!*!)5JUcpJ!!!3-\r!!DUd!!)!!2rrrri!N!JAP`!!!!)!N!3-PJ#3'J)I!!%!N"i&!*!&F'&dBfKXCAC\rPE#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9@efc9-!!!"r!!\r!"6)!!!"!!!!"1X#TP5F!!!%$!!'UY3!#!!$rrrrq!*!)&jJ!!!!#!*!%$CB!N"S\r#(`!"!*!H"3#3"A"RC@jSC@&NCA*c,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4\r$9dP&!*!)X[aG9EAE08`!!!$F!!!#(3!!!%!!!!%kRNrk@J!!!3-!!DUf!!)!!2r\rrrri!N!JAQ3!!!!)!N!3*PJ#3'J)I!!%!N"i&!*!&F(PNC@*eCbjS4PC$9!#3"`J\rJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9@h#2m5!!!%"J!!%0)!!!#!!!!"QYi\rki+m!!!%$!!'UY`!#!!$rrrrq!*!)&jS!!!!#!*!%#TB!N"S#(`!"!*!H"3#3"A"\rjCA*bEh*c,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG9E,mA98\r!!!dX!!!K,`#3#)AjmpB!!!%$!!'UZ!!#!!$rrrrq!*!)&jX!!!!#!*!%"jB!N"S\r#(`!"!*!H"3#3"A"jCR"P,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)X[aG9ED6T3F!!!*m!!!(L!!!!%!!!!%k3-RD``!!!3-!!DUj!!)!!2rrrri!N!J\rAR!!!!!)!N!3*PJ#3'J)I!!%!N"i&!*!&F(PcG'&dC5jS4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,,mA81h#2m3!!!%H!!!#VX!!!%'!!!"QSQjTa%!!!%\r$!!'UZJ!#!!$rrrrq!*!)&jd!!!!#!*!%#*B!N"S#(`!"!*!H"3#3"9"jG'K[ELj\rS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9@fiCJU!!!%YJ!!%A-\r!!!"m!!!"QN,M'DF!!!%$!!'UZ`!#!!$rrrrq!*!)&ji!!!!#!*!%#jB!N"S#(`!\r"!*!H"3#3"A"jG'K[ER*eELjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#\r3#,,mA9Defc90!!!"Y!!!"D3!!!"b!!!"QX-FP8d!!!%$!!'U[!!#!!$rrrrq!*!\r)&jm!!!!#!*!%#TB!N"S#(`!"!*!H"3#3"A"jG'KbC@&N,QK'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)X[aG9VAE08d!!!%5!!!"c`#3#-KpUUm!!!%$!!'\rU[3!#!!$rrrrq!*!)&k!!!!!#!*!%$CB!N"S#(`!"!*!H"3#3"A*KEQGPEf*UC@0\rd,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG9V@43Ti!!!(5!!!\r$b`#3#)d+@"-!!!%$!!'U[`!#!!$rrrrq!*!)&k)!!!!#!*!%$CB!N"S#(`!"!*!\rH"3#3"A0XD@0PEf*UC@0d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!\r)X[aG@EDmS(N!!!BF!!!4U3!!!(S!!!'D#,QZVJ!!!3-!!DV!!!)!!2rrrri!N!J\rAS`!!!!)!N!31PJ#3'J)I!!%!N"i&!*!&Fh4bD@jREf*UC@0d,QK'9N08!*!(##!\r!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aGA,AE08d!!!15!!!(AJ!!!(J!!!'D$A*\r-$3!!!3-!!DV"!!)!!2rrrri!N!JAT!!!!!)!N!31PJ#3'J)I!!%!N"i&!*!&Fh4\rbG@0dE@9YBQ9b,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aGAVC\rfXeF!!!%b!!!#hJ#3#-ShE-F!!!%$!!'U`J!#!!$rrrrq!*!)&k8!!!!#!*!%#jB\r!N"S#(`!"!*!H"3#3"A0jFfe[C(9XC5jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K\r83eG*43#3#,,mA9kefc90!!!#S!!!"RF!N!KA(5HH!!!"!`!"UX3!!J!!rrrrrJ#\r3#"HR!!!!!J#3"!H@!*!D!Km!!3#3(J8!N!9dEfYPELjS4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,,mA9kefc90!!!"%!!!!MX!N!KFhZ@Q!!!"!`!"UX8\r!!J!!rrrrrJ#3#"HS!!!!!J#3"!Z@!*!D!Km!!3#3(J8!N!9dFQ&MC@*KBfXZD%C\r@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&eIYGXe63!!!T3!!!BV!*!\r)q-R9-!!!!3-!!DV'!!)!!2rrrri!N!JAU3!!!!)!N!30PJ#3'J)I!!%!N"i&!*!\r&G(9`E'9[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Le%!p\rJYFLYV`!!((3!!(2p!!!!2J!!!6Tdp[Sk!!!"!`!"UXF!!J!!rrrrrJ#3#"HU!!!\r!!J#3"!q@!*!D!Km!!3#3(J8!N!9eEQPMEf4PEf*UC@0d,QK'9N08!*!(##!!!!%\r!N!J(!*!5!94&@&4$9dP&!*!)YDa5%VAE08`!!!H-!!!81`#3#,bhj$d!!f8'!!0\rP-3!#!!$rrrrq!*!)''m!!!!#!*!%"jB!N"S#(`!"!*!H"3#3"A"jE@9Y,QK'9N0\r8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YE*,5EDmVQF!!")Q!!![$J!!!(S\r!!!'D+jfLT3!$C3B!!f8b!!)!!2rrrri!N!JBEJ!!!!)!N!3)PJ#3'J)I!!%!N"i\r&!*!&F(P`Eh*d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YB!TKlD\r1HUX!!!&`!!!#UJ!!!()!!!'D%HaXT3!$C3B!!f8r!!)!!2rrrri!N!JBE3!!!!)\r!N!3*PJ#3'J)I!!%!N"i&!*!&G@0ZD'&cD#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&\r849K83eG*43#3"!%"!!#fQ,,YYTLbl3!!!4`!!!*m!*!)Pl&VZ!!#0QB!!MCU!!)\r!!2rrrri!N!JD+J!!!!)!N!3-PJ#3'J)I!!%!N"i&!*!&Bf9XE'pLDQ9MG#jS4PC\r$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43!!!HB!!3!!YRDc9lCfXeF!!!51!!!\r0c`#3#%YXB+3!!MCQ!!)fMJ!#!!$rrrrq!*!)'LN!!!!#!*!%#jB!N"S#(`!"!*!\rH"3#3"A"jAf0eFR0PFbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43!!!HB\r"33!!YN#aNlC!XC-!!!#U!!!"3`#3#2'BZN!!!MCQ!!)fNJ!#!!$rrrrq!*!)'LJ\r!!!!#!*!%#TB!N"S#(`!"!*!H"3#3"A"jCf9dEh"d,QK'9N08!*!(##!!!!%!N!J\r(!*!5!94&@&4$9dP&!!!#L!#"!!#fS0%-YYqm$`!!"@i!!!iP!*!)[a"(9`!#0QB\r!!MDG!!)!!2rrrri!N!JD*`!!!!)!N!3+PJ#3'J)I!!%!N"i&!*!&FhPYG'&LE'8\rZD%4@3e3!N"#h#m5DY`[%QJ!!!4S!"XQd!!!!!3#3("ZQ!!!!!J!#!*!%"`!!!!J\r&"`#3'`)I!!%!N#*1G@ePFQPM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#\r3#,DdZHkh#lF$!!!-L!!!0Cd!N!K0-Fm+!!E*mJ!'bI-!!`!!rrrrrJ#3#"ZP!!!\r!!J#3"!f@!*!D!RS!!3#3(J8!N!9KFR*KH@pLDQ9MG#jS4PC$9!#3"`JJ!!!"!*!\r)"`#3%J&849K83eG*43#3#,F,Y`1h#lF$!!!&N!!!!""V!*!)FTrcaJ!'bI)!"XR\rd!!-!!2rrrri!N!JET!!!!!)!N!3&PJ#3'J*k!!%!N"i&!*!&CM*M,QK'9N08!*!\r(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y`Zh!lF,Y`-!!!'D!!!&"!#3#(2Pd2`\r!"XRb!!E*p3!$!!$rrrrq!*!)'k-!!!!#!*!%#*B!N"S#HJ!"!*!H"3#3"A*KEQa\rTBLjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,DdZHkfY,RZ!!!&AJ!\r!'BS!N!M,FZJ3!!E*mJ!'bIB!!`!!rrrrrJ#3#"ZL!!!!!J#3"!f@!*!D!RS!!3#\r3(J8!N!9eCR9ZBfpLDQ9MG#jS4PC$9!!!J!#3"!J)!!B"!*!)"`#3$i!!!!%!N!m\r"Y6TLJ,8kBS!!"!!"!!%!!3!"!!%!!)!!!N)!#3!!!!)!!!%B!!%!N!8XY6TLJ,8\rkBS!BE!!!#!8!N!8I!*!D&@UL!*!I!3#3"84[Bh9YC@jdBA4TEfiJ,5"cG'&bG#"\rSCA*P,QKdE@`I4'pMG@ePER4KG'P[EL!Y)(0dBA*d)'KPFQ8ZD(4YE%C@3e3#%)!\r!N!3))!!J!3#3#!F!N"!&!!&"G'e`8(PdD#%!!X)!d3!!YV)G5VF,`qX!!!'S!!!\r$"!!!&mB!!'ZSHmqQD!!!!(3!"bd4!!%!!2rrrri!N!JF-!!!!!)!N!3B(`#3%)!\r!N!N"Li)!N"m'!*!&8(PdD'pZ5@jdCA*`FQ9dCA*$E'&cFfPM4PC$9!)3J!#3"!J\rJ!#!"`!#3"`F!N"!&!!&"G'e`8(PdD#%!!X3!(3!!YSIAClF,`ri!!!'Q!!!$"!!\r!&mi!!'[!(-Rf4J!!!(3!"bd3!!%!!2rrrri!N!JF,`!!!!)!N!3A(`#3%#!!N!N\r"Lk!!N"m(!*!%!9"jG'K[ENPZG'9bF(*PG'9b3f&bBQpZ4PC$9!)3J!#3"!JJ!#!\r"!*!)"`#3%!8!!8&38%a3HA3b)3!"k!$r!!#h#k`GY`ZX(`!!!DS!!!-%!!!Db!!\r!41G26@eE!!!!G!!(*)8!!3!!rrrrrJ#3#"`Z!!!!!J#3""BI!*!3J!#3#3',JJ#\r3(`B!N!9$EfjQD@GeFQ93HA4SEfj$E'&cFfPM4PC$9!!!J!#3"!J)!!!"!*!)"`#\r3$i!!!!%!N!m"YX-lrVE$1ri!"!!"!!%!!3!"!!%!!)!!!!)!N!8#!!!"'`!"!*!\r&,,E$1rkf`c[q($-!!!3*!*!%$aJ!N"#!!*!,JJ#3(`%!N!9MEfjQD@GeFQ9cBh*\rTF(46CA3JBfpZCQPRGA*P)(4[)%0XBA0cD@-@3fpZCQPRGA*P8(PdD'pZ3faKFh0\rTBdC@3e3#%)!!N!3))!!J!F!!N!F(!*!3"3!"39"36&"jG$)K!!(T!)8!!,F,V"b\rh#k`G!!!"TJ!!!`3!!"V3!!"&!2d3kJm!!!"d!!FNK!!"!!$rrrrq!*!)(#d!!!!\r#!*!%&4J!N"!J!*!*!BZJ!*!I"`#3"!&$EfjQD@GeFQ93HA4SEfj$BA*LEfj'9N0\r8!!#!!*!%#!J!!!(!!*!("`#3$i!!!!%!N!m"YX-mAVE$2&i!"!!"!!%!!3!"!!%\r!!)!!!!)!N!8#!!!"'`!"!*!&,,E$2&kf`caH($3!!!3*!*!%$aF!N"!J!*!,S!#\r3(`%!N!3"BfpZCQPRGA*PFf0bDA"d8f9d)%0[EQCTCh9bC5"dEb"$BA*LEfi93fp\rZCQPRGA*P8(PdD'pZ3f&bBQpZ4PC$9!!!J!#3"!J)!!!"!*!)"`#3$i!!!!%!N!m\r"YX-p'lE$24X!"!!!!!%!!3!"!!%!!)!!!!)!N!8#!!!"'`!"!*!&,,E$24Zf`cd\rE($B!!!3+!*!%$aB!N"#!!*!,JJ#3(`%!N!9MEfjQD@GeFQ9cBh*TF(48CA0d)%0\r[EQCTCh9bC5"$E'&cFfPM&N0[EQCTCh9bC9"jG'K[EN0XBA0cD@0'9N08!!#!!*!\r%#!J!!!(!!*!("`#3$i!!!!%!N!m"YX-p4EE$288!"!!!!!%!!3!"!!%!!)!!!!)\r!N!8#!!!"'`!"!*!&,,E$28@f`ce&($F!!!3+!*!%$a8!N"!J!*!,S!#3(`%!N!3\r"BfpZCQPRGA*PFf0bDA"d9'9cG#"$EfjQD@GeFQ8J3f&bBQpZ&80[EQCTCh9bC9"\rjG'K[EN0KFQ*[ENC@3e3!!)!!N!3)#!!!!8!!N!F(!*!2J!!!!3!!!!)!N!RZ!!'\rfk2`lYZMm1`!%!!%!!3!"!!%!!3!!J!!!!J#3"3)!!!%E!!%!N!8XYZMm1lESr$X\rFU`!!"!B!N!8G!*!3)!#3#k!!N"m"!*!&6@9cFf&RC5!LFh9LE'&eEQ0S)'CKD@`\rJGf&bEL*25e4SC5"TER0dB@aXCA)JDA-JB@*[GA3JG'mJFR9Z)%0[EQCTCh9bC9"\rjG'K[EN0KFQ*[EL"dEb"QD@jTFfJJD@jcG'&XE'&dD@pZ,L"2EL"0B@028eJJG'K\rTFb"hD@aX)("bEf*KBQaj)'CKD@`X)'&ZC#"jEh8JFfK[G@aN)(*eEL"$EfjQD@G\reFQ93HA4SEfj$BA*LEfiJE@&ZG@&XE(NJB@CdCA)JD@jcG'&XE'&dD@pZ)'Pc)'0\r[EA"XCA4P)'&ZC#"LC@C[FQ8JH@pe)(4bH5"KERPdD'PZCb"PE(0P)(GTG'JJ)&"\rjG'K[ELj'9N08!!#!!"`f!!J)!!!"!*!)"`#3$i!!!!%!N!m"YX(`!,E"m!!!"!!\r"!!%!!3!"!!%!!)!!!N)!N!8#!!!"'`!"!*!&,,E"m!#f`I!!($8!!!30!*!&(!#\r3%)!!N!NF,S)!N"m"#!#3"&0eBLeXBA9ZBfJJ3fpZCQPRGA*P)%0XBA0cD@0!!*!\r'!8C@3e3!!)!!($F!#!J!!!(!!*!("`#3$i!!!!%!N!m"YX(`!,E"m!!!"!!"!!%\r!!3!"!!%!!)!!!N)!N!8#!!!"'`!"!*!&,,E"m!#f`I!!($J!!!30!*!&'`#3%#!\r!N!NF,D!!N"m"#!!!!!&6G@)YE'&eEQ0S)%0[EQCTCh9bC5"$BA*LEfj!!*!'!8C\r@3e3!!)!!N!3)#!!!!5!!N!F(!*!2J!!!!3!!!!)!N!QM!!'fcE2YYXfcl3!%!!%\r!!3!"!!%!!3!!J!!!!J#3"3)!!!%E!!%!N!8XYXfclEE0XqdFF`!!"!B!N!8D!*!\rFSJ#3(`%!N!90CA0cB@GP)#*ABA*Z)'&LEh9d)'4PE'&j)Np,3@CdCA)JG'KP)'P\rZFh4KE'aKG'P[EL"TFb"MEfe`E'9dC5"dD'8JCQPZC'9b)(GTE'`JBQ8JGQ9bH5"\rLGA0j)'C[FL"eF#"dEb"K)'CPGb"YD@jeG'9c)(9`C'&dD@jR)'PdFb"NBA4KBQ&\rcCA-JGfPdD#"dD'8JG'K[GA0KEQ4c)'pQ)'CTE'9c)(P[G5"SBACP)'TeFh3JD@j\rcG'&XE'9N,P""3dX!$Ja&BA0j)%PZFh4KE'`!"6)Z-@)b!!!"304SL!!!!4J!N*8\r@8(PdD'pZ)'C[FL"$E'&cFfPM)&"33`#3"IkS[)!-!"BB!*!-J!#3"e+!!*"H8S!\r!N"mI6@PZD@eKE#"TER0dB@aX)'C[FL"$E'&cFfPM)&"33cj8D'Pc)'PZFh4KE'a\rc)&"jG'K[EL"QEh)J8'phCA*0B@0c)(*eEQjTEQFJ6@&M6e-J15"[FL"PBA*XD@9\rb,J-b,M%!!!#m$-dJ"J!('!#3#`'!!*#)'&4V)#XJ8%P-)'C[FL"$E'&cFfPM)&"\r33hj8D'Pc)'PZFh4KE'ac)&4VD@jdCA)J,#"IG'YTER4PFL"KEQ3JG'KP)&"jG'K\r[EL"*E@&RD@jR)%aTBR*KFRNJ+&"*6#NJCQpb)&"[Gf9b6@&MFbiJ$94V)#BJ9'0\rX)(CPFR0TEfiJ1#ic1b"358`JGQ9bFfP[EL!a,M%Z-5i'9'XJ1#ic!!!!,Q[,)!%\r!!KJ!N!X"`!#3L!p1G@ePFQPM)'C[FL"38%-m9'KTFb"TER0dB@aXFb"dD'8J6R9\rYCA*TBf&X)&"jG'K[EL"PH(4PER0TEfjc)'C[FL"3EhGPFNeKBh-Z#$)`,M!Z-')\rb!!!!$bSl)!-!""J!N!X"J!#3L!Y*E@FJCQpb)&"33c"8D'Pc)'PZFh4KE'ac)(4\rSC5$5D@eRdb"`B@0VB@GP)'C[FL"$E'&cFfPM)&"33bi$-5ic!!!!#V9&J!J!&4J\r!N!X"J!#3L!1RUkN!N!L!"3!'#!#3P4K3HA4SEfiJCQpb)%0KFQ*[ELp0B@028eJ\r!!c)Z-3!!!1"3()!0!"FB!*!'B!#3"5!!N!FT3!#3ALP!!*!I'NeTEQPYB@`JD@j\rcG'&XE#"QEh)J3f&bBQpZ3NPZFh4KE'`J6@&M8(PdD'pZ)'C[FL"0B@028b!j)'p\rb)&JX)'pb)$JJGfPdD#"$BA*LEfj-D@)JD@jcG'&XE'9N,J-b,M%!!!#l%YU!!J!\r5'!#3"Q!!N!3")!#3L!j358`JCQpb)%0KFQ*[ENp8D'Pc)'PZFh4KE'ac)(4SC5"\r3HA4SEfiJ5@eKCfPZCb"-D@*bBA*j)#K358`T)'C[FL"$BA*LEfiZ)!dJ8%P-)(C\rPFR0TEfiJ-5ia,M%Z#9"*6#!a,M%Z-3!!!![Gai!%!"-B!*!'B!#3"!%J!*#)%Nj\reE@9bD@-JCQpb)%0KFQ*[EMP8D'Pc)'PZFh4KE'ac)(4SC5"1G@ePFQPMB@`J8(P\rdD'pZ)'9iG'9ZFfP[ER-JCQpb)%0KFQ*[ELi)-M!Z-#i`BM)!!!!2+Uq!"`!8'!#\r3"Q!!N!3")!#3L!jTE@FJCQpb)%0KFQ*[ELY8D'Pc)'PZFh4KE'ac)(4SC5$5D@e\rRdb"`B@0VB@GP)'C[FL"$BA*LEfiZ!c%Z-`!!!!Ueb5!*!!SB!*!'B!#3"!%J!*#\r)!kHVU3#3#)!1!"!)!*#9$N4PGQ9XEh"PFR-JDfPd2P4SDA-JD@jcG'&XE(-JG'K\rP)'4PGQ9XEh"PFR-JDfPd)'jPC@4PC#"dEb"hFQPdC5"$,@9iG'9ZFfP[ER-Z!c)\rZ-3!!!!NBK"!2!"%B!*#93N*bC!!"!!i!!3!!!!%!!`#3%aB!!`#3%`F!!`#3%`)\r!!`#3%`3!!`#3%a8!!`#3%`B!!`#3%aF!!`#3%a)!!`#3%a-!!`#3%a3!!`#3%`S\r!!`#3%a!!!`#3%a%!!`#3%`%!!`#3%N024%8!!%*%59)!!`YTEQ0XG@4P)("`B`#\r3&!%!$fPZBfaeC'8J9'YTER4PFJ#3%!%!$QPZBfaeC'8JBf&bBQpZ!*!4!3"38Np\r+!(F"lJ%`!-J!B!!!!Ui!!#'b!!!4+!!!!%J!!!")!!!!5!!!!%J!!!")!!!!5%,\rf"58SB%*%59)!!d*68N-!!!!krj!%!!!(8fpeFQ0PFf4H!!!!!JE*Y1"&EQ4%!!!\r!$[q3"!!!!3%!N!T#8h*M!!!!1J!!!!)!!3a6Eh9bBf8J8'&dD(-U1Ii'q3'B!!%\r!N"C39Q0d!!!!*J!!!BX!!J!!!!jLD@jKFRNJ4'PcG(*TBR9dD@pZ1P"@Bh3!!!!\rV!!!"M!!#!!!!%f*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcT39Q0d!!!!-`!!!Bd\r!!J!!!!TLD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkBfaKFh0PFcT39Q0d!!!!0`!\r!!Bi!!J!!!!9LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkBfpYF'&bDA0[ER-k8&C\rMG!!!!$)!!!*i!!)!!!!(BQPZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1Q0eFR0PFcT\r39Q0d!!!!,`!!!C!!!!)!!!!'BQPZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1Q4ZFcT\r39Q0d!!!!-`!!!P)!!J!!!!&LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkD@e`GA4\rTE$T39Q0d!!!!-`!!!C3!!J!!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkE@3\reG'9cG$T39Q0d!!!!0`!!!C8!!J!!!!KLD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@m\rkE@9dB@0XBA0cCA-k8&CMG!!!!$)!!!'@!!)!!!!)BQPZBA*j)%4TFh4bD@*eG'P\r[EMT%C@e[1R"KFR0PFMT39Q0d!!!!-3!!!CF!!J!!!"4LD@jKFRNJ4'PcG(*TBR9\rdD@pZ1N4PE@mkF'4TFh3k8&CMG!!!!#m!!!'C!!)!!!!*BQPZBA*j)%4TFh4bD@*\reG'P[EMT%C@e[1R*`BcT39Q0d!!!!-`!!!CS!!J!!!"GLD@jKFRNJ4'PcG(*TBR9\rdD@pZ1N4PE@mkFf0bDA"dFcT39Q0d!!!!,`!!!CX!!J!!!!KLD@jKFRNJ4'PcG(*\rTBR9dD@pZ1N4PE@mkFfGT1P"@Bh3!!!!b!!!"R!!#!!!!%'*TEQ&bH5"%DA0dFQP\rLGA4TEfik4'9YEcTcCfNkB@`k8&CMG!!!!$8!!!'G!!)!!!!#BQPZBA*j)%4TFh4\rbD@*eG'P[EMT%C@e[1R0RD6TKG@4TEcT39Q0d!!!!-J!!!Cm!!J!!!!GLD@jKFRN\rJ4'PcG(*TBR9dD@pZ1N4PE@mkFfGT1Q0N1P"@Bh3!!!!c!!!"S!!#!!!!"Q*TEQ&\rbH5"%DA0dFQPLGA4TEfik4'9YEcTcCfNkCQa`1P"@Bh3!!!!b!!!"S3!#!!!!#Q*\rTEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTcCfNkCf`k8&CMG!!!!$)!!!'M!!)!!!!\r&BQPZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1R0RD6TcGMT39Q0d!!!!03!!!D3!!J!\r!!#9LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkFfGT1RCTC'9[1P"@Bh3!!!!c!!!\r"T3!#!!!!%'*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTcEf0VCA4c1P"@Bh3!!!!\rc!!!"U!!#!!!!#@*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTdD(*PB@4c1P"@Bh3\r!!!![!!!#U`!#!!!!"Q*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTdDAJk8&CMG!!\r!!$F!!!+Y!!)!!!!@BQPZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1R4TH$TLDA4YBA"\rc1P"@Bh3!!!!h!!!#V!!#!!!!#f*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTdDAJ\rkFf&YF'aPFcT39Q0d!!!!-`!!!DN!!J!!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4\rPE@mkG'YTER4PFMT39Q0d!!!!13!!!DS!!J!!!"PLD@jKFRNJ4'PcG(*TBR9dD@p\rZ1N4PE@mkG'YTER4PFMTRG@PNEcT39Q0d!!!!1!!!!DX!!J!!!#0LD@jKFRNJ4'P\rcG(*TBR9dD@pZ1N4PE@mkG'YTER4PFMTYBA4d1P"@Bh3!!!![!!!#G!!#!!!!!f*\rTEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTiE@`k8&CMG!!!!$!!!!'Y!!)!!!!#BQP\rZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1RTXD@)k8&CMG!!!!$%!!!'Z!!)!!!!#BQP\rZBA*j)%4TFh4bD@*eG'P[EMT&H(4PER0TEfjc1P"@Bh3!!!!j!!!"V`!#!!!!#Q*\rTEQ&bH5"%DA0dFQPLGA4TEfik4AKdC@jcD@pZFcT*E@&RD@jR1P"@Bh3!!!"!!!!\r"X!!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik4AKdC@jcD@pZFcT*E@&RD@jR1NP\rYB@GPFcT39Q0d!!!!23!!!E)!!J!!!$jLD@jKFRNJ4'PcG(*TBR9dD@pZ1N9iG'9\rZFfP[ER-k5@eKCfPZCcT358`k8&CMG!!!!$i!!!'c!!)!!!!%BQPZBA*j)%4TFh4\rbD@*eG'P[EMT&H(4PER0TEfjc1NPYB@GTEQFk8f&ZC6T39Q0d!!!!33!!!E3!!J!\r!!!pLD@jKFRNJ4'PcG(*TBR9dD@pZ1N9iG'9ZFfP[ER-k5@eKCfPZCcT6Bh*TF(4\rc1P"@Bh3!!!!e!!!"YJ!#!!!!"'*TEQ&bH5"%DA0dFQPLGA4TEfik4AKdC@jcD@p\rZFcTTE@Fk8&CMG!!!!$N!!!'h!!)!!!!)BQPZBA*j)%4TFh4bD@*eG'P[EMT&H(4\rPER0TEfjc1QPYCcT-D@)k8&CMG!!!!$N!!!'i!!)!!!!@BQPZBA*j)%4TFh4bD@*\reG'P[EMT&H(4PER0TEfjc1QPYCcT0B@-k8&CMG!!!!$S!!!'j!!)!!!!*BQPZBA*\rj)%4TFh4bD@*eG'P[EMT&H(4PER0TEfjc1QPYCcTdCA0d1P"@Bh3!!!!U!!!"[`!\r#!!!!Y'*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1P"@Bh3!!!!a!!!#4!!#!!!!"Q*\rTEQ&bH5"%DA0dFQPLGA4TEfik6'PL1Q0eFR0PFcT39Q0d!!!!0!!!!F!!!J!!!"P\rLD@jKFRNJ4'PcG(*TBR9dD@pZ1NaTBMTNDA0dGA4TE(-k8&CMG!!!!$`!!!("!!)\r!!!!6BQPZBA*j)%4TFh4bD@*eG'P[EMT-D@)kC'PcG(9dD@ac1Q0[E@eKEQ3k8&C\rMG!!!!$3!!!($!!)!!!"#BQPZBA*j)%4TFh4bD@*eG'P[EMT-D@)kC@jMEf4TEQG\rc1P"@Bh3!!!!b!!!"a!!#!!!!&'*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1QaTBLe\r[E'3k8&CMG!!!!$%!!!('!!)!!!!4BQPZBA*j)%4TFh4bD@*eG'P[EMT-D@)kE'P\rL,A4V1P"@Bh3!!!!e!!!#D!!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1R"\rXBA3YBQ9[Fc8k8&CMG!!!!$J!!!*$!!)!!!!$BQPZBA*j)%4TFh4bD@*eG'P[EMT\r-D@)kF'aKG#eQFQ9PBR0N0$T39Q0d!!!!1!!!!N)!!J!!!!0LD@jKFRNJ4'PcG(*\rTBR9dD@pZ1NaTBMT`E'&d,@CbC@9LFf3e1P"@Bh3!!!!h!!!"c!!#!!!!!@*TEQ&\rbH5"%DA0dFQPLGA4TEfik6'PL1R"XBA3YCf9ZCA*TBcT39Q0d!!!!0J!!!UN!!J!\r!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1NaTBMT`E'&d,A*TFf0[FcT39Q0d!!!!1!!\r!!GB!!J!!!!GLD@jKFRNJ4'PcG(*TBR9dD@pZ1NaTBMTcDA4P,A"KBfYKCf9c1P"\r@Bh3!!!!m!!!#U!!#!!!!"'*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1R0TG'8YF'&\rMDf&RCA-k4NC81P"@Bh3!!!!l!!!#T`!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfi\rk6'PL1R0TG'8YF'&MDf&RCA-k68%k8&CMG!!!!%!!!!+Q!!)!!!!9BQPZBA*j)%4\rTFh4bD@*eG'P[EMT-D@)kFfPdC5e`B@0VB@GPFcT1G@ePFQPM1P"@Bh3!!!!m!!!\r#T3!#!!!!"'*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1R0TG'8YF'&MDf&RCA-k8Nj\r(1P"@Bh3!!!!q!!!#VJ!#!!!!"@*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1R0TG'8\rYF'&MDf&RCA-kDfPZC(-k8&CMG!!!!#m!!!(A!!)!!!#UBQPZBA*j)%4TFh4bD@*\reG'P[EMT-D@)kG'9cG$T39Q0d!!!!0J!!!GJ!!J!!!)PLD@jKFRNJ4'PcG(*TBR9\rdD@pZ1NaTBMTdCA0d1QpeG("eG$T39Q0d!!!!,J!!!Mm!!J!!!!4LD@jKFRNJ4'P\rcG(*TBR9dD@pZ1NaTBMTiE@`k8&CMG!!!!$)!!!*"!!)!!!!%BQPZBA*j)%4TFh4\rbD@*eG'P[EMT-D@)kH'eX1Q4[E6T39Q0d!!!!0J!!!N!!!J!!!!*LD@jKFRNJ4'P\rcG(*TBR9dD@pZ1NaTBMTiE@`kF'&bFf9bFcT39Q0d!!!!-J!!!Mi!!J!!!!CLD@j\rKFRNJ4'PcG(*TBR9dD@pZ1NaTBMTiE@`kFf&i1P"@Bh3!!!!U!!!"f3!#!!!!"f*\rTEQ&bH5"%DA0dFQPLGA4TEfik6@&M1P"@Bh3!!!!b!!!"fJ!#!!!!#Q*TEQ&bH5"\r%DA0dFQPLGA4TEfik6@&M1N0[ER4bD@)k8&CMG!!!!%)!!!(E!!)!!!!#BQPZBA*\rj)%4TFh4bD@*eG'P[EMT0B@-k3fpZG(*TBMT"480KF(4eFQ93BA*cCA)k8&CMG!!\r!!$S!!!+U!!)!!!!#BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k3fpZG(*TBMT#3P"\rj,QaY1P"@Bh3!!!!h!!!"h!!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N0\r[ER4bD@)k3N*3H6T39Q0d!!!!2`!!!PX!!J!!!!4LD@jKFRNJ4'PcG(*TBR9dD@p\rZ1NeKBcT$EfjdFQPL1NPYB@GP5'9XF'9bFcT39Q0d!!!!33!!!H3!!J!!!!9LD@j\rKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT$EfjdFQPL1P"jG'K[EN4PG'9MG'pb1P"@Bh3\r!!!!r!!!"j3!#!!!!#@*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N0[ER4bD@)k8(P\rdD'pZ8f0bDA"d1P"@Bh3!!!!l!!!"k!!#!!!!"'*TEQ&bH5"%DA0dFQPLGA4TEfi\rk6@&M1N0[ER4bD@)k8fKPFQa[BfXk8&CMG!!!!$d!!!*h!!)!!!!#BQPZBA*j)%4\rTFh4bD@*eG'P[EMT0B@-k3fpZG(*TBMT8B@*ME'9KEQ9b1P"@Bh3!!!!h!!!"i`!\r#!!!!!@*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N0[ER4bD@)kEh0KE6T39Q0d!!!\r!1`!!!QN!!J!!!!&LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT$EfjdFQPL1R0dFR"\rdD@eP1P"@Bh3!!!![!!!"k3!#!!!!(f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4\rPE@mk8&CMG!!!!$S!!!(a!!)!!!!(BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k4'9\rYEcT35808BR*[Gh0P1P"@Bh3!!!!h!!!#I!!#!!!!!@*TEQ&bH5"%DA0dFQPLGA4\rTEfik6@&M1N4PE@mk8'aeCdPZFcT39Q0d!!!!1`!!!M`!!J!!!!*LD@jKFRNJ4'P\rcG(*TBR9dD@pZ1NeKBcT%C@e[1Q&`F'aPFf0bDA"d1P"@Bh3!!!"&!!!#23!#!!!\r!"'*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4PE@mkBA"`E'9cBh*TF(3k4'PcDep\r$Eh"j1P"@Bh3!!!!h!!!"kJ!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4\rPE@mkBf&XE'4XE$T39Q0d!!!!-`!!!HX!!J!!!!4LD@jKFRNJ4'PcG(*TBR9dD@p\rZ1NeKBcT%C@e[1Q0RD6T39Q0d!!!!1!!!!H`!!J!!!!&LD@jKFRNJ4'PcG(*TBR9\rdD@pZ1NeKBcT%C@e[1Q9iB@e`E'8`1P"@Bh3!!!!i!!!"l3!#!!!!!f*TEQ&bH5"\r%DA0dFQPLGA4TEfik6@&M1N4PE@mkCAKKEA"XC6%k8&CMG!!!!$J!!!(Z!!)!!!!\r$BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k4'9YEcTPH'&YF'aP-MT39Q0d!!!!1J!\r!!Hm!!J!!!!CLD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT%C@e[1QKdE@`ZD@0[ER-\rk8&CMG!!!!$N!!!(`!!)!!!!#BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k4'9YEcT\rTE@GLFQphFf8k8&CMG!!!!$J!!!(b!!)!!!!"BQPZBA*j)%4TFh4bD@*eG'P[EMT\r0B@-k4'9YEcT`FQPZG'PZCcT39Q0d!!!!13!!!I-!!J!!!!*LD@jKFRNJ4'PcG(*\rTBR9dD@pZ1NeKBcT%C@e[1R&eD@0VG'PYC6T39Q0d!!!!13!!!I3!!J!!!!*LD@j\rKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT%C@e[1R*PFfpeFQ0PFcT39Q0d!!!!03!!!IB\r!!J!!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT%C@e[1R0[G@jN1P"@Bh3!!!!\rf!!!"p`!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4PE@mkFh"PC@0S1P"\r@Bh3!!!!i!!!"q!!#!!!!!@*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4PE@mkG'9\riG'9NDA3k8&CMG!!!!$8!!!(j!!)!!!!$BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-\rk4'9YEcThBA0dC6T39Q0d!!!!,J!!!IS!!J!!!"aLD@jKFRNJ4'PcG(*TBR9dD@p\rZ1NeKBcT-D@)k8&CMG!!!!$`!!!(l!!)!!!!4BQPZBA*j)%4TFh4bD@*eG'P[EMT\r0B@-k6'PL1QaTBLecBh*TF(4TEQFk8&CMG!!!!%%!!!)h!!)!!!!&BQPZBA*j)%4\rTFh4bD@*eG'P[EMT0B@-k6'PL1QaTBLecBh*TF(4`B@0VB@GPFcT39Q0d!!!!63!\r!!MX!!J!!!!9LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)kE'PL,A0MFQP`G("\rKBfYKCf9c1N0[C'9ABA*bD@pb1P"@Bh3!!!"+!!!#1J!#!!!!"Q*TEQ&bH5"%DA0\rdFQPLGA4TEfik6@&M1NaTBMTXD@)YFf0bDA"dF'&MDf&RCA-k4AK`E'pbCA)k8&C\rMG!!!!%J!!!)j!!)!!!!-BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k6'PL1QaTBLe\rcBh*TF(4`B@0VB@GPFcT'D@jNCA)k8&CMG!!!!%S!!!)i!!)!!!!)BQPZBA*j)%4\rTFh4bD@*eG'P[EMT0B@-k6'PL1QaTBLecBh*TF(4`B@0VB@GPFcT1CA4cBf&`C6T\r39Q0d!!!!5`!!!MB!!J!!!!TLD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)kE'P\rL,A0MFQP`G("KBfYKCf9c1P0dC&0eDA4PFcT39Q0d!!!!1J!!!I`!!J!!!"YLD@j\rKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)kE'PL,A4[EfaLEhJk8&CMG!!!!$S!!!*\r@!!)!!!!&BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k6'PL1QeVBhG`FQpUC@0d1P"\r@Bh3!!!"+!!!#GJ!#!!!!#'*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1NaTBMTYDf0\rhF(*[DQ9MG$TdC@e`E'&dC5eMBA*LEfik8&CMG!!!!%F!!!*e!!)!!!!)BQPZBA*\rj)%4TFh4bD@*eG'P[EMT0B@-k6'PL1QeVBhG`FQpUC@0d1R4PEA"XBA4P,A"`BcT\r39Q0d!!!!-`!!!Id!!J!!!"jLD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)kG'9\rcG$T39Q0d!!!!2!!!!PF!!J!!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)\rkG'9cG$TYDf0hF(*[DMT39Q0d!!!!3!!!!RX!!J!!!!&LD@jKFRNJ4'PcG(*TBR9\rdD@pZ1NeKBcT-D@)kG'9cG$TYDf0hF(*[DMTXD@)k8&CMG!!!!$)!!!(q!!)!!!!\rbBQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k8'aeCdPZFcT39Q0d!!!!-!!!!J!!!J!\r!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT8EfpXFcT39Q0d!!!!0!!!!J%!!J!\r!!!PLD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT8EfpXFcT$4dNk8&CMG!!!!$3!!!)\r#!!)!!!!HBQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k9'p[E(-k584&1P"@Bh3!!!!\rk!!!#!`!#!!!!#f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1P4[Efac1QeKBfCbC@9\rkC6T39Q0d!!!!3!!!!J3!!J!!!!&LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT8Efp\rXFcTYB@0QFQ9PHQ8kD'9XE'mk8&CMG!!!!$)!!!(r!!)!!!!MBQPZBA*j)%4TFh4\rbD@*eG'P[EMT0B@-kFf0bDA"dFcT39Q0d!!!!+`!!!JB!!J!!!"jLD@jKFRNJ4'P\rcG(*TBR9dD@pZ1NeTFf-k8&CMG!!!!#m!!!*X!!)!!!!&BQPZBA*j)%4TFh4bD@*\reG'P[EMT0DA0M1P*366T39Q0d!!!!0`!!!QX!!J!!!!*LD@jKFRNJ4'PcG(*TBR9\rdD@pZ1NeTFf-k8P"01P4VD@jdCA)k8&CMG!!!!#m!!!)(!!)!!!!$BQPZBA*j)%4\rTFh4bD@*eG'P[EMT5C@aZEh4PFcT39Q0d!!!!,!!!!JJ!!J!!!!aLD@jKFRNJ4'P\rcG(*TBR9dD@pZ1P4[Efac1P"@Bh3!!!!d!!!##3!#!!!!!Q*TEQ&bH5"%DA0dFQP\rLGA4TEfik9'p[E(-kBA9ND@p`H6T39Q0d!!!!03!!!M3!!J!!!!CLD@jKFRNJ4'P\rcG(*TBR9dD@pZ1P4[Efac1Q0[EA"TE'9b1P"@Bh3!!!!q!!!#03!#!!!!$'*TEQ&\rbH5"%DA0dFQPLGA4TEfik9'p[E(-kBfpYF'PXCA)kBfpYF'PXCA)k8&CMG!!!!$-\r!!!)+!!)!!!!&BQPZBA*j)%4TFh4bD@*eG'P[EMT8EfpXFcTQBA&hDASk8&CMG!!\r!!$%!!!)-!!)!!!!#BQPZBA*j)%4TFh4bD@*eG'P[EMT8EfpXFcTT-6KZ1P"@Bh3\r!!!!a!!!#$3!#!!!!3@*TEQ&bH5"%DA0dFQPLGA4TEfik9'p[E(-kD@4XC6T39Q0\rd!!!!0`!!!Ji!!J!!!!CLD@jKFRNJ4'PcG(*TBR9dD@pZ1P4[Efac1QPNE'8k5@0\r[ER-k8&CMG!!!!$-!!!)2!!)!!!!8BQPZBA*j)%4TFh4bD@*eG'P[EMT8EfpXFcT\r`H@jMD'8k8&CMG!!!!$8!!!)3!!)!!!!#BQPZBA*j)%4TFh4bD@*eG'P[EMT8Efp\rXFcT`H@jMD'8k@$T39Q0d!!!!0!!!!K%!!J!!!$"LD@jKFRNJ4'PcG(*TBR9dD@p\rZ1P4[Efac1R0MFQP`G(-k8&CMG!!!!$3!!!*R!!)!!!!"BQPZBA*j)%4TFh4bD@*\reG'P[EMT8EfpXFcTeEQPMEf4P1P"@Bh3!!!!j!!!#%J!#!!!!"'*TEQ&bH5"%DA0\rdFQPLGA4TEfik9'p[E(-kGQ9bFfP[EQ0SC@0V1P"@Bh3!!!!h!!!#%`!#!!!!"f*\rTEQ&bH5"%DA0dFQPLGA4TEfik9'p[E(-kGf9LBfKPBfYPFMT39Q0d!!!!-J!!!K3\r!!J!!!!*LD@jKFRNJ4'PcG(*TBR9dD@pZ1P4[Efac1RG[FQaN1P"@Bh3!!!!M!!!\r#'J!#!!!!!f4PGL"%DA0dFQPLGA4TEfik8&CMG!!!!#J!!!)E!!)!!!!"C'9f)%4\rTFh4bD@*eG'P[EMT%C@e[1P"@Bh3!!!!Z!!!#(!!#!!!!!f4PGL"%DA0dFQPLGA4\rTEfik4'9YEcTPE@*PC$T39Q0d!!!!,`!!!Kd!!J!!!!4NCABJ4'PcG(*TBR9dD@p\rZ1N4PE@mkCAKdC@jN1P"@Bh3!!!!Z!!!#(J!#!!!!!Q4PGL"%DA0dFQPLGA4TEfi\rk4'9YEcT`HA0fFMT39Q0d!!!!+`!!!Km!!J!!!$jNCABJ4'PcG(*TBR9dD@pZ1NP\rZBfaeC'8k8&CMG!!!!$-!!!*k!!)!!!!%C'9f)%4TFh4bD@*eG'P[EMT*EQ0XG@4\rP1NjeE@9bD@-k8&CMG!!!!#F!!!)J!!)!!!!$C'9f)%4TFh4bD@*eG'P[EMT0B@-\rk8&CMG!!!!#d!!!)K!!)!!!!#C'9f)%4TFh4bD@*eG'P[EMT0B@-k3R9TE'3k8&C\rMG!!!!#`!!!)S!!)!!!!#C'9f)%4TFh4bD@*eG'P[EMT0B@-k4'9YEcT39Q0d!!!\r!-J!!!LN!!J!!!!*NCABJ4'PcG(*TBR9dD@pZ1NeKBcT%C@e[1Q9YBQ9N1P"@Bh3\r!!!!f!!!#+J!#!!!!!f4PGL"%DA0dFQPLGA4TEfik6@&M1N4PE@mkD@jdCA*cE'P\r`1P"@Bh3!!!![!!!#+`!#!!!!"f4PGL"%DA0dFQPLGA4TEfik6@&M1NPZBfaeC'8\rk8&CMG!!!!#i!!!)X!!)!!!!0C'9f)%4TFh4bD@*eG'P[EMT0B@-kEAGPFQYc1P"\r@Bh3!!!!V!!!#,3!#!!!!!@4PGL"%DA0dFQPLGA4TEfik6@pNG@aPFcT39Q0d!!!\r!+3!!!Li!!J!!!!0NCABJ4'PcG(*TBR9dD@pZ1P4[Efac1P"@Bh3!!!!Z!!!#,`!\r#!!!!!Q4PGL"%DA0dFQPLGA4TEfik9'p[E(-kBQGPEMT39Q0d!!!!-`!!!M!!!J!\r!!!pNCABJ4'PcG(*TBR9dD@pZ1P4[Efac1Q*RC@ikBQGPEMT39Q0d!!!!-!!!!M%\r!!J!!!!jNCABJ4'PcG(*TBR9dD@pZ1P4[Efac1QCbC@9kC6T39Q0d!!!!-`!!!M)\r!!J!!!!KNCABJ4'PcG(*TBR9dD@pZ1P4[Efac1Qe[C(9XBA4[FMT39Q0d!!!!23!\r!!M-!!J!!!"CNCABJ4'PcG(*TBR9dD@pZ1P4[Efac1Qe[C(9XBA4[FMT8C@e`E'&\rdCA-k4@jN4!!!!!lrN!3!!%*%8e3!!!!k!!!!"!!!"e4KFQGPG(0N!!!k"XQBX!E\r*Q,$r`dKX"XQdh!Ed4&i"!3#3#N*%Fh3!!!"3!!!#R`!"#dCeE'`J9'&bCf9d,fJ\r(2@fJ"[T60J!1JBi!!!!$!*!-8&CMG!F"!*!+!3%6L!3!!!"#4(4N!!!&"!!!!U!\r!!J#3)Z!!N!G39Q0d%deKBe"jG'K[EM)aCR9XE#jSFAKaH!#3r`#3#e"@Bh3!N2m\r!N#039Q0d!*$r!!!!8&CMG!#3r`"ND@eRC'4cD`!"!!'h#mCIY`['A`!!!!)!!3#\r3"!C%DA0V)&i!N"`%!!!!!d!!$deKBe"jG'K[EM)aCR9XN!3!N"j#4("M!!!$(!!\r!!U%!!J#3r`#3r`#3r`#3%8*%Fh3!!!"3!!!#SJ!"%N&MG'PfC5"'G@aX)&4KFQG\rPG2T60J!1JBi!!!!$!*!-8&CMG!J"!*!+!3%6L!3!!!"#4(4N!!!&"!!!!U-!!J#\r3)Z!!N!G39Q0d&8eKBe"jG'K[EM)aB@0dDACP,QKaH(&i!*$r!*!*8&CMG!#3r`#\r3)e"@Bh3!N2m!!!"39Q0d!*$r!'4TE@GNC(0V!!%!!EF,aQbh#mCX!!!!!J!"!*!\r%"N4TFfXJAJ#3(!3!!!!$3!!46@&M8(PdD'pZ-M&KBh4TGQ9fC3#3(%*%F'-!!!-\rF!!!#T!!#!*$r!*$r!*$r!*!44@jN4!!!!!lrN!3!!%&53d`!!!!krj!%!!!03A*\rMD'PfC5"-D@jVFbKJ"58SB!@1&RB!-H-k"59[i!%"!*!+4@jN4!!!!!lrN!3!!&*\r%688!!!!k!!!!"`!!$9*PB@3J6@8J4QPXCA0[GA*MC5"3B3#3#`%!N!T&EQ4%!!!\r!$[q3"!!!6%P$43!!!$S!!!!)!!!56'PMC@jcC5""Ch*PC@ePER4c)&"K!*!,!3#\r3#N9ZC%3!!!!1rj!%!!"58e*$!!!!1J!!!!N!!!p5CA0[GA*MCA-J4QPXCA0ZG(-\rJ8'%!N!S"!3#3#N9ZC%3!!!!1rj!%!!"#3P*$!!!!1J!!!!S!!!p#D@aXBQpKFQ3\rJ4QPXCA0ZG(-J8'%!N!S"!3#3#N9ZC%3!!!!1rj!%!!"65%a#!!!!1J!!!RJ!!""\r6D'&bC@3J6'PLFQ&bD@9c`4Eq!#h0(JFp3Y!(1$53!!%"!*!+4@jN4!!!!!lrN!3\r!!%P14%i!!3C%DA0V)&i!!!!%!!!!!d!!$deKBe"jG'K[EM)aCR9XE%4Q58`!!!!\r""88VbJ8P+'!&MKSZ"BiAa[r$6qB&*@B`!$(M1J!!J!!!!3!"!!3!!3!"!!'e&1A\r9Y46PeBJ!!!%!!3#3$`%&!*!,J!#e&1A9Y46Pe8C-8%lrre*PFfpeFQ0P)'pQ)%&\rbBfKTGQ8qG'&XE'9b1NPZFh4KE'a'BA4"ERPhBANk5@jcG'&XE%CKG%&ZHAGKH5"\rBBfpN!*#q3d&-6!#3HB!!N!3"!3!!!!%)!#!'!58"b3%"!*!%%NPZFh4KE'aPFL"\r-EfFJ4QPXC3#3b3j*ER0dB@aXCA)J4'&dB3#3%`%!!3%!!0@#!!!"!!!#)E%!!L#\ra!!!Cb3!!+P&19[r`51FF"#JZ!!JU,J!-5(J!"#m%5'lrm#*Y%&"jG'K[EL!a,M8\rZ-LjfBh4TG'8J-bifFf9bFf9YBQ8#!&C*8c&@59-a)3!!E!!"!*!5Y"2SF`#'Qkd\r!!!N@rr"J)NKi!qK`R0#%,`")E[r`)QhM#L"C6T!!+Qlrl#!Zrr"5J0D!,`4Krj!\r%!%U!CaC+K'`+F!'kJ'm-8S0J#(!"ZS"Z!P1$)!0-h`!i6Pj1G!!)L@aPBA"IC'&\rjF`!!+P&19[r`,`d[,J!-)'i!##m35'lrm#*Yi`SJ@8k3!#TZrq`!!!&5!*!%J!J\r!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#\r3"$!!r-$rm2rirrMrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L$#)$)J#L\r!1)!iJ$M!1(!i($`(2J(q!(`!!$NX!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD\r3"-c-!!4%N!B!"5+3"J!2!*!(r`#3"[3Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%\r4%83L)[!!m4%4%83Lm!$a%C!%m[!!m4%4%4,cm!$a%4%4%[2`!2%4%4%5mr!!mb%\r4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!!!!!2mr2e8!#3"!rr93!!!!'\r+!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#\r3"4!!%!#3"!F!2m$r`2r!rr$rr2rmrrcrr2rmrrarrRrrIrm$rJ"m"`!i`1p![m#\r1m)1-Jq6rp2a8qP6i9(e@IPGre`2H!(`!!%!Y!!!!$3!!rj!'!!(-N!6rr`!#CT!\r%c-`!!`#3"&99!!6GN!B!"EZ3"J!'UT!'!!H)N!B!#(H3"J!*9C!'!!T%N!B!#b+\r3"J!-%C!'!!m!N!J-r`#3"Fc'9mN!!!$lTmrmE`!!!2ElV+Z2!!!!p%ElTlr2!!$\rd4%ElTfIr!24%42MlTR`!rj!&qh`!rb)[%4pDI!$r)r(a(hTm!2mLm4%IHR`!$b-\r[(apkI*!!$b)bm4pkI,N2rj!%HRbl!!!!q2Tkrl!!N!32rmX!!!!"3J#3")!)!*!\r&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!4\rrrRrq2r`rr"ri(rJ2m!r`"q!(i!2!!m!"J!'!!*!%IrjrrMrm2r`Iq"TB#"!--!3\rJ"#!#3!*!!B!"J!#3"3%MS`!!!!3!!2q3"J!"c*!%rrm!!QD3"-c-!!-cN!4QCJ!\r%-c-!!*QC!L+3"L!#4*!'-!!N4*!%3`!!*%53"%-!!!*%N!3`!!!#)%!8%c!!!!!\rK!3%$!*!%)K!3-`#3"!)"!6!!N!3#%"!`!*!&)4-!N!BK!`#3"J)`!*!'!M!!N"8\r"BJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)\r!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2riIrJ2r!(q$ri1I$!!c-#cm)c\riJcL!b*mS[lLlZ)1iacKq1!im!6i2rJjm!!"#J!!!!!J!!2q3"J!"c*!%rrm!!TQ\r3"2rr!!0QN!6-c!!%-j!%CQB!"GhG!*!&"N53"J!()T!'!!m!N!Ir!*!'pL,r!2m\r!!!$aCL,r42m!!2%4CL*%42!!m4%4CL*%m!$a%4%4CL,`!2%99984m[!!m99999,\rcm!$a99&98[2`!2%4%995mr!!mb%994,cm!!2me94%[2`!!!"99%5mrF!!!!"%b,\rcph!!!&9Imr2hF!!!99!2rhF!!!!"FJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%\r!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!BIJ$r!Im"ri(rJIq"ri$r`(rJ\r!r!"q!$i!(J!-!*!%(`!JJ%#3#L$J(l!!q!"m!$B!(!!)!*!%R$N!!!!+!!$rN!B\r!!Irrc-crr`!#c*!%rrm!!jQCc-crr`!%QC!%rrm!"CQC-j!%!!CQN!6-c!!(Zj!\r'!!L)N!B!#AH3"J!2!*!2$rrrN!!!N!6r-NEj!!!!$r-!-dm!!!!234%L6i!!!!m\ra%L*2J!!!$d)L)dq!!!!23c)dri!!!!$r4%rrq!!!!!rrrrIrJ!#3"IpIq!#3"3r\reri!!N!ArIr!!N!82ri!!N!Ei!*!-qJ#3")!%!*!&%!!3!*!*5!!!!%J!N!8#!!%\r!!J#3"p)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3$Rrqrj!)Iri!N"4rrS!"J!'`!B!\r"Iri!N!``a`!!!!-!!2q3"J!"`!$!!-!!!!*!!%!!3!!!!`#3'Mrrrrc9999Ae99\r99pj999I9999A2rrrr!#3&J&D!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!\r'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrK\rrq(rmIri#rJ"m-!$-`,-`M!L$#)$)JLMrq2aiqRMiH(eiIRarrJ,q!(`!!#9B!!!\r!"`!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!3!N!4993!&4*!'!!BLN!B!$`#\r3"rm!N!Ee)[m!r`!!!2&9)[mKr`!!m4&9)L)5m!$a%4&9)L,`!2%4%4&9)[!!m4%\r4mK(bm!$rN!Acm!$r-cm4(r2`!2mdmI%Imr!!rc2a%4rcm!!20$mI(r2`!!mc3r%\rImrB!$rq3"22fB!!#)[,cmrCJ!*!%$rpQ!!!!!@)!N!5!#!#3"4!!%!#3#8J!!!"\r)!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2r\rirrMrq2rirrMrq$riIrarrMrq!(``!-c!Xc#-#)-)J-L!+,ii`6M"Z1#i),K"[%%\rq2ri!I!!!++!!!!!)!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0f3"J!&UT!\r'!!C%N!B!"b+3"J!2!*!(r`#3"[BLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@B\rL)[!!m4%4%@BLm!$a%C!%m[!!mIrrmK(cm!$r!!"2)I2`!2m%4&mbmr!!rr"%!2,\rcm!!!m%4&m[2`!!m%4&mbmrF!$d99Ab(cph!!rrrcmr2hF!#3"!rrG`!!!!&U!*!\r%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!\r!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrMrq2rm"ri"rJ"m-!$-`,-`M!L$#)$\r)J#L!12riK(LhH)airr`(2J(q!(`!!#Hd!!!!#3!!rj!'!!(-N!6rr`!#QC!%rrm\r!!fD3"-c-!!6GN!B!"AH3"J!'9C!'!!G%N!B!##+3"J!2!*!(r`#3"[FLr`$r!!!\r!mAFLrb(r!!$a%AFL)K,`!2%4%AFL)[!!m4%4%AFLm!$a%C!%m[!!m4%4%4,cm!"\r9N!4@mr!!8!3'"%rcm!"3CJpQ6r2`!&4%rd42mr!!Erq3"22i!!!!$r-LmrL!!!!\r!$r2cq)!!N!32riJ!!!!"DJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%\r5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2riIrK\rrr(rqIri!I$!!c-#c-)`)J`L!b)!SrrM)10fib$K)1&@m5$jrrJ"m!!!TM`!!!!N\r!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%lT!'!!AGN!B!"VZ3"J!(4*!'!!J\rLN!B!$`#3"rm!N!Eh)[m!r`!!!2&h)[mKr`!!m4&h)L)5m!$a%4&h)L,`!2%4%4&\rh)[!!m4'3"2,`!2GhN!4cm!$h429%4(2`!2GIIfrfFr!!pdAe999cm!!(42!!!(2\r`!!GI$frfFrJ!"dAe494cq)!(Gj!%FrL!!*!%$rq)!!!!!QS!N!5!%!#3"4!!%!#\r3#8J!!!")!*!&#!!"!!J!N!B"NJ#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r\r`rrMrq2rirrMrq2rirrMrq(ri2r`rrK[q!(``!-c!Xc#-#)-)J-L!+)BiM$Lr1--\riCMJr2$mq'ri!I!!!)-!!!!!C!!$rN!B!![q3"*QC!!Vrrmc--c-!%2rrQCNc-`!\rArrpQCJ!!!#V-N!6rr`!lc-aQCJ!!!&5CN!6rr`"HQCPQCM-c!(pQN!6-c!#2CQB\r!N!@M-c0QCXc-!-i!!$-cQCN!eqlZ!*!&fEZl!*!&fiL)!*!&j!!!UUS!!!$P!!#\r)L!!!!1B!!(Gh!!!!j`!!998!!!$Z!*!%UUS!l`#3")L)!2AZN!B!r%53"J$p)T!\r'!2m!N!Mrr`#3$2rm9&6rr`!!rrm!N!Er+[cm9&6rre3Urrm!N!6r+LSUr2a8N!3\rU92m!!!$r+T!&r2a8N!6r!!!!rbU3"rcm9&6r!!!!rbU3#Ip8r`!!!2mUN!6NjbS\rU92prr`!!!2mU+LVNje3U+P6rIrm!!!$r+ZANjHAQjbT8rhrr!!!!rr`+!JS3ARm\rU92prr`#3"2ml#KFl1e3U92prr`#3"GRAepREMbT8rhrrr3#3"1kMlXkMlP48rhr\rrrId!N!6[c[A[rrprrhrrrId!N!Vrrrrpr3#3"!&#!*!%J!J!N!83!"!!N!P)!!!\r!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrM\rrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L$#)$)J#L!+)!SJ#L!+'!S'#`\r',J'Z!(`!!$aU!!!!"!!!rj!'!!T@!#bG"53!$B!!J!#!!!!13!"!!%!!!!m!N!I\rr!*!'rYhr!2m!!!$plYhrhIm!!2hGlYhGhI!!rGhGlYhGm!$phGhGlYh`!2hGN!6\rpm!$phC!%rI!!rGf3"2h`!2hGN!6pm!$phC!%rI!!$rhGhGhpm!!!$rhGhIhk!!!\r!$rhGrIUJ!!!!$rhpqU!!N!32rkS!!!!"BJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8\r%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2r\rirrMrq2riIrJrr"rq$[i!I$!!c-#c-)`)J`L!b)!SJ$L11*'ij,KNZ#5m%Ei1rJ"\rm!!!`*`!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%hC!'!!@lN!B!"N5\r3"J!()T!'!!m!N!Ir!*!'pL,r!2m!!!$aCL,r)Im!!2%4CL)L%[!!m4%4CL)Lm!$\ra%4%4CL,`!2%4N!6bm!$a%4%4%[2`!2%4rr%5mr!!m4p!6c,cm!$cp!m&m[2`!!r\r`$`$bmr!!!232"I,cp`!!$d"I-[2hF!!!rr$cmrG`!*!%$rph!!!!!9)!N!5!#!#\r3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!\r%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`(rJ(q!(``!-c!Xc#-#)-)J-L!+)!\riJ$L!1-!iF$JF2!Fq!Ii!I!!!1%i!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!\r%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%\r44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%4%[2`!2%4%4%5mr!!m4%4%4,cm!$c)4%\r4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!!!!!rcmr93!*!%$rp9!!!!!A)\r!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!\r&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq2ri2r`rrKrq(r``!-c!Xc#-#2-\r)L-Lm++)iVcLTZ+Lik,Jrr$"q(riIr!!!-[X!!!!+!!$rN!B!!Fb3"2rr!!,-N!B\r!!jQ3"2rr!!4QN!6-c!!&lT!'!!DUN!B!"e@3"J!)4*!'!!NLN!B!$`#3"rm!N!E\ri-rm!r`!!!2')-rmar`!!m4')-c-6m!$rrc')-c2`!2CQma')-r!!p[rr-4(cm!$\rfmL,c%I6`!2Ebrrmap2!!p[,eAr2dm!$fm[99mr6`!2rbp9Acp2!!!2q3"26j!!$\rrCQC[p2Q3!!!2GhGrp2Q3!!!2rj!%Q3!!!!&D!*!%J!J!N!83!"!!N!P)!!!!5!#\r3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2r\rirrMrq2rirrKrq(rmjri"rJ"m-!$-`,-`M!L$#)$)J#L$1)FiLcMI1(XiIlcRrJ(\rq!(`!!$3U!!!!"`!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!3c-`!!QCN!"85\r3"J!')T!'!!m!N!Ir!*!'p5,r!2m!!!$a95,r)Im!!2%495)L%[!!m4%495)Lm!$\ra%4%495,`!2%4N!6bm!$a%4&$%[2`!2%4&%-5mr!!m4&"3a,cm!$c*%4$%[2`!!p\r%-8-5mr!!!d0M3c,cpJ"%3!4%3r2fB!!!!!rcmrCJ!*!%$rpQ!!!!!@)!N!5!#!#\r3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!\r%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri2r`IrJlq!(``!-c!Xc#-#)-)J-L!+)!\riMML4Z15iC,JN["'q$[i!I!!!-#F!!!!)!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!\r%c-`!"0f3"J!&Zj!'!!C%N!B!"b+3"J!2!*!(r`#3"[BLr`$r!!!!m@BLrb(r!!$\ra%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%C!%m[!!m4%4%4,cm!$a%Ira%[2`!2%\rI3%mbmr!!mr32"I,cm!!2m!m!m[2`!!$d$`AbmrF!!!p!Ac,cph!!!2r`mr2hF!#\r3"!rrG`!!!!&U!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!\r&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrKrq$rm(ri2rJ"\rm-!$-`,-`M!L$L)$)MkL41+8id6M91&%i*6`42Jrq!(`!!$CZ!!!!#3!!rj!'!!(\r-N!6rr`!#c*!'!!1CN!6rr`!%CT!%c-`!"Gf3"J!'L*!'!!G%N!B!##+3"J!2!*!\r(r`#3"[Fcr`$r!!!!mAFcrc(r!!$a%AFc-a2`!2%4%AGc-r!!m4%4%AFcm!$a%Ir\rrmI2`!2%I95mMp2!!mI9AEb2dm!$rAb*[)r6`!2pI9fmMp2!!$bmLEb2dm!!!mPG\r[)r6i!!!2CQmMp2L!!!$rrrIdq)!!N!32rrJ!!!!"BJ#3")!)!*!&%!!3!*!*5!!\r!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2r\rirrMrq2rirrMrq2ri2rKrr(rq2ri!I$!!c-#c-)`)J`L!b)!S[MM"1-'ii,JJZ%'\rm36irrJ"m!!!Y&`!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%hC!'!!@\r)N!B!"N53"J!()T!'!!m!N!Ir!*!'pL,r!2m!!!$aCL,r)Im!!2%4CL)L%[!!m4%\r4CL)Lm!$a%4%4CL,`!2%4N!6bm!$a9994%[2`!29%4%85mr!!p84%44,cm!$e9%4\r%8[2`!!"84%45mr!!"84%44,cp`!&4%4&)[2hF!"999$cmrG`!*!%$rph!!!!!@)\r!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!\r&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq2rirr`(rJ(q!(``!-c!Xc#-#)-\r)J-L!+)!irrL%H,GiM(Mrr!Fq!Ii!I!!!+jS!!!!)!!$rN!B!!Fb3"2rr!!+CN!6\rrr`!$CT!%c-`!"0f3"J!&L*!'!!C%N!B!"b+3"J!2!*!(r`#3"[BLr`$r!!!!m@B\rLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%C!%m[!!m4%4%4,cm!"9N!A\rcm!"84%9%4I2`!&49499&mr!!9%494%Acm!"9N!Acp`!!!!rc)[2hF!!!!!rcmrG\r`!*!%$rph!!!!!@)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)\r!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm2rirr`&\rr!$iB!'CJ@CK'"%'%3'4"&(rmIMap2(`m2V`r2Mrr!Am!2J!!3eB!!!!)!!$rN!B\r!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0f3"J!&L*!'!!C%N!B!"b+3"J!2!*!($r!\r!N!82BLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%4&4%\rI,`!29C!%Acm!$e4%9%4I2`!29&9&4&mr!!p8484%Acm!!&53"&mr!!"8489%Acp\r`!&@3"&mrG`!!!!822cph!*!&rrG`!!!%*Q!+!!"*6&K$%jF!!%lk!!41G8j@rrT\r)ja!J*'i!#$emrrrrrR$r,8$rqJa5!!4QG&922bS!)#mU!!)I+J!'5'lrrNKZrrT\r1ZJ*m-"mf!%T$Cd*96cmU!#![2'CZC(-I2!!"5'lrrNKZrrT1ZJ*B-"mf!%T$Caj\r96cmU!#![2'9iG'j#*dKZrrj)E[rk6VS#0M!I0J!eE[rq!#!PE[rk!#)e3`!H60m\r%#%jH,Tp1GB4YB@PZ!!!!6PB!!#!m!!#SRkG',`JJ2!!!S+fM4V(IC`iJ,J!-SDd\rLEJ!))SKJ*N(k!$B`21T4)Li!$,+BC`C+Q'F5B2C$qJ!Jdp"1d5*Z!!JLJ%*!28!\r!%%jH)&p3Mdl3-$cU8Q$ZGQ9bF`!!!'"YB@0S!!!!C(0jFhB!!!#)F(*[B`!!!**\rQF(8J!!!!RR&N)#!!!!$SDf*N)!!!!4TKG'aV!!!"3QeYG5!!!!&NFQ&Y)!!!!BK\rXFQ&Y!!!"L!#3#(!"B))LH!+ZF!3-D3"e!!KR%JaT!RB!#'B%8N"J"K!i$,0FJ'!\r!rf"`!$!i!9TJ!2p@F!!31!%[8N"J!2p+$$J!"!%[CcJ)1!!%#b*R0#"2mS!!!2-\rR-"FZ5!a!(aKR&Ja!2aKR%!a!2cKR$Ja!(cKR#(!!B!j`!@!+F!*J"R!$B!*`!'!\r!r`!-H$rr!SjZ($!mU*qR4L3))$`!!+X$TdBJ2!!!!3#dL'B'B!T`!'!')$`!!!)\r!B!$qcK!i!Kj"qJ!@)NJ5''F!rY+b!'EfNFNJ#'!!rV)$%`X#!3B("!8)#3"`!%S\ri!T&V&K)i!IX#!3!2$!%!!@B))(J#h"!S!!GJ!2k%$$J!!J%[E4C`!"!i$,%-!!!\r"C``-!!!$E3463'!#F!"J!2jJ-$bSRkG'*!JJ2!!!U)qR4L!i!3LdL'F+@Bmr2!!\r@U)mJ(f!!rMT19[pd51FF!#JZ!")k,J!@3LlrH&92,caQEfaN5'lrG%kkrG!`(fB\r3)#lrG()"`)&R"Kem!!(rH"!ZrhKR)&922`8[""mZ!"![,J!-,bi!#(!!U#-`(ce\r!!"K1qJ$i$)4YB@0cCd)-K(4PEA"R1Jb%F(*PCQFb$)4PH(4ZCbS-K'0dFQaR)Jb\r%B@eZG@FD$)4cG(*dCa)-K("bER4R#R$128!!'%lk!+j`!#e!rii-4B!!CLa96ck\ri#PJ`(ce!rj4#3$e!rjK`!Le!rlC"l[pmF!LLB$J!CRBpE[q`rj*J"$e&rj*`"Le\r!rk""l[ri,8MrR%(Zrha`-+*J1!"`cVK!Ca"+4'C#)#lrqJ+!!!)!!'Bf3N!p32q\rBGJ!Y3rr@,82rV%(ZrhbL"cJ!CL)J,[r@Ca)JEJ!--+lrNL"Z!!JJV[r@B!Tie@!\r'5N4Q!RM9-!3p3!!B60m!1%jH)&p2l`!36Y!!!!&5!*!%J!J!N!83!"!!N!P)!!!\r!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIra\rrr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki\r$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+\r3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%\r83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!\r!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!"!*J#J!!58aB3a1-!!"1qJ!\r%6R919[rk51F3)#4Z!!JpI2rrrrj`rbe!rrS-8J!%CP"96cmU!#![+J!#(bS!"NK\rZrrj)E[rk6VS#@$!I0J"+3fFH98mr+J!J,caYB@0c3LG)E[rq5'lrqNkk!MB`(cB\r!0@lrrJ!J*@lrqJ!L08-!(NcI"!K1ALkI6R@%E@&TEJ!!!%j@!!!J2!!!U*qR4Lm\r))$`!!+#YSdDahfF1)#i!$+'Y)Qi!##+)B#C"qJ!f-$cU85)Z!!bbQ'F'5TKR%Q$\rf3rS!)0236Y%LEJ!))S"#3$e!!""1AL"I8)p1d$!mkP*JlRCPFR-!!!"JE@&MD!!\r!!'4cHA0f!!!!L("bEf-!!!#5CR"e)!!!!*jaC#!J!!!!k'YLC#!!!!%DBA4XD`!\r!!8*YEA8J!!!"C(*KE5!!!!')E(*KE3!!!BJ!N!K`!@##)RJ#VR!%$'N!G3!)Ca)\r-D3*f!!KQ"&*!B!B31!bcA)"J!2pJF!!`1!&DB!$r9R!!%$J",e*!B!$r5J`i!!3\r",fFi#$J!"!XLCc3J6r+!!!$c*c!A,NJ-3"mBCaB-3$mBCa!-3$miC`i-3"miC`K\r`!'!1F!&J#R!#B!C`!f!#F!"J!2m!$(Jrr`+1EK``2+LITdBN##!m!!#V!kG')$`\r!!!%!Y)KQ"Q!+F!"J"L!m!!!#!'!!rXi31!)H3IS!&L*)%KKR!2l5XJ"QpT(*)!K\rJ!2kb!a-,!J%'"`3&#!N!F!"+1!+4DaB51!(l!J%!$``"!!&Q##"i!Y`3+!!(B!$\rqK!`i!!)",fd@F!!31!ba$!!!!@F-$!!!!fd%8d"J!R!!B!$qB$!mU*qR4L3))$`\r!!+L2TdBJ1!%)Y)KR#PQ22c`!&UL2)"pJ!2ik6PErG%MR(!!S,J!51Li!&N)ZrhK\r96bmmCQpXC%KZrh41Z[h3-"pQ%#!Zrh4b!F#"C`BGI!!"rhJ3,[piCb"96cm&,`3\rI,J!3,bi!$#mZ!!K`!+JM-"mp3!!B6[S!q!b%E@&MFfG#$)4dC@e`CcS-K("bC@C\rR-Jb%CAKdEQFU$)4MG(*XCb)-K'&YER9R'Jb%Fh4bG'F5$)4`FQjdC`T`cMe!!"K\r1qJ#ZF!!Y32q1$%@!!'BX98mqZ!TB-"mp32q83N!p32qBF!)Y32qf3HlrI(!)SQ!\ri!'Cf2@lrX2q5B!3p4Iq5F!BY32qJ3Hlrq#e)rja"l[pmF$#LB$J!F-ki3'F35N4\rQ3L!ZrrS#J!!#!!"Q0N*!28$rQ(B!,82reLe$rka"l[pmSJFi!'BL)#lreQF5)'i\r!$$#Zrj)JEJ!))+lreQ!+H09J"NT%CJ*ie6!%28!!'%cI!$K1AL"I6qm!%%l3!!!\r"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)\r!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B\r%3B4!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ\r3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m\r4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3\r[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!\r!!!D%B!S!!%P-@%-6L3!!6[S!"%je6PErqNMR'#!NEJ!)1#S!)$9mrrm!)($r*8!\r!)Ja5!!4QEJbU!!!)!!!3E$Be4!!J,c`!!J!!,caKFh"Q,ca*6NP8,caKFf0b,ca\rPH(4Z,caPH(4Z,`T1ZJ"+0J"2l`!FB#T96cm%,bS!!KmU!!C)E[rq5'lrqR!!U#-\r`(cB!CJ`eE[rq!#!PE[rk!#)e3`!H60m%'%jH,Tp1GB4YB@PZ!!!!6PErh%MR'#!\rNEJ!)1#S!)$9mrrm!)($r*8!!)P922`3[,J!-(bS!"NKZrq*)E[rHF!#S)c!I0J"\rQ!!#b)#i!%,#Z!!aR(P922`3[,J!3(bS!"NKZrpa)E[rNF!#S)c!I0J"J$$eZrq,\rrh#eZrplrj%T$CRJpE[rFrrSYE[rNrr`pEJ!Jrr3pEJ!LrrBGDJ!'rrJYEJ!8rqJ\rYEJ!Brq`YEJ!Frr"96cmZrq)[,[rH3UFr2!!"5(S!8%KZrqK1ZJ*U-"mf!'BQ)#l\rrr,#Zrq4Q%(E90Acrr`!JF2mP3!!LB!`eE[rk!#!PE[rm!#)`!dcI""K1ANjeM%e\rj4QPZC%C[E'4PFJ!!!%j@rT4)ja``+#i!%#4Z!!LAbhB!H[mJ4#!S!#5`NQB!!6)\rJ4#!S!##`UJ!%CJ!"*%)RUCY96b"%2bJ!&L"%,bJ!C#"%,bJ!%Kmm!!'S'M!I1J!\rI2!!"UCY96kQ[-"mf!'B!!0i-UP088L-!#'Bd3LHTQeP2,ca69&)M2bS!$+JI)&m\rQ5"mm!!'TQb!,C`!!ZNKZrT3r+J!-2bS!$Nkk!qCJ0&P2,bS!#$mU!!bS(b"I*NK\r96kQ[-"mf!#!,Ca3J8a!35)"53%M!)&0$l[k8SLjJ"(E1B'T"l[k8,8MrTMeU!",\rrULeU!"6ra%*Zrl""l[q8F!QLB$B!CJieE[qU!")PE[r%!"4J1!a$riKR"Ja$rp9\rQ)%SU!""R'N(Zrj4`"U*J0J"Q$M9ZrkS!%L9Zrm3!&'!-0Acrr`!5F2mP3!!8)'i\r!$"#m!!%-4IrrC`3r"DQD60m-1%jH)&p2l`!-6Y#069P*9%95394&8&*23`!!6PB\r!!%MR'#!S,J!)*'i!$%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,Be3`!J*83!0%(U!!4\r`#D*J08!!X%TU!,"Q,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*!!""R%NSU!,*Q$#m\r+,bS!0%kkrjK36e*$5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZai!,"Q"%*U!,"6DJ#\rf60m%'%jH6R@95A4PFQ&dC84TFQ9MG'pbH8aPGQ9X!!"19[mm,`0+VJ!-C`!!MP9\r22bi!'LmZ!"B[,J!55'lr3%KZrce1ZJ(5-"mf!'CZ$#i!!ImpCQ"96bmZ!")r,J!\rD5'lr2Nkk!@J`(cB!CNiYEJ!-rd4"l[p%3HJ!F#e)reSpE[mqrej#,[qd3Qlrp%)\rZrrBpEJ!3rrK#E[rk,@i!#2rm5'lr4#mZrd"1Z[l#0Llrp&"2B!CfL'!#GXir3`$\rN*Kp1AL"I6qm!&%l3N!"*9%95394&4%P548086e*C!!!!6PEr!%MR%$!QEJ!1*'i\r!##!+CcieEJ!-!"BJ#fB+3US!%N*U!"aJ(L",3qlr!(!!%"053%M!SLj"l[m!*8J\r!%M9mrrm!(#"+SJFf!%+U!"*J!RE12d-"(NcI$!K1AL"I6qm!#Nl3NdG&9&C26&9\r048P14Np16dj"688!!%j@rq")ja!`*Qi!$#4Z!!JJ#fF%5K0Q&%)Zrq""l[rJ*8J\r!%M9mrrm!('!)*8X!%N*U!"`eEJ!8!"BPEJ!3!$!J5R!*SQ!f!%+U!")r3`"#60m\r-#%jH)&p2l`!16Y#3!%G&9%0"9%P14Np16dj"688!!!"19[q',`096bmZ!!ir,J!\r-5'lrKNkkr[``(cB!CJJJEJ!)-+lrR$p$!*!!*Kp1AL"I6qm!#Nl3N!"%494&8Ne\r*6N9@8N9'6P90!!!!6PErP%MR%$!QEJ!-*'i!#&922bi!'#mZ!"3[,J!35'lrP%k\rkrb!`(cB!CKS3,[qb!N!!%&E!4!!8J'F'*Ulra'!%*Ulrq$p$!**-h``)6PiJAdr\r[!"*1d)j(494%59*&3e428PP*4!!!!%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a#%5!\rICb)J3#"3-"Jb,J!)CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!!!!V\rT5Qpj)A"PCQC`Gh"M!!!!!EBXZ1X!N!d$!!)!N!6rN!3!N!B*&!!!#43!!!N8!!!\r"`!!%"!$rN!3!N!G%!!!!3!!!!!N!!!VJ!J%%!2q3"!#3$J%d!!!!J!3%"!#3#!%\r!!!!`rj!%!*!%rj!%!*!(!3!!!!X!!!!"!!!!L!!!!*!!!!!",!!!!!%!N"-,!*!\r)!J!!#J)!!"S#!!!U!J!!0`)!!%3#!!"2!J!!A!)!!'S#!!"c!J!!IJ)!!)m!!3#\r3"3-!N!4+#N)!4J%!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*$FQ9\rKG'96H@jM!%GPG$&5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"$E'p\rcC9*PFdCTE'8!3Qa[BfY0EhCP4'&dB3"5CA0&FR*[FJ"'D@jN4QpXC'9b!&"#4f9\rd3f&d5@jQEe0jEQ-!5%p`C@j5CA0'D@aP!*!9I!J#TT2Krrb3!!%!#*3Krl"mIaY\riU(m!)$J!rrq`(`!J1!$rrj!!(`!LU"m!!#`!!!4!JJ#)J"m!%#`!#!"!J!")X(m\r!)$Kr!!!mJ'9i2+"PH$c!BA-mi%P123"KFcNJ!!)j3!!!1)4dEMLPG'iiaQ0b11G\r*9$N)F'C)!!"9B!!!!%J!!$5!R`!#L,m!"MM"!$`ii3!i5!!(BB""!"4mB!Fe3))\r!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JI!J#TVl\rKrpb3!!%!#*3Krh!l3`!!1Z3!!$X&!!!lCJ!!1iF!!$ZS!!!lb3!!1qS!!+Xk!#!\ri!2rrX"S!)$J!rrq3!"S!)MKj!!!iP`!!L,S!"MM"!&`ii3"B5!!'dB""!"4mB!F\re3))!d(`BZ%""JJ!N1(N!!$LB!!#)ZJ!'1-%!9$MK!&")!!DPJ%%!&%J!!"5S!3"\rFX!%!9)!"!&L3!!%!8(aJ"c9!JJ#3!+J"!&5`!3"+J!%!8*!!!3"-Xm%!4,2K!%D\r)'J!'Q!%!5*0K!$L6J3!mNk%!3+KK!&b!J3"B1+!!!$M!!!'!iJ!X13%!1%J!!iP\rJ!!!!I'!(08##!$b!J3"-J!%!8(`%!!"!JJ!F1'$re6J!rrq`'J!J1!$rrj!!'J!\rL5!!!&+J"!%U`'J!JJ!%!6*!!'J!LJ!%!Q$JK!*!!I!J$TVVKrpa1J!!JI!J#TT2\rKrrb6`IriNk(rp*1"rr#3!!%!#*3KrN!lJ`!!1k3!!(br+hL!I!!NJ"m!!(`$!%"\r!JJ()J(`!))!I!!4m!`"!3))"Z$KJ!!")!!@YJ%%!&+Km!"D!R!"NJ,`!%MM!!!&\r)!!@YJ%%!&(aq'hJiB!!"5!!&KB""!"4)!!@YJ%%!&(aJ"c9!JJ&8J(m!#$`$V+`\rS!&)M3))!9$KJ!!")!!9CJ%%!&$aJ8e5SR`!-1'05)dJ!"Bf!33!8I(`EH$KJ!!&\r)!!8eJ%%!&#JF!!""JJ%81'%!T+LI!!bS[`!15!!&HB""!"4)!!"3J(m!#+LI!!a\r)!!90J%%!&(am'hK)!!8TJ%%!&#JF!!""JJ$3J(`!!$L"!+5![!!!L!8!!(`&"h3\riT3!"5!!&5B""!"4)!!!)5!!!U$J"!+53!!%!5UJI!"+`!3"1J"m!&*!!!3"S1!!\r!!,!"!&3iB3!i5!!&,B""!"4mB!Fe3))!'+J"!%k`(`!5J!%!D*!!(`!85!!!B(a\rJ"c3X!2q)3B)!%(aJ"c3X!2r93))!1)JI!"!S!!!!3B)!,$KK!$K)!!6jJ%%!&(a\rJ"c9!JJ!BU!%!6V!I!"+!!3"SN!!I!"4)!!!81!$rrl!I!")i!2rrN!!I!"3i!!!\r"Q"d!!(r!"c3X!2rr3B)!%(r$mhK)!!6&J%%!&)!"!FJi)3(!I!J$TS2Krrb$`Ir\riJk(rp)1"rr"1J!!JI!J#TT2Krrb6`IriNk(rp*!!!3!)P#(rX$ZM!!!lj!!!S"m\r!Y#J!!!""JJ!8S(m!YU!I!,4m!`"!3)!![$[!!!'JI`#f1!-!!E!I!,Dch`!JNlm\r!0$Kr!!4)!!39J%%!&,"r!,#S(`#`,!!!!%##!%!iI`!%1*m!XS#r!,L"R`!!5!!\r%6B""!"5)(`!L9!!'pd'#!"b)(`#b+!!!!%##!"#!I`!dIq6lH%[rreNlhJ!"U"m\r!X#`!!!"!JJ!3L"m!XLJ!!!""J[q)U"m!X#`!rp9"JJ!3U"m!X#`!l(K!JJ!-1!!\r!!,!I!,#JI`#f1!2rrl!I!,D!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!JI!J\r#TVpKrqb3!!%!#*3KrZ!lB`!!1i8!!$ZQ!!!la`!!1qJ!!#JH!!""JJ#N1(X!!$L\rm!!!i`3!m11%!1%J!!IPJ!!!!I'!(08##!)L)!3!i+!!!!8##!(!iI!!!1*X!!$L\rK!$T)!!'4B!!!!(aJ"c9!JJ"JNm%!3$J"!,#3!!%!9UJ"!$U`!3"D1!!!!*J"!,!\ri!!!!X!%!m$J!!!#B!3$bXk%!p$J!!!#`!3$fNq%!q)"K!$`iJ3"!5rrq1DKK!2"\r)!!!31'$rL%J!!!JiB2r1J!%"+$JK!5"m#!1QZf(rl%k!!#"m#!+QNq(rr*!!!3!\r)P#(q`(br+hJS(`!!3B)!B,#I!"BS!`!!3))!'$J!!!#3!"m!%MJ!!!#`(`!F5!!\r!+$L"!$L)S`!!1+8!!8J!!KQ!33!81!%!1*!!(`!51!$rrl!I!"arirYi5!!#AB"\r"!"3i!!!!N!!I!"*)!!!)1'$rcS!"!8Ji)3&!I!J$TS2Krra1J!!JI!J#TT2Krrb\r3!!%!#*3Krk"mhc0i+!8!!%'#!"#)"3!!+!!!!%##!#!i!!!!Q!%!1$J"!$L3!"m\r!%MJ!rrq`(`!F5!!!%*!![`!51!!!!,!I!"b`I`!@N!#I!$"rirYi5!!"MB""!"3\ri!!!!N!!I!"+!!3"S1#%!B(`)!kD$iIrm6S!!)(`)!UD6iIrmN!!"!!L8)Ip!I,m\rVH$LK!$K,rrlCI'!(08##!!bS!3"1X"m!!)!"!-Ji)3$!I!J$TS2Krra1J!!JI!J\r#TT2Krrb6`IriN!!"!!L8)Ip31mB!!$[R!!!i`3!i5rrr)AaJ"c9!JJ"!L!%!9P3\r%"[Bi!!!!I)3!8$!%rrpm!#%3Q"m!!)JI!!!S!!!!3B)!%)!"!'L3!"i!!%J!!!b\r!!3#FN!!H!!#!!3#i1#%!X(`)!kD$iIrmJm(rq%k!!##"JJ!JN!""!"5!$!!!J%`\r!"(`*!kC1J!3JJB)!%*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#L3!%%!&)!-!!#\r!6!!%I!N$TNk!"##"JJ!FN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`\r!!)"-!!4m#31Q6S!%))'#!!b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5\r!$!!!J%`!"(`*!kC1J!3JJB)!**!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!53!%%\r!&)!-!!#!6!!%I!N$TNk!"##"JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*!\r!33!8J!`!!)"-!!4m#31Q6S!%))!-!!#3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!d\r[)6J+)J)8"!!!!@)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)\r!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$riIr`p\rr"MiB!'CJ@CK'"%'%3'4'&%NF8paeI'Sm-A`*hKHI$hm'2J!!)ii!!!!)!!$rN!B\r!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0f3"J!&UT!'!!C%N!B!"b+3"J!2!*!($r!\r!N!82BLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%Im4%\r@,`!2%I"I%5mr!!mI"I2r,cm!$rpIA`rr2`!2mIA`"2mr!!$r"!p2rcm!!!,`Arm\r[2h!!$arcmLmrG`!!rc-[2cph!!!$-J$rrh!!!!EXB!S!!%P-@%-6LJ!!6[S!"%j\re6PErqNMR'#!NEJ!)1#S!)$9mrrm!)($r*8!!)Ja5!!4Q!!$@$+S!!!J!!""XDM9\r%!#![2!!#!!![2'&cF'B[2%P1593[2'&cBh)[2'9iG'i[2'9iG'i[#Nkk!,!f!%r\r[!"aQ!!#3!#mm!!-!!#mmBA0`CLmm58j*9#mmBA0MFLmmCAKdELmmCAKdELm+6VS\r!I$B!6qm!('"F98mr"#mma(0MFKmU!!C)E[rq5'lrqR!!U#-`(cB!CM`eE[rq!#!\rPE[rk!#)[2!!%!!![2'&cF'B[2%P1593[2'&cBh)[2-4cBh)[2'9iG'i[#Nkk!"i\rf!%r[!"`e3`!H60m%'%jH,Tp1GB4YB@PZ!!!!6PErh%MR'#!NEJ!)1#S!)$9mrrm\r!)($r*8!!)P922`3[,J!-(bS!"NKZrq*)E[rHF!#S)c!I0J"Q!!#b)#i!%,#Z!!a\rR(P922`3[,J!3(bS!"NKZrpa)E[rNF!#S)c!I0J"J$$eZrq,rh#eZrplrj%T$CRJ\rpE[rFrrSYE[rNrr`pEJ!Jrr3pEJ!LrrBGDJ!'rrJYEJ!8rqJYEJ!Brq`YEJ!Frr"\r96cmZrq)[,[rH3UFr2!!"5(S!8%KZrqK1ZJ*U-"mf!'BQ)#lrr,#Zrq4Q%(E90Ac\rrr`!JF2mP3!!LB!`eE[rk!#!PE[rm!#)`!dcI""K1ANjeM%ej4QPZC%C[E'4PFJ!\r!!%j@rT4)ja``+#i!%#4Z!!LAbhB!H[mJ4#!S!#5`NQB!!6)J4#!S!##`UJ!%CJ!\r"*%)RUCY96b"%2bJ!&L"%,bJ!C#"%,bJ!%Kmm!!'S'M!I1J!I2!!"UCY96kQ[-"m\rf!'B!!0i-UP088L-!#'Bd3LHTQeP2,ca69&)M2bS!$+JI)&mQ5"mm!!'TQb!,C`!\r!ZNKZrT3r+J!-2bS!$Nkk!qCJ0&P2,bS!#$mU!!bS(b"I*NK96kQ[-"mf!#!,Ca3\rJ8a!35)"53%M!)&0$l[k8SLjJ"(E1B'T"l[k8,8MrTMeU!",rULeU!"6ra%*Zrl"\r"l[q8F!QLB$B!CJieE[qU!")PE[r%!"4J1!a$riKR"Ja$rp9Q)%SU!""R'N(Zrj4\r`"U*J0J"Q$M9ZrkS!%L9Zrm3!&'!-0Acrr`!5F2mP3!!8)'i!$"#m!!%-4IrrC`3\rr"DQD60m-1%jH)&p2l`!-6Y#069P*9%95394&8&*23`!!6PB!!%MR'#!S,J!)*'i\r!$%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,Be3`!J*83!0%(U!!4`#D*J08!!X%TU!,"\rQ,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*!!""R%NSU!,*Q$#m+,bS!0%kkrjK36e*\r$5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZai!,"Q"%*U!,"6DJ#f60m%'%jH6R@95A4\rPFQ&dC84TFQ9MG'pbH8aPGQ9X!!"19[mm,`0+VJ!-C`!!MP922bi!'LmZ!"B[,J!\r55'lr3%KZrce1ZJ(5-"mf!'CZ$#i!!ImpCQ"96bmZ!")r,J!D5'lr2Nkk!@J`(cB\r!CNiYEJ!-rd4"l[p%3HJ!F#e)reSpE[mqrej#,[qd3Qlrp%)ZrrBpEJ!3rrK#E[r\rk,@i!#2rm5'lr4#mZrd"1Z[l#0Llrp&"2B!CfL'!#GXir3`$N*Kp1AL"I6qm!&%l\r3N!"*9%95394&4%P548086e*C!!!!6PEr!%MR%$!QEJ!1*'i!##!+CcieEJ!-!"B\rJ#fB+3US!%N*U!"aJ(L",3qlr!(!!%"053%M!SLj"l[m!*8J!%M9mrrm!(#"+SJF\rf!%+U!"*J!RE12d-"(NcI$!K1AL"I6qm!#Nl3NdG&9&C26&9048P14Np16dj"688\r!!%j@rq")ja!`*Qi!$#4Z!!JJ#fF%5K0Q&%)Zrq""l[rJ*8J!%M9mrrm!('!)*8X\r!%N*U!"`eEJ!8!"BPEJ!3!$!J5R!*SQ!f!%+U!")r3`"#60m-#%jH)&p2l`!16Y#\r3!%G&9%0"9%P14Np16dj"688!!!"19[q',`096bmZ!!ir,J!-5'lrKNkkr[``(cB\r!CJJJEJ!)-+lrR$p$!*!!*Kp1AL"I6qm!#Nl3N!"%494&8Ne*6N9@8N9'6P90!!!\r!6PErP%MR%$!QEJ!-*'i!#&922bi!'#mZ!"3[,J!35'lrP%kkrb!`(cB!CKS3,[q\rb!N!!%&E!4!!8J'F'*Ulra'!%*Ulrq$p$!**-h``)6PiJAdr[!"*1d)j(494%59*\r&3e428PP*4!!!!%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a#%5!ICb)J3#"3-"Jb,J!\r)CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!!!!YT5Qpj)A"PCQC`Gh"\rM!!!!!EBXZ0S!N!d$!!)!N!6rN!3!N!B*Q!!!#CJ!!!QB!!!"`!!%"!$rN!3!N!G\r%!!!!3!!!!!N!!!YJ!J%%!2q3"!#3$J%d!!!!J!3%"!#3#!%!!!!`rj!%!*!%rj!\r%!*!(!3!!!!X!!!!"!!!!L!!!!*!!!!!",!!!!!%!N"-,!*!)!J!!#J)!!"S#!!!\rU!J!!0`)!!%3#!!"2!J!!A!)!!'S#!!"c!J!!IJ)!!)m!!3#3"3-!N!4+#N)!4J%\r!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*$FQ9KG'96H@jM!%GPG$&\r5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"$E'pcC9*PFdCTE'8!3Qa\r[BfY0EhCP4'&dB3"5CA0&FR*[FJ"'D@jN4QpXC'9b!&"#4f9d3f&d5@jQEe0jEQ-\r!5%p`C@j5CA0'D@aP!*!9I!J#TT2Krrb3!!%!#*3Krl"mIaYiU(m!)$J!rrq`(`!\rJ1!$rrj!!(`!LU"m!!#`!!!4!JJ%-J"m!%#`!#!"!J!#-X(m!)$Kr!!!mJ'9i2+"\rPH$c!BA-mi%P123"KFcNJ!!)j3!!!1)4dEMLPG'iiaQ0b11G*9$N)F'C)!!$CB!!\r!!(aJ"c9!JJ#d1(m!!$b!CAJmS'9i2-"KFccJ58ip!'&c15!!!cP!!!!iK(4Z1+9\rdEMM'Bh)ijdP813K`CNJ!!*9J!!!!5!!!G$b!a(1)[`!'1-%!2$MK!$JiK'0b5!!\r(RB""!"4mB!Fe3))!8+J"!$b`(`!JJ!%!1*!!(`!L1(m!!$b!CAJmS-4c2-"KFcc\rJ58ip!'&c15!!"$P!!!!iK(4Z1+9MFMM'Bh)ijdP813K`CNJ!!#&J!!!!X(m!(S!\r"!&Ji)3"3I!J$TS2Krra1J!!JI!J#TVlKrpb3!!%!#*3Krh!l3`!!1Z3!!$X&!!!\rlCJ!!1iF!!$ZS!!!lb3!!1qS!!+Xk!#!i!2rrX"S!)$J!rrq3!"S!)MKj!!!iP`!\r!L,S!"MM"!&`ii3"B5!!'dB""!"4mB!Fe3))!d(`BZ%""JJ!N1(N!!$LB!!#)ZJ!\r'1-%!9$MK!&")!!DPJ%%!&%J!!"5S!3"FX!%!9)!"!&L3!!%!8(aJ"c9!JJ#3!+J\r"!&5`!3"+J!%!8*!!!3"-Xm%!4,2K!%D)'J!'Q!%!5*0K!$L6J3!mNk%!3+KK!&b\r!J3"B1+!!!$M!!!'!iJ!X13%!1%J!!iPJ!!!!I'!(08##!$b!J3"-J!%!8(`%!!"\r!JJ!F1'$re6J!rrq`'J!J1!$rrj!!'J!L5!!!&+J"!%U`'J!JJ!%!6*!!'J!LJ!%\r!Q$JK!*!!I!J$TVVKrpa1J!!JI!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3KrN!\rlJ`!!1k3!!(br+hL!I!!NJ"m!!(`$!%"!JJ()J(`!))!I!!4m!`"!3))"Z$KJ!!"\r)!!@YJ%%!&+Km!"D!R!"NJ,`!%MM!!!&)!!@YJ%%!&(aq'hJiB!!"5!!&KB""!"4\r)!!@YJ%%!&(aJ"c9!JJ&8J(m!#$`$V+`S!&)M3))!9$KJ!!")!!9CJ%%!&$aJ8e5\rSR`!-1'05)dJ!"Bf!33!8I(`EH$KJ!!&)!!8eJ%%!&#JF!!""JJ%81'%!T+LI!!b\rS[`!15!!&HB""!"4)!!"3J(m!#+LI!!a)!!90J%%!&(am'hK)!!8TJ%%!&#JF!!"\r"JJ$3J(`!!$L"!+5![!!!L!8!!(`&"h3iT3!"5!!&5B""!"4)!!!)5!!!U$J"!+5\r3!!%!5UJI!"+`!3"1J"m!&*!!!3"S1!!!!,!"!&3iB3!i5!!&,B""!"4mB!Fe3))\r!'+J"!%k`(`!5J!%!D*!!(`!85!!!B(aJ"c3X!2q)3B)!%(aJ"c3X!2r93))!1)J\rI!"!S!!!!3B)!,$KK!$K)!!6jJ%%!&(aJ"c9!JJ!BU!%!6V!I!"+!!3"SN!!I!"4\r)!!!81!$rrl!I!")i!2rrN!!I!"3i!!!"Q"d!!(r!"c3X!2rr3B)!%(r$mhK)!!6\r&J%%!&)!"!FJi)3(!I!J$TS2Krrb$`IriJk(rp)1"rr"1J!!JI!J#TT2Krrb6`Ir\riNk(rp*!!!3!)P#(rX$ZM!!!lj!!!S"m!Y#J!!!""JJ!8S(m!YU!I!,4m!`"!3)!\r![$[!!!'JI`#f1!-!!E!I!,Dch`!JNlm!0$Kr!!4)!!39J%%!&,"r!,#S(`#`,!!\r!!%##!%!iI`!%1*m!XS#r!,L"R`!!5!!%6B""!"5)(`!L9!!'pd'#!"b)(`#b+!!\r!!%##!"#!I`!dIq6lH%[rreNlhJ!"U"m!X#`!!!"!JJ!3L"m!XLJ!!!""J[q)U"m\r!X#`!rp9"JJ!3U"m!X#`!l(K!JJ!-1!!!!,!I!,#JI`#f1!2rrl!I!,D!!3"B1#%\r!8(`)!kD$iIrmJm(rq)1Krr41J!!JI!J#TVpKrqb3!!%!#*3KrZ!lB`!!1i8!!$Z\rQ!!!la`!!1qJ!!#JH!!""JJ#N1(X!!$Lm!!!i`3!m11%!1%J!!IPJ!!!!I'!(08#\r#!)L)!3!i+!!!!8##!(!iI!!!1*X!!$LK!$T)!!'4B!!!!(aJ"c9!JJ"JNm%!3$J\r"!,#3!!%!9UJ"!$U`!3"D1!!!!*J"!,!i!!!!X!%!m$J!!!#B!3$bXk%!p$J!!!#\r`!3$fNq%!q)"K!$`iJ3"!5rrq1DKK!2")!!!31'$rL%J!!!JiB2r1J!%"+$JK!5"\rm#!1QZf(rl%k!!#"m#!+QNq(rr*!!!3!)P#(q`(br+hJS(`!!3B)!B,#I!"BS!`!\r!3))!'$J!!!#3!"m!%MJ!!!#`(`!F5!!!+$L"!$L)S`!!1+8!!8J!!KQ!33!81!%\r!1*!!(`!51!$rrl!I!"arirYi5!!#AB""!"3i!!!!N!!I!"*)!!!)1'$rcS!"!8J\ri)3&!I!J$TS2Krra1J!!JI!J#TT2Krrb3!!%!#*3Krk"mhc0i+!8!!%'#!"#)"3!\r!+!!!!%##!#!i!!!!Q!%!1$J"!$L3!"m!%MJ!rrq`(`!F5!!!%*!![`!51!!!!,!\rI!"b`I`!@N!#I!$"rirYi5!!"MB""!"3i!!!!N!!I!"+!!3"S1#%!B(`)!kD$iIr\rm6S!!)(`)!UD6iIrmN!!"!!L8)Ip!I,mVH$LK!$K,rrlCI'!(08##!!bS!3"1X"m\r!!)!"!-Ji)3$!I!J$TS2Krra1J!!JI!J#TT2Krrb6`IriN!!"!!L8)Ip31mB!!$[\rR!!!i`3!i5rrr)AaJ"c9!JJ"!L!%!9P3%"[Bi!!!!I)3!8$!%rrpm!#%3Q"m!!)J\rI!!!S!!!!3B)!%)!"!'L3!"i!!%J!!!b!!3#FN!!H!!#!!3#i1#%!X(`)!kD$iIr\rmJm(rq%k!!##"JJ!JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!%*!!33!8J!`!!)"\r-!!4m#31Q6S!%))'#!#L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!FN!""!"5!$!!\r!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!b3!%%!&)!\r-!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!**!!33!\r8J!`!!)"-!!4m#31Q6S!%))'#!!53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!8N!"\r"!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%))!-!!#\r3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!N[)6J+)J+B"!!!!9)!N!5!#!#3"4!!%!#\r3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(r\riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!\rF1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%5\r3"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm\r!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)\r4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!!j'!+!!"*6&K$%iX\r!!%lk!!41G8j@rrT)jaJJ*'i!#$emrrrrrR$r,8$rqLBU!!)-8J!%CJ!!RP922bS\r!)#m$(bS!"NKZrrj)E[rkF!#S)c!I1!"REJb$a(C[BfBL*MaQGQpM98mr+J!J,`-\rI2!!"5'lrrNKZrrT`!+JM-"mi!%T%Cd!-JfCXER4Q##BmG'9YF'!'*MaPH(4Z98m\rr+J!J,caPH(4Z$)0dC@e`9m"%!%L!(`")E[rq5'lrqR!!U#-`(cJ!0@lrrJ!J*@l\rrqJ!L083!(NcI""K1ALkI6R@%E@&TEJ#3"3*"5Qpj)A"PCQC`Gh"M!!!!!ECHR!`\r!N!d$!!)!N!6rN!3!N!B"+!!!!5J!!!%S!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%\r!!!*!!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!\r!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQp\rZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*2"rrL3!!%!#*3Krl"mIKYi1!$rrl!\r"!$`i!2rrN!!"!$L$rJ!#U"i!!#`!!!4!JJ$%U(i!)(rNqhL)[J!'1-%!2$MK!$K\r)!!$&J%%!&(aJ"c9"JJ#-2"mlLLJ!Ef0!JJ!S2q"QGM[rEf1SIJ!J1*m!!$LJ!!%\ri`3!m11%!1%J!!)f!33!8I'!(08'#!&3m(jQ8+!"ZG%##!"!ri(4P1rpYF%J!!!`\rri'9i1rpdEUKq!#!mJ'9i2+"dC6LPEA"m(bK3I!!!0&3&hMii`3!m11%!1$L%G'j\r)!!!eJ%%!&+J"!$b`(J!JJ!%!1*!!(J!LX(i!(S!"!&Ji)3"3I!J$TS2Krrb$`Ir\ri6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"HJ#3")!)!*!&%!!\r3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(j\rJIrKrr(rmIrarr(rmIrarr(rm2r`rrMrr(rm2rKJ!CQ"CQ%B%3B4!C%!8Aaa4R&5\rFFT`eh$rH)&mIr`rq!!"(1J!!!!X!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!\r%-c-!!*QC!!AZN!B!"Yf3"J!(Zj!'!!L)N!B!#853"J!+)T!'!!m!N!F2m!#3"3q\r5,r!2m!!!$aQ5,r)Im!!2%4Q5)L%[!!m4%4Q5)Lm!$a%4%4Q5,`!2%C!%(bm!$ar\rrra%I2`!2(e9Im4mr!!mI9&Eb(cm!$jp94[)I2`!!re48rbmr!!$rN!3[2k!!q(G\rhMbmrUJ!2rrrrRcqU!!!c-c2rqU!!!!$NB!S!!%P-@%-6L`!!6[S!"%je6PErqNM\rR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja5!!4Q!!#H98mr+J!J,`-I+J!'5'lrrNK\rZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'CfEf096cmU!#![!amm!!&)E[rq5'lrqR!\r!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e`B!BQ2'9iG'j96cmU!#![2'9iG'i-Jh4\rPEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!I1!!eE[rq!#!PE[rk!#)e4!!H60m%'%j\rH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"hF'-!!!!"YPkF$!#3$3-!!J#3"2q3"!#\r3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!N!#!33!rj!%!*!\r2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!\r!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4\rPFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hJi!2rrX!%!2$J!rrq3!!%!1)2\rq!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)Lq!!Bi`3!m11%!1%J!!-@!33!8I'!(08'\r#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkKq!#!iR`!!1+!!!6M"!$`ii3!i5!!!MB"\r"!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$rJG'8lrfe`5!!!$$rJCAJlrh4ZU(i!)$b\r!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM"!$`ii3!i1)4dENJ!!$@!33!8U!%!2,!\rH!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JJB)!!*!!33!\r8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&D!*!%J!J!N!83!"!!N!P)!!!!5!#3"33\r!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIra\rrr(rmIrarr(rq2rm2r`2H'!"QB&QB4J4"K%"N3"4!(%`F@aaeh(VmI[irr`rr!pi\r!!%fC!!!!"`!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!3!!*QCrrm!"853"J!\r')T!'!!m!N!F2m!#3"3p5,r!2m!!!$a95,r)Im!!2%495)L%[!!m4%495)Lm!$a%\r4%495,`!2%C!%(bm!$a'3""mr!!m4rb%4(cm!$ap"rb%I2`!2p"38rbmr!!mr38&\r2rcm!$d023I2r2f!!rc3r02mrCJ!!rdp2rcpQ!!!!rr-[pQ!!!!$NB!S!!%P-@%-\r6L`!!6[S!"%je6PErqNMR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja5!!4Q!!#H98m\rr+J!J,`-I+J!'5'lrrNKZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'CfEf096cmU!#!\r[!amm!!&)E[rq5'lrqR!!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e`B!BQ2'9iG'j\r96cmU!#![2'9iG'i-Jh4PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!I1!!eE[rq!#!\rPE[rk!#)e4!!H60m%'%jH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"hF'-!!!!"YPk\rF$!#3$3-!!J#3"2q3"!#3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#3"a!!!!!-!!!\r!!3!!!N!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!\r"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*\rLEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hJi!2r\rrX!%!2$J!rrq3!!%!1)2q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)Lq!!Bi`3!m11%\r!1%J!!-@!33!8I'!(08'#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkKq!#!iR`!!1+!\r!!6M"!$`ii3!i5!!!MB""!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$rJG'8lrfe`5!!\r!$$rJCAJlrh4ZU(i!)$b!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM"!$`ii3!i1)4\rdENJ!!$@!33!8U!%!2,!H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2\r"rrK1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&L!*!%J!J!N!8\r3!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J\r!IQ"rq(rmIrarr(rmIrarr(rmIr`rr$rq$rm'r`)q'!"QB&QB4J4"K%"N3K4'R%j\rFHcaL[$+m1ci2A`Er!Mi!!%AP!!!!#!!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c\r-!!3cN!4QCJ!&Gj!'!!C%N!B!"b+3"J!2!*!($r!!N!82BLr`$r!!!!m@BLrb(r!\r!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%4m4%@,`!2%4ra84mr!!m4md%@(cm\r!$rm`4K&[2`!2B3&"B@mr!!$c)N&KEcm!!2mb4K&[2h!!!202*KmrG`!!$r"[2rp\rh!!!!m!$rrh!!!!$NB!S!!%P-@%-6L`!!6[S!"%je6PErqNMR'#!NEJ!)2Acrrrr\rqF2mY32rk*LS!!Ja5!!4Q!!#H98mr+J!J,`-I+J!'5'lrrNKZrrT`!+JM-"mi!'G\rZ$)2%GQpMCL)Q2'CfEf096cmU!#![!amm!!&)E[rq5'lrqR!!U#-`(cJ!5N4R3!b\r$CQaZG'B)*MadC@e`B!BQ2'9iG'j96cmU!#![2'9iG'i-Jh4PEA"A`%3!5)!I!%K\rZrrj)E[rkF!#S)c!I1!!eE[rq!#!PE[rk!#)e4!!H60m%'%jH,Tp1GB4YB@PZ!*!\r&!N&+EhNKF'9QCR"hF'-!!!!"YPkF$!#3$3-!!J#3"2q3"!#3"J%S!!!"+!!!!5J\r!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!N!#!33!rj!%!*!2K!!!!)!%"!3!N!J\r"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!\r)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIr\rmNm(rq*!!!3!)P#(rX(aq'hJi!2rrX!%!2$J!rrq3!!%!1)2q!!+S(J!!,!!!"%#\r#!-5SIJ!JIq6lH)Lq!!Bi`3!m11%!1%J!!-@!33!8I'!(08'#!)`m(cZ++!"[Bd#\r#!#Jri'Cf1rp[BkKq!#!iR`!!1+!!!6M"!$`ii3!i5!!!MB""!"4mB!Fe3B)!9$`\rIQC3S!'jd3))!%$rJG'8lrfe`5!!!$$rJCAJlrh4ZU(i!)$b!CAJmS(4P1+9YF(`\rI+&"m!!!d9!AH2MM"!$`ii3!i1)4dENJ!!$@!33!8U!%!2,!H!##!!3!iN!!H!#+\r`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31\rQ6S!%)!#3#!`!!!'D!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N\r#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr$rq2rm\rrr`rq'!"QB&QB4J4"K%"N3"4rr'!mCcaK2#)m*6iL2crr$ri!!$X%!!!!$`!!rj!\r'!!(rN!6-c!!#rj!%!!!!!mb3"2rr!!6-N!B!"CQ3"2rr!!CQN!6-c!!(CT!'!!J\rcN!B!#Gf3"J!+UT!'!!YhN!B!$&@3"J!04*!'!!iLN!B!$`#3"`r`!*!&$p9Im!r\r`!!!22G9Ip6r`!!mc2G998em!$c-c2G99A`!2-c-c2G9I!!mcN!3rA`!2Gj!%cfm\r!$h3L)L52E`!2FKhp%Sp[!!pb%8m5Mfm!!(3Kq5U2E`!!G%Y,5Sp[i!"kU[UUMfr\rZ!-L)L)L2Eqi!!'CQC[rqi!!!!14J#J!!58aB3a1,!!"1qJ!%6R919[rk51FB)#4\rZ!!JpI2rrrrj`rbe!rrSQ+J!#$&)!"'B!!*j96cmU!#![!amU!!C)E[rq5'lrqR!\r!U#-`(cJ!Cfi-Jm4fEf0Q)LBmCRC[Be922bS!)#m$(c`!!8KZrrj)E[rkF!#S)c!\rI1!"+4'G!$)0QE'jdCJJQ2(4PEA"J"LBmCAKdEP922bS!)#mmCAKdEJb$G'9YF&I\r!4!")J"m!5'lrrNKZrrT`!+JM-"mi!$9Zrri!)#9ZrrS!)M9%!"j-h`3B6PiZRdj\reK'eKD@i!N!8#38T[H5&`C@CQF(G`B`!!!!'fAT`-!*!0!`!#!*!%rj!%!*!'!5J\r!!!%S!!!"+!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!#3!)""!$rN!3!N!q%!!!\r!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!\r!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!\rBI!J#TT2Krrb6`IriN!!"!!L8)Iq`I(iEH$J!rrq`!3!m1!$rrj!!!3!iJri!!UJ\rH!!!X!!!%3))!a+Kq!#"rj2YiL,i!"MM"!$`ii3!i5!!!aB""!"4mB!Fe3B)!M$`\rI1iSS!'pM3))!+$rJCRBlrfpMU(i!)$LI!!!iS!!"1-%!2$MK!$K)!!#0J%%!&(a\rJ"c9"JJ"82"qCP#J!ER4!JJ!32q"dC6[rEA")!!!-2q"PH$[rG'kSIJ!J2)"PH$b\rJG'8iT@e`I"mS8(`!!$48"Giq1-%!2$MK!$JiK(4Z5!!!0B""!"5S!3!mX"i!))!\r"!$L3!"i!)V"q!"k!!3"B1#%!8(`)!kD$iIrmJm(rq%k!!##"JJ!!N!""!"5!$!!\r!J%`!"(`*!kC1J!3J!*!)$!!!!M)!N!5!%!#3"4!!%!#3#8J!!!")!*!&#!!"!!J\r!N!B"NJ#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIra\rrr(rmIrjrrcrr(liB!'CJ@CK'"%'%3'4!&%!FAKaK(%#FF*aahRRI2rmI[J!!2%d\r!!!!5!!$rN!B!*-c-rj!%!#M-c2rr-c-!+Xb3"2rr!%bCQIrr-c-!6TQCc-crr`"\r8QC!%rrm!FQCQc-crr`"hCQE-c!!!!(eQCTQC!!!!IfD3"-c-!*`c-jQCrrm!S6-\rcQCN!!!#L-c0QC[rr!-d!!$-cc-`!cJ!!-c1CQ3$m4*!'!2dLN!B!r`#3#Irr!*!\r-rra892rr!!$rr`#3"[mUr2a892rr9#Vrr`#3"2mU+LVmr&53"#T8r`!!!2mUN!A\rmr&53"2m!!!$r+T!(r2a892m!!!$r+T!*re6r!!!!rbU3#&6rIrm!!!$r+[hrrrd\rU+LT8rhrr!!!!rrp-*#4hrbSU92prr`!!!2eh+(G16RIp9&6rIrm!!!$rcAe16R)\rSre48rhrr!!!!rmfL6#LFS[pr92prrrd!!2h1cAehGmhpIe6rIrrpr3!!rml0SFl\rrrrprrhrrrId!!!$prrrpIhm!rrrrrId!N!6NB!S!!%P-@%-6L`!!6[S!"%je6PE\rrqNMR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja5!!4Q!!#H98mr+J!J,`-I+J!'5'l\rrrNKZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'CfEf096cmU!#![!amm!!&)E[rq5'l\rrqR!!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e`B!BQ2'9iG'j96cmU!#![2'9iG'i\r-Jh4PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!I1!!eE[rq!#!PE[rk!#)e4!!H60m\r%'%jH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"hF'-!!!!"YPkF$!#3$3-!!J#3"2q\r3"!#3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!N!#!33!rj!\r%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"\rN!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C\r[E'4PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hJi!2rrX!%!2$J!rrq3!!%\r!1)2q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)Lq!!Bi`3!m11%!1%J!!-@!33!8I'!\r(08'#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkKq!#!iR`!!1+!!!6M"!$`ii3!i5!!\r!MB""!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$rJG'8lrfe`5!!!$$rJCAJlrh4ZU(i\r!)$b!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM"!$`ii3!i1)4dENJ!!$@!33!8U!%\r!2,!H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JJB)!!*!\r!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&D!*!%J!J!N!83!"!!N!P)!!!!5!#\r3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(r\rmIrarr(rmIr`rr"rq$2m!r`!q'!"QB&QB4J4"K%"N5"4BR(hF@0aDh$MF(Ii-h`$\rI!$i!!%4a!!!!"`!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4hN!B!"853"J!\r')T!'!!m!N!F2m!#3"3p5,r!2m!!!$a95,r)Im!!2%495)L%[!!m4%495)Lm!$a%\r4%495,`!2%I)4%48[!!mImK*#(cm!$rrr*I8[2`!2(r!!p5mr!!m[m2$r,cm!!2r\r`!2m[2`!!"Im[rrmrB!!!43$r,cpQ!*!%rbmrCJ#3"IrrB!!!!14J#J!!58aB3a1\r,!!"1qJ!%6R919[rk51FB)#4Z!!JpI2rrrrj`rbe!rrSQ+J!#$&)!"'B!!*j96cm\rU!#![!amU!!C)E[rq5'lrqR!!U#-`(cJ!Cfi-Jm4fEf0Q)LBmCRC[Be922bS!)#m\r$(c`!!8KZrrj)E[rkF!#S)c!I1!"+4'G!$)0QE'jdCJJQ2(4PEA"J"LBmCAKdEP9\r22bS!)#mmCAKdEJb$G'9YF&I!4!")J"m!5'lrrNKZrrT`!+JM-"mi!$9Zrri!)#9\rZrrS!)M9%!"j-h`3B6PiZRdjeK'eKD@i!N!8#38T[H5&`C@CQF(G`B`!!!!'fAT`\r-!*!0!`!#!*!%rj!%!*!'!5J!!!%S!!!"+!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!\r"!!!#3!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%\r!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*\r[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb6`IriN!!"!!L8)Iq`I(iEH$J!rrq\r`!3!m1!$rrj!!!3!iJri!!UJH!!!X!!!%3))!a+Kq!#"rj2YiL,i!"MM"!$`ii3!\ri5!!!aB""!"4mB!Fe3B)!M$`I1iSS!'pM3))!+$rJCRBlrfpMU(i!)$LI!!!iS!!\r"1-%!2$MK!$K)!!#0J%%!&(aJ"c9"JJ"82"qCP#J!ER4!JJ!32q"dC6[rEA")!!!\r-2q"PH$[rG'kSIJ!J2)"PH$bJG'8iT@e`I"mS8(`!!$48"Giq1-%!2$MK!$JiK(4\rZ5!!!0B""!"5S!3!mX"i!))!"!$L3!"i!)V"q!"k!!3"B1#%!8(`)!kD$iIrmJm(\rrq%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!!!AS!N!5!#!#3"4!\r!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"\rqB(riIrarr(rmIrarr(rmIrarr$rm2rirrcrr(riB!'CJ@CK'"%'%3'4!&(rdB$4\rK0'Fd)$3[YLFh2rFIrJ!!Ae!!!!!,!!$rN!B!!Fb3"2rr!!,-N!B!!jQ3"2rr!!4\rQN!6-c!!&lT!'!!DlN!B!"iL3"J!)Gj!'!!P%N!B!#L+3"J!2!*!($r!!N!82Ncr\r`$r!!!!mCNcrc(r!!$a%CNc-a2`!2%4%CNc-r!!m4%4%CNcm!$a'3""mr!!rrN!9\r2!!rb*@)Lrdm!$r*eD5,r6`!2mTrjN[p2!!$h)L)Rrdm!!2,rpj,r6k!!mLq*)[p\r2UJ$rN!92UJ!%4%4%rrqJ!!!!YQpNC@3!!!!8Fh"PBfPKE#eYB@0c1N9NDA4[FR0\r[C'pN!!!!((0`C@0TB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef0[C(0`!!!!-h0`C@0\rTB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef-k6h"PEN4[Bb"6D'9XE#"3E(9R,8PZF`"\r[C'aL!!!!(R0`C@0TB@`YCAKdEMT2F'9Z4'pM)%aTBR*KFQPPFfpNFh3!!!!,1P0\rdBA4TEfjPFRN!!!!%k'!+!!"*6&K$%ii!!%lk!!41G8j@rr4)jaJ`*'i!#!a5!!4\rQI&922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'G-*QS!'MJV!!496cmU!#!\r[2'eKBh0#*dKZrrK)E[rdF!#S)c!I0J"Q-&922blrq#mmEf4PC"mU!!C)E[rq5'l\rrqMm%6VS$0$!I0J"Q$$9Zrri!)#9ZrrS!)M9$!"j-h``B6PiZRdjeK'eKD@i!!!"\r19[rd,`SNEJ!)B!*5LJ`5!#eQq%(U!!&$l[rmF!5J,P922bi!$#mZrra#*dKZrrC\r)E[riF!#S)c!I28$rp#!ZrrJNAdjH6R@84'Pb584'FQpY8h"PBfPKE&"KG'J!!!"\r19J!!51F3-#BZ!!JQEJ!-*%0J!P++$")!1QEi)%U4`b*$F!!3%8M!N!#)8S!@J#"\r+3qX!!A!!%"1J,NcI$!K1ANjeNe"KG'K'FQpY8h"PBfPKE&"KG'J!!%j@!!![#bm\r+*Qi!$#4Z!!JQNPL+0e)!"&5+8SSA8J!'8SSJ5N2V!!G`!"!V!!DL,R!!%#X!"YA\r!F!!3+`!'5-#"r!!#5%"63'B#8SSJ5L4I*Pp1ANjeN!"(CA41CAKd4Na%H%9ZG(*\rj!!!!6PEqqNMR(c!X,J!+H!"f!&P2,caQE'3M2bi!#+JI)&mQ5#!,CK496kQ[-"m\ri!'F%-!4J@M!mrd"J9&P2,`Y1ZJ,')"mZ!#46)%V4abS)B"K)E[lk,`T1Z[mq*%L\rmV[lk8%pQ"(B"B!5ea@AN5J0R&N(Zr`!LEJ!1F!!3,[m!8N")`+)ZB!*ie5m,UD-\r`"%cI$2K1ANjePdGPG&"KG'K'FQpY4Na%H&*PFfpeFQ0P!!"19[qd51FF!(B!98q\rTP$!I1J"96cmZ!!J[2'eKBh0#*dKZrrj)E[rkF!#S)c!I0J"R"$!$B'a96cmZrri\r[,[rk3IS!LNK35'lrY(!"UP)`(cB!C`3`!f"+98p)E[qd(c`!!A!0UP)`(cJ!GJ!\r-42rrCJK96kQ[-"mf!%T$CKir"+QB,bi!$LmZ!!Sr2!#!6VVq`$B!2`5TQNr[!!S\rr"DQB-!0-h`!i6Pj1GCp(CA4'EfaNCA*'FQpY6h"PEN4[BdC[E'4PFR0'6%4i!"!\r26h"PEN4[BdC[E'4PFR1P6PErP%MR%$!NEJ!)*Qi!$(B!3T-p8[qU,@S!![r%)%T\rFL#e)rkC#E[q`3HlrP(!*SQ!f!'F%-!0J"LDZrm3`!dcI$!K1ANjeN8GPG%4TFQ9\rMG'pbH84TFNP%!!"19[fk51FH-$SZ!"JX,J!8*'i!$LCZ!!Tf!&922`8["KmZ!")\r[#Lm,F!#S)c!I0J!-3rr9C`Jr3`*iB!!!`$5&5'lr!#m'2`91Z[jq0J"2l`!+Ca4\r)E[m!,`Br,J!)6VVpZ$B!6qm!#NT$C`Jr3`*iB!!!LJ`Z!$Vr!@FH2`9)E[m!6VV\rmFLJ!5'lq!%KZr`"1Z[c%6qm!$Q!@3Hlr!%2ZrJ"`!"!Zr`"53%M!S#ji!&922a)\r["%KZrJ")E[fkF!'U8M!I0J!-3rr9CKa+,J!5CbC96dKZrESr22rr,`Y`"DT5-"m\rf!'!35N0Q$#m,5'lpZNkkrV"36cp$!RK-h`ai6PiJAdr[!"*1d*&'58j%6e"&6N4\r23dC26%4&8J!!)PmJAk!P,S"U!N+A6Y%!!!R@5Qpj)A"PCQC`Gh"M!!!!!EBXZ,`\r!N!d$!!)!N!6rN!3!N!B(a!!!"m3!!!I%!!!"m!!%"!$rN!3!N!GB!!!!9!!!!"B\r!!!R!!J%%!2q3"!#3$J&N!!!!J!3%"!#3#!%!!!!mrj!%!*!%rj!%!*!(!3!!!!i\r!!!!"!!!!P!!!!*`!!!&F!!!!!3#3%`i!N!J#!!!+!J!!'!)!!#)#!!!Y!J!!1J)\r!!%F#!!"8!J!!BJ)!!'m#!!"r!J!!L!)!!*-#!!#L!J!!V3!"!*!&!`#3"%S03J"\r'!!!!3f&bBQpZ6'PL!%GPG%KKEQ4XC90THQ8!3Qa[BfY0EhCP!&9cC9*PFdCTE'8\r!4f9d-9*PFfpeFQ0P!%C66@&VC8C68h"PB`"$E'pcC9*PFdCTE'8!3Qa[BfY0EhC\rP4'&dB3"'8h"%DA*$FQ9KG'8!8Q9XC@&cC9*PFfpeFQ0P!&*PFd9bFQpb!%CTEQ4\r'EfaNCA)!4P0`6h"PEP*PFdCTE'8!3h9b8Q9c4QPXC3"33NGPG%0KG%PZCQp6H@j\rM!*!AI!J#TT2Krrb6`IriN!!"!!L8)Iq`I(iEH+JH!!!X!!!%3))!Q+Kq!##!RJ!\r#L,i!"MM"!%3ii3"!5!!&hB""!"4mB!Fe3B)!B)"q!"UVi`!%U(i!)$b!E@%iS!!\r!1-%!2$MK!$JiK'0c5!!&VB""!"4mB!Fe3))!3+KK!$`mJ'pNL,i!"MM"!%3ii3"\r!14m!!$L%C@4)!!3KB!!!!(aJ"c9!JJ!8U!%!4,!H!##!!3"!N!!H!#+`IJ!HJ!%\r!@$JK!&"m#!1QJq(rr)2"rrK1J!!JI!J#TT2Krrb3!!%!#*3Krl"mRb0i5!!!#$K\rM!!')!`!!+!!!,8##rr3iB`!"1)%!3$LJ!!4)!!BCJ%%!&(rMqhL!J3"!1+!!!$M\r"!$`ii3!i5!!%pB""!"5!B3!iJ!%!@$JK!&"m#!1QJq(rr%k!!#"m#!+QN!!"!!L\r8)Ir!I)BMH(aP'hK)!!!)1+8!!BJ&!!!S!!!k3),rp(b$+&#)!`!!I'3!8$J$!!'\rB"J!!1'8!!$L'!!')TJ!!5!!&PB""!"5!!3")1#%!3(`)!kC1J!!JI!J#TT2Krrb\r6`IriN!!"!!L8)Ir!I*iMH(ar'hL!(`!!N!!H!!!lr`!%U"m!!,!H!!3lr`!#1rm\r!!BJI!!#B(J!'1rm!!6Kr!!!iRJ!(L,i!"NJ!"1@!33!8L"i!"Rrr!K5)IJ!'I'!\r1F(`!!C48!!JmI!!B%#`!!!&!JJ!)1rm!!ArMqhL!!3")1#%!3(`)!kD$iIrmJm(\rrq%k!!#"m#!+Q[d(rk*!!!3!)P#(qS$J$!!!l4!!!1f8!!$[J!!!l`!!!2'"QE(`\r%!hJiBf3M5!!%1B""!"4mI4Yi+"d!!%##!#K)!!2eJ%%!&(ar'hKri!Fe3B)!$(r\rMqhK)!!#)1'$r3%J!!)"rSqYi5!!%&B""!"5!R3!!Ii3D&%J!!#JiC!!!1)%!1%[\rrrYemC"YiJ!%!1(`!d%"!JJ!-1m!!!8J!!!am"1"!3B$rf&I!"Mp"JJ!J1'%!2ML\rE!!#)S3!q1+8!!8J!!p@!33!85!!!#$[Jrp9rSqYi5!!$fB""!"4rirYiJ!%"D$J\rK!@"m#!1QZd(rk%k!!#"m#!+Q[f(rl*!!!3!)P#(rB$ZM!!!lC!!!1i8!!%J!!Yf\r!33!8I(iEH$Kp!!!mJ'eK1+!!!$M"!)3ii3#!1)4MFdJ!!U'!33!8I(mEH(rJ"c9\r"JJ!-Iq2lH%J!!+5SB3#%J)%!J$LL!%3i`3!i5!!#TB""!"4mIaYiIq!(08'#!!a\rrirYi5!!!H$KK!$JiJ!!"5!!#QB""!"4mI4Yi1q!!!(qJ"c3X!2rr3))!%%J!!T@\r!33!8I(mEH(rJ"c9!JJ!`Ik2VH%J!!T@!33!81'!!J$LE!!!i[!!!5rrq-Aar'hK\rrSqYi5!!#lB""!"4r`r0i5!!#DB""!"4rirYiJ!%!U$JK!+"m#!1QZf(rl%k!!#"\rm#!+QNq(rr*!!!3!)P#(r8(bI)hJi!!!!N!!I!!#S!`!!X!%!6S!$!!+3!!%!D$J\r$!!D3!!%!5MJ!!!#`!3"81'%!1%J!!XQ!33!8I'!(08'#!!K)!!!-J!%!D*!!(`!\r!J!%!Z$JK!,"m#!1QJq(rr%k!!#"m#!+Q[b(rj*!!!3!)P#(pB$XM!!!l4!!!1f8\r!!$Z'!!!lT`!!1mJ!!$Kj!!!iQJ!!1,X!!$MF!!!ir3!!5!!"*B""!"4mIaYiIq!\r(0#`!rp9"JJ!-Iq2lH%J!!25c2!!!1(N!!$LD!!!iS3&q5rrq&Aar'hKri!Fe3B)\r!'$Kq!!!iQJ!!1+%"IN[rr3&mIaYiIq!(08'#!!arirYi5!!!X)J"!AmS!!!k3B)\r!*$KK!AiiQ3!!5rrlDAar'hJiB3&q1)%!IN[rqmP)!!!J1'%"IML"!(k)S3&q1+8\r!!8J!!Bf!33!81q!!!+Km!!!iR`!!1+%!IMM"!$K)!!#CJ%%!&(ar'hKri!Fd,!$\rre8##!#KAB!Br3B)!0$KK!$JiJ2rr1,d!!%J!!9f!33!8I(mEH%J!!"Kri!Fe3))\r!%$KK!$JiR3!!5rrq6ArMqhL!!3+S1#%#S(`)!kDl)IrN6S!!))'#!#L3!%%!&)!\r-!!#!6!!%I!N$TNk!"##"JJ!`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!%*!!33!\r8J!`!!)"-!!4m#31Q6S!%))'#!#b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!"\r"!"5!$!!!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!b\r3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)\r!'*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"##\r"JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S!\r%))'#!"b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!dN!""!"5!$!!!J%`!"(`*!kC\r1J!3J!*!%J!!!d"!!N!E3J!!!F!J!N!8"3)!!!'!!N!B"S)!!!*`3!*!&!Mb!!!$\ri-!#3"3-dJ!!"%#J!N!8%4)!!!(!)!*!&",5!!!&J1!#3%$XK4!J`$dp`C@j%Ef0\r'EfaNCA*cT3!!!@)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)\r!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm2rirrcr\rr!$iB!'CJ@CK'"%'%3'4!&&qFIpa`h($F-0``hLrI2rm!2J!!%K`!!!!)!!$rN!B\r!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!",Z3"J!&Gj!'!!C%N!B!"b+3"J!2!*!($r!\r!N!82BLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a'3""m\r[!!mIrrra,cm!$rp99Im[2`!2p3!!Abmr!!re"%4I,cm!!28%4&m[2`!!p34%Abm\rrF!$d99Ar,cph!2rrrrBr2hF!N!Arph!!!!#fEf4PC!!!!"4cF'9MD@&X,@eKBh-\rk4@4TG'pbFfpNEf3!!!!FFh"PBfPKE#eYB@0c1N9NDA4[FR-k6h"PEN4[BfpNFh!\r!!!!cFh"PBfPKE#eYB@0c1N9NDA4[FR-k6h"PEN4[BcT2F'9Z4'pM)&0SC@aX)&"\rXG@FY5@jc!'pNE')!!!!HFh"PBfPKE#ePH(4Z1Np`C@j%Ef-J6'PLFQ&bD@9cEf4\rcG!!!!!Xk8h4KG'P[EQ9bH3!!!!6NB!S!!%P-@%-6M`!!6[S!"%je6PErp%MR'$!\rNEJ!)$&)!"'Ci98mr+J!J,bS!!N)R5'lrrNKZrrT`!+JM-"mf!'G+*QS!'MJV!!4\r96cmU!#![2'eKBh0#*dKZrrK)E[rdF!#S)c!I0J"Q,P922blrq#mU!!)I2!!"5'l\rrrNKZrrSr"%kk!c3`(cB!CJ`eE[rq!#!PE[rk!#)e3`!H60m-'%jH,Tp1GB4YB@P\rZ!!!!6PErp#m+*'i!#'!#8SS-%J!YC[K"kJ!"3qlrr(!%S#j96cmZ!!`[,[rm3LG\r)E[rf5'lrq(!!U#-`(ce!rr3J,[ri*&p1ANjeP%4TFNP%4R*[E90`C@0TB@a3BA4\rS!!!!6PB!!%MR%$!Q,J!)*Qi!$#4$B!*5LJ`5!$TQq#"+NF-L3h!!%"&)`*!!L&+\r!&S!J5N2V!!&`!"!6S#j-h``)6Pj1GC03BA4S4R*[E90`C@0TB@a3BA4S!!"19J!\r!,`X[#LCZ!!`NEJ!)*T*BLMG5!!48LP++&e)!"P++)%T$k`!(F!!3+`!'SLj`!"!\rV!!E9`(!!%#X!"NM!JI`!!NK!8d"Q!P++)%SNAbCI6Pj1GC!!4f9d6Q9iG%C-4(K\r&ER4bH3!!!%j@r[T)jam`,#i!#RJ!GJ"C6bmmCQaN)cmZ!!LS(b"I*NJJ#fB898q\rTVc!I1!"R"$!%B&S`22p!B&4C6bm,6VS#aL!I,J!N8b"+dFFU#'!B5'lqqLm+6VV\rr2L4)[+lqqP"2CJ4f!@!%YF9Pj%S$CaC"l[m!)Qi!$R!!%#lr!&*!5-#L,Q!#H08\r[#kQM-!4-h`ci6Pj1GCG(CA43BA4S4R*[E8C-4(K5CA0[GA*MC3!!6PErY%MR(!"\rf!&92UC3`(cS!98mr,J!),caYB@0c3LG)E[rq5'lrqR!!U#-`(cB!C`3`!f"X98m\rr,[rq,blrqN(k!)T)8%KZrl4`!DT5-"mf!'F%-!0J5P925'lrY"mm!!&`$DT5-"m\ri!(B!$%6rrfB)98qTVc!I0J"+3fBH2`5TQ#mZ!!i[,J!+2c`!J%kkrX!f!$m%UCT\r2l`!+2`@TQ$!$60m!1%jH6R@I4f9d4QpXC'9b4R*[E8p`C@j%Ef0'EfaNCA*c4Na\r%H!!3$dp`C@j%Ef0'EfaNCA*cT8j@rj4)ja!`*'i!##CZ!!af!%+629,rULeU!!,\rra#"+A)JY52qQ3QlrX%(Zrj4`#D*J0J"R"$!$B!BQV[r%-!0-h``)6Pj1GC&(CA4\r%DA*PBh4[FRP%DA**4!!!6PEpZNMR(M!k,J!B,#i!&#4Z!!iQEJ!+GJ"96cm&,`B\rI,J!5,`S[#h!!U#-`(cB!$%2re@F)2d-#H'!!!-!dK8KZr`!["Mm&6VVqIMB!6qm\r!#QF85'lr!#m'2bi!#%kkrEJf!%r[!!T+3fF)2d-#H'!!!)S-,J!kr`&R(Mm&5'l\rr!%kkr()S!%KZrJ")E[m!6VVma%r[!!jJ&N(Zr`"$l[i!F!!3,[m!8N")`+!ZH!"\r96cm5,`4)E[i!5'lpZR!"UP)`(cB!$%2re@BF5Li!%QFQ98p)E[fk2ccrrbm,F!@\rU8M!I0J"J%%T$CJ`[#dKZrET1Z[k`8%mr3`*i60m-H%jH)&p2l`!56Y#44NP14%p\r348j%6d0'6da%49)!!#*I)&qJ*5k!DJ*#Pdl4!!!*CNT[H5&`C@CQF(G`B`!!!!'\rf,,LP!*!0!`!#!*!%rj!%!*!'"f!!!!GJ!!!(B!!!!I!!"!3!rj!%!*!(@!!!!&3\r!!!!@!!!*8!)""!$rN!3!N!i"C!!!!)!%"!3!N!J"!!!!22q3"!#3"2q3"!#3"`%\r!!!!1!!!!!3!!!*3!!!#F!!!"A!!!!!%!N"-1!*!)!J!!#J)!!"J#!!!L!J!!,3)\r!!$S#!!"(!J!!9!)!!')#!!"[!J!!I`)!!)J#!!#6!J!!SJ)!!+d!!3#3"3-!N!4\r+$8)!4J!!!%0KFQ*[ENaTBJ"(CA4)B@jNE'96DATP!%*XEf0V6@pfC3"9Ff95CA0\r'D@aP!%GPG$&5CA0[GA*MC3"'8deKDf9'8e0`C@-!3fa[Ff95CA0'D@aP!%*XEf0\rV6@pfC84KG'%!4P0`4'Pb3h*PBA4P!&*PE'9KFf95CA0[GA*MC3"5CA0&FR*[FJ"\r'D@jN4QpXC'9b!%C6F%p`C@j5CA0'D@aP!%0eFP*PFdCTE'8!8%*(CA4$BA4*EQC\r[8hPZB`#3&h`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hLS(J!!,!!!"%##!*5SIJ!\rJJ*i!!MLJ!!!i`3"%11%!3%J!"GQ!33!8I'!(08'#!&b!IJ!DUq-!"+Kq!#!mJ'e\rK1+!!!$M"!$`ii3!i1)4MFdJ!"DQ!33!8I'!(08##!$bSB3!mJ*i!!MLJ!!%i`3"\r%11%!3$NI!!")!!3KB!!!!(aJ"c9!JJ!8U!%!4,!H!##!!3"!N!!H!#+`IJ!HJ!%\r!@$JK!&"m#!1QJq(rr)2"rrK1J!!JI!J#TT2Krrb3!!%!#*3Krl"mRb0i5!!!#$K\rM!!')!`!!+!!!,8##rr3iB`!"1)%!3$LJ!!4)!!BCJ%%!&(rMqhL!J3"!1+!!!$M\r"!$`ii3!i5!!%pB""!"5!B3!iJ!%!@$JK!&"m#!1QJq(rr%k!!#"m#!+QN!!"!!L\r8)Ir!I)BMH(aP'hK)!!!)1+8!!BJ&!!!S!!!k3),rp(b$+&#)!`!!I'3!8$J$!!'\rB"J!!1'8!!$L'!!')TJ!!5!!&PB""!"5!!3")1#%!3(`)!kC1J!!JI!J#TT2Krrb\r6`IriN!!"!!L8)Ir!I*iMH(ar'hL!(`!!N!!H!!!lr`!%U"m!!,!H!!3lr`!#1rm\r!!BJI!!#B(J!'1rm!!6Kr!!!iRJ!(L,i!"NJ!"1@!33!8L"i!"Rrr!K5)IJ!'I'!\r1F(`!!C48!!JmI!!B%#`!!!&!JJ!)1rm!!ArMqhL!!3")1#%!3(`)!kD$iIrmJm(\rrq%k!!#"m#!+Q[d(rk*!!!3!)P#(qS$J$!!!l4!!!1f8!!$[J!!!l`!!!2'"QE(`\r%!hJiBf3M5!!%1B""!"4mI4Yi+"d!!%##!#K)!!2eJ%%!&(ar'hKri!Fe3B)!$(r\rMqhK)!!#)1'$r3%J!!)"rSqYi5!!%&B""!"5!R3!!Ii3D&%J!!#JiC!!!1)%!1%[\rrrYemC"YiJ!%!1(`!d%"!JJ!-1m!!!8J!!!am"1"!3B$rf&I!"Mp"JJ!J1'%!2ML\rE!!#)S3!q1+8!!8J!!p@!33!85!!!#$[Jrp9rSqYi5!!$fB""!"4rirYiJ!%"D$J\rK!@"m#!1QZd(rk%k!!#"m#!+Q[f(rl*!!!3!)P#(rB$ZM!!!lC!!!1i8!!%J!!Yf\r!33!8I(iEH$Kp!!!mJ'eK1+!!!$M"!)3ii3#!1)4MFdJ!!U'!33!8I(mEH(rJ"c9\r"JJ!-Iq2lH%J!!+5SB3#%J)%!J$LL!%3i`3!i5!!#TB""!"4mIaYiIq!(08'#!!a\rrirYi5!!!H$KK!$JiJ!!"5!!#QB""!"4mI4Yi1q!!!(qJ"c3X!2rr3))!%%J!!T@\r!33!8I(mEH(rJ"c9!JJ!`Ik2VH%J!!T@!33!81'!!J$LE!!!i[!!!5rrq-Aar'hK\rrSqYi5!!#lB""!"4r`r0i5!!#DB""!"4rirYiJ!%!U$JK!+"m#!1QZf(rl%k!!#"\rm#!+QNq(rr*!!!3!)P#(r8(bI)hJi!!!!N!!I!!#S!`!!X!%!6S!$!!+3!!%!D$J\r$!!D3!!%!5MJ!!!#`!3"81'%!1%J!!XQ!33!8I'!(08'#!!K)!!!-J!%!D*!!(`!\r!J!%!Z$JK!,"m#!1QJq(rr%k!!#"m#!+Q[b(rj*!!!3!)P#(pB$XM!!!l4!!!1f8\r!!$Z'!!!lT`!!1mJ!!$Kj!!!iQJ!!1,X!!$MF!!!ir3!!5!!"*B""!"4mIaYiIq!\r(0#`!rp9"JJ!-Iq2lH%J!!25c2!!!1(N!!$LD!!!iS3&q5rrq&Aar'hKri!Fe3B)\r!'$Kq!!!iQJ!!1+%"IN[rr3&mIaYiIq!(08'#!!arirYi5!!!X)J"!AmS!!!k3B)\r!*$KK!AiiQ3!!5rrlDAar'hJiB3&q1)%!IN[rqmP)!!!J1'%"IML"!(k)S3&q1+8\r!!8J!!Bf!33!81q!!!+Km!!!iR`!!1+%!IMM"!$K)!!#CJ%%!&(ar'hKri!Fd,!$\rre8##!#KAB!Br3B)!0$KK!$JiJ2rr1,d!!%J!!9f!33!8I(mEH%J!!"Kri!Fe3))\r!%$KK!$JiR3!!5rrq6ArMqhL!!3+S1#%#S(`)!kDl)IrN6S!!))'#!#L3!%%!&)!\r-!!#!6!!%I!N$TNk!"##"JJ!`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!%*!!33!\r8J!`!!)"-!!4m#31Q6S!%))'#!#b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!"\r"!"5!$!!!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!b\r3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)\r!'*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"##\r"JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S!\r%))'#!"b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!dN!""!"5!$!!!J%`!"(`*!kC\r1J!3J!$XK4!J`$dp`C@j%Ef0'EfaNCA*cT3!!!AS!N!5!#!#3"4!!%!#3#8J!!!"\r)!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(r\rmIrarr(rmIrarr$rm2rirrcrr!$iB!'CJ@CK'"%'%3'4!&&qFF0a[A'TF,e`JAL$\rI2rm!2J!!%eS!!!!,!!$rN!B!!Iq3"!!!!!,-N!6rr`!$QCRrN!3!"*Q3"2rr!!9\rQN!6-c!!'!!"QCTQC!!IGN!B!#+U3"J!*4*!'!!SLN!B!$`#3"`r`!*!&$j42m!r\r`!!!2+C42p#r`!!mL+C4%3Nm!$b)L+C4%6`!2)L)L+C42!!mLN!3[6`!2,rrrmNp\rI!!rrL)Mr6em!$rKQCMp2A`!2m@"J2dpI!!$aCQBr6em!!2&hGcp2Ak!!m4%4rdp\rIUJ$rrrrjAeqU!*!&rrUJ!!!!YQpNC@3!!!!8Fh"PBfPKE#eYB@0c1N9NDA4[FR0\r[C'pN!!!!((0`C@0TB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef0[C(0`!!!!-h0`C@0\rTB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef-k6h"PEN4[Bb"6D'9XE#"3E(9R,8PZF`"\r[C'aL!!!!(R0`C@0TB@`YCAKdEMT2F'9Z4'pM)%aTBR*KFQPPFfpNFh3!!!!,1P0\rdBA4TEfjPFRN!!!!%j'!+!!"*6&K$%im!!%lk!!41G8j@rr4)jaJ`*'i!#!a5!!4\rQH&922bS!)#mU!!*#*dKZrrj)E[rkF!#S)c!I0J"R5LCU!"Si+`!%98mr+J!J,ca\rYB@0c3LG)E[ri5'lrp(!!U#-`(cB!CLj96cmZrrJ[+J!#(c`!!8KZrrj)E[rk2`4\r1ZJ-d-"mf!'B-0@lrrJ!J*@lrqJ!L08-!(NcI$"K1ALkI6R@%E@&TEJ!!!%j@rr3\r[#L4Z!!KJ!P++$")!,@Ei3HS!!82Zrra`"+!Z98mr,J!-,blrr%)R5'lrpNKZrrK\r`!+JM-"mp32rd)#lrq#4I6Pj1GC4%DA**4%CbEfe6F'9MD@&X8'&dD!!!!%j@!!"\r)ja!`*Li!##CZ!!`N3f!#8SS-%J!kC[JJ5T($)N0`!"!45-#3!)K5J"D!)%T$k`!\r"F!!3%k!Z60m-#%jH6R@68'&dD%CbEfe6F'9MD@&X8'&dD!!!6PB!!#m,,`SQEJ!\r-*'i!##D5@)Sh8J!%9)T5LKG5!!C5LL"+3qX!"h!!%#X!"U)ZF!!3+`!'eF"`!"!\rV!!C)`)(m!!*)3&0!CJ*5LL"+*&mQAdjH6R@3!%GPG%jPH(4'6%4i4@jdFRN!!!"\r19[lk51FI-#`Z!!Ti!(B!@8m[2'CXC#-r,J!)U"mJAbC))!YQ&&92UDm`(cJ!C`3\r`"'"D-$cr3'"8@8m[#dkk!XBJ(bi!*&-J5Y((+JKJ'%KZr[S[#NkkrciN5,bZr[T\r36fB%GJ&J",A&CH4+!fF@3Hlr!#*Z!!j`!"!Zr`"53%M!SLjJ!RM9,`ZTSc!%60m\r-q%jH6R@A4f9d8'&dD%CbEfe'6%4i8Q9cEh9bBf8!!%j@rl4)ja`!GJ"96kQ8-"m\rk!&922bi!##mmE@&MFd)R5'lrrNKZrrT`!+JM-"mf!'F%-!0JE&922blrrLmZrrT\r"qJ#+5&")E[qdF!'U8M!I0J"R"$!$B%T96dKZrl3I2!!"F!fU8M!I1!"f!!a%rrp\rQ#&92UDm`(cB!5N0Q(Mm%UCJ[,J!1,bi!#Mmm!)"1Z[l!0J!r"+QD6qm!#Mm&UCJ\r`!dcI!$K1ANjeRdGPG%C[E'4PFNCbEfe2F'9Z4'pM4QpXC'9bFdC-4(J!%!p2F'9\rZ4'pM4QpXC'9bFk919[q851F3-#4Z!!JQEJ!-GJ"#Nce5rkSYDJ!#rm3J5Pb),8M\rrTN*Zrl""l[q8F!QLB$B!C`3`!f!'*Ulra$!$60m-#%jH6R@44f9d4'PbC@0dEh*\rj4'Pb583!!%j@rET)jai`1Li!'#`Z!"3NEJ!1*Qi!#RB!98mr"5m'(bi!%Lm+,`Y\r`!+JM-"mf!!a$rp9R#$p$!RKJ!!$!0)9)E[m!,`Br"8kkrRif!%r[!!TR&%KZr`!\r["MmZ!!K1Z[fi0J"2l`!+5N0R#$p$!RKJ!!#+$#i!1[m"Cair"8KZr`"1Z[ab+!"\r)E[i!5'lr!%kkr-42l`!1B"C"l[m!3qlq!(!!%#lr!&*!5-#J,RJ!98mr%Lm%5'l\rq!%KZrET`!DT5-"mf!!a$rp9Q(%SZ!"*R*P925'lpZMmmrrm[#h!&UP)`(cB!B""\r+3fB-,`Y)E[fk6VVqX&"22d-#H%cI$(K1AL"I6qm!%Nl3N8C*6N428%914%p$4Np\r-4%95!!!LAb"IS#8ZJ'S#3TG1d3!!#@C+EhNKF'9QCR"hF'-!!!!"YLb"T!#3$3-\r!!J#3"2q3"!#3"JGJ!!!(B!!!"f!!!!(`!!3%!2q3"!#3"eJ!!!"8!!!!&J!!#9!\r#!33!rj!%!*!1!@3!!!#!"!3%!*!)!3!!!$crN!3!N!6rN!3!N!F"!!!!$J!!!!%\r!!!#8!!!!R!!!!9`!!!!"!*!6$J#3#!)!!!S#!!!B!J!!)J)!!#d#!!!k!J!!4`)\r!!&3#!!"L!J!!E`)!!(m#!!#)!J!!N`)!!+)#!!#Y!!%!N!8$!*!%5Je#!%B!!!"\r$BA*LEfj-D@)!4f9d5'&ZC'aP8fPkC3"#E'pMDde[GQ8!9A0P8Q9c4QPXC3"(CA3\ra8Q9cEh9bBf8!4P00B@YP4P06F'9M!%0XEh0P8Q9c4QPXC3"#E'pMDde[GQ9%BA4\rK!%C6F%4TFN0bC@&dC3"5C@aPBA0P8Q9cEh9bBf8!8Q9c4A*bEh)!4QPZC%C[E'4\rPFJ"'8h"2F'9Z8Q9c4QPXC3"$GA*5CA0'D@aP!&"#4f9d3f&d5@jQEe0jEQ-!N"G\rm#!+QNq(rr*2"rrL3!!%!#*3Krl"mIKYiU"i!!#`!!!4!JJ#8U(i!))#H!!)iS!!\r!1-%!4$MK!%")!!ACJ%%!&(aJ"c9"JJ"FJ(i!'U[M!!5SIJ!J2)"YB6LJ!!!i`3!\rm11%!1$L%Bh0)!!@TJ%%!&(aJ"c9!JJ!mU'%!2)#H!!)iS!!"1-%!4$MK!%!j(`!\r!5!!%)@!!!!"mB!Fe3))!&+J"!%5`(J!JJ!%!3*!!(J!LX(i!(S!"!&Ji)3"3I!J\r$TS2Krrb$`Iri6S!!)(`)!UD6iIrmN!!"!!L8)Iq`I*mMH%J!!!JiB`!"L!-!!#J\r!!#e!J[rd1'-!!6L"!%!iS!!%5!!''B""!"4rirYiJ)%!3$LJ!!!i`3!m11%!1%J\r!"2@!33!8J'%!1)!"!&Ji)3"3I!J$TS2Krra1J!!JI!J#TT!!!3!)P#(r`(b')hK\rmC4Yi5!!!#$LP!!')"3!!+!!!1N##rr4mJbK3L!-!!(aN!&!i!`!"Q!B!!$KP!!!\riKJ!"L+B!!%J!"C@!33!8J!%!5$JK!%"m#!1Q6S!!)(`)!UD6iIrmNm(rq*!!!3!\r)P#(r`(bH)hKmIaYiJ"m!!*!!(J!!1rm!"+JI!!#`(J!%1rm!!M[r!!')(`!!Q"i\r!"M[r!!%iI`!!1*i!"iLq!!C)!!6PJ%%!&)JH!!Crr`)8L(i!"RaJ$R"m!!'89!!\r)2(`!'"!X!!!"3))!#$[r!!&rirYiJ!%!5$JK!%"m#!1QJq(rr)2"rrK1J!!JI!J\r#TVp"rqL3!!%!#*3KrU!i!`!!1d3!!$YP!!!li!!!1m!!!$aJCQam"!0i1'0N)dJ\r!"$Q!33!8I(dEH#JG!!"!JJ!S5!!$pB""!"4mIaYiIq!(08'#!!arirYi5!!!L$K\rJrd")!!#!Ik2VH%J!""@!33!8J*d!!(q%'K4)!!!S1'3!!$L"!$K,rrlGI'3EH)!\r"!$Km!0"!3))!$$[!!!&)!!!-I!6J3%'!rpKA`!Br3B)!)$KK!$iiQ`!!L+%!2ML\rP!!&)!!29J%%!&%J!!!Jli2r9Ik2VH%J!!pQ!33!8Iq2lH)!"!@Ji)3&JI!J$TVY\r"rqK1J!!JI!J#TVpKrqb3!!%!#*3Krf!lS`!!1f3!!$Z&!!")!!,GJ%%!&(aq'hJ\riI3!!2)"YB6LJ!!!i`3#%11%!J$L%Bh0)!!+KJ%%!&(ar'hKri!Fe3B)!$(rMqhK\r)!!#NU'%!K)#"!)!iSJ"%1-%!1%J!!U@!33!8I(mEH(rJ"c9"JJ!-Iq2lH%J!!(J\riB3!i1)!!!8J!!TQ!33!8I(dEH$[J!!"rS!Fd,!$rrd##!"")!!+9J%%!&(ar'hK\rri!Fe3))!-(qMkhK)!!+9J%%!&$KJ!)!iQ`!!1,`!!%[rrM&mIaYiIk2VH%J!!Zf\r!33!8Im2cH%J!!QQ!33!8Iq2lH)!"!+Ji)3#JI!J$TVYKrqa1J!!JI!J#TT2Krrb\r3!!%!#*3Kre"mRb0i1!!!!*!!(`!!U!-!!,!"!%k!!`!#N!!"!'Ji!`!'N!!"!%S\ri!!!!X!%!9$KK!$K)!!,*J%%!&(aJ"c9"JJ!)5!!!$)!"!'L3!"m!!)!"!,Ji)3#\r`I!J$TS2Krra1J!!JI!J#TVmKrq53!!%!#*3Kr@!l)`!!1d3!!$YP!!!lKJ!!1kF\r!!$[)!!!iH3!!1*S!!$Ll!!!ih!!!12d!!%J!!5@!33!8I(mEH(rJ"c3X!2r93B)\r!$(rMqhK)!!$dXc`!!$Kj!!!iQJ!!1+%"IN[rrK9mIaYiIq!(08'#!"JiIJ!!1*S\r!!$LK!Aj,rrd"I(mEH(rJ"c9"JJ!-Iq2lH%J!!,#)!3&r+!!!1N'#!#3iB3&q1*N\r!!%[rqfPmIaYi1'%"IML"!(j,rr[*5!!!)$KK!AiiJ3"qL+%"IMLP!!&)!!'0J%%\r!&$[J!!#SI!!!1*m!!$LK!(ii`3!i5!!!QB""!"4mIaYiIq!(0#`!rp9!JJ!S9f!\r'2d'#!$3iB3!i1)$rrcLp!!")!!&GJ%%!&(ar'hK)!!!BIq!(08##!"!iB3!i1*d\r!!%[rrNerirYiJ!%#U$JK!U"m#!1QZb(rj%k!!##"JJ!SN!""!"5!$!!!J%`!"(`\r*!kC1J!3JJB)!-*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"#3!%%!&)!-!!#!6!!\r%I!N$TNk!"##"JJ!XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!**!!33!8J!`!!)"\r-!!4m#31Q6S!%))'#!!L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!-N!""!"5!$!!\r!J%`!"(`*!kC1J!3JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!\r-!!#!6!!%I!N$TNk!"##"JJ!JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!&*!!33!\r8J!`!!)"-!!4m#31Q6S!%))'#!!53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!FN!"\r"!"5!$!!!J%`!"(`*!kC1J!3JJB)!0*!!33!8J!`!!)"-!!4m#31Q6S!%)!!l)83\r)-!p2F'9Z4'pM4QpXC'9bFk8!!!&b!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!\r%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(r\rmIr`rr$rq2rmrr`!q'!"QB&QB4J4"K%"N3"4IR($FEea[A#pF,eiJhcrr!$i!!"5\r%!!!!#J!!rj!'!!(rN!3!!!!#rrr-c*QC!!2-N!6rr`!%QCRrN!3!"CQ3"2rr!!C\rQN!6-c!!(!!"QN!3!#%53"J!*)T!'!!m!N!F2m!#3"3q&Ar!2m!!!$cL&Ar8rm!!\r2-cL&990I!!mc-cL&99m!$c-c-cL&A`!2-j!%2em!$crrrr0IE`!2re99rep[!!r\raGhG2Afm!$r*hGdpIE`!!mAGh6ep[!!$bGhG2Afq3!!$a)5(rAfqC!2rrrrP[EjN\r!N!ArqC!!!!!!YQpNC@3!!!!8Fh"PBfPKE#eYB@0c1N9NDA4[FR0[C'pN!!!!((0\r`C@0TB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef0[C(0`!!!!-h0`C@0TB@`YE@&MFcT\r&C'PdEh*c1Np`C@j%Ef-k6h"PEN4[Bb"6D'9XE#"3E(9R,8PZF`"[C'aL!!!!(R0\r`C@0TB@`YCAKdEMT2F'9Z4'pM)%aTBR*KFQPPFfpNFh3!!!!,1P0dBA4TEfjPFRN\r!!!!%j'!+!!"*6&K$%im!!%lk!!41G8j@rr4)jaJ`*'i!#!a5!!4QH&922bS!)#m\rU!!*#*dKZrrj)E[rkF!#S)c!I0J"R5LCU!"Si+`!%98mr+J!J,caYB@0c3LG)E[r\ri5'lrp(!!U#-`(cB!CLj96cmZrrJ[+J!#(c`!!8KZrrj)E[rk2`41ZJ-d-"mf!'B\r-0@lrrJ!J*@lrqJ!L08-!(NcI$"K1ALkI6R@%E@&TEJ!!!%j@rr3[#L4Z!!KJ!P+\r+$")!,@Ei3HS!!82Zrra`"+!Z98mr,J!-,blrr%)R5'lrpNKZrrK`!+JM-"mp32r\rd)#lrq#4I6Pj1GC4%DA**4%CbEfe6F'9MD@&X8'&dD!!!!%j@!!")ja!`*Li!##C\rZ!!`N3f!#8SS-%J!kC[JJ5T($)N0`!"!45-#3!)K5J"D!)%T$k`!"F!!3%k!Z60m\r-#%jH6R@68'&dD%CbEfe6F'9MD@&X8'&dD!!!6PB!!#m,,`SQEJ!-*'i!##D5@)S\rh8J!%9)T5LKG5!!C5LL"+3qX!"h!!%#X!"U)ZF!!3+`!'eF"`!"!V!!C)`)(m!!*\r)3&0!CJ*5LL"+*&mQAdjH6R@3!%GPG%jPH(4'6%4i4@jdFRN!!!"19[lk51FI-#`\rZ!!Ti!(B!@8m[2'CXC#-r,J!)U"mJAbC))!YQ&&92UDm`(cJ!C`3`"'"D-$cr3'"\r8@8m[#dkk!XBJ(bi!*&-J5Y((+JKJ'%KZr[S[#NkkrciN5,bZr[T36fB%GJ&J",A\r&CH4+!fF@3Hlr!#*Z!!j`!"!Zr`"53%M!SLjJ!RM9,`ZTSc!%60m-q%jH6R@A4f9\rd8'&dD%CbEfe'6%4i8Q9cEh9bBf8!!%j@rl4)ja`!GJ"96kQ8-"mk!&922bi!##m\rmE@&MFd)R5'lrrNKZrrT`!+JM-"mf!'F%-!0JE&922blrrLmZrrT"qJ#+5&")E[q\rdF!'U8M!I0J"R"$!$B%T96dKZrl3I2!!"F!fU8M!I1!"f!!a%rrpQ#&92UDm`(cB\r!5N0Q(Mm%UCJ[,J!1,bi!#Mmm!)"1Z[l!0J!r"+QD6qm!#Mm&UCJ`!dcI!$K1ANj\reRdGPG%C[E'4PFNCbEfe2F'9Z4'pM4QpXC'9bFdC-4(J!%!p2F'9Z4'pM4QpXC'9\rbFk919[q851F3-#4Z!!JQEJ!-GJ"#Nce5rkSYDJ!#rm3J5Pb),8MrTN*Zrl""l[q\r8F!QLB$B!C`3`!f!'*Ulra$!$60m-#%jH6R@44f9d4'PbC@0dEh*j4'Pb583!!%j\r@rET)jai`1Li!'#`Z!"3NEJ!1*Qi!#RB!98mr"5m'(bi!%Lm+,`Y`!+JM-"mf!!a\r$rp9R#$p$!RKJ!!$!0)9)E[m!,`Br"8kkrRif!%r[!!TR&%KZr`!["MmZ!!K1Z[f\ri0J"2l`!+5N0R#$p$!RKJ!!#+$#i!1[m"Cair"8KZr`"1Z[ab+!")E[i!5'lr!%k\rkr-42l`!1B"C"l[m!3qlq!(!!%#lr!&*!5-#J,RJ!98mr%Lm%5'lq!%KZrET`!DT\r5-"mf!!a$rp9Q(%SZ!"*R*P925'lpZMmmrrm[#h!&UP)`(cB!B""+3fB-,`Y)E[f\rk6VVqX&"22d-#H%cI$(K1AL"I6qm!%Nl3N8C*6N428%914%p$4Np-4%95!!!LAb"\rIS#8ZJ'S#3TG1d3!!#@C+EhNKF'9QCR"hF'-!!!!"YLb"T!#3$3-!!J#3"2q3"!#\r3"JGJ!!!(B!!!"f!!!!(`!!3%!2q3"!#3"eJ!!!"8!!!!&J!!#9!#!33!rj!%!*!\r1!@3!!!#!"!3%!*!)!3!!!$crN!3!N!6rN!3!N!F"!!!!$J!!!!%!!!#8!!!!R!!\r!!9`!!!!"!*!6$J#3#!)!!!S#!!!B!J!!)J)!!#d#!!!k!J!!4`)!!&3#!!"L!J!\r!E`)!!(m#!!#)!J!!N`)!!+)#!!#Y!!%!N!8$!*!%5Je#!%B!!!"$BA*LEfj-D@)\r!4f9d5'&ZC'aP8fPkC3"#E'pMDde[GQ8!9A0P8Q9c4QPXC3"(CA3a8Q9cEh9bBf8\r!4P00B@YP4P06F'9M!%0XEh0P8Q9c4QPXC3"#E'pMDde[GQ9%BA4K!%C6F%4TFN0\rbC@&dC3"5C@aPBA0P8Q9cEh9bBf8!8Q9c4A*bEh)!4QPZC%C[E'4PFJ"'8h"2F'9\rZ8Q9c4QPXC3"$GA*5CA0'D@aP!&"#4f9d3f&d5@jQEe0jEQ-!N"Gm#!+QNq(rr*2\r"rrL3!!%!#*3Krl"mIKYiU"i!!#`!!!4!JJ#8U(i!))#H!!)iS!!!1-%!4$MK!%"\r)!!ACJ%%!&(aJ"c9"JJ"FJ(i!'U[M!!5SIJ!J2)"YB6LJ!!!i`3!m11%!1$L%Bh0\r)!!@TJ%%!&(aJ"c9!JJ!mU'%!2)#H!!)iS!!"1-%!4$MK!%!j(`!!5!!%)@!!!!"\rmB!Fe3))!&+J"!%5`(J!JJ!%!3*!!(J!LX(i!(S!"!&Ji)3"3I!J$TS2Krrb$`Ir\ri6S!!)(`)!UD6iIrmN!!"!!L8)Iq`I*mMH%J!!!JiB`!"L!-!!#J!!#e!J[rd1'-\r!!6L"!%!iS!!%5!!''B""!"4rirYiJ)%!3$LJ!!!i`3!m11%!1%J!"2@!33!8J'%\r!1)!"!&Ji)3"3I!J$TS2Krra1J!!JI!J#TT!!!3!)P#(r`(b')hKmC4Yi5!!!#$L\rP!!')"3!!+!!!1N##rr4mJbK3L!-!!(aN!&!i!`!"Q!B!!$KP!!!iKJ!"L+B!!%J\r!"C@!33!8J!%!5$JK!%"m#!1Q6S!!)(`)!UD6iIrmNm(rq*!!!3!)P#(r`(bH)hK\rmIaYiJ"m!!*!!(J!!1rm!"+JI!!#`(J!%1rm!!M[r!!')(`!!Q"i!"M[r!!%iI`!\r!1*i!"iLq!!C)!!6PJ%%!&)JH!!Crr`)8L(i!"RaJ$R"m!!'89!!)2(`!'"!X!!!\r"3))!#$[r!!&rirYiJ!%!5$JK!%"m#!1QJq(rr)2"rrK1J!!JI!J#TVp"rqL3!!%\r!#*3KrU!i!`!!1d3!!$YP!!!li!!!1m!!!$aJCQam"!0i1'0N)dJ!"$Q!33!8I(d\rEH#JG!!"!JJ!S5!!$pB""!"4mIaYiIq!(08'#!!arirYi5!!!L$KJrd")!!#!Ik2\rVH%J!""@!33!8J*d!!(q%'K4)!!!S1'3!!$L"!$K,rrlGI'3EH)!"!$Km!0"!3))\r!$$[!!!&)!!!-I!6J3%'!rpKA`!Br3B)!)$KK!$iiQ`!!L+%!2MLP!!&)!!29J%%\r!&%J!!!Jli2r9Ik2VH%J!!pQ!33!8Iq2lH)!"!@Ji)3&JI!J$TVY"rqK1J!!JI!J\r#TVpKrqb3!!%!#*3Krf!lS`!!1f3!!$Z&!!")!!,GJ%%!&(aq'hJiI3!!2)"YB6L\rJ!!!i`3#%11%!J$L%Bh0)!!+KJ%%!&(ar'hKri!Fe3B)!$(rMqhK)!!#NU'%!K)#\r"!)!iSJ"%1-%!1%J!!U@!33!8I(mEH(rJ"c9"JJ!-Iq2lH%J!!(JiB3!i1)!!!8J\r!!TQ!33!8I(dEH$[J!!"rS!Fd,!$rrd##!"")!!+9J%%!&(ar'hKri!Fe3))!-(q\rMkhK)!!+9J%%!&$KJ!)!iQ`!!1,`!!%[rrM&mIaYiIk2VH%J!!Zf!33!8Im2cH%J\r!!QQ!33!8Iq2lH)!"!+Ji)3#JI!J$TVYKrqa1J!!JI!J#TT2Krrb3!!%!#*3Kre"\rmRb0i1!!!!*!!(`!!U!-!!,!"!%k!!`!#N!!"!'Ji!`!'N!!"!%Si!!!!X!%!9$K\rK!$K)!!,*J%%!&(aJ"c9"JJ!)5!!!$)!"!'L3!"m!!)!"!,Ji)3#`I!J$TS2Krra\r1J!!JI!J#TVmKrq53!!%!#*3Kr@!l)`!!1d3!!$YP!!!lKJ!!1kF!!$[)!!!iH3!\r!1*S!!$Ll!!!ih!!!12d!!%J!!5@!33!8I(mEH(rJ"c3X!2r93B)!$(rMqhK)!!$\rdXc`!!$Kj!!!iQJ!!1+%"IN[rrK9mIaYiIq!(08'#!"JiIJ!!1*S!!$LK!Aj,rrd\r"I(mEH(rJ"c9"JJ!-Iq2lH%J!!,#)!3&r+!!!1N'#!#3iB3&q1*N!!%[rqfPmIaY\ri1'%"IML"!(j,rr[*5!!!)$KK!AiiJ3"qL+%"IMLP!!&)!!'0J%%!&$[J!!#SI!!\r!1*m!!$LK!(ii`3!i5!!!QB""!"4mIaYiIq!(0#`!rp9!JJ!S9f!'2d'#!$3iB3!\ri1)$rrcLp!!")!!&GJ%%!&(ar'hK)!!!BIq!(08##!"!iB3!i1*d!!%[rrNerirY\riJ!%#U$JK!U"m#!1QZb(rj%k!!##"JJ!SN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)\r!-*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"#3!%%!&)!-!!#!6!!%I!N$TNk!"##\r"JJ!XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!**!!33!8J!`!!)"-!!4m#31Q6S!\r%))'#!!L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!-N!""!"5!$!!!J%`!"(`*!kC\r1J!3JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N\r$TNk!"##"JJ!JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!&*!!33!8J!`!!)"-!!4\rm#31Q6S!%))'#!!53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!FN!""!"5!$!!!J%`\r!"(`*!kC1J!3JJB)!0*!!33!8J!`!!)"-!!4m#31Q6S!%)!!l)83)-!p2F'9Z4'p\rM4QpXC'9bFk8!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N\r#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm\r!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!\r'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!\r!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!\r2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!\r%rcmr93#3"Ire8!!!!,C[C'9N!!!!&(0`C@0TB@`YE@&MFcT&C'PdEh*cEf4[C!!\r!!"acF'9MD@&X,@eKBh-k4@4TG'pbFcT2F'9Z4'pMEf4cF!!!!$0cF'9MD@&X,@e\rKBh-k4@4TG'pbFcT2F'9Z4'pM1Np`C@j%Ef-J8fKPE'`J8'aeCbe*ER-!Ef4XBJ!\r!!"jcF'9MD@&X,@9iG'ik6h"PEN4[Bb"-D@*bBA*TCA0[C(0d!!!!#cT6G'&dD@p\rZCA*j!!!!"14J#J!!58aB3a12!!"1qJ!%6R919[rd51FB-#4Z!!J-8J!%CRK96cm\rU!#![+J!#3LG)E[rq5'lrqR!!U#-`(cB!CdSQDJ!D1#X!"&922bS!)#mmE@&MFd)\rR5'lrq%KZrr4`!+JM-"mf!'BZ98mr,[ri,bS!!Kmm!!&)E[rq5'lrqMm%6VS$0$!\rI0J"Q$$9Zrri!)#9ZrrS!)M9$!"j-h``B6PiZRdjeK'eKD@i!!!"19[rd,`SNEJ!\r)B!*5LJ`5!#eQq%(U!!&$l[rmF!5J,P922bi!$#mZrra#*dKZrrC)E[riF!#S)c!\rI28$rp#!ZrrJNAdjH6R@84'Pb584'FQpY8h"PBfPKE&"KG'J!!!"19J!!51F3-#B\rZ!!JQEJ!-*%0J!P++$")!1QEi)%U4`b*$F!!3%8M!N!#)8S!@J#"+3qX!!A!!%"1\rJ,NcI$!K1ANjeNe"KG'K'FQpY8h"PBfPKE&"KG'J!!%j@!!![#bm+*Qi!$#4Z!!J\rQNPL+0e)!"&5+8SSA8J!'8SSJ5N2V!!G`!"!V!!DL,R!!%#X!"YA!F!!3+`!'5-#\r"r!!#5%"63'B#8SSJ5L4I*Pp1ANjeN!"(CA41CAKd4Na%H%9ZG(*j!!!!6PEqqNM\rR(c!X,J!+H!"f!&P2,caQE'3M2bi!#+JI)&mQ5#!,CK496kQ[-"mi!'F%-!4J@M!\rmrd"J9&P2,`Y1ZJ,')"mZ!#46)%V4abS)B"K)E[lk,`T1Z[mq*%LmV[lk8%pQ"(B\r"B!5ea@AN5J0R&N(Zr`!LEJ!1F!!3,[m!8N")`+)ZB!*ie5m,UD-`"%cI$2K1ANj\rePdGPG&"KG'K'FQpY4Na%H&*PFfpeFQ0P!!"19[qd51FF!(B!98qTP$!I1J"96cm\rZ!!J[2'eKBh0#*dKZrrj)E[rkF!#S)c!I0J"R"$!$B'a96cmZrri[,[rk3IS!LNK\r35'lrY(!"UP)`(cB!C`3`!f"+98p)E[qd(c`!!A!0UP)`(cJ!GJ!-42rrCJK96kQ\r[-"mf!%T$CKir"+QB,bi!$LmZ!!Sr2!#!6VVq`$B!2`5TQNr[!!Sr"DQB-!0-h`!\ri6Pj1GCp(CA4'EfaNCA*'FQpY6h"PEN4[BdC[E'4PFR0'6%4i!"!26h"PEN4[BdC\r[E'4PFR1P6PErP%MR%$!NEJ!)*Qi!$(B!3T-p8[qU,@S!![r%)%TFL#e)rkC#E[q\r`3HlrP(!*SQ!f!'F%-!0J"LDZrm3`!dcI$!K1ANjeN8GPG%4TFQ9MG'pbH84TFNP\r%!!"19[fk51FH-$SZ!"JX,J!8*'i!$LCZ!!Tf!&922`8["KmZ!")[#Lm,F!#S)c!\rI0J!-3rr9C`Jr3`*iB!!!`$5&5'lr!#m'2`91Z[jq0J"2l`!+Ca4)E[m!,`Br,J!\r)6VVpZ$B!6qm!#NT$C`Jr3`*iB!!!LJ`Z!$Vr!@FH2`9)E[m!6VVmFLJ!5'lq!%K\rZr`"1Z[c%6qm!$Q!@3Hlr!%2ZrJ"`!"!Zr`"53%M!S#ji!&922a)["%KZrJ")E[f\rkF!'U8M!I0J!-3rr9CKa+,J!5CbC96dKZrESr22rr,`Y`"DT5-"mf!'!35N0Q$#m\r,5'lpZNkkrV"36cp$!RK-h`ai6PiJAdr[!"*1d*&'58j%6e"&6N423dC26%4&8J!\r!)PmJAk!P,S"U!N+A6Y%!!!PQ5Qpj)A"PCQC`Gh"M!!!!!EBXJD3!N!d$!!)!N!6\rrN!3!N!B(B!!!"f!!!!GJ!!!"m!!%"!$rN!3!N!GB!!!!9!!!!"B!!!P3!J%%!2q\r3"!#3$J&N!!!!J!3%"!#3#!%!!!!mrj!%!*!%rj!%!*!(!3!!!!i!!!!"!!!!P!!\r!!*`!!!&F!!!!!3#3%`i!N!J#!!!+!J!!'!)!!#)#!!!Y!J!!1J)!!%F#!!"8!J!\r!BJ)!!'m#!!"r!J!!L!)!!*-#!!#L!J!!V3!"!*!&!`#3"%S03J"'!!!!3f&bBQp\rZ6'PL!%GPG%KKEQ4XC90THQ8!3Qa[BfY0EhCP!&9cC9*PFdCTE'8!4f9d-9*PFfp\reFQ0P!%C66@&VC8C68h"PB`"$E'pcC9*PFdCTE'8!3Qa[BfY0EhCP4'&dB3"'8h"\r%DA*$FQ9KG'8!8Q9XC@&cC9*PFfpeFQ0P!&*PFd9bFQpb!%CTEQ4'EfaNCA)!4P0\r`6h"PEP*PFdCTE'8!3h9b8Q9c4QPXC3"33NGPG%0KG%PZCQp6H@jM!*!AI!J#TT2\rKrrb6`IriN!!"!!L8)Iq`I(iEH+JH!!!X!!!%3))!P+Kq!##!RJ!#1+!!!$M"!%3\rii3"!5!!&fB""!"4mB!Fe3B)!A)"q!"UVi`!%U(i!)$b!E@%iS!!!1-%!2$MK!$J\riK'0c5!!&UB""!"4mB!Fe3))!2+KK!$b!RJ!#1+!!!6M"!%3ii3"!14m!!%J!"#&\rJ!!!!I'!(08##!"5S!3"%X"i!))!"!%#3!"i!)V"q!"k!!3"B1#%!8(`)!kD$iIr\rmJm(rq%k!!#"m#!+QNq(rr*!!!3!)P#(rX(bI)hK)!!!)1'-!!BJ$!!!S!!!Y3),\rrp$KM!!%iJ3"!1+!!"%J!"KQ!33!8Iq2lH)#"!%!iS!!!1-%!2$MK!$K)!!6eJ%%\r!&)"K!$L!!3"B1#%!8(`)!kD$iIrm6S!!)(`)!UD3!!%!#*3Krm"mKL0iI'8EH%J\r!!!JiT3!"L!8!!#J!!$T!J[rdI)-S8)J$!!"mC!"31!-!!CJ'!!!iC3!!1)B!!BL\rQ!!")!!@9J%%!&)!"!%Ji)3"!I!J$TNk!!#"m#!+QNq(rr*2"rrL3!!%!#*3Krm"\rmRL0iI(mEH)!I!!#3!"i!!$[r!!5S(`!!X"i!"$[r!!)lr`!"L"m!!*JH!!Blr`!\r"1(m!!$LH!!H)[J!'5!!%jB""!"5)(J!'Irm#&)Kq!!CmB!j`I!!"P&3!#$am!"J\r3,!!!!8##!!Jlr`!"Iq2lH)!"!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)(`)!UDr3Ir\rSN!!"!!L8)IkJ1!-!!$Y%!!!lC3!!1q!!!$[!!!!mB'CXI!3$H$KMC#0)!!3jJ%%\r!&(ap'hJS(3!!3))!+%J!!r@!33!8I(mEH(rJ"c9"JJ!-Iq2lH%J!!)JiB2p!5!!\r!J(qMkhK)!!39J%%!&)#G!!"rK"S85!!!+$KN!!!iJ3!i5rrqhAaN'hL!!3!iI!$\r33%##!!`l`!!"5!!!$(`%i%""J2rB9m!'2d'#!#!iB3!q1*X!!)LK!$iiT3!"5!!\r$eB""!"4)!!!)1q$reAqMkhK)!!2CJ%%!&(rMqhL!!3&S1#%"B(`)!kDl3IrS6S!\r!)(`)!UDrBIrXN!!"!!L8)IpJ1k-!!$YN!!!lK3!!5!!#hB""!"4mIKYi1(d!!$b\r!E@%iS!!!1-%!K$MK!)!iK'0c5!!#SB""!"4mIaYiIq!(08'#!!arirYi5!!!T+K\rK!)5!J3#!1+)!4$M"!$K)!!+PJ%%!&(ar'hKri!Fe3B)!$(rMqhK)!!"i1'%!1$L\r!!!&)!!+CJ%%!&(ap'hJli!!!Ik!(0#`!rrp!JJ!35!!#PB""!"4mIaYiIq!(08#\r#!$"rSqYi5!!#PB""!"3iB!#!1*X!!$Lm!!",rriaI(mEH(qMkhK)!!,YJ%%!&(r\r$mhK)!!*TJ%%!&(rMqhL!!3#S1#%!S(`)!kDlBIrX6S!!)(`)!UD6iIrmN!!"!!L\r8)Ip3I*mMH$J!!!#3!"m!!+J$!!#`!3"1J!-!!T!!!3"S1!-!"T!!!3"+1!!!!,!\r"!&3iB3!i5!!#bB""!"4mB!Fe3B)!#%J!!!b!!3"SN!!I!!#!!3#i1#%!X(`)!kD\r$iIrm6S!!)(`)!UDr)IrNN!!"!!L8)IeJ1b-!!$Y%!!!lC3!!1iB!!$ZR!!!lb!!\r!1(N!!$LD!!!iZ`!!10`!!$Mp!!")!!%PJ%%!&(ar'hKri!Fd,!$re8'#!!arirY\ri5!!!p,-m!!!iH3!!1*S!!$LK!Aj,rri9I(mEH(rJ"c9"JJ!B1(i!!$LD!!!iS3&\rq5rrp!Aar'hKri!Fe3B)!$(rMqhK)!!#`L!%"IbJ!!$T"JJ!N1'%"IMLC!!",rrY\rTI(mEH$KK!AiiJ3"q5rrlb8J!!#!iB3&q1)%!ISLK!AiiT3!"5!!"MB""!"3li!!\r!U(`!!$LI!!!iS3"q1-%!1%J!!*Q!33!8I(mEH(rJ"c3X!2r93))!+&GJ"Mp"JJ!\rd1'%!1$L!rrmi[3!!5!!"AB""!"4mIaYi5!!!'(rJ"c9!JJ!31'%!1$LG!!",rrj\r0Iq2lH)!"!UJi)3+JI!J$TVXKrq41J!!JJB)!+*!!33!8J!`!!)"-!!4m#31Q6S!\r%))'#!$#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!3N!""!"5!$!!!J%`!"(`*!kC\r1J!3JJB)!,*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#53!%%!&)!-!!#!6!!%I!N\r$TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!$*!!33!8J!`!!)"-!!4\rm#31Q6S!%))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5!$!!!J%`\r!"(`*!kC1J!3JJB)!)*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!#\r!6!!%I!N$TNk!"##"JJ!%N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!(*!!33!8J!`\r!!)"-!!4m#31Q6S!%))'#!$53!%%!&)!-!!#!6!!%I!N$TNk!"#!!1b&%#$!26h"\rPEN4[BdC[E'4PFR1P!!!"@J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%\r5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`\rIrJIr"rm!2KJ!CQ"CQ%B%3B4!C%!8Aaa4(&(FGe`eA"jH"&m(r`!q!!"9d!!!!!F\r!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%UT!'!!9%N!B!"L+3"J!2!*!($r!\r!N!828Lr`$r!!!!m98Lrb(r!!$a%98L)K,`!2%4%98L)[!!m4%4%98Lm!$a'3""m\r[!!mIrrm4,cm!$am!$a%[2`!2(`!2rbmr!!mr$rp2,cm!!2m26dm[2`!!$rrd$bm\rrB!!!$d!2,cpQ!!!2rrmr2fB!N!ArpQ!!!!H`B!S!!%P-@%-6M3!!6[S!"%je6PE\rqb%MR(#!NEJ!)1#S!)$9mrrm!)($r*8!!)Ja5!!4Q!!'D$+S!!!J!!""Y!!%S$+S\r!!!K3!""X!!%FHJ"96cm%,bS!!N)R5'lrNNKZrij`!+JM-"mf!'B%HJ&J(&922`3\r[+J!#(bS!"NKZrj*)E[q1F!#S)c!I0J"+3fB!!,C#,[mH3UlrS%(ZraiY52qQ2@l\rrN[qU,@lrM[r%2Acrrrq`3HlrP(!*SQ!f!'B!!)C96cm%,caPH(4Z3LG)E[mF5'l\rqb(!!U#-`(cB!CQC#V[qJ3Hlr(Le)rkBpE[mFrkSYE[l)rm4#E[q`3HlrP(!*SQ!\rf!'B10@lrUJ!J*@lra!!LB$"#V[p+3Hlr(Le)re!pE[mFre3YE[l)rfj"l[mqF!D\rLB$B!CJ`eE[mF!#!PE[pZ!#*+3fB!!)"+"@Ck3UlqhMeZrj,qiLeZrilqr%(ZrXb\rL#@"L98mr"#mma'e[C"mU!!C)E[q55'lrMR!!U#-`(cB!CcBe4!!J,c`MM`!+,ca\r69&)M,caMC'9f,caYEf4Y,caPH(4Z,caMG(*X,`T1ZJ!X0J"2l`!FB!`eE[q5!#!\rPE[q1!#)e3`!H60m%1%jH,Tp1GB4YB@PZ!!!!6PErh%MR'#!NEJ!)1#S!)$9mrrm\r!)($r*8!!)P922`3[,J!-(bS!"NKZrq*)E[rHF!#S)c!I0J"Q!!#b)#i!%,#Z!!a\rR(P922`3[,J!3(bS!"NKZrpa)E[rNF!#S)c!I0J"J$$eZrq,rh#eZrplrj%T$CRJ\rpE[rFrrSYE[rNrr`pEJ!Jrr3pEJ!LrrBGDJ!'rrJYEJ!8rqJYEJ!Brq`YEJ!Frr"\r96cmZrq)[,[rH3UFr2!!"5(S!8%KZrqK1ZJ*U-"mf!'BQ)#lrr,#Zrq4Q%(E90Ac\rrr`!JF2mP3!!LB!`eE[rk!#!PE[rm!#)`!dcI""K1ANjeM%ej4QPZC%C[E'4PFJ!\r!!%j@rT4)ja``+#i!%#4Z!!LAbhB!H[mJ4#!S!#5`NQB!!6)J4#!S!##`UJ!%CJ!\r"*%)RUCY96b"%2bJ!&L"%,bJ!C#"%,bJ!%Kmm!!'S'M!I1J!I2!!"UCY96kQ[-"m\rf!'B!!0i-UP088L-!#'Bd3LHTQeP2,ca69&)M2bS!$+JI)&mQ5"mm!!'TQb!,C`!\r!ZNKZrT3r+J!-2bS!$Nkk!qCJ0&P2,bS!#$mU!!bS(b"I*NK96kQ[-"mf!#!,Ca3\rJ8a!35)"53%M!)&0$l[k8SLjJ"(E1B'T"l[k8,8MrTMeU!",rULeU!"6ra%*Zrl"\r"l[q8F!QLB$B!CJieE[qU!")PE[r%!"4J1!a$riKR"Ja$rp9Q)%SU!""R'N(Zrj4\r`"U*J0J"Q$M9ZrkS!%L9Zrm3!&'!-0Acrr`!5F2mP3!!8)'i!$"#m!!%-4IrrC`3\rr"DQD60m-1%jH)&p2l`!-6Y#069P*9%95394&8&*23`!!6PB!!%MR'#!S,J!)*'i\r!$%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,Be3`!J*83!0%(U!!4`#D*J08!!X%TU!,"\rQ,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*!!""R%NSU!,*Q$#m+,bS!0%kkrjK36e*\r$5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZai!,"Q"%*U!,"6DJ#f60m%'%jH6R@95A4\rPFQ&dC84TFQ9MG'pbH8aPGQ9X!!"19[mm,`0+VJ!-C`!!MP922bi!'LmZ!"B[,J!\r55'lr3%KZrce1ZJ(5-"mf!'CZ$#i!!ImpCQ"96bmZ!")r,J!D5'lr2Nkk!@J`(cB\r!CNiYEJ!-rd4"l[p%3HJ!F#e)reSpE[mqrej#,[qd3Qlrp%)ZrrBpEJ!3rrK#E[r\rk,@i!#2rm5'lr4#mZrd"1Z[l#0Llrp&"2B!CfL'!#GXir3`$N*Kp1AL"I6qm!&%l\r3N!"*9%95394&4%P548086e*C!!!!6PEr!%MR%$!QEJ!1*'i!##!+CcieEJ!-!"B\rJ#fB+3US!%N*U!"aJ(L",3qlr!(!!%"053%M!SLj"l[m!*8J!%M9mrrm!(#"+SJF\rf!%+U!"*J!RE12d-"(NcI$!K1AL"I6qm!#Nl3NdG&9&C26&9048P14Np16dj"688\r!!%j@rq")ja!`*Qi!$#4Z!!JJ#fF%5K0Q&%)Zrq""l[rJ*8J!%M9mrrm!('!)*8X\r!%N*U!"`eEJ!8!"BPEJ!3!$!J5R!*SQ!f!%+U!")r3`"#60m-#%jH)&p2l`!16Y#\r3!%G&9%0"9%P14Np16dj"688!!!"19[q',`096bmZ!!ir,J!-5'lrKNkkr[``(cB\r!CJJJEJ!)-+lrR$p$!*!!*Kp1AL"I6qm!#Nl3N!"%494&8Ne*6N9@8N9'6P90!!!\r!6PErP%MR%$!QEJ!-*'i!#&922bi!'#mZ!"3[,J!35'lrP%kkrb!`(cB!CKS3,[q\rb!N!!%&E!4!!8J'F'*Ulra'!%*Ulrq$p$!**-h``)6PiJAdr[!"*1d)j(494%59*\r&3e428PP*4!!!!%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a#%5!ICb)J3#"3-"Jb,J!\r)CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!!!!cT5Qpj)A"PCQC`Gh"\rM!!!!!EBXX0S!N!d$!!)!N!6rN!3!N!B,"!!!#`3!!!X%!!!"d!!%"!$rN!3!N!G\r)!!!!4!!!!!N!!!cJ!J%%!2q3"!#3$J&)!!!!J!3%"!#3#!%!!!!drj!%!*!%rj!\r%!*!(!3!!!!`!!!!"!!!!M!!!!*3!!!&!!!!!!3#3%``!N!J#!!!+!J!!'J)!!#S\r#!!!h!J!!4!)!!%m#!!"F!J!!DJ)!!(J#!!#"!J!!M!)!!*d!!3#3"3-!N!4+#d)\r!4J%!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*$FQ9KG'96H@jM!%G\rPG$&5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"$E'pcC9*PFdCTE'8\r!3Qa[BfY0EhCP4'&dB3"33NK%C@aPG'96H@jM!&*PFd9bFQpb!%CTEQ4'EfaNCA)\r!8%*(CA4$BA4*EQC[8hPZB`")6h"PEP*PFdCTE'8!N"0m#!+QNq(rr*2"rrL6SIr\rdNi(rm*!!!3!)P#(qF(am'hLVh!!J1!$rrl!F!#!i!2rrN!!F!#+S(!!!,!!!"%#\r#!NL!(!!3,!!)!%'!!E5!(!!3,!!)8%#!!DJlS!!!Im2cH)#F!!)iS!!!1-%"F$M\rK!@a)!!PGJ%%!&(ar'hKri!Fe3))!$$ZJ!!&)!!!NIm2cH)#F!!+)[!!'1-%"F$M\rK!@a)!!NYJ%%!&(ar'hKri!Fe3))"&$J!!!#B!3$H1!!!!*!!!3%-1!%!hT!!!3%\r5U!%"F,!"!4D!!3&XN!!"!6!i!2rrX!%"($KK!3")!!MpJ%%!&(ar'hKri!Fe3))\r!c$Kq!!!mJ'9i1+!!!$M"!0`ii3$B1)4dENJ!#,Q!33!8I(mEH(rJ"c9!JJ#J1!!\r!!*!!!3%-1!%!hT!!!3%5U!%!h,!"!4D!!3$BN!!"!6!i!!!!X!%"($KK!3")!!L\r4J%%!&(ar'hKri!Fe3))!'+J"!4D`(!!JJ!%"-*!!(!!L5!!!6$J!!!#3!!%!P$J\r"!0k3!!%!QUJ"!0b`!3#HJ!%!f*!!!3#i1'%!L%J!#&f!33!8I(mEH(rJ"c9!JJ!\r8U!%!h,!F!##!!3#iN!!F!#*ri!Fe3))!Z&HJ"Mp!JJ#`1!!!!*!!!3"+U!%"F,!\r"!%k!!3&XN!!"!'JiB3!i5!!)*B""!"4)!!#)1(i!!$b!a'f)[!!'1-%"F$MK!@`\riK'pN5!!(ZB""!"4mIaYiIq!(08'#!%bch!!J1(`!!$b!Bh3mS'9i2-"YEccJBf3\rp!&0815!MMcP!!!SiK(*X1+9dEMM'C'dijf9f13K5)dJ!!%9J!!!!I(mEH%J!!"5\rS!3&`X"`!))!"!@b3!"`!)V2m!"k!!3'B1#%"N!"m#!1QJq(rr)2"rrL$SIrdJi(\rrm%k!!#"m#!+Q[Z(rh*!!!3!)P#(rF$Y$!!!kj!!!1`8!!$YQ!!!lK`!!1kJ!!$[\r*!!!lkJ!!UcS!)$J!rrq`'J!J1!$rrj!!'J!L1(N!!$LA!!#)ZJ!'1-%!A$MK!&K\r)!!E4J%%!&(aJ"c9!JJ$3I"Li3%'#!#3iH3!!1*J!!)Lk!!Bi`3"811%!8%J!"U@\r!33!85!!!&+J"!&b`!3"8J!%!@*!!!3"3I'!(08##!*!!U!%!9,!"!%U!!3"3N!!\r"!%bc`3"%Xq%!4SJD!!DB!3")Nf%!1*1"!$b6S3"!U'%!A)#"!&JiS!!!1-!!!B$\rL!$!j!3!i5!!$L@!!!!"mB!Fe3))!2)#"!%b!!3"3I!3!!%##!"`iB2r91!$rrl!\rD!#!i!2rrN!!D!#*)!!!8U!%!5V!D!##!!3"-N!!D!#+!!3#B1#%!N!"m#!1QZZ(\rrh%k!!#"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(q3$Z$!!!lT!!!I,mVH)"\rm!#5!(`!!I!-!3%##!FL!I!!JJ"m!"(`$!%"!JJ'i1'!!!%J!"I@!33!8U(`!&S#\rF!'5![!!51-!!!8J!"I@!33!8I(iEH$KJ!!&)!!A0J%%!&%J!"I@!33!8I'!(08#\r#!95!I`!)2!1XV#J!8L0!JJ"81'!!!%J!"D'!33!82'"69+LI!!`iBe)M5!!&eB"\r"!"4mI"Yi1'!!!8J!"Af!33!8+"`!!%'#!43iB3#NU*m!$+Lr!!j)!!A"J%%!&%J\r!!&#!I`!)U*m!$%J!"C@!33!8I(`EH%J!"A'!33!8+"`!!%'#!0#!I!!!1)%!T)#\rm!!#)"3!!I!8(G$LP!!&)!!@4J%%!&%J!!!K)!!#S1!%!T*!!!3"+U"m!%V!"!%k\r!(`!8N!!"!'Ji!!!!X!%!9$KK!$K)!!5GJ%%!&(aJ"c9!JJ!BU!%!6V!I!"+!!3"\rSN!!I!"4)!!"JI'!(0#`!riK"JJ!3I'!(0#`!rp9!JJ!iL"m!%#J!!!""JJ!X1'%\r!1%J!"'Q!33!8I'!(08##!"LS!3"1X"m!%S!"!'L3!"m!&%J!!"3i!2rrX"m!%MJ\r!rrq3!"m!&$J!!!'B(3!!Im!(0#`!rrp"JJ!3Im2cH%J!"0f!33!8J!%"b$JK!F"\rm#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq\r`1k-!!$[N!!#J(`#d+!!!!%'#!"5JI`#fS"m!Y(`$!%"!J!#m1m!!!D"r!,Bi!`!\r"X"m!YV2I!##6[`!d1(m!"%J!!i@!33!8X(m!X+JI!,!X!!!!3))!3$Kr!!3iR`#\rbJ,m!Z)'I!!")!!4PJ%%!&)JI!#*8!!Eh3B)!()JI!,)S!!!!3))!%)"r!$4rj2Y\ri5rrr@6[H!!'S(`#`,!!!!%##!"#)(`#b+!!!!%'#riLS(`#`,!$re8'#!"#S(`#\r`,!$XH%##!!`i!!!!X"m!X+"r!,Bi!rrrX"m!YS!"!&Ji)3"3I!J$TS2Krrb$`Ir\riJk(rp%k!!#"m#!+Q[f(rl*!!!3!)P#(qi$YM!!!lK3!!1kB!!$[(!!!lk!!!+"i\r!!%'#!+3iH`!!1,`!!$M"!$`ii3!i5!!"q@!!!!"mB!Fe3))!L)J"!$JS!!!"3))\r!F$Km!!!iQ`!!1+%!1NJ!!C&J!!!!I'!(08##!'#6`3"!1!%!X*!!!3"@U!%!1V!\r"!&Si!!!!Q!%!X$J!!!#`!3$`1!!!!*J"!2+cS3$d1!!!!,!"!2D6i3$iJ'%!2$L\r"!%",rrijU'%!m%J!!"!iB2q)5!!!#$KJrmk!!3%S1#%")(`)!kDlBIrX6S!!)(`\r)!UD6iIrmN!!"!!L8)Il!I,mVH#JI!!""JJ"JX*m!&LJ$!!"!JJ!B1!!!!*!!(`!\r51!!!!,!I!"a)!!!S1)%!1)LM!!!iT3!"5!!#BB""!"3i!3!iN!!I!")i!2rrX"m\r!((rMqhK)!!*eJ%%!&$J!!!#3!"m!%NJ!!!JiB2r1J!%"5$JK!8"m#!1QJq(rr%k\r!!#"m#!+QNq(rr*!!!3!)P#(rS(cI-hJS"3!!3B)!%)J&!!!S!!!!3))!)$J!!!#\rB!3!i1!%!1*!!(`!51!$rrl!I!"a)!!!3N!#r!")i!!!!X"m!(,"r!"D3!*m!-(r\rMqhK)!!$pJ%%!&$J!!!#3!"m!%S!"!'Ji)3"JI!J$TS2Krra1J!!JI!J#TT2Krrb\r3!!%!#*3Krd"m[bYi1+%!1%[rrYPmB!Fe3))!$+J"!%k`(`!!J!%!b$JK!-"m#!1\rQJq(rr%k!!#"m#!+QNq(rr*2"rrL3!!%!#*3Kre!laJ!!1qF!!$M"!$K,rrmKI'!\r(08##!%#)!3"@9!3'pMJ!!!"mK!"3-!6rrh`!)4#B(`!!L"m!!#J!!!""JJ!3J!%\r!D*!!(J!!5!!!$)!"!*b3!"i!!)!"!,Ji)3#`I!J$TS2Krrb$`Iri6S!!))'#!#5\r3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!SN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)\r!"*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"b3!%%!&)!-!!#!6!!%I!N$TNk!"##\r"JJ!3N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!,*!!33!8J!`!!)"-!!4m#31Q6S!\r%))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC\r1J!3JJB)!$*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N\r$TNk!"##"JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*!!33!8J!`!!)"-!!4\rm#31Q6S!%))!-!!#3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!dc)6`+)J2X"!!!!9)\r!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!\r&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'\r%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6\rrr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44\r#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm\r!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!\r(V'!+!!"*6&K$%j-!!%lk!!41G8j@rXK)ja`J*'i!#$JU!#!eI2rr!#"`rb9!!#)\r-8J!%CJ!"PJbU!!!)!!!3E3!"*JbU!!!)8!!3E!!"'RS!98mr"#mU!!*#*dKZrj*\r)E[q1F!#S)c!I0J"Q"(S"B"a96cm%,bS!!KmU!!C)E[q55'lrMR!!U#-`(cB!5N0\rQ!!#f3Llr(N+Zrk""l[mH,8MrTMeZrj,rULeZrilra$emrrrrX%(Zrj4`#D*J0J"\rQ!!#'98mr"#mmCAKdEN)R5'lr(%KZrXK`!+JM-"mf!'CQ3UlrS%(ZraiY52qQ2@l\rr(2qU,@lqb2r%3QlrX%(Zrj4`#D*J0J"Q$M9ZrkS!)#9Zrm3!)Q!`3Ulr5N(Zrai\rY52p32@lr(2p8,@lqb2pZ3Hlr2R!'SQ!f!'B-0@lr(!!J*@lrEJ!L5N0QI%S&CRK\r#V[lH2@lrN[lL,@lrM[lm3Hlqc+)*B'"96cm%,bS!!KmU!!C)E[q55'lrMR!!U#-\r`(cB!CcBe4!!J,ccJ!3!!,ca69&)J,ca38N95,cafCh*N,caPH(4Z,caPH(4Z,`T\r1ZJ!X0J"2l`!FB!`eE[q5!#!PE[q1!#)e3`!H60m%1%jH,Tp1GB4YB@PZ!!!!6PE\rrh%MR'#!NEJ!)1#S!)$9mrrm!)($r*8!!)P922`3[,J!-(bS!"NKZrq*)E[rHF!#\rS)c!I0J"Q!!#b)#i!%,#Z!!aR(P922`3[,J!3(bS!"NKZrpa)E[rNF!#S)c!I0J"\rJ$$eZrq,rh#eZrplrj%T$CRJpE[rFrrSYE[rNrr`pEJ!Jrr3pEJ!LrrBGDJ!'rrJ\rYEJ!8rqJYEJ!Brq`YEJ!Frr"96cmZrq)[,[rH3UFr2!!"5(S!8%KZrqK1ZJ*U-"m\rf!'BQ)#lrr,#Zrq4Q%(E90Acrr`!JF2mP3!!LB!`eE[rk!#!PE[rm!#)`!dcI""K\r1ANjeM%ej4QPZC%C[E'4PFJ!!!%j@rT4)ja``+#i!%#4Z!!LAbhB!H[mJ4#!S!#5\r`NQB!!6)J4#!S!##`UJ!%CJ!"*%)RUCY96b"%2bJ!&L"%,bJ!C#"%,bJ!%Kmm!!'\rS'M!I1J!I2!!"UCY96kQ[-"mf!'B!!0i-UP088L-!#'Bd3LHTQeP2,ca69&)M2bS\r!$+JI)&mQ5"mm!!'TQb!,C`!!ZNKZrT3r+J!-2bS!$Nkk!qCJ0&P2,bS!#$mU!!b\rS(b"I*NK96kQ[-"mf!#!,Ca3J8a!35)"53%M!)&0$l[k8SLjJ"(E1B'T"l[k8,8M\rrTMeU!",rULeU!"6ra%*Zrl""l[q8F!QLB$B!CJieE[qU!")PE[r%!"4J1!a$riK\rR"Ja$rp9Q)%SU!""R'N(Zrj4`"U*J0J"Q$M9ZrkS!%L9Zrm3!&'!-0Acrr`!5F2m\rP3!!8)'i!$"#m!!%-4IrrC`3r"DQD60m-1%jH)&p2l`!-6Y#069P*9%95394&8&*\r23`!!6PB!!%MR'#!S,J!)*'i!$%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,Be3`!J*83\r!0%(U!!4`#D*J08!!X%TU!,"Q,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*!!""R%NS\rU!,*Q$#m+,bS!0%kkrjK36e*$5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZai!,"Q"%*\rU!,"6DJ#f60m%'%jH6R@95A4PFQ&dC84TFQ9MG'pbH8aPGQ9X!!"19[mm,`0+VJ!\r-C`!!MP922bi!'LmZ!"B[,J!55'lr3%KZrce1ZJ(5-"mf!'CZ$#i!!ImpCQ"96bm\rZ!")r,J!D5'lr2Nkk!@J`(cB!CNiYEJ!-rd4"l[p%3HJ!F#e)reSpE[mqrej#,[q\rd3Qlrp%)ZrrBpEJ!3rrK#E[rk,@i!#2rm5'lr4#mZrd"1Z[l#0Llrp&"2B!CfL'!\r#GXir3`$N*Kp1AL"I6qm!&%l3N!"*9%95394&4%P548086e*C!!!!6PEr!%MR%$!\rQEJ!1*'i!##!+CcieEJ!-!"BJ#fB+3US!%N*U!"aJ(L",3qlr!(!!%"053%M!SLj\r"l[m!*8J!%M9mrrm!(#"+SJFf!%+U!"*J!RE12d-"(NcI$!K1AL"I6qm!#Nl3NdG\r&9&C26&9048P14Np16dj"688!!%j@rq")ja!`*Qi!$#4Z!!JJ#fF%5K0Q&%)Zrq"\r"l[rJ*8J!%M9mrrm!('!)*8X!%N*U!"`eEJ!8!"BPEJ!3!$!J5R!*SQ!f!%+U!")\rr3`"#60m-#%jH)&p2l`!16Y#3!%G&9%0"9%P14Np16dj"688!!!"19[q',`096bm\rZ!!ir,J!-5'lrKNkkr[``(cB!CJJJEJ!)-+lrR$p$!*!!*Kp1AL"I6qm!#Nl3N!"\r%494&8Ne*6N9@8N9'6P90!!!!6PErP%MR%$!QEJ!-*'i!#&922bi!'#mZ!"3[,J!\r35'lrP%kkrb!`(cB!CKS3,[qb!N!!%&E!4!!8J'F'*Ulra'!%*Ulrq$p$!**-h``\r)6PiJAdr[!"*1d)j(494%59*&3e428PP*4!!!!%j@!!"C6bmm8e45)cmZ!!UTS#*\rZ!!a#%5!ICb)J3#"3-"Jb,J!)CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#\r26Y!!!!cC5Qpj)A"PCQC`Gh"M!!!!!EBXXJX!N!d$!!)!N!6rN!3!N!B,!!!!#`!\r!!!X!!!!"d!!%"!$rN!3!N!G)!!!!4!!!!!N!!!c3!J%%!2q3"!#3$J&)!!!!J!3\r%"!#3#!%!!!!drj!%!*!%rj!%!*!(!3!!!!`!!!!"!!!!M!!!!*3!!!&!!!!!!3#\r3%``!N!J#!!!+!J!!'J)!!#S#!!!h!J!!4!)!!%m#!!"F!J!!DJ)!!(J#!!#"!J!\r!M!)!!*d!!3#3"3-!N!4+#d)!4J%!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-\r!8%*%DA*$FQ9KG'96H@jM!%GPG$&5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9\rc6'pKC!"$E'pcC9*PFdCTE'8!3Qa[BfY0EhCP4'&dB3"33NK%C@aPG'96H@jM!&*\rPFd9bFQpb!%CTEQ4'EfaNCA)!8%*(CA4$BA4*EQC[8hPZB`")6h"PEP*PFdCTE'8\r!N"0m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(qF(am'hLVh!!J1!$rrl!F!#!\ri!2rrN!!F!#+S(!!!,!!!"%##!N5!(!!3,!!)!%'!!E5!(!!3,!!)8%#!!DJlS!!\r!Im2cH)#F!!)iS!!!1-%"F$MK!@a)!!PCJ%%!&(ar'hKri!Fe3))!$$ZJ!!&)!!!\rNIm2cH)#F!!+)[!!'1-%"F$MK!@a)!!NTJ%%!&(ar'hKri!Fe3))"&$J!!!#B!3$\rH1!!!!*!!!3%-1!%!hT!!!3%5U!%"F,!"!4D!!3&XN!!"!6!i!2rrX!%"($KK!3"\r)!!MjJ%%!&(ar'hKri!Fe3))!c$Kq!!!mJ'9i1+!!!$M"!0`ii3$B1)4dENJ!#,@\r!33!8I(mEH(rJ"c9!JJ#J1!!!!*!!!3%-1!%!hT!!!3%5U!%!h,!"!4D!!3$BN!!\r"!6!i!!!!X!%"($KK!3")!!L0J%%!&(ar'hKri!Fe3))!'+J"!4D`(!!JJ!%"-*!\r!(!!L5!!!6$J!!!#3!!%!P$J"!0k3!!%!QUJ"!0b`!3#HJ!%!f*!!!3#i1'%!L%J\r!#&Q!33!8I(mEH(rJ"c9!JJ!8U!%!h,!F!##!!3#iN!!F!#*ri!Fe3))!Y&HJ"Mp\r!JJ#X1!!!!*!!!3"+U!%"F,!"!%k!!3&XN!!"!'JiB3!i5!!))B""!"4)!!#%Im2\rcH)#F!!+)[!!'1-%"F$MK!@a)!!HjJ%%!&(ar'hKri!Fe3B)!6,2F!#!iI!!!2)"\rPH$bJCAJm`(CR21"38Md!8e3j)1!"18!!!$L%G'iiTA4Z1-CbC$MR49)j#&)J5!!\r!4@!!!!"mIaYi5!!!&+J"!A#`(!!JJ!%"E*!!(!!LXr`!(S!"!CJi)3'3!(`)!kD\r$iIrmJm(rq)1Krr5$JIr`6S!!)(`)!UDqiIrFN!!"!!L8)Ip`1d-!!$VN!!!l"3!\r!1fB!!$Z(!!!lU!!!1mN!!$[U!!#V1J!J1!$rrl!D!#!i!2rrN!!D!#)iH3!!1*F\r!!)Lk!!Bi`3"F11%!@%J!"Y'!33!8I'!(08##!0"m',K!3B)!*$Kj!!!iQ!!!L,S\r!"MM"!&3ii3"35!!'TB""!"4)!!!8U!%!A,!"!&5!!3"BN!!"!&"mB!Fe3))!N!#\rS!3"8X!%!5S!"!&#3!!%!6,2"!%5ci3"'L"S!"TJ"!%L6B3!iNi%!2*1K!%#SB3"\rFJ)%!@$LJ!!!i`!!"J1)!-$N"!$K)!!1*B!!!!(aJ"c9!JJ!mJ)%!6)!"!&"m"!!\r!3))!($KJrp8i!2rrX"S!)$J!rrq3!"S!)NJ!!"5S!3"+X"S!))!"!%b3!"S!)S!\r"!*Ji)3#3!(`)!kDkiIrF6S!!)(`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Ij\r!1i-!!$ZN!!"m[bYiJ(`!*)!I!!"m!`"!3))"b)"m!##!(`!%I!-!3%##!EJiB!!\r!5!!&pB""!"5SI!!@J*`!C)#m!")i`!!"5!!&pB""!"4mIKYi1'!!!8J!"Ff!33!\r85!!&pB""!"4mB!Fe3))"9)"r!!Jm!kbX+!"5)d##!&3iB!!!5!!&SB""!"3mB&0\r8U*m!$$KM8L0)!!A9J%%!&(am'hJiB!!"5!!&IB""!"3S(!!!3B)"&$KK!+5SR`!\r-U,m!$NJ!"F'!33!85!!!8)"r!!LSR`!-5!!&PB""!"4mI"Yi5!!&FB""!"3S(!!\r!3B)!d)"m!!!iJ3#NJ,`!!)J&!!"m"3Gd1+8!!8J!"C'!33!85!!!#%J!!+Ji!3#\rNN!!"!%US(`!5X!%!6S!I!"53!!%!D$J!!!#`!3"81'%!1%J!"*f!33!8I'!(08#\r#!"LS!3"1X"m!%S!"!'L3!"m!&%J!!'"mB!Fd,!$rL%'#!""mB!Fd,!$re8##!$L\r)(`!3+!!!!%'#!#`iB3!i5!!%DB""!"4mB!Fe3))!'+J"!%k`(`!5J!%!D*!!(`!\r85!!!&$J!rrq`(`!51!$rrj!!(`!81!!!!CJG!!"r`!Fd,!$rrd'#!""r`r0i5!!\r%hB""!"5!!3()1#%"`(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)(`)!UD6iIrmNm(\rrq*1Krr53!!%!#*3Krl!lS`!!1q3!!+!I!,3S!!!!3B)!&+"r!,DJ(`#dI!-!3%#\r!!,`l`!!"S(m!YMJ$!!'`(`#fXpm!)*1r!$3iI`!%5!!$KB""!"5`I`#`U"m!X#`\r!!!"!JJ"!1(m!"$LI!,+![`#iJCm!!%J!"'@!33!8L"m!)P3!"[G"JJ!FL"m!XLJ\r!!!"!JJ!3J(m!0(rNqhK,rrpC1pi!!DJI!,!X!!!!3))!%)JI!,)S!!!!3B,rL+J\rI!,!X!2r93B)!%+JI!,!X!1ai3))!$$J!!!#`(`#`S(m!YMJ$rrq`(`#fJ!%!@$J\rK!&"m#!1QJq(rr)2"rrL$SIrd6S!!)(`)!UDrBIrXN!!"!!L8)IlJ1f-!!$Z&!!!\rlTJ!!1mF!!$[S!!!S(J!!3B)!T$Kl!!!i[!!!1-%!2$MK!$K)!!(jB!!!!(aJ"c9\r!JJ#)L!%!1#J!!!&!JJ"`1(`!!$LE!!!iS3!k5!!"N@!!!!"mB!Fe3))!B*2"!%!\ri!3#`N!!"!&DS!3!kX!%!@MJ!!!#B!3#`1!!!!,!"!2!i!!!!Q!%!mV1K!23i!!!\r!X!%!pT2K!2L!B3!m1)%!3%[rrMQSB3$`5!!!%$KJriK)!!!)1'$rcS!"!5Ji)3%\rJI!J$TVYKrqa1J!!JI!J#TT2Krrb3!!%!#*3KrX"m[bYi+"m!!%'#!'#`R`!@+!-\r!!%##!"Ji!!!!N!!I!")i!!!!X"m!(%J!!#JiJ3!iL+-!!$LP!!&)!!*KJ%%!&$J\r"!$L3!"m!%MJ!rrq`(`!FIq2lH%J!!R@!33!81!!!!*!!(`!55!!!#$KJrmk!!3&\r)1#%"3(`)!kD$iIrm6S!!)(`)!UD6iIrmN!!"!!L8)IqJI0mcH#J&!!""JJ!3L!8\r!!#J!!!"!JJ!J1!!!!*J"!$Ji!3!iN!!I!")i!2rrX"m!(%J!!"#3!,m!%MJ!!!#\r`(`!FX(m!&T!!R`!`Iq2lH%J!!2f!33!81!!!!*!!(`!5J!%!D$JK!'"m#!1QJq(\rrr%k!!#"m#!+QNq(rr*!!!3!)P#(r3(br+hJiS3!i5rrqfAaJ"c9!JJ!-U!%!6V!\rI!!#!!3$)1#%!`(`)!kD$iIrm6S!!)(`)!UD6iIrmNm(rq*!!!3!)P#(r8$['!!!\rlj`!!1-%!1%[rrb&mB!Fe3))!3)J"!&C8"!Ef1!!!!(b%!&!`"2rrI!!K%*JI!!#\r)(`!!+!!!!%'#!"#!!3"SN!!H!!")!!!-J!%!R*!!(J!!J!%!Z$JK!,"m#!1QJq(\rrr)2"rrK1J!!JJB)!**!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#L3!%%!&)!-!!#\r!6!!%I!N$TNk!"##"JJ!%N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!(*!!33!8J!`\r!!)"-!!4m#31Q6S!%))'#!"#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!XN!""!"5\r!$!!!J%`!"(`*!kC1J!3JJB)!)*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!L3!%%\r!&)!-!!#!6!!%I!N$TNk!"##"JJ!-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!'*!\r!33!8J!`!!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!\r!N!""!"5!$!!!J%`!"(`*!kC1J!3JJ!`!!*!!33!8I!N$TS"-!!41J!3J6S!!)!!\rc)6`+)J2S"!!!!@S!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)\r!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm(riIrar\rr(riB!'CJ@CK'"%'%3'4!&&qF89a4h(*F09`5AK9I%(mIrJ!!4*F!!!!*!!$rN!B\r!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"$-c!!#CQ3!&lT!'!!DlN!B!"d53"J!))T!\r'!!m!N!F2m!#3"3pb,r!2m!!!$aGb,r)Im!!2%4Gb)L%[!!m4%4Gb)Lm!$a%4%4G\rb,`!2%C!%(bm!$arrrr%I2`!2(e9IAamr!!mI99rr(cm!$cp94@mI2`!!re48Eam\rr!!!28N9[(cq!!!p8*'m[2iJ!$e99EcmrL!!2rj!&J!!!!*!!B!S!!%P-@%-6M!!\r!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32rk$&)!"'C198mr+J!J,bS!!Km\rU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cmU!#![2'eKBh0#*dKZrrj)E[rkF!#S)c!\rI0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9QCR"\rhF'-!!!!"YLbi&J#3$3-!!J#3"2q3"!#3"l3!!!#d!!!!Y!!!!4!!"!3!rj!%!*!\r(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!\r%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!\r%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaY\ri1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&bSI`!JJ*m!!SLr!!Bi`3!m11%\r!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"YB6LJ!!!i`3!m11%!1$L%Bh0)!!!aJ%%\r!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!\r!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`!!!'+!*!%J!J!N!83!"!!N!P)!!!!5!#\r3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(r\rmIrarr(rmIrarr$rq(rm2I`Bq'!"QB&QB4J4"K%"N4G41[&8FDla1r&YF)0i4R`Y\rr"Mi!!#2a!!!!$3!!rj!'!!(rN!6-c!!#rj!%!!!!!rrrc-bCQ3!%rrpQCXc-!!A\r-N!6rr`!'c-bCQ@CQ!!HCN!6rr`!)CT!%c-`!#6-c!!#CQ3!+lT!'!!Y%N!B!$#+\r3"J!2!*!($r!!N!82Yhr`$r!!!!pEYhrhAr!!$e9EYhGeI`!2999EYhGr!!p9999\rEYhm!$e9IArPrI`!29IrdNCq2!!pIVbm32im!$rVbrj1IM`!2U[rfQCq2!!q[q[p\r[Iim!!2UUU[prMm!!$kU[Yhq2c!!!q[J2[ir-!!!2J!$rrm!!!!#3!'!+!!"*6&K\r$%j3!!%lk!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q6P922bS!)#m\rU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'FH98mr+J!J,cacG(*d3LG)E[rq5'lrqR!\r!U#-`(cB!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3(45Qpj)A"\rPCQC`Gh"M!!!!!EBXZ!J!N!d$!!)!N!6rN!3!N!Hd!!!!Y!!!!,3!!!%3!!3%!2q\r3"!#3"a!!!!!-!!!!!3!!!G!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#\r3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!\r&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq\r`I(mEH$J!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"FU(m!))#I!!+)[`!'1-%\r!2$MK!$K)!!"CJ%%!&(aJ"c9"JJ!NU(m!)$b!Fh3iS!!!1-%!2$MK!$JiK(*d5!!\r!-B""!"5S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'\r#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!`-!!!"BJ#3")!)!*!&%!!3!*!*5!!\r!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(r\rmIrarr(rmIrarr(rm2r`IrJrr"hm!2KJ!CQ"CQ%B%3B4!C%!83"a((%MFFP`bA"*\rH#0m(I`!q!!!J"`!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%hC!'!!@\r)N!B!"N53"J!()T!'!!m!N!F2m!#3"3pL,r!2m!!!$aCL,r)Im!!2%4CL)L%[!!m\r4%4CL)Lm!$a%4%4CL,`!2%C!%(bm!$a'3"#mr!!m4&984,cm!$a&84&%[2`!2084\r845mr!!$e4&4&,cm!!!9%9%8[2h!!!&4%8bmrG`!!"9822cph!*!&rrG`!!!!N!"\rJ#J!!58aB3a19!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CNj\r96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R(P922bS!)#mmFfKNCN)R5'l\rrrNKZrrT`!+JM-"mf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8\r"d8T[H5&`C@CQF(G`B`!!!!'f,,Id!*!0!`!#!*!%rj!%!*!(Y!!!!,3!!!#d!!!\r"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(3!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!\r!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)\r!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*!\r!!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!A+Kr!##!R`!\r#L,m!"MM"!$`ii3!i5!!!@B""!"4mB!Fe3B)!*+Kr!#!mJ(0S1+!!!$M"!$`ii3!\ri1)4NCNJ!!$'!33!8U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(\rrr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!-$!!!!@)!N!5!#!#3"4!\r!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"\rqB(riIrarr(rmIrarr(rmIrarr$rm(ri2r`Gr!$iB!'CJ@CK'"%'%3'4!&%!F4aa\r)h(*F-P`5AJMI"hm!2J!!)!F!!!!)!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`\r!"0f3"J!&L*!'!!C%N!B!"b+3"J!2!*!($r!!N!82BLr`$r!!!!m@BLrb(r!!$a%\r@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a'3""m[!!m4N!3[2`!2%499%5mr!!m49%4\r4,cm!$c9%9%8[2`!!p84845mr!!!&4&4&,cp`!!"84&-[2hF!!!99$cmrG`#3"Ir\rhF!!!!14J#J!!58aB3a1,!!"1qJ!%6R919[rk51FB)#4Z!!JpI2rrrrj`rbe!rrS\rQ+J!#$&)!"'B!!*j96cmU!#![!amU!!C)E[rq5'lrqR!!U#-`(cJ!Cfi-Jm4fEf0\rQ)LBmCRC[Be922bS!)#m$(c`!!8KZrrj)E[rkF!#S)c!I1!"+4'G!$)0QE'jdCJJ\rQ2(4PEA"J"LBmCAKdEP922bS!)#mmCAKdEJb$G'9YF&I!4!")J"m!5'lrrNKZrrT\r`!+JM-"mi!$9Zrri!)#9ZrrS!)M9%!"j-h`3B6PiZRdjeK'eKD@i!N!8#38T[H5&\r`C@CQF(G`B`!!!!'fAT`-!*!0!`!#!*!%rj!%!*!'!5J!!!%S!!!"+!!!!4!!"!3\r!rj!%!*!(%!!!!!`!!!!"!!!#3!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!\r%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%\r!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb6`IriN!!\r"!!L8)Iq`I(iEH$J!rrq`!3!m1!$rrj!!!3!iJri!!UJH!!!X!!!%3))!a+Kq!#"\rrj2YiL,i!"MM"!$`ii3!i5!!!aB""!"4mB!Fe3B)!M$`I1iSS!'pM3))!+$rJCRB\rlrfpMU(i!)$LI!!!iS!!"1-%!2$MK!$K)!!#0J%%!&(aJ"c9"JJ"82"qCP#J!ER4\r!JJ!32q"dC6[rEA")!!!-2q"PH$[rG'kSIJ!J2)"PH$bJG'8iT@e`I"mS8(`!!$4\r8"Giq1-%!2$MK!$JiK(4Z5!!!0B""!"5S!3!mX"i!))!"!$L3!"i!)V"q!"k!!3"\rB1#%!8(`)!kD$iIrmJm(rq%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!\r)$!!!!@S!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!\r!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm(riIrarr$riB!'C\rJ@CK'"%'%3'4!&&rF8&aIh("F-&`3AK"I(rm2rJ!!*%`!!!!*!!$rN!B!!Fb3"2r\rr!!+CN!6rr`!$CT!%c-`!"!!!QCRrr`!&hC!'!!D)N!B!"d53"J!))T!'!!m!N!F\r2m!#3"3pb,r!2m!!!$aGb,r)Im!!2%4Gb)L%[!!m4%4Gb)Lm!$a%4%4Gb,`!2%C!\r%(bm!$arrrrmI2`!2(e99Abmr!!mI4%42,cm!$hpQCQm[2`!!re99Abmr!!!2CQC\r[,cq!!!p999m[2iJ!$rrrrhmrL!!!-c-crrL!!!!!N!"J#J!!58aB3a1-!!"1qJ!\r%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CNj96cmU!#![+J!#(bS!"NK\rZrrj)E[rkF!#S)c!I0J"R(P922bS!)#mmE@&MFd)R5'lrrNKZrrT`!+JM-"mf!$9\rZrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8"d8T[H5&`C@CQF(G`B`!\r!!!'f,,J@!*!0!`!#!*!%rj!%!*!(Y!!!!,3!!!#d!!!"%!!%"!$rN!3!N!F3!!!\r!$!!!!!%!!!(3!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F\r"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B\r!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*!!!3!)P#(rX(ar'hJi!2r\rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!A+Kr!##!R`!#L,m!"MM"!$`ii3!i5!!\r!@B""!"4mB!Fe3B)!*+Kr!#!mJ'eK1+!!!$M"!$`ii3!i1)4MFdJ!!$'!33!8U!%\r!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5\r!$!!!J%`!"(`*!kC1J!3J!*!-$!!!!A)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!\r"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2r\rirrMrq(riIrarrRrq(r``!-c!Xc#-#)-)J-Mrk-!ShUM3+01S4'K6V%!ZIqiIr!!\r!0Yi!!!!+!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0f3"J!&Zj!'!!DUN!B\r!"hH3"J!)4*!'!!NLN!B!$`#3"rm!N!Ei)[m!r`!!!2'))[mKr`!!m4'))L)5m!$\ra%4'))L,`!2%4%4'))[!!rj!&m[!!rd53"22`!2p2riGPmr!!rdp%4%6cm!$r5%H\rIpr2`!!p(5842mr!!$dC(rrIcq3!2484%422jN!!2rj!%mrQ3!!!$-c-rrjN!N!5\r!B!S!!%P-@%-6PJ!!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32rk$&)!"'B\rq98mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!C`j`!Le!rrSpDJ!)rrjf!$9\rZrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8"`8T[H5&`C@CQF(G`B`!\r!!!'f,,IQ!*!0!`!#!*!%rj!%!*!(U!!!!+J!!!#S!!!"%!!%"!$rN!3!N!F3!!!\r!$!!!!!%!!!(!!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F\r"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B\r!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*!!!3!)P#(rX(ar'hJi!2r\rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!8+Kr!##!R`!#L,m!"MM"!$`ii3!i5!!\r!6B""!"4mB!Fe3B)!'$J!!!+3!!%!1+JI!!L`!3!m1'!!!+J"!$b`(`!JJ!%!1*!\r!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31\rQ6S!%)!#3#!`!!!)b!*!%J"!!N!83!"!!N!P)!!!!5!#3"3J!!3!)!*!'!C)!N!N\r#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrMrq2rmrrj\rrrKjm-!$-`,-`M!L$#*!!b+fSaZMmD*ESMqL'D)CXaQjhlKjm!!!p"J!!!")!!2q\r3"J!+rrr-c$-c!#6-c2q3"!!Uc*!%rrm!,mb3"!!!!&5CN!6rr`"CQC!%!!!!HQC\rQQC!%!(pQN!6-c!#$CT!%!!!!UM13"*QC!+dcN!3!!!$1!!!c-jQC!0!!!$13"!$\r9!*!%CQB!mJ#3"%4%!2AZN!B!r5+3"J$r!*!)UUS!N!bUUP48UUS!!+UU!*!'e5T\rrUP48UUVe+UUU!*!%e5S!9(qU9*!%p969!!!!e5SU+J"8IkT89&4re3!!!2mU+S0\r8+J"8IkT8Ip8!!!$r+S-+VAp8cXj8URr9!!!!ri-+,bqYcJ$bcUTre3!!!2qUUPQ\rUcJ!!!2+UIp8!!!$99(qU9+V1!2,bURr9!!!!e5T8IkTrc[,bd+Tre3!!!08U+LT\r8UY8NHY#UIp8!!!$9+LSU9+V9*(V3URr9r3!!eDT8+P5Ue54kd+TreIhp!!$9URp\r8UYA3d0#UIpApr3#3"0@UUY9rIrr9eIhp!*!&J'!+!!"*6&K$%jB!!%lk!!41G8j\r@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNK\rZrrT`!+JM-"mf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdj\rH,Tp1GB4YB@PZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#\r3"kJ!!!#S!!!!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q\r%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"\rm!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9\rb!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!\r!"%##!&#SI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!\r"!$LS(`!)X!%!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD\r$iIrm6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"HJ#3")!)!*!\r&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3\r`!2c!rr$rq2rirrMrq2rirrMrq2riIrJrr"rq$[i%I$!!c-#c-)`)J`L!b)@SMUL\r9U+YScQKED#$X%5i+VJ4m!!!lY!!!!!X!!2q3"J!"rj!%!!!!![rrc-bCQ3!$rrp\rQCXc-!!6-N!6rr`!&c-bCQ@CQ!!DCN!6rr`!(CT!%c-`!#1k3"J!*4*!'!!SLN!B\r!$`#3"rm!N!EjC[m!r`!!!25CC[pNr`!!p%5CCQC'm!$d4%5CCQE`!24%4%5CC[!\r!p%426r6fm!$d42rcp[I`!242Marfpr!!p2Marerhm!$rL2re,rI`!!q2q2pIpr!\r!!2L)L2rhqJ!!$iL2GrIkS!!!q26jprUJ!!!2!!rrqJ#3")"J#J!!58aB3a1@!!"\r1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CMj96cmU!#![+J!#(bS\r!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB!0@lrrJ!J*@lrqJ!L08-\r!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"M!!!!!EBXYqB!N!d$!!)\r!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!F!#!33\r!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!\r!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QP\rZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!!!3!\riU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K)!!"0J%%!&(aJ"c9"JJ!\rB1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$J\rK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!!!AS\r!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!\r&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(riIrarrRrq!(``!-c!Xc#-#)-\r)J-L!+2qSdUMHU0+S3+K!V%#ZIki!I!!!53B!!!!,!!$rN!B!!Fb3"2rr!!+CN!6\rrr`!$CT!%c-`!"1k3"J!&hC!'!!DlN!B!"kU3"J!)Gj!'!!P%N!B!#L+3"J!2!*!\r(r`#3"[NLr`$r!!!!mCNLrb(r!!$a%CNL)K,`!2%4%CNL)[!!m4%4%CNLm!$a%C!\r%m[!!rj!%m[2`!2pB")Ebmr!!reL)K[,cm!$r@!5'm[2`!!pA"(Ebmr!!$eCAC[,\rcqJ!29QGQm[2kS!rrrrrcmrUJ!*!%$rqU!*!%j'!+!!"*6&K$%iX!!%lk!!41G8j\r@rrT)jaJJ*'i!#$emrrrrrR$r,8$rqLBU!!)-8J!%CJ!!RP922bS!)#m$(bS!"NK\rZrrj)E[rkF!#S)c!I1!"REJb$a(C[BfBL*MaQGQpM98mr+J!J,`-I2!!"5'lrrNK\rZrrT`!+JM-"mi!%T%Cd!-JfCXER4Q##BmG'9YF'!'*MaPH(4Z98mr+J!J,caPH(4\rZ$)0dC@e`9m"%!%L!(`")E[rq5'lrqR!!U#-`(cJ!0@lrrJ!J*@lrqJ!L083!(Nc\rI""K1ALkI6R@%E@&TEJ#3"3*"5Qpj)A"PCQC`Gh"M!!!!!ECHR!`!N!d$!!)!N!6\rrN!3!N!B"+!!!!5J!!!%S!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!*!!J%%!2q\r3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!\r!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4\r'EfaNCA)!N"Km#!+QNq(rr*2"rrL3!!%!#*3Krl"mIKYi1!$rrl!"!$`i!2rrN!!\r"!$L$rJ!#U"i!!#`!!!4!JJ$%U(i!)(rNqhL)[J!'1-%!2$MK!$K)!!$&J%%!&(a\rJ"c9"JJ#-2"mlLLJ!Ef0!JJ!S2q"QGM[rEf1SIJ!J1*m!!$LJ!!%i`3!m11%!1%J\r!!)f!33!8I'!(08'#!&3m(jQ8+!"ZG%##!"!ri(4P1rpYF%J!!!`ri'9i1rpdEUK\rq!#!mJ'9i2+"dC6LPEA"m(bK3I!!!0&3&hMii`3!m11%!1$L%G'j)!!!eJ%%!&+J\r"!$b`(J!JJ!%!1*!!(J!LX(i!(S!"!&Ji)3"3I!J$TS2Krrb$`Iri6S!!))'#!!#\r3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J\r!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrM\rrq2rirrMrq2riIrJIr!Iq!Ii!I$!!c-#c-)`)J`L!b)!SJ$L!1)!i`$K`1"`m"ci\r"rJ"m!!!j,!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B\r!$`#3"rm!N!Ed)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!\r!m4'3"2,`!2%4%4%5mr!!m4%4%4,cm!$a%4%4%[2`!2-K%4%5mr!!$r-K%4,cm!!\r!$r-K%[2e!!!!$r-Lmr93!!!!$r2cp9!!N!32re8!N!53!'!+!!"*6&K$%i`!!%l\rk!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q6P922bS!)#mU!!)I+J!\r'5'lrrNKZrrT`!+JM-"mf!'FH98mr+J!J,caYB@0c3LG)E[rq5'lrqR!!U#-`(cB\r!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3(45Qpj)A"PCQC`Gh"\rM!!!!!EBXZ"B!N!d$!!)!N!6rN!3!N!Hd!!!!Y!!!!,3!!!%3!!3%!2q3"!#3"a!\r!!!!-!!!!!3!!!G!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#\r3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S\r!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J\r!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"FU(m!))#I!!+)[`!'1-%!2$MK!$K\r)!!"CJ%%!&(aJ"c9"JJ!NU(m!)$b!E@%iS!!!1-%!2$MK!$JiK'0c5!!!-B""!"5\rS!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#3!%%\r!&)!-!!#!6!!%I!N$TNk!"#!!N!`-!!!#-J#3")!3!*!&%!!3!*!*5!!!!%J!N!8\r)!!%!#!#3"J'5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2r\rirrMrq2riIrKrr(rq2riII$!!c-#c-)`)J`L!b)!SRbLrU28SkLKe+'SXG5irVKp\rm!!!QEJ!!!")!!2q3"J!&rj!%!!!!&[rrCQBc-`!Uc*!%rrm!9*Q3"2rr!'QCQ3!\r!CQB!IfD3"-c-!*)c-rrrQCN!T6-cCT!%!+ScN!5CQ3$!!!#CQIrr!08!N!4QCJ$\rBhGd!N!AM!!#lZ`!!!2AZN!B!r%53"J$p)T!'!2i4N!B!r`#3#+UU!*!-UUT89+U\rU!!#UUJ#3"Y8UIkT89+UUp5UUUJ#3"08U!&4rUP53"298e3!!!08U+LS!9(qU9&4\r8Ip8!!!$9+T!&!&4rUP4re3!!!08UN!K8URr9!!!!e5SUIrlrrRp8+UTre3!!!08\rUrIq3"IdUURr9!!!!eArrrGMBDIe8+UTre3!!!0AqraB@f'R!9#UUIp8!N!6rr`8\r&&X$!9#UUIp8!N!6qr`@5ik@P9#UUIpAp!!!!r2rpNZ2Mr93UURr9rId!!!$prj!\r&UP5UIpApr3#3"2cqrrkUUYA9eIhp!*!&N!"J#J!!58aB3a1-!!"1qJ!%6R919[r\rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CNj96cmU!#![+J!#(bS!"NKZrrj)E[r\rkF!#S)c!I0J"R(P922bS!)#mmE@&MFd)R5'lrrNKZrrT`!+JM-"mf!$9Zrri!)#9\rZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8"d8T[H5&`C@CQF(G`B`!!!!'f,,J\r@!*!0!`!#!*!%rj!%!*!(Y!!!!,3!!!#d!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%\r!!!(3!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!\r!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQp\rZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*!!!3!)P#(rX(ar'hJi!2rrX!%!2$J\r!rrq3!!%!1+JI!!!X!!!%3))!A+Kr!##!R`!#L,m!"MM"!$`ii3!i5!!!@B""!"4\rmB!Fe3B)!*+Kr!#!mJ'eK1+!!!$M"!$`ii3!i1)4MFdJ!!$'!33!8U!%!2,!I!##\r!!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`\r!"(`*!kC1J!3J!*!-$!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B\r"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(r\ri(r`(rJ(q!(``!-c!Xc#-#)-)J-L!+)!iJ$L!1-!iF$JF2!Fq!Ii!I!!!15`!!!!\r'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,\rr!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%\r4%[2`!2%4%4%5mr!!m4%4%4,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!r\rc)[2e8!!!!!rcmr93!*!%$rp9!*!%J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm\r$*'i!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+J\rM-"mf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4\rYB@PZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#\rS!!!!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3\r%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#\r3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J\r#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#\rSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!\r)X!%!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!\r!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"BJ#3")!)!*!&%!!3!*!\r*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$\rrq2rirrMrq2rirrMrq2riIrJrr$rq2rirr$!!c-#c-)`)J`L!b)!S[bLLU+1SS+K\rJU##X)+iJVMrm!!"9!J!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%lT!\r'!!@lN!B!"N53"J!()T!'!!m!N!Ir!*!'pL,r!2m!!!$aCL,r)Im!!2%4CL)L%[!\r!m4%4CL)Lm!$a%4%4CL,`!2%4N!6bm!$arrrr%I2`!2(d426amr!!mI4%rr(cm!$\rcp%4&mI2`!!rd4%Aamr!!!24%4I(cp`!!p%4&m[2hF!$d4%AcmrG`!2q3"IF!N!5\r3!'!+!!"*6&K$%i`!!%lk!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4\rQ6P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'FH98mr+J!J,caYB@0c3LG\r)E[rq5'lrqR!!U#-`(cB!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#\r3"3(45Qpj)A"PCQC`Gh"M!!!!!EBXZ"B!N!d$!!)!N!6rN!3!N!Hd!!!!Y!!!!,3\r!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!G!#!33!rj!%!*!2K!!!!)!%"!3!N!J\r"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!\r)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIr\rmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"FU(m!))#\rI!!+)[`!'1-%!2$MK!$K)!!"CJ%%!&(aJ"c9"JJ!NU(m!)$b!E@%iS!!!1-%!2$M\rK!$JiK'0c5!!!-B""!"5S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD\r$iIrm6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!`-!!!#)J#3")!3!*!\r&%!!3!*!*5!!!!%J!N!8)!!%!#!#3"J'5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3\r`!2c!rr$rq2rirrMrq2rirrMrq2riIrJrr$rq2ri1I$!!h-#c-+')SiLLb+)SSLL\rL++)SiLKU+#SX+biVlJTm!!"Al`!!!"!!!2q3"J!'rrr-c2rr!!crrjQCrrm!%[r\rrCQErr`!Brrmc-rrr!"rrr`!!c-`!+Xb3"2rr!%6-c!!!QCN!9*Q3"2rr!'QCQ3!\r!CQB!IfD3"-c-!)eQCJ!!CQB!UM13"*QC!,%c-`!!CQB!e3#3"'CQ!2AZN!B!r5+\r3"J!!UUS!N!bUUP4rME%!!+UU!*!'e5UUD4*%ME&8+UUU!*!%e5TT'!B54)fa929\r8e3!!!08UD4J5$)faURp8Ip8!!!$9+QNB%Kq09(qU9(r9!!!!e5TT'")IM93U9+T\rre3!!!08UD4J5(ie8+P5UIp8!!!$9+QNB%Kq09#T8URr9!!!!e5TT'")IM93U9+T\rre3!!!09rD4J5(ie8+P5UIp8!N!69D4KT(ie8+P5UIp8!N!9T''NIM93U9+TreId\r!N!4T''NIMAp89+TreIhp!!!!D4KT(ih9URqUIpApr3#3"@NIM3!!eGA9rId!N!A\rNB!S!!%P-@%-6L`!!6[S!"%je6PErqNMR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja\r5!!4Q!!#H98mr+J!J,`-I+J!'5'lrrNKZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'C\rfEf096cmU!#![!amm!!&)E[rq5'lrqR!!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e\r`B!BQ2'9iG'j96cmU!#![2'9iG'i-Jh4PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!\rI1!!eE[rq!#!PE[rk!#)e4!!H60m%'%jH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"\rhF'-!!!!"YPkF$!#3$3-!!J#3"2q3"!#3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#\r3"a!!!!!-!!!!!3!!!N!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q\r3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#\r3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(\rrX(aq'hJi!2rrX!%!2$J!rrq3!!%!1)2q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)L\rq!!Bi`3!m11%!1%J!!-@!33!8I'!(08'#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkK\rq!#!iR`!!1+!!!6M"!$`ii3!i5!!!MB""!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$r\rJG'8lrfe`5!!!$$rJCAJlrh4ZU(i!)$b!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM\r"!$`ii3!i1)4dENJ!!$@!33!8U!%!2,!H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"\rm#!1QJq(rr)2"rrK1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&\r5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#\r3"4!!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L\r$#)$)J#L!1)!iJ$M!1(!i($`(2J(q!(`!!$NX!!!!"J!!rj!'!!(-N!6rr`!#QC!\r%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!(r`#3"[3Lr`$r!!!!m83Lrb(r!!$a%83\rL)K,`!2%4%83L)[!!m4%4%83Lm!$a%C!%m[!!m4%4%4,cm!$a%4%4%[2`!2%4%4%\r5mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!!!!!2mr2e8!#3"!r\rr93#3"*!!B!S!!%P-@%-6M!!!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32r\rk$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cmU!#![2'e\rKBh0#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4\rYB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbi&J#3$3-!!J#3"2q3"!#3"l3!!!#\rd!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q%!!!!J!3\r%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#\r3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J\r#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&b\rSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"YB6LJ!!!\ri`3!m11%!1$L%Bh0)!!!aJ%%!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"\r3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`!!!&5!*!\r%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!\r!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L$#)$\r)J#L!1)!iJ$M!1(!i($`(2J(q!(`!!$NX!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm\r!!fD3"-c-!!4%N!B!"5+3"J!2!*!(r`#3"[3Lr`$r!!!!m83Lrb(r!!$a%83L)K,\r`!2%4%83L)[!!m4%4%83Lm!$a%C!%m[!!m4%4%4,cm!$a%4%4%[2`!2%4%4%5mr!\r!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!!!!!2mr2e8!#3"!rr93#\r3")"J#J!!58aB3a1@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!\r%CMj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB\r!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"\rM!!!!!EBXYqB!N!d$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!\r!!!!-!!!!!3!!!F!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#\r3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S\r!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J\r!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K\r)!!"0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!\riN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`\r*!kC1J!3J!*!)$!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#\r3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`\r(rJ(q!(``!-c!Xc#-#)-)J-L!+)!iJ$L!1-!iF$JF2!Fq!Ii!I!!!15`!!!!'!!$\rrN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,r!2m\r!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%4%[2\r`!2%4%4%5mr!!m4%4%4,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2\re8!!!!!rcmr93!*!%$rp9!*!%J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm$*'i\r!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"m\rf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@P\rZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#S!!!\r!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3%"!#\r3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%\r!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2\rKrrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#SI`!\rJJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!)X!%\r!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'\r#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!#-J#3")!3!*!&%!!3!*!*5!!\r!!%J!N!8)!!%!#!#3"J'5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2r\rirrMrq2rirrMrq2rirrMrr2rqIrirI$!!c-#c-)`)J`L!b)!SJ#Lm+1BSmbLM+*N\rXR5j,VMpm!!"IcJ!!!")!!2q3"J!Nc-crN!3!+-c-rrmc-`!Uc*!%rrm!6*QCrrm\rc-`"1QCR-c2rr!&5CN!6rr`"bCQE-c2rr!(GQCXc-!!!!I@CQQCN!!!"rCT!%c-`\r!R$-cQCRrr`#K-c1CQ3!!!+)c-fCQrrm!c3!!-c2-c!$1!!!c-jQC!2a%N!B!r5+\r3"J$r!*!)rrm!N!crr&48rrm!!2rr!*!'rbVmr&48rrp8+[rr!*!%rbSU+[cm9*!\r%+P6r!!!!rbU3"Icm9*!%r`!!!2mUN!Imr&48r`!!!2mUN!Rr92m!!!$r+T!)92p\rrr`!!!2mUrIrrr5SU+P6rIrm!!!$rrd`N*(Ir+LT8rhrr!!!!rAFSGdj1Gre892p\rrr`!!!2r0I8j1FLMr9&6rIrm!!!$rcD*-+*bLrhp8rhrrr3!!rFl0IAGhcIer92p\rrrrhp!!$rcXfKc[rrrhrrIrrpr3!!!2hrrrerI`$rrrrpr3#3"C!!B!S!!%P-@%-\r6M!!!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32rk$&)!"'C198mr+J!J,bS\r!!KmU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cmU!#![2'eKBh0#*dKZrrj)E[rkF!#\rS)c!I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9\rQCR"hF'-!!!!"YLbi&J#3$3-!!J#3"2q3"!#3"l3!!!#d!!!!Y!!!!4!!"!3!rj!\r%!*!(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!\r%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8\r#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"\rmIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&bSI`!JJ*m!!SLr!!Bi`3!\rm11%!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"YB6LJ!!!i`3!m11%!1$L%Bh0)!!!\raJ%%!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)\r!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`!!!+D!*!%J"!!N!83!"!!N!P)!!!\r!5!#3"3J!!3!)!*!'!C)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrM\rrq2rirrMrq2rirrKrq(rmIrlrrRrm-!$-`,-`M!L$#)$)J#LH+,-SlkM6U(1SEDa\rEVVrZIr`!!#UT!!!!(`!!rj!'!"(rrjQC!!!!+Xb3"2rr!%UCQIrrQCN!9*Q3"2r\rr!&@CN!6-c!"XCQErN!3!F'CQrrmc-`"fCQE-c$-c!(eQCTQC!!!!IfD3"-c-!+!\rc-jQC-c-!SM-cCQErr`#M-c0QCXc-!+3c-fCQQCN!UM13"*QC!+XcN!4QCJ#X-j!\r'!-i!!$-cQCN!c`!!-c0QCJ$3!!!cN!3!e3#3"'CQ!1J!!%4%!!!!k3!!)L)!!!$\rU!!!4%3!!!2-!N!3L)J$elT!'!2Y9N!B!r%53"J$p)T!'!2i4N!B!r`#3#+UU!*!\r-UUT89+UU!!#UUJ#3"Y8UIkT89+UUp5UUUJ#3"08U!&4rUP53"298e3!!!08U+LS\r!9(qU9&48Ip8!!!$9+T!&!&4rUP4re3!!!08UN!K8URr9!!!!e5T8qrlqqe3U9+T\rre3!!!098k+"fF+UX995UIp8!!!$9che`rrqLT2a8URr9!!!!eHTfrdTXrk2q9+T\rre3#3"21MrfaXrk2q9+Tre3#3"-rr%IrrF+Vl9+TreId!!!$r%IqMF-l3UP5UIpA\rpr3$r%IqUkIqVrhprURr9rId!!2qUIj!&rpA9eIhp!*!&J'!+!!"*6&K$%jB!!%l\rk!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!\r'5'lrrNKZrrT`!+JM-"mf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!\rH*KmNAdjH,Tp1GB4YB@PZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#\r3"2q3"!#3"kJ!!!#S!!!!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$\rrN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!\r!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@j\rN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$L\rS(`!!,!!!"%##!&#SI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"J\ri!!!#N!!"!$LS(`!)X!%!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%\r!8(`)!kD$iIrm6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"BJ#\r3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!8\r3!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2riIrKrr(rq2riIr$!!c-#c-)`)J`L\r!b)!S[bM!U-#S`+K!U%#X3+irlKrm!!!4#!!!!!J!!2q3"J!"c*!%rrm!!TQ3"2r\rr!!0QN!6-c!!%Zj!'!!9hN!B!"N53"J!()T!'!!m!N!Ir!*!'pL,r!2m!!!$aCL,\rr)Im!!2%4CL)L%[!!m4%4CL)Lm!$a%4%4CL,`!2%4N!6bm!$arrrr%[2`!2m!!!6\rbmr!!r`4%4I,cm!$r"%4&m[2`!!m%4%Abmr!!$`4%4I,cp`!24999m[2hF!$rrrr\rcmrG`!!-c-crrG`#3")"J#J!!58aB3a1@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2r\rrrrj`rbe!rrS-8J!%CMj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!\r#,8$rqMeU!!MrrRB!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3(\r"5Qpj)A"PCQC`Gh"M!!!!!EBXYqB!N!d$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%\r3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!F!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!\r!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!\r!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!\r"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+\r)[`!'1-%!2$MK!$K)!!"0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!\r!U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!"\r"!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!!!B)!N!5!#!#3"4!!%!#3#8J!!!")!*!\r&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrM\rrq2rirrMrq(riIrarrMrq(r``!-c!Xc#-#)-)J-L!+2qSbZM9k2rSEZKIl'lZ2qi\rIr!!!BP3!!!!-!!$rN!B!!Fb3"2rr!!,-N!B!!jQ3"2rr!!4QN!6-c!!&-j!%CQB\r!"Zk3"J!(UT!'!!KhN!B!#9@3"J!+4*!'!!XLN!B!$`#3"rm!N!Er-rm!r`!!!2'\rU-rmar`!!m4'U-c-6m!$a%4'U-c2`!2%4%4'U-r!!m4'3"22`!2q3"2(dm!$rCfG\rRp26`!2prIhrdp2!!rrRjqI6dm!!2B[mQp26`!!m[L2,dp2X!$f,r*[6dql!!rrr\rrp2AlX!!%4%42rrX!N!5!B!S!!%P-@%-6PJ!!6[S!"%je6PErqLm+,`-NEJ!)2Ac\rrrrrqF2mY32rk$&)!"'Bq98mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!C`j\r`!Le!rrSpDJ!)rrjf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8\r"`8T[H5&`C@CQF(G`B`!!!!'f,,IQ!*!0!`!#!*!%rj!%!*!(U!!!!+J!!!#S!!!\r"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(!!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!\r!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)\r!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*!\r!!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!8+Kr!##!R`!\r#L,m!"MM"!$`ii3!i5!!!6B""!"4mB!Fe3B)!'$J!!!+3!!%!1+JI!!L`!3!m1'!\r!!+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!\r!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&k!*!%J!J!N!83!"!!N!P)!!!!5!#\r3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2r\rirrMrq2rirrKrq$rm(ri2rJ4m-!$-`,-`M!L$#)$)KDL1U*@SUfM1D&YS)1`4,JU\rZ"(`!!"C@!!!!#`!!rj!'!!(rN!3!!!!#rrr-c*QC!!2rrfCQc-`!"-b3"2rr!!A\r-c*QCCQB!"TQ3"2rr!!GQN!6-c!!)lT!'!!P%N!B!#L+3"J!2!*!(r`#3"[PQr`$\rr!!!!p*PQrf6r!!$d4*PQCNE`!24%4*PQC[!!p%4%4*PQm!$d4%p2p2E`!24%rr2\rfpr!!p%q2(rEhm!$dq2(rArI`!2q)rr8[pr!!$irirerhm!!!q)L)rrIk!!!2L)p\rhprUJ!!$ip2RhqU!!!!m!$rrk!*!%J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm\r$*'i!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+J\rM-"mf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4\rYB@PZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#\rS!!!!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3\r%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#\r3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J\r#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#\rSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!\r)X!%!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!\r!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"DJ#3")!)!*!&%!!3!*!\r*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$\rrq2rirrMrq2rirrMrq2riIrJrr$rq2rirr$!!c-#c-)`)J`L!b)!S[bLLU+1SS+K\rZU##X,UiJVMrm!!!ClJ!!!!N!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%lT!\r'!!@lN!B!"SL3"J!(4*!'!!JLN!B!$`#3"rm!N!Eh)[m!r`!!!2&h)[mKr`!!m4&\rh)L)5m!$a%4&h)L,`!2%4%4&h)[!!m4'3"2,`!2(rrrm4mr!!mI4%p2(cm!$ap%6\rrmI2`!22d4%Aamr!!$r4QCI(cm!!!p%4&mI2i!!$dCQAbmrL!!24%4I2cq)!!rj!\r&q!#3")"J#J!!58aB3a1@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS\r-8J!%CMj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!M\rrrRB!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC\r`Gh"M!!!!!EBXYqB!N!d$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#\r3"a!!!!!-!!!!!3!!!F!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q\r3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#\r3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(m\rEH$J!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$M\rK!$K)!!"0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##\r!!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`\r!"(`*!kC1J!3J!*!)$!!!!AS!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B\r"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrKrq2r\rirr`(r[rqII``!-c!Xc#-#)-)lFLkD)dSK+M&+(rSJ#Mrl!FZrkjpr!!!(%F!!!!\r,!!$rN!B!!Iq3"-c-!!,-N!6rr`!$c-bCQ@CQ!!5CQIq3"!!&QC!%rrm!"QD3"-c\r-!!HUN!B!#&@3"J!*4*!'!!SLN!B!$`#3"rm!N!Ej9Im!r`!!!2+C9Ip5r`!!mL+\rC998Pm!$b)L+C99A`!2rbrbrr9I!!mQrap%rem!$b*@mI42E`!28LAa(dp[!!rr9\rI(h6fm!!2rj!%p[!!mc13"2E`!2q3"IEk!!!!$rP9p[UJLDVrEkRfqU!'CQB'Err\rk!*!%N!"J#J!!58aB3a1-!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS\r-8J!%CNj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R(P922bS!)#mmE@&\rMFd)R5'lrrNKZrrT`!+JM-"mf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'e\rKD@i!N!8"d8T[H5&`C@CQF(G`B`!!!!'f,,J@!*!0!`!#!*!%rj!%!*!(Y!!!!,3\r!!!#d!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(3!J%%!2q3"!#3$i3!!!#!"!3\r%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!\r6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+\rQNq(rr*!!!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!A+K\rr!##!R`!#L,m!"MM"!$`ii3!i5!!!@B""!"4mB!Fe3B)!*+Kr!#!mJ'eK1+!!!$M\r"!$`ii3!i1)4MFdJ!!$'!33!8U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&"\rm#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!-$!!!!@S!N!5\r!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!\r3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`rrMrq(r``!-c!Xc#-#)-)KmL\r)U*'SZbLQU1aSF'JBl#fZ*qiHI!!!,+3!!!!*!!$rN!B!!Fb3"2rr!!+CN!6rr`!\r$CT!%c-`!"$13"*QC!!8!N!4QCJ!'!*!%4%3!"qk3"J!))T!'!!m!N!G%!*!'4#*\r%!%3!!!"40#*%F83!!&%#0#)LFP!!84%#0#)M8!"4%5CQ0#03!&%5B"*K3e!!85B\r"*N&$8!"4Er*N)803!&(c4N&#3e!!8f,d%"C$8!!&4J%"*N03!!!'m"*M3eJ!!')\rf*M&$@)!!BKCP3d0BJ!!'CM)P9BJ!N!53!'!+!!"*6&K$%i`!!%lk!!41G8j@rrS\r[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q6P922bS!)#mU!!)I+J!'5'lrrNKZrrT\r`!+JM-"mf!'FH98mr+J!J,caYB@0c3LG)E[rq5'lrqR!!U#-`(cB!0@lrrJ!J*@l\rrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3(45Qpj)A"PCQC`Gh"M!!!!!EBXZ"B\r!N!d$!!)!N!6rN!3!N!Hd!!!!Y!!!!,3!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!\r!!G!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!\r!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj\r-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$\rrrj!!!3!iU"m!!#`!!!4!JJ"FU(m!))#I!!+)[`!'1-%!2$MK!$K)!!"CJ%%!&(a\rJ"c9"JJ!NU(m!)$b!E@%iS!!!1-%!2$MK!$JiK'0c5!!!-B""!"5S!3!mX"m!))!\r"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#3!%%!&)!-!!#!6!!\r%I!N$TNk!"#!!N!`-!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%\r5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2riIrJ\rIr!Iq!Ii!I$!!c-#c-)`)J`L!b)!SJ$L!1)!i`$K`1"`m"ci"rJ"m!!!j,!!!!!B\r!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"rm!N!Ed)[m\r!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4'3"2,`!2%4%4%\r5mr!!m4%4%4,cm!$a%4%4%[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-\rLmr93!!!!$r2cp9!!N!32re8!N!5!B!S!!%P-@%-6PJ!!6[S!"%je6PErqLm+,`-\rNEJ!)2AcrrrrqF2mY32rk$&)!"'Bq98mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-\r`(cB!C`j`!Le!rrSpDJ!)rrjf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'e\rKD@i!N!8"`8T[H5&`C@CQF(G`B`!!!!'f,,IQ!*!0!`!#!*!%rj!%!*!(U!!!!+J\r!!!#S!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(!!J%%!2q3"!#3$i3!!!#!"!3\r%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!\r6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+\rQNq(rr*!!!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!8+K\rr!##!R`!#L,m!"MM"!$`ii3!i5!!!6B""!"4mB!Fe3B)!'$J!!!+3!!%!1+JI!!L\r`!3!m1'!!!+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!\rJJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&5!*!%J!J!N!83!"!!N!P\r)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2r\rirrMrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L$#)$)J#L!1)!iJ$M!1(!\ri($`(2J(q!(`!!$NX!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B\r!"5+3"J!2!*!(r`#3"[3Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%\r4%83Lm!$a%C!%m[!!m4%4%4,cm!$a%4%4%[2`!2%4%4%5mr!!mb%4%4,cm!!2mb%\r4%[2`!!!2mb%5mr8!!!!2mb,cp9!!!!!2mr2e8!#3"!rr93#3")"J#J!!58aB3a1\r@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CMj96cmU!#![+J!\r#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB!0@lrrJ!J*@lrqJ!\rL08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"M!!!!!EBXYqB!N!d\r$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!F!\r#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!\r!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)\r!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!\r!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K)!!"0J%%!&(aJ"c9\r"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%\r!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!\r!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8\r#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`(rJ(q!(``!-c!Xc#\r-#)-)J-L!+)!iJ$L!1-!iF$JF2!Fq!Ii!I!!!15`!!!!'!!$rN!B!!Fb3"2rr!!+\rCN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,r!2m!!!$a4#,r)Im!!2%\r44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%4%[2`!2%4%4%5mr!!m4%\r4%4,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!!!!!rcmr93!*!\r%$rp9!*!%N!"J#J!!58aB3a1-!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe\r!rrS-8J!%CNj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R(P922bS!)#m\rmE@&MFd)R5'lrrNKZrrT`!+JM-"mf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdj\reK'eKD@i!N!8"d8T[H5&`C@CQF(G`B`!!!!'f,,J@!*!0!`!#!*!%rj!%!*!(Y!!\r!!,3!!!#d!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(3!J%%!2q3"!#3$i3!!!#\r!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!\r"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"K\rm#!+QNq(rr*!!!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))\r!A+Kr!##!R`!#L,m!"MM"!$`ii3!i5!!!@B""!"4mB!Fe3B)!*+Kr!#!mJ'eK1+!\r!!$M"!$`ii3!i1)4MFdJ!!$'!33!8U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$J\rK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!-$!!!!9)\r!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!\r&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`(rJ(q!(``!-c!Xc#-#)-\r)J-L!+)!iJ$L!1-!iF$JF2!Fq!Ii!I!!!15`!!!!'!!$rN!B!!Fb3"2rr!!+CN!6\rrr`!$CT!%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,r!2m!!!$a4#,r)Im!!2%44#)\rL%[!!m4%44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%4%[2`!2%4%4%5mr!!m4%4%4,\rcm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!!!!!rcmr93!*!%$rp\r9!*!%J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa\r5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'F1F!)Y32rk2@S!#2r\rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!F&+EhNKF'9QCR"\rhF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#S!!!!U!!!!4!!"!3!rj!%!*!\r(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!\r%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!\r%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaY\ri1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#SI`!JJ*m!!SLr!!Bi`3!m11%\r!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!)X!%!2$KJ!!#S!3!mX"m!))!\r"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#3!%%!&)!-!!#!6!!\r%I!N$TNk!"#!!N!J-!!!#)J#3")!3!*!&%!!3!*!*5!!!!%J!N!8)!!%!#!#3"J'\r5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2rirrM\rrr2rq2ri2I$!!c-#c-)`)J`Lib,BS[DLrD1rSXqL0k*DXa+ielJpm!!"N)`!!!"!\r!!2q3"J!Uc*!%rrm!+mb3"J")QCRrN!3!9*Q3"2rr!(pQN!6-c!$!!!#CQIrr!2E\rGN!B!plZ3"J$iUT!'!2Q)N!B!qRH3"J$l9C!'!2a%N!B!r5+3"J$q%C!'!2m!N!M\rrr`#3$2rm9&6rr`!!rrm!N!Er+[cm9&6rre3Urrm!N!6r+LSUr2a8N!3U92m!!!$\rr+T!&r2a8N!6r!!!!rbVpr2mU+LVmr&48r`!!!2mUrrrkr2mU+LVr92m!!!$r+[r\rprrrkr2mUrhrr!!!!rbVrr[hprrrkrrprr`!!!2rrIm$qr[hrqrrrIrm!!!$rqrr\rp5-$qrr[rrhrr!!!!rrRiqrrp`2q3"(rr!!!!rrMhr5[rrrRr92prrrd!!2rr+rE\rfrrRkre6rIrrpr3!!!2rmq2rkrrrmrhrrrId!N!Arrrpr!2rrrrhp!*!%"T*J#J!\r!58aB3a1C!!"1qJ!%6R9)jaJJA8mNE`!@1#S!)$9mrrm!)($r*8!!)Ja5!!4Q!!%\rf98mr"#mU!!)I+J!'5'm!$NK[!!j`!+JM-"mf!'F!!3Je4!!J,c`!J!!8,ca69&)\rM,ca"58j*,caQB@aX,caPH(4Z,caPH(4Z,`T1ZJ$b0J"2l`!FC`!!fM9%!#![2!#\r!!"3[2&088L-[2%&*6NN[2'CKE'`[2'9iG'i[2'9iG%3[#Nkk!,Sf!%r[!"aR!!#\rL083!)#mm!)!!&#mm8e45)bmm38P155mmGf&XDbmmCAKdELmmCAKdELm+6VS!JMB\r!6qm!('GU083!)#mm!)!!&#mm8e45)bmm38P155mmGf&XDbmmCAKdELmmCAKd4#m\r+6VS!6$B!6qm!('Fd98mr"#mmCAKdEN)R5'm!$NK[!!j`!+JM-"mf!'B@0@m!"!!\rJ*9F!)Q!+0@m!"!!J*9F!)M9$!"jF6dcI""JZRdje51FB)%r[rp`NE`!d1#S!)$9\rmrrm!)($r*8!!)P922`3[,`!m(bS!"NK[!"")E`!3F!#S)c!I0J"Q!!#Z)#m!2,#\r[!$KR(P922`3[,`"!(bS!"NK[!!T)E`!@F!#S)c!I0J"J#Mk[!!B[E`!#!!K+3fC\rf2eF!(Lp[!!J!)$p[!%`!'$p[!%i!'KpU!!B!(#p[!%!!$#p[!%3!%#p[!%J!&&9\r22bm!##m[!!C#Tcmm!!&)HJ"#5'm!(Nkk!L!`(cB!CLBJ,`!JX+m!#'B3GY8eI2r\rr!#"`rb9!!#*J$$9[!"i!)#9[!#!!)M!$6qm!*%cI""K1G8MR'$*2lrk8,'m"M#4\r[!B5AbhB!H2mJ,J!NX**Q!!%N)#i!),#U!!4Q!!%B3LHTQe922bi!&LmZ!'3[,J!\r5(c`!!DJD-"mi!"mm!!'TQe92UDm`(cB!CJ!!f!bU8e45)`!)CM*#*kQE@8m[2&0\r88L-r+J!-U"mJAbC)(c`!!DQE)!YR!!#d5&Fr+J!-2bS!$Nkk!e4J-PP2,bS!#$m\rU!!bS(b"I*NK96kQ[-"mf!#!,Ca)J8a!35)"53%M!)&0$ek)ZB!4fcQ"S3GF[5!%\r52fS!%J%@,fS!&!%`3Qm"(%([!3"`#D*J0J"Q$M9[!4B!%L9[!6!!&'!i$%2rL'F\r'$%2re@BJ5LS!%'FD3Hm"!(!'SQ!f!'B10@m"&J!5*@m"-!!8B!`eI2rr!"*`rb9\r!!"3JE`')%,`!!3a%rrpR"$m%UCT2l`&X60p-'#"I6qm!$%l351FB)#J[!"!NE`!\r85QS!Y'F+-#S!YV"U!,4NFRB"8QS!YM9$!#!P4!!d3HS!"(!*SQ!e3!#`5QS!X'B\rX5'S!"%KU!,)[+J#i)&*1N!!3+J!L!N!!%'F55LS!XQB-,`S[+J!d6VVrR&"28N0\r+DJ#`CJC++J#bCk`-D[r9!,"R#!aUl(J!X'B%3QS!X&0U!,C-h`3B6R8[!dr[rca\r+V`$3C`!!MP922bm!i#m[!0i[,`$H5'm!%%K[!"&1ZJ'!-"mf!'CZ$#m!!3!"CQ"\r96bm[!0Jr,`$N5'm!#Nkk!5J`(cB!CNi[E`$3!!K"l`!)3HJ!F#p)!"irE`!#!#*\r#,`"i3Qm!Z%)[!,SrE`$8!,a#E`#q,fm!c!$!5'm!##m[!!K1Z[lJ0Lm!`&"2B!C\rfL'!#GXir3`$J6qm!a#BI)&p2l`!86Y")ja!`6qrr!#C[!4BNE`%3)!TR1M9[!43\r!&L!,CJT#UJ!53QS!('!D)%Y$eh!!%"053%M!SLj"eb9)!")eI2rr!"`J5U)(0J"\r#UJ!5B!*fcMp$!4T2l`%!60m-##"I6qm!#Nl351F3-%r[rq!QE`!d*'m!-#!,C`4\r+%fB33KG"eb9)!")eI2rr!"aJ##9,!"*#DJ!F0@m!2!!@*@m!1!!`)%T`#D*J0J"\r#UJ!52d-!2Nr[!#"-h``))&p2l`!16Y![!dr[riC96bm[!)Sr,`#-5'm!#%kkrbS\r`(cB!CJJJE`##-+m!&Mp$!)a2l`"k*KmJAdr[!!T1d%MR%$"2lrq8*Qm!J#4[!(a\r96cm[!)i[,`#-,bm!M%K[!!a1Z[p)-"mf!'BD%#m!(J*!!""@`%3!&)"R"LD[!$"\rJ"#D[!'3r3`#16qm!E%cI$!JJAdr[!"*1d%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a\r#%5!ICb)J3#"3-"Jb,J!)CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!\r!!![j5Qpj)A"PCQC`Gh"M!!!!!EBXXr-!N!d$!!)!N!6rN!3!N!B+,!!!#L`!!!S\rX!!!"`!!%"!$rN!3!N!G%!!!!3!!!!!N!!![`!J%%!2q3"!#3$J%d!!!!J!3%"!#\r3#!%!!!!`rj!%!*!%rj!%!*!(!3!!!!X!!!!"!!!!L!!!!*!!!!!",!!!!!%!N"-\r,!*!)!J!!#J)!!"S#!!!U!J!!0`)!!%3#!!"2!J!!A!)!!'S#!!"c!J!!IJ)!!)m\r!!3#3"3-!N!4+#N)!4J%!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*\r$FQ9KG'96H@jM!%GPG$&5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"\r$E'pcC9*PFdCTE'8!3Qa[BfY0EhCP4'&dB3"5CA0&FR*[FJ"'D@jN4QpXC'9b!&"\r#4f9d3f&d5@jQEe0jEQ-!5%p`C@j5CA0'D@aP!*!9I!J#TT2Krrb6`IriN!!"!!L\r8)Iq`I(mEH+[I!#!i!2rrX"m!)$J!rrq3!"m!)UJI!!!X!!!%3))"Q(r$mhL!R`!\r#L,m!"MM"!$`ii3!i5!!)`B""!"4mB!Fe3B)"B,2I!#!iI`!!2)"PH$bJCAJm`'C\rK21""56d!8e3j)!#!18!!&$L%G'iiTA4Z1-CXE$MR6NNj#&)M5!!"8@!!!!"mB!F\re3B)"+,2I!#!iI`!!2)"PH$bJCAJm`'CK21""56d!8e3j)!#!18!!&$L%G%3iTA4\rZ1-CXE$MR6NNj#&)M5!!"#@!!!!"mB!Fe3B)!i,2I!#!iI`!!2)"PH$bJCAJm`(G\rK21""56d!8e3j)!#!18!!&$L%G'iiTA4Z1-CXDcMR6NNj#&)M5!!!`@!!!!"mB!F\re3B)!Q,2I!#!iI`!!2)"PH$bJCAJm`(GK21""56d!8e3j)!#!18!!&$L%G%3iTA4\rZ1-CXDcMR6NNj#&)M5!!!H@!!!!"mB!Fe3B)!8$Kq!!!mJ'9i1+!!!$M"!$`ii3!\ri1)4dENJ!"hQ!33!8I'!(08##!#LS!3!mX"m!))!"!$L3!"m!)NJ!!"5S!3!mX"m\r!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrmJm(rq%k!!#"m#!+Q[Z(rh*!\r!!3!)P#(rF$Y$!!!kj!!!1`8!!$YQ!!!lK`!!1kJ!!$[*!!!lkJ!!UcS!)$J!rrq\r`'J!J1!$rrj!!'J!L1(N!!$LA!!#)ZJ!'1-%!A$MK!&K)!!E4J%%!&(aJ"c9!JJ$\r3I"Li3%'#!#3iH3!!1*J!!)Lk!!Bi`3"811%!8%J!"U@!33!85!!!&+J"!&b`!3"\r8J!%!@*!!!3"3I'!(08##!*!!U!%!9,!"!%U!!3"3N!!"!%bc`3"%Xq%!4SJD!!D\rB!3")Nf%!1*1"!$b6S3"!U'%!A)#"!&JiS!!!1-!!!B$L!#`j!3!i5!!$L@!!!!"\rmB!Fe3))!2)#"!%b!!3"3I!3!!%##!"`iB2r91!$rrl!D!#!i!2rrN!!D!#*)!!!\r8U!%!5V!D!##!!3"-N!!D!#+!!3#B1#%!N!"m#!1QZZ(rh%k!!#"m#!+QNq(rr*2\r"rrL6SIrdNi(rm*!!!3!)P#(q3$Z$!!!lT!!!I,mVH)"m!#5!(`!!I!-!3%##!FL\r!I!!JJ"m!"(`$!%"!JJ'i1'!!!%J!"Df!33!8U(`!&S#F!'5![!!51-!!!8J!"Df\r!33!8I(iEH$KJ!!&)!!@&J%%!&%J!"Df!33!8I'!(08##!95!I`!)2!1XV#J!8L0\r!JJ"81'!!!%J!"9Q!33!82'"69+LI!!`iBe)M5!!&MB""!"4mI"Yi1'!!!8J!"6@\r!33!8+"`!!%'#!43iB3#NU*m!$+Lr!!j)!!9jJ%%!&%J!!&#!I`!)U*m!$%J!"8f\r!33!8I(`EH%J!"5Q!33!8+"`!!%'#!0#!I!!!1)%!T)#m!!#)"3!!I!8(G$LP!!&\r)!!9*J%%!&%J!!!K)!!#S1!%!T*!!!3"+U"m!%V!"!%k!(`!8N!!"!'Ji!!!!X!%\r!9$KK!$K)!!8YJ%%!&(aJ"c9!JJ!BU!%!6V!I!"+!!3"SN!!I!"4)!!"JI'!(0#`\r!riK"JJ!3I'!(0#`!rp9!JJ!iL"m!%#J!!!""JJ!X1'%!1%J!"2Q!33!8I'!(08#\r#!"LS!3"1X"m!%S!"!'L3!"m!&%J!!"3i!2rrX"m!%MJ!rrq3!"m!&$J!!!'B(3!\r!Im!(0#`!rrp"JJ!3Im2cH%J!"-@!33!8J!%"b$JK!F"m#!1QJq(rr)2"rrL$SIr\rdJi(rm%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`1k-!!$[N!!#J(`#d+!!\r!!%'#!"5JI`#fS"m!Y(`$!%"!J!#m1m!!!D"r!,Bi!`!"X"m!YV2I!##6[`!d1(m\r!"%J!""@!33!8X(m!X+JI!,!X!!!!3))!3$Kr!!3iR`#bJ,m!Z)'I!!")!!40J%%\r!&)JI!#*8!!Eh3B)!()JI!,)S!!!!3))!%)"r!$4rj2Yi5rrr@6[H!!'S(`#`,!!\r!!%##!"#)(`#b+!!!!%'#riLS(`#`,!$re8'#!"#S(`#`,!$XH%##!!`i!!!!X"m\r!X+"r!,Bi!rrrX"m!YS!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp%k!!#"m#!+Q[f(\rrl*!!!3!)P#(qi$YM!!!lK3!!1kB!!$[(!!!lk!!!+"i!!%'#!+3iH`!!1,`!!$M\r"!$`ii3!i5!!"q@!!!!"mB!Fe3))!L)J"!$JS!!!"3))!F$Km!!!iQ`!!1+%!1NJ\r!!C&J!!!!I'!(08##!'#6`3"!1!%!X*!!!3"@U!%!1V!"!&Si!!!!Q!%!X$J!!!#\r`!3$`1!!!!*J"!2+cS3$d1!!!!,!"!2D6i3$iJ'%!2$L"!%",rrijU'%!m%J!!"!\riB2q)5!!!#$KJrmk!!3%S1#%")(`)!kDlBIrX6S!!)(`)!UD6iIrmN!!"!!L8)Il\r!I,mVH#JI!!""JJ"JX*m!&LJ$!!"!JJ!B1!!!!*!!(`!51!!!!,!I!"a)!!!S1)%\r!1)LM!!!iT3!"5!!#'B""!"3i!3!iN!!I!")i!2rrX"m!((rMqhK)!!*GJ%%!&$J\r!!!#3!"m!%NJ!!!JiB2r1J!%"5$JK!8"m#!1QJq(rr%k!!#"m#!+QNq(rr*!!!3!\r)P#(rS(cI-hJS"3!!3B)!%)J&!!!S!!!!3))!)$J!!!#B!3!i1!%!1*!!(`!51!$\rrrl!I!"a)!!!3N!#r!")i!!!!X"m!(,"r!"D3!*m!-(rMqhK)!!'0J%%!&$J!!!#\r3!"m!%S!"!'Ji)3"JI!J$TS2Krra1J!!JI!J#TT2Krrb3!!%!#*3Krd"m[bYi1+%\r!1%[rrYPmB!Fe3))!$+J"!%k`(`!!J!%!b$JK!-"m#!1QJq(rr%k!!#"m#!+QNq(\rrr*2"rrL3!!%!#*3Kre!laJ!!1qF!!$M"!$K,rrmKI'!(08##!%#)!3"@9!3'pMJ\r!!!"mK!"3-!6rrh`!)4#B(`!!L"m!!#J!!!""JJ!3J!%!D*!!(J!!5!!!$)!"!*b\r3!"i!!)!"!,Ji)3#`I!J$TS2Krrb$`Iri6S!!))'#!##3!%%!&)!-!!#!6!!%I!N\r$TNk!"##"JJ!3N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!+*!!33!8J!`!!)"-!!4\rm#31Q6S!%))'#!"b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!)N!""!"5!$!!!J%`\r!"(`*!kC1J!3JJB)!$*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!#\r!6!!%I!N$TNk!"##"JJ!NN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`\r!!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!!N!""!"5\r!$!!!J%`!"(`*!kC1J!3JJ!`!!*!!33!8I!N$TS"-!!41J!3J6S!!)!#3"5mK1!S\rL!b`%!!!"BJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!\r!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2rirrKrr!Iq!ri"r$!\r!c-#c-)`)J`L!b22SRbL++)SSRqMkD"dX"Qi$lJ"m!!&%G!!!!!J!!2q3"J!"c*!\r%rrm!!TQ3"2rr!!0QN!6-c!!%hGd!N!8&lT!'!!C%N!B!"b+3"J!2!*!(r`#3"[B\rLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$rra&2rf,`!29\r84%49mr!!p9Aa49Acm!$e98(e9I2`!29842rrmr!!rrp"p9rcm!!$2f-I9I2h!!!\r!$r9ImrG`!!!!rrrcph!!!!!$2rph!!!!"T*J#J!!58aB3a1D!!"1qJ!%6R9)jaJ\rJA8mNE`!@1#S!)$9mrrm!)($r*8!!)Ja5!!4Q!!%f98mr"#mU!!)I+J!'5'm!$NK\r[!!j`!+JM-"mf!'F!!3Je4!!J,c`!J!!#,ca69&)M,ca"58j*,caQB@aX,ca`FQ9\rQ,caPH(4Z,`T1ZJ$b0J"2l`!FC`!!fM9%!#![2!#!!!)[2&088L-[2%&*6NN[2'C\rKE'`[2("bC@B[2'9iG%3[#Nkk!,Sf!%r[!"aR!!#L083!)#mm!)!!!Lmm8e45)bm\rm38P155mmGf&XDbmmF(*PCLmmCAKdELm+6VS!JMB!6qm!('GU083!)#mm!)!!!Lm\rm8e45)bmm38P155mmGf&XDbmmF(*PCLmmCAKd4#m+6VS!6$B!6qm!('Fd98mr"#m\rmF(*PCN)R5'm!$NK[!!j`!+JM-"mf!'B@0@m!"!!J*9F!)Q!+0@m!"!!J*9F!)M9\r$!"jF6dcI""JZRdje51FB)%r[rp`NE`!d1#S!)$9mrrm!)($r*8!!)P922`3[,`!\rm(bS!"NK[!"")E`!3F!#S)c!I0J"Q!!#Z)#m!2,#[!$KR(P922`3[,`"!(bS!"NK\r[!!T)E`!@F!#S)c!I0J"J#Mk[!!B[E`!#!!K+3fCf2eF!(Lp[!!J!)$p[!%`!'$p\r[!%i!'KpU!!B!(#p[!%!!$#p[!%3!%#p[!%J!&&922bm!##m[!!C#Tcmm!!&)HJ"\r#5'm!(Nkk!L!`(cB!CLBJ,`!JX+m!#'B3GY8eI2rr!#"`rb9!!#*J$$9[!"i!)#9\r[!#!!)M!$6qm!*%cI""K1G8MR'$*2lrk8,'m"M#4[!B5AbhB!H2mJ,J!NX**Q!!%\rN)#i!),#U!!4Q!!%B3LHTQe922bi!&LmZ!'3[,J!5(c`!!DJD-"mi!"mm!!'TQe9\r2UDm`(cB!CJ!!f!bU8e45)`!)CM*#*kQE@8m[2&088L-r+J!-U"mJAbC)(c`!!DQ\rE)!YR!!#d5&Fr+J!-2bS!$Nkk!e4J-PP2,bS!#$mU!!bS(b"I*NK96kQ[-"mf!#!\r,Ca)J8a!35)"53%M!)&0$ek)ZB!4fcQ"S3GF[5!%52fS!%J%@,fS!&!%`3Qm"(%(\r[!3"`#D*J0J"Q$M9[!4B!%L9[!6!!&'!i$%2rL'F'$%2re@BJ5LS!%'FD3Hm"!(!\r'SQ!f!'B10@m"&J!5*@m"-!!8B!`eI2rr!"*`rb9!!"3JE`')%,`!!3a%rrpR"$m\r%UCT2l`&X60p-'#"I6qm!$%l351FB)#J[!"!NE`!85QS!Y'F+-#S!YV"U!,4NFRB\r"8QS!YM9$!#!P4!!d3HS!"(!*SQ!e3!#`5QS!X'BX5'S!"%KU!,)[+J#i)&*1N!!\r3+J!L!N!!%'F55LS!XQB-,`S[+J!d6VVrR&"28N0+DJ#`CJC++J#bCk`-D[r9!,"\rR#!aUl(J!X'B%3QS!X&0U!,C-h`3B6R8[!dr[rca+V`$3C`!!MP922bm!i#m[!0i\r[,`$H5'm!%%K[!"&1ZJ'!-"mf!'CZ$#m!!3!"CQ"96bm[!0Jr,`$N5'm!#Nkk!5J\r`(cB!CNi[E`$3!!K"l`!)3HJ!F#p)!"irE`!#!#*#,`"i3Qm!Z%)[!,SrE`$8!,a\r#E`#q,fm!c!$!5'm!##m[!!K1Z[lJ0Lm!`&"2B!CfL'!#GXir3`$J6qm!a#BI)&p\r2l`!86Y")ja!`6qrr!#C[!4BNE`%3)!TR1M9[!43!&L!,CJT#UJ!53QS!('!D)%Y\r$eh!!%"053%M!SLj"eb9)!")eI2rr!"`J5U)(0J"#UJ!5B!*fcMp$!4T2l`%!60m\r-##"I6qm!#Nl351F3-%r[rq!QE`!d*'m!-#!,C`4+%fB33KG"eb9)!")eI2rr!"a\rJ##9,!"*#DJ!F0@m!2!!@*@m!1!!`)%T`#D*J0J"#UJ!52d-!2Nr[!#"-h``))&p\r2l`!16Y![!dr[riC96bm[!)Sr,`#-5'm!#%kkrbS`(cB!CJJJE`##-+m!&Mp$!)a\r2l`"k*KmJAdr[!!T1d%MR%$"2lrq8*Qm!J#4[!(a96cm[!)i[,`#-,bm!M%K[!!a\r1Z[p)-"mf!'BD%#m!(J*!!""@`%3!&)"R"LD[!$"J"#D[!'3r3`#16qm!E%cI$!J\rJAdr[!"*1d%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a#%5!ICb)J3#"3-"Jb,J!)CaD\rb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!!!![j5Qpj)A"PCQC`Gh"M!!!\r!!ECDQ9-!N!d$!!)!N!6rN!3!N!B+,!!!#L`!!!SX!!!"`!!%"!$rN!3!N!G%!!!\r!3!!!!!N!!![`!J%%!2q3"!#3$J%d!!!!J!3%"!#3#!%!!!!`rj!%!*!%rj!%!*!\r(!3!!!!X!!!!"!!!!L!!!!*!!!!!",!!!!!%!N"-,!*!)!J!!#J)!!"S#!!!U!J!\r!0`)!!%3#!!"2!J!!A!)!!'S#!!"c!J!!IJ)!!)m!!3#3"3-!N!4+#N)!4J%!!%0\rKFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*$FQ9KG'96H@jM!%GPG$&5CA0\r[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"$E'pcC9*PFdCTE'8!3Qa[BfY\r0EhCP4'&dB3"5CA0&FR*[FJ"'D@jN4QpXC'9b!&"#4f9d3f&d5@jQEe0jEQ-!5%p\r`C@j5CA0'D@aP!*!9I!J#TT2Krrb6`IriN!!"!!L8)Iq`I(mEH+[I!#!i!2rrX"m\r!)$J!rrq3!"m!)UJI!!!X!!!%3))"Q(r$mhL!R`!#L,m!"MM"!$`ii3!i5!!)`B"\r"!"4mB!Fe3B)"B,2I!#!iI`!!2)"PH$bJF()m`'CK21""56d!8e3j)!#!18!!!ML\r%G'iiT@9Q1-CXE$MR6NNj#&)M5!!"8@!!!!"mB!Fe3B)"+,2I!#!iI`!!2)"PH$b\rJF()m`'CK21""56d!8e3j)!#!18!!!ML%G%3iT@9Q1-CXE$MR6NNj#&)M5!!"#@!\r!!!"mB!Fe3B)!i,2I!#!iI`!!2)"PH$bJF()m`(GK21""56d!8e3j)!#!18!!!ML\r%G'iiT@9Q1-CXDcMR6NNj#&)M5!!!`@!!!!"mB!Fe3B)!Q,2I!#!iI`!!2)"PH$b\rJF()m`(GK21""56d!8e3j)!#!18!!!ML%G%3iT@9Q1-CXDcMR6NNj#&)M5!!!H@!\r!!!"mB!Fe3B)!8$Kq!!!mJ("b1+!!!$M"!$`ii3!i1)4PCNJ!"hQ!33!8I'!(08#\r#!#LS!3!mX"m!))!"!$L3!"m!)NJ!!"5S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"\rB1#%!8(`)!kD$iIrmJm(rq%k!!#"m#!+Q[Z(rh*!!!3!)P#(rF$Y$!!!kj!!!1`8\r!!$YQ!!!lK`!!1kJ!!$[*!!!lkJ!!UcS!)$J!rrq`'J!J1!$rrj!!'J!L1(N!!$L\rA!!#)ZJ!'1-%!A$MK!&K)!!E4J%%!&(aJ"c9!JJ$3I"Li3%'#!#3iH3!!1*J!!)L\rk!!Bi`3"811%!8%J!"U@!33!85!!!&+J"!&b`!3"8J!%!@*!!!3"3I'!(08##!*!\r!U!%!9,!"!%U!!3"3N!!"!%bc`3"%Xq%!4SJD!!DB!3")Nf%!1*1"!$b6S3"!U'%\r!A)#"!&JiS!!!1-!!!B$L!#`j!3!i5!!$L@!!!!"mB!Fe3))!2)#"!%b!!3"3I!3\r!!%##!"`iB2r91!$rrl!D!#!i!2rrN!!D!#*)!!!8U!%!5V!D!##!!3"-N!!D!#+\r!!3#B1#%!N!"m#!1QZZ(rh%k!!#"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(\rq3$Z$!!!lT!!!I,mVH)"m!#5!(`!!I!-!3%##!FL!I!!JJ"m!"(`$!%"!JJ'i1'!\r!!%J!"Df!33!8U(`!&S#F!'5![!!51-!!!8J!"Df!33!8I(iEH$KJ!!&)!!@&J%%\r!&%J!"Df!33!8I'!(08##!95!I`!)2!1XV#J!8L0!JJ"81'!!!%J!"9Q!33!82'"\r69+LI!!`iBe)M5!!&MB""!"4mI"Yi1'!!!8J!"6@!33!8+"`!!%'#!43iB3#NU*m\r!$+Lr!!j)!!9jJ%%!&%J!!&#!I`!)U*m!$%J!"8f!33!8I(`EH%J!"5Q!33!8+"`\r!!%'#!0#!I!!!1)%!T)#m!!#)"3!!I!8(G$LP!!&)!!9*J%%!&%J!!!K)!!#S1!%\r!T*!!!3"+U"m!%V!"!%k!(`!8N!!"!'Ji!!!!X!%!9$KK!$K)!!8YJ%%!&(aJ"c9\r!JJ!BU!%!6V!I!"+!!3"SN!!I!"4)!!"JI'!(0#`!riK"JJ!3I'!(0#`!rp9!JJ!\riL"m!%#J!!!""JJ!X1'%!1%J!"2Q!33!8I'!(08##!"LS!3"1X"m!%S!"!'L3!"m\r!&%J!!"3i!2rrX"m!%MJ!rrq3!"m!&$J!!!'B(3!!Im!(0#`!rrp"JJ!3Im2cH%J\r!"-@!33!8J!%"b$JK!F"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+QNq(rr*2\r"rrL6SIrdN!!"!!L8)Iq`1k-!!$[N!!#J(`#d+!!!!%'#!"5JI`#fS"m!Y(`$!%"\r!J!#m1m!!!D"r!,Bi!`!"X"m!YV2I!##6[`!d1(m!"%J!""@!33!8X(m!X+JI!,!\rX!!!!3))!3$Kr!!3iR`#bJ,m!Z)'I!!")!!40J%%!&)JI!#*8!!Eh3B)!()JI!,)\rS!!!!3))!%)"r!$4rj2Yi5rrr@6[H!!'S(`#`,!!!!%##!"#)(`#b+!!!!%'#riL\rS(`#`,!$re8'#!"#S(`#`,!$XH%##!!`i!!!!X"m!X+"r!,Bi!rrrX"m!YS!"!&J\ri)3"3I!J$TS2Krrb$`IriJk(rp%k!!#"m#!+Q[f(rl*!!!3!)P#(qi$YM!!!lK3!\r!1kB!!$[(!!!lk!!!+"i!!%'#!+3iH`!!1,`!!$M"!$`ii3!i5!!"q@!!!!"mB!F\re3))!L)J"!$JS!!!"3))!F$Km!!!iQ`!!1+%!1NJ!!C&J!!!!I'!(08##!'#6`3"\r!1!%!X*!!!3"@U!%!1V!"!&Si!!!!Q!%!X$J!!!#`!3$`1!!!!*J"!2+cS3$d1!!\r!!,!"!2D6i3$iJ'%!2$L"!%",rrijU'%!m%J!!"!iB2q)5!!!#$KJrmk!!3%S1#%\r")(`)!kDlBIrX6S!!)(`)!UD6iIrmN!!"!!L8)Il!I,mVH#JI!!""JJ"JX*m!&LJ\r$!!"!JJ!B1!!!!*!!(`!51!!!!,!I!"a)!!!S1)%!1)LM!!!iT3!"5!!#'B""!"3\ri!3!iN!!I!")i!2rrX"m!((rMqhK)!!*GJ%%!&$J!!!#3!"m!%NJ!!!JiB2r1J!%\r"5$JK!8"m#!1QJq(rr%k!!#"m#!+QNq(rr*!!!3!)P#(rS(cI-hJS"3!!3B)!%)J\r&!!!S!!!!3))!)$J!!!#B!3!i1!%!1*!!(`!51!$rrl!I!"a)!!!3N!#r!")i!!!\r!X"m!(,"r!"D3!*m!-(rMqhK)!!'0J%%!&$J!!!#3!"m!%S!"!'Ji)3"JI!J$TS2\rKrra1J!!JI!J#TT2Krrb3!!%!#*3Krd"m[bYi1+%!1%[rrYPmB!Fe3))!$+J"!%k\r`(`!!J!%!b$JK!-"m#!1QJq(rr%k!!#"m#!+QNq(rr*2"rrL3!!%!#*3Kre!laJ!\r!1qF!!$M"!$K,rrmKI'!(08##!%#)!3"@9!3'pMJ!!!"mK!"3-!6rrh`!)4#B(`!\r!L"m!!#J!!!""JJ!3J!%!D*!!(J!!5!!!$)!"!*b3!"i!!)!"!,Ji)3#`I!J$TS2\rKrrb$`Iri6S!!))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!3N!""!"5!$!!\r!J%`!"(`*!kC1J!3JJB)!+*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"b3!%%!&)!\r-!!#!6!!%I!N$TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!$*!!33!\r8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!"\r"!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"5\r3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3JJ!`\r!!*!!33!8I!N$TS"-!!41J!3J6S!!)!#3"5mK1!SL!b`%!!!"BJ#3")!)!*!&%!!\r3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c\r!rr$rq2rirrMrq2rirrMrq2rirrKrr!Iq!Ii"r$!!c-#c-)`)J`L!b22SRbL++)S\rSRqMl+"NX"bi"lJ"m!!&(i3!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!\r%hGd!N!8&lT!'!!C%N!B!"b+3"J!2!*!(r`#3"[BLr`$r!!!!m@BLrb(r!!$a%@B\rL)K,`!2%4%@BL)[!!m4%4%@BLm!$rra&2rf,`!2984%49mr!!p9Aa49Acm!$e98(\re9I2`!29842rrmr!!rrp"reAcm!!$2f-[9I2h!!!!$fp9mrG`!!!!$rrcph!!!!!\r$2rph!!!!##jJ#J!!58aB3a1E!!"1qJ!%6R9)jaiJA8mNE`!H1#S!)$9mrrm!)($\rr*8!!)Ja5!!4Q!!)898mr"#mU!!)I+J!'5'm!$NK[!!j`!+JM-"mf!'F!!HBU2'9\riG'ie4!!J,c`!J!!#,ca69&)M,ca"58j*,caQB@aX,ca`FQ9Q,caPH(4Z,`T1ZJ(\r+0J"2l`!FCcSU2'9iG%3e4!!J,c`!J!!#,ca69&)M,ca"58j*,caQB@aX,ca`FQ9\rQ,caPH(4%,`T1ZJ'10J"2l`!F5N0QCM`U!#!e4!!J,c`!J!!$,ca69&)M,ca"58j\r*,caQB@aX,bS!)Mm',`8[#Nkk!NSf!%r[!"jR!!%q98mr"#mmF(*PCN)R5'm!$NK\r[!!j`!+JM-"mf!'B!!4ieE`!%!#!P9`!LB!!"%#SmCAKdEM9%!#![2!#!!!)[2&0\r88L-[2%&*6NN[2(GKE'X[2("bC@B[2'9iG'i[#Nkk!1Sf!%r[!"aR1LSmCAKd4$9\r%!#![2!#!!!)[2&088L-[2%&*6NN[2(GKE'X[2("bC@B[2'9iG%3[#Nkk!+if!%r\r[!"a+3fCJ2#S!)$9%!#![2!#!!!-[2&088L-[2%&*6NN[2(GKE'X[+J!L2`B["5m\r+6VS"DMB!6qm!(QGH98mr"#mmF(*PCN)R5'm!$NK[!!j`!+JM-"mf!'C!0@m!"!!\rJ*9F!)Q!d98mr"#mmF(*PCN)R5'm!$NK[!!j`!+JM-"mf!'B@0@m!"!!J*9F!)Q!\r+0@m!"!!J*9F!)M9$!"jF6dcI"(JZRdje51FB)%r[rp`NE`!d1#S!)$9mrrm!)($\rr*8!!)P922`3[,`!m(bS!"NK[!"")E`!3F!#S)c!I0J"Q!!#Z)#m!2,#[!$KR(P9\r22`3[,`"!(bS!"NK[!!T)E`!@F!#S)c!I0J"J#Mk[!!B[E`!#!!K+3fCf2eF!(Lp\r[!!J!)$p[!%`!'$p[!%i!'KpU!!B!(#p[!%!!$#p[!%3!%#p[!%J!&&922bm!##m\r[!!C#Tcmm!!&)HJ%!5'm!(Nkk!Yi`(cB!CLBJ,`!JX+m!#'B3GY8eI2rr!#"`rb9\r!!#*J$$9[!"i!)#9[!#!!)M!$6qm!*%cI""K1G8MR'#"2lrrL*'m!,MJU!#!eI2r\rr!#"`rb9!!#*96cm%,bm!0KmU!!C)E`!15'm!$R!!U#-`(cB!CRJrE`!f!"J[E`!\ri!"SrE`")!")rE`"+!"3IDJ!'!"B[E`!m!!B[E`"!!!S[E`"%!!j96cm[!!B[,`!\r%3UFr2!!"5(S!3NK[!"K1ZJ)J-"mf!'BQ)#m!'V#[!$KQ%(E90Acrr`!JF2mP3!!\rLB!`eE`!B!#!PE`!D!#)`!dr[!"j-h`3B6R9)jaJb6qrqP#a[!B`NE`'%PmYf!(M\rr)#i!*,#5CJ!"*#!Z!##`UJ!%CJ!"'%)RUCY96cmZ!"B[,J"N,bi!%Kmm!!'S'M!\rI1!!I2!!"UCY96kQ[-"mf!'B!!0J-UP088L-!#'Bb3LHTQeP2,ca69&)M2bS!$+J\rI)&mQ5"mm!!'TQb!,C`!!Y%KA2bS!$$mU!!j1ZJ08B$*C6bmU!!Jr+J!-U"mJAbC\r)98qTVc!I0J!J#fF5)&-3%%L!8N")`#"63pHL,Q!%GXjJD%(A,dJ"%MpU!")"&Lp\rU!"3"-%*[!4a"l`%!F!QLB$B!CJieE`%@!")PE`%`!"4J1!a$riKR"Ja$rp9Q)%S\rU!""R'N([!3"`"U*J0J"Q$M9[!4B!%L9[!6!!&'!-0Acrr`!5F2mP3!!8)'m"L"#\rm!!%-42rrC`3r"+QD6qm"E%cI6"JJAdr[!!a1d%MR'#!S,`!3*'m!&%TU!,4R#M!\rU!,D`DJ#dC(*f!9*U!,Be3`!J*83!0%(U!!4`#D*J08!!X%TU!,"Q,%KU!!4)DJ#\rb,bS!Z#"56T!!%#S!)J*!!""R%NSU!,*Q$#m+,bS!0%kkrja36e*$5QS!X'B'5LS\r!XQHX$'Vre3#`C`J-DZai!,"Q"%*U!,"6DJ#f60m%'%je,`02lrmm5Um!d'F!!)j\r96cm[!1![,`$H,bm!hNK[!"")E`!46VS"J$!I0J"QEJ`[!!%!!@CJ98m[,`$B2bm\r!j%K[!!T1ZJ%S-"mf!'C1,fm!d!!)3Hm!#%(S!(![5!!H2fm!!J!L3Lm!H%*[!,K\r#,`#k2fm!e!#m3Qm![Lp[!-`!`%K[!!J[,`!)6VVqi$B[!-"36f!'GSKJ!RE12d-\r!i%r[!-3Q(b"I6qm!&%l351F3-%r[r`!QE`%@*'m"%#!+CcSeE`%8!"BJ#fB+3US\r!%N*U!"aJ'L",3pG`!"!68N")`+)Z3GFP5!!50Acrr`!F)%UL"cB!3US!%Q!#GXi\rr3`%D6qm"!%cI$!JJAdr[!!T1d%MR%$"2lrrJ*Qm!0#4[!$!J#fF%5K0Q%%)A3GF\rP5!!50Acrr`!FB!JP5`!53QS!($9[!$`!&L9[!$J!-#"+F!QLB$B!3US!%Mp$!$j\r2l`!J60m-##"I6qm!$Nl3,`02lrq'98m[,`#+2bm!M%K[!!K1Z[mU-"mf!'B))'m\r!JM#[!"Br3`#-6qm!HLBI)&p2l`!+6Y")ja!`6qrrP#C[!)!NE`"m98mr,`#1,bm\r!M#m[!)a)E`!-6VVr5$!I0J"Q'K![!"i#3!!39X"%!"5!C`BQV`!`B!3QV`"N2d-\r!MNr[!'a-h``))&p2l`!56Y"19J!!@8m[2&088L-r,J!+UD!LEJ!-3K%J(fFL)%!\rJ8$!B-Li!#'F@XN"L%R!!8d&R"K!BdF"JpK!38N#J,NjH)&p3Mdl3!!!1'8T[H5&\r`C@CQF(G`B`!!!!'f,,@3!!#3$3-!!J#3"2q3"!#3"Ja3!!!-8!!!$&!!!!(!!!3\r%!2q3"!#3"d3!!!"!!!!!#3!!$K!#!33!rj!%!*!1!63!!!#!"!3%!*!)!3!!!$$\rrN!3!N!6rN!3!N!F"!!!!#`!!!!%!!!#)!!!!N!!!!!%X!!!!!3#3%`X!N!J#!!!\r+!J!!'J)!!#S#!!!h!J!!4!)!!%m#!!"F!J!!DJ)!!(-#!!"q!J!!M`!"!*!&!`#\r3"%S+3J"'!3!!3f&bBQpZ6'PL!&"#5%GPG&C*EQC[8hPZB`"33N4TFN0bC@&dC90\rjEQ-!4f9d-9*PFfpeFQ0P!%GPG%PZC&0dFQPZC`"6CA45CA0-Ef&N!%0XEh0P8Q9\rc4QPXC3"#E'pMDde[GQ9%BA4K!&*PFd9bFQpb!%CTEQ4'EfaNCA)!8%*(CA4$BA4\r*EQC[8hPZB`")6h"PEP*PFdCTE'8!N"9m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq\rJI(iEH+[q!#!i!2rrX"i!)$J!rrq3!"i!)UJH!!!X!!!%3))#`(rMqhL!RJ!#L,i\r!"MM"!%3ii3"!5!!+iB""!"4mB!Fe3B)#L$qJCAJl[A4ZXri!)$Kq!!!mJ'9i2+"\r`FMc!CQ%mi%&*23"69$NJ!)!j3!!#1)4dEMLPC@BiaQaX11G156N)8L0)!!*eB!!\r!!(aJ"c9"JJ"-2k"PH$ZpG%5crJ!J1(i!!$b!CAJmS("b2-"QB6cJ38Np!&0815!\r!J$P!!!)iK(4%1+9PCMM'E'`ijdj*13K5)dJ!!L9J!!!!I'!(08##!)LS[J!JXri\r!)$J!!!13!!%!1$Kq!!!iR3!!J0i!)McJCQ%p!%&*25"69$P!!)!ijfaX13K156N\rT8L0)!!-PB!!!!(aJ"c9"JJ'`1(m!!$b!F()iS!!!1-%!4$MK!%!iK'9Q5!!*dB"\r"!"4mB!Fe3))"L+J"!%5`(J!JJ!%!3*!!(J!L5!!"G$qJCAJl[A4ZXri!)$Kq!!!\rmJ'9i2+"`FMc!Gf%mi%&*23"69$NJ!)!j3!!#1)4dEMLPC@BiaQaV11G156N)8L0\r)!!&4B!!!!(aJ"c9"JJ"-2k"PH$ZpG%5crJ!J1(i!!$b!CAJmS("b2-"hB6cJ38N\rp!&0815!!J$P!!!)iK(4%1+9PCMM'E'Xijdj*13K5)dJ!!3&J!!!!I'!(08##!)L\rS[J!JXri!)$J!!!13!!%!1$Kq!!!iR3!!J0i!)McJGf%p!%&*25"69$P!!)!ijfa\rV13K156NT8L0)!!)"B!!!!(aJ"c9"JJ#-1(m!!$b!F()iS!!!1-%!4$MK!%!iK'9\rQ5!!)VB""!"4mB!Fe3))!C+J"!%5`(J!JJ!%!3*!!(J!L5!!!8$Kr!!!mJ("b1+!\r!!$M"!%3ii3"!1)4PCNJ!#('!33!8I'!(08##!#LS!3"%X"i!))!"!%#3!"i!)NJ\r!!"5S!3"%X"i!))!"!%#3!"i!)V"q!"k!!3"S1#%!B(`)!kD$iIrmJm(rq)1Krr4\r1J!!JI!J#TVlKrpb3!!%!#*3Krh!l3`!!1Z3!!$X&!!!lCJ!!1iF!!$ZS!!!lb3!\r!1qS!!+Xk!#!i!2rrX"S!)$J!rrq3!"S!)MKj!!!iP`!!L,S!"MM"!&`ii3"B5!!\r(aB""!"4mB!Fe3))!d(`BZ%""JJ!N1(N!!$LB!!#)ZJ!'1-%!9$MK!&")!!HCJ%%\r!&%J!!"5S!3"FX!%!9)!"!&L3!!%!8(aJ"c9!JJ#3!+J"!&5`!3"+J!%!8*!!!3"\r-Xm%!4,2K!%D)'J!'Q!%!5*0K!$L6J3!mNk%!3+KK!&b!J3"B1+!!!$M!!!'!iJ!\rX13%!1%J!"(eJ!!!!I'!(08##!$b!J3"-J!%!8(`%!!"!JJ!F1'$re6J!rrq`'J!\rJ1!$rrj!!'J!L5!!!&+J"!%U`'J!JJ!%!6*!!'J!LJ!%!Q$JK!*!!I!J$TVVKrpa\r1J!!JI!J#TVm"rq#3!!%!#*3Kri!l``!!1`8!!$[Q!!!l*`!!1dJ!!$YT!!!lLJ!\r!Uk%!ZUKq!#!i!2rrX"i!)$J!rrq3!"i!)SLq!!Bi`3"811%!8%J!"S@!33!8I'!\r(08##!)5c!3"+Nq%!6,1"!%5cS3"'L"i!"TJ"!%L6)3!iNd%!2*0K!%#SB3"8J)%\r!8$LJ!!!i`!!"J1)!,$N"!$K)!!1&B!!!!(aJ"c9!JJ!iJ!%!6(`!q!"!JJ!F1'$\rre6J!rrq`(J!J1!$rrj!!(J!L5!!!&+J"!%U`(J!JJ!%!6*!!(J!LJ!%!L$JK!)"\rm#!1QZ`(ri%k!!#"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(q3$Z$!!!lT!!\r!I,mVH)"m!#5!(`!!I!-!3%##!FL!I!!JJ"m!"(`$!%"!JJ'i1'!!!%J!"Df!33!\r8U(`!&S#F!'5![!!51-!!!8J!"Df!33!8I(iEH$KJ!!&)!!@&J%%!&%J!"Df!33!\r8I'!(08##!95!I`!)2!1XV#J!8L0!JJ"81'!!!%J!"9Q!33!82'"69+LI!!`iBe)\rM5!!&MB""!"4mI"Yi1'!!!8J!"6@!33!8+"`!!%'#!43iB3#NU*m!$+Lr!!j)!!9\rjJ%%!&%J!!&#!I`!)U*m!$%J!"8f!33!8I(`EH%J!"5Q!33!8+"`!!%'#!0#!I!!\r!1)%!T)#m!!#)"3!!I!8(G$LP!!&)!!9*J%%!&%J!!!K)!!#S1!%!T*!!!3"+U"m\r!%V!"!%k!(`!8N!!"!'Ji!!!!X!%!9$KK!$K)!!8YJ%%!&(aJ"c9!JJ!BU!%!6V!\rI!"+!!3"SN!!I!"4)!!"JI'!(0#`!riK"JJ!3I'!(0#`!rp9!JJ!iL"m!%#J!!!"\r"JJ!X1'%!1%J!"2Q!33!8I'!(08##!"LS!3"1X"m!%S!"!'L3!"m!&%J!!"3i!2r\rrX"m!%MJ!rrq3!"m!&$J!!!'B(3!!Im!(0#`!rrp"JJ!3Im2cH%J!"-@!33!8J!%\r"b$JK!F"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!\r"!!L8)Iq`1k-!!$[N!!#J(`#d+!!!!%'#!"5JI`#fS"m!Y(`$!%"!J!#m1m!!!D"\rr!,Bi!`!"X"m!YV2I!##6[`!d1(m!"%J!""@!33!8X(m!X+JI!,!X!!!!3))!3$K\rr!!3iR`#bJ,m!Z)'I!!")!!40J%%!&)JI!#*8!!Eh3B)!()JI!,)S!!!!3))!%)"\rr!$4rj2Yi5rrr@6[H!!'S(`#`,!!!!%##!"#)(`#b+!!!!%'#riLS(`#`,!$re8'\r#!"#S(`#`,!$XH%##!!`i!!!!X"m!X+"r!,Bi!rrrX"m!YS!"!&Ji)3"3I!J$TS2\rKrrb$`IriJk(rp%k!!#"m#!+Q[f(rl*!!!3!)P#(qi$YM!!!lK3!!1kB!!$[(!!!\rlk!!!+"i!!%'#!+3iH`!!1,`!!$M"!$`ii3!i5!!"q@!!!!"mB!Fe3))!L)J"!$J\rS!!!"3))!F$Km!!!iQ`!!1+%!1NJ!!C&J!!!!I'!(08##!'#6`3"!1!%!X*!!!3"\r@U!%!1V!"!&Si!!!!Q!%!X$J!!!#`!3$`1!!!!*J"!2+cS3$d1!!!!,!"!2D6i3$\riJ'%!2$L"!%",rrijU'%!m%J!!"!iB2q)5!!!#$KJrmk!!3%S1#%")(`)!kDlBIr\rX6S!!)(`)!UD6iIrmN!!"!!L8)Il!I,mVH#JI!!""JJ"JX*m!&LJ$!!"!JJ!B1!!\r!!*!!(`!51!!!!,!I!"a)!!!S1)%!1)LM!!!iT3!"5!!#'B""!"3i!3!iN!!I!")\ri!2rrX"m!((rMqhK)!!*GJ%%!&$J!!!#3!"m!%NJ!!!JiB2r1J!%"5$JK!8"m#!1\rQJq(rr%k!!#"m#!+QNq(rr*!!!3!)P#(rS(cI-hJS"3!!3B)!%)J&!!!S!!!!3))\r!)$J!!!#B!3!i1!%!1*!!(`!51!$rrl!I!"a)!!!3N!#r!")i!!!!X"m!(,"r!"D\r3!*m!-(rMqhK)!!'0J%%!&$J!!!#3!"m!%S!"!'Ji)3"JI!J$TS2Krra1J!!JI!J\r#TT2Krrb3!!%!#*3Krd"m[bYi1+%!1%[rrYPmB!Fe3))!$+J"!%k`(`!!J!%!b$J\rK!-"m#!1QJq(rr%k!!#"m#!+QNq(rr*2"rrL3!!%!#*3Kre!laJ!!1qF!!$M"!$K\r,rrmKI'!(08##!%#)!3"@9!3'pMJ!!!"mK!"3-!6rrh`!)4#B(`!!L"m!!#J!!!"\r"JJ!3J!%!D*!!(J!!5!!!$)!"!*b3!"i!!)!"!,Ji)3#`I!J$TS2Krrb$`Iri6S!\r!))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!3N!""!"5!$!!!J%`!"(`*!kC\r1J!3JJB)!+*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"b3!%%!&)!-!!#!6!!%I!N\r$TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!$*!!33!8J!`!!)"-!!4\rm#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!""!"5!$!!!J%`\r!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!#\r!6!!%I!N$TNk!"##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3JJ!`!!*!!33!8I!N\r$TS"-!!41J!3J6S!!)!![)6J+)J93"!!!!@)!N!5!#!#3"4!!%!#3#8J!!!")!*!\r&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrM\rrq2rirrMrq2riIr`(rJ(q!I``!-c!Xc#-#)-)J-Mck*mSLLL++*rSqbJC,!FZ!Hi\r!I!!"5@8!!!!)!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0hG!*!&"Hk3"J!\r'4*!'!!FLN!B!$`#3"rm!N!Ef)[m!r`!!!2&Q)[mKr`!!m4&Q)L)5m!$a%4&Q)L,\r`!2%4%4&Q)[!!rrm46rpLm!$e9%4%9I2`!299m899mr!!p99"p9Acm!$e9%6rrr2\r`!2rr3Ip9mr!!!cpM,eAcp`!!!!p[9I2hF!!!!!rrmrG`!!!!!crrG`!!!!AUB!S\r!!%P-@%-6R!!!6[S!"%je51FB)&e2*'m!&MJU!#!eI2rr!#"`rb9!!#)-8J!%CJ!\r!MP922`3[+J!#(bS!"NK[!!j)E`!1F!#S)c!I0J"RB$9%!#![2,9X!!![2&088L!\r[2%P1593[2)aZC$B[2'9iG'i[2'9iG'i[#Nkk!%`f!%r[!"aR0&922`3[2'9iG'j\r#*dK[!!j)E`!1F!#S)c!I0J"Q&M9[!!3!)#9A!#*J#M9[!!3!)#9A!#)e3`!HA%p\r-h`3B,Tp1G8MR'#"2lrrF*'m!0$JU!#!eI2rr!#"`rb9!!#*96cm%,bm!2"mU!!C\r)E`!35'm!%(!!U#-`(cB!CJ!!VL![!$b`V`!iCaj96cm%,bm!3"mU!!C)E`!+5'm\r!&R!!U#-`(cB!B!SqV`!',fm!!J!)5N0QGMpA!"i[E`!)!#!rE`"-!"JrE`"1!"S\rIDJ!'!"`[E`"!!!`[E`"%!"![E`")!"496cm[!!J[,`!'3UFr2!!"5(S!3NK[!"j\r1ZJ)J-"mf!'BQ)#m!),#[!!KQ%(E90Acrr`!JF2mP3!!LB!`eE`!H!#!PE`!J!#)\r`!dr[!#4-h`3B6R9)jaJb6qrqP#a[!B`NE`'%PmYf!(Mr)#i!*,#5CJ!"*#!Z!##\r`UJ!%CJ!"'%)RUCY96cmZ!"B[,J"N,bi!%Kmm!!'S'M!I1!!I2!!"UCY96kQ[-"m\rf!'B!!0J-UP088L-!#'Bb3LHTQeP2,ca69&)M2bS!$+JI)&mQ5"mm!!'TQb!,C`!\r!Y%KA2bS!$$mU!!j1ZJ08B$*C6bmU!!Jr+J!-U"mJAbC)98qTVc!I0J!J#fF5)&-\r3%%L!8N")`#"63pHL,Q!%GXjJD%(A,dJ"%MpU!")"&LpU!"3"-%*[!4a"l`%!F!Q\rLB$B!CJieE`%@!")PE`%`!"4J1!a$riKR"Ja$rp9Q)%SU!""R'N([!3"`"U*J0J"\rQ$M9[!4B!%L9[!6!!&'!-0Acrr`!5F2mP3!!8)'m"L"#m!!%-42rrC`3r"+QD6qm\r"E%cI6"JJAdr[!!a1d%MR'#!S,`!3*'m!&%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,B\re3`!J*83!0%(U!!4`#D*J08!!X%TU!,"Q,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*\r!!""R%NSU!,*Q$#m+,bS!0%kkrja36e*$5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZa\ri!,"Q"%*U!,"6DJ#f60m%'%je,`02lrmm5Um!d'F!!)j96cm[!1![,`$H,bm!hNK\r[!"")E`!46VS"J$!I0J"QEJ`[!!%!!@CJ98m[,`$B2bm!j%K[!!T1ZJ%S-"mf!'C\r1,fm!d!!)3Hm!#%(S!(![5!!H2fm!!J!L3Lm!H%*[!,K#,`#k2fm!e!#m3Qm![Lp\r[!-`!`%K[!!J[,`!)6VVqi$B[!-"36f!'GSKJ!RE12d-!i%r[!-3Q(b"I6qm!&%l\r351F3-%r[r`!QE`%@*'m"%#!+CcSeE`%8!"BJ#fB+3US!%N*U!"aJ'L",3pG`!"!\r68N")`+)Z3GFP5!!50Acrr`!F)%UL"cB!3US!%Q!#GXir3`%D6qm"!%cI$!JJAdr\r[!!T1d%MR%$"2lrrJ*Qm!0#4[!$!J#fF%5K0Q%%)A3GFP5!!50Acrr`!FB!JP5`!\r53QS!($9[!$`!&L9[!$J!-#"+F!QLB$B!3US!%Mp$!$j2l`!J60m-##"I6qm!$Nl\r3,`02lrq'98m[,`#+2bm!M%K[!!K1Z[mU-"mf!'B))'m!JM#[!"Br3`#-6qm!HLB\rI)&p2l`!+6Y")ja!`6qrrP#C[!)!NE`"m98mr,`#1,bm!M#m[!)a)E`!-6VVr5$!\rI0J"Q'K![!"i#3!!39X"%!"5!C`BQV`!`B!3QV`"N2d-!MNr[!'a-h``))&p2l`!\r56Y"19J!!@8m[2&088L-r,J!+UD!LEJ!-3K%J(fFL)%!J8$!B-Li!#'F@XN"L%R!\r!8d&R"K!BdF"JpK!38N#J,NjH)&p3Mdl3!!!,+8T[H5&`C@CQF(G`B`!!!!'f,,-\rJ!*!0!`!#!*!%rj!%!*!'#93!!!P8!!!*9!!!!F!!"!3!rj!%!*!(4!!!!%!!!!!\r*!!!,)!)""!$rN!3!N!i"0!!!!)!%"!3!N!J"!!!!-2q3"!#3"2q3"!#3"`%!!!!\r,!!!!!3!!!)J!!!#3!!!!!5`!!!!"!*!6#`#3#!)!!!S#!!!D!J!!+J)!!$F#!!"\r%!J!!6`)!!&`#!!"U!J!!F`)!!(i#!!#2!!%!N!8$!*!%5JT#!%B"!!"$BA*LEfj\r-D@)!8%*)4f9d9NPZCQp6H@jM!&"#4'Pb3h*PBA4P8hPZB`"(CA3a8Q9cEh9bBf8\r!4f9d5@jN8h4bD@jR!&0PG&*PFda[B@3!3fa[Ff95CA0'D@aP!%*XEf0V6@pfC84\rKG'%!8Q9c4A*bEh)!4QPZC%C[E'4PFJ"33NGPG%0KG%PZCQp6H@jM!%K2F'9Z8Q9\rc4QPXC3#3&A`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hLVrJ!J1!$rrl!H!#!i!2r\rrN!!H!#+S(J!!,!!!"%##!-"rirYiJ*i!!SLq!!Bi`3!m11%!1%J!"qQ!33!8I'!\r(08'#!)LcrJ!J1(i!!$b!CAJmS'9i2-#-EMcJ58ip!&0815#eE$P!!!!iK(4Z1+9\rdEMM'C$BijdP813K5)%J!!(PJ!!!!I'!(08'#!&!iI`!!2)"PH$LJ!!!i`3!m11%\r!1$L%G'j)!!GjJ%%!&(aJ"c9!JJ!SU!%!2,!H!##!!3!iN!!H!#*)!!!8U!%!2,!\rH!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JI!J#TVlKrpb\r3!!%!#*3Krh!l3`!!1Z3!!$X&!!!lCJ!!1iF!!$ZS!!!lb3!!1qS!!+Xk!#!i!2r\rrX"S!)$J!rrq3!"S!)MKj!!!iP`!!L,S!"MM"!&`ii3"B5!!'dB""!"4mB!Fe3))\r!d(`BZ%""JJ!N1(N!!$LB!!#)ZJ!'1-%!9$MK!&")!!DPJ%%!&%J!!"5S!3"FX!%\r!9)!"!&L3!!%!8(aJ"c9!JJ#3!+J"!&5`!3"+J!%!8*!!!3"-Xm%!4,2K!%D)'J!\r'Q!%!5*0K!$L6J3!mNk%!3+KK!&b!J3"B1+!!!$M!!!'!iJ!X13%!1%J!!iPJ!!!\r!I'!(08##!$b!J3"-J!%!8(`%!!"!JJ!F1'$re6J!rrq`'J!J1!$rrj!!'J!L5!!\r!&+J"!%U`'J!JJ!%!6*!!'J!LJ!%!Q$JK!*!!I!J$TVVKrpa1J!!JI!J#TT2Krrb\r6`IriNk(rp*1"rr#3!!%!#*3KrN!lJ`!!1k3!!(br+hL!I!!NJ"m!!(`$!%"!JJ(\r)J(`!))!I!!4m!`"!3))"Z$KJ!!")!!@YJ%%!&+Km!"D!R!"NJ,`!%MM!!!&)!!@\rYJ%%!&(aq'hJiB!!"5!!&KB""!"4)!!@YJ%%!&(aJ"c9!JJ&8J(m!#$`$V+`S!&)\rM3))!9$KJ!!")!!9CJ%%!&$aJ8e5SR`!-1'05)dJ!"Bf!33!8I(`EH$KJ!!&)!!8\reJ%%!&#JF!!""JJ%81'%!T+LI!!bS[`!15!!&HB""!"4)!!"3J(m!#+LI!!a)!!9\r0J%%!&(am'hK)!!8TJ%%!&#JF!!""JJ$3J(`!!$L"!+5![!!!L!8!!(`&"h3iT3!\r"5!!&5B""!"4)!!!)5!!!U$J"!+53!!%!5UJI!"+`!3"1J"m!&*!!!3"S1!!!!,!\r"!&3iB3!i5!!&,B""!"4mB!Fe3))!'+J"!%k`(`!5J!%!D*!!(`!85!!!B(aJ"c3\rX!2q)3B)!%(aJ"c3X!2r93))!1)JI!"!S!!!!3B)!,$KK!$K)!!6jJ%%!&(aJ"c9\r!JJ!BU!%!6V!I!"+!!3"SN!!I!"4)!!!81!$rrl!I!")i!2rrN!!I!"3i!!!"Q"d\r!!(r!"c3X!2rr3B)!%(r$mhK)!!6&J%%!&)!"!FJi)3(!I!J$TS2Krrb$`IriJk(\rrp)1"rr"1J!!JI!J#TT2Krrb6`IriNk(rp*!!!3!)P#(rX$ZM!!!lj!!!S"m!Y#J\r!!!""JJ!8S(m!YU!I!,4m!`"!3)!![$[!!!'JI`#f1!-!!E!I!,Dch`!JNlm!0$K\rr!!4)!!39J%%!&,"r!,#S(`#`,!!!!%##!%!iI`!%1*m!XS#r!,L"R`!!5!!%6B"\r"!"5)(`!L9!!'pd'#!"b)(`#b+!!!!%##!"#!I`!dIq6lH%[rreNlhJ!"U"m!X#`\r!!!"!JJ!3L"m!XLJ!!!""J[q)U"m!X#`!rp9"JJ!3U"m!X#`!l(K!JJ!-1!!!!,!\rI!,#JI`#f1!2rrl!I!,D!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!JI!J#TVp\rKrqb3!!%!#*3KrZ!lB`!!1i8!!$ZQ!!!la`!!1qJ!!#JH!!""JJ#N1(X!!$Lm!!!\ri`3!m11%!1%J!!IPJ!!!!I'!(08##!)L)!3!i+!!!!8##!(!iI!!!1*X!!$LK!$T\r)!!'4B!!!!(aJ"c9!JJ"JNm%!3$J"!,#3!!%!9UJ"!$U`!3"D1!!!!*J"!,!i!!!\r!X!%!m$J!!!#B!3$bXk%!p$J!!!#`!3$fNq%!q)"K!$`iJ3"!5rrq1DKK!2")!!!\r31'$rL%J!!!JiB2r1J!%"+$JK!5"m#!1QZf(rl%k!!#"m#!+QNq(rr*!!!3!)P#(\rq`(br+hJS(`!!3B)!B,#I!"BS!`!!3))!'$J!!!#3!"m!%MJ!!!#`(`!F5!!!+$L\r"!$L)S`!!1+8!!8J!!KQ!33!81!%!1*!!(`!51!$rrl!I!"arirYi5!!#AB""!"3\ri!!!!N!!I!"*)!!!)1'$rcS!"!8Ji)3&!I!J$TS2Krra1J!!JI!J#TT2Krrb3!!%\r!#*3Krk"mhc0i+!8!!%'#!"#)"3!!+!!!!%##!#!i!!!!Q!%!1$J"!$L3!"m!%MJ\r!rrq`(`!F5!!!%*!![`!51!!!!,!I!"b`I`!@N!#I!$"rirYi5!!"MB""!"3i!!!\r!N!!I!"+!!3"S1#%!B(`)!kD$iIrm6S!!)(`)!UD6iIrmN!!"!!L8)Ip!I,mVH$L\rK!$K,rrlCI'!(08##!!bS!3"1X"m!!)!"!-Ji)3$!I!J$TS2Krra1J!!JI!J#TT2\rKrrb6`IriN!!"!!L8)Ip31mB!!$[R!!!i`3!i5rrr)AaJ"c9!JJ"!L!%!9P3%"[B\ri!!!!I)3!8$!%rrpm!#%3Q"m!!)JI!!!S!!!!3B)!%)!"!'L3!"i!!%J!!!b!!3#\rFN!!H!!#!!3#i1#%!X(`)!kD$iIrmJm(rq%k!!##"JJ!JN!""!"5!$!!!J%`!"(`\r*!kC1J!3JJB)!%*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#L3!%%!&)!-!!#!6!!\r%I!N$TNk!"##"JJ!FN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`!!)"\r-!!4m#31Q6S!%))'#!!b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5!$!!\r!J%`!"(`*!kC1J!3JJB)!**!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!53!%%!&)!\r-!!#!6!!%I!N$TNk!"##"JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*!!33!\r8J!`!!)"-!!4m#31Q6S!%))!-!!#3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!d[)6J\r+)J*8"!!!!C)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!8\r3!"!!N!8#!*!&%!!3!*!%F!$m!2r!rr$rq2rirrMrq2rirrMrq(riIrarrRrq!(a\r`!2`![m#2F)1BJ2L!1)!ircM011@iB,KPZ%'iIrJ!H!!!$c`!!!!1!!$rN!B!!Fb\r3"2rr!!+CN!6rr`!$CT!%c-`!"'D3"*QC!!8c-fCQc-`!"M13"*QC!!FcN!4QCJ!\r)!*!%hGd!#Gf3"J!+Zj!'!!ZUN!B!$)L3"J!0)T!'!!m!N!B%G`#3"NGdG`#3"6&\rRG(Gh!!!!34&RFb0h!!""%4&RFLG`!%%4%4&RG0!!34'3"(I3!'%4N!3hd!"[rrr\rr%6I3!'qU9Em40p!!IrQ8[r%hd!!(qCQlm6I3!!rkZ,ma0p`!$lZl[c%hh-!0rrr\rpeMIF`!#3"!Gph!#3"14J#J!!58aB3a1,!!"1qJ!%6R919[rk51FB)#4Z!!JpI2r\rrrrj`rbe!rrSQ+J!#$&)!"'B!!*j96cmU!#![!amU!!C)E[rq5'lrqR!!U#-`(cJ\r!Cfi-Jm4fEf0Q)LBmCRC[Be922bS!)#m$(c`!!8KZrrj)E[rkF!#S)c!I1!"+4'G\r!$)0QE'jdCJJQ2(4PEA"J"LBmCAKdEP922bS!)#mmCAKdEJb$G'9YF&I!4!")J"m\r!5'lrrNKZrrT`!+JM-"mi!$9Zrri!)#9ZrrS!)M9%!"j-h`3B6PiZRdjeK'eKD@i\r!N!8#38T[H5&`C@CQF(G`B`!!!!'fAT`-!*!0!`!#!*!%rj!%!*!'!5J!!!%S!!!\r"+!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!#3!)""!$rN!3!N!q%!!!!J!3%"!#\r3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%\r!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2\rKrrb6`IriN!!"!!L8)Iq`I(iEH$J!rrq`!3!m1!$rrj!!!3!iJri!!UJH!!!X!!!\r%3))!a+Kq!#"rj2YiL,i!"MM"!$`ii3!i5!!!aB""!"4mB!Fe3B)!M$`I1iSS!'p\rM3))!+$rJCRBlrfpMU(i!)$LI!!!iS!!"1-%!2$MK!$K)!!#0J%%!&(aJ"c9"JJ"\r82"qCP#J!ER4!JJ!32q"dC6[rEA")!!!-2q"PH$[rG'kSIJ!J2)"PH$bJG'8iT@e\r`I"mS8(`!!$48"Giq1-%!2$MK!$JiK(4Z5!!!0B""!"5S!3!mX"i!))!"!$L3!"i\r!)V"q!"k!!3"B1#%!8(`)!kD$iIrmJm(rq%k!!##"JJ!!N!""!"5!$!!!J%`!"(`\r*!kC1J!3J!*!)$!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#\r3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri\r$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$\rrN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!\r2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#m\rr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8\r!N!6r2cp9!*!&rr93!!!!J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm$*'i!#$e\rmrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'F\r1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!\r&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#S!!!!U!!\r!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3%"!#3#!%\r!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J\r#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb\r3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#SI`!JJ*m\r!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!)X!%!2$K\rJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#\r3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J\r!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIra\rrr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm\r!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B\r!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)\r[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$\rr-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!$NB!S!!%P-@%-6L`!!6[S!"%j\re6PErqNMR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja5!!4Q!!#H98mr+J!J,`-I+J!\r'5'lrrNKZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'CfEf096cmU!#![!amm!!&)E[r\rq5'lrqR!!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e`B!BQ2'9iG'j96cmU!#![2'9\riG'i-Jh4PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!I1!!eE[rq!#!PE[rk!#)e4!!\rH60m%'%jH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"hF'-!!!!"YPkF$!#3$3-!!J#\r3"2q3"!#3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!N!#!33\r!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!\r!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QP\rZC%C[E'4PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hJi!2rrX!%!2$J!rrq\r3!!%!1)2q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)Lq!!Bi`3!m11%!1%J!!-@!33!\r8I'!(08'#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkKq!#!iR`!!1+!!!6M"!$`ii3!\ri5!!!MB""!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$rJG'8lrfe`5!!!$$rJCAJlrh4\rZU(i!)$b!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM"!$`ii3!i1)4dENJ!!$@!33!\r8U!%!2,!H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JJB)\r!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&5!*!%J!J!N!83!"!!N!P)!!!\r!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIra\rrr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki\r$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+\r3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%\r83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!\r!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!)"J#J!!58aB3a1@!!"1qJ!\r%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CMj96cmU!#![+J!#(bS!"NK\rZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB!0@lrrJ!J*@lrqJ!L08-!(LB\rI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"M!!!!!EBXYqB!N!d$!!)!N!6\rrN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!F!#!33!rj!\r%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"\rN!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C\r[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!!!3!iU"m\r!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K)!!"0J%%!&(aJ"c9"JJ!B1!!\r!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&"\rm#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!!!@S!N!5\r!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!\r3!*!%1!$qi2rirrMrq2rirrMrq2rirrMrr[rr2rmrrcrq2r`i!-lJXcL-#)-BJ0L\r!1,miSVLMZ1#qi,mJ[b#r)2irr!!!)!N!!!!*!!$rN!B!!Fb3"2rr!!+CN!6rr`!\r$CT!%c-`!"$13"*QC!!8!N!4QCJ!'lT!'!!HlN!B!##+3"J!2!*!(4&!!N!9%)N4\r34&!!!&%d)N4K4&!!83)d)L*L8!"4%3)d)L03!&%4%3)d)e!!84%4%4*$8!"4rrr\rr%N03!&(fC[Eb3e!!8ICQrr*$8!"6pQCRmN0BJ&AfCQIb3eL)!2CQCr*$@)J!pQC\rRmN0BL!$fCQIc3eL!!2rrrr99L!#3"*!!B!S!!%P-@%-6R`!!6[S!"%je6PErqLm\r+,`-NEJ!)2AcrrrrqF2mY32rk$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!\r!U#-`(cB!Caj96cmU!#![2'0dFQa#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[r\rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbi93#\r3$3-!!J#3"2q3"!#3"l3!!!#d!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!\r"d!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!\r"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENa\rTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2r\rrN!!"!$LS(`!!,!!!"%##!&bSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!\r(08'#!#5SI`!J2)"MG$LJ!!!i`3!m11%!1$L%FQa)!!!aJ%%!&+J"!$b`(`!JJ!%\r!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4\rm#31Q6S!%)!#3$!`!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)\r!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!r\rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!\r!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr\r`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3\r[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp\r9!*!%rcmr93#3"Ire8!!!!*!!B!S!!%P-@%-6R3!!6[S!"%je6PErqLm+,`-NEJ!\r)2AcrrrrqF2mY32rk$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB\r!Caj96cmU!#![2'4PFfY#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[rk!#)e3`!\rH*KmNAdjH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbiE`#3$3-!!J#\r3"2q3"!#3"l3!!!#d!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"d!)""!$\rrN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!\r!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@j\rN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$L\rS(`!!,!!!"%##!&bSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!(08'#!#5\rSI`!J2)"NC6LJ!!!i`3!m11%!1$L%FfY)!!!aJ%%!&+J"!$b`(`!JJ!%!1*!!(`!\rLX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!\r%)!#3$!`!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!\r&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!\rq'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(\r-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m\r83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!\r%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcm\rr93#3"Ire8!!!!*!!B!S!!%P-@%-6S!!!6[S!"%je6PErqLm+,`-NEJ!)2Acrrrr\rqF2mY32rk$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cm\rU!#![2("bC@C#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdj\rH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbi1J#3$3-!!J#3"2q3"!#\r3"l3!!!#d!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q\r%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"\rm!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9\rb!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!\r!"%##!&bSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"\r`FMLJ!!!i`3!m11%!1$L%C@C)!!!aJ%%!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!\r"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`\r!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!\r&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&Q\rB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!\r#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!\r!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'\r3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ir\re8!!!!*!!B!S!!%P-@%-6RJ!!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32r\rk$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cmU!#![2(4\rbFfK#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4\rYB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbiB`#3$3-!!J#3"2q3"!#3"l3!!!#\rd!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q%!!!!J!3\r%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#\r3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J\r#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&b\rSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"dFMLJ!!!\ri`3!m11%!1$L%FfK)!!!aJ%%!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"\r3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`!!!&5!*!\r%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!\r!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"\rN3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm\r!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)\rK,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!m\rb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!)"\rJ#J!!58aB3a1@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CMj\r96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB!0@l\rrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"M!!!\r!!EBXYqB!N!d$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!!!!!\r-!!!!!3!!!F!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%\r!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"\r$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq\r`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K)!!"\r0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!iN!!\rI!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC\r1J!3J!*!)$!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)\r!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$\rr!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B\r!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!\r!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m\r4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6\rr2cp9!*!&rr93!!!!J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm$*'i!#$emrrr\rrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'F1F!)\rY32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!F&\r+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#S!!!!U!!!!4!\r!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!\r%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!\r+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%\r!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#SI`!JJ*m!!SL\rr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!)X!%!2$KJ!!#\rS!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#3!%%\r!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!#ZJ#3")!3!*!&%!!3!*!*5!!!!%J!N!8\r)!!%!#!#3"J'5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3i!2lJrrMrq2rirrMrq2r\rirrMrq2rqrj!'IrprrMJ!lZ#rZ+5)T*Mrk*!!1*!!1*!!10!if$lBIrrrjIpNrhr\rq!!!MlJ!!!#-!!2q3"J!'rrr-c2rr!!Irrmb3"!!Nc-crN!3!+Xb3"2rr!#[-N!B\r!--c-QCRrr`!ac-bCQFc-!$,-c*Q3"!"1QCR-c2rr!&5CN!6rr`"9QC!%c-`!@jQ\rCCQE-c!"FQCPQCTQC!(jQN!6rr`"rCT!%c-`!J'D3"*QC!)CQCM-cQCN!KfCQ-c0\rQCJ#N-c0QCTQC!+8c-fD3"!#T-j!%c-`!UM13"*QC!+XcN!4QCJ#X-j!'!0!!!$1\r3"!$J%4%!N!Ad!*!%%4%!pHk3"J$fhC!'!2HlN!B!qRH3"J$l9C!'!2a%N!B!r5+\r3"J$r!*!)J+Vr!*!,J+Yq9(q!r`#!Urm!N!9r+[Z(KhqVUhp8Ik[r!!!!T#U(!!#\rV!2@V9&48U`!!!)BUKbXaUrC8r&48IkS!!!#Vqeb(Ui#VUi#UJ&@V!!!!KbXVUc%\rVp[Ba9DZTU`!!!)If"UXUpJ!!*2HVJ+X!!!#(9IDV9IB!!#T9UkUV!!!!Ke`(Ue8\rU!!BV9DZ!U`!!!)GF+Ub!93BN-9@VUU[rr`$lA$'!Uc!N"NkVUiDVrj!%KrU'Kk@\rUUiDVd)#Vi2q3")Fb@reEJ+[lUkUVrrrr!2q(pM'V*&@VUUZ!rIrrr`$rKPb(J+Z\r'UkZVrI6rr`!!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N\r#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm\r!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!\r'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!\r!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!\r2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!\r%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#\r3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri\r$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$\rrN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!\r2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#m\rr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8\r!N!6r2cp9!*!&rr93!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%\r5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`\r2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B\r!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)\r[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!\r%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lm\rr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!\r'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`\rrr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!\r!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!8\r23Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m\r4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2m\rb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3\r!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIra\rrr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ\r!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#\r3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm\r!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!\r!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%\r!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIra\rrr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!\r9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r\r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3\rI,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!\r!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33\r!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIra\rrr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i\r!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!\r($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'\r3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5m\rr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!\r&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIra\rrr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m\r!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m\r!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!\r2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)\r4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J\r!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIra\rrr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm\r!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B\r!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)\r[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$\rr-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J!N!83!"!!N!P)!!!\r!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIra\rrr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki\r$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+\r3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%\r83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!\r!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!!%!#3#8J\r!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIra\rrr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`\r1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!\r&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%\r4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5m\rr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#3")!)!*!&%!!3!*!\r*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrK\rrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`\ri(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!\r'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!\r2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%\r4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J!N!83!"!\r!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"\rrq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"a\rJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4\r%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)\r[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2m\rb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!\r!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"\rqB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a\r!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`\r!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44\r#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!\r!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#3")!)!*!\r&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3\rB!(jJIrKrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a\r!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6\r-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%\r4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5m\rr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J\r!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#\r3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4\r!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD\r3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!\r2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%\r4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5\r!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!\r3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4\r!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!\r$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%\r[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)\r4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#\r3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!8\r3!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4\r!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2r\rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)\rL)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!\r2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&\r5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#\r3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4\r"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!\r%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%\r83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#m\rr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!\r!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8\r#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK\r'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+\rCN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!\r2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!\r%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr9\r3!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#\r3"3)!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"\rCQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm\r!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr\r`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m\r4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!A\rrp9!!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!\r3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"\rQB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6\rrr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lr\rb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm\r!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#\r3"Ire8!!!&2!!E`!#58CXC!!!!!315@jcG'&XE#"'EfaNCA)!N"0e-!#3"(0PF$%\r!!!!%!5d!N#8#8dCTE!!!!!3,8hPcG'9Y)%CTE'8!N"Ce4!!!!!&2G'Kb!!!!"!C\r2G'KPFXN!N"Ye6J#3"(0PF$)!!!!%!5d!N#8#3A0V93!!!!3)3A0V)&9cCA)!N"P\reBJ!!!!*'3@0d!!!!""0'D@jN)%&MG'P[EL"5CA0eE(6*!*!1G@`!!!!#3R45G!!\r!!!388Qp[G#"[CL"6G'&bG(9`)%4TFfX!N!eeGJ#3"(0PF$-!!!!%!5d!N#8#E@&\rMF`!!!!%08hPcG'9Y)%C[E'4PFJ#3&(@+!!!!!Q9iG'i!!!!"%89iG'9ZFfP[ER-\rJ4QpXC'9b!*!3GC3!!!!#Bh4bE!!!!!%93fpZG(*[E#"3B@jPE(-J4QpXC'9b!*!\r-GCi!!!!#F(*PCJ!!!!%58(*PCQ9bC@jMCA-J4QpXC'9b!*!2GDJ!!!!$B@eZG3!\r!!!%A3A"`E'8J6@9ZG5"*G'9YFb"'EfaNCA)!N!TeXJ!!!!*NCA0V!!!!!3j%CA0\rVG'p`)%C[E'4PFJ#3%h@m!!!!!R0dFR3!!!!"&&0dBA*dGA!J5A4PEA-J4QpXC'9\rb!*!0GFB!!!!$G'9YF!!!!!%@9'9YF'pbBA*j)%PdC@ec)%C[E'4PFJ#3#hA3!!!\r!!R"bER3!!!!"&&"bD@jd)%e[EQPdEh)J4QpXC'9b!*!0GGS!!!!#CQpZG!!!!!%\r-4QpZG(-J4QpXC'9b!*!9GH3!!!!#FfKNCJ!!!!%98fKeG%4[GfiJ5A4PEA-J4Qp\rXC'9b!*!-GHi!!!!#Ff4PGJ!!!!%F3fpZG(*[E#"6G(*TF#"0Ef4eE'9c)%C[E'4\rPFJ#3"AAi!!!!"'9iG%3"!!!"&89iG'9ZFfP[ER-J+%4TFf&LE'9N+3#3$(B#!!!\r!"'0dFN3"!!!"'80[ER4bEf`J8'&ZC@ac)#K%DA0KBQaPC#N!N!Kf$!#3"(0PF$3\r!!!!%!5d!N#8Ca(0MFJ%!!!)68f0bDA"dD@jR)%&NC'PdD@pZF`#3$(BJGL!!!!!\rBC'PKE!%!!!)28f0bDA"d)%4TB@aPBh4c!*!3GLTf+J!!!!4YB@0%!3!!!4a6HA0\rdC@dJ4AKdC@jcD@pZFb!S4'PcB@*XC@3T!*!&GM3!!!!2a("bC!%!!!)28(*TER4\rPFL"%FQPfCA*c!*!3GMjf2J!!!![%E'PL!3!!!K"6D'&bC@3J6'PLFQ&bD@9c!*!\r2GNKf5!!!!![%FfjN!3!!!JC6Eh9ZC(-!N"Pf8RC5!!!!#m4SE(!"!!!#"%KPE(!\r!N"YfA(CF!!!!#m4ZCA3"!!!#%8PZG'9bEQ9d)&"XG@FY5@jc!*!1GQCfCJ!!!!h\r%G'9i!3!!!Jj8CAKd)%9ZBfpND@jRF`#3%AC`GR!!!!!-a(C[B`%!!!)'9QpTBf9\rc!*!CGRTfHJ!!!![%C@4T!3!!!JG&C'PdEh*c!*!BGS4fK!!"CQaN)hD%!!P[C'p\rN!3!!!JG2F'9Z4'pM!*!BGSjfMJ!"CQaN)hD1!!K[C(0`!3!!!KC2F'9Z4'pM)&0\rSC@aX)&"XG@FY5@jc!*!*GTKfQ!!"CQaN)hDB!!K[C'aL!3!!!K&2F'9Z4'pM)%a\rTBR*KFQPPF`#3$RDLGU)!!@CXC#0fSJ!)Ef4cG!%!!!)+8h4KG'P[EQ9bH3#3&AD\rXGU`!!@CXC#0fV!!+a'e[C!%!!!)06@pNC@dJ8f0bDA"dF`#3%RDfGVB!!!!,F("\rNCJ%!!!)88(*TER4PFL"%CA0MFQP`G'P[ER-!N!Yf`(E!!!!!$'&cGA!"!!!#%d&\r`F'aTBf&dD@pZ)&0eF("[FR3!N!afbRE+!!!!#A0dFN3"!!!#'&0dBA*dGA!J5A4\rPEA-J+%4TFf&LE'9N+3#3"hE8GY3!!!!*FfKN4!%!!!)C8fKeG'4[GfiJ5A4PEA-\rJ+%4TFf&LE'9N+3#3"REHGYi!!!!'BfeZG3%!!!)93fpZG'9iG(9KE#"0C@je)%P\rdC@ec!*!+GZKfk!#3"(0PF$8!!!!%!5d!N#8#BA"`FJ%!!!)+3A"`C@&bB@jMC3#\r3&AEmG[`!!!!#B@9ia!%!!!)-3A"`E'8J4AKdFQ&c!*!6G`Ch"J!!!!*KF("c!3!\r!!Ja"F("XD@0KG'P[ER-!N"0h%(F3!!!!!Q&cG-3"!!!##N&cFfPcG'&ZG(-!N"9\rh'RFD!!!!"'CXER3"!!!#%N0XC@&ZGA!J3A3J8h4KFR4eF!#3$AFNGb3!!!!#F(*\r[CJ%!!!)53fpXEh*6H@jM)&"bEfCTE'9c!*!0Gbjh,J!!!!*NG($%!3!!!K"%CA0\rVG'p`)&"TBh4eFQ9c!*!2GcKh1!!!!!*NEf0c!3!!!JP%Ef0eE@9ZG(-!N"Ch3RG\r#!!!!!QCKGR-"!!!##8CKGQpbDA4PF`#3&RG-Gd`!!!!$CQjNF`%!!!)%4QPZC!#\r3'hG@GeB!!!!#CQ&cCJ%!!!)94QpXC'9b)%&MG'P[EL"6Bh*TF(4c!*!+Gf"hB!!\r!!!*TE'GQ!3!!!Jj*ER0dB@aXCA)J6'pRF`#3%AGUGfS!!!!#D@jda!%!!!))5@j\rdCA*ZCA3!N"GhG(Gd!!!!!QPcFfB"!!!#&8PZG'9bEQ9d)&0PBA*MD#"6DA4PF`#\r3#RGqGhi!!!!#E'&eEJ%!!!)16'&eEQ0SCA)J5A4PEA-!N"&hL(H)!!!!!Qe[FX3\r"!!!#&%eKBb"28b"5C@&N)%eP)%CTE'9c!*!,Gj*hNJ!!!!*bBA"`!3!!!K05C@0\rPER3J3A"`E'PMBA4TEfjc!*!-GjahR!!!!!*bC'pM!3!!!K"5C@0PER3J4'pMG@e\rPER4c!*!2GkChTJ!!!!*bFhCb!3!!!Jj5C@0PER3J8f9bGQ9bF`#3%AH`Gl!!!!!\r#Ff0ba!%!!!)(8f0bDA"dF`#3'(HkGlS!!!!#FfjNF`%!!!)+8fpeEQ3J8f9dF`#\r3&AI%Gm3!!!!#Fh"VD3%!!!)28h"PB@YKBQaP)%PdC@ec!*!3GmjhcJ!!!!*QBQ0\rQ!3!!!KT8D'8J4QPZC#"#H5"$EfjdC@jd)%C[E'4PFJ#3"AIBGpJ!!!!#G'KYC3%\r!!!),9'KPE@8J4QPXCA-!N"4hiRIL!!!!!R9dDF3"!!!##99dD@aTG'PPF`#3&RI\rXGq`!!!!$Gf&XD`%!!!)B6'pMBA4TEfiJ6@&ZB@GPFL"0Ef4eE'9c!*!(GrChpJ!\r!!!0dFQP`!3!!!KC-Ef0KG'P[EL"0B@jKCf9b)&"bC@Cc!*!*H!"i!*!%!fCKE'`\r"!!!##8a[Bf&dD@pZF`#3&RJ+H!S!!!!#FA4PH!%!!!)88A9TBfY8D@eP)%9iG'9\rZFfP[ER-!N!Yi&(J8!!!!!QCLBh!"!!!#'%CTEQ3JBRNJ3fpZG'9ZG#"3E(9R,@P\rZF`#3"hJHH"i!!!!#a'a[B`%!!!)C6'&ZCh9KCf8J*L"5C@GTEfiJ8h9`F'pbG!#\r3"RJSH#J!N!4cCA!f!!!!"!%Y!*!P!f4cF'`"!!!#%N4TFh"XBANJ4AKdC@jcD@p\rZF`#3$AJmH$`!!!!#Df0SEJ%!!!)*5f9jBfKKD@jc!*!@H%Ci4J!!!!0YF(KQ!3!\r!!Jp0G@adDA"bEf0PFh0TEQF!N""i8(K3!!!!!R0NBA3"!!!#%&0SBA*PC#"%Ef0\reE@9ZG(-!N!pi@RKD!!!!!R0MG'`!!!!#&90jFh4PE5"$EfjdFQpX)&"KEQ9XF`#\r3#RKNH'3!!!!#Ff4cD`!!!!)98hPcG'9Y)%4PFfYdEh!J4QpXC'9b!*!+H'jiEJ!\r!!!*cF(*Q!!!!!K*6HA0dC@dJ8(*PCQ9bC@jMCA-!N!eiN!3!!!!#Fh4bF`!!!!)\r-8hPcG'9Y)&4bBA0S!*!6H)*iJJ!!!!*fFfCN!3!!!KT8D'8J9QpXG@eP)&0PG(4\rTEQGc)%C[E'4PFJ#3"AL-H)`!!!!#GA0bF`%!!!)&9A0PFR-!N"TiPRL@!*!%Ff9\r`0`!!!!3",3#3*Q0KBfJ"!!!""N0KBfKPF`#3'hLU!*!%Bf&bBJ%!!!%'3f&bBQp\rZ!*!EH,3!N!4cH@jM!3!!!3P$Efa[FP0jEQ-!N"Ki[J#3"'0ME@d"!!!"$N0[E'p\rb8hPZBb"$68ec!*!6H-J!N!4MFf0b!3!!!40$Efa[FP0jEQ-J8f0bDA"dD@jR!*!\r1H0)!N!4MEA"N!3!!!3T$Efe`EfjPER4c!*!AH0`!N!4MFh*f!3!!!3e$Eh*P)&0\rPFRCTBf9c!*!8H1B!N!4NCACQ!3!!!3P%CACPE'p`CA)!N"Kim!#3"'4NEf-"!!!\r"$N4PGQ9XEh"PFL"%Ef0c!*!6H2S!N!4NCACS!3!!!3j%CACPE'p`CA)J5'9XF!#\r3%hN%!*!%D@jQE`%!!!%04'pMG@ePER4KG'P[EJ#3&(N1!*!%DA0cC!%!!!%*4'p\rhEQa[B@4c!*!BH4J!N!4QFQ&Y!3!!!3T'FQ&YCAG[FQYc!*!AH5)!N!4NE'PL!3!\r!!3G-D@*bBA*j!*!DH5`!N!4TEA"b!3!!!3K3FQPZG'9bF`#3'ANf!*!%F'CbE3%\r!!!%58(*TGQ&dC5"'FQ&YCAG[FQYc!*!2H8!!N!4hBfe`!3!!!444G@PMDe4TE@8\rJ3fpYF'pZC@jdF`#3$AP+!*!%FQpdCJ%!!!%,8Qp[G#"'EfaNCA)!N"Cj9!#3"(0\rcEQ3"!!!""P0[G@jNF`#3'hPH!*!%Fh"MD!%!!!%'8h"PC@0S!*!EH@J!N!4NG'p\r`!3!!!4"8Eh!J6'9fC@`J4QpXC'9b!*!4HA)!N!4eG'e`!3!!!499Ff9b)&4PEA"\r[FQ&bH5"'EfaNCA)!N!ajI!#3"!2(!!!"!!!!!fd!!!*Y!!!!@J#3mJ%1!!%!!3!\r!'cTLD@jKFRNJ4'PcG(*TBR9dD@pZ1P*&384046T3HA4SEfiJ-5ie,M*M-6T548&\r%688!N0N+!*!%"p!!!!I3!!!"594SDA-JD@jcG'&XE(-J8(PdD'pZ)$)Z-5"TEQ0\rXG@4TEQFJB@aX)'&fB@PXB@*XC5"PH(4PER0TEfiJF'&MDf&RCA-k)#"8DfPZG'9\rb,#"dD'8J8(PdD'pZ)%PYB@GTEQFJ6'PLFQ&bH5`J6R9YCA*TBf&X)&"jG'K[EL"\rKEQ3JD@eR,L"8D'8JC'9fC@a[F'9b)'p`G'P[EL"TFb"ZEh3JD@jcG'&XE'9N)'*\rj)'4PCQ&eE(3Z)%0XBA0cD@-J8&"$)'&ZC#p[FL"$BA*LEfiJGQ9bFfP[ER-JGfP\rXE#"LC5"TER0dB@aXC@3X)'4PF'9ZC'PZCb"[EL"jEh9b)(0jFh4PE5i0$9CPFR0\rTEfiJD@jQEcSJ8%P-)$%Z-5ia,#"TE@FJ-5ic,#"1G@ePFQPMB@`J-M!Z-#i`BM)\rX)&4ME#pdDb!i,M-Z!!!"!!!!!fd!!!*Y!!!!@P028P3&`J#!!"`!@J!#9%9B9!!\r!!"T8H(4'!!!!*Q4659S!!!!b!qRrr`!!!5!!N!3"p2rr!*!)!I6rr`!!!4)!N!B\r$4J!'!!)3##A*$NPZFh4KE'aPFL"%BA4K!!!"!!!!!3!!!!%&L,i`[IB!cMB!!!%\r!N!6q!J!!"4m!!3@)[P!!!!#1rrm!N!3&L,k3!!@)[L!!!!&)rN!!N!G)!!"*)!$\rrrrm!!%NJ!8Mq3!@-XK)&L,mq!*!%"BLr9J8Ier!&L,j`5!!!"2r4bA3&L-"X"BL\rqJ!!)6@J!N!6rN!3&L,k3!!!X8S`!-,,d"Bbb%J@)eZ!!,&+-"89M`!8@31!&L,l\r!!!!!m$pjYT!!!!!S!!@)[X!!8i'X2hXRX!!!5T!!"BLqd!"6JDbr-!@)[X!!'J@\r)eZ!!8i'X!!!!!53!!!F!P$ZB!&-!!3%!!3B!!!!"#!!J!3#3@V88jG@e&1A9!!!\r!!J!!!!)!N!N%!!%!!3!"!!%!!3!!J!#3#E88jG@e&1A9!!)!"J#3$`')!!!"!*!\rG!3#3#)!!N!8&"!#3%!J!N#d"!2q3"!#!!!!"!3%!N!855@jcG'&XE'9b)%a[Cb"\r'D@aP!!!!+!!!!#J!"BM!(2r$8h)!!#J!!!3!!!&%'@!&L-!irm0RkJ!!+!!!"!B\r!"BM"b!&%'A!!CrN5"BM!D2r$6qB!!%EN!$(VDJ!!4Z3&L-(3!!!!%`!!!!%&L-(\r)CZJ&,J"R#23&L-()"BM!H!"R#-)&L-()!05Sf!@)`Hi!CY-U"BM"b2rr!!!!!3!\r!!!%!!!!"!!!!!3!%"J!!e+MB"5jQk,)5!&CQ!!@)[*B!!!!#*!!!"`@'-)i!N!M\rq!J#3"J@)`6!!!!$`"BM"))J!!!3!@L13!!&)rN!"52j!!*!(5!%"!*!%!6!!!!#\r!!!0MBQpZJ!%!!!%$&9*PFA9TFQ9c)%0KFQ*[EL!a,M!Z0$Yi!*!%"YY'rR0jFhD\r!!3!!#Im28Q9aG@PbCA-J6@&M6e0B!!K0D$qE1hJ!N!3'fdEqFhPcGN!"!!!*ra"\r5CA&eDA*PFb"`FQ8Y6e0B#%eS2jXlH!#3"!@(e[i!!!+L!""KE'Pc%!%!N!345'&\rc)%&XD@&c)%eKEQ&RCA)!N!jMG'*f%!%!N!3D5'&c)%0[E@eeEQPMBA4TEfjc)&4\r[EfaLEhJ!N!9PGQjd%!%!N!335'&c)%&`F'aP)%9fC@jdF`#3$fC`G5#!!3#3"!P\r)BA-JB5"'8&8!N"CSC@a`%!%!N!335'&c)%KPE(!J6@&ZB@GPFJ#3$feYG5#!!3#\r3"!P)BA-JB5"0698!N"CZE@Gb%!%!N!3B5'&c)%j[G'PQD@0KG'P[EL"0B@jKCf9\rb!*!(F'phFS!"!*!%%8KKFb"3EhGPFL"0B@jKCf9b!*!1F@4bGi!"!*!%%dKKFb"\r$Efa[FL"4G@PMDd4bBAF!N!aaC#!JJ!%!!!(r&%KKFb!c-Le#DA3J8A9TBfY%FQ&\rh!*!,FA4TE4!"!*!%$8KKFb"4G@PMDe4TE@8!N"*cBh*TJ!%!N!355'&c)&0MFQP\r`G#"0B@jKCf9b!*!0G'eRFS!"!*!%%%KKFb"8D@eP)%eKEQ&RCA)!N!pfE5!J%!%\r!N!355'&c)&CTFR4eB@`J6@9YEh*j!*!0FhPcB5!"!!!!!K43EhGPFP"$)%&bBfK\rTG'9MG(9bC3#3#h0jFf&!!`!!!!)30MK,)%&bBfKTG'9MG(9bC3#3%3&L!!%2Bfp\rZCQPRGA*PFf0bDA"d!*!()$qADE3'rE$'!2fY%))!!%JrQjm)!!bb!#3!!!F!@E9\r!"T56m!D8Nr!N!!!("SY55!#3"!D8Nr!'rDe3"T56m!F"c2B'rE$'"[fYJ%)!!%J\rrQd&J"Y+6A!#3"9Qe3!!!!!%!r3"*"[fYF!!!!!%'dT-!"SXa%!&l!1`(!Fcf"[f\r["JEpX-B'rDf3!#J!!!3rKQCS!!)!r3"*VD!!-BA-!*!-"`(-pJEpV`B'P*2`"[f\rZ%!!!!0!rQcmS"T56m!EpVG"#!!")2hXi2!!!!!%'rDhJ!&1aV2r4C23'NmHJ"[f\rYm!!)6@J!!!r3"T56m!#3"b!'rDm'"[f`aJ$pVK!L!!")rp'S%!%!!!8'rDj!!!K\r0D$qE1hJ'NmHJ"[fZ3!"CY8!"H`$X!!!'N`EpVN!!9D6J2hUJp!EpX-B!!!!#!*!\r%!dS!!KP0B@03HA4SEfiJD'pYC5"`B@GP)#KA9eFT!%JrHcJm#RGhGbjMGfNZEQ`\rXrp&Np!D42,!'qb3`!!K0D!!!$p!'NJ8J!*!()!El*9!'qbG)"[XN8#)!!%MrdDJ\r3!*"!*5pQG(![DQ&MDbp`HA4SEfi[E@&M,deKBe"jG'K[EM)aF'&bG(0dFbq4,5J\r!!$TB"T)&)!DJG`J!#N9N!@`"+3El*-!'qb5X"TKS*!!!$p!!N!3'qb9'!&QI-!"\rCRb4SrrG!"[XP-`El*1Mrchq3!!El"[XNlJDB!!T&C#8L"[XNk!El*1`!"3D5"[X\rP-JD1$4J'qb8L!1S!0J#5"5!!"3El*5)!N!3'N6ki!!!!!3Er3IB'qbG)"T(f)!D\rJ@f!'NJ8J!!-!#!!0!0J"+3$U!$DLiJEl"[XP@!D)adJ'qbG)"[XP8!Er3IB"pJD\r5"5!'NJ8J"T)&)!D5"5!'qbG+!!)!!"P0B@03HA4SEfiJD'pYC5"`B@GP)#K'9&!\rT!%JrHcJm#QCdF#jMGfNZEQ`Xrp&Np!D42,!'qb3`!!K0D!!!$p!'NJ8J!*!()!E\rl*9!'qbG)"[XN8#)!!%MrdDJ3!*"!*5p`G@)[DQ&MDbp`HA4SEfi[E@&M,deKBe"\rjG'K[EM)aF'&bG(0dF`D4,5J!!$TB"T)&)!DJG`J!#N9N!@`"+3El*-!'qb5X"TK\rS*!!!$p!!N!3'qb9'!&QI-!"CRb4SrrG!"[XP-`El*1Mrchq3!!El"[XNlJDB!!T\r&C#8L"[XNk!El*1`!"3D5"[XP-JD1$4J'qb8L!1S!0J#5"5!!"3El*5)!N!3'N6k\ri!!!!!3Er3IB'qbG)"T(f)!DJ@f!'NJ8J!!-!#!!0!0J"+3$U!$DLiJEl"[XP@!D\r)adJ'qbG)"[XP8!Er3IB"pJD5"5!'NJ8J"T)&)!D5"5!'qbG+!!)!N!3"3J!&"N0\r[E@e[EJ-!#!!0!0J"+3$`!$kLiJEl"[XQ[!D)adJB6@&M8(PdD'pZ-M&KBh4TGQ8\rYBfpYE@pZEfk5#E!'q`G%CACPE'p`!!J!$3$B!5N!l`"1SZ)'q`El*V`'L-G)'8e\rKBe"jG'K[EM)aB@0dDACP,@4PGQ9XEh"[F!Q`"[X$8&"$#E!!!`!)!!d!f!%T!1S\r!-D,L"[X'qbDm"SM(5"90B@03HA4SEfib-@&MG'PfC5e38%033`Q`"T)*X!El"N0\rKFQ*[EJ-!#!!0!0J"+3$Z!$LLiJEl"[XQ[!D)adJB6@&M8(PdD'pZ-M&KBh4TGQ8\rYBf&bBQpZEfk5#E!'q`*8Dj)*X!!$!!J!$3$B!5N!k`"+SZ)'q`El*V`'L-G)&%e\rKBe"jG'K[EM)aB@0dDACP,A4VG'Z5#E!'NJQ`"[X!!!!%!!)3#!!!!!T*4QaN"!#\r3#!i!53!6!P`#JJ!!!-B-+J!!!3!!!L'a!!)JX3!!'FP66e*8!VS!J!!F#q)!$NG\r-8e3!!3"k58a$3`!k!***6&K$!$`$9NP14d`!!!Bb58j-)`!!"Mj*6Na$!!!'5NP\r18d`!!!C@590NCJ!!"Q**8h*Q!!!'EP*%Fh3!!!Ck9NacG!!!"SCA8'pc!!!'NQ0\rTBfi!C`DHCQaN)`!%#hj`3R4c!!!,ZJ2Srrm!!KGI!*!%!qRrr`!#&q-!N!4f)!"\r2"!![8J8RrZaf+J#)"!"#P38Rr[Kf2J$("!"33!8Rr`4f5!%&"!"8k`8Rra"f8J&\r$"!"CGJ8RraafA!'""!"H#38RrbKfCJ'r"!"Le!8Rrc4fF!(p"!"S0`8Rrd"fHJ)\rl"!"X`J8RrdafK!*f"!"f+`8Rre4fMJ+a"!#($38RreafQ!-'"!#AP`8RrhafSJ0\rS"!#S'38Rri4fV!1["!#iH`8RriafYJ2G"!$+p`8RrjKf`!33"!$JkJ8Rrk4fbJ4\r,"!$[b38Rrl"fe!5'"!$c`!8RrlafhJ6'"!$hM`8RrmKfk!8&"!$lXJ8Rrp4fr!8\rr"!$rq38RrF"h"J9c"!%$b!8RrFah%!@P"!%)4`8RrGKh'JAA"!%-$J8RrH4h*!B\r2"!%3138RrI"h,JC*"!%8D!8RrIah1!D5"!%C"`8RrJKh3JE'"!%FYJ8RrK4h6!E\rk"!%JG38RrL"h9JFd"!%P@!8RrLahB!GZ"!%TK`8RrMKhDJHL"!%Y0J8RrN4hG!I\r8"!%`e38RrP"hIJJ)"!%eC!8RrPahL!K5"!%k@`8RrQKhNJL6"!%q#J8RrR4hR!M\r&"!&"f38RrS"hTJN,"!&&S!8RrSahX!P1"!&*9`8RrTKhZJQ4"!&0,J8RrU4ha!R\r2"!&4"38RrV"hcJS$"!&8Y!8RrVahf!Se"!&B8`8Rr,KhiJTT"!&F!J8Rr-4hl!U\rG"!&IX38Rr0"hpJV8"!&U-J8Rr0ai!!X1"!&q+`8Rr1Ki#JXr"!'6`!8Rr24i&!Y\rR"!'T-38Rr3"i2!ZC"!'fh!8Rr3ai4J[4"!'kq`8Rr4Ki8!`*"!'qrJ8Rr54i@Ja\r""!($(38Rr6"iC!ak"!('j!8Rr6aiEJbf"!(+S`8Rr8KiH!cb"!(1BJ8Rr94iJJd\rX"!(5)38Rr@"iM!eI"!(9d!8Rr@aiPJf4"!(CE`8RrAKf)!!f"!!SbJ8S!1Kf+J"\rS"!!lT38RrZ4f2J#S"!"2@!8Rr["f5!$Q"!"8!`8Rr[af8J%N"!"BMJ8Rr`KfA!&\rL"!"G)38Rra4fCJ'J"!"Kl!8Rrb"fF!(H"!"R6`8RrbafHJ)F"!"VfJ8RrcKfK!*\rD"!"a2`8RreKfMJ+5"!##*38Rrf"fQ!,3"!#5V`8RrfKfSJ-m"!#M-38RriKfV!1\r8"!#cN`8Rrj!!GVB$bJ3!`d-&*rqFGX!$m!3!f6S&*rqSGXS%-!3!lc8&*rqdGY3\r%CJ3!mb`&*rr!GYi%TJ3!p[X&*rr-GZJ%jJ3!qXS&*rrBG[`&*!3!rf8&*rh%G`B\r&@J3"!d3&*rh3Ga!&M!3""m-&*rhFGaS&[J3"#iS&*rhSGb3&m!3"$e%&*rhdGbi\r',J3"%p3&*ri!GcJ'G`3"'(-&*ri-Gd)'V33"($)&*riBGd`'h`3"(q%&*riNGeB\r(&33"*(!&*ri`Gf!(8`3"+2-&*rimGfS(L33",,)&*rj)Gh3(Z`3"-&%&*rj8Ghi\r(l33"00!&*rjJGiJ)133"1GF&*rjXGj))HJ3"2BB&*rjiGj`)V!3"398&*rk%GkB\r)mJ3"44`&*rk3!(H`#68%!8M6"5IqR(Hk#AB%!8bD"5IqU(I%#E3%!9"a"5IqY(I\r1#HS%!93`"5ImX(IB#K`%!9I2"5Im[(IL#Ni%!9YZ"5Imb(IX#S3%!9mY"5Ime(I\rf#VB%!@1F"5Imi(J!#[)%!AH9"5Iml(J+#bS%!BZ1"5Imq(J8#e3%!D0$"5Ip"(J\rH!!!%!"hZ"5J!i(JS!"X%!#0Z"5Iqi(Jm#hS%!EAd"5Ip%(K'#lJ%!ETh"5Ip((K\r3#qS%!Ei@"5Ip+(KD$#J%!F+C"5Ip0(KN$&S%!FC3"5Ip3(KZ$*S%!FS2"5Ip6(K\ri$0)%!Fh1"5Ip@(L#$4)%!G'0"5IpC(L-$8B%!G9-"5IpF(L@$AJ%!GMV"5IpI!(\rdrrm!!Kp$!*!%%iJ0UJ!"qeB!N!4e-!hL!!)JN3#3"!(drrm!!K[e!*!%%iJ0c`!\r#&"8!N!36L!fm!!)35J#3"!2Srrm!!K[[!*!%%iMrr`!#'SN!N!3$k2rr!!)JR`#\r3"(8`rrm8!!!!"59ZU(9%rrm8!!&@"59Q%(91rrm%!!,N"59Q)(9Lrrm8!!3U"59\r`%(9Xrrm%!!@3!!8PF!"eG[rr&!!("J8PEr"eL[rr&!!)"!8PEq"eP2rr&!!*BJ8\rPEp"eR[rr&!!+b!8PEm"eU2rr&!!-0J8PF)"eX[rr&!!0T!8PEi"e[2rr&!!3%J8\rPEk"ea[rr&!!4@!8PEj!!GG$rra3!%Vi&*AV`GGVrra3!&"3&+!$-GH6rra3!&BS\r&+!$)GHlrra3!&ZJ&+!$%GIMrra3!'%i&+!$BGJ,rra3!'E`&+!$8GJcrra3!'b)\r&+!$3GL$rrb3!1Mm&*rlSGLVrrb3!6J)&*rldGM6rrb3!()J&+!$NGMlrrb3!8S8\r&*rm!GNMrrb3!9c!&*rm-GP,rrb3!@lX&*rmBGPcrrb3!B%i&*rmNGQErrb3!C4N\r&*rm`GR$rrb3!DR`&*rmmGRVrrb3!E`F&*rp)GS6rrb3!J!8&*rp3GSlrrb3!N!"\rh"5IrF(DBrrmN!+%""5IrH(DLrrmN!,'$"5IrJ(DXrrmN!-(P"5IrS(DfrrmN!0I\rN"5IrV(E!rrmN!1h("5IrZ(E+rrmN!2'H"5Ira(E8rrmN!2@9"5Ird(EHrrmN!2P\rN"5Irh(ESrrmN!2hh"5Ipb(Emrrm8!3(1"5Ipe(F'rrm8!3@0"5Ipi(F3rrm8!3S\r-"5Ipl(FDrrm8!3h6"5Ipq(FNrrm8!4*q"5Iq"(FZ"Q3%!4Bp"5Iq%(Firrm8!4V\rF"5Iq((G#rrm8!4jl"5Iq+(G-rrm8!5*+"5Iq0(G@rrm8!5HG"5Iq3(GJrrm8!5Y\rF"5Iq6(GUrrm8!5ll"5Iq@(Gdrrm8!6+D"5IqC(Gq##-%!6Fj"5IqF(H)#'X%!6`\rJ"5IqI(H5rrm8!6r2"5IqL(HF#0i%!81H"5IqP(HQ#53%!8GP"5IqS(H`#@F%!8X\rF"5IqV(Hk#D`%!8m$"5IqZ(I%rrm8!9,D"5ImY(I1rrm8!9Cj"5Im`(IBrrm8!9S\rB"5Imc(ILrrm8!9hA"5Imf(IXrrm8!@&f"5Imj(IfrrmN!AB["5Imm(J!rrmN!BS\rS"5Imr(J+rrmN!D(G"5Ip#(J8rrmN!E4H"5Ip&(JHrrmN!#)B"5J!h(JSrrmN!#G\rd"5J!l(JmrrmN!ENK"5Ip)(K'rrmN!Ec!"5Ip,(K3rrmN!F&$"5Ip1(KDrrmN!F6\rL"5Ip4(KNrrmN!FLj"5Ip8(KZrrmN!Fai"5IpA(KirrmN!G!h"5IpD(L#rrmN!G2\rf"5IpG(L-rrmN!GH9"5IpJ(L@rrmN!GXd"5IpM(LUrrmN!Ghb"5IpL(LdrrmN!Gp\r)"5IpK(LqrrmN!H#H"5IpQ(M)rrmN!H(d"5IpP(M5rrmN!H0+"5IpN!"ih2rr*!(\rNS!8RrD4ij[rr*!(PpJ8RrD"im2rr*!(R6!8RrCaiq[rr*!(SSJ8Rqk"j"2rr*!(\rTq!8RrDaj$[rr*!(V6J8RrDKj'2rr*!(XT!8Rqkaj)[rr*!(YqJ8RqkKj,2rr*!(\r[8!8Rqk4j0[rr*!(`TJ8RqlKj32rr*!(ar!8Rql4j5[rr*!(c8J8Rql"j92rr*!(\rdU!8Rqm4jA[rr*!(erJ8Rqm"jD2rr*!(h9!8RqlajF[rr*!(iUJ8Rqp"jI2rr*!(\rk!!8RqmafK2rr"!"`K38Rrd4fM[rr"!#"D`8Rrf4fQ2rr"!#4p38RrfafS[rr"!#\rLG`8Rrh4fV2rr"!#bf38Rrj3$k2rr!!)JL3#3""T'D@jN4QpXC'9b,dCTEQ3[4AK\rdC@jcD@pZFaT6HA0dC@dJ1#"'D@jN4QpXC'9b,e0jFh4PE4K'D@jN)&0MFQP`G'P\rZCb""C'4TG'P[ER-B4QPZC#"6Bh*TF(4TEQFJ3@4NDA4TEfjc(dCTEQ3J8f0bDA"\rdD@jR)%&NC'PdD@pZ4'PKE'9MG(-I4QPZC#"6Bh*TF(4TEQFJ3@4NDA4TEfj%D@&\rXC@0dFaj6HA0dC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QP\rZC%C[E'4PFLp&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@p\rZFaj6HA0dC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C\r[E'4PFLp&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj\r6HA0dC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C[E'4\rPFLp&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj6HA0\rdC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C[E'4PFLp\r&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj6HA0dC@d\rJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C[E'4PFLp&H(4\rPER0TEfjc'dCTEQ3J6h"PEN4[Bb"&C'PdEh*c)%C[E'4PFKY'D@jN)%p`C@j%Ef-\rJ4@4TG'pbFb"'EfaNCA)H4QPZC#"24#"&C'PdEh*c1Np`C@j%Ef-J4QpXC'9b(NC\rTEQ3J6d3J4@4TG'pbFcT2F'9Z4'pM)%C[E'4PFM9'D@jN)%p%)%9NDA4[FR-k6h"\rPEN4[BcT2F'9Z4'pM)&0SC@aX)&"XG@FY5@jc)%C[E'4PFM9'D@jN)%p%)%9NDA4\r[FR-k6h"PEN4[BcT2F'9Z4'pM)&0SC@aX)&"XG@FY5@jc)%C[E'4PFLY'D@jN)%p\r%)%9iG'9ZFfP[ER-k6h"PEN4[Bb"-D@*bBA*TCA-J4QpXC'9b+dCTEQ3J6d3J4AK\rdC@jcD@pZFcT2F'9Z4'pM)%aTBR*KFQPPFb"'EfaNCA)D4QPZC#"24#!k8h4KG'P\r[EQ9bH5"'EfaNCA)D4QPZC#"24#!k8h4KG'P[EQ9bH5"'EfaNCA)54QPZC#"0Ef4\rPE5"6Bh*TF(4c%NCTEQ3J6@pNC@dJ8f0bDA"dFap'D@jN)&"bD@jdCA)J4'9cBh*\rTF(4TEfiJ4QpXC'9b(dCTEQ3J8(*TER4PFL"%CA0MFQP`G'P[EL"'EfaNCA)D8hP\rcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0\rdC@dI8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6G'&bG(9`5A4PE4p6HA0dC@dJ1#"'D@j\rN4QpXC'9b,e0dBA*dGA"*G'9Y(e0jFh4PE5!i)%CTEQ4'EfaNCA)[8fKeG%4[Gfj\r*G'dI8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6D(9d4'phENPdE4j6HA0dC@dJ1#"'D@j\rN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C[E'4PFLp&H(4PER0TEfj\rc'P0jFh4PE5!i)%CTEQ4'EfaNCA)[8hPcG'9Y'P0jFh4PE5!i)%CTEQ4'EfaNCA)\r[8hPcG'9Y'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@jN4Qp\rXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5!i)%CTEQ4\r'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QP\rZC%C[E'4PFLp5Efpd(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj6HA0\rdC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-D8hPcG'9Y)$JJ4QPZC%C[E'4PFLp\r6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@d53fpXEh*6H@jM)&"bEfC\rTE'9c'P0jFh4PE5!i)%CTEQ4'EfaNCA)[8hPcG'9Y'P0jFh4PE5!i)%CTEQ4'Efa\rNCA)[8hPcG'9Y'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@j\rN4QpXC'9b,e*[Eh3D8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dD8hPcG'9Y)$J\rJ4QPZC%C[E'4PFLp6HA0dC@dH8hPcG'9Y)$JJ4QPZC%C[E'4PFLp&H(4PER0TEfj\rc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaT6HA0dC@dJ1#"'D@jN4Qp\rXC'9b,e0jFh4PE4T6HA0dC@dJ1#"'D@jN4QpXC'9b,e0jFh4PE4K6HA0dC@dJ1#"\r'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5!\ri)%CTEQ4'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3D8hPcG'9\rY)$JJ4QPZC%C[E'4PFLp6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@d\r95@jdCA*ZCA3J8f9KFQ0S)&0TG'9c'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K\r6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh316'&eEQ0SCA)J5A4PEA-B8hPcG'9Y)$J\rJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0dC@d\rJ1#"'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd%e*PBf9\rZG#""F("XD@0KG'P[ER-B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5!\ri)%CTEQ4'EfaNCA)[8Qp[G""5C@0PER3J4'pMG@ePER4c'&0jFh4PE5!i)%CTEQ4\r'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh318Q9MC@jd)&0PFRC\rPFR-D8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4\rPFLp6HA0dC@d(8f0bDA"dFaT6HA0dC@dJ1#"'D@jN4QpXC'9b,e0jFh4PE4T6HA0\rdC@dJ1#"'D@jN4QpXC'9b,e0jFh4PE4K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3\rB8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp\r[G"K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3D8hPcG'9Y)$JJ4QPZC%C[E'4PFLp\r6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dB8hPcG'9Y)$JJ4QPZC%C\r[E'4PFLp5Efpd'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"e'D@jN)%a[Bf&dD@p\rZ)%eKEQ&RCA)J6@pNG@aPFae'D@jN)%a[Bf&dD@pZ)%eKEQ&RCA)J6@pNG@aPFaY\r'D@jN)%a[Bf&dD@pZ)%eKEQ&RCA)J8(*PCR-E4QPZC#"-Ef0KG'P[EL"0B@jKCf9\rb)&"bC@Cc&%CTEQ3J8(*PCR-J6'pMBA4TEfjc&%CTEQ3J8(*PCR-J6'pMBA4TEfj\rc%NCTEQ3J893J4AKdC@jcD@pZFa*'D@jN)&&8)%9iG'9ZFfP[ER-H8hPcG'9Y)$J\rJ4QPZC%C[E'4PFLp&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@j\rcD@pZFaK6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4\rPFLp5Efpd(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj6HA0dC@dJ1#"\r'D@jN4QpXC'9b,d9iG'9ZFfP[ER-B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0\rjFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"p6HA0dC@dJ15"'D@jN4QpXC'9b,d0[ER4\rbEfa3EQac(e0jFh4PE5!j)%CTEQ4'EfaNCA)[3fpZG(*[E&"ZE(-E8hPcG'9Y)$N\rJ4QPZC%C[E'4PFLp%CA0VG'p`'e0jFh4PE5!j)%CTEQ4'EfaNCA)[4'9cDh4[F"p\r6HA0dC@dJ15"'D@jN4QpXC'9b,e"bC@CPFQ9ZBf9c(e0jFh4PE5!j)%CTEQ4'Efa\rNCA)[8(*PCQ9bC@jMCA-C8hPcG'9Y)$NJ4QPZC%C[E'4PFLp8FQ&cD"P6HA0dC@d\rJ15"'D@jN4QpXC'9b,e4bBA0S'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0\rdC@dJ1#"'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0\rjFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"&*ER0dB@aX)%a[Bf&dD@pZFa**ER0dB@a\rXCA)J8f9dG'PZCh-55@jcG'&XE'9b)&0PG(4TEQGc"%P'E'3(6!:\r
\ No newline at end of file
diff --git a/Mac/IDE scripts/Hack/Toolbox Assistant... b/Mac/IDE scripts/Hack/Toolbox Assistant...
new file mode 100644 (file)
index 0000000..b47274a
--- /dev/null
@@ -0,0 +1,45 @@
+import aetools
+import Standard_Suite
+import Required_Suite
+import MacOS
+import W
+
+
+class Toolbox(aetools.TalkTo, Standard_Suite.Standard_Suite):
+       
+       def LookupTopic(self, _object, _attributes={}, **_arguments):
+               _code = 'DanR'
+               _subcode = 'REF '
+
+               _arguments['----'] = _object
+               
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise MacOS.Error, aetools.decodeerror(_arguments)
+       
+
+class ToolboxAssi:
+       
+       def __init__(self):
+               self.talker = None
+               self.w = W.Window((200, 100), "Toolbox Assistant")
+               self.w.button = W.Button((-94, -32, 80, 16), "Lookup", self.lookup)
+               self.w.prompt = W.TextBox((10, 8, -10, 15), "Enter topic:")
+               self.w.edit = W.EditText((10, 24, -10, 20))
+               self.w.setdefaultbutton(self.w.button)
+               self.w.open()
+       
+       def lookup(self):
+               if self.talker is None:
+                       try:
+                               self.talker = Toolbox('ALTV', start = 1)
+                       except:
+                               raise W.AlertError, "CanÕt find \96Toolbox Assistant\94"
+               lookup = self.w.edit.get()
+               try:
+                       self.talker.LookupTopic(lookup)
+               except MacOS.Error, detail:
+                       W.Message("Requested topic not found.\r(%d)" % detail[0])
+
+t = ToolboxAssi()
diff --git a/Mac/Include/getapplbycreator.h b/Mac/Include/getapplbycreator.h
new file mode 100644 (file)
index 0000000..62e5930
--- /dev/null
@@ -0,0 +1,32 @@
+/***********************************************************
+Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Types.h>
+#include <Files.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+extern OSErr FindApplicationFromCreator(OSType, FSSpecPtr);
diff --git a/Mac/Include/macbuildno.h b/Mac/Include/macbuildno.h
new file mode 100644 (file)
index 0000000..d3337c2
--- /dev/null
@@ -0,0 +1 @@
+#define BUILD 92
diff --git a/Mac/Include/pymactoolbox.h b/Mac/Include/pymactoolbox.h
new file mode 100644 (file)
index 0000000..c4a56da
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+** pymactoolbox.h - global routines exported by the toolbox modules
+*/
+
+#ifdef __cplusplus
+       extern "C" {
+#endif
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Memory.h>
+#include <Dialogs.h>
+#include <Menus.h>
+#include <Controls.h>
+#include <Components.h>
+#include <Lists.h>
+#include <Movies.h>
+#include <Errors.h>
+#else
+#include <Carbon/Carbon.h>
+#include <QuickTime/QuickTime.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+/*
+** These macros are used in the module init code. If we use toolbox object glue
+** it sets the function pointer to point to the real function.
+*/
+#define PyMac_INIT_TOOLBOX_OBJECT_NEW(object, rtn) { \
+       extern PyObject *(*PyMacGluePtr_##rtn)(object); \
+       PyMacGluePtr_##rtn = _##rtn; \
+}
+#define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn) { \
+       extern int (*PyMacGluePtr_##rtn)(PyObject *, object *); \
+       PyMacGluePtr_##rtn = _##rtn; \
+}
+#else
+/*
+** If we don't use toolbox object glue the init macros are empty. Moreover, we define
+** _xxx_New to be the same as xxx_New, and the code in mactoolboxglue isn't included.
+*/
+#define PyMac_INIT_TOOLBOX_OBJECT_NEW(object, rtn)
+#define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn)
+#endif /* USE_TOOLBOX_OBJECT_GLUE */
+
+/* AE exports */
+extern PyObject *AEDesc_New(AppleEvent *); /* XXXX Why passed by address?? */
+extern int AEDesc_Convert(PyObject *, AppleEvent *);
+
+/* Cm exports */
+extern PyObject *CmpObj_New(Component);
+extern int CmpObj_Convert(PyObject *, Component *);
+extern PyObject *CmpInstObj_New(ComponentInstance);
+extern int CmpInstObj_Convert(PyObject *, ComponentInstance *);
+
+/* Ctl exports */
+extern PyObject *CtlObj_New(ControlHandle);
+extern int CtlObj_Convert(PyObject *, ControlHandle *);
+
+/* Dlg exports */
+extern PyObject *DlgObj_New(DialogPtr);
+extern int DlgObj_Convert(PyObject *, DialogPtr *);
+extern PyObject *DlgObj_WhichDialog(DialogPtr);
+
+/* Drag exports */
+extern PyObject *DragObj_New(DragReference);
+extern int DragObj_Convert(PyObject *, DragReference *);
+
+/* List exports */
+extern PyObject *ListObj_New(ListHandle);
+extern int ListObj_Convert(PyObject *, ListHandle *);
+
+/* Menu exports */
+extern PyObject *MenuObj_New(MenuHandle);
+extern int MenuObj_Convert(PyObject *, MenuHandle *);
+
+/* Qd exports */
+extern PyObject *GrafObj_New(GrafPtr);
+extern int GrafObj_Convert(PyObject *, GrafPtr *);
+extern PyObject *BMObj_New(BitMapPtr);
+extern int BMObj_Convert(PyObject *, BitMapPtr *);
+extern PyObject *QdRGB_New(RGBColor *);
+extern int QdRGB_Convert(PyObject *, RGBColor *);
+
+/* Qdoffs exports */
+extern PyObject *GWorldObj_New(GWorldPtr);
+extern int GWorldObj_Convert(PyObject *, GWorldPtr *);
+
+/* Qt exports */
+extern PyObject *TrackObj_New(Track);
+extern int TrackObj_Convert(PyObject *, Track *);
+extern PyObject *MovieObj_New(Movie);
+extern int MovieObj_Convert(PyObject *, Movie *);
+extern PyObject *MovieCtlObj_New(MovieController);
+extern int MovieCtlObj_Convert(PyObject *, MovieController *);
+extern PyObject *TimeBaseObj_New(TimeBase);
+extern int TimeBaseObj_Convert(PyObject *, TimeBase *);
+extern PyObject *UserDataObj_New(UserData);
+extern int UserDataObj_Convert(PyObject *, UserData *);
+extern PyObject *MediaObj_New(Media);
+extern int MediaObj_Convert(PyObject *, Media *);
+
+/* Res exports */
+extern PyObject *ResObj_New(Handle);
+extern int ResObj_Convert(PyObject *, Handle *);
+extern PyObject *OptResObj_New(Handle);
+extern int OptResObj_Convert(PyObject *, Handle *);
+
+/* TE exports */
+extern PyObject *TEObj_New(TEHandle);
+extern int TEObj_Convert(PyObject *, TEHandle *);
+
+/* Win exports */
+extern PyObject *WinObj_New(WindowPtr);
+extern int WinObj_Convert(PyObject *, WindowPtr *);
+extern PyObject *WinObj_WhichWindow(WindowPtr);
+
+
+#ifdef __cplusplus
+       }
+#endif
diff --git a/Mac/Lib/MACFS.py b/Mac/Lib/MACFS.py
new file mode 100644 (file)
index 0000000..c4228a7
--- /dev/null
@@ -0,0 +1,106 @@
+# MACFS.py - Constants used by macfs routines
+# Derived from Finder.h and Folders.h
+
+# Flags in FInfo.Flags field:
+kIsOnDesk                                      = 0x1
+kColor                                         = 0xE
+kIsShared                                      = 0x40
+kHasBeenInited                         = 0x100
+kHasCustomIcon                         = 0x400
+kIsStationery                          = 0x800
+kIsStationary                          = 0x800
+kNameLocked                                    = 0x1000
+kHasBundle                                     = 0x2000
+kIsInvisible                           = 0x4000
+kIsAlias                                       = 0x8000
+
+# Constants for FindFolder
+kOnSystemDisk                 = -32768 # previously was 0x8000 but that is an unsigned value whereas vRefNum is signed
+kOnAppropriateDisk            = -32767 # Generally, the same as kOnSystemDisk, but it's clearer that this isn't always the 'boot' disk.
+# Folder Domains - Carbon only.  
+kSystemDomain                 = -32766 # Read-only system hierarchy.
+kLocalDomain                  = -32765 # All users of a single machine have access to these resources.
+kNetworkDomain                = -32764 # All users configured to use a common network server has access to these resources.
+kUserDomain                   = -32763 # Read/write. Resources that are private to the user.
+kClassicDomain                = -32762 # Domain referring to the currently configured Classic System Folder
+
+kSystemFolderType                      = 'macs'        # the system folder
+kDesktopFolderType                     = 'desk'        # the desktop folder; objects in this folder show on the desk top.
+kTrashFolderType                       = 'trsh'        # the trash folder; objects in this folder show up in the trash
+kWhereToEmptyTrashFolderType = 'empt'  # the "empty trash" folder; Finder starts empty from here down
+kPrintMonitorDocsFolderType    = 'prnt'        # Print Monitor documents
+kStartupFolderType                     = 'strt'        # Finder objects (applications, documents, DAs, aliases, to...) to open at startup go here
+kAppleMenuFolderType           = 'amnu'        # Finder objects to put into the Apple menu go here
+kControlPanelFolderType                = 'ctrl'        # Control Panels go here (may contain INITs)
+kExtensionFolderType           = 'extn'        # Finder extensions go here
+kFontsFolderType                       = 'font'        # Fonts go here
+kPreferencesFolderType         = 'pref'        # preferences for applications go here
+kTemporaryFolderType           = 'temp'
+
+# Alias types
+kContainerFolderAliasType      = 'fdrp'
+kContainerTrashAliasType       = 'trsh'
+kContainerHardDiskAliasType    = 'hdsk'
+kContainerFloppyAliasType      = 'flpy'
+kContainerServerAliasType      = 'srvr'
+kApplicationAliasType          = 'adrp'
+kContainerAliasType                    = 'drop'
+# types for Special folder aliases
+kSystemFolderAliasType         = 'fasy'
+kAppleMenuFolderAliasType      = 'faam'
+kStartupFolderAliasType                = 'fast'
+kPrintMonitorDocsFolderAliasType = 'fapn'
+kPreferencesFolderAliasType    = 'fapf'
+kControlPanelFolderAliasType = 'fact'
+kExtensionFolderAliasType      = 'faex'
+kExportedFolderAliasType       = 'faet'
+kDropFolderAliasType           = 'fadr'
+kSharedFolderAliasType         = 'fash'
+kMountedFolderAliasType                = 'famn'
+
+# New FindFolder constants
+kExtensionDisabledFolderType = 'extD'
+kControlPanelDisabledFolderType = 'ctrD'
+kSystemExtensionDisabledFolderType = 'macD'
+kStartupItemsDisabledFolderType = 'strD'
+kShutdownItemsDisabledFolderType = 'shdD'
+kApplicationsFolderType                = 'apps'
+kDocumentsFolderType           = 'docs'
+
+kVolumeRootFolderType          = 'root'
+kChewableItemsFolderType       = 'flnt'
+kApplicationSupportFolderType = 'asup'
+kTextEncodingsFolderType       = '\80tex'
+kStationeryFolderType          = 'odst'
+kOpenDocFolderType                     = 'odod'
+kOpenDocShellPlugInsFolderType = 'odsp'
+kEditorsFolderType                     = 'oded'
+kOpenDocEditorsFolderType      = '\80odf'
+kOpenDocLibrariesFolderType    = 'odlb'
+kGenEditorsFolderType          = '\80edi'
+kHelpFolderType                                = '\80hlp'
+kInternetPlugInFolderType      = '\80net'
+kModemScriptsFolderType                = '\80mod'
+kPrinterDescriptionFolderType = 'ppdf'
+kPrinterDriverFolderType       = '\80prd'
+kScriptingAdditionsFolderType = '\80scr'
+kSharedLibrariesFolderType     = '\80lib'
+kVoicesFolderType                      = 'fvoc'
+kControlStripModulesFolderType = 'sdev'
+kAssistantsFolderType          = 'ast\80'
+kUtilitiesFolderType           = 'uti\80'
+kAppleExtrasFolderType         = 'aex\80'
+kContextualMenuItemsFolderType = 'cmnu'
+kMacOSReadMesFolderType                = 'mor\80'
+kALMModulesFolderType          = 'walk'
+kALMPreferencesFolderType      = 'trip'
+kALMLocationsFolderType                = 'fall'
+kColorSyncProfilesFolderType = 'prof'
+kThemesFolderType                      = 'thme'
+kFavoritesFolderType           = 'favs'
+
+# Don't remember why this is here
+READ = 1
+WRITE = 2
+smAllScripts = -3
+
diff --git a/Mac/Lib/cfmfile.py b/Mac/Lib/cfmfile.py
new file mode 100644 (file)
index 0000000..9c449e0
--- /dev/null
@@ -0,0 +1,186 @@
+"""codefragments.py -- wrapper to modify code fragments."""
+
+# Â© 1998, Just van Rossum, Letterror
+
+__version__ = "0.8b3"
+__author__ = "jvr"
+
+import macfs
+import struct
+import Res
+import os
+import sys
+
+DEBUG = 0
+
+error = "cfm.error"
+
+BUFSIZE = 0x80000
+
+def mergecfmfiles(srclist, dst, architecture = 'fat'):
+       """Merge all files in srclist into a new file dst. 
+       
+       If architecture is given, only code fragments of that type will be used:
+       "pwpc" for PPC, "m68k" for cfm68k. This does not work for "classic"
+       68k code, since it does not use code fragments to begin with.
+       If architecture is None, all fragments will be used, enabling FAT binaries.
+       """
+       
+       srclist = list(srclist)
+       for i in range(len(srclist)):
+               if type(srclist[i]) == macfs.FSSpecType:
+                       srclist[i] = srclist[i].as_pathname()
+       if type(dst) == macfs.FSSpecType:
+               dst = dst.as_pathname()
+       
+       dstfile = open(dst, "wb")
+       rf = Res.FSpOpenResFile(dst, 3)
+       try:
+               dstcfrg = CfrgResource()
+               for src in srclist:
+                       srccfrg = CfrgResource(src)
+                       for frag in srccfrg.fragments:
+                               if frag.architecture == 'pwpc' and architecture == 'm68k':
+                                       continue
+                               if frag.architecture == 'm68k' and architecture == 'pwpc':
+                                       continue
+                               dstcfrg.append(frag)
+                               
+                               frag.copydata(dstfile)
+                               
+               cfrgres = Res.Resource(dstcfrg.build())
+               Res.UseResFile(rf)
+               cfrgres.AddResource('cfrg', 0, "")
+       finally:
+               dstfile.close()
+               rf = Res.CloseResFile(rf)
+
+
+class CfrgResource:
+       
+       def __init__(self, path = None):
+               self.version = 1
+               self.fragments = []
+               self.path = path
+               if path is not None and os.path.exists(path):
+                       currentresref = Res.CurResFile()
+                       resref = Res.FSpOpenResFile(path, 1)
+                       Res.UseResFile(resref)
+                       try:
+                               try:
+                                       data = Res.Get1Resource('cfrg', 0).data
+                               except Res.Error:
+                                       raise Res.Error, "no \95cfrgÕ resource found", sys.exc_traceback
+                       finally:
+                               Res.CloseResFile(resref)
+                               Res.UseResFile(currentresref)
+                       self.parse(data)
+                       if self.version <> 1:
+                               raise error, "unknown 'cfrg' resource format"   
+       
+       def parse(self, data):
+               (res1, res2, self.version, 
+                       res3, res4, res5, res6, 
+                       self.memberCount) = struct.unpack("8l", data[:32])
+               data = data[32:]
+               while data:
+                       frag = FragmentDescriptor(self.path, data)
+                       data = data[frag.memberSize:]
+                       self.fragments.append(frag)
+       
+       def build(self):
+               self.memberCount = len(self.fragments)
+               data = struct.pack("8l", 0, 0, self.version, 0, 0, 0, 0, self.memberCount)
+               for frag in self.fragments:
+                       data = data + frag.build()
+               return data
+       
+       def append(self, frag):
+               self.fragments.append(frag)
+
+
+class FragmentDescriptor:
+       
+       def __init__(self, path, data = None):
+               self.path = path
+               if data is not None:
+                       self.parse(data)
+       
+       def parse(self, data):
+               self.architecture = data[:4]
+               (       self.updatelevel, 
+                       self.currentVersion, 
+                       self.oldDefVersion, 
+                       self.stacksize,
+                       self.applibdir, 
+                       self.fragtype,
+                       self.where,
+                       self.offset,
+                       self.length,
+                       self.res1, self.res2,
+                       self.memberSize,) = struct.unpack("4lhBB4lh", data[4:42])
+               pname = data[42:self.memberSize]
+               self.name = pname[1:1+ord(pname[0])]
+       
+       def build(self):
+               data = self.architecture
+               data = data + struct.pack("4lhBB4l",
+                               self.updatelevel, 
+                               self.currentVersion, 
+                               self.oldDefVersion, 
+                               self.stacksize,
+                               self.applibdir, 
+                               self.fragtype,
+                               self.where,
+                               self.offset,
+                               self.length,
+                               self.res1, self.res2)
+               self.memberSize = len(data) + 2 + 1 + len(self.name)
+               # pad to 4 byte boundaries
+               if self.memberSize % 4:
+                       self.memberSize = self.memberSize + 4 - (self.memberSize % 4)
+               data = data + struct.pack("hb", self.memberSize, len(self.name))
+               data = data + self.name
+               data = data + '\000' * (self.memberSize - len(data))
+               return data
+       
+       def getfragment(self):
+               if self.where <> 1:
+                       raise error, "canÕt read fragment, unsupported location"
+               f = open(self.path, "rb")
+               f.seek(self.offset)
+               if self.length:
+                       frag = f.read(self.length)
+               else:
+                       frag = f.read()
+               f.close()
+               return frag
+       
+       def copydata(self, outfile):
+               if self.where <> 1:
+                       raise error, "canÕt read fragment, unsupported location"
+               infile = open(self.path, "rb")
+               if self.length == 0:
+                       infile.seek(0, 2)
+                       self.length = infile.tell()
+               
+               # Position input file and record new offset from output file
+               infile.seek(self.offset)
+               
+               # pad to 16 byte boundaries
+               offset = outfile.tell()
+               if offset % 16:
+                       offset = offset + 16 - (offset % 16)
+               outfile.seek(offset)
+               self.offset = offset
+               
+               l = self.length
+               while l:
+                       if l > BUFSIZE:
+                               outfile.write(infile.read(BUFSIZE))
+                               l = l - BUFSIZE
+                       else:
+                               outfile.write(infile.read(l))
+                               l = 0
+               infile.close()
+
diff --git a/Mac/Lib/findertools.py b/Mac/Lib/findertools.py
new file mode 100644 (file)
index 0000000..0fd4c51
--- /dev/null
@@ -0,0 +1,833 @@
+"""Utility routines depending on the finder,
+a combination of code by Jack Jansen and erik@letterror.com.
+
+Most events have been captured from
+Lasso Capture AE and than translated to python code.
+
+IMPORTANT
+Note that the processes() function returns different values
+depending on the OS version it is running on. On MacOS 9
+the Finder returns the process *names* which can then be
+used to find out more about them. On MacOS 8.6 and earlier
+the Finder returns a code which does not seem to work.
+So bottom line: the processes() stuff does not work on < MacOS9
+
+Mostly written by erik@letterror.com
+"""
+import Finder
+import AppleEvents
+import aetools
+import MacOS
+import sys
+import macfs
+import aetypes
+from types import *
+
+__version__ = '1.1'
+Error = 'findertools.Error'
+
+_finder_talker = None
+
+def _getfinder():
+       """returns basic (recyclable) Finder AE interface object"""
+       global _finder_talker
+       if not _finder_talker:
+               _finder_talker = Finder.Finder()
+       _finder_talker.send_flags = ( _finder_talker.send_flags | 
+               AppleEvents.kAECanInteract | AppleEvents.kAECanSwitchLayer)
+       return _finder_talker
+       
+def launch(file):
+       """Open a file thru the finder. Specify file by name or fsspec"""
+       finder = _getfinder()
+       fss = macfs.FSSpec(file)
+       return finder.open(fss)
+       
+def Print(file):
+       """Print a file thru the finder. Specify file by name or fsspec"""
+       finder = _getfinder()
+       fss = macfs.FSSpec(file)
+       return finder._print(fss)
+       
+def copy(src, dstdir):
+       """Copy a file to a folder"""
+       finder = _getfinder()
+       if type(src) == type([]):
+               src_fss = []
+               for s in src:
+                       src_fss.append(macfs.FSSpec(s))
+       else:
+               src_fss = macfs.FSSpec(src)
+       dst_fss = macfs.FSSpec(dstdir)
+       return finder.duplicate(src_fss, to=dst_fss)
+
+def move(src, dstdir):
+       """Move a file to a folder"""
+       finder = _getfinder()
+       if type(src) == type([]):
+               src_fss = []
+               for s in src:
+                       src_fss.append(macfs.FSSpec(s))
+       else:
+               src_fss = macfs.FSSpec(src)
+       dst_fss = macfs.FSSpec(dstdir)
+       return finder.move(src_fss, to=dst_fss)
+       
+def sleep():
+       """Put the mac to sleep"""
+       finder = _getfinder()
+       finder.sleep()
+       
+def shutdown():
+       """Shut the mac down"""
+       finder = _getfinder()
+       finder.shut_down()
+       
+def restart():
+       """Restart the mac"""
+       finder = _getfinder()
+       finder.restart()
+
+
+#---------------------------------------------------
+#      Additional findertools
+#
+
+def reveal(file):
+       """Reveal a file in the finder. Specify file by name or fsspec."""
+       finder = _getfinder()
+       fss = macfs.FSSpec(file)
+       file_alias = fss.NewAlias()
+       return finder.reveal(file_alias)
+       
+def select(file):
+       """select a file in the finder. Specify file by name or fsspec."""
+       finder = _getfinder()
+       fss = macfs.FSSpec(file)
+       file_alias = fss.NewAlias()
+       return finder.select(file_alias)
+       
+def update(file):
+       """Update the display of the specified object(s) to match 
+       their on-disk representation. Specify file by name or fsspec."""
+       finder = _getfinder()
+       fss = macfs.FSSpec(file)
+       file_alias = fss.NewAlias()
+       return finder.update(file_alias)
+
+
+#---------------------------------------------------
+#      More findertools
+#
+
+def comment(object, comment=None):
+       """comment: get or set the Finder-comment of the item, displayed in the \96Get Info\94 window."""
+       object = macfs.FSSpec(object)
+       fss = macfs.FSSpec(object)
+       object_alias = fss.NewAlias()
+       if comment == None:
+               return _getcomment(object_alias)
+       else:
+               return _setcomment(object_alias, comment)
+       
+def _setcomment(object_alias, comment):
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('cobj'), form="alis", seld=object_alias, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('comt'), fr=aeobj_00)
+       args['----'] = aeobj_01
+       args["data"] = comment
+       _reply, args, attrs = finder.send("core", "setd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def _getcomment(object_alias):
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('cobj'), form="alis", seld=object_alias, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('comt'), fr=aeobj_00)
+       args['----'] = aeobj_01
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+
+#---------------------------------------------------
+#      Get information about current processes in the Finder.
+
+def processes():
+       """processes returns a list of all active processes running on this computer and their creators."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       processnames = []
+       processnumbers = []
+       creators = []
+       partitions = []
+       used = []
+       ## get the processnames or else the processnumbers
+       args['----'] = aetypes.ObjectSpecifier(want=aetypes.Type('prcs'), form="indx", seld=aetypes.Unknown('abso', "all "), fr=None)
+       _reply, args, attrs = finder.send('core', 'getd', args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       p = []
+       if args.has_key('----'):
+               p =  args['----']
+               for proc in p:
+                       if hasattr(proc, 'seld'):
+                               # it has a real name
+                               processnames.append(proc.seld)
+                       elif hasattr(proc, 'type'):
+                               if proc.type == "psn ":
+                                       # it has a process number
+                                       processnumbers.append(proc.data)
+       ## get the creators
+       args = {}
+       attrs = {}
+       aeobj_0 = aetypes.ObjectSpecifier(want=aetypes.Type('prcs'), form="indx", seld=aetypes.Unknown('abso', "all "), fr=None)
+       args['----'] =  aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('fcrt'), fr=aeobj_0)
+       _reply, args, attrs = finder.send('core', 'getd', args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(_arg)
+       if args.has_key('----'):
+               p =  args['----']
+               creators = p[:]
+       ## concatenate in one dict
+       result = []
+       if len(processnames) > len(processnumbers):
+               data = processnames
+       else:
+               data = processnumbers
+       for i in range(len(creators)):
+               result.append((data[i], creators[i]))
+       return result
+
+class _process:
+       pass
+
+def isactiveprocess(processname):
+       """Check of processname is active. MacOS9"""
+       all = processes()
+       ok = 0
+       for n, c in all:
+               if n == processname:
+                       return 1
+       return 0
+       
+def processinfo(processname):
+       """Return an object with all process properties as attributes for processname. MacOS9"""
+       p = _process()
+       
+       if processname == "Finder":
+               p.partition = None
+               p.used = None
+       else:
+               p.partition = _processproperty(processname, 'appt')
+               p.used = _processproperty(processname, 'pusd')
+       p.visible = _processproperty(processname, 'pvis')               #Is the process' layer visible?
+       p.frontmost = _processproperty(processname, 'pisf')     #Is the process the frontmost process?
+       p.file = _processproperty(processname, 'file')                  #the file from which the process was launched
+       p.filetype  = _processproperty(processname, 'asty')             #the OSType of the file type of the process
+       p.creatortype = _processproperty(processname, 'fcrt')   #the OSType of the creator of the process (the signature)
+       p.accepthighlevel = _processproperty(processname, 'revt')       #Is the process high-level event aware (accepts open application, open document, print document, and quit)?
+       p.hasscripting = _processproperty(processname, 'hscr')          #Does the process have a scripting terminology, i.e., can it be scripted?
+       return p
+       
+def _processproperty(processname, property):
+       """return the partition size and memory used for processname"""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('prcs'), form="name", seld=processname, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type(property), fr=aeobj_00)
+       args['----'] = aeobj_01
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+
+#---------------------------------------------------
+#      Mess around with Finder windows.
+       
+def openwindow(object):
+       """Open a Finder window for object, Specify object by name or fsspec."""
+       finder = _getfinder()
+       object = macfs.FSSpec(object)
+       fss = macfs.FSSpec(object)
+       object_alias = fss.NewAlias()
+       args = {}
+       attrs = {}
+       _code = 'aevt'
+       _subcode = 'odoc'
+       aeobj_0 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'), form="alis", seld=object_alias, fr=None)
+       args['----'] = aeobj_0
+       _reply, args, attrs = finder.send(_code, _subcode, args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       
+def closewindow(object):
+       """Close a Finder window for folder, Specify by path."""
+       finder = _getfinder()
+       fss = macfs.FSSpec(object)
+       object_alias = fss.NewAlias()
+       args = {}
+       attrs = {}
+       _code = 'core'
+       _subcode = 'clos'
+       aeobj_0 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'), form="alis", seld=object_alias, fr=None)
+       args['----'] = aeobj_0
+       _reply, args, attrs = finder.send(_code, _subcode, args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+
+def location(object, pos=None):
+       """Set the position of a Finder window for folder to pos=(w, h). Specify file by name or fsspec.
+       If pos=None, location will return the current position of the object."""
+       fss = macfs.FSSpec(object)
+       object_alias = fss.NewAlias()
+       if not pos:
+               return _getlocation(object_alias)
+       return _setlocation(object_alias, pos)
+       
+def _setlocation(object_alias, (x, y)):
+       """_setlocation: Set the location of the icon for the object."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'), form="alis", seld=object_alias, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('posn'), fr=aeobj_00)
+       args['----'] = aeobj_01
+       args["data"] = [x, y]
+       _reply, args, attrs = finder.send("core", "setd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       return (x,y)
+       
+def _getlocation(object_alias):
+       """_getlocation: get the location of the icon for the object."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'), form="alis", seld=object_alias, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('posn'), fr=aeobj_00)
+       args['----'] = aeobj_01
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               pos = args['----']
+               return pos.h, pos.v
+
+def label(object, index=None):
+       """label: set or get the label of the item. Specify file by name or fsspec."""
+       fss = macfs.FSSpec(object)
+       object_alias = fss.NewAlias()
+       if index == None:
+               return _getlabel(object_alias)
+       if index < 0 or index > 7:
+               index = 0
+       return _setlabel(object_alias, index)
+       
+def _getlabel(object_alias):
+       """label: Get the label for the object."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('cobj'), form="alis", seld=object_alias, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('labi'), fr=aeobj_00)
+       args['----'] = aeobj_01
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def _setlabel(object_alias, index):
+       """label: Set the label for the object."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       _code = 'core'
+       _subcode = 'setd'
+       aeobj_0 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'),
+                       form="alis", seld=object_alias, fr=None)
+       aeobj_1 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'),
+                       form="prop", seld=aetypes.Type('labi'), fr=aeobj_0)
+       args['----'] = aeobj_1
+       args["data"] = index
+       _reply, args, attrs = finder.send(_code, _subcode, args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       return index
+
+def windowview(folder, view=None):
+       """windowview: Set the view of the window for the folder. Specify file by name or fsspec.
+       0 = by icon (default)
+       1 = by name
+       2 = by button
+       """
+       fss = macfs.FSSpec(folder)
+       folder_alias = fss.NewAlias()
+       if view == None:
+               return _getwindowview(folder_alias)
+       return _setwindowview(folder_alias, view)
+       
+def _setwindowview(folder_alias, view=0):
+       """set the windowview"""
+       attrs = {}
+       args = {}
+       if view == 1:
+               _v = aetypes.Type('pnam')
+       elif view == 2:
+               _v = aetypes.Type('lgbu')
+       else:
+               _v = aetypes.Type('iimg')
+       finder = _getfinder()
+       aeobj_0 = aetypes.ObjectSpecifier(want = aetypes.Type('cfol'), 
+                       form = 'alis', seld = folder_alias, fr=None)
+       aeobj_1 = aetypes.ObjectSpecifier(want = aetypes.Type('prop'), 
+                       form = 'prop', seld = aetypes.Type('cwnd'), fr=aeobj_0)
+       aeobj_2 = aetypes.ObjectSpecifier(want = aetypes.Type('prop'), 
+                       form = 'prop', seld = aetypes.Type('pvew'), fr=aeobj_1)
+       aeobj_3 = aetypes.ObjectSpecifier(want = aetypes.Type('prop'), 
+                       form = 'prop', seld = _v, fr=None)
+       _code = 'core'
+       _subcode = 'setd'
+       args['----'] = aeobj_2
+       args['data'] = aeobj_3
+       _reply, args, attrs = finder.send(_code, _subcode, args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def _getwindowview(folder_alias):
+       """get the windowview"""
+       attrs = {}
+       args = {}
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'), form="alis", seld=folder_alias, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('cwnd'), fr=aeobj_00)
+       aeobj_02 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('pvew'), fr=aeobj_01)
+       args['----'] = aeobj_02
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       views = {'iimg':0, 'pnam':1, 'lgbu':2}
+       if args.has_key('----'):
+               return views[args['----'].enum]
+
+def windowsize(folder, size=None):
+       """Set the size of a Finder window for folder to size=(w, h), Specify by path.
+       If size=None, windowsize will return the current size of the window.
+       Specify file by name or fsspec.
+       """
+       fss = macfs.FSSpec(folder)
+       folder_alias = fss.NewAlias()
+       openwindow(fss)
+       if not size:
+               return _getwindowsize(folder_alias)
+       return _setwindowsize(folder_alias, size)
+       
+def _setwindowsize(folder_alias, (w, h)):
+       """Set the size of a Finder window for folder to (w, h)"""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       _code = 'core'
+       _subcode = 'setd'
+       aevar00 = [w, h]
+       aeobj_0 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'),
+                       form="alis", seld=folder_alias, fr=None)
+       aeobj_1 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('cwnd'), fr=aeobj_0)
+       aeobj_2 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('ptsz'), fr=aeobj_1)
+       args['----'] = aeobj_2
+       args["data"] = aevar00
+       _reply, args, attrs = finder.send(_code, _subcode, args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       return (w, h)
+               
+def _getwindowsize(folder_alias):
+       """Set the size of a Finder window for folder to (w, h)"""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_0 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'), 
+                       form="alis", seld=folder_alias, fr=None)
+       aeobj_1 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('cwnd'), fr=aeobj_0)
+       aeobj_2 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('posn'), fr=aeobj_1)
+       args['----'] = aeobj_2
+       _reply, args, attrs = finder.send('core', 'getd', args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def windowposition(folder, pos=None):
+       """Set the position of a Finder window for folder to pos=(w, h)."""
+       fss = macfs.FSSpec(folder)
+       folder_alias = fss.NewAlias()
+       openwindow(fss)
+       if not pos:
+               return _getwindowposition(folder_alias)
+       if type(pos) == InstanceType:
+               # pos might be a QDPoint object as returned by _getwindowposition
+               pos = (pos.h, pos.v)
+       return _setwindowposition(folder_alias, pos)
+                       
+def _setwindowposition(folder_alias, (x, y)):
+       """Set the size of a Finder window for folder to (w, h)."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_0 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'), 
+                       form="alis", seld=folder_alias, fr=None)
+       aeobj_1 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('cwnd'), fr=aeobj_0)
+       aeobj_2 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('posn'), fr=aeobj_1)
+       args['----'] = aeobj_2
+       args["data"] = [x, y]
+       _reply, args, attrs = finder.send('core', 'setd', args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def _getwindowposition(folder_alias):
+       """Get the size of a Finder window for folder, Specify by path."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_0 = aetypes.ObjectSpecifier(want=aetypes.Type('cfol'), 
+                       form="alis", seld=folder_alias, fr=None)
+       aeobj_1 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('cwnd'), fr=aeobj_0)
+       aeobj_2 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('ptsz'), fr=aeobj_1)
+       args['----'] = aeobj_2
+       _reply, args, attrs = finder.send('core', 'getd', args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def icon(object, icondata=None):
+       """icon sets the icon of object, if no icondata is given,
+       icon will return an AE object with binary data for the current icon.
+       If left untouched, this data can be used to paste the icon on another file.
+       Development opportunity: get and set the data as PICT."""
+       fss = macfs.FSSpec(object)
+       object_alias = fss.NewAlias()
+       if icondata == None:
+               return _geticon(object_alias)
+       return _seticon(object_alias, icondata)
+       
+def _geticon(object_alias):
+       """get the icondata for object. Binary data of some sort."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('cobj'), 
+                       form="alis", seld=object_alias, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('iimg'), fr=aeobj_00)
+       args['----'] = aeobj_01
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def _seticon(object_alias, icondata):
+       """set the icondata for object, formatted as produced by _geticon()"""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('cobj'), 
+                       form="alis", seld=object_alias, fr=None)
+       aeobj_01 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), 
+                       form="prop", seld=aetypes.Type('iimg'), fr=aeobj_00)
+       args['----'] = aeobj_01
+       args["data"] = icondata
+       _reply, args, attrs = finder.send("core", "setd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----'].data
+
+
+#---------------------------------------------------
+#      Volumes and servers.
+       
+def mountvolume(volume, server=None, username=None, password=None):
+       """mount a volume, local or on a server on AppleTalk.
+       Note: mounting a ASIP server requires a different operation.
+       server is the name of the server where the volume belongs
+       username, password belong to a registered user of the volume."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       if password:
+               args["PASS"] = password
+       if username:
+               args["USER"] = username
+       if server:
+               args["SRVR"] = server
+       args['----'] = volume
+       _reply, args, attrs = finder.send("aevt", "mvol", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def unmountvolume(volume):
+       """unmount a volume that's on the desktop"""
+       putaway(volume)
+       
+def putaway(object):
+       """puth the object away, whereever it came from."""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       args['----'] = aetypes.ObjectSpecifier(want=aetypes.Type('cdis'), form="name", seld=object, fr=None)
+       _reply, args, attrs = talker.send("fndr", "ptwy", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+
+#---------------------------------------------------
+#      Miscellaneous functions
+#
+
+def volumelevel(level):
+       """set the audio output level, parameter between 0 (silent) and 7 (full blast)"""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       if level < 0:
+               level = 0
+       elif level > 7:
+               level = 7
+       args['----'] = level
+       _reply, args, attrs = finder.send("aevt", "stvl", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def OSversion():
+       """return the version of the system software"""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       aeobj_00 = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('ver2'), fr=None)
+       args['----'] = aeobj_00
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               return args['----']
+
+def filesharing():
+       """return the current status of filesharing and whether it is starting up or not:
+               -1      file sharing is off and not starting up
+               0       file sharing is off and starting up
+               1       file sharing is on"""
+       status = -1
+       finder = _getfinder()
+       # see if it is on
+       args = {}
+       attrs = {}
+       args['----'] = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('fshr'), fr=None)
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               if args['----'] == 0:
+                       status = -1
+               else:
+                       status = 1
+       # is it starting up perchance?
+       args = {}
+       attrs = {}
+       args['----'] = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('fsup'), fr=None)
+       _reply, args, attrs = finder.send("core", "getd", args, attrs)
+       if args.has_key('errn'):
+               raise Error, aetools.decodeerror(args)
+       if args.has_key('----'):
+               if args['----'] == 1:
+                       status = 0
+       return status
+       
+def movetotrash(path):
+       """move the object to the trash"""
+       fss = macfs.FSSpec(path)
+       trashfolder = macfs.FSSpec(macfs.FindFolder(fss.as_tuple()[0], 'trsh', 0) + ("",)).as_pathname()
+       findertools.move(path, trashfolder)
+
+def emptytrash():
+       """empty the trash"""
+       finder = _getfinder()
+       args = {}
+       attrs = {}
+       args['----'] = aetypes.ObjectSpecifier(want=aetypes.Type('prop'), form="prop", seld=aetypes.Type('trsh'), fr=None)
+       _reply, args, attrs = finder.send("fndr", "empt", args, attrs)
+       if args.has_key('errn'):
+               raise aetools.Error, aetools.decodeerror(args)
+
+
+def _test():
+       print 'Original findertools functionality test...'
+       print 'Testing launch...'
+       fss, ok = macfs.PromptGetFile('File to launch:')
+       if ok:
+               result = launch(fss)
+               if result:
+                       print 'Result: ', result
+               print 'Press return-',
+               sys.stdin.readline()
+       print 'Testing print...'
+       fss, ok = macfs.PromptGetFile('File to print:')
+       if ok:
+               result = Print(fss)
+               if result:
+                       print 'Result: ', result
+               print 'Press return-',
+               sys.stdin.readline()
+       print 'Testing copy...'
+       fss, ok = macfs.PromptGetFile('File to copy:')
+       if ok:
+               dfss, ok = macfs.GetDirectory()
+               if ok:
+                       result = copy(fss, dfss)
+                       if result:
+                               print 'Result:', result
+                       print 'Press return-',
+                       sys.stdin.readline()
+       print 'Testing move...'
+       fss, ok = macfs.PromptGetFile('File to move:')
+       if ok:
+               dfss, ok = macfs.GetDirectory()
+               if ok:
+                       result = move(fss, dfss)
+                       if result:
+                               print 'Result:', result
+                       print 'Press return-',
+                       sys.stdin.readline()
+       import EasyDialogs
+       print 'Testing sleep...'
+       if EasyDialogs.AskYesNoCancel('Sleep?') > 0:
+               result = sleep()
+               if result:
+                       print 'Result:', result
+               print 'Press return-',
+               sys.stdin.readline()
+       print 'Testing shutdown...'
+       if EasyDialogs.AskYesNoCancel('Shut down?') > 0:
+               result = shutdown()
+               if result:
+                       print 'Result:', result
+               print 'Press return-',
+               sys.stdin.readline()
+       print 'Testing restart...'
+       if EasyDialogs.AskYesNoCancel('Restart?') > 0:
+               result = restart()
+               if result:
+                       print 'Result:', result
+               print 'Press return-',
+               sys.stdin.readline()
+
+def _test2():
+       print '\nmorefindertools version %s\nTests coming up\83' %__version__
+       import os
+       import random
+
+       # miscellaneous
+       print '\tfilesharing on?',      filesharing()           # is file sharing on, off, starting up?
+       print '\tOS version',           OSversion()             # the version of the system software
+
+       # set the soundvolume in a simple way
+       print '\tSystem beep volume'
+       for i in range(0, 7):
+               volumelevel(i)          
+               MacOS.SysBeep()
+
+       # Finder's windows, file location, file attributes
+       open("@findertoolstest", "w")
+       f = macfs.FSSpec("@findertoolstest").as_pathname()
+       reveal(f)                               # reveal this file in a Finder window
+       select(f)                               # select this file
+
+       base, file = os.path.split(f)
+       closewindow(base)       # close the window this file is in      (opened by reveal)
+       openwindow(base)                # open it again
+       windowview(base, 1)     # set the view by list
+
+       label(f, 2)                             # set the label of this file to something orange
+       print '\tlabel', label(f)       # get the label of this file
+
+       # the file location only works in a window with icon view!
+       print 'Random locations for an icon'
+       windowview(base, 0)             # set the view by icon
+       windowsize(base, (600, 600))
+       for i in range(50):
+               location(f, (random.randint(10, 590), random.randint(10, 590)))
+
+       windowsize(base, (200, 400))
+       windowview(base, 1)             # set the view by icon
+
+       orgpos = windowposition(base)
+       print 'Animated window location'
+       for i in range(10):
+               pos = (100+i*10, 100+i*10)
+               windowposition(base, pos)
+               print '\twindow position', pos
+       windowposition(base, orgpos)    # park it where it was before\83
+
+       print 'Put a comment in file', f, ':'
+       print '\t', comment(f)          # print the Finder comment this file has
+       s = 'This is a comment no one reads!'
+       comment(f, s)                   # set the Finder comment
+       
+def _test3():
+       print 'MacOS9 or better specific functions'
+       # processes
+       pr = processes()                # return a list of tuples with (active_processname, creatorcode)
+       print 'Return a list of current active processes:'
+       for p in pr:
+               print '\t', p
+       
+       # get attributes of the first process in the list
+       print 'Attributes of the first process in the list:'
+       pinfo = processinfo(pr[0][0])
+       print '\t', pr[0][0]
+       print '\t\tmemory partition', pinfo.partition           # the memory allocated to this process
+       print '\t\tmemory used', pinfo.used                     # the memory actuall used by this process
+       print '\t\tis visible', pinfo.visible                   # is the process visible to the user
+       print '\t\tis frontmost', pinfo.frontmost               # is the process the front most one?
+       print '\t\thas scripting', pinfo.hasscripting           # is the process scriptable?
+       print '\t\taccepts high level events',  pinfo.accepthighlevel   # does the process accept high level appleevents?
+
+if __name__ == '__main__':
+       _test()
+       _test2()
+       _test3()
+       
diff --git a/Mac/Lib/lib-scripting/AppleScript_Suite.py b/Mac/Lib/lib-scripting/AppleScript_Suite.py
new file mode 100644 (file)
index 0000000..34765d2
--- /dev/null
@@ -0,0 +1,1600 @@
+"""Suite AppleScript Suite: Goodies for Gustav
+Level 1, version 1
+
+Generated from flap:System Folder:Extensions:Scripting Additions:Dialects:English Dialect
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'ascr'
+
+class AppleScript_Suite:
+
+       def activate(self, _no_object=None, _attributes={}, **_arguments):
+               """activate: Bring targeted application program to the front.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'actv'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def log(self, _object, _attributes={}, **_arguments):
+               """log: Cause a comment to be logged.
+               Required argument: anything
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ascr'
+               _subcode = 'cmnt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def stop_log(self, _no_object=None, _attributes={}, **_arguments):
+               """stop log: 
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ToyS'
+               _subcode = 'log0'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def start_log(self, _no_object=None, _attributes={}, **_arguments):
+               """start log: 
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ToyS'
+               _subcode = 'log1'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def copy(self, _no_object=None, _attributes={}, **_arguments):
+               """copy: Copy an object to the clipboard
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'copy'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def do_script(self, _object, _attributes={}, **_arguments):
+               """do script: Execute a script
+               Required argument: the script to execute
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'misc'
+               _subcode = 'dosc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def idle(self, _no_object=None, _attributes={}, **_arguments):
+               """idle: Sent to a script application when it is idle
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Number of seconds to wait for next idle event
+               """
+               _code = 'misc'
+               _subcode = 'idle'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def launch(self, _no_object=None, _attributes={}, **_arguments):
+               """launch: Start an application for scripting
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'noop'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def tell(self, _no_object=None, _attributes={}, **_arguments):
+               """tell: Magic tell event for event logging
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'tell'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def end_tell(self, _no_object=None, _attributes={}, **_arguments):
+               """end tell: Start an application for scripting
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'tend'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_error = {
+               'number' : 'errn',
+               'partial_result' : 'ptlr',
+               '_from' : 'erob',
+               'to' : 'errt',
+       }
+
+       def error(self, _object=None, _attributes={}, **_arguments):
+               """error: Raise an error
+               Required argument: anything
+               Keyword argument number: an error number
+               Keyword argument partial_result: any partial result occurring before the error
+               Keyword argument _from: the object that caused the error
+               Keyword argument to: another parameter to the error
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'err '
+
+               aetools.keysubst(_arguments, self._argmap_error)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Call_a5_subroutine = {
+               'at' : 'at  ',
+               '_from' : 'from',
+               '_for' : 'for ',
+               'to' : 'to  ',
+               'thru' : 'thru',
+               'through' : 'thgh',
+               'by' : 'by  ',
+               'on' : 'on  ',
+               'into' : 'into',
+               'onto' : 'onto',
+               'between' : 'btwn',
+               'against' : 'agst',
+               'out_of' : 'outo',
+               'instead_of' : 'isto',
+               'aside_from' : 'asdf',
+               'around' : 'arnd',
+               'beside' : 'bsid',
+               'beneath' : 'bnth',
+               'under' : 'undr',
+               'over' : 'over',
+               'above' : 'abve',
+               'below' : 'belw',
+               'apart_from' : 'aprt',
+               'given' : 'givn',
+               'with' : 'with',
+               'without' : 'wout',
+               'about' : 'abou',
+               'since' : 'snce',
+               'until' : 'till',
+               'returning' : 'Krtn',
+       }
+
+       def Call_a5_subroutine(self, _object=None, _attributes={}, **_arguments):
+               """Call\82subroutine: A subroutine call
+               Required argument: anything
+               Keyword argument at: a preposition
+               Keyword argument _from: a preposition
+               Keyword argument _for: a preposition
+               Keyword argument to: a preposition
+               Keyword argument thru: a preposition
+               Keyword argument through: a preposition
+               Keyword argument by: a preposition
+               Keyword argument on: a preposition
+               Keyword argument into: a preposition
+               Keyword argument onto: a preposition
+               Keyword argument between: a preposition
+               Keyword argument against: a preposition
+               Keyword argument out_of: a preposition
+               Keyword argument instead_of: a preposition
+               Keyword argument aside_from: a preposition
+               Keyword argument around: a preposition
+               Keyword argument beside: a preposition
+               Keyword argument beneath: a preposition
+               Keyword argument under: a preposition
+               Keyword argument over: a preposition
+               Keyword argument above: a preposition
+               Keyword argument below: a preposition
+               Keyword argument apart_from: a preposition
+               Keyword argument given: a preposition
+               Keyword argument with: special preposition for setting event properties
+               Keyword argument without: special preposition for clearing event properties
+               Keyword argument about: a preposition
+               Keyword argument since: a preposition
+               Keyword argument until: a preposition
+               Keyword argument returning: specifies a pattern to match results to
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'psbr'
+
+               aetools.keysubst(_arguments, self._argmap_Call_a5_subroutine)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _3d_(self, _object, _attributes={}, **_arguments):
+               """=: Equality
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '=   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _ad_(self, _object, _attributes={}, **_arguments):
+               """­: Inequality
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '\255   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _2b_(self, _object, _attributes={}, **_arguments):
+               """+: Addition
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '+   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _2d_(self, _object, _attributes={}, **_arguments):
+               """-: Subtraction
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '-   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _2a_(self, _object, _attributes={}, **_arguments):
+               """*: Multiplication
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '*   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _d6_(self, _object, _attributes={}, **_arguments):
+               """÷: Division
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '/   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def div(self, _object, _attributes={}, **_arguments):
+               """div: Quotient
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'div '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def mod(self, _object, _attributes={}, **_arguments):
+               """mod: Remainder
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'mod '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _5e_(self, _object, _attributes={}, **_arguments):
+               """^: Exponentiation
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '^   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _3e_(self, _object, _attributes={}, **_arguments):
+               """>: Greater than
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '>   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _b3_(self, _object, _attributes={}, **_arguments):
+               """³: Greater than or equal to
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '>=  '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _3c_(self, _object, _attributes={}, **_arguments):
+               """<: Less than
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '<   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _b2_(self, _object, _attributes={}, **_arguments):
+               """²: Less than or equal to
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '<=  '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _26_(self, _object, _attributes={}, **_arguments):
+               """&: Concatenation
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'ccat'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def starts_with(self, _object, _attributes={}, **_arguments):
+               """starts with: Starts with
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'bgwt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def ends_with(self, _object, _attributes={}, **_arguments):
+               """ends with: Ends with
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'ends'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def contains(self, _object, _attributes={}, **_arguments):
+               """contains: Containment
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'cont'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _and(self, _object, _attributes={}, **_arguments):
+               """and: Logical conjunction
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'AND '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _or(self, _object, _attributes={}, **_arguments):
+               """or: Logical disjunction
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'OR  '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def as(self, _object, _attributes={}, **_arguments):
+               """as: Coercion
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'coer'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _not(self, _object, _attributes={}, **_arguments):
+               """not: Logical negation
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'NOT '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def negate(self, _object, _attributes={}, **_arguments):
+               """negate: Numeric negation
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'neg '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class _empty_ae_name(aetools.ComponentItem):
+       """ - the undefined value"""
+       want = 'undf'
+
+class upper_case(aetools.ComponentItem):
+       """upper case - Text with lower case converted to upper case"""
+       want = 'case'
+
+class machines(aetools.ComponentItem):
+       """machines - every computer"""
+       want = 'mach'
+
+machine = machines
+
+class zones(aetools.ComponentItem):
+       """zones - every AppleTalk zone"""
+       want = 'zone'
+
+zone = zones
+
+class seconds(aetools.ComponentItem):
+       """seconds - more than one second"""
+       want = 'scnd'
+
+class item(aetools.ComponentItem):
+       """item - An item of any type"""
+       want = 'cobj'
+class id(aetools.NProperty):
+       """id - the unique id number of this object"""
+       which = 'ID  '
+       want = 'long'
+
+items = item
+
+class text_items(aetools.ComponentItem):
+       """text items - """
+       want = 'citm'
+
+text_item = text_items
+
+class date(aetools.ComponentItem):
+       """date - Absolute date and time values"""
+       want = 'ldt '
+class weekday(aetools.NProperty):
+       """weekday - the day of a week of a date"""
+       which = 'wkdy'
+       want = 'wkdy'
+class month(aetools.NProperty):
+       """month - the month of a date"""
+       which = 'mnth'
+       want = 'mnth'
+class day(aetools.NProperty):
+       """day - the day of the month of a date"""
+       which = 'day '
+       want = 'long'
+class year(aetools.NProperty):
+       """year - the year of a date"""
+       which = 'year'
+       want = 'long'
+class time(aetools.NProperty):
+       """time - the time since midnight of a date"""
+       which = 'time'
+       want = 'long'
+class date_string(aetools.NProperty):
+       """date string - the date portion of a date-time value as a string"""
+       which = 'dstr'
+       want = 'TEXT'
+class time_string(aetools.NProperty):
+       """time string - the time portion of a date-time value as a string"""
+       which = 'tstr'
+       want = 'TEXT'
+
+dates = date
+
+class month(aetools.ComponentItem):
+       """month - a month"""
+       want = 'mnth'
+
+months = month
+
+class January(aetools.ComponentItem):
+       """January - It's June in January..."""
+       want = 'jan '
+
+class February(aetools.ComponentItem):
+       """February - the month of February"""
+       want = 'feb '
+
+class March(aetools.ComponentItem):
+       """March - the month of March"""
+       want = 'mar '
+
+class April(aetools.ComponentItem):
+       """April - the month of April"""
+       want = 'apr '
+
+class May(aetools.ComponentItem):
+       """May - the very merry month of May"""
+       want = 'may '
+
+class June(aetools.ComponentItem):
+       """June - the month of June"""
+       want = 'jun '
+
+class July(aetools.ComponentItem):
+       """July - the month of July"""
+       want = 'jul '
+
+class August(aetools.ComponentItem):
+       """August - the month of August"""
+       want = 'aug '
+
+class September(aetools.ComponentItem):
+       """September - the month of September"""
+       want = 'sep '
+
+class October(aetools.ComponentItem):
+       """October - the month of October"""
+       want = 'oct '
+
+class November(aetools.ComponentItem):
+       """November - the month of November"""
+       want = 'nov '
+
+class December(aetools.ComponentItem):
+       """December - the month of December"""
+       want = 'dec '
+
+class weekday(aetools.ComponentItem):
+       """weekday - a weekday"""
+       want = 'wkdy'
+
+weekdays = weekday
+
+class Sunday(aetools.ComponentItem):
+       """Sunday - Sunday Bloody Sunday"""
+       want = 'sun '
+
+class Monday(aetools.ComponentItem):
+       """Monday - Blue Monday"""
+       want = 'mon '
+
+class Tuesday(aetools.ComponentItem):
+       """Tuesday - Ruby Tuesday"""
+       want = 'tue '
+
+class Wednesday(aetools.ComponentItem):
+       """Wednesday - Wednesday Week"""
+       want = 'wed '
+
+class Thursday(aetools.ComponentItem):
+       """Thursday - Thursday Afternoon"""
+       want = 'thu '
+
+class Friday(aetools.ComponentItem):
+       """Friday - Friday"""
+       want = 'fri '
+
+class Saturday(aetools.ComponentItem):
+       """Saturday - Saturday Night's Alright for Fighting"""
+       want = 'sat '
+
+class RGB_color(aetools.ComponentItem):
+       """RGB color - Three numbers specifying red, green, blue color values"""
+       want = 'cRGB'
+
+RGB_colors = RGB_color
+
+class integer(aetools.ComponentItem):
+       """integer - An integral number"""
+       want = 'long'
+
+integers = integer
+
+class boolean(aetools.ComponentItem):
+       """boolean - A true or false value"""
+       want = 'bool'
+
+booleans = boolean
+
+class real(aetools.ComponentItem):
+       """real - A real number"""
+       want = 'doub'
+
+reals = real
+
+class list(aetools.ComponentItem):
+       """list - An ordered collection of items"""
+       want = 'list'
+class length(aetools.NProperty):
+       """length - the length of a list"""
+       which = 'leng'
+       want = 'long'
+
+lists = list
+
+class linked_list(aetools.ComponentItem):
+       """linked list - An ordered collection of items"""
+       want = 'llst'
+# repeated property length the length of a list
+
+linked_lists = linked_list
+
+class vector(aetools.ComponentItem):
+       """vector - An ordered collection of items"""
+       want = 'vect'
+# repeated property length the length of a list
+
+vectors = vector
+
+class record(aetools.ComponentItem):
+       """record - A set of labeled items"""
+       want = 'reco'
+
+records = record
+
+class script(aetools.ComponentItem):
+       """script - An AppleScript script"""
+       want = 'scpt'
+class parent(aetools.NProperty):
+       """parent - the parent of a script"""
+       which = 'pare'
+       want = 'scpt'
+
+scripts = script
+
+class string(aetools.ComponentItem):
+       """string - a sequence of characters"""
+       want = 'TEXT'
+
+strings = string
+
+class styled_text(aetools.ComponentItem):
+       """styled text - a sequence of characters with style"""
+       want = 'STXT'
+
+class number(aetools.ComponentItem):
+       """number - an integer or floating point number"""
+       want = 'nmbr'
+
+numbers = number
+
+class _class(aetools.ComponentItem):
+       """class - the type of a value"""
+       want = 'pcls'
+class inherits(aetools.NProperty):
+       """inherits - classes to inherit properties from"""
+       which = 'c@#^'
+       want = 'pcls'
+
+classes = _class
+
+class event(aetools.ComponentItem):
+       """event - an AppleEvents event"""
+       want = 'evnt'
+
+events = event
+
+class property(aetools.ComponentItem):
+       """property - an AppleEvents property"""
+       want = 'prop'
+
+properties = property
+
+class constant(aetools.ComponentItem):
+       """constant - A constant value"""
+       want = 'enum'
+
+constants = constant
+
+class preposition(aetools.ComponentItem):
+       """preposition - an AppleEvents preposition"""
+       want = 'prep'
+
+prepositions = preposition
+
+class key(aetools.ComponentItem):
+       """key - an AppleEvents key form"""
+       want = 'keyf'
+
+keys = key
+
+class picture(aetools.ComponentItem):
+       """picture - A picture"""
+       want = 'PICT'
+
+pictures = picture
+
+class reference(aetools.ComponentItem):
+       """reference - An AppleScript reference"""
+       want = 'obj '
+
+references = reference
+
+class data(aetools.ComponentItem):
+       """data - An AppleScript raw data object"""
+       want = 'rdat'
+
+class handler(aetools.ComponentItem):
+       """handler - An AppleScript handler"""
+       want = 'hand'
+
+handlers = handler
+
+class list_or_record(aetools.ComponentItem):
+       """list or record - a list or record"""
+       want = 'lr  '
+
+class list_or_string(aetools.ComponentItem):
+       """list or string - a list or string"""
+       want = 'ls  '
+
+class list_2c__record_or_text(aetools.ComponentItem):
+       """list, record or text - a list, record or text"""
+       want = 'lrs '
+
+class number_or_date(aetools.ComponentItem):
+       """number or date - a number or date"""
+       want = 'nd  '
+
+class number_2c__date_or_text(aetools.ComponentItem):
+       """number, date or text - a number, date or text"""
+       want = 'nds '
+
+class alias(aetools.ComponentItem):
+       """alias - a reference to an existing file"""
+       want = 'alis'
+
+aliases = alias
+
+class application(aetools.ComponentItem):
+       """application - specifies global properties of AppleScript"""
+       want = 'capp'
+class result(aetools.NProperty):
+       """result - the last result of evaluation"""
+       which = 'rslt'
+       want = 'cobj'
+class space(aetools.NProperty):
+       """space - a space character"""
+       which = 'spac'
+       want = 'TEXT'
+class _return(aetools.NProperty):
+       """return - a return character"""
+       which = 'ret '
+       want = 'TEXT'
+class tab(aetools.NProperty):
+       """tab - a tab character"""
+       which = 'tab '
+       want = 'TEXT'
+class minutes(aetools.NProperty):
+       """minutes - the number of seconds in a minute"""
+       which = 'min '
+       want = 'TEXT'
+class hours(aetools.NProperty):
+       """hours - the number of seconds in an hour"""
+       which = 'hour'
+       want = 'TEXT'
+class days(aetools.NProperty):
+       """days - the number of seconds in a day"""
+       which = 'days'
+       want = 'TEXT'
+class weeks(aetools.NProperty):
+       """weeks - the number of seconds in a week"""
+       which = 'week'
+       want = 'TEXT'
+class pi(aetools.NProperty):
+       """pi - the constant pi"""
+       which = 'pi  '
+       want = 'doub'
+class print_length(aetools.NProperty):
+       """print length - the maximum length to print"""
+       which = 'prln'
+       want = 'long'
+class print_depth(aetools.NProperty):
+       """print depth - the maximum depth to print"""
+       which = 'prdp'
+       want = 'long'
+class reverse(aetools.NProperty):
+       """reverse - the reverse of a list"""
+       which = 'rvse'
+       want = 'list'
+class rest(aetools.NProperty):
+       """rest - the rest of a list"""
+       which = 'rest'
+       want = 'list'
+class text_item_delimiters(aetools.NProperty):
+       """text item delimiters - the text item delimiters of a string"""
+       which = 'txdl'
+       want = 'list'
+class AppleScript(aetools.NProperty):
+       """AppleScript - the top-level script object"""
+       which = 'ascr'
+       want = 'scpt'
+
+applications = application
+
+app = application
+
+class version(aetools.ComponentItem):
+       """version - a version value"""
+       want = 'vers'
+
+class writing_code_info(aetools.ComponentItem):
+       """writing code info - Script code and language code of text run"""
+       want = 'citl'
+class script_code(aetools.NProperty):
+       """script code - the script code for the text"""
+       which = 'pscd'
+       want = 'shor'
+class language_code(aetools.NProperty):
+       """language code - the language code for the text"""
+       which = 'plcd'
+       want = 'shor'
+
+writing_code_infos = writing_code_info
+_empty_ae_name._propdict = {
+}
+_empty_ae_name._elemdict = {
+}
+upper_case._propdict = {
+}
+upper_case._elemdict = {
+}
+machines._propdict = {
+}
+machines._elemdict = {
+}
+zones._propdict = {
+}
+zones._elemdict = {
+}
+seconds._propdict = {
+}
+seconds._elemdict = {
+}
+item._propdict = {
+       'id' : id,
+}
+item._elemdict = {
+}
+text_items._propdict = {
+}
+text_items._elemdict = {
+}
+date._propdict = {
+       'weekday' : weekday,
+       'month' : month,
+       'day' : day,
+       'year' : year,
+       'time' : time,
+       'date_string' : date_string,
+       'time_string' : time_string,
+}
+date._elemdict = {
+}
+month._propdict = {
+}
+month._elemdict = {
+}
+January._propdict = {
+}
+January._elemdict = {
+}
+February._propdict = {
+}
+February._elemdict = {
+}
+March._propdict = {
+}
+March._elemdict = {
+}
+April._propdict = {
+}
+April._elemdict = {
+}
+May._propdict = {
+}
+May._elemdict = {
+}
+June._propdict = {
+}
+June._elemdict = {
+}
+July._propdict = {
+}
+July._elemdict = {
+}
+August._propdict = {
+}
+August._elemdict = {
+}
+September._propdict = {
+}
+September._elemdict = {
+}
+October._propdict = {
+}
+October._elemdict = {
+}
+November._propdict = {
+}
+November._elemdict = {
+}
+December._propdict = {
+}
+December._elemdict = {
+}
+weekday._propdict = {
+}
+weekday._elemdict = {
+}
+Sunday._propdict = {
+}
+Sunday._elemdict = {
+}
+Monday._propdict = {
+}
+Monday._elemdict = {
+}
+Tuesday._propdict = {
+}
+Tuesday._elemdict = {
+}
+Wednesday._propdict = {
+}
+Wednesday._elemdict = {
+}
+Thursday._propdict = {
+}
+Thursday._elemdict = {
+}
+Friday._propdict = {
+}
+Friday._elemdict = {
+}
+Saturday._propdict = {
+}
+Saturday._elemdict = {
+}
+RGB_color._propdict = {
+}
+RGB_color._elemdict = {
+}
+integer._propdict = {
+}
+integer._elemdict = {
+}
+boolean._propdict = {
+}
+boolean._elemdict = {
+}
+real._propdict = {
+}
+real._elemdict = {
+}
+list._propdict = {
+       'length' : length,
+}
+list._elemdict = {
+}
+linked_list._propdict = {
+       'length' : length,
+}
+linked_list._elemdict = {
+}
+vector._propdict = {
+       'length' : length,
+}
+vector._elemdict = {
+}
+record._propdict = {
+}
+record._elemdict = {
+}
+script._propdict = {
+       'parent' : parent,
+}
+script._elemdict = {
+}
+string._propdict = {
+}
+string._elemdict = {
+}
+styled_text._propdict = {
+}
+styled_text._elemdict = {
+}
+number._propdict = {
+}
+number._elemdict = {
+}
+_class._propdict = {
+       'inherits' : inherits,
+}
+_class._elemdict = {
+}
+event._propdict = {
+}
+event._elemdict = {
+}
+property._propdict = {
+}
+property._elemdict = {
+}
+constant._propdict = {
+}
+constant._elemdict = {
+}
+preposition._propdict = {
+}
+preposition._elemdict = {
+}
+key._propdict = {
+}
+key._elemdict = {
+}
+picture._propdict = {
+}
+picture._elemdict = {
+}
+reference._propdict = {
+}
+reference._elemdict = {
+}
+data._propdict = {
+}
+data._elemdict = {
+}
+handler._propdict = {
+}
+handler._elemdict = {
+}
+list_or_record._propdict = {
+}
+list_or_record._elemdict = {
+}
+list_or_string._propdict = {
+}
+list_or_string._elemdict = {
+}
+list_2c__record_or_text._propdict = {
+}
+list_2c__record_or_text._elemdict = {
+}
+number_or_date._propdict = {
+}
+number_or_date._elemdict = {
+}
+number_2c__date_or_text._propdict = {
+}
+number_2c__date_or_text._elemdict = {
+}
+alias._propdict = {
+}
+alias._elemdict = {
+}
+application._propdict = {
+       'result' : result,
+       'space' : space,
+       '_return' : _return,
+       'tab' : tab,
+       'minutes' : minutes,
+       'hours' : hours,
+       'days' : days,
+       'weeks' : weeks,
+       'pi' : pi,
+       'print_length' : print_length,
+       'print_depth' : print_depth,
+       'reverse' : reverse,
+       'rest' : rest,
+       'text_item_delimiters' : text_item_delimiters,
+       'AppleScript' : AppleScript,
+}
+application._elemdict = {
+}
+version._propdict = {
+}
+version._elemdict = {
+}
+writing_code_info._propdict = {
+       'script_code' : script_code,
+       'language_code' : language_code,
+}
+writing_code_info._elemdict = {
+}
+_Enum_cons = {
+       'case' : 'case',        # case
+       'diacriticals' : 'diac',        # diacriticals
+       'white_space' : 'whit', # white space
+       'hyphens' : 'hyph',     # hyphens
+       'expansion' : 'expa',   # expansion
+       'punctuation' : 'punc', # punctuation
+       'application_responses' : 'rmte',       # remote event replies
+}
+
+_Enum_boov = {
+       'true' : 'true',        # the true boolean value
+       'false' : 'fals',       # the false boolean value
+}
+
+_Enum_misc = {
+       'current_application' : 'cura', # the current application
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'jan ' : January,
+       'PICT' : picture,
+       'vers' : version,
+       'sat ' : Saturday,
+       'nov ' : November,
+       'ls  ' : list_or_string,
+       'list' : list,
+       'cRGB' : RGB_color,
+       'citl' : writing_code_info,
+       'scnd' : seconds,
+       'thu ' : Thursday,
+       'keyf' : key,
+       'sun ' : Sunday,
+       'wkdy' : weekday,
+       'rdat' : data,
+       'vect' : vector,
+       'obj ' : reference,
+       'hand' : handler,
+       'tue ' : Tuesday,
+       'dec ' : December,
+       'enum' : constant,
+       'nd  ' : number_or_date,
+       'wed ' : Wednesday,
+       'undf' : _empty_ae_name,
+       'reco' : record,
+       'capp' : application,
+       'cobj' : item,
+       'prep' : preposition,
+       'mach' : machines,
+       'citm' : text_items,
+       'bool' : boolean,
+       'nmbr' : number,
+       'prop' : property,
+       'long' : integer,
+       'sep ' : September,
+       'scpt' : script,
+       'pcls' : _class,
+       'alis' : alias,
+       'mon ' : Monday,
+       'lr  ' : list_or_record,
+       'jul ' : July,
+       'fri ' : Friday,
+       'oct ' : October,
+       'mar ' : March,
+       'ldt ' : date,
+       'lrs ' : list_2c__record_or_text,
+       'jun ' : June,
+       'case' : upper_case,
+       'doub' : real,
+       'feb ' : February,
+       'nds ' : number_2c__date_or_text,
+       'llst' : linked_list,
+       'STXT' : styled_text,
+       'aug ' : August,
+       'TEXT' : string,
+       'apr ' : April,
+       'may ' : May,
+       'zone' : zones,
+       'evnt' : event,
+       'mnth' : month,
+}
+
+_propdeclarations = {
+       'day ' : day,
+       'rslt' : result,
+       'time' : time,
+       'prln' : print_length,
+       'prdp' : print_depth,
+       'txdl' : text_item_delimiters,
+       'days' : days,
+       'spac' : space,
+       'hour' : hours,
+       'pscd' : script_code,
+       'plcd' : language_code,
+       'ret ' : _return,
+       'tstr' : time_string,
+       'tab ' : tab,
+       'rvse' : reverse,
+       'wkdy' : weekday,
+       'ID  ' : id,
+       'c@#^' : inherits,
+       'ascr' : AppleScript,
+       'rest' : rest,
+       'dstr' : date_string,
+       'min ' : minutes,
+       'pi  ' : pi,
+       'leng' : length,
+       'year' : year,
+       'pare' : parent,
+       'mnth' : month,
+       'week' : weeks,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'cons' : _Enum_cons,
+       'boov' : _Enum_boov,
+       'misc' : _Enum_misc,
+}
diff --git a/Mac/Lib/lib-scripting/CodeWarrior_Standard_Suite.py b/Mac/Lib/lib-scripting/CodeWarrior_Standard_Suite.py
new file mode 100644 (file)
index 0000000..774f058
--- /dev/null
@@ -0,0 +1,423 @@
+"""Suite CodeWarrior Standard Suite: Standard suite events supported by the CodeWarrior IDE.
+Level 1, version 1
+
+Generated from flap:Metrowerks:Metrowerks CodeWarrior:CodeWarrior IDE 2.0.1
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'CWIE'
+
+class CodeWarrior_Standard_Suite:
+
+       _argmap_close = {
+               'saving' : 'savo',
+               'saving_in' : 'kfil',
+       }
+
+       def close(self, _object, _attributes={}, **_arguments):
+               """close: Close an object
+               Required argument: the object to close
+               Keyword argument saving: Specifies whether or not changes should be saved before closing
+               Keyword argument saving_in: the file in which to save the object
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'clos'
+
+               aetools.keysubst(_arguments, self._argmap_close)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'savo', _Enum_savo)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_count = {
+               'each' : 'kocl',
+       }
+
+       def count(self, _object, _attributes={}, **_arguments):
+               """count: Return the number of elements of a particular class within an object
+               Required argument: the object whose elements are to be counted
+               Keyword argument each: the class of the elements to be counted. Keyword 'each' is optional in AppleScript
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the number of elements
+               """
+               _code = 'core'
+               _subcode = 'cnte'
+
+               aetools.keysubst(_arguments, self._argmap_count)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_get = {
+               'as' : 'rtyp',
+       }
+
+       def get(self, _object, _attributes={}, **_arguments):
+               """get: Get the data for an object
+               Required argument: the object whose data is to be returned
+               Keyword argument as: the desired types for the data, in order of preference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The data from the object
+               """
+               _code = 'core'
+               _subcode = 'getd'
+
+               aetools.keysubst(_arguments, self._argmap_get)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_make = {
+               'new' : 'kocl',
+               'at' : 'insh',
+               'with_data' : 'data',
+               'with_properties' : 'prdt',
+       }
+
+       def make(self, _no_object=None, _attributes={}, **_arguments):
+               """make: Make a new element
+               Keyword argument new: the class of the new element. Keyword 'new' is optional in AppleScript
+               Keyword argument at: the location at which to insert the element
+               Keyword argument with_data: the initial data for the element
+               Keyword argument with_properties: the initial values for the properties of the element
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: to the new object(s)
+               """
+               _code = 'core'
+               _subcode = 'crel'
+
+               aetools.keysubst(_arguments, self._argmap_make)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def select(self, _object=None, _attributes={}, **_arguments):
+               """select: Select the specified object
+               Required argument: the object to select
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'slct'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_set = {
+               'to' : 'data',
+       }
+
+       def set(self, _object, _attributes={}, **_arguments):
+               """set: Set an object's data
+               Required argument: the object to change
+               Keyword argument to: the new value
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'setd'
+
+               aetools.keysubst(_arguments, self._argmap_set)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class application(aetools.ComponentItem):
+       """application - An application program"""
+       want = 'capp'
+class user_interaction(aetools.NProperty):
+       """user interaction - User interaction level"""
+       which = 'inte'
+       want = 'Inte'
+#        element 'docu' as ['indx', 'name', 'rang']
+#        element 'cwin' as ['indx', 'name', 'rang']
+#        element 'Clas' as ['indx', 'name']
+
+class character(aetools.ComponentItem):
+       """character - A character"""
+       want = 'cha '
+class offset(aetools.NProperty):
+       """offset - offset of a text object from the beginning of the document (first char has offset 1)"""
+       which = 'pOff'
+       want = 'long'
+class length(aetools.NProperty):
+       """length - length in characters of this object"""
+       which = 'pLen'
+       want = 'long'
+
+class document(aetools.ComponentItem):
+       """document - A document"""
+       want = 'docu'
+class file(aetools.NProperty):
+       """file - The file of the document"""
+       which = 'file'
+       want = 'fss '
+class index(aetools.NProperty):
+       """index - the number of the document"""
+       which = 'pidx'
+       want = 'long'
+class mode(aetools.NProperty):
+       """mode - The documentÕs open mode"""
+       which = 'Mode'
+       want = 'Mode'
+class modified(aetools.NProperty):
+       """modified - Has the document been modified since the last save?"""
+       which = 'imod'
+       want = 'bool'
+class name(aetools.NProperty):
+       """name - the title of the document"""
+       which = 'pnam'
+       want = 'itxt'
+class selection(aetools.NProperty):
+       """selection - the selection visible to the user"""
+       which = 'sele'
+       want = 'csel'
+class window(aetools.NProperty):
+       """window - The window of this document."""
+       which = 'cwin'
+       want = 'cwin'
+#        element 'cha ' as ['indx', 'rele', 'rang', 'test']
+#        element 'cins' as ['rele']
+#        element 'clin' as ['indx', 'rang', 'rele']
+#        element 'ctxt' as ['rang']
+
+documents = document
+
+class file(aetools.ComponentItem):
+       """file - A file"""
+       want = 'file'
+
+files = file
+
+class insertion_point(aetools.ComponentItem):
+       """insertion point - An insertion location between two objects"""
+       want = 'cins'
+# repeated property length length of text object (in characters)
+# repeated property offset offset of a text object from the beginning of the document (first char has offset 1)
+
+class line(aetools.ComponentItem):
+       """line - Lines of text"""
+       want = 'clin'
+# repeated property index index of a line object from the beginning of the document (first line has index 1)
+# repeated property offset offset  (in characters) of a line object from the beginning of the document
+# repeated property length length in characters of this object
+#        element 'cha ' as ['indx', 'rang', 'rele']
+
+lines = line
+
+class selection_2d_object(aetools.ComponentItem):
+       """selection-object - the selection visible to the user"""
+       want = 'csel'
+class contents(aetools.NProperty):
+       """contents - the contents of the selection"""
+       which = 'pcnt'
+       want = 'type'
+# repeated property length length of text object (in characters)
+# repeated property offset offset of a text object from the beginning of the document (first char has offset 1)
+#        element 'cha ' as ['indx', 'rele', 'rang', 'test']
+#        element 'clin' as ['indx', 'rang', 'rele']
+#        element 'ctxt' as ['rang']
+
+class text(aetools.ComponentItem):
+       """text - Text"""
+       want = 'ctxt'
+# repeated property length length of text object (in characters)
+# repeated property offset offset of a text object from the beginning of the document (first char has offset 1)
+#        element 'cha ' as ['indx', 'rele', 'rang']
+#        element 'cins' as ['rele']
+#        element 'clin' as ['indx', 'rang', 'rele']
+#        element 'ctxt' as ['rang']
+
+class window(aetools.ComponentItem):
+       """window - A window"""
+       want = 'cwin'
+# repeated property name the title of the window
+# repeated property index the number of the window
+class bounds(aetools.NProperty):
+       """bounds - the boundary rectangle for the window"""
+       which = 'pbnd'
+       want = 'qdrt'
+class document(aetools.NProperty):
+       """document - the document object that owns this window"""
+       which = 'docu'
+       want = 'docu'
+class position(aetools.NProperty):
+       """position - upper left coordinates of window"""
+       which = 'ppos'
+       want = 'QDpt'
+class visible(aetools.NProperty):
+       """visible - is the window visible?"""
+       which = 'pvis'
+       want = 'bool'
+class zoomed(aetools.NProperty):
+       """zoomed - Is the window zoomed?"""
+       which = 'pzum'
+       want = 'bool'
+
+windows = window
+# XXXX application element 'Clas' not found!!
+application._propdict = {
+       'user_interaction' : user_interaction,
+}
+application._elemdict = {
+       'document' : document,
+       'window' : window,
+}
+character._propdict = {
+       'offset' : offset,
+       'length' : length,
+}
+character._elemdict = {
+}
+document._propdict = {
+       'file' : file,
+       'index' : index,
+       'mode' : mode,
+       'modified' : modified,
+       'name' : name,
+       'selection' : selection,
+       'window' : window,
+}
+document._elemdict = {
+       'character' : character,
+       'insertion_point' : insertion_point,
+       'line' : line,
+       'text' : text,
+}
+file._propdict = {
+}
+file._elemdict = {
+}
+insertion_point._propdict = {
+       'length' : length,
+       'offset' : offset,
+}
+insertion_point._elemdict = {
+}
+line._propdict = {
+       'index' : index,
+       'offset' : offset,
+       'length' : length,
+}
+line._elemdict = {
+       'character' : character,
+}
+selection_2d_object._propdict = {
+       'contents' : contents,
+       'length' : length,
+       'offset' : offset,
+}
+selection_2d_object._elemdict = {
+       'character' : character,
+       'line' : line,
+       'text' : text,
+}
+text._propdict = {
+       'length' : length,
+       'offset' : offset,
+}
+text._elemdict = {
+       'character' : character,
+       'insertion_point' : insertion_point,
+       'line' : line,
+       'text' : text,
+}
+window._propdict = {
+       'name' : name,
+       'index' : index,
+       'bounds' : bounds,
+       'document' : document,
+       'position' : position,
+       'visible' : visible,
+       'zoomed' : zoomed,
+}
+window._elemdict = {
+}
+# XXXX enum savo not found!!
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'docu' : document,
+       'cins' : insertion_point,
+       'capp' : application,
+       'ctxt' : text,
+       'csel' : selection_2d_object,
+       'clin' : line,
+       'file' : file,
+       'cwin' : window,
+       'cha ' : character,
+}
+
+_propdeclarations = {
+       'pzum' : zoomed,
+       'pOff' : offset,
+       'pLen' : length,
+       'pnam' : name,
+       'file' : file,
+       'pcnt' : contents,
+       'cwin' : window,
+       'ppos' : position,
+       'pidx' : index,
+       'docu' : document,
+       'pvis' : visible,
+       'sele' : selection,
+       'pbnd' : bounds,
+       'imod' : modified,
+       'Mode' : mode,
+       'inte' : user_interaction,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scripting/Finder_Suite.py b/Mac/Lib/lib-scripting/Finder_Suite.py
new file mode 100644 (file)
index 0000000..0f14b6f
--- /dev/null
@@ -0,0 +1,1632 @@
+"""Suite Finder Suite: Objects and Events for the Finder
+Level 1, version 1
+
+Generated from flap:System Folder:Extensions:Finder Scripting Extension
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'fndr'
+
+class Finder_Suite:
+
+       _argmap_clean_up = {
+               'by' : 'by  ',
+       }
+
+       def clean_up(self, _object, _attributes={}, **_arguments):
+               """clean up: Arrange items in window nicely
+               Required argument: the window to clean up
+               Keyword argument by: the order in which to clean up the objects
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'fclu'
+
+               aetools.keysubst(_arguments, self._argmap_clean_up)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_computer = {
+               'has' : 'has ',
+       }
+
+       def computer(self, _object, _attributes={}, **_arguments):
+               """computer: Test attributes of this computer
+               Required argument: the attribute to test
+               Keyword argument has: test specific bits of response
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the result of the query
+               """
+               _code = 'fndr'
+               _subcode = 'gstl'
+
+               aetools.keysubst(_arguments, self._argmap_computer)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def eject(self, _object=None, _attributes={}, **_arguments):
+               """eject: Eject the specified disk(s), or every ejectable disk if no parameter is specified
+               Required argument: the items to eject
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'ejct'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def empty(self, _object=None, _attributes={}, **_arguments):
+               """empty: Empty the trash
+               Required argument: \96empty\94 and \96empty trash\94 both do the same thing
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'empt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def erase(self, _object, _attributes={}, **_arguments):
+               """erase: Erase the specified disk(s)
+               Required argument: the items to erase
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'fera'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_put_away = {
+               'items' : 'fsel',
+       }
+
+       def put_away(self, _object, _attributes={}, **_arguments):
+               """put away: Put away the specified object(s)
+               Required argument: the items to put away
+               Keyword argument items: DO NOT USE: provided for backwards compatibility with old event suite.  Will be removed in future Finders
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the object put away in its put-away location
+               """
+               _code = 'fndr'
+               _subcode = 'ptwy'
+
+               aetools.keysubst(_arguments, self._argmap_put_away)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def restart(self, _no_object=None, _attributes={}, **_arguments):
+               """restart: Restart the Macintosh
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'rest'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def reveal(self, _object, _attributes={}, **_arguments):
+               """reveal: Bring the specified object(s) into view
+               Required argument: the object to be made visible
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'mvis'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def select(self, _object, _attributes={}, **_arguments):
+               """select: Select the specified object(s)
+               Required argument: the object to select
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'slct'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def shut_down(self, _no_object=None, _attributes={}, **_arguments):
+               """shut down: Shut Down the Macintosh
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'shut'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def sleep(self, _no_object=None, _attributes={}, **_arguments):
+               """sleep: Sleep the Macintosh
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'snoz'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_sort = {
+               'by' : 'by  ',
+       }
+
+       def sort(self, _object, _attributes={}, **_arguments):
+               """sort: Return the specified object(s) in a sorted list
+               Required argument: a list of finder objects to sort
+               Keyword argument by: the property to sort the items by
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the sorted items in their new order
+               """
+               _code = 'DATA'
+               _subcode = 'SORT'
+
+               aetools.keysubst(_arguments, self._argmap_sort)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def update(self, _object, _attributes={}, **_arguments):
+               """update: Update the display of the specified object(s) to match their on-disk representation
+               Required argument: the item to update
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'fupd'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class accessory_process(aetools.ComponentItem):
+       """accessory process - A process launched from a desk accessory file"""
+       want = 'pcda'
+class desk_accessory_file(aetools.NProperty):
+       """desk accessory file - the desk accessory file from which this process was launched"""
+       which = 'dafi'
+       want = 'obj '
+
+accessory_processes = accessory_process
+
+class accessory_suitcase(aetools.ComponentItem):
+       """accessory suitcase - A desk accessory suitcase"""
+       want = 'dsut'
+#        element 'cobj' as ['indx', 'name']
+
+accessory_suitcases = accessory_suitcase
+
+class alias_file(aetools.ComponentItem):
+       """alias file - An alias file (created with \96Make Alias\94)"""
+       want = 'alia'
+class original_item(aetools.NProperty):
+       """original item - the original item pointed to by the alias"""
+       which = 'orig'
+       want = 'obj '
+
+alias_files = alias_file
+
+class application(aetools.ComponentItem):
+       """application - An application program"""
+       want = 'capp'
+class about_this_macintosh(aetools.NProperty):
+       """about this macintosh - the \96About this Macintosh\94 dialog, and the list of running processes displayed in it"""
+       which = 'abbx'
+       want = 'obj '
+class apple_menu_items_folder(aetools.NProperty):
+       """apple menu items folder - the special folder \96Apple Menu Items,\94 the contents of which appear in the Apple menu"""
+       which = 'amnu'
+       want = 'obj '
+class clipboard(aetools.NProperty):
+       """clipboard - the Finder's clipboard window"""
+       which = 'pcli'
+       want = 'obj '
+class control_panels_folder(aetools.NProperty):
+       """control panels folder - the special folder \96Control Panels\94"""
+       which = 'ctrl'
+       want = 'obj '
+class desktop(aetools.NProperty):
+       """desktop - the desktop"""
+       which = 'desk'
+       want = 'obj '
+class extensions_folder(aetools.NProperty):
+       """extensions folder - the special folder \96Extensions\94"""
+       which = 'extn'
+       want = 'obj '
+class file_sharing(aetools.NProperty):
+       """file sharing - Is file sharing on?"""
+       which = 'fshr'
+       want = 'bool'
+class fonts_folder(aetools.NProperty):
+       """fonts folder - the special folder \96Fonts\94"""
+       which = 'ffnt'
+       want = 'obj '
+class frontmost(aetools.NProperty):
+       """frontmost - Is this the frontmost application?"""
+       which = 'pisf'
+       want = 'bool'
+class insertion_location(aetools.NProperty):
+       """insertion location - the container that a new folder would appear in if \96New Folder\94 was selected"""
+       which = 'pins'
+       want = 'obj '
+class largest_free_block(aetools.NProperty):
+       """largest free block - the largest free block of process memory available to launch an application"""
+       which = 'mfre'
+       want = 'long'
+class preferences_folder(aetools.NProperty):
+       """preferences folder - the special folder \96Preferences\94"""
+       which = 'pref'
+       want = 'obj '
+class product_version(aetools.NProperty):
+       """product version - the version of the System software running on this Macintosh"""
+       which = 'ver2'
+       want = 'itxt'
+class selection(aetools.NProperty):
+       """selection - the selection visible to the user"""
+       which = 'sele'
+       want = 'obj '
+class sharing_starting_up(aetools.NProperty):
+       """sharing starting up - Is File sharing in the process of starting up (still off, but soon to be on)?"""
+       which = 'fsup'
+       want = 'bool'
+class shortcuts(aetools.NProperty):
+       """shortcuts - the \96Finder Shortcuts\94 item in the Finder's help menu"""
+       which = 'scut'
+       want = 'obj '
+class shutdown_items_folder(aetools.NProperty):
+       """shutdown items folder - the special folder \96Shutdown Items\94"""
+       which = 'shdf'
+       want = 'obj '
+class startup_items_folder(aetools.NProperty):
+       """startup items folder - the special folder \96Startup Items\94"""
+       which = 'strt'
+       want = 'obj '
+class system_folder(aetools.NProperty):
+       """system folder - the System folder"""
+       which = 'macs'
+       want = 'obj '
+class temporary_items_folder(aetools.NProperty):
+       """temporary items folder - the special folder \96Temporary Items\94 (invisible)"""
+       which = 'temp'
+       want = 'obj '
+class version(aetools.NProperty):
+       """version - the version of the Finder Scripting Extension"""
+       which = 'vers'
+       want = 'itxt'
+class view_preferences(aetools.NProperty):
+       """view preferences - the view preferences control panel"""
+       which = 'pvwp'
+       want = 'obj '
+class visible(aetools.NProperty):
+       """visible - Is the Finder's layer visible?"""
+       which = 'pvis'
+       want = 'bool'
+#        element 'dsut' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name', 'ID  ']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'cwnd' as ['indx', 'name']
+#        element 'dwnd' as ['indx', 'name']
+#        element 'ccdv' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'cdsk' as ['indx', 'name']
+#        element 'cdis' as ['indx', 'name', 'ID  ']
+#        element 'docf' as ['indx', 'name']
+#        element 'file' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name', 'ID  ']
+#        element 'fntf' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'iwnd' as ['indx', 'name']
+#        element 'cobj' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'swnd' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+#        element 'ctrs' as ['indx', 'name']
+#        element 'cwin' as ['indx', 'name']
+
+class application_file(aetools.ComponentItem):
+       """application file - An application's file on disk"""
+       want = 'appf'
+class minimum_partition_size(aetools.NProperty):
+       """minimum partition size - the smallest memory size that the application can possibly be launched with"""
+       which = 'mprt'
+       want = 'long'
+class partition_size(aetools.NProperty):
+       """partition size - the memory size that the application will be launched with"""
+       which = 'appt'
+       want = 'long'
+class scriptable(aetools.NProperty):
+       """scriptable - Is this application high-level event aware (accepts open application, open document, print document, and quit)?"""
+       which = 'isab'
+       want = 'bool'
+class suggested_partition_size(aetools.NProperty):
+       """suggested partition size - the memory size that the developer recommends that the application should be launched with"""
+       which = 'sprt'
+       want = 'long'
+
+application_files = application_file
+
+class application_process(aetools.ComponentItem):
+       """application process - A process launched from an application file"""
+       want = 'pcap'
+class application_file(aetools.NProperty):
+       """application file - the application file from which this process was launched"""
+       which = 'appf'
+       want = 'appf'
+
+application_processes = application_process
+
+class container(aetools.ComponentItem):
+       """container - An item that contains other items"""
+       want = 'ctnr'
+class completely_expanded(aetools.NProperty):
+       """completely expanded - Is the container and all of its children open in outline view?"""
+       which = 'pexc'
+       want = 'bool'
+class container_window(aetools.NProperty):
+       """container window - the main window for the container"""
+       which = 'cwnd'
+       want = 'obj '
+class entire_contents(aetools.NProperty):
+       """entire contents - the entire contents of the container, including the contents of its children"""
+       which = 'ects'
+       want = 'obj '
+class expandable(aetools.NProperty):
+       """expandable - Is the container capable of being expanded into outline view?"""
+       which = 'pexa'
+       want = 'bool'
+class expanded(aetools.NProperty):
+       """expanded - Is the container open in outline view?"""
+       which = 'pexp'
+       want = 'bool'
+class previous_list_view(aetools.NProperty):
+       """previous list view - the last non-icon view (by name, by date, etc.) selected for the container (forgotten as soon as the window is closed)"""
+       which = 'svew'
+       want = 'long'
+# repeated property selection the selection visible to the user
+class view(aetools.NProperty):
+       """view - the view selected for the container (by icon, by name, by date, etc.)"""
+       which = 'pvew'
+       want = 'long'
+#        element 'dsut' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'ccdv' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'docf' as ['indx', 'name']
+#        element 'file' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'cobj' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+
+containers = container
+
+class container_window(aetools.ComponentItem):
+       """container window - A window that contains items"""
+       want = 'cwnd'
+class container(aetools.NProperty):
+       """container - the container this window is opened from"""
+       which = 'ctnr'
+       want = 'obj '
+class disk(aetools.NProperty):
+       """disk - the disk on which the item this window was opened from is stored"""
+       which = 'cdis'
+       want = 'obj '
+class folder(aetools.NProperty):
+       """folder - the folder this window is opened from"""
+       which = 'cfol'
+       want = 'obj '
+class item(aetools.NProperty):
+       """item - the item this window is opened from"""
+       which = 'cobj'
+       want = 'obj '
+# repeated property previous_list_view the last non-icon view (by name, by date, etc.) selected for the window (forgotten as soon as the window is closed)
+# repeated property selection the selection visible to the user
+# repeated property view the view selected for the window (by icon, by name, by date, etc.)
+#        element 'dsut' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'ccdv' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'docf' as ['indx', 'name']
+#        element 'file' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'cobj' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+
+container_windows = container_window
+
+class content_space(aetools.ComponentItem):
+       """content space - All windows, including the desktop window (\96Window\94 does not include the desktop window)"""
+       want = 'dwnd'
+
+content_spaces = content_space
+
+class control_panel(aetools.ComponentItem):
+       """control panel - A control panel"""
+       want = 'ccdv'
+class calculate_folder_sizes(aetools.NProperty):
+       """calculate folder sizes - (Views) Are folder sizes calculated and displayed in Finder list windows?"""
+       which = 'sfsz'
+       want = 'bool'
+class comment_heading(aetools.NProperty):
+       """comment heading - (Views) Are comments displayed in Finder list windows?"""
+       which = 'scom'
+       want = 'bool'
+class date_heading(aetools.NProperty):
+       """date heading - (Views) Are modification dates displayed in Finder list windows?"""
+       which = 'sdat'
+       want = 'bool'
+class disk_information_heading(aetools.NProperty):
+       """disk information heading - (Views) Is information about the volume displayed in Finder list windows?"""
+       which = 'sdin'
+       want = 'bool'
+class icon_size(aetools.NProperty):
+       """icon size - (Views) the size of icons displayed in Finder list windows"""
+       which = 'lvis'
+       want = 'long'
+class kind_heading(aetools.NProperty):
+       """kind heading - (Views) Are document kinds displayed in Finder list windows?"""
+       which = 'sknd'
+       want = 'bool'
+class label_heading(aetools.NProperty):
+       """label heading - (Views) Are labels displayed in Finder list windows?"""
+       which = 'slbl'
+       want = 'bool'
+class size_heading(aetools.NProperty):
+       """size heading - (Views) Are file sizes displayed in Finder list windows"""
+       which = 'ssiz'
+       want = 'bool'
+class snap_to_grid(aetools.NProperty):
+       """snap to grid - (Views) Are items always snapped to the nearest grid point when they are moved?"""
+       which = 'fgrd'
+       want = 'bool'
+class staggered_grid(aetools.NProperty):
+       """staggered grid - (Views) Are grid lines staggered?"""
+       which = 'fstg'
+       want = 'bool'
+class version_heading(aetools.NProperty):
+       """version heading - (Views) Are file versions displayed in Finder list windows?"""
+       which = 'svrs'
+       want = 'bool'
+class view_font(aetools.NProperty):
+       """view font - (Views) the id of the font used in Finder views"""
+       which = 'vfnt'
+       want = 'long'
+class view_font_size(aetools.NProperty):
+       """view font size - (Views) the size of the font used in Finder views"""
+       which = 'vfsz'
+       want = 'long'
+
+control_panels = control_panel
+
+class desk_accessory_file(aetools.ComponentItem):
+       """desk accessory file - A desk accessory file"""
+       want = 'dafi'
+
+desk_accessory_files = desk_accessory_file
+
+class desktop_2d_object(aetools.ComponentItem):
+       """desktop-object - Desktop-object is the class of the \96desktop\94 object"""
+       want = 'cdsk'
+class startup_disk(aetools.NProperty):
+       """startup disk - the startup disk"""
+       which = 'sdsk'
+       want = 'obj '
+class trash(aetools.NProperty):
+       """trash - the trash"""
+       which = 'trsh'
+       want = 'obj '
+#        element 'dsut' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'ccdv' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'docf' as ['indx', 'name']
+#        element 'file' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'cobj' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+
+class disk(aetools.ComponentItem):
+       """disk - A disk"""
+       want = 'cdis'
+class capacity(aetools.NProperty):
+       """capacity - the total number of bytes (free or used) on the disk"""
+       which = 'capa'
+       want = 'long'
+class ejectable(aetools.NProperty):
+       """ejectable - Can the media can be ejected (floppies, CD's, syquest)?"""
+       which = 'isej'
+       want = 'bool'
+class free_space(aetools.NProperty):
+       """free space - the number of free bytes left on the disk"""
+       which = 'frsp'
+       want = 'long'
+class local_volume(aetools.NProperty):
+       """local volume - Is the media is a local volume (rather than a file server)?"""
+       which = 'isrv'
+       want = 'bool'
+class startup(aetools.NProperty):
+       """startup - Is this disk the boot disk?"""
+       which = 'istd'
+       want = 'bool'
+#        element 'dsut' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'ccdv' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'docf' as ['indx', 'name']
+#        element 'file' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'ID  ', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'cobj' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+
+disks = disk
+
+class document_file(aetools.ComponentItem):
+       """document file - A document file"""
+       want = 'docf'
+
+document_files = document_file
+
+class file(aetools.ComponentItem):
+       """file - A file"""
+       want = 'file'
+class creator_type(aetools.NProperty):
+       """creator type - the OSType identifying the application that created the item"""
+       which = 'fcrt'
+       want = 'type'
+class file_type(aetools.NProperty):
+       """file type - the OSType identifying the type of data contained in the item"""
+       which = 'fitp'
+       want = 'type'
+class locked(aetools.NProperty):
+       """locked - Is the file locked?"""
+       which = 'islk'
+       want = 'bool'
+# repeated property product_version the version of the product (visible at the top of the \96Get Info\94 dialog)
+class stationery(aetools.NProperty):
+       """stationery - Is the item a stationery pad?"""
+       which = 'pspd'
+       want = 'bool'
+# repeated property version the version of the file (visible at the bottom of the \96Get Info\94 dialog)
+
+files = file
+
+class folder(aetools.ComponentItem):
+       """folder - A folder"""
+       want = 'cfol'
+#        element 'dsut' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'ccdv' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'docf' as ['indx', 'name']
+#        element 'file' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'cobj' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+
+folders = folder
+
+class font_file(aetools.ComponentItem):
+       """font file - A font file"""
+       want = 'fntf'
+
+font_files = font_file
+
+class font_suitcase(aetools.ComponentItem):
+       """font suitcase - A font suitcase"""
+       want = 'fsut'
+#        element 'cobj' as ['indx', 'name']
+
+font_suitcases = font_suitcase
+
+class group(aetools.ComponentItem):
+       """group - A Group in the Users and Groups control panel"""
+       want = 'sgrp'
+class bounds(aetools.NProperty):
+       """bounds - the bounding rectangle of the group"""
+       which = 'pbnd'
+       want = 'qdrt'
+class icon(aetools.NProperty):
+       """icon - the icon bitmap of the group"""
+       which = 'iimg'
+       want = 'ifam'
+class label_index(aetools.NProperty):
+       """label index - the label of the group"""
+       which = 'labi'
+       want = 'long'
+class name(aetools.NProperty):
+       """name - the name of the group"""
+       which = 'pnam'
+       want = 'itxt'
+class position(aetools.NProperty):
+       """position - the position of the group within its parent window"""
+       which = 'posn'
+       want = 'QDpt'
+
+groups = group
+
+class information_window(aetools.ComponentItem):
+       """information window - An information window (opened by \96Get Info\83\94)"""
+       want = 'iwnd'
+class comment(aetools.NProperty):
+       """comment - the comment"""
+       which = 'comt'
+       want = 'itxt'
+class creation_date(aetools.NProperty):
+       """creation date - the date on which the item was created"""
+       which = 'crtd'
+       want = 'ldt '
+# repeated property icon the icon bitmap of the item
+# repeated property item the item this window was opened from
+# repeated property locked Is the item locked?
+# repeated property minimum_partition_size the smallest memory size that the application can possibly be launched with
+class modification_date(aetools.NProperty):
+       """modification date - the date on which the item was last modified"""
+       which = 'modd'
+       want = 'ldt '
+# repeated property partition_size the memory size that the application will be launched with
+class physical_size(aetools.NProperty):
+       """physical size - the actual space used by the item on disk"""
+       which = 'phys'
+       want = 'long'
+# repeated property product_version the version of the product (visible at the top of the \96Get Info\94 dialog)
+class size(aetools.NProperty):
+       """size - the logical size of the item"""
+       which = 'ptsz'
+       want = 'long'
+# repeated property stationery Is the item a stationery pad?
+# repeated property suggested_partition_size the memory size that the developer recommends that the application should be launched with
+# repeated property version the version of the file (visible at the bottom of the \96Get Info\94 dialog)
+class warn_before_emptying(aetools.NProperty):
+       """warn before emptying - Is a dialog displayed when \96Empty trash\83\94 is selected?"""
+       which = 'warn'
+       want = 'bool'
+
+information_windows = information_window
+
+class item(aetools.ComponentItem):
+       """item - An item"""
+       want = 'cobj'
+# repeated property bounds the bounding rectangle of the item
+# repeated property comment the comment displayed in the \96Get Info\94 window of the item
+# repeated property container the container of this item
+class content_space(aetools.NProperty):
+       """content space - the window that would open if the item was opened"""
+       which = 'dwnd'
+       want = 'dwnd'
+# repeated property creation_date the date on which the item was created
+# repeated property disk the disk on which the item is stored
+# repeated property folder the folder in which the item is stored
+# repeated property icon the icon bitmap of the item
+class id(aetools.NProperty):
+       """id - an id that identifies the item"""
+       which = 'ID  '
+       want = 'long'
+class information_window(aetools.NProperty):
+       """information window - the information window for the item"""
+       which = 'iwnd'
+       want = 'obj '
+class kind(aetools.NProperty):
+       """kind - the kind of the item"""
+       which = 'kind'
+       want = 'itxt'
+# repeated property label_index the label of the item
+# repeated property modification_date the date on which the item was last modified
+# repeated property name the name of the item
+# repeated property physical_size the actual space used by the item on disk
+# repeated property position the position of the item within its parent window
+class selected(aetools.NProperty):
+       """selected - Is the item selected?"""
+       which = 'issl'
+       want = 'bool'
+# repeated property size the logical size of the item
+class window(aetools.NProperty):
+       """window - the window that would open if the item was opened"""
+       which = 'cwin'
+       want = 'cwin'
+
+items = item
+
+class process(aetools.ComponentItem):
+       """process - A process running on this Macintosh"""
+       want = 'prcs'
+# repeated property creator_type the creator type of this process
+class file(aetools.NProperty):
+       """file - the file that launched this process"""
+       which = 'file'
+       want = 'obj '
+# repeated property file_type the file type of the file that launched this process
+# repeated property frontmost Is this the frontmost application?
+# repeated property name the name of the process
+# repeated property partition_size the size of the partition that this application was launched with
+class partition_space_used(aetools.NProperty):
+       """partition space used - the number of bytes currently used in this partition"""
+       which = 'pusd'
+       want = 'long'
+class remote_events(aetools.NProperty):
+       """remote events - Will this process accepts remote events?"""
+       which = 'revt'
+       want = 'bool'
+# repeated property scriptable Is this process high-level event aware (accepts open application, open document, print document, and quit)?
+# repeated property visible Is this process' layer visible?
+
+processes = process
+
+class sharable_container(aetools.ComponentItem):
+       """sharable container - A container that may be shared (disks and folders)"""
+       want = 'sctr'
+class exported(aetools.NProperty):
+       """exported - Is this folder a share point or inside a share point?"""
+       which = 'sexp'
+       want = 'bool'
+class group(aetools.NProperty):
+       """group - the user or group that has special access to the folder"""
+       which = 'sgrp'
+       want = 'itxt'
+class group_privileges(aetools.NProperty):
+       """group privileges - the see folders/see files/make changes privileges for the group"""
+       which = 'gppr'
+       want = 'priv'
+class guest_privileges(aetools.NProperty):
+       """guest privileges - the see folders/see files/make changes privileges for everyone"""
+       which = 'gstp'
+       want = 'priv'
+class inherited_privileges(aetools.NProperty):
+       """inherited privileges - Are the privileges of this item always the same as the container it is stored in?"""
+       which = 'iprv'
+       want = 'bool'
+class mounted(aetools.NProperty):
+       """mounted - Is this folder mounted on another machine's desktop?"""
+       which = 'smou'
+       want = 'bool'
+class owner(aetools.NProperty):
+       """owner - the user that owns this folder"""
+       which = 'sown'
+       want = 'itxt'
+class owner_privileges(aetools.NProperty):
+       """owner privileges - the see folders/see files/make changes privileges for the owner"""
+       which = 'ownr'
+       want = 'priv'
+class protected(aetools.NProperty):
+       """protected - Is container protected from being moved, renamed or deleted?"""
+       which = 'spro'
+       want = 'bool'
+class shared(aetools.NProperty):
+       """shared - Is container a share point?"""
+       which = 'shar'
+       want = 'bool'
+class sharing_window(aetools.NProperty):
+       """sharing window - the sharing window for the container"""
+       which = 'swnd'
+       want = 'obj '
+#        element 'dsut' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'ccdv' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'docf' as ['indx', 'name']
+#        element 'file' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'cobj' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+
+sharable_containers = sharable_container
+
+class sharing_privileges(aetools.ComponentItem):
+       """sharing privileges - A set of sharing properties"""
+       want = 'priv'
+class make_changes(aetools.NProperty):
+       """make changes - privileges to make changes"""
+       which = 'prvw'
+       want = 'bool'
+class see_files(aetools.NProperty):
+       """see files - privileges to see files"""
+       which = 'prvr'
+       want = 'bool'
+class see_folders(aetools.NProperty):
+       """see folders - privileges to see folders"""
+       which = 'prvs'
+       want = 'bool'
+
+class sharing_window(aetools.ComponentItem):
+       """sharing window - A sharing window (opened by \96Sharing\83\94)"""
+       want = 'swnd'
+# repeated property container the container that this window was opened from
+# repeated property exported Is this container a share point or inside a share point?
+# repeated property folder the folder that this window was opened from
+# repeated property group the user or group that has special access to the container
+# repeated property group_privileges the see folders/see files/make changes privileges for the group
+# repeated property guest_privileges the see folders/see files/make changes privileges for everyone
+# repeated property inherited_privileges Are the privileges of this item always the same as the container it is stored in?
+# repeated property item the item that this window was opened from
+# repeated property mounted Is this container mounted on another machine's desktop?
+# repeated property owner the user that owns the container
+# repeated property owner_privileges the see folders/see files/make changes privileges for the owner
+# repeated property protected Is container protected from being moved, renamed or deleted?
+class sharable_container(aetools.NProperty):
+       """sharable container - the sharable container that this window was opened from"""
+       which = 'sctr'
+       want = 'obj '
+# repeated property shared Is container a share point?
+
+sharing_windows = sharing_window
+
+class sound_file(aetools.ComponentItem):
+       """sound file - This class represents sound files"""
+       want = 'sndf'
+
+sound_files = sound_file
+
+class status_window(aetools.ComponentItem):
+       """status window - These windows are progress dialogs (copy window, rebuild desktop database, empty trash)"""
+       want = 'qwnd'
+
+status_windows = status_window
+
+class suitcase(aetools.ComponentItem):
+       """suitcase - A font or desk accessory suitcase"""
+       want = 'stcs'
+#        element 'cobj' as ['indx', 'name']
+
+suitcases = suitcase
+
+class trash_2d_object(aetools.ComponentItem):
+       """trash-object - Trash-object is the class of the \96trash\94 object"""
+       want = 'ctrs'
+# repeated property warn_before_emptying Is a dialog displayed when \96Empty trash\83\94 is selected?
+#        element 'dsut' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'ccdv' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'docf' as ['indx', 'name']
+#        element 'file' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'cobj' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+
+class user(aetools.ComponentItem):
+       """user - A User in the Users and Groups control panel"""
+       want = 'cuse'
+# repeated property bounds the bounding rectangle of the user
+# repeated property icon the icon bitmap of the user
+# repeated property label_index the label of the user
+# repeated property name the name of the user
+# repeated property position the position of the user within its parent window
+
+users = user
+
+class window(aetools.ComponentItem):
+       """window - A window"""
+       want = 'cwin'
+
+windows = window
+accessory_process._propdict = {
+       'desk_accessory_file' : desk_accessory_file,
+}
+accessory_process._elemdict = {
+}
+accessory_suitcase._propdict = {
+}
+accessory_suitcase._elemdict = {
+       'item' : item,
+}
+alias_file._propdict = {
+       'original_item' : original_item,
+}
+alias_file._elemdict = {
+}
+application._propdict = {
+       'about_this_macintosh' : about_this_macintosh,
+       'apple_menu_items_folder' : apple_menu_items_folder,
+       'clipboard' : clipboard,
+       'control_panels_folder' : control_panels_folder,
+       'desktop' : desktop,
+       'extensions_folder' : extensions_folder,
+       'file_sharing' : file_sharing,
+       'fonts_folder' : fonts_folder,
+       'frontmost' : frontmost,
+       'insertion_location' : insertion_location,
+       'largest_free_block' : largest_free_block,
+       'preferences_folder' : preferences_folder,
+       'product_version' : product_version,
+       'selection' : selection,
+       'sharing_starting_up' : sharing_starting_up,
+       'shortcuts' : shortcuts,
+       'shutdown_items_folder' : shutdown_items_folder,
+       'startup_items_folder' : startup_items_folder,
+       'system_folder' : system_folder,
+       'temporary_items_folder' : temporary_items_folder,
+       'version' : version,
+       'view_preferences' : view_preferences,
+       'visible' : visible,
+}
+application._elemdict = {
+       'accessory_suitcase' : accessory_suitcase,
+       'alias_file' : alias_file,
+       'application_file' : application_file,
+       'container' : container,
+       'container_window' : container_window,
+       'content_space' : content_space,
+       'control_panel' : control_panel,
+       'desk_accessory_file' : desk_accessory_file,
+       'desktop_2d_object' : desktop_2d_object,
+       'disk' : disk,
+       'document_file' : document_file,
+       'file' : file,
+       'folder' : folder,
+       'font_file' : font_file,
+       'font_suitcase' : font_suitcase,
+       'information_window' : information_window,
+       'item' : item,
+       'sharable_container' : sharable_container,
+       'sharing_window' : sharing_window,
+       'sound_file' : sound_file,
+       'suitcase' : suitcase,
+       'trash_2d_object' : trash_2d_object,
+       'window' : window,
+}
+application_file._propdict = {
+       'minimum_partition_size' : minimum_partition_size,
+       'partition_size' : partition_size,
+       'scriptable' : scriptable,
+       'suggested_partition_size' : suggested_partition_size,
+}
+application_file._elemdict = {
+}
+application_process._propdict = {
+       'application_file' : application_file,
+}
+application_process._elemdict = {
+}
+container._propdict = {
+       'completely_expanded' : completely_expanded,
+       'container_window' : container_window,
+       'entire_contents' : entire_contents,
+       'expandable' : expandable,
+       'expanded' : expanded,
+       'previous_list_view' : previous_list_view,
+       'selection' : selection,
+       'view' : view,
+}
+container._elemdict = {
+       'accessory_suitcase' : accessory_suitcase,
+       'alias_file' : alias_file,
+       'application_file' : application_file,
+       'container' : container,
+       'control_panel' : control_panel,
+       'desk_accessory_file' : desk_accessory_file,
+       'document_file' : document_file,
+       'file' : file,
+       'folder' : folder,
+       'font_file' : font_file,
+       'font_suitcase' : font_suitcase,
+       'item' : item,
+       'sharable_container' : sharable_container,
+       'sound_file' : sound_file,
+       'suitcase' : suitcase,
+}
+container_window._propdict = {
+       'container' : container,
+       'disk' : disk,
+       'folder' : folder,
+       'item' : item,
+       'previous_list_view' : previous_list_view,
+       'selection' : selection,
+       'view' : view,
+}
+container_window._elemdict = {
+       'accessory_suitcase' : accessory_suitcase,
+       'alias_file' : alias_file,
+       'application_file' : application_file,
+       'container' : container,
+       'control_panel' : control_panel,
+       'desk_accessory_file' : desk_accessory_file,
+       'document_file' : document_file,
+       'file' : file,
+       'folder' : folder,
+       'font_file' : font_file,
+       'font_suitcase' : font_suitcase,
+       'item' : item,
+       'sharable_container' : sharable_container,
+       'sound_file' : sound_file,
+       'suitcase' : suitcase,
+}
+content_space._propdict = {
+}
+content_space._elemdict = {
+}
+control_panel._propdict = {
+       'calculate_folder_sizes' : calculate_folder_sizes,
+       'comment_heading' : comment_heading,
+       'date_heading' : date_heading,
+       'disk_information_heading' : disk_information_heading,
+       'icon_size' : icon_size,
+       'kind_heading' : kind_heading,
+       'label_heading' : label_heading,
+       'size_heading' : size_heading,
+       'snap_to_grid' : snap_to_grid,
+       'staggered_grid' : staggered_grid,
+       'version_heading' : version_heading,
+       'view_font' : view_font,
+       'view_font_size' : view_font_size,
+}
+control_panel._elemdict = {
+}
+desk_accessory_file._propdict = {
+}
+desk_accessory_file._elemdict = {
+}
+desktop_2d_object._propdict = {
+       'startup_disk' : startup_disk,
+       'trash' : trash,
+}
+desktop_2d_object._elemdict = {
+       'accessory_suitcase' : accessory_suitcase,
+       'alias_file' : alias_file,
+       'application_file' : application_file,
+       'container' : container,
+       'control_panel' : control_panel,
+       'desk_accessory_file' : desk_accessory_file,
+       'document_file' : document_file,
+       'file' : file,
+       'folder' : folder,
+       'font_file' : font_file,
+       'font_suitcase' : font_suitcase,
+       'item' : item,
+       'sharable_container' : sharable_container,
+       'sound_file' : sound_file,
+       'suitcase' : suitcase,
+}
+disk._propdict = {
+       'capacity' : capacity,
+       'ejectable' : ejectable,
+       'free_space' : free_space,
+       'local_volume' : local_volume,
+       'startup' : startup,
+}
+disk._elemdict = {
+       'accessory_suitcase' : accessory_suitcase,
+       'alias_file' : alias_file,
+       'application_file' : application_file,
+       'container' : container,
+       'control_panel' : control_panel,
+       'desk_accessory_file' : desk_accessory_file,
+       'document_file' : document_file,
+       'file' : file,
+       'folder' : folder,
+       'font_file' : font_file,
+       'font_suitcase' : font_suitcase,
+       'item' : item,
+       'sharable_container' : sharable_container,
+       'sound_file' : sound_file,
+       'suitcase' : suitcase,
+}
+document_file._propdict = {
+}
+document_file._elemdict = {
+}
+file._propdict = {
+       'creator_type' : creator_type,
+       'file_type' : file_type,
+       'locked' : locked,
+       'product_version' : product_version,
+       'stationery' : stationery,
+       'version' : version,
+}
+file._elemdict = {
+}
+folder._propdict = {
+}
+folder._elemdict = {
+       'accessory_suitcase' : accessory_suitcase,
+       'alias_file' : alias_file,
+       'application_file' : application_file,
+       'container' : container,
+       'control_panel' : control_panel,
+       'desk_accessory_file' : desk_accessory_file,
+       'document_file' : document_file,
+       'file' : file,
+       'folder' : folder,
+       'font_file' : font_file,
+       'font_suitcase' : font_suitcase,
+       'item' : item,
+       'sharable_container' : sharable_container,
+       'sound_file' : sound_file,
+       'suitcase' : suitcase,
+}
+font_file._propdict = {
+}
+font_file._elemdict = {
+}
+font_suitcase._propdict = {
+}
+font_suitcase._elemdict = {
+       'item' : item,
+}
+group._propdict = {
+       'bounds' : bounds,
+       'icon' : icon,
+       'label_index' : label_index,
+       'name' : name,
+       'position' : position,
+}
+group._elemdict = {
+}
+information_window._propdict = {
+       'comment' : comment,
+       'creation_date' : creation_date,
+       'icon' : icon,
+       'item' : item,
+       'locked' : locked,
+       'minimum_partition_size' : minimum_partition_size,
+       'modification_date' : modification_date,
+       'partition_size' : partition_size,
+       'physical_size' : physical_size,
+       'product_version' : product_version,
+       'size' : size,
+       'stationery' : stationery,
+       'suggested_partition_size' : suggested_partition_size,
+       'version' : version,
+       'warn_before_emptying' : warn_before_emptying,
+}
+information_window._elemdict = {
+}
+item._propdict = {
+       'bounds' : bounds,
+       'comment' : comment,
+       'container' : container,
+       'content_space' : content_space,
+       'creation_date' : creation_date,
+       'disk' : disk,
+       'folder' : folder,
+       'icon' : icon,
+       'id' : id,
+       'information_window' : information_window,
+       'kind' : kind,
+       'label_index' : label_index,
+       'modification_date' : modification_date,
+       'name' : name,
+       'physical_size' : physical_size,
+       'position' : position,
+       'selected' : selected,
+       'size' : size,
+       'window' : window,
+}
+item._elemdict = {
+}
+process._propdict = {
+       'creator_type' : creator_type,
+       'file' : file,
+       'file_type' : file_type,
+       'frontmost' : frontmost,
+       'name' : name,
+       'partition_size' : partition_size,
+       'partition_space_used' : partition_space_used,
+       'remote_events' : remote_events,
+       'scriptable' : scriptable,
+       'visible' : visible,
+}
+process._elemdict = {
+}
+sharable_container._propdict = {
+       'exported' : exported,
+       'group' : group,
+       'group_privileges' : group_privileges,
+       'guest_privileges' : guest_privileges,
+       'inherited_privileges' : inherited_privileges,
+       'mounted' : mounted,
+       'owner' : owner,
+       'owner_privileges' : owner_privileges,
+       'protected' : protected,
+       'shared' : shared,
+       'sharing_window' : sharing_window,
+}
+sharable_container._elemdict = {
+       'accessory_suitcase' : accessory_suitcase,
+       'alias_file' : alias_file,
+       'application_file' : application_file,
+       'container' : container,
+       'control_panel' : control_panel,
+       'desk_accessory_file' : desk_accessory_file,
+       'document_file' : document_file,
+       'file' : file,
+       'folder' : folder,
+       'font_file' : font_file,
+       'font_suitcase' : font_suitcase,
+       'item' : item,
+       'sharable_container' : sharable_container,
+       'sound_file' : sound_file,
+       'suitcase' : suitcase,
+}
+sharing_privileges._propdict = {
+       'make_changes' : make_changes,
+       'see_files' : see_files,
+       'see_folders' : see_folders,
+}
+sharing_privileges._elemdict = {
+}
+sharing_window._propdict = {
+       'container' : container,
+       'exported' : exported,
+       'folder' : folder,
+       'group' : group,
+       'group_privileges' : group_privileges,
+       'guest_privileges' : guest_privileges,
+       'inherited_privileges' : inherited_privileges,
+       'item' : item,
+       'mounted' : mounted,
+       'owner' : owner,
+       'owner_privileges' : owner_privileges,
+       'protected' : protected,
+       'sharable_container' : sharable_container,
+       'shared' : shared,
+}
+sharing_window._elemdict = {
+}
+sound_file._propdict = {
+}
+sound_file._elemdict = {
+}
+status_window._propdict = {
+}
+status_window._elemdict = {
+}
+suitcase._propdict = {
+}
+suitcase._elemdict = {
+       'item' : item,
+}
+trash_2d_object._propdict = {
+       'warn_before_emptying' : warn_before_emptying,
+}
+trash_2d_object._elemdict = {
+       'accessory_suitcase' : accessory_suitcase,
+       'alias_file' : alias_file,
+       'application_file' : application_file,
+       'container' : container,
+       'control_panel' : control_panel,
+       'desk_accessory_file' : desk_accessory_file,
+       'document_file' : document_file,
+       'file' : file,
+       'folder' : folder,
+       'font_file' : font_file,
+       'font_suitcase' : font_suitcase,
+       'item' : item,
+       'sharable_container' : sharable_container,
+       'sound_file' : sound_file,
+       'suitcase' : suitcase,
+}
+user._propdict = {
+       'bounds' : bounds,
+       'icon' : icon,
+       'label_index' : label_index,
+       'name' : name,
+       'position' : position,
+}
+user._elemdict = {
+}
+window._propdict = {
+}
+window._elemdict = {
+}
+_Enum_vwby = {
+       'conflicts' : 'cflc',   # 
+       'existing_items' : 'exsi',      # 
+       'small_icon' : 'smic',  # 
+       'all' : 'kyal', # 
+}
+
+_Enum_gsen = {
+       'CPU' : 'proc', # 
+       'FPU' : 'fpu ', # 
+       'MMU' : 'mmu ', # 
+       'hardware' : 'hdwr',    # 
+       'operating_system' : 'os  ',    # 
+       'sound_system' : 'snd ',        # 
+       'memory_available' : 'lram',    # 
+       'memory_installed' : 'ram ',    # 
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'swnd' : sharing_window,
+       'iwnd' : information_window,
+       'ccdv' : control_panel,
+       'cwnd' : container_window,
+       'appf' : application_file,
+       'prcs' : process,
+       'cdis' : disk,
+       'cwin' : window,
+       'dafi' : desk_accessory_file,
+       'sgrp' : group,
+       'alia' : alias_file,
+       'ctnr' : container,
+       'qwnd' : status_window,
+       'fsut' : font_suitcase,
+       'sndf' : sound_file,
+       'priv' : sharing_privileges,
+       'dwnd' : content_space,
+       'pcap' : application_process,
+       'stcs' : suitcase,
+       'ctrs' : trash_2d_object,
+       'file' : file,
+       'cobj' : item,
+       'cuse' : user,
+       'cdsk' : desktop_2d_object,
+       'pcda' : accessory_process,
+       'capp' : application,
+       'cfol' : folder,
+       'sctr' : sharable_container,
+       'dsut' : accessory_suitcase,
+       'docf' : document_file,
+       'fntf' : font_file,
+}
+
+_propdeclarations = {
+       'swnd' : sharing_window,
+       'fshr' : file_sharing,
+       'pvew' : view,
+       'pusd' : partition_space_used,
+       'fcrt' : creator_type,
+       'sdat' : date_heading,
+       'sdin' : disk_information_heading,
+       'strt' : startup_items_folder,
+       'issl' : selected,
+       'pvis' : visible,
+       'slbl' : label_heading,
+       'cdis' : disk,
+       'fitp' : file_type,
+       'smou' : mounted,
+       'pexc' : completely_expanded,
+       'pexa' : expandable,
+       'comt' : comment,
+       'svew' : previous_list_view,
+       'labi' : label_index,
+       'sctr' : sharable_container,
+       'sknd' : kind_heading,
+       'trsh' : trash,
+       'fstg' : staggered_grid,
+       'macs' : system_folder,
+       'vfsz' : view_font_size,
+       'pexp' : expanded,
+       'posn' : position,
+       'cobj' : item,
+       'amnu' : apple_menu_items_folder,
+       'pvwp' : view_preferences,
+       'desk' : desktop,
+       'pnam' : name,
+       'mprt' : minimum_partition_size,
+       'cwin' : window,
+       'pcli' : clipboard,
+       'spro' : protected,
+       'islk' : locked,
+       'sprt' : suggested_partition_size,
+       'pisf' : frontmost,
+       'sele' : selection,
+       'ffnt' : fonts_folder,
+       'istd' : startup,
+       'sdsk' : startup_disk,
+       'shar' : shared,
+       'dwnd' : content_space,
+       'file' : file,
+       'sfsz' : calculate_folder_sizes,
+       'ID  ' : id,
+       'prvw' : make_changes,
+       'iprv' : inherited_privileges,
+       'prvr' : see_files,
+       'prvs' : see_folders,
+       'phys' : physical_size,
+       'ctrl' : control_panels_folder,
+       'cwnd' : container_window,
+       'extn' : extensions_folder,
+       'ownr' : owner_privileges,
+       'modd' : modification_date,
+       'dafi' : desk_accessory_file,
+       'sgrp' : group,
+       'temp' : temporary_items_folder,
+       'fgrd' : snap_to_grid,
+       'ptsz' : size,
+       'kind' : kind,
+       'scut' : shortcuts,
+       'abbx' : about_this_macintosh,
+       'ctnr' : container,
+       'isej' : ejectable,
+       'svrs' : version_heading,
+       'vfnt' : view_font,
+       'warn' : warn_before_emptying,
+       'isab' : scriptable,
+       'isrv' : local_volume,
+       'lvis' : icon_size,
+       'shdf' : shutdown_items_folder,
+       'gstp' : guest_privileges,
+       'vers' : version,
+       'appf' : application_file,
+       'iwnd' : information_window,
+       'revt' : remote_events,
+       'frsp' : free_space,
+       'capa' : capacity,
+       'pspd' : stationery,
+       'scom' : comment_heading,
+       'pins' : insertion_location,
+       'orig' : original_item,
+       'pref' : preferences_folder,
+       'fsup' : sharing_starting_up,
+       'sown' : owner,
+       'cfol' : folder,
+       'mfre' : largest_free_block,
+       'ssiz' : size_heading,
+       'iimg' : icon,
+       'appt' : partition_size,
+       'gppr' : group_privileges,
+       'pbnd' : bounds,
+       'ects' : entire_contents,
+       'sexp' : exported,
+       'ver2' : product_version,
+       'crtd' : creation_date,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'gsen' : _Enum_gsen,
+       'vwby' : _Enum_vwby,
+}
diff --git a/Mac/Lib/lib-scripting/Metrowerks_Shell_Suite.py b/Mac/Lib/lib-scripting/Metrowerks_Shell_Suite.py
new file mode 100644 (file)
index 0000000..7012f99
--- /dev/null
@@ -0,0 +1,1820 @@
+"""Suite Metrowerks Shell Suite: Events supported by the Metrowerks Project Shell
+Level 1, version 1
+
+Generated from flap:Metrowerks:Metrowerks CodeWarrior:CodeWarrior IDE 2.0.1
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'MMPR'
+
+class Metrowerks_Shell_Suite:
+
+       _argmap_Add_Files = {
+               'To_Segment' : 'Segm',
+       }
+
+       def Add_Files(self, _object, _attributes={}, **_arguments):
+               """Add Files: Add the specified file(s) to the current project
+               Required argument: List of files to add
+               Keyword argument To_Segment: Segment number into which to add the file(s)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Error code for each file added
+               """
+               _code = 'MMPR'
+               _subcode = 'AddF'
+
+               aetools.keysubst(_arguments, self._argmap_Add_Files)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Check_Syntax = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Check_Syntax(self, _object, _attributes={}, **_arguments):
+               """Check Syntax: Check the syntax of the specified file(s)
+               Required argument: List of files to check the syntax of
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors for each file whose syntax was checked
+               """
+               _code = 'MMPR'
+               _subcode = 'Chek'
+
+               aetools.keysubst(_arguments, self._argmap_Check_Syntax)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Close_Project(self, _no_object=None, _attributes={}, **_arguments):
+               """Close Project: Close the current project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'ClsP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Close_Window = {
+               'Saving' : 'savo',
+       }
+
+       def Close_Window(self, _object, _attributes={}, **_arguments):
+               """Close Window: Close the windows showing the specified files
+               Required argument: The files to close
+               Keyword argument Saving: Whether to save changes to each file before closing its window
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'ClsW'
+
+               aetools.keysubst(_arguments, self._argmap_Close_Window)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'savo', _Enum_savo)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Compile = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Compile(self, _object, _attributes={}, **_arguments):
+               """Compile: Compile the specified file(s)
+               Required argument: List of files to compile
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors for each file compiled
+               """
+               _code = 'MMPR'
+               _subcode = 'Comp'
+
+               aetools.keysubst(_arguments, self._argmap_Compile)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Create_Project = {
+               'from_stationery' : 'Tmpl',
+       }
+
+       def Create_Project(self, _object, _attributes={}, **_arguments):
+               """Create Project: Create a new project file
+               Required argument: New project file specifier
+               Keyword argument from_stationery: undocumented, typecode 'alis'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'NewP'
+
+               aetools.keysubst(_arguments, self._argmap_Create_Project)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Definition(self, _object, _attributes={}, **_arguments):
+               """Get Definition: Returns the location(s) of a globally scoped function or data object.
+               Required argument: undocumented, typecode 'TEXT'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'FDef'
+               """
+               _code = 'MMPR'
+               _subcode = 'GDef'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Open_Documents(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Open Documents: Returns the list of open documents
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The list of documents
+               """
+               _code = 'MMPR'
+               _subcode = 'GDoc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Get_Preferences = {
+               'of' : 'PRec',
+               'from_panel' : 'PNam',
+       }
+
+       def Get_Preferences(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Preferences: Get the preferences for the current project
+               Keyword argument of: Names of requested preferences
+               Keyword argument from_panel: Name of the preference panel
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The requested preferences
+               """
+               _code = 'MMPR'
+               _subcode = 'Gref'
+
+               aetools.keysubst(_arguments, self._argmap_Get_Preferences)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Get_Project_File = {
+               'Segment' : 'Segm',
+       }
+
+       def Get_Project_File(self, _object, _attributes={}, **_arguments):
+               """Get Project File: Returns a description of a file in the project window.
+               Required argument: The index of the file within its segment.
+               Keyword argument Segment: The segment containing the file.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'SrcF'
+               """
+               _code = 'MMPR'
+               _subcode = 'GFil'
+
+               aetools.keysubst(_arguments, self._argmap_Get_Project_File)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Project_Specifier(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Project Specifier: Return the File Specifier for the current project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: File Specifier for the current project
+               """
+               _code = 'MMPR'
+               _subcode = 'GetP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Segments(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Segments: Returns a description of each segment in the project.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'Seg '
+               """
+               _code = 'MMPR'
+               _subcode = 'GSeg'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Goto_Function(self, _object, _attributes={}, **_arguments):
+               """Goto Function: Goto Specified Function Name
+               Required argument: undocumented, typecode 'TEXT'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'GoFn'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Goto_Line(self, _object, _attributes={}, **_arguments):
+               """Goto Line: Goto Specified Line Number
+               Required argument: The requested source file line number
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'GoLn'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Is_In_Project(self, _object, _attributes={}, **_arguments):
+               """Is In Project: Whether or not the specified file(s) is in the current project
+               Required argument: List of files to check for project membership
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Result code for each file
+               """
+               _code = 'MMPR'
+               _subcode = 'FInP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Make_Project = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Make_Project(self, _no_object=None, _attributes={}, **_arguments):
+               """Make Project: Make the current project
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors that occurred while making the project
+               """
+               _code = 'MMPR'
+               _subcode = 'Make'
+
+               aetools.keysubst(_arguments, self._argmap_Make_Project)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Precompile = {
+               'Saving_As' : 'Targ',
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Precompile(self, _object, _attributes={}, **_arguments):
+               """Precompile: Precompile the specified file to the specified destination file
+               Required argument: File to precompile
+               Keyword argument Saving_As: Destination file for precompiled header
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors for the precompiled file
+               """
+               _code = 'MMPR'
+               _subcode = 'PreC'
+
+               aetools.keysubst(_arguments, self._argmap_Precompile)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Preprocess = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Preprocess(self, _object, _attributes={}, **_arguments):
+               """Preprocess: Preprocesses the specified file(s)
+               Required argument: undocumented, typecode 'alis'
+               Keyword argument ExternalEditor: undocumented, typecode 'bool'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors for each preprocessed file
+               """
+               _code = 'MMPR'
+               _subcode = 'PreP'
+
+               aetools.keysubst(_arguments, self._argmap_Preprocess)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Remove_Binaries(self, _no_object=None, _attributes={}, **_arguments):
+               """Remove Binaries: Remove the binary object code from the current project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'RemB'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Remove_Files(self, _object, _attributes={}, **_arguments):
+               """Remove Files: Remove the specified file(s) from the current project
+               Required argument: List of files to remove
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Error code for each file removed
+               """
+               _code = 'MMPR'
+               _subcode = 'RemF'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Reset_File_Paths(self, _no_object=None, _attributes={}, **_arguments):
+               """Reset File Paths: Resets access paths for all files belonging to open project.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'ReFP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Run_Project = {
+               'ExternalEditor' : 'Errs',
+               'SourceDebugger' : 'DeBg',
+       }
+
+       def Run_Project(self, _no_object=None, _attributes={}, **_arguments):
+               """Run Project: Run the current project
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument SourceDebugger: Run the application under the control of the source-level debugger
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors that occurred when running the project
+               """
+               _code = 'MMPR'
+               _subcode = 'RunP'
+
+               aetools.keysubst(_arguments, self._argmap_Run_Project)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Save_Error_Window_As(self, _object, _attributes={}, **_arguments):
+               """Save Error Window As: Saves the Errors & Warnings window as a text file
+               Required argument: Destination file for Save Message Window As
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'SvMs'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Set_Current_Target(self, _object=None, _attributes={}, **_arguments):
+               """Set Current Target: Set the current target of a project
+               Required argument: Name of target
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'STrg'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Set_Default_Project(self, _object, _attributes={}, **_arguments):
+               """Set Default Project: Set the default project
+               Required argument: Name of project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'SDfP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Set_Modification_Date = {
+               'to' : 'MDat',
+       }
+
+       def Set_Modification_Date(self, _object, _attributes={}, **_arguments):
+               """Set Modification Date: Changes the internal modification date of the specified file(s)
+               Required argument: List of files
+               Keyword argument to: undocumented, typecode 'ldt '
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Error code for each modified file
+               """
+               _code = 'MMPR'
+               _subcode = 'SMod'
+
+               aetools.keysubst(_arguments, self._argmap_Set_Modification_Date)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Set_Preferences = {
+               'of_panel' : 'PNam',
+               'to' : 'PRec',
+       }
+
+       def Set_Preferences(self, _no_object=None, _attributes={}, **_arguments):
+               """Set Preferences: Set the preferences for the current project
+               Keyword argument of_panel: Name of the preference panel
+               Keyword argument to: Preferences settings
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'Pref'
+
+               aetools.keysubst(_arguments, self._argmap_Set_Preferences)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Set_Project_File = {
+               'to' : 'SrcS',
+       }
+
+       def Set_Project_File(self, _object, _attributes={}, **_arguments):
+               """Set Project File: Changes the settings for a given file in the project.
+               Required argument: The name of the file
+               Keyword argument to: The new settings for the file
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'SFil'
+
+               aetools.keysubst(_arguments, self._argmap_Set_Project_File)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Set_Segment = {
+               'to' : 'Segm',
+       }
+
+       def Set_Segment(self, _object, _attributes={}, **_arguments):
+               """Set Segment: Changes the name and attributes of a segment.
+               Required argument: The segment to change
+               Keyword argument to: The new name and attributes for the segment.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'SSeg'
+
+               aetools.keysubst(_arguments, self._argmap_Set_Segment)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Touch(self, _object, _attributes={}, **_arguments):
+               """Touch: Force recompilation of the specified file(s)
+               Required argument: List of files to compile
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Error code for each file touched
+               """
+               _code = 'MMPR'
+               _subcode = 'Toch'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Update_Project = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Update_Project(self, _no_object=None, _attributes={}, **_arguments):
+               """Update Project: Update the current project
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors that occurred while updating the project
+               """
+               _code = 'MMPR'
+               _subcode = 'UpdP'
+
+               aetools.keysubst(_arguments, self._argmap_Update_Project)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Open_browser(self, _object, _attributes={}, **_arguments):
+               """Open browser: Display a class, member function, or data member object in a single class browser window
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'Brow'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_nonsimple_classes(self, _no_object=None, _attributes={}, **_arguments):
+               """Get nonsimple classes: Returns an alphabetical list of classes with member functions, bases classes, or subclasses
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'list'
+               """
+               _code = 'MMPR'
+               _subcode = 'NsCl'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_member_function_names(self, _object, _attributes={}, **_arguments):
+               """Get member function names: Returns a list containing the names of all the member functions of a class object
+               Required argument: must be a class object
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'list'
+               """
+               _code = 'MMPR'
+               _subcode = 'MbFN'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class Access_Paths(aetools.ComponentItem):
+       """Access Paths - Contains the definitions of a projectÕs access (search) paths."""
+       want = 'PATH'
+class User_Paths(aetools.NProperty):
+       """User Paths - To add an access path for the source files."""
+       which = 'PA01'
+       want = 'PInf'
+class System_Paths(aetools.NProperty):
+       """System Paths - To add an access path for the include files. (Not supported in Pascal)"""
+       which = 'PA03'
+       want = 'PInf'
+class Always_Full_Search(aetools.NProperty):
+       """Always Full Search - To force the compiler to search for system includes like it searches for user includes."""
+       which = 'PA02'
+       want = 'bool'
+
+class Editor(aetools.ComponentItem):
+       """Editor - """
+       want = 'EDTR'
+class Flash_delay(aetools.NProperty):
+       """Flash delay - The amount of time, in sixtieths of a second, the editor highlights a matching bracket."""
+       which = 'ED01'
+       want = 'long'
+class Dynamic_scroll(aetools.NProperty):
+       """Dynamic scroll - Display a windowÕs contents as you move the scroll box."""
+       which = 'ED02'
+       want = 'bool'
+class Balance(aetools.NProperty):
+       """Balance - Flash the matching opening bracket when you type a closing bracket."""
+       which = 'ED03'
+       want = 'bool'
+class Use_Drag__26__Drop_Editing(aetools.NProperty):
+       """Use Drag & Drop Editing - Use Drag & Drop text editing."""
+       which = 'ED04'
+       want = 'bool'
+class Save_on_update(aetools.NProperty):
+       """Save on update - Save all editor windows automatically when you choose the Update command."""
+       which = 'ED05'
+       want = 'bool'
+class Sort_Function_Popup(aetools.NProperty):
+       """Sort Function Popup - """
+       which = 'ED06'
+       want = 'bool'
+class Use_Multiple_Undo(aetools.NProperty):
+       """Use Multiple Undo - """
+       which = 'ED07'
+       want = 'bool'
+class Remember_font(aetools.NProperty):
+       """Remember font - Display a source file with its own font settings."""
+       which = 'ED08'
+       want = 'bool'
+class Remember_selection(aetools.NProperty):
+       """Remember selection - Restore the previous selection in a file when you open it."""
+       which = 'ED09'
+       want = 'bool'
+class Remember_window(aetools.NProperty):
+       """Remember window - Restore the last size and position for a source file window when you open it."""
+       which = 'ED10'
+       want = 'bool'
+class Main_Text_Color(aetools.NProperty):
+       """Main Text Color - Main, default, color for text."""
+       which = 'ED12'
+       want = 'cRGB'
+class Background_Color(aetools.NProperty):
+       """Background Color - Color of the background of editor windows."""
+       which = 'ED13'
+       want = 'cRGB'
+class Context_Popup_Delay(aetools.NProperty):
+       """Context Popup Delay - The amount of time, in sixtieths of a second, before the context popup is displayed if you click and hold on a browser symbol."""
+       which = 'ED14'
+       want = 'bool'
+
+class Syntax_Coloring(aetools.ComponentItem):
+       """Syntax Coloring - """
+       want = 'SNTX'
+class Syntax_coloring(aetools.NProperty):
+       """Syntax coloring - Mark keywords and comments with color."""
+       which = 'GH01'
+       want = 'bool'
+class Comment_color(aetools.NProperty):
+       """Comment color - The color for comments."""
+       which = 'GH02'
+       want = 'cRGB'
+class Keyword_color(aetools.NProperty):
+       """Keyword color - The color for language keywords."""
+       which = 'GH03'
+       want = 'cRGB'
+class String_color(aetools.NProperty):
+       """String color - The color for strings."""
+       which = 'GH04'
+       want = 'cRGB'
+class Custom_color_1(aetools.NProperty):
+       """Custom color 1 - The color for the first set of custom keywords."""
+       which = 'GH05'
+       want = 'cRGB'
+class Custom_color_2(aetools.NProperty):
+       """Custom color 2 - The color for the second set custom keywords."""
+       which = 'GH06'
+       want = 'cRGB'
+class Custom_color_3(aetools.NProperty):
+       """Custom color 3 - The color for the third set of custom keywords."""
+       which = 'GH07'
+       want = 'cRGB'
+class Custom_color_4(aetools.NProperty):
+       """Custom color 4 - The color for the fourth set of custom keywords."""
+       which = 'GH08'
+       want = 'cRGB'
+
+class Custom_Keywords(aetools.ComponentItem):
+       """Custom Keywords - """
+       want = 'CUKW'
+class Custom_color_1(aetools.NProperty):
+       """Custom color 1 - The color for the first set of custom keywords."""
+       which = 'KW01'
+       want = 'cRGB'
+class Custom_color_2(aetools.NProperty):
+       """Custom color 2 - The color for the second set custom keywords."""
+       which = 'KW02'
+       want = 'cRGB'
+class Custom_color_3(aetools.NProperty):
+       """Custom color 3 - The color for the third set of custom keywords."""
+       which = 'KW03'
+       want = 'cRGB'
+class Custom_color_4(aetools.NProperty):
+       """Custom color 4 - The color for the fourth set of custom keywords."""
+       which = 'KW04'
+       want = 'cRGB'
+
+class Browser_Coloring(aetools.ComponentItem):
+       """Browser Coloring - Colors for Browser symbols."""
+       want = 'BRKW'
+class Browser_Keywords(aetools.NProperty):
+       """Browser Keywords - Mark Browser symbols with color."""
+       which = 'BW00'
+       want = 'bool'
+class Classes_Color(aetools.NProperty):
+       """Classes Color - The color for classes."""
+       which = 'BW01'
+       want = 'cRGB'
+class Constants_Color(aetools.NProperty):
+       """Constants Color - The color for constants."""
+       which = 'BW02'
+       want = 'cRGB'
+class Enums_Color(aetools.NProperty):
+       """Enums Color - The color for enums."""
+       which = 'BW03'
+       want = 'cRGB'
+class Functions_Color(aetools.NProperty):
+       """Functions Color - Set color for functions."""
+       which = 'BW04'
+       want = 'cRGB'
+class Globals_Color(aetools.NProperty):
+       """Globals Color - The color for globals"""
+       which = 'BW05'
+       want = 'cRGB'
+class Macros_Color(aetools.NProperty):
+       """Macros Color - The color for macros."""
+       which = 'BW06'
+       want = 'cRGB'
+class Templates_Color(aetools.NProperty):
+       """Templates Color - Set color for templates."""
+       which = 'BW07'
+       want = 'cRGB'
+class Typedefs_Color(aetools.NProperty):
+       """Typedefs Color - The color for typedefs."""
+       which = 'BW08'
+       want = 'cRGB'
+
+class Error_Information(aetools.ComponentItem):
+       """Error Information - Describes a single error or warning from the compiler or the linker."""
+       want = 'ErrM'
+class kind(aetools.NProperty):
+       """kind - The type of error or warning."""
+       which = 'ErrT'
+       want = 'ErrT'
+class message(aetools.NProperty):
+       """message - The error or warning message."""
+       which = 'ErrS'
+       want = 'TEXT'
+class disk_file(aetools.NProperty):
+       """disk file - The file where the error occurred.  May not be returned for certain kinds of errors (eg, link errors)."""
+       which = 'file'
+       want = 'fss '
+class lineNumber(aetools.NProperty):
+       """lineNumber - The line in the file where the error occurred.  May not be returned for certain kinds of errors (eg, link errors)."""
+       which = 'ErrL'
+       want = 'long'
+
+class Extras(aetools.ComponentItem):
+       """Extras - """
+       want = 'GXTR'
+class Completion_sound(aetools.NProperty):
+       """Completion sound - Play a sound when finished a Bring Up To Date or Make command."""
+       which = 'EX01'
+       want = 'bool'
+class Success_sound(aetools.NProperty):
+       """Success sound - The sound CodeWarrior plays when it successfully finishes a Bring Up To Date or Make command."""
+       which = 'EX02'
+       want = 'TEXT'
+class Failure_sound(aetools.NProperty):
+       """Failure sound - The sound CodeWarrior plays when it cannot finish a Bring Up To Date or Make command."""
+       which = 'EX03'
+       want = 'TEXT'
+class Full_screen_zoom(aetools.NProperty):
+       """Full screen zoom - Zoom windows to the full screen width."""
+       which = 'EX07'
+       want = 'bool'
+class External_reference(aetools.NProperty):
+       """External reference - Which on-line function reference to use."""
+       which = 'EX08'
+       want = 'RefP'
+class Use_Script_Menu(aetools.NProperty):
+       """Use Script Menu - Controls the use of the AppleScript menu"""
+       which = 'EX12'
+       want = 'bool'
+class Use_Editor_Extensions(aetools.NProperty):
+       """Use Editor Extensions - Controls the use of the Editor Extensions menu"""
+       which = 'EX10'
+       want = 'bool'
+class Use_External_Editor(aetools.NProperty):
+       """Use External Editor - Controls whether CodeWarrior uses its own integrated editor or an external application for editing text files."""
+       which = 'EX11'
+       want = 'bool'
+class Honor_Projector_State_for_Projects(aetools.NProperty):
+       """Honor Projector State for Projects - Controls whether CodeWarrior opens files set to read-only by Projector."""
+       which = 'EX13'
+       want = 'bool'
+
+class Build_Extras(aetools.ComponentItem):
+       """Build Extras - """
+       want = 'LXTR'
+class Browser_active(aetools.NProperty):
+       """Browser active - Allow the collection of browser information."""
+       which = 'EX09'
+       want = 'bool'
+class Modification_date_caching(aetools.NProperty):
+       """Modification date caching - """
+       which = 'EX04'
+       want = 'bool'
+class Multiprocessing_Compilation(aetools.NProperty):
+       """Multiprocessing Compilation - """
+       which = 'EX14'
+       want = 'bool'
+class Show_ToolServer_Menu(aetools.NProperty):
+       """Show ToolServer Menu - """
+       which = 'EX18'
+       want = 'bool'
+class Enable_Automatic_Toolbar_Help(aetools.NProperty):
+       """Enable Automatic Toolbar Help - """
+       which = 'EX19'
+       want = 'bool'
+class Include_File_Cache_Size__28_K_29_(aetools.NProperty):
+       """Include File Cache Size (K) - """
+       which = 'EX15'
+       want = 'long'
+class Recent_Documents(aetools.NProperty):
+       """Recent Documents - """
+       which = 'EX16'
+       want = 'shor'
+class Recent_Projects(aetools.NProperty):
+       """Recent Projects - """
+       which = 'EX17'
+       want = 'shor'
+
+class File_Mappings(aetools.ComponentItem):
+       """File Mappings - Mappings of extensions & file types to compilers"""
+       want = 'FLMP'
+class mappings(aetools.NProperty):
+       """mappings - """
+       which = 'FMps'
+       want = 'FMap'
+
+class Font(aetools.ComponentItem):
+       """Font - """
+       want = 'mFNT'
+class Auto_indent(aetools.NProperty):
+       """Auto indent - Indent new lines automatically."""
+       which = 'FN01'
+       want = 'bool'
+class Tab_size(aetools.NProperty):
+       """Tab size - """
+       which = 'FN02'
+       want = 'shor'
+class Text_font(aetools.NProperty):
+       """Text font - The font used in editing windows."""
+       which = 'ptxf'
+       want = 'TEXT'
+class Text_size(aetools.NProperty):
+       """Text size - The size of the text in an editing window."""
+       which = 'ptps'
+       want = 'shor'
+
+class Function_Information(aetools.ComponentItem):
+       """Function Information - Describes the location of any function or global data definition within the current project."""
+       want = 'FDef'
+# repeated property disk_file The location on disk of the file containing the definition.
+# repeated property lineNumber The line number where the definition begins.
+
+class Path_Information(aetools.ComponentItem):
+       """Path Information - Contains all of the parameters that describe an access path."""
+       want = 'PInf'
+class name(aetools.NProperty):
+       """name - The actual path name."""
+       which = 'pnam'
+       want = 'TEXT'
+class recursive(aetools.NProperty):
+       """recursive - Will the path be searched recursively?  (Default is true)"""
+       which = 'Recu'
+       want = 'bool'
+class origin(aetools.NProperty):
+       """origin - """
+       which = 'Orig'
+       want = 'PPrm'
+
+class ProjectFile(aetools.ComponentItem):
+       """ProjectFile - A file contained in a project"""
+       want = 'SrcF'
+class filetype(aetools.NProperty):
+       """filetype - What kind of file is this ?"""
+       which = 'SrcT'
+       want = 'SrcT'
+# repeated property name The fileÕs name
+# repeated property disk_file The fileÕs location on disk
+class codesize(aetools.NProperty):
+       """codesize - The size of this fileÕs code."""
+       which = 'CSiz'
+       want = 'long'
+class datasize(aetools.NProperty):
+       """datasize - The size of this fileÕs data."""
+       which = 'DSiz'
+       want = 'long'
+class up_to_date(aetools.NProperty):
+       """up to date - Has the file been compiled since its last modification ?"""
+       which = 'UpTD'
+       want = 'bool'
+class symbols(aetools.NProperty):
+       """symbols - Are debugging symbols generated for this file ?"""
+       which = 'SymG'
+       want = 'bool'
+class weak_link(aetools.NProperty):
+       """weak link - Is this file imported weakly into the project ? [PowerPC only]"""
+       which = 'Weak'
+       want = 'bool'
+class initialize_before(aetools.NProperty):
+       """initialize before - Intiailize the shared library before the main application."""
+       which = 'Bfor'
+       want = 'bool'
+class includes(aetools.NProperty):
+       """includes - """
+       which = 'IncF'
+       want = 'fss '
+
+class Segment(aetools.ComponentItem):
+       """Segment - A segment or group in the project"""
+       want = 'Seg '
+# repeated property name 
+class filecount(aetools.NProperty):
+       """filecount - """
+       which = 'NumF'
+       want = 'shor'
+class preloaded(aetools.NProperty):
+       """preloaded - Is the segment preloaded ? [68K only]"""
+       which = 'Prel'
+       want = 'bool'
+class protected(aetools.NProperty):
+       """protected - Is the segment protected ? [68K only]"""
+       which = 'Prot'
+       want = 'bool'
+class locked(aetools.NProperty):
+       """locked - Is the segment locked ? [68K only]"""
+       which = 'PLck'
+       want = 'bool'
+class purgeable(aetools.NProperty):
+       """purgeable - Is the segment purgeable ? [68K only]"""
+       which = 'Purg'
+       want = 'bool'
+class system_heap(aetools.NProperty):
+       """system heap - Is the segment loaded into the system heap ? [68K only]"""
+       which = 'SysH'
+       want = 'bool'
+
+class Target_Settings(aetools.ComponentItem):
+       """Target Settings - Contains the definitions of a projectÕs target."""
+       want = 'TARG'
+class Linker(aetools.NProperty):
+       """Linker - The name of the current linker."""
+       which = 'TA01'
+       want = 'TEXT'
+class Post_Linker(aetools.NProperty):
+       """Post Linker - """
+       which = 'TA09'
+       want = 'TEXT'
+class Target_Name(aetools.NProperty):
+       """Target Name - """
+       which = 'TA10'
+       want = 'TEXT'
+class Output_Directory_Path(aetools.NProperty):
+       """Output Directory Path - """
+       which = 'TA11'
+       want = 'TEXT'
+class Output_Directory_Origin(aetools.NProperty):
+       """Output Directory Origin - """
+       which = 'TA12'
+       want = 'PPrm'
+
+class File_Mapping(aetools.ComponentItem):
+       """File Mapping - """
+       want = 'FMap'
+class File_Type(aetools.NProperty):
+       """File Type - """
+       which = 'PR04'
+       want = 'TEXT'
+class Extension(aetools.NProperty):
+       """Extension - """
+       which = 'TA02'
+       want = 'TEXT'
+class Precompiled(aetools.NProperty):
+       """Precompiled - """
+       which = 'TA03'
+       want = 'bool'
+class Resource_File(aetools.NProperty):
+       """Resource File - """
+       which = 'TA04'
+       want = 'bool'
+class Launchable(aetools.NProperty):
+       """Launchable - """
+       which = 'TA05'
+       want = 'bool'
+class Ignored_by_Make(aetools.NProperty):
+       """Ignored by Make - """
+       which = 'TA06'
+       want = 'bool'
+class Compiler(aetools.NProperty):
+       """Compiler - """
+       which = 'TA07'
+       want = 'TEXT'
+
+class _class(aetools.ComponentItem):
+       """class - A class, struct, or record type in the current project"""
+       want = 'Clas'
+# repeated property name 
+class language(aetools.NProperty):
+       """language - Implementation language of this class"""
+       which = 'Lang'
+       want = 'Lang'
+class declaration_file(aetools.NProperty):
+       """declaration file - Source file containing the class declaration"""
+       which = 'DcFl'
+       want = 'fss '
+class declaration_start_offset(aetools.NProperty):
+       """declaration start offset - Start of class declaration source code"""
+       which = 'DcSt'
+       want = 'long'
+class declaration_end_offset(aetools.NProperty):
+       """declaration end offset - End of class declaration"""
+       which = 'DcEn'
+       want = 'long'
+class subclasses(aetools.NProperty):
+       """subclasses - the immediate subclasses of this class"""
+       which = 'SubC'
+       want = 'Clas'
+class all_subclasses(aetools.NProperty):
+       """all subclasses - the classes directly or indirectly derived from this class"""
+       which = 'SubA'
+       want = 'Clas'
+#        element 'BsCl' as ['indx']
+#        element 'MbFn' as ['indx', 'name']
+#        element 'DtMb' as ['indx', 'name']
+
+classes = _class
+
+class member_function(aetools.ComponentItem):
+       """member function - A class member function or method."""
+       want = 'MbFn'
+# repeated property name 
+class access(aetools.NProperty):
+       """access - """
+       which = 'Acce'
+       want = 'Acce'
+class virtual(aetools.NProperty):
+       """virtual - """
+       which = 'Virt'
+       want = 'bool'
+class static(aetools.NProperty):
+       """static - """
+       which = 'Stat'
+       want = 'bool'
+# repeated property declaration_file Source file containing the member function declaration
+# repeated property declaration_start_offset start of member function declaration source code
+# repeated property declaration_end_offset end of member function declaration
+class implementation_file(aetools.NProperty):
+       """implementation file - Source file containing the member function definition"""
+       which = 'DfFl'
+       want = 'fss '
+class implementation_start_offset(aetools.NProperty):
+       """implementation start offset - start of member function definition source code"""
+       which = 'DfSt'
+       want = 'long'
+class implementation_end_offset(aetools.NProperty):
+       """implementation end offset - end of member function definition"""
+       which = 'DfEn'
+       want = 'long'
+
+member_functions = member_function
+
+class data_member(aetools.ComponentItem):
+       """data member - A class data member or field"""
+       want = 'DtMb'
+# repeated property name 
+# repeated property access 
+# repeated property static 
+# repeated property declaration_start_offset 
+# repeated property declaration_end_offset 
+
+data_members = data_member
+
+class base_class(aetools.ComponentItem):
+       """base class - A base class or super class of a class"""
+       want = 'BsCl'
+class _class(aetools.NProperty):
+       """class - The class object corresponding to this base class"""
+       which = 'Clas'
+       want = 'obj '
+# repeated property access 
+# repeated property virtual 
+
+base_classes = base_class
+
+class browser_catalog(aetools.ComponentItem):
+       """browser catalog - The browser symbol catalog for the current project"""
+       want = 'Cata'
+#        element 'Clas' as ['indx', 'name']
+
+class VCS_Setup(aetools.ComponentItem):
+       """VCS Setup - The version control system perferences."""
+       want = 'VCSs'
+class VCS_Active(aetools.NProperty):
+       """VCS Active - Use Version Control"""
+       which = 'VC01'
+       want = 'bool'
+class Connection_Method(aetools.NProperty):
+       """Connection Method - Name of Version Control System to use."""
+       which = 'VC02'
+       want = 'TEXT'
+class Username(aetools.NProperty):
+       """Username - The user name for the VCS."""
+       which = 'VC03'
+       want = 'TEXT'
+class Password(aetools.NProperty):
+       """Password - The password for the VCS."""
+       which = 'VC04'
+       want = 'TEXT'
+class Auto_Connect(aetools.NProperty):
+       """Auto Connect - Automatically connect to database when starting."""
+       which = 'VC05'
+       want = 'bool'
+class Store_Password(aetools.NProperty):
+       """Store Password - Store the password."""
+       which = 'VC06'
+       want = 'bool'
+class Always_Prompt(aetools.NProperty):
+       """Always Prompt - Always show login dialog"""
+       which = 'VC07'
+       want = 'bool'
+class Mount_Volume(aetools.NProperty):
+       """Mount Volume - Attempt to mount the database volume if it isn't available."""
+       which = 'VC08'
+       want = 'bool'
+class Database_Path(aetools.NProperty):
+       """Database Path - Path to the VCS database."""
+       which = 'VC09'
+       want = 'PInf'
+class Local_Root(aetools.NProperty):
+       """Local Root - Path to the local directory to checkout to."""
+       which = 'VC10'
+       want = 'PInf'
+Access_Paths._propdict = {
+       'User_Paths' : User_Paths,
+       'System_Paths' : System_Paths,
+       'Always_Full_Search' : Always_Full_Search,
+}
+Access_Paths._elemdict = {
+}
+Editor._propdict = {
+       'Flash_delay' : Flash_delay,
+       'Dynamic_scroll' : Dynamic_scroll,
+       'Balance' : Balance,
+       'Use_Drag__26__Drop_Editing' : Use_Drag__26__Drop_Editing,
+       'Save_on_update' : Save_on_update,
+       'Sort_Function_Popup' : Sort_Function_Popup,
+       'Use_Multiple_Undo' : Use_Multiple_Undo,
+       'Remember_font' : Remember_font,
+       'Remember_selection' : Remember_selection,
+       'Remember_window' : Remember_window,
+       'Main_Text_Color' : Main_Text_Color,
+       'Background_Color' : Background_Color,
+       'Context_Popup_Delay' : Context_Popup_Delay,
+}
+Editor._elemdict = {
+}
+Syntax_Coloring._propdict = {
+       'Syntax_coloring' : Syntax_coloring,
+       'Comment_color' : Comment_color,
+       'Keyword_color' : Keyword_color,
+       'String_color' : String_color,
+       'Custom_color_1' : Custom_color_1,
+       'Custom_color_2' : Custom_color_2,
+       'Custom_color_3' : Custom_color_3,
+       'Custom_color_4' : Custom_color_4,
+}
+Syntax_Coloring._elemdict = {
+}
+Custom_Keywords._propdict = {
+       'Custom_color_1' : Custom_color_1,
+       'Custom_color_2' : Custom_color_2,
+       'Custom_color_3' : Custom_color_3,
+       'Custom_color_4' : Custom_color_4,
+}
+Custom_Keywords._elemdict = {
+}
+Browser_Coloring._propdict = {
+       'Browser_Keywords' : Browser_Keywords,
+       'Classes_Color' : Classes_Color,
+       'Constants_Color' : Constants_Color,
+       'Enums_Color' : Enums_Color,
+       'Functions_Color' : Functions_Color,
+       'Globals_Color' : Globals_Color,
+       'Macros_Color' : Macros_Color,
+       'Templates_Color' : Templates_Color,
+       'Typedefs_Color' : Typedefs_Color,
+}
+Browser_Coloring._elemdict = {
+}
+Error_Information._propdict = {
+       'kind' : kind,
+       'message' : message,
+       'disk_file' : disk_file,
+       'lineNumber' : lineNumber,
+}
+Error_Information._elemdict = {
+}
+Extras._propdict = {
+       'Completion_sound' : Completion_sound,
+       'Success_sound' : Success_sound,
+       'Failure_sound' : Failure_sound,
+       'Full_screen_zoom' : Full_screen_zoom,
+       'External_reference' : External_reference,
+       'Use_Script_Menu' : Use_Script_Menu,
+       'Use_Editor_Extensions' : Use_Editor_Extensions,
+       'Use_External_Editor' : Use_External_Editor,
+       'Honor_Projector_State_for_Projects' : Honor_Projector_State_for_Projects,
+}
+Extras._elemdict = {
+}
+Build_Extras._propdict = {
+       'Browser_active' : Browser_active,
+       'Modification_date_caching' : Modification_date_caching,
+       'Multiprocessing_Compilation' : Multiprocessing_Compilation,
+       'Show_ToolServer_Menu' : Show_ToolServer_Menu,
+       'Enable_Automatic_Toolbar_Help' : Enable_Automatic_Toolbar_Help,
+       'Include_File_Cache_Size__28_K_29_' : Include_File_Cache_Size__28_K_29_,
+       'Recent_Documents' : Recent_Documents,
+       'Recent_Projects' : Recent_Projects,
+}
+Build_Extras._elemdict = {
+}
+File_Mappings._propdict = {
+       'mappings' : mappings,
+}
+File_Mappings._elemdict = {
+}
+Font._propdict = {
+       'Auto_indent' : Auto_indent,
+       'Tab_size' : Tab_size,
+       'Text_font' : Text_font,
+       'Text_size' : Text_size,
+}
+Font._elemdict = {
+}
+Function_Information._propdict = {
+       'disk_file' : disk_file,
+       'lineNumber' : lineNumber,
+}
+Function_Information._elemdict = {
+}
+Path_Information._propdict = {
+       'name' : name,
+       'recursive' : recursive,
+       'origin' : origin,
+}
+Path_Information._elemdict = {
+}
+ProjectFile._propdict = {
+       'filetype' : filetype,
+       'name' : name,
+       'disk_file' : disk_file,
+       'codesize' : codesize,
+       'datasize' : datasize,
+       'up_to_date' : up_to_date,
+       'symbols' : symbols,
+       'weak_link' : weak_link,
+       'initialize_before' : initialize_before,
+       'includes' : includes,
+}
+ProjectFile._elemdict = {
+}
+Segment._propdict = {
+       'name' : name,
+       'filecount' : filecount,
+       'preloaded' : preloaded,
+       'protected' : protected,
+       'locked' : locked,
+       'purgeable' : purgeable,
+       'system_heap' : system_heap,
+}
+Segment._elemdict = {
+}
+Target_Settings._propdict = {
+       'Linker' : Linker,
+       'Post_Linker' : Post_Linker,
+       'Target_Name' : Target_Name,
+       'Output_Directory_Path' : Output_Directory_Path,
+       'Output_Directory_Origin' : Output_Directory_Origin,
+}
+Target_Settings._elemdict = {
+}
+File_Mapping._propdict = {
+       'File_Type' : File_Type,
+       'Extension' : Extension,
+       'Precompiled' : Precompiled,
+       'Resource_File' : Resource_File,
+       'Launchable' : Launchable,
+       'Ignored_by_Make' : Ignored_by_Make,
+       'Compiler' : Compiler,
+}
+File_Mapping._elemdict = {
+}
+_class._propdict = {
+       'name' : name,
+       'language' : language,
+       'declaration_file' : declaration_file,
+       'declaration_start_offset' : declaration_start_offset,
+       'declaration_end_offset' : declaration_end_offset,
+       'subclasses' : subclasses,
+       'all_subclasses' : all_subclasses,
+}
+_class._elemdict = {
+       'base_class' : base_class,
+       'member_function' : member_function,
+       'data_member' : data_member,
+}
+member_function._propdict = {
+       'name' : name,
+       'access' : access,
+       'virtual' : virtual,
+       'static' : static,
+       'declaration_file' : declaration_file,
+       'declaration_start_offset' : declaration_start_offset,
+       'declaration_end_offset' : declaration_end_offset,
+       'implementation_file' : implementation_file,
+       'implementation_start_offset' : implementation_start_offset,
+       'implementation_end_offset' : implementation_end_offset,
+}
+member_function._elemdict = {
+}
+data_member._propdict = {
+       'name' : name,
+       'access' : access,
+       'static' : static,
+       'declaration_start_offset' : declaration_start_offset,
+       'declaration_end_offset' : declaration_end_offset,
+}
+data_member._elemdict = {
+}
+base_class._propdict = {
+       '_class' : _class,
+       'access' : access,
+       'virtual' : virtual,
+}
+base_class._elemdict = {
+}
+browser_catalog._propdict = {
+}
+browser_catalog._elemdict = {
+       '_class' : _class,
+}
+VCS_Setup._propdict = {
+       'VCS_Active' : VCS_Active,
+       'Connection_Method' : Connection_Method,
+       'Username' : Username,
+       'Password' : Password,
+       'Auto_Connect' : Auto_Connect,
+       'Store_Password' : Store_Password,
+       'Always_Prompt' : Always_Prompt,
+       'Mount_Volume' : Mount_Volume,
+       'Database_Path' : Database_Path,
+       'Local_Root' : Local_Root,
+}
+VCS_Setup._elemdict = {
+}
+_Enum_savo = {
+       'yes' : 'yes ', # Save changes
+       'no' : 'no  ',  # Do not save changes
+       'ask' : 'ask ', # Ask the user whether to save
+}
+
+_Enum_ErrT = {
+       'information' : 'ErIn', # 
+       'compiler_warning' : 'ErCW',    # 
+       'compiler_error' : 'ErCE',      # 
+       'definition' : 'ErDf',  # 
+       'linker_warning' : 'ErLW',      # 
+       'linker_error' : 'ErLE',        # 
+       'find_result' : 'ErFn', # 
+       'generic_error' : 'ErGn',       # 
+}
+
+_Enum_Mode = {
+       'ReadWrite' : 'RdWr',   # The file is open with read/write privileges
+       'ReadOnly' : 'Read',    # The file is open with read/only privileges
+       'CheckedOut_ReadWrite' : 'CkRW',        # The file is checked out with read/write privileges
+       'CheckedOut_ReadOnly' : 'CkRO', # The file is checked out with read/only privileges
+       'CheckedOut_ReadModify' : 'CkRM',       # The file is checked out with read/modify privileges
+       'Locked' : 'Lock',      # The file is locked on disk
+       'None' : 'None',        # The file is new
+}
+
+_Enum_SrcT = {
+       'source' : 'FTxt',      # A source file (.c, .cp, .p, etc).
+       'unknown' : 'FUnk',     # An unknown file type.
+}
+
+_Enum_PPrm = {
+       'absolute' : 'Abso',    # An absolute path name, including volume name.
+       'project_relative' : 'PRel',    # A path relative to the current projectÕs folder.
+       'shell_relative' : 'SRel',      # A path relative to the CodeWarrior\8e folder.
+       'system_relative' : 'YRel',     # A path relative to the system folder
+}
+
+_Enum_RefP = {
+       'Think_Reference' : 'DanR',     # 
+       'QuickView' : 'ALTV',   # 
+}
+
+_Enum_Lang = {
+       'C' : 'LC  ',   # 
+       'C_2b__2b_' : 'LC++',   # 
+       'Pascal' : 'LP  ',      # 
+       'Object_Pascal' : 'LP++',       # 
+       'Java' : 'LJav',        # 
+       'Assembler' : 'LAsm',   # 
+       'Unknown' : 'L?  ',     # 
+}
+
+_Enum_Acce = {
+       'public' : 'Publ',      # 
+       'protected' : 'Prot',   # 
+       'private' : 'Priv',     # 
+}
+
+_Enum_Inte = {
+       'never_interact' : 'eNvr',      # Never allow user interactions
+       'interact_with_self' : 'eInS',  # Allow user interaction only when an AppleEvent is sent from within CodeWarrior
+       'interact_with_local' : 'eInL', # Allow user interaction when AppleEvents are sent from applications on the same machine (default)
+       'interact_with_all' : 'eInA',   # Allow user interaction from both local and remote AppleEvents
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'LXTR' : Build_Extras,
+       'Seg ' : Segment,
+       'BsCl' : base_class,
+       'PATH' : Access_Paths,
+       'mFNT' : Font,
+       'BRKW' : Browser_Coloring,
+       'FLMP' : File_Mappings,
+       'Cata' : browser_catalog,
+       'SNTX' : Syntax_Coloring,
+       'CUKW' : Custom_Keywords,
+       'PInf' : Path_Information,
+       'TARG' : Target_Settings,
+       'FDef' : Function_Information,
+       'EDTR' : Editor,
+       'VCSs' : VCS_Setup,
+       'ErrM' : Error_Information,
+       'Clas' : _class,
+       'SrcF' : ProjectFile,
+       'GXTR' : Extras,
+       'MbFn' : member_function,
+       'DtMb' : data_member,
+       'FMap' : File_Mapping,
+}
+
+_propdeclarations = {
+       'CSiz' : codesize,
+       'DcEn' : declaration_end_offset,
+       'FMps' : mappings,
+       'VC02' : Connection_Method,
+       'VC03' : Username,
+       'TA02' : Extension,
+       'UpTD' : up_to_date,
+       'VC07' : Always_Prompt,
+       'Virt' : virtual,
+       'VC05' : Auto_Connect,
+       'VC08' : Mount_Volume,
+       'VC09' : Database_Path,
+       'VC06' : Store_Password,
+       'PA02' : Always_Full_Search,
+       'PA03' : System_Paths,
+       'Clas' : _class,
+       'PA01' : User_Paths,
+       'TA09' : Post_Linker,
+       'Lang' : language,
+       'VC10' : Local_Root,
+       'EX09' : Browser_active,
+       'GH08' : Custom_color_4,
+       'DfFl' : implementation_file,
+       'GH06' : Custom_color_2,
+       'GH07' : Custom_color_3,
+       'GH04' : String_color,
+       'GH05' : Custom_color_1,
+       'KW01' : Custom_color_1,
+       'GH03' : Keyword_color,
+       'KW03' : Custom_color_3,
+       'KW02' : Custom_color_2,
+       'BW02' : Constants_Color,
+       'BW03' : Enums_Color,
+       'BW00' : Browser_Keywords,
+       'BW01' : Classes_Color,
+       'BW06' : Macros_Color,
+       'BW07' : Templates_Color,
+       'BW04' : Functions_Color,
+       'pnam' : name,
+       'DfSt' : implementation_start_offset,
+       'BW08' : Typedefs_Color,
+       'PR04' : File_Type,
+       'EX04' : Modification_date_caching,
+       'EX07' : Full_screen_zoom,
+       'PLck' : locked,
+       'EX02' : Success_sound,
+       'EX03' : Failure_sound,
+       'TA06' : Ignored_by_Make,
+       'TA07' : Compiler,
+       'TA04' : Resource_File,
+       'TA05' : Launchable,
+       'EX08' : External_reference,
+       'DSiz' : datasize,
+       'TA01' : Linker,
+       'VC04' : Password,
+       'Bfor' : initialize_before,
+       'SrcT' : filetype,
+       'SysH' : system_heap,
+       'GH01' : Syntax_coloring,
+       'GH02' : Comment_color,
+       'Prel' : preloaded,
+       'Orig' : origin,
+       'EX17' : Recent_Projects,
+       'EX16' : Recent_Documents,
+       'EX15' : Include_File_Cache_Size__28_K_29_,
+       'EX14' : Multiprocessing_Compilation,
+       'EX01' : Completion_sound,
+       'EX12' : Use_Script_Menu,
+       'EX11' : Use_External_Editor,
+       'EX10' : Use_Editor_Extensions,
+       'TA11' : Output_Directory_Path,
+       'TA10' : Target_Name,
+       'TA12' : Output_Directory_Origin,
+       'EX19' : Enable_Automatic_Toolbar_Help,
+       'EX18' : Show_ToolServer_Menu,
+       'ErrT' : kind,
+       'ptxf' : Text_font,
+       'ErrS' : message,
+       'SubA' : all_subclasses,
+       'SubC' : subclasses,
+       'ED08' : Remember_font,
+       'ED09' : Remember_selection,
+       'VC01' : VCS_Active,
+       'ErrL' : lineNumber,
+       'ED01' : Flash_delay,
+       'ED02' : Dynamic_scroll,
+       'ED03' : Balance,
+       'ED04' : Use_Drag__26__Drop_Editing,
+       'ED05' : Save_on_update,
+       'ED06' : Sort_Function_Popup,
+       'ED07' : Use_Multiple_Undo,
+       'Recu' : recursive,
+       'IncF' : includes,
+       'file' : disk_file,
+       'TA03' : Precompiled,
+       'Weak' : weak_link,
+       'DcSt' : declaration_start_offset,
+       'ptps' : Text_size,
+       'Stat' : static,
+       'ED10' : Remember_window,
+       'EX13' : Honor_Projector_State_for_Projects,
+       'DfEn' : implementation_end_offset,
+       'BW05' : Globals_Color,
+       'FN01' : Auto_indent,
+       'Purg' : purgeable,
+       'NumF' : filecount,
+       'Acce' : access,
+       'Prot' : protected,
+       'DcFl' : declaration_file,
+       'KW04' : Custom_color_4,
+       'ED13' : Background_Color,
+       'ED12' : Main_Text_Color,
+       'SymG' : symbols,
+       'FN02' : Tab_size,
+       'ED14' : Context_Popup_Delay,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'ErrT' : _Enum_ErrT,
+       'PPrm' : _Enum_PPrm,
+       'RefP' : _Enum_RefP,
+       'Acce' : _Enum_Acce,
+       'SrcT' : _Enum_SrcT,
+       'Mode' : _Enum_Mode,
+       'Inte' : _Enum_Inte,
+       'savo' : _Enum_savo,
+       'Lang' : _Enum_Lang,
+}
diff --git a/Mac/Lib/lib-scripting/Standard_Suite.py b/Mac/Lib/lib-scripting/Standard_Suite.py
new file mode 100644 (file)
index 0000000..f6d9b5a
--- /dev/null
@@ -0,0 +1,713 @@
+"""Suite Standard Suite: Common terms for most applications
+Level 1, version 1
+
+Generated from flap:System Folder:Extensions:Scripting Additions:Dialects:English Dialect
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'core'
+
+class Standard_Suite:
+
+       _argmap_class_info = {
+               '_in' : 'wrcd',
+       }
+
+       def class_info(self, _object=None, _attributes={}, **_arguments):
+               """class info: Get information about an object class
+               Required argument: the object class about which information is requested
+               Keyword argument _in: the human language and script system in which to return information
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a record containing the objectÕs properties and elements
+               """
+               _code = 'core'
+               _subcode = 'qobj'
+
+               aetools.keysubst(_arguments, self._argmap_class_info)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_close = {
+               'saving' : 'savo',
+               'saving_in' : 'kfil',
+       }
+
+       def close(self, _object, _attributes={}, **_arguments):
+               """close: Close an object
+               Required argument: the object to close
+               Keyword argument saving: specifies whether changes should be saved before closing
+               Keyword argument saving_in: the file in which to save the object
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'clos'
+
+               aetools.keysubst(_arguments, self._argmap_close)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'savo', _Enum_savo)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_count = {
+               'each' : 'kocl',
+       }
+
+       def count(self, _object, _attributes={}, **_arguments):
+               """count: Return the number of elements of a particular class within an object
+               Required argument: the object whose elements are to be counted
+               Keyword argument each: the class of the elements to be counted.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the number of elements
+               """
+               _code = 'core'
+               _subcode = 'cnte'
+
+               aetools.keysubst(_arguments, self._argmap_count)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_data_size = {
+               'as' : 'rtyp',
+       }
+
+       def data_size(self, _object, _attributes={}, **_arguments):
+               """data size: Return the size in bytes of an object
+               Required argument: the object whose data size is to be returned
+               Keyword argument as: the data type for which the size is calculated
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the size of the object in bytes
+               """
+               _code = 'core'
+               _subcode = 'dsiz'
+
+               aetools.keysubst(_arguments, self._argmap_data_size)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def delete(self, _object, _attributes={}, **_arguments):
+               """delete: Delete an element from an object
+               Required argument: the element to delete
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'delo'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_duplicate = {
+               'to' : 'insh',
+       }
+
+       def duplicate(self, _object, _attributes={}, **_arguments):
+               """duplicate: Duplicate object(s)
+               Required argument: the object(s) to duplicate
+               Keyword argument to: the new location for the object(s)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: to the duplicated object(s)
+               """
+               _code = 'core'
+               _subcode = 'clon'
+
+               aetools.keysubst(_arguments, self._argmap_duplicate)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_event_info = {
+               '_in' : 'wrcd',
+       }
+
+       def event_info(self, _object, _attributes={}, **_arguments):
+               """event info: Get information about the Apple events in a suite
+               Required argument: the event class of the Apple events for which to return information
+               Keyword argument _in: the human language and script system in which to return information
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a record containing the events and their parameters
+               """
+               _code = 'core'
+               _subcode = 'gtei'
+
+               aetools.keysubst(_arguments, self._argmap_event_info)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def exists(self, _object, _attributes={}, **_arguments):
+               """exists: Verify if an object exists
+               Required argument: the object in question
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: true if it exists, false if not
+               """
+               _code = 'core'
+               _subcode = 'doex'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_make = {
+               'new' : 'kocl',
+               'at' : 'insh',
+               'with_data' : 'data',
+               'with_properties' : 'prdt',
+       }
+
+       def make(self, _no_object=None, _attributes={}, **_arguments):
+               """make: Make a new element
+               Keyword argument new: the class of the new element.
+               Keyword argument at: the location at which to insert the element
+               Keyword argument with_data: the initial data for the element
+               Keyword argument with_properties: the initial values for the properties of the element
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: to the new object(s)
+               """
+               _code = 'core'
+               _subcode = 'crel'
+
+               aetools.keysubst(_arguments, self._argmap_make)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_move = {
+               'to' : 'insh',
+       }
+
+       def move(self, _object, _attributes={}, **_arguments):
+               """move: Move object(s) to a new location
+               Required argument: the object(s) to move
+               Keyword argument to: the new location for the object(s)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: to the object(s) after they have been moved
+               """
+               _code = 'core'
+               _subcode = 'move'
+
+               aetools.keysubst(_arguments, self._argmap_move)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def open(self, _object, _attributes={}, **_arguments):
+               """open: Open the specified object(s)
+               Required argument: list of objects to open
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'odoc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _print(self, _object, _attributes={}, **_arguments):
+               """print: Print the specified object(s)
+               Required argument: list of objects to print
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'pdoc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_quit = {
+               'saving' : 'savo',
+       }
+
+       def quit(self, _no_object=None, _attributes={}, **_arguments):
+               """quit: Quit an application program
+               Keyword argument saving: specifies whether to save currently open documents
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'quit'
+
+               aetools.keysubst(_arguments, self._argmap_quit)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+               aetools.enumsubst(_arguments, 'savo', _Enum_savo)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_save = {
+               '_in' : 'kfil',
+               'as' : 'fltp',
+       }
+
+       def save(self, _object, _attributes={}, **_arguments):
+               """save: Save an object
+               Required argument: the object to save
+               Keyword argument _in: the file in which to save the object
+               Keyword argument as: the file type of the document in which to save the data
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'save'
+
+               aetools.keysubst(_arguments, self._argmap_save)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_suite_info = {
+               '_in' : 'wrcd',
+       }
+
+       def suite_info(self, _object, _attributes={}, **_arguments):
+               """suite info: Get information about event suite(s)
+               Required argument: the suite for which to return information
+               Keyword argument _in: the human language and script system in which to return information
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a record containing the suites and their versions
+               """
+               _code = 'core'
+               _subcode = 'gtsi'
+
+               aetools.keysubst(_arguments, self._argmap_suite_info)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class application(aetools.ComponentItem):
+       """application - An application program"""
+       want = 'capp'
+class clipboard(aetools.NProperty):
+       """clipboard - the clipboard"""
+       which = 'pcli'
+       want = '****'
+class frontmost(aetools.NProperty):
+       """frontmost - Is this the frontmost application?"""
+       which = 'pisf'
+       want = 'bool'
+class name(aetools.NProperty):
+       """name - the name"""
+       which = 'pnam'
+       want = 'itxt'
+class selection(aetools.NProperty):
+       """selection - the selection visible to the user"""
+       which = 'sele'
+       want = 'csel'
+class version(aetools.NProperty):
+       """version - the version of the application"""
+       which = 'vers'
+       want = 'vers'
+
+applications = application
+
+class character(aetools.ComponentItem):
+       """character - A character"""
+       want = 'cha '
+class color(aetools.NProperty):
+       """color - the color"""
+       which = 'colr'
+       want = 'cRGB'
+class font(aetools.NProperty):
+       """font - the name of the font"""
+       which = 'font'
+       want = 'ctxt'
+class size(aetools.NProperty):
+       """size - the size in points"""
+       which = 'ptsz'
+       want = 'fixd'
+class writing_code(aetools.NProperty):
+       """writing code - the script system and language"""
+       which = 'psct'
+       want = 'intl'
+class style(aetools.NProperty):
+       """style - the text style"""
+       which = 'txst'
+       want = 'tsty'
+class uniform_styles(aetools.NProperty):
+       """uniform styles - the text style"""
+       which = 'ustl'
+       want = 'tsty'
+
+characters = character
+
+class document(aetools.ComponentItem):
+       """document - A document"""
+       want = 'docu'
+class modified(aetools.NProperty):
+       """modified - Has the document been modified since the last save?"""
+       which = 'imod'
+       want = 'bool'
+
+documents = document
+
+class file(aetools.ComponentItem):
+       """file - A file"""
+       want = 'file'
+class stationery(aetools.NProperty):
+       """stationery - Is the file a stationery file?"""
+       which = 'pspd'
+       want = 'bool'
+
+files = file
+
+class selection_2d_object(aetools.ComponentItem):
+       """selection-object - the selection visible to the user"""
+       want = 'csel'
+class contents(aetools.NProperty):
+       """contents - the contents of the selection"""
+       which = 'pcnt'
+       want = 'type'
+
+class text(aetools.ComponentItem):
+       """text - Text"""
+       want = 'ctxt'
+# repeated property font the name of the font of the first character
+
+class text_style_info(aetools.ComponentItem):
+       """text style info - On and Off styles of text run"""
+       want = 'tsty'
+class on_styles(aetools.NProperty):
+       """on styles - the styles that are on for the text"""
+       which = 'onst'
+       want = 'styl'
+class off_styles(aetools.NProperty):
+       """off styles - the styles that are off for the text"""
+       which = 'ofst'
+       want = 'styl'
+
+text_style_infos = text_style_info
+
+class window(aetools.ComponentItem):
+       """window - A window"""
+       want = 'cwin'
+class bounds(aetools.NProperty):
+       """bounds - the boundary rectangle for the window"""
+       which = 'pbnd'
+       want = 'qdrt'
+class closeable(aetools.NProperty):
+       """closeable - Does the window have a close box?"""
+       which = 'hclb'
+       want = 'bool'
+class titled(aetools.NProperty):
+       """titled - Does the window have a title bar?"""
+       which = 'ptit'
+       want = 'bool'
+class index(aetools.NProperty):
+       """index - the number of the window"""
+       which = 'pidx'
+       want = 'long'
+class floating(aetools.NProperty):
+       """floating - Does the window float?"""
+       which = 'isfl'
+       want = 'bool'
+class modal(aetools.NProperty):
+       """modal - Is the window modal?"""
+       which = 'pmod'
+       want = 'bool'
+class resizable(aetools.NProperty):
+       """resizable - Is the window resizable?"""
+       which = 'prsz'
+       want = 'bool'
+class zoomable(aetools.NProperty):
+       """zoomable - Is the window zoomable?"""
+       which = 'iszm'
+       want = 'bool'
+class zoomed(aetools.NProperty):
+       """zoomed - Is the window zoomed?"""
+       which = 'pzum'
+       want = 'bool'
+class visible(aetools.NProperty):
+       """visible - Is the window visible?"""
+       which = 'pvis'
+       want = 'bool'
+
+windows = window
+
+class insertion_point(aetools.ComponentItem):
+       """insertion point - An insertion location between two objects"""
+       want = 'cins'
+
+insertion_points = insertion_point
+application._propdict = {
+       'clipboard' : clipboard,
+       'frontmost' : frontmost,
+       'name' : name,
+       'selection' : selection,
+       'version' : version,
+}
+application._elemdict = {
+}
+character._propdict = {
+       'color' : color,
+       'font' : font,
+       'size' : size,
+       'writing_code' : writing_code,
+       'style' : style,
+       'uniform_styles' : uniform_styles,
+}
+character._elemdict = {
+}
+document._propdict = {
+       'modified' : modified,
+}
+document._elemdict = {
+}
+file._propdict = {
+       'stationery' : stationery,
+}
+file._elemdict = {
+}
+selection_2d_object._propdict = {
+       'contents' : contents,
+}
+selection_2d_object._elemdict = {
+}
+text._propdict = {
+       'font' : font,
+}
+text._elemdict = {
+}
+text_style_info._propdict = {
+       'on_styles' : on_styles,
+       'off_styles' : off_styles,
+}
+text_style_info._elemdict = {
+}
+window._propdict = {
+       'bounds' : bounds,
+       'closeable' : closeable,
+       'titled' : titled,
+       'index' : index,
+       'floating' : floating,
+       'modal' : modal,
+       'resizable' : resizable,
+       'zoomable' : zoomable,
+       'zoomed' : zoomed,
+       'visible' : visible,
+}
+window._elemdict = {
+}
+insertion_point._propdict = {
+}
+insertion_point._elemdict = {
+}
+class starts_with(aetools.NComparison):
+       """starts with - Starts with"""
+class contains(aetools.NComparison):
+       """contains - Contains"""
+class ends_with(aetools.NComparison):
+       """ends with - Ends with"""
+class _3d_(aetools.NComparison):
+       """= - Equal"""
+class _3e_(aetools.NComparison):
+       """> - Greater than"""
+class _b3_(aetools.NComparison):
+       """³ - Greater than or equal to"""
+class _3c_(aetools.NComparison):
+       """< - Less than"""
+class _b2_(aetools.NComparison):
+       """² - Less than or equal to"""
+_Enum_savo = {
+       'yes' : 'yes ', # Save objects now
+       'no' : 'no  ',  # Do not save objects
+       'ask' : 'ask ', # Ask the user whether to save
+}
+
+_Enum_kfrm = {
+       'index' : 'indx',       # keyform designating indexed access
+       'named' : 'name',       # keyform designating named access
+       'id' : 'ID  ',  # keyform designating access by unique identifier
+}
+
+_Enum_styl = {
+       'plain' : 'plan',       # Plain
+       'bold' : 'bold',        # Bold
+       'italic' : 'ital',      # Italic
+       'outline' : 'outl',     # Outline
+       'shadow' : 'shad',      # Shadow
+       'underline' : 'undl',   # Underline
+       'superscript' : 'spsc', # Superscript
+       'subscript' : 'sbsc',   # Subscript
+       'strikethrough' : 'strk',       # Strikethrough
+       'small_caps' : 'smcp',  # Small caps
+       'all_caps' : 'alcp',    # All capital letters
+       'all_lowercase' : 'lowc',       # Lowercase
+       'condensed' : 'cond',   # Condensed
+       'expanded' : 'pexp',    # Expanded
+       'hidden' : 'hidn',      # Hidden
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'docu' : document,
+       'tsty' : text_style_info,
+       'ctxt' : text,
+       'capp' : application,
+       'csel' : selection_2d_object,
+       'file' : file,
+       'cwin' : window,
+       'cha ' : character,
+       'cins' : insertion_point,
+}
+
+_propdeclarations = {
+       'ptit' : titled,
+       'onst' : on_styles,
+       'pnam' : name,
+       'pcli' : clipboard,
+       'ustl' : uniform_styles,
+       'psct' : writing_code,
+       'txst' : style,
+       'pvis' : visible,
+       'pspd' : stationery,
+       'pisf' : frontmost,
+       'sele' : selection,
+       'pmod' : modal,
+       'imod' : modified,
+       'ofst' : off_styles,
+       'ptsz' : size,
+       'pzum' : zoomed,
+       'hclb' : closeable,
+       'font' : font,
+       'pcnt' : contents,
+       'isfl' : floating,
+       'pidx' : index,
+       'iszm' : zoomable,
+       'colr' : color,
+       'pbnd' : bounds,
+       'vers' : version,
+       'prsz' : resizable,
+}
+
+_compdeclarations = {
+       '>   ' : _3e_,
+       'bgwt' : starts_with,
+       '>=  ' : _b3_,
+       '=   ' : _3d_,
+       '<=  ' : _b2_,
+       'cont' : contains,
+       'ends' : ends_with,
+       '<   ' : _3c_,
+}
+
+_enumdeclarations = {
+       'styl' : _Enum_styl,
+       'savo' : _Enum_savo,
+       'kfrm' : _Enum_kfrm,
+}
diff --git a/Mac/Lib/lib-scripting/Standard_URL_suite.py b/Mac/Lib/lib-scripting/Standard_URL_suite.py
new file mode 100644 (file)
index 0000000..3c02ebd
--- /dev/null
@@ -0,0 +1,62 @@
+"""Suite Standard URL suite: Mac URL standard, supported by many apps
+
+
+
+Level 1, version 1
+
+Generated from flap:Programma's:Netscape Navigator\8e Folder:Netscape Navigator\8e 3.01
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'GURL'
+
+class Standard_URL_suite:
+
+       _argmap_GetURL = {
+               'to' : 'dest',
+               'inside' : 'HWIN',
+               '_from' : 'refe',
+       }
+
+       def GetURL(self, _object, _attributes={}, **_arguments):
+               """GetURL: Loads the URL (optionaly to disk)
+
+               Required argument: The url 
+               Keyword argument to: file the URL should be loaded into  
+               Keyword argument inside: Window the URL should be loaded to
+               Keyword argument _from: Refererer, to be sent with the HTTP request
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'GURL'
+               _subcode = 'GURL'
+
+               aetools.keysubst(_arguments, self._argmap_GetURL)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+}
+
+_propdeclarations = {
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scripting/WWW_Suite.py b/Mac/Lib/lib-scripting/WWW_Suite.py
new file mode 100644 (file)
index 0000000..308e13c
--- /dev/null
@@ -0,0 +1,426 @@
+"""Suite WorldWideWeb suite, as defined in Spyglass spec.: 
+Level 1, version 1
+
+Generated from flap:Programma's:Netscape Navigator\8e Folder:Netscape Navigator\8e 3.01
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'WWW!'
+
+class WorldWideWeb_suite_2c__as_defined_in_Spyglass_spec_2e_:
+
+       _argmap_OpenURL = {
+               'to' : 'INTO',
+               'toWindow' : 'WIND',
+               'flags' : 'FLGS',
+               'post_data' : 'POST',
+               'post_type' : 'MIME',
+               'progressApp' : 'PROG',
+       }
+
+       def OpenURL(self, _object, _attributes={}, **_arguments):
+               """OpenURL: Opens a URL. Allows for more options than GetURL event
+               Required argument: URL
+               Keyword argument to: file destination
+               Keyword argument toWindow: window iD
+               Keyword argument flags: Binary: any combination of 1, 2 and 4 is allowed: 1 and 2 mean force reload the document. 4 is ignored
+               Keyword argument post_data: Form posting data
+               Keyword argument post_type: MIME type of the posting data. Defaults to application/x-www-form-urlencoded
+               Keyword argument progressApp: Application that will display progress
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: ID of the loading window
+               """
+               _code = 'WWW!'
+               _subcode = 'OURL'
+
+               aetools.keysubst(_arguments, self._argmap_OpenURL)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_ShowFile = {
+               'MIME_type' : 'MIME',
+               'Window_ID' : 'WIND',
+               'URL' : 'URL ',
+       }
+
+       def ShowFile(self, _object, _attributes={}, **_arguments):
+               """ShowFile: Similar to OpenDocuments, except that it specifies the parent URL, and MIME type of the file
+               Required argument: File to open
+               Keyword argument MIME_type: MIME type
+               Keyword argument Window_ID: Window to open the file in
+               Keyword argument URL: Use this as a base URL
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Window ID of the loaded window. 0 means ShowFile failed, FFFFFFF means that data was not appropriate type to display in the browser.
+               """
+               _code = 'WWW!'
+               _subcode = 'SHWF'
+
+               aetools.keysubst(_arguments, self._argmap_ShowFile)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_parse_anchor = {
+               'relative_to' : 'RELA',
+       }
+
+       def parse_anchor(self, _object, _attributes={}, **_arguments):
+               """parse anchor: Resolves the relative URL
+               Required argument: Main URL
+               Keyword argument relative_to: Relative URL
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Parsed  URL
+               """
+               _code = 'WWW!'
+               _subcode = 'PRSA'
+
+               aetools.keysubst(_arguments, self._argmap_parse_anchor)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_cancel_progress = {
+               'in_window' : 'WIND',
+       }
+
+       def cancel_progress(self, _object=None, _attributes={}, **_arguments):
+               """cancel progress: Interrupts the download of the document in the given window
+               Required argument: progress ID, obtained from the progress app
+               Keyword argument in_window: window ID of the progress to cancel
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'WWW!'
+               _subcode = 'CNCL'
+
+               aetools.keysubst(_arguments, self._argmap_cancel_progress)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def find_URL(self, _object, _attributes={}, **_arguments):
+               """find URL: If the file was downloaded by Netscape, you can call FindURL to find out the URL used to download the file.
+               Required argument: File spec
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The URL
+               """
+               _code = 'WWW!'
+               _subcode = 'FURL'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def webActivate(self, _object=None, _attributes={}, **_arguments):
+               """webActivate: Makes Netscape the frontmost application, and selects a given window. This event is here for suite completeness/ cross-platform compatibility only, you should use standard AppleEvents instead.
+               Required argument: window to bring to front
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'WWW!'
+               _subcode = 'ACTV'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def list_windows(self, _no_object=None, _attributes={}, **_arguments):
+               """list windows: Lists the IDs of all the hypertext windows
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: List of unique IDs of all the hypertext windows
+               """
+               _code = 'WWW!'
+               _subcode = 'LSTW'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def get_window_info(self, _object=None, _attributes={}, **_arguments):
+               """get window info: Returns the information about the window as a list. Currently the list contains the window title and the URL. You can get the same information using standard Apple Event GetProperty.
+               Required argument: window ID
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'list'
+               """
+               _code = 'WWW!'
+               _subcode = 'WNFO'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def register_URL_echo(self, _object=None, _attributes={}, **_arguments):
+               """register URL echo: Registers the \96echo\94 application. Each download from now on will be echoed to this application.
+               Required argument: Application signature
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'WWW!'
+               _subcode = 'RGUE'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def unregister_URL_echo(self, _object, _attributes={}, **_arguments):
+               """unregister URL echo: cancels URL echo
+               Required argument: application signature
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'WWW!'
+               _subcode = 'UNRU'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_register_viewer = {
+               'MIME_type' : 'MIME',
+               'with_file_type' : 'FTYP',
+       }
+
+       def register_viewer(self, _object, _attributes={}, **_arguments):
+               """register viewer: Registers an application as a \95specialÕ viewer for this MIME type. The application will be launched with ViewDoc events
+               Required argument: Application sig
+               Keyword argument MIME_type: MIME type viewer is registering for
+               Keyword argument with_file_type: Mac file type for the downloaded files
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: TRUE if registration has been successful
+               """
+               _code = 'WWW!'
+               _subcode = 'RGVW'
+
+               aetools.keysubst(_arguments, self._argmap_register_viewer)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_unregister_viewer = {
+               'MIME_type' : 'MIME',
+       }
+
+       def unregister_viewer(self, _object, _attributes={}, **_arguments):
+               """unregister viewer: Revert to the old way of handling this MIME type
+               Required argument: Application sig
+               Keyword argument MIME_type: MIME type to be unregistered
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: TRUE if the event was successful
+               """
+               _code = 'WWW!'
+               _subcode = 'UNRV'
+
+               aetools.keysubst(_arguments, self._argmap_unregister_viewer)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_register_protocol = {
+               'for_protocol' : 'PROT',
+       }
+
+       def register_protocol(self, _object=None, _attributes={}, **_arguments):
+               """register protocol: Registers application as a \96handler\94 for this protocol with a given prefix. The handler will receive \96OpenURL\94, or if that fails, \96GetURL\94 event.
+               Required argument: Application sig
+               Keyword argument for_protocol: protocol prefix: \96finger:\94\96file\94,
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: TRUE if registration has been successful
+               """
+               _code = 'WWW!'
+               _subcode = 'RGPR'
+
+               aetools.keysubst(_arguments, self._argmap_register_protocol)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_unregister_protocol = {
+               'for_protocol' : 'PROT',
+       }
+
+       def unregister_protocol(self, _object=None, _attributes={}, **_arguments):
+               """unregister protocol: reverses the effects of \96register protocol\94
+               Required argument: Application sig. 
+               Keyword argument for_protocol: protocol prefix. If none, unregister for all protocols
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: TRUE if successful
+               """
+               _code = 'WWW!'
+               _subcode = 'UNRP'
+
+               aetools.keysubst(_arguments, self._argmap_unregister_protocol)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_register_window_close = {
+               'for_window' : 'WIND',
+       }
+
+       def register_window_close(self, _object=None, _attributes={}, **_arguments):
+               """register window close: Netscape will notify registered application when this window closes
+               Required argument: Application signature
+               Keyword argument for_window: window ID
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: true if successful
+               """
+               _code = 'WWW!'
+               _subcode = 'RGWC'
+
+               aetools.keysubst(_arguments, self._argmap_register_window_close)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_unregister_window_close = {
+               'for_window' : 'WIND',
+       }
+
+       def unregister_window_close(self, _object=None, _attributes={}, **_arguments):
+               """unregister window close: Undo for register window close
+               Required argument: Application signature
+               Keyword argument for_window: window ID
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: true if successful
+               """
+               _code = 'WWW!'
+               _subcode = 'UNRC'
+
+               aetools.keysubst(_arguments, self._argmap_unregister_window_close)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+}
+
+_propdeclarations = {
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/CodeWarrior/CodeWarrior_suite.py b/Mac/Lib/lib-scriptpackages/CodeWarrior/CodeWarrior_suite.py
new file mode 100644 (file)
index 0000000..01cb150
--- /dev/null
@@ -0,0 +1,687 @@
+"""Suite CodeWarrior suite: Terms for scripting the CodeWarrior IDE
+Level 0, version 0
+
+Generated from Macintosh HD:SWdev:CodeWarrior 6 MPTP:Metrowerks CodeWarrior:CodeWarrior IDE 4.1B9
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'CWIE'
+
+class CodeWarrior_suite_Events:
+
+       _argmap_add = {
+               'new' : 'kocl',
+               'with_data' : 'data',
+               'to_targets' : 'TTGT',
+               'to_group' : 'TGRP',
+       }
+
+       def add(self, _object, _attributes={}, **_arguments):
+               """add: add elements to a project or target
+               Required argument: an AE object reference
+               Keyword argument new: the class of the new element or elements to add
+               Keyword argument with_data: the initial data for the element or elements
+               Keyword argument to_targets: the targets to which the new element or elements will be added
+               Keyword argument to_group: the group to which the new element or elements will be added
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'ADDF'
+
+               aetools.keysubst(_arguments, self._argmap_add)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_export = {
+               '_in' : 'kfil',
+       }
+
+       def export(self, _no_object=None, _attributes={}, **_arguments):
+               """export: Export the project file as an XML file
+               Keyword argument _in: the XML file in which to export the project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'EXPT'
+
+               aetools.keysubst(_arguments, self._argmap_export)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def update(self, _no_object=None, _attributes={}, **_arguments):
+               """update: bring a project or target up to date
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'UP2D'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def check(self, _object=None, _attributes={}, **_arguments):
+               """check: check the syntax of a file in a project or target
+               Required argument: the file or files to be checked
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'CHEK'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def compile_file(self, _object=None, _attributes={}, **_arguments):
+               """compile file: compile a file in a project or target
+               Required argument: the file or files to be compiled
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'COMP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def disassemble_file(self, _object=None, _attributes={}, **_arguments):
+               """disassemble file: disassemble a file in a project or target
+               Required argument: the file or files to be disassembled
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'DASM'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def build(self, _no_object=None, _attributes={}, **_arguments):
+               """build: build a project or target (equivalent of the Make menu command)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'MAKE'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def remove_target_files(self, _object, _attributes={}, **_arguments):
+               """remove target files: remove files from a target
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'RMFL'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def remove_object_code(self, _no_object=None, _attributes={}, **_arguments):
+               """remove object code: remove object code from a project or target
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'RMOB'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def run_target(self, _no_object=None, _attributes={}, **_arguments):
+               """run target: run a project or target
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'RUN '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def touch_file(self, _object=None, _attributes={}, **_arguments):
+               """touch file: touch a file in a project or target for compilation
+               Required argument: the file or files to be touched
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'CWIE'
+               _subcode = 'TOCH'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class build_progress_document(aetools.ComponentItem):
+       """build progress document - a build progress document """
+       want = 'PRGS'
+class inherits(aetools.NProperty):
+       """inherits - all properties and elements of the given class are inherited by this class. """
+       which = 'c@#^'
+       want = 'docu'
+
+build_progress_documents = build_progress_document
+
+class catalog_document(aetools.ComponentItem):
+       """catalog document - a browser catalog document """
+       want = 'CTLG'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+catalog_documents = catalog_document
+
+class class_browser(aetools.ComponentItem):
+       """class browser - a class browser """
+       want = 'BROW'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+class_browsers = class_browser
+
+class class_hierarchy(aetools.ComponentItem):
+       """class hierarchy - a class hierarchy document """
+       want = 'HIER'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+class_hierarchies = class_hierarchy
+
+class editor_document(aetools.ComponentItem):
+       """editor document - an editor document """
+       want = 'EDIT'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+editor_documents = editor_document
+
+class file_compare_document(aetools.ComponentItem):
+       """file compare document - a file compare document """
+       want = 'COMP'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+file_compare_documents = file_compare_document
+
+class message_document(aetools.ComponentItem):
+       """message document - a message document """
+       want = 'MSSG'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+message_documents = message_document
+
+class project_document(aetools.ComponentItem):
+       """project document - a project document """
+       want = 'PRJD'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+class current_target(aetools.NProperty):
+       """current target - the current target """
+       which = 'CURT'
+       want = 'TRGT'
+#        element 'TRGT' as ['indx', 'name', 'test', 'rang']
+
+project_documents = project_document
+
+class project_inspector(aetools.ComponentItem):
+       """project inspector - the project inspector """
+       want = 'INSP'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+project_inspectors = project_inspector
+
+class single_class_browser(aetools.ComponentItem):
+       """single class browser - a single class browser """
+       want = '1BRW'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+single_class_browsers = single_class_browser
+
+class single_class_hierarchy(aetools.ComponentItem):
+       """single class hierarchy - a single class hierarchy document """
+       want = '1HIR'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+single_class_hierarchies = single_class_hierarchy
+
+class subtarget(aetools.ComponentItem):
+       """subtarget - a target that is prerequisite for another target """
+       want = 'SBTG'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+class target(aetools.NProperty):
+       """target - the target that is dependent on this subtarget """
+       which = 'TrgT'
+       want = 'TRGT'
+class link_against_output(aetools.NProperty):
+       """link against output - is the output of this subtarget linked into its dependent target? """
+       which = 'LNKO'
+       want = 'bool'
+
+subtargets = subtarget
+
+class symbol_browser(aetools.ComponentItem):
+       """symbol browser - a symbol browser """
+       want = 'SYMB'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+symbol_browsers = symbol_browser
+
+class target(aetools.ComponentItem):
+       """target - a target in a project """
+       want = 'TRGT'
+class name(aetools.NProperty):
+       """name -  """
+       which = 'pnam'
+       want = 'itxt'
+class index(aetools.NProperty):
+       """index - the number of the target """
+       which = 'pidx'
+       want = 'long'
+class project_document(aetools.NProperty):
+       """project document - the project document that contains this target """
+       which = 'PrjD'
+       want = 'PRJD'
+#        element 'SRCF' as ['indx', 'test', 'rang']
+#        element 'SBTG' as ['indx', 'test', 'rang']
+
+targets = target
+
+class target_file(aetools.ComponentItem):
+       """target file - a source or header file in a target """
+       want = 'SRCF'
+class id(aetools.NProperty):
+       """id - the unique ID number of the target file """
+       which = 'ID  '
+       want = 'long'
+class type(aetools.NProperty):
+       """type - the type of source file """
+       which = 'FTYP'
+       want = 'FTYP'
+# repeated property index the number of the target file
+class location(aetools.NProperty):
+       """location - the location of the target file on disk """
+       which = 'FILE'
+       want = 'fss '
+class path(aetools.NProperty):
+       """path - the path of the source file on disk """
+       which = 'Path'
+       want = 'itxt'
+class linked(aetools.NProperty):
+       """linked - is the source file in the link order of its target? """
+       which = 'LINK'
+       want = 'bool'
+class link_index(aetools.NProperty):
+       """link index - the index of the source file in its targetÕs link order (-1 if source file is not in link order) """
+       which = 'LIDX'
+       want = 'long'
+class modified_date(aetools.NProperty):
+       """modified date - the date and time this source file was last modified """
+       which = 'MODD'
+       want = 'ldt '
+class compiled_date(aetools.NProperty):
+       """compiled date - the date and this source file was last compiled """
+       which = 'CMPD'
+       want = 'ldt '
+class code_size(aetools.NProperty):
+       """code size - the size of the code (in bytes) produced by compiling this source file """
+       which = 'CSZE'
+       want = 'long'
+class data_size(aetools.NProperty):
+       """data size - the size of the date (in bytes) produced by compiling this source file """
+       which = 'DSZE'
+       want = 'long'
+class debug(aetools.NProperty):
+       """debug - is debugging information generated for this source file? """
+       which = 'DBUG'
+       want = 'bool'
+class weak_link(aetools.NProperty):
+       """weak link - is this shared library linked weakly? """
+       which = 'WEAK'
+       want = 'bool'
+class init_before(aetools.NProperty):
+       """init before - is the \95initialize beforeÕ flag set for this shared library? """
+       which = 'INIT'
+       want = 'bool'
+class merge_output(aetools.NProperty):
+       """merge output - is this shared library merged into another code fragment? """
+       which = 'MRGE'
+       want = 'bool'
+class prerequisites(aetools.NProperty):
+       """prerequisites - the source files needed to build this source file """
+       which = 'PRER'
+       want = 'list'
+class dependents(aetools.NProperty):
+       """dependents - the source files that need this source file in order to build """
+       which = 'DPND'
+       want = 'list'
+
+target_files = target_file
+
+class text_document(aetools.ComponentItem):
+       """text document - a document that contains text """
+       want = 'TXTD'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+class modified(aetools.NProperty):
+       """modified - Has the document been modified since the last save? """
+       which = 'imod'
+       want = 'bool'
+class selection(aetools.NProperty):
+       """selection - the selection visible to the user """
+       which = 'sele'
+       want = 'csel'
+#        element 'cha ' as ['indx', 'rele', 'rang', 'test']
+#        element 'cins' as ['rele']
+#        element 'clin' as ['indx', 'rang', 'rele']
+#        element 'ctxt' as ['rang']
+
+text_documents = text_document
+
+class ToolServer_worksheet(aetools.ComponentItem):
+       """ToolServer worksheet - a ToolServer worksheet """
+       want = 'TOOL'
+# repeated property inherits all properties and elements of the given class are inherited by this class.
+
+ToolServer_worksheets = ToolServer_worksheet
+build_progress_document._propdict = {
+       'inherits' : inherits,
+}
+build_progress_document._elemdict = {
+}
+catalog_document._propdict = {
+       'inherits' : inherits,
+}
+catalog_document._elemdict = {
+}
+class_browser._propdict = {
+       'inherits' : inherits,
+}
+class_browser._elemdict = {
+}
+class_hierarchy._propdict = {
+       'inherits' : inherits,
+}
+class_hierarchy._elemdict = {
+}
+editor_document._propdict = {
+       'inherits' : inherits,
+}
+editor_document._elemdict = {
+}
+file_compare_document._propdict = {
+       'inherits' : inherits,
+}
+file_compare_document._elemdict = {
+}
+message_document._propdict = {
+       'inherits' : inherits,
+}
+message_document._elemdict = {
+}
+project_document._propdict = {
+       'inherits' : inherits,
+       'current_target' : current_target,
+}
+project_document._elemdict = {
+       'target' : target,
+}
+project_inspector._propdict = {
+       'inherits' : inherits,
+}
+project_inspector._elemdict = {
+}
+single_class_browser._propdict = {
+       'inherits' : inherits,
+}
+single_class_browser._elemdict = {
+}
+single_class_hierarchy._propdict = {
+       'inherits' : inherits,
+}
+single_class_hierarchy._elemdict = {
+}
+subtarget._propdict = {
+       'inherits' : inherits,
+       'target' : target,
+       'link_against_output' : link_against_output,
+}
+subtarget._elemdict = {
+}
+symbol_browser._propdict = {
+       'inherits' : inherits,
+}
+symbol_browser._elemdict = {
+}
+target._propdict = {
+       'name' : name,
+       'index' : index,
+       'project_document' : project_document,
+}
+target._elemdict = {
+       'target_file' : target_file,
+       'subtarget' : subtarget,
+}
+target_file._propdict = {
+       'id' : id,
+       'type' : type,
+       'index' : index,
+       'location' : location,
+       'path' : path,
+       'linked' : linked,
+       'link_index' : link_index,
+       'modified_date' : modified_date,
+       'compiled_date' : compiled_date,
+       'code_size' : code_size,
+       'data_size' : data_size,
+       'debug' : debug,
+       'weak_link' : weak_link,
+       'init_before' : init_before,
+       'merge_output' : merge_output,
+       'prerequisites' : prerequisites,
+       'dependents' : dependents,
+}
+target_file._elemdict = {
+}
+import Standard_Suite
+text_document._propdict = {
+       'inherits' : inherits,
+       'modified' : modified,
+       'selection' : selection,
+}
+text_document._elemdict = {
+       'character' : Standard_Suite.character,
+       'insertion_point' : Standard_Suite.insertion_point,
+       'line' : Standard_Suite.line,
+       'text' : Standard_Suite.text,
+}
+ToolServer_worksheet._propdict = {
+       'inherits' : inherits,
+}
+ToolServer_worksheet._elemdict = {
+}
+_Enum_Inte = {
+       'never_interact' : 'eNvr',      # never allow user interactions
+       'interact_with_self' : 'eInS',  # allow user interaction only when an AppleEvent is sent from within CodeWarrior
+       'interact_with_local' : 'eInL', # allow user interaction when AppleEvents are sent from applications on the same machine (default)
+       'interact_with_all' : 'eInA',   # allow user interaction from both local and remote AppleEvents
+}
+
+_Enum_DKND = {
+       'project' : 'PRJD',     # a project document
+       'editor_document' : 'EDIT',     # an editor document
+       'message' : 'MSSG',     # a message document
+       'file_compare' : 'COMP',        # a file compare document
+       'catalog_document' : 'CTLG',    # a browser catalog
+       'class_browser' : 'BROW',       # a class browser document
+       'single_class_browser' : '1BRW',        # a single class browser document
+       'symbol_browser' : 'SYMB',      # a symbol browser document
+       'class_hierarchy' : 'HIER',     # a class hierarchy document
+       'single_class_hierarchy' : '1HIR',      # a single class hierarchy document
+       'project_inspector' : 'INSP',   # a project inspector
+       'ToolServer_worksheet' : 'TOOL',        # the ToolServer worksheet
+       'build_progress_document' : 'PRGS',     # the build progress window
+}
+
+_Enum_FTYP = {
+       'library_file' : 'LIBF',        # a library file
+       'project_file' : 'PRJF',        # a project file
+       'resource_file' : 'RESF',       # a resource file
+       'text_file' : 'TXTF',   # a text file
+       'unknown_file' : 'UNKN',        # unknown file type
+}
+
+_Enum_PERM = {
+       'read_write' : 'RdWr',  # the file is open with read/write permission
+       'read_only' : 'Read',   # the file is open with read/only permission
+       'checked_out_read_write' : 'CkRW',      # the file is checked out with read/write permission
+       'checked_out_read_only' : 'CkRO',       # the file is checked out with read/only permission
+       'checked_out_read_modify' : 'CkRM',     # the file is checked out with read/modify permission
+       'locked' : 'Lock',      # the file is locked on disk
+       'none' : 'LNNO',        # the file is new
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'TOOL' : ToolServer_worksheet,
+       '1HIR' : single_class_hierarchy,
+       'SRCF' : target_file,
+       'TXTD' : text_document,
+       'TRGT' : target,
+       'HIER' : class_hierarchy,
+       'CTLG' : catalog_document,
+       '1BRW' : single_class_browser,
+       'MSSG' : message_document,
+       'INSP' : project_inspector,
+       'BROW' : class_browser,
+       'COMP' : file_compare_document,
+       'EDIT' : editor_document,
+       'PRJD' : project_document,
+       'SBTG' : subtarget,
+       'SYMB' : symbol_browser,
+       'PRGS' : build_progress_document,
+}
+
+_propdeclarations = {
+       'PRER' : prerequisites,
+       'DBUG' : debug,
+       'CSZE' : code_size,
+       'Path' : path,
+       'pnam' : name,
+       'TrgT' : target,
+       'DSZE' : data_size,
+       'FTYP' : type,
+       'MODD' : modified_date,
+       'INIT' : init_before,
+       'sele' : selection,
+       'imod' : modified,
+       'DPND' : dependents,
+       'FILE' : location,
+       'LIDX' : link_index,
+       'LINK' : linked,
+       'ID  ' : id,
+       'c@#^' : inherits,
+       'pidx' : index,
+       'LNKO' : link_against_output,
+       'WEAK' : weak_link,
+       'MRGE' : merge_output,
+       'CMPD' : compiled_date,
+       'PrjD' : project_document,
+       'CURT' : current_target,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'PERM' : _Enum_PERM,
+       'FTYP' : _Enum_FTYP,
+       'DKND' : _Enum_DKND,
+       'Inte' : _Enum_Inte,
+}
diff --git a/Mac/Lib/lib-scriptpackages/CodeWarrior/Metrowerks_Shell_Suite.py b/Mac/Lib/lib-scriptpackages/CodeWarrior/Metrowerks_Shell_Suite.py
new file mode 100644 (file)
index 0000000..694f599
--- /dev/null
@@ -0,0 +1,2355 @@
+"""Suite Metrowerks Shell Suite: Events supported by the Metrowerks Project Shell
+Level 1, version 1
+
+Generated from Macintosh HD:SWdev:CodeWarrior 6 MPTP:Metrowerks CodeWarrior:CodeWarrior IDE 4.1B9
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'MMPR'
+
+class Metrowerks_Shell_Suite_Events:
+
+       _argmap_Add_Files = {
+               'To_Segment' : 'Segm',
+       }
+
+       def Add_Files(self, _object, _attributes={}, **_arguments):
+               """Add Files: Add the specified file(s) to the current project
+               Required argument: List of files to add
+               Keyword argument To_Segment: Segment number into which to add the file(s)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Error code for each file added
+               """
+               _code = 'MMPR'
+               _subcode = 'AddF'
+
+               aetools.keysubst(_arguments, self._argmap_Add_Files)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Check_Syntax = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Check_Syntax(self, _object, _attributes={}, **_arguments):
+               """Check Syntax: Check the syntax of the specified file(s)
+               Required argument: List of files to check the syntax of
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors for each file whose syntax was checked
+               """
+               _code = 'MMPR'
+               _subcode = 'Chek'
+
+               aetools.keysubst(_arguments, self._argmap_Check_Syntax)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Close_Project(self, _no_object=None, _attributes={}, **_arguments):
+               """Close Project: Close the current project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'ClsP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Close_Window = {
+               'Saving' : 'savo',
+       }
+
+       def Close_Window(self, _object, _attributes={}, **_arguments):
+               """Close Window: Close the windows showing the specified files
+               Required argument: The files to close
+               Keyword argument Saving: Whether to save changes to each file before closing its window
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'ClsW'
+
+               aetools.keysubst(_arguments, self._argmap_Close_Window)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'savo', _Enum_savo)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Compile = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Compile(self, _object, _attributes={}, **_arguments):
+               """Compile: Compile the specified file(s)
+               Required argument: List of files to compile
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors for each file compiled
+               """
+               _code = 'MMPR'
+               _subcode = 'Comp'
+
+               aetools.keysubst(_arguments, self._argmap_Compile)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Create_Project = {
+               'from_stationery' : 'Tmpl',
+       }
+
+       def Create_Project(self, _object, _attributes={}, **_arguments):
+               """Create Project: Create a new project file
+               Required argument: New project file specifier
+               Keyword argument from_stationery: undocumented, typecode 'alis'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'NewP'
+
+               aetools.keysubst(_arguments, self._argmap_Create_Project)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Definition(self, _object, _attributes={}, **_arguments):
+               """Get Definition: Returns the location(s) of a globally scoped function or data object.
+               Required argument: undocumented, typecode 'TEXT'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'FDef'
+               """
+               _code = 'MMPR'
+               _subcode = 'GDef'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Open_Documents(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Open Documents: Returns the list of open documents
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The list of documents
+               """
+               _code = 'MMPR'
+               _subcode = 'GDoc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Get_Preferences = {
+               'of' : 'PRec',
+               'from_panel' : 'PNam',
+       }
+
+       def Get_Preferences(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Preferences: Get the preferences for the current project
+               Keyword argument of: Names of requested preferences
+               Keyword argument from_panel: Name of the preference panel
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The requested preferences
+               """
+               _code = 'MMPR'
+               _subcode = 'Gref'
+
+               aetools.keysubst(_arguments, self._argmap_Get_Preferences)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Get_Project_File = {
+               'Segment' : 'Segm',
+       }
+
+       def Get_Project_File(self, _object, _attributes={}, **_arguments):
+               """Get Project File: Returns a description of a file in the project window.
+               Required argument: The index of the file within its segment.
+               Keyword argument Segment: The segment containing the file.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'SrcF'
+               """
+               _code = 'MMPR'
+               _subcode = 'GFil'
+
+               aetools.keysubst(_arguments, self._argmap_Get_Project_File)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Project_Specifier(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Project Specifier: Return the File Specifier for the current project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: File Specifier for the current project
+               """
+               _code = 'MMPR'
+               _subcode = 'GetP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Segments(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Segments: Returns a description of each segment in the project.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'Seg '
+               """
+               _code = 'MMPR'
+               _subcode = 'GSeg'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Goto_Function(self, _object, _attributes={}, **_arguments):
+               """Goto Function: Goto Specified Function Name
+               Required argument: undocumented, typecode 'TEXT'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'GoFn'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Goto_Line(self, _object, _attributes={}, **_arguments):
+               """Goto Line: Goto Specified Line Number
+               Required argument: The requested source file line number
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'GoLn'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Is_In_Project(self, _object, _attributes={}, **_arguments):
+               """Is In Project: Whether or not the specified file(s) is in the current project
+               Required argument: List of files to check for project membership
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Result code for each file
+               """
+               _code = 'MMPR'
+               _subcode = 'FInP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Make_Project = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Make_Project(self, _no_object=None, _attributes={}, **_arguments):
+               """Make Project: Make the current project
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors that occurred while making the project
+               """
+               _code = 'MMPR'
+               _subcode = 'Make'
+
+               aetools.keysubst(_arguments, self._argmap_Make_Project)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Precompile = {
+               'Saving_As' : 'Targ',
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Precompile(self, _object, _attributes={}, **_arguments):
+               """Precompile: Precompile the specified file to the specified destination file
+               Required argument: File to precompile
+               Keyword argument Saving_As: Destination file for precompiled header
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors for the precompiled file
+               """
+               _code = 'MMPR'
+               _subcode = 'PreC'
+
+               aetools.keysubst(_arguments, self._argmap_Precompile)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Preprocess = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Preprocess(self, _object, _attributes={}, **_arguments):
+               """Preprocess: Preprocesses the specified file(s)
+               Required argument: undocumented, typecode 'alis'
+               Keyword argument ExternalEditor: undocumented, typecode 'bool'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors for each preprocessed file
+               """
+               _code = 'MMPR'
+               _subcode = 'PreP'
+
+               aetools.keysubst(_arguments, self._argmap_Preprocess)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Remove_Binaries(self, _no_object=None, _attributes={}, **_arguments):
+               """Remove Binaries: Remove the binary object code from the current project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'RemB'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Remove_Files(self, _object, _attributes={}, **_arguments):
+               """Remove Files: Remove the specified file(s) from the current project
+               Required argument: List of files to remove
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Error code for each file removed
+               """
+               _code = 'MMPR'
+               _subcode = 'RemF'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Reset_File_Paths(self, _no_object=None, _attributes={}, **_arguments):
+               """Reset File Paths: Resets access paths for all files belonging to open project.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'ReFP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Run_Project = {
+               'ExternalEditor' : 'Errs',
+               'SourceDebugger' : 'DeBg',
+       }
+
+       def Run_Project(self, _no_object=None, _attributes={}, **_arguments):
+               """Run Project: Run the current project
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument SourceDebugger: Run the application under the control of the source-level debugger
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors that occurred when running the project
+               """
+               _code = 'MMPR'
+               _subcode = 'RunP'
+
+               aetools.keysubst(_arguments, self._argmap_Run_Project)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Save_Error_Window_As(self, _object, _attributes={}, **_arguments):
+               """Save Error Window As: Saves the Errors & Warnings window as a text file
+               Required argument: Destination file for Save Message Window As
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'SvMs'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Set_Current_Target(self, _object=None, _attributes={}, **_arguments):
+               """Set Current Target: Set the current target of a project
+               Required argument: Name of target
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'STrg'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Set_Default_Project(self, _object, _attributes={}, **_arguments):
+               """Set Default Project: Set the default project
+               Required argument: Name of project
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'SDfP'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Set_Modification_Date = {
+               'to' : 'MDat',
+       }
+
+       def Set_Modification_Date(self, _object, _attributes={}, **_arguments):
+               """Set Modification Date: Changes the internal modification date of the specified file(s)
+               Required argument: List of files
+               Keyword argument to: undocumented, typecode 'ldt '
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Error code for each modified file
+               """
+               _code = 'MMPR'
+               _subcode = 'SMod'
+
+               aetools.keysubst(_arguments, self._argmap_Set_Modification_Date)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Set_Preferences = {
+               'of_panel' : 'PNam',
+               'to' : 'PRec',
+       }
+
+       def Set_Preferences(self, _no_object=None, _attributes={}, **_arguments):
+               """Set Preferences: Set the preferences for the current project
+               Keyword argument of_panel: Name of the preference panel
+               Keyword argument to: Preferences settings
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'Pref'
+
+               aetools.keysubst(_arguments, self._argmap_Set_Preferences)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Set_Project_File = {
+               'to' : 'SrcS',
+       }
+
+       def Set_Project_File(self, _object, _attributes={}, **_arguments):
+               """Set Project File: Changes the settings for a given file in the project.
+               Required argument: The name of the file
+               Keyword argument to: The new settings for the file
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'SFil'
+
+               aetools.keysubst(_arguments, self._argmap_Set_Project_File)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Set_Segment = {
+               'to' : 'Segm',
+       }
+
+       def Set_Segment(self, _object, _attributes={}, **_arguments):
+               """Set Segment: Changes the name and attributes of a segment.
+               Required argument: The segment to change
+               Keyword argument to: The new name and attributes for the segment.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'SSeg'
+
+               aetools.keysubst(_arguments, self._argmap_Set_Segment)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Touch(self, _object, _attributes={}, **_arguments):
+               """Touch: Force recompilation of the specified file(s)
+               Required argument: List of files to compile
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Error code for each file touched
+               """
+               _code = 'MMPR'
+               _subcode = 'Toch'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Update_Project = {
+               'ExternalEditor' : 'Errs',
+       }
+
+       def Update_Project(self, _no_object=None, _attributes={}, **_arguments):
+               """Update Project: Update the current project
+               Keyword argument ExternalEditor: Should the contents of the message window be returned to the caller?
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Errors that occurred while updating the project
+               """
+               _code = 'MMPR'
+               _subcode = 'UpdP'
+
+               aetools.keysubst(_arguments, self._argmap_Update_Project)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Open_browser(self, _object, _attributes={}, **_arguments):
+               """Open browser: Display a class, member function, or data member object in a single class browser window
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MMPR'
+               _subcode = 'Brow'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_nonsimple_classes(self, _no_object=None, _attributes={}, **_arguments):
+               """Get nonsimple classes: Returns an alphabetical list of classes with member functions, bases classes, or subclasses
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'list'
+               """
+               _code = 'MMPR'
+               _subcode = 'NsCl'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_member_function_names(self, _object, _attributes={}, **_arguments):
+               """Get member function names: Returns a list containing the names of all the member functions of a class object
+               Required argument: must be a class object
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'list'
+               """
+               _code = 'MMPR'
+               _subcode = 'MbFN'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class Access_Paths(aetools.ComponentItem):
+       """Access Paths - Contains the definitions of a projectÕs access (search) paths. """
+       want = 'PATH'
+class User_Paths(aetools.NProperty):
+       """User Paths - To add an access path for the source files. """
+       which = 'PA01'
+       want = 'PInf'
+class System_Paths(aetools.NProperty):
+       """System Paths - To add an access path for the include files. (Not supported in Pascal) """
+       which = 'PA03'
+       want = 'PInf'
+class Always_Full_Search(aetools.NProperty):
+       """Always Full Search - To force the compiler to search for system includes like it searches for user includes. """
+       which = 'PA02'
+       want = 'bool'
+class Convert_Paths(aetools.NProperty):
+       """Convert Paths - Enables conversion of DOS & Unix-style relative paths when searching for files. """
+       which = 'PA04'
+       want = 'bool'
+
+class Browser_Coloring(aetools.ComponentItem):
+       """Browser Coloring - Colors for Browser symbols. """
+       want = 'BRKW'
+class Browser_Keywords(aetools.NProperty):
+       """Browser Keywords - Mark Browser symbols with color. """
+       which = 'BW00'
+       want = 'bool'
+class Classes_Color(aetools.NProperty):
+       """Classes Color - The color for classes. """
+       which = 'BW01'
+       want = 'cRGB'
+class Constants_Color(aetools.NProperty):
+       """Constants Color - The color for constants. """
+       which = 'BW02'
+       want = 'cRGB'
+class Enums_Color(aetools.NProperty):
+       """Enums Color - The color for enums. """
+       which = 'BW03'
+       want = 'cRGB'
+class Functions_Color(aetools.NProperty):
+       """Functions Color - Set color for functions. """
+       which = 'BW04'
+       want = 'cRGB'
+class Globals_Color(aetools.NProperty):
+       """Globals Color - The color for globals """
+       which = 'BW05'
+       want = 'cRGB'
+class Macros_Color(aetools.NProperty):
+       """Macros Color - The color for macros. """
+       which = 'BW06'
+       want = 'cRGB'
+class Templates_Color(aetools.NProperty):
+       """Templates Color - Set color for templates. """
+       which = 'BW07'
+       want = 'cRGB'
+class Typedefs_Color(aetools.NProperty):
+       """Typedefs Color - The color for typedefs. """
+       which = 'BW08'
+       want = 'cRGB'
+class Template_Commands_in_Menu(aetools.NProperty):
+       """Template Commands in Menu - Include template commands in context menus """
+       which = 'BW10'
+       want = 'bool'
+
+class Build_Extras(aetools.ComponentItem):
+       """Build Extras -  """
+       want = 'LXTR'
+class Browser_Active(aetools.NProperty):
+       """Browser Active - Allow the collection of browser information. """
+       which = 'EX09'
+       want = 'bool'
+class Modification_Date_Caching(aetools.NProperty):
+       """Modification Date Caching -  """
+       which = 'EX04'
+       want = 'bool'
+class Dump_Browser_Info(aetools.NProperty):
+       """Dump Browser Info -  """
+       which = 'EX30'
+       want = 'bool'
+class Cache_Subproject_Data(aetools.NProperty):
+       """Cache Subproject Data -  """
+       which = 'EX31'
+       want = 'bool'
+
+class Build_Settings(aetools.ComponentItem):
+       """Build Settings - Build Settings preferences. """
+       want = 'BSTG'
+class Completion_Sound(aetools.NProperty):
+       """Completion Sound - Play a sound when finished a Bring Up To Date or Make command. """
+       which = 'BX01'
+       want = 'bool'
+class Success_Sound(aetools.NProperty):
+       """Success Sound - The sound CodeWarrior plays when it successfully finishes a Bring Up To Date or Make command. """
+       which = 'BX02'
+       want = 'TEXT'
+class Failure_Sound(aetools.NProperty):
+       """Failure Sound - The sound CodeWarrior plays when it cannot finish a Bring Up To Date or Make command. """
+       which = 'BX03'
+       want = 'TEXT'
+class Save_Before_Building(aetools.NProperty):
+       """Save Before Building - Save open editor files before build operations """
+       which = 'BX07'
+       want = 'bool'
+class Build_Before_Running(aetools.NProperty):
+       """Build Before Running - Build the target before running. """
+       which = 'BX04'
+       want = 'BXbr'
+class Include_Cache_Size(aetools.NProperty):
+       """Include Cache Size - Include file cache size. """
+       which = 'BX05'
+       want = 'long'
+class Compiler_Thread_Stack_Size(aetools.NProperty):
+       """Compiler Thread Stack Size - Compiler Thread Stack Size """
+       which = 'BX06'
+       want = 'long'
+
+class Custom_Keywords(aetools.ComponentItem):
+       """Custom Keywords -  """
+       want = 'CUKW'
+class Custom_Color_1(aetools.NProperty):
+       """Custom Color 1 - The color for the first set of custom keywords. """
+       which = 'GH05'
+       want = 'cRGB'
+class Custom_Color_2(aetools.NProperty):
+       """Custom Color 2 - The color for the second set custom keywords. """
+       which = 'GH06'
+       want = 'cRGB'
+class Custom_Color_3(aetools.NProperty):
+       """Custom Color 3 - The color for the third set of custom keywords. """
+       which = 'GH07'
+       want = 'cRGB'
+class Custom_Color_4(aetools.NProperty):
+       """Custom Color 4 - The color for the fourth set of custom keywords. """
+       which = 'GH08'
+       want = 'cRGB'
+
+class Debugger_Display(aetools.ComponentItem):
+       """Debugger Display - Debugger Display preferences """
+       want = 'DbDS'
+class Show_Variable_Types(aetools.NProperty):
+       """Show Variable Types - Show variable types by default. """
+       which = 'Db01'
+       want = 'bool'
+class Show_Locals(aetools.NProperty):
+       """Show Locals - Show locals by default """
+       which = 'Db09'
+       want = 'bool'
+class Sort_By_Method(aetools.NProperty):
+       """Sort By Method - Sort functions by method. """
+       which = 'Db02'
+       want = 'bool'
+class Use_RTTI(aetools.NProperty):
+       """Use RTTI - Enable RunTime Type Information. """
+       which = 'Db03'
+       want = 'bool'
+class Threads_in_Window(aetools.NProperty):
+       """Threads in Window - Show threads in separate windows. """
+       which = 'Db04'
+       want = 'bool'
+class Variable_Hints(aetools.NProperty):
+       """Variable Hints - Show variable hints. """
+       which = 'Db05'
+       want = 'bool'
+class Watchpoint_Hilite(aetools.NProperty):
+       """Watchpoint Hilite - Watchpoint hilite color. """
+       which = 'Db06'
+       want = 'cRGB'
+class Variable_Changed_Hilite(aetools.NProperty):
+       """Variable Changed Hilite - Variable changed hilite color. """
+       which = 'Db07'
+       want = 'cRGB'
+class Default_Array_Size(aetools.NProperty):
+       """Default Array Size - Controls whether CodeWarrior uses its own integrated editor or an external application for editing text files. """
+       which = 'Db08'
+       want = 'shor'
+class Show_As_Decimal(aetools.NProperty):
+       """Show As Decimal - Show variable values as decimal by default """
+       which = 'Db10'
+       want = 'bool'
+
+class Debugger_Global(aetools.ComponentItem):
+       """Debugger Global - Debugger Global preferences """
+       want = 'DbGL'
+class Cache_Edited_Files(aetools.NProperty):
+       """Cache Edited Files - Cache edit files between debug sessions """
+       which = 'Dg12'
+       want = 'bool'
+class File_Cache_Duration(aetools.NProperty):
+       """File Cache Duration - Duration to keep files in cache (in days) """
+       which = 'Dg13'
+       want = 'shor'
+class Ignore_Mod_Dates(aetools.NProperty):
+       """Ignore Mod Dates - Ignore modification dates of files. """
+       which = 'Dg01'
+       want = 'bool'
+class Open_All_Classes(aetools.NProperty):
+       """Open All Classes - Open all Java class files. """
+       which = 'Dg02'
+       want = 'bool'
+class Launch_Apps_on_Open(aetools.NProperty):
+       """Launch Apps on Open - Launch applications on the opening of sym files. """
+       which = 'Dg03'
+       want = 'bool'
+class Confirm_Kill(aetools.NProperty):
+       """Confirm Kill - Confirm the \95killingÕ of the process. """
+       which = 'Dg04'
+       want = 'bool'
+class Stop_at_Main(aetools.NProperty):
+       """Stop at Main - Stop to debug on the main() function. """
+       which = 'Dg05'
+       want = 'bool'
+class Select_Stack_Crawl(aetools.NProperty):
+       """Select Stack Crawl - Select the stack crawl. """
+       which = 'Dg06'
+       want = 'bool'
+class Dont_Step_in_Runtime(aetools.NProperty):
+       """Dont Step in Runtime - DonÕt step into runtime code when debugging. """
+       which = 'Dg07'
+       want = 'bool'
+class Auto_Target_Libraries(aetools.NProperty):
+       """Auto Target Libraries - Automatically target libraries when debugging """
+       which = 'Dg11'
+       want = 'bool'
+
+class Debugger_Target(aetools.ComponentItem):
+       """Debugger Target - Debugger Target preferences """
+       want = 'DbTG'
+class Log_System_Messages(aetools.NProperty):
+       """Log System Messages - Log all system messages while debugging. """
+       which = 'Dt02'
+       want = 'bool'
+class Relocated_Executable_Path(aetools.NProperty):
+       """Relocated Executable Path - Path to location of relocated libraries, code resources or remote debugging folder """
+       which = 'Dt10'
+       want = 'RlPt'
+class Update_Data_While_Running(aetools.NProperty):
+       """Update Data While Running - Should pause to update data while running """
+       which = 'Dt08'
+       want = 'bool'
+class Data_Update_Interval(aetools.NProperty):
+       """Data Update Interval - How often to update the data while running (in seconds) """
+       which = 'Dt09'
+       want = 'long'
+# repeated property Auto_Target_Libraries Automatically target libraries when debugging
+class Stop_at_temp_breakpoint(aetools.NProperty):
+       """Stop at temp breakpoint - Stop at a temp breakpoint on program launch. Set breakpoint type in Temp Breakpoint Type AppleEvent. """
+       which = 'Dt13'
+       want = 'bool'
+class Temp_breakpoint_names(aetools.NProperty):
+       """Temp breakpoint names - Comma separated list of names to attempt to stop at on program launch. First symbol to resolve in list is the temp BP that will be set. """
+       which = 'Dt14'
+       want = 'ctxt'
+class Cache_symbolics(aetools.NProperty):
+       """Cache symbolics - Cache symbolics between runs when executable doesnÕt change, else release symbolics files after killing process. """
+       which = 'Dt15'
+       want = 'bool'
+class Temp_Breakpoint_Type(aetools.NProperty):
+       """Temp Breakpoint Type - Type of temp breakpoint to set on program launch. """
+       which = 'Dt16'
+       want = 'TmpB'
+
+class Debugger_Windowing(aetools.ComponentItem):
+       """Debugger Windowing -  """
+       want = 'DbWN'
+class Debugging_Start_Action(aetools.NProperty):
+       """Debugging Start Action - What action to take when debug session starts """
+       which = 'Dw01'
+       want = 'DbSA'
+class Do_Nothing_To_Projects(aetools.NProperty):
+       """Do Nothing To Projects - Suppress debugging start action for project windows """
+       which = 'Dw02'
+       want = 'bool'
+
+class Editor(aetools.ComponentItem):
+       """Editor -  """
+       want = 'EDTR'
+class Flash_Delay(aetools.NProperty):
+       """Flash Delay - The amount of time, in sixtieths of a second, the editor highlights a matching bracket. """
+       which = 'ED01'
+       want = 'long'
+class Dynamic_Scroll(aetools.NProperty):
+       """Dynamic Scroll - Display a windowÕs contents as you move the scroll box. """
+       which = 'ED02'
+       want = 'bool'
+class Balance(aetools.NProperty):
+       """Balance - Flash the matching opening bracket when you type a closing bracket. """
+       which = 'ED03'
+       want = 'bool'
+class Use_Drag__26__Drop_Editing(aetools.NProperty):
+       """Use Drag & Drop Editing - Use Drag & Drop text editing. """
+       which = 'ED04'
+       want = 'bool'
+class Sort_Function_Popup(aetools.NProperty):
+       """Sort Function Popup -  """
+       which = 'ED06'
+       want = 'bool'
+class Use_Multiple_Undo(aetools.NProperty):
+       """Use Multiple Undo -  """
+       which = 'ED07'
+       want = 'bool'
+class Relaxed_C_Popup_Parsing(aetools.NProperty):
+       """Relaxed C Popup Parsing - Relax the function parser for C source files """
+       which = 'ED15'
+       want = 'bool'
+class Left_Margin_Line_Select(aetools.NProperty):
+       """Left Margin Line Select - Clicking in the left margin selects lines """
+       which = 'ED16'
+       want = 'bool'
+class Default_Text_File_Format(aetools.NProperty):
+       """Default Text File Format - Default text file format (i.e. which type of line endings to use) """
+       which = 'ED17'
+       want = 'TxtF'
+class Remember_Font(aetools.NProperty):
+       """Remember Font - Display a source file with its own font settings. """
+       which = 'ED08'
+       want = 'bool'
+class Remember_Selection(aetools.NProperty):
+       """Remember Selection - Restore the previous selection in a file when you open it. """
+       which = 'ED09'
+       want = 'bool'
+class Remember_Window(aetools.NProperty):
+       """Remember Window - Restore the last size and position for a source file window when you open it. """
+       which = 'ED10'
+       want = 'bool'
+class Main_Text_Color(aetools.NProperty):
+       """Main Text Color - Main, default, color for text. """
+       which = 'ED12'
+       want = 'cRGB'
+class Background_Color(aetools.NProperty):
+       """Background Color - Color of the background of editor windows. """
+       which = 'ED13'
+       want = 'cRGB'
+class Context_Popup_Delay(aetools.NProperty):
+       """Context Popup Delay - The amount of time, in sixtieths of a second, before the context popup is displayed if you click and hold on a browser symbol. """
+       which = 'ED14'
+       want = 'long'
+
+class Environment_Variable(aetools.ComponentItem):
+       """Environment Variable - Environment variable for host OS """
+       want = 'EnvV'
+class name(aetools.NProperty):
+       """name -  """
+       which = 'pnam'
+       want = 'TEXT'
+class value(aetools.NProperty):
+       """value - Value of the environment variable """
+       which = 'Valu'
+       want = 'TEXT'
+
+class Error_Information(aetools.ComponentItem):
+       """Error Information - Describes a single error or warning from the compiler or the linker. """
+       want = 'ErrM'
+class messageKind(aetools.NProperty):
+       """messageKind - The type of error or warning. """
+       which = 'ErrT'
+       want = 'ErrT'
+class message(aetools.NProperty):
+       """message - The error or warning message. """
+       which = 'ErrS'
+       want = 'TEXT'
+class disk_file(aetools.NProperty):
+       """disk file - The file where the error occurred.  May not be returned for certain kinds of errors (eg, link errors). """
+       which = 'file'
+       want = 'fss '
+class lineNumber(aetools.NProperty):
+       """lineNumber - The line in the file where the error occurred.  May not be returned for certain kinds of errors (eg, link errors). """
+       which = 'ErrL'
+       want = 'long'
+
+class Extras(aetools.ComponentItem):
+       """Extras -  """
+       want = 'GXTR'
+class Automatic_Toolbar_Help(aetools.NProperty):
+       """Automatic Toolbar Help - Automatically show balloon help in toolbar after delay """
+       which = 'EX19'
+       want = 'bool'
+class External_Reference(aetools.NProperty):
+       """External Reference - Which on-line function reference to use. """
+       which = 'EX08'
+       want = 'RefP'
+class Full_Screen_Zoom(aetools.NProperty):
+       """Full Screen Zoom - Zoom windows to the full screen width. """
+       which = 'EX07'
+       want = 'bool'
+class Recent_Editor_Count(aetools.NProperty):
+       """Recent Editor Count - Maximum number of editor documents to show in the \96Open Recent\94 menu """
+       which = 'EX16'
+       want = 'shor'
+class Recent_Project_Count(aetools.NProperty):
+       """Recent Project Count - Maximum number of project documents to show in the \96Open Recent\94 menu """
+       which = 'EX17'
+       want = 'shor'
+class Use_Editor_Extensions(aetools.NProperty):
+       """Use Editor Extensions - Controls the use of the Editor Extensions menu """
+       which = 'EX10'
+       want = 'bool'
+class Use_External_Editor(aetools.NProperty):
+       """Use External Editor - Controls whether CodeWarrior uses its own integrated editor or an external application for editing text files. """
+       which = 'EX11'
+       want = 'bool'
+class Use_Script_Menu(aetools.NProperty):
+       """Use Script Menu - Controls the use of the AppleScript menu """
+       which = 'EX12'
+       want = 'bool'
+class Use_ToolServer_Menu(aetools.NProperty):
+       """Use ToolServer Menu - Controls the use of the ToolServer menu """
+       which = 'EX18'
+       want = 'bool'
+
+class File_Mapping(aetools.ComponentItem):
+       """File Mapping -  """
+       want = 'FMap'
+class File_Type(aetools.NProperty):
+       """File Type -  """
+       which = 'PR04'
+       want = 'TEXT'
+class Extension(aetools.NProperty):
+       """Extension -  """
+       which = 'TA02'
+       want = 'TEXT'
+class Precompiled(aetools.NProperty):
+       """Precompiled -  """
+       which = 'TA03'
+       want = 'bool'
+class Resource_File(aetools.NProperty):
+       """Resource File -  """
+       which = 'TA04'
+       want = 'bool'
+class Launchable(aetools.NProperty):
+       """Launchable -  """
+       which = 'TA05'
+       want = 'bool'
+class Ignored_by_Make(aetools.NProperty):
+       """Ignored by Make -  """
+       which = 'TA06'
+       want = 'bool'
+class Compiler(aetools.NProperty):
+       """Compiler -  """
+       which = 'TA07'
+       want = 'TEXT'
+
+class File_Mappings(aetools.ComponentItem):
+       """File Mappings - Mappings of extensions & file types to compilers """
+       want = 'FLMP'
+class Mappings(aetools.NProperty):
+       """Mappings -  """
+       which = 'FMps'
+       want = 'FMap'
+
+class Font(aetools.ComponentItem):
+       """Font -  """
+       want = 'mFNT'
+class Auto_Indent(aetools.NProperty):
+       """Auto Indent - Indent new lines automatically. """
+       which = 'FN01'
+       want = 'bool'
+class Tab_Size(aetools.NProperty):
+       """Tab Size -  """
+       which = 'FN02'
+       want = 'shor'
+class Tab_Indents_Selection(aetools.NProperty):
+       """Tab Indents Selection - Tab indents selection when multiple lines are selected """
+       which = 'FN03'
+       want = 'bool'
+class Tab_Inserts_Spaces(aetools.NProperty):
+       """Tab Inserts Spaces - Insert spaces instead of tab character """
+       which = 'FN04'
+       want = 'bool'
+class Text_Font(aetools.NProperty):
+       """Text Font - The font used in editing windows. """
+       which = 'ptxf'
+       want = 'TEXT'
+class Text_Size(aetools.NProperty):
+       """Text Size - The size of the text in an editing window. """
+       which = 'ptps'
+       want = 'shor'
+
+class Function_Information(aetools.ComponentItem):
+       """Function Information - Describes the location of any function or global data definition within the current project. """
+       want = 'FDef'
+# repeated property disk_file The location on disk of the file containing the definition.
+# repeated property lineNumber The line number where the definition begins.
+
+class Global_Source_Trees(aetools.ComponentItem):
+       """Global Source Trees - Globally-defined source tree roots """
+       want = 'GSTs'
+class Source_Trees(aetools.NProperty):
+       """Source Trees - List of source tree roots """
+       which = 'ST01'
+       want = 'SrcT'
+
+class Path_Information(aetools.ComponentItem):
+       """Path Information - Contains all of the parameters that describe an access path. """
+       want = 'PInf'
+# repeated property name The actual path name.
+class format(aetools.NProperty):
+       """format - Format of the a """
+       which = 'Frmt'
+       want = 'PthF'
+class origin(aetools.NProperty):
+       """origin -  """
+       which = 'Orig'
+       want = 'PPrm'
+class root(aetools.NProperty):
+       """root - Name of the root of the relative path. Pre-defined values are \96Absolute\94\96Project\94\96CodeWarrior\94, and  \96System\94. Anything else is a user-defined root. """
+       which = 'Root'
+       want = 'TEXT'
+class recursive(aetools.NProperty):
+       """recursive - Will the path be searched recursively?  (Default is true) """
+       which = 'Recu'
+       want = 'bool'
+class host_flags(aetools.NProperty):
+       """host flags - Bit fields enabling the access path for each host OS (1 = Mac OS, 2 = Windows) """
+       which = 'HstF'
+       want = 'long'
+
+class Plugin_Settings(aetools.ComponentItem):
+       """Plugin Settings - Settings for plugin tools """
+       want = 'PSTG'
+class Plugin_Diagnostics_Level(aetools.NProperty):
+       """Plugin Diagnostics Level - Plugin Diagnostics Level is for those who are developing plugins for the IDE and need to debug them. """
+       which = 'PX01'
+       want = 'PXdg'
+class Disable_Third_Party_COM_Plugins(aetools.NProperty):
+       """Disable Third Party COM Plugins - Disable COM plugins from third parties """
+       which = 'PX02'
+       want = 'bool'
+
+class ProjectFile(aetools.ComponentItem):
+       """ProjectFile - A file contained in a project """
+       want = 'SrcF'
+class filetype(aetools.NProperty):
+       """filetype - What kind of file is this ? """
+       which = 'SrcT'
+       want = 'SrcT'
+# repeated property name The fileÕs name
+# repeated property disk_file The fileÕs location on disk
+class codesize(aetools.NProperty):
+       """codesize - The size of this fileÕs code. """
+       which = 'CSiz'
+       want = 'long'
+class datasize(aetools.NProperty):
+       """datasize - The size of this fileÕs data. """
+       which = 'DSiz'
+       want = 'long'
+class up_to_date(aetools.NProperty):
+       """up to date - Has the file been compiled since its last modification ? """
+       which = 'UpTD'
+       want = 'bool'
+class symbols(aetools.NProperty):
+       """symbols - Are debugging symbols generated for this file ? """
+       which = 'SymG'
+       want = 'bool'
+class weak_link(aetools.NProperty):
+       """weak link - Is this file imported weakly into the project ? [PowerPC only] """
+       which = 'Weak'
+       want = 'bool'
+class initialize_before(aetools.NProperty):
+       """initialize before - Initialize the shared library before the main application. """
+       which = 'Bfor'
+       want = 'bool'
+class includes(aetools.NProperty):
+       """includes -  """
+       which = 'IncF'
+       want = 'fss '
+
+class Relative_Path(aetools.ComponentItem):
+       """Relative Path - Relative path from some root """
+       want = 'RlPt'
+# repeated property name relative path from the root
+# repeated property format Format of the relative path
+# repeated property origin Origin of the relative path
+# repeated property root Name of user-defined root
+
+class Runtime_Settings(aetools.ComponentItem):
+       """Runtime Settings - Runtime settings """
+       want = 'RSTG'
+class Host_Application(aetools.NProperty):
+       """Host Application - Host application for running/debugging libraries and code resources """
+       which = 'RS01'
+       want = 'RlPt'
+class Command_Line_Arguments(aetools.NProperty):
+       """Command Line Arguments - Extra command line args to pass to executable """
+       which = 'RS02'
+       want = 'TEXT'
+class Working_Directory(aetools.NProperty):
+       """Working Directory - Working directory to use when running the executable """
+       which = 'RS03'
+       want = 'TEXT'
+class Environment_Variables(aetools.NProperty):
+       """Environment Variables - Environment variables to use when running the executable """
+       which = 'RS04'
+       want = 'EnvV'
+
+class Segment(aetools.ComponentItem):
+       """Segment - A segment or group in the project """
+       want = 'Seg '
+# repeated property name 
+class filecount(aetools.NProperty):
+       """filecount -  """
+       which = 'NumF'
+       want = 'shor'
+class seg_2d_preloaded(aetools.NProperty):
+       """seg-preloaded - Is the segment preloaded ? [68K only] """
+       which = 'Prel'
+       want = 'bool'
+class seg_2d_protected(aetools.NProperty):
+       """seg-protected - Is the segment protected ? [68K only] """
+       which = 'Prot'
+       want = 'bool'
+class seg_2d_locked(aetools.NProperty):
+       """seg-locked - Is the segment locked ? [68K only] """
+       which = 'PLck'
+       want = 'bool'
+class seg_2d_purgeable(aetools.NProperty):
+       """seg-purgeable - Is the segment purgeable ? [68K only] """
+       which = 'Purg'
+       want = 'bool'
+class seg_2d_system_heap(aetools.NProperty):
+       """seg-system heap - Is the segment loaded into the system heap ? [68K only] """
+       which = 'SysH'
+       want = 'bool'
+
+class Shielded_Folder(aetools.ComponentItem):
+       """Shielded Folder -  """
+       want = 'SFit'
+class Expression_To_Match(aetools.NProperty):
+       """Expression To Match - Regular expression which describes folders to skip """
+       which = 'SF01'
+       want = 'TEXT'
+class Skip_Project_Operations(aetools.NProperty):
+       """Skip Project Operations - Matching folders will be skipped during project operations """
+       which = 'SF02'
+       want = 'bool'
+class Skip_Find_And_Compare_Operations(aetools.NProperty):
+       """Skip Find And Compare Operations - Matching folders will be skipped during find and compare operations """
+       which = 'SF03'
+       want = 'bool'
+
+class Shielded_Folders(aetools.ComponentItem):
+       """Shielded Folders - Folders skipped when performing project and find-and-compare operations """
+       want = 'SHFL'
+class Shielded_Items(aetools.NProperty):
+       """Shielded Items -  """
+       which = 'SFis'
+       want = 'SFit'
+
+class Source_Tree(aetools.ComponentItem):
+       """Source Tree - User-defined source tree root """
+       want = 'SrcT'
+# repeated property name name of the user-defined source tree root
+class path(aetools.NProperty):
+       """path - path for the user-defined source tree root """
+       which = 'Path'
+       want = 'TEXT'
+class path_kind(aetools.NProperty):
+       """path kind - kind of path """
+       which = 'Kind'
+       want = 'STKd'
+# repeated property format Format of the absolute path
+
+class Syntax_Coloring(aetools.ComponentItem):
+       """Syntax Coloring -  """
+       want = 'SNTX'
+class Syntax_Coloring(aetools.NProperty):
+       """Syntax Coloring - Mark keywords and comments with color. """
+       which = 'GH01'
+       want = 'bool'
+class Comment_Color(aetools.NProperty):
+       """Comment Color - The color for comments. """
+       which = 'GH02'
+       want = 'cRGB'
+class Keyword_Color(aetools.NProperty):
+       """Keyword Color - The color for language keywords. """
+       which = 'GH03'
+       want = 'cRGB'
+class String_Color(aetools.NProperty):
+       """String Color - The color for strings. """
+       which = 'GH04'
+       want = 'cRGB'
+# repeated property Custom_Color_1 The color for the first set of custom keywords.
+# repeated property Custom_Color_2 The color for the second set custom keywords.
+# repeated property Custom_Color_3 The color for the third set of custom keywords.
+# repeated property Custom_Color_4 The color for the fourth set of custom keywords.
+
+class Target_Settings(aetools.ComponentItem):
+       """Target Settings - Contains the definitions of a projectÕs target. """
+       want = 'TARG'
+class Linker(aetools.NProperty):
+       """Linker - The name of the current linker. """
+       which = 'TA01'
+       want = 'TEXT'
+class Pre_Linker(aetools.NProperty):
+       """Pre Linker -  """
+       which = 'TA13'
+       want = 'TEXT'
+class Post_Linker(aetools.NProperty):
+       """Post Linker -  """
+       which = 'TA09'
+       want = 'TEXT'
+class Target_Name(aetools.NProperty):
+       """Target Name -  """
+       which = 'TA10'
+       want = 'TEXT'
+class Output_Directory_Path(aetools.NProperty):
+       """Output Directory Path - Path to output directory. Usage of this property is deprecated. Use the \96Output Directory Location\94 property instead. """
+       which = 'TA11'
+       want = 'TEXT'
+class Output_Directory_Origin(aetools.NProperty):
+       """Output Directory Origin - Origin of path to output directory. Usage of this property is deprecated. Use the \96Output Directory Location\94 property instead. """
+       which = 'TA12'
+       want = 'PPrm'
+class Output_Directory_Location(aetools.NProperty):
+       """Output Directory Location - Location of output directory """
+       which = 'TA16'
+       want = 'RlPt'
+class Use_Relative_Paths(aetools.NProperty):
+       """Use Relative Paths - Save project entries using relative paths """
+       which = 'TA15'
+       want = 'bool'
+
+class Target_Source_Trees(aetools.ComponentItem):
+       """Target Source Trees - Target-specific user-defined source tree roots """
+       want = 'TSTs'
+# repeated property Source_Trees List of source tree roots
+
+class VCS_Setup(aetools.ComponentItem):
+       """VCS Setup - The version control system preferences. """
+       want = 'VCSs'
+class VCS_Active(aetools.NProperty):
+       """VCS Active - Use Version Control """
+       which = 'VC01'
+       want = 'bool'
+class Use_Global_Settings(aetools.NProperty):
+       """Use Global Settings - Use the global VCS settings by default """
+       which = 'VC11'
+       want = 'bool'
+class Connection_Method(aetools.NProperty):
+       """Connection Method - Name of Version Control System to use. """
+       which = 'VC02'
+       want = 'TEXT'
+class Username(aetools.NProperty):
+       """Username - The user name for the VCS. """
+       which = 'VC03'
+       want = 'TEXT'
+class Password(aetools.NProperty):
+       """Password - The password for the VCS. """
+       which = 'VC04'
+       want = 'TEXT'
+class Auto_Connect(aetools.NProperty):
+       """Auto Connect - Automatically connect to database when starting. """
+       which = 'VC05'
+       want = 'bool'
+class Store_Password(aetools.NProperty):
+       """Store Password - Store the password. """
+       which = 'VC06'
+       want = 'bool'
+class Always_Prompt(aetools.NProperty):
+       """Always Prompt - Always show login dialog """
+       which = 'VC07'
+       want = 'bool'
+class Mount_Volume(aetools.NProperty):
+       """Mount Volume - Attempt to mount the database volume if it isn't available. """
+       which = 'VC08'
+       want = 'bool'
+class Database_Path(aetools.NProperty):
+       """Database Path - Path to the VCS database. """
+       which = 'VC09'
+       want = 'RlPt'
+class Local_Path(aetools.NProperty):
+       """Local Path - Path to the local root """
+       which = 'VC10'
+       want = 'RlPt'
+
+class _class(aetools.ComponentItem):
+       """class - A class, struct, or record type in the current project. """
+       want = 'Clas'
+# repeated property name 
+class language(aetools.NProperty):
+       """language - Implementation language of this class """
+       which = 'Lang'
+       want = 'Lang'
+class declaration_file(aetools.NProperty):
+       """declaration file - Source file containing the class declaration """
+       which = 'DcFl'
+       want = 'fss '
+class declaration_start_offset(aetools.NProperty):
+       """declaration start offset - Start of class declaration source code """
+       which = 'DcSt'
+       want = 'long'
+class declaration_end_offset(aetools.NProperty):
+       """declaration end offset - End of class declaration """
+       which = 'DcEn'
+       want = 'long'
+class subclasses(aetools.NProperty):
+       """subclasses - the immediate subclasses of this class """
+       which = 'SubC'
+       want = 'Clas'
+class all_subclasses(aetools.NProperty):
+       """all subclasses - the classes directly or indirectly derived from this class """
+       which = 'SubA'
+       want = 'Clas'
+#        element 'BsCl' as ['indx']
+#        element 'MbFn' as ['indx', 'name']
+#        element 'DtMb' as ['indx', 'name']
+
+classes = _class
+
+class member_function(aetools.ComponentItem):
+       """member function - A class member function or method. """
+       want = 'MbFn'
+# repeated property name 
+class access(aetools.NProperty):
+       """access -  """
+       which = 'Acce'
+       want = 'Acce'
+class virtual(aetools.NProperty):
+       """virtual -  """
+       which = 'Virt'
+       want = 'bool'
+class static(aetools.NProperty):
+       """static -  """
+       which = 'Stat'
+       want = 'bool'
+# repeated property declaration_file Source file containing the member function declaration
+# repeated property declaration_start_offset start of member function declaration source code
+# repeated property declaration_end_offset end of member function declaration
+class implementation_file(aetools.NProperty):
+       """implementation file - Source file containing the member function definition """
+       which = 'DfFl'
+       want = 'fss '
+class implementation_start_offset(aetools.NProperty):
+       """implementation start offset - start of member function definition source code """
+       which = 'DfSt'
+       want = 'long'
+class implementation_end_offset(aetools.NProperty):
+       """implementation end offset - end of member function definition """
+       which = 'DfEn'
+       want = 'long'
+
+member_functions = member_function
+
+class data_member(aetools.ComponentItem):
+       """data member - A class data member or field """
+       want = 'DtMb'
+# repeated property name 
+# repeated property access 
+# repeated property static 
+# repeated property declaration_start_offset 
+# repeated property declaration_end_offset 
+
+data_members = data_member
+
+class base_class(aetools.ComponentItem):
+       """base class - A base class or super class of a class """
+       want = 'BsCl'
+class _class(aetools.NProperty):
+       """class - The class object corresponding to this base class """
+       which = 'Clas'
+       want = 'obj '
+# repeated property access 
+# repeated property virtual 
+
+base_classes = base_class
+
+class browser_catalog(aetools.ComponentItem):
+       """browser catalog - The browser symbol catalog for the current project """
+       want = 'Cata'
+#        element 'Clas' as ['indx', 'name']
+Access_Paths._propdict = {
+       'User_Paths' : User_Paths,
+       'System_Paths' : System_Paths,
+       'Always_Full_Search' : Always_Full_Search,
+       'Convert_Paths' : Convert_Paths,
+}
+Access_Paths._elemdict = {
+}
+Browser_Coloring._propdict = {
+       'Browser_Keywords' : Browser_Keywords,
+       'Classes_Color' : Classes_Color,
+       'Constants_Color' : Constants_Color,
+       'Enums_Color' : Enums_Color,
+       'Functions_Color' : Functions_Color,
+       'Globals_Color' : Globals_Color,
+       'Macros_Color' : Macros_Color,
+       'Templates_Color' : Templates_Color,
+       'Typedefs_Color' : Typedefs_Color,
+       'Template_Commands_in_Menu' : Template_Commands_in_Menu,
+}
+Browser_Coloring._elemdict = {
+}
+Build_Extras._propdict = {
+       'Browser_Active' : Browser_Active,
+       'Modification_Date_Caching' : Modification_Date_Caching,
+       'Dump_Browser_Info' : Dump_Browser_Info,
+       'Cache_Subproject_Data' : Cache_Subproject_Data,
+}
+Build_Extras._elemdict = {
+}
+Build_Settings._propdict = {
+       'Completion_Sound' : Completion_Sound,
+       'Success_Sound' : Success_Sound,
+       'Failure_Sound' : Failure_Sound,
+       'Save_Before_Building' : Save_Before_Building,
+       'Build_Before_Running' : Build_Before_Running,
+       'Include_Cache_Size' : Include_Cache_Size,
+       'Compiler_Thread_Stack_Size' : Compiler_Thread_Stack_Size,
+}
+Build_Settings._elemdict = {
+}
+Custom_Keywords._propdict = {
+       'Custom_Color_1' : Custom_Color_1,
+       'Custom_Color_2' : Custom_Color_2,
+       'Custom_Color_3' : Custom_Color_3,
+       'Custom_Color_4' : Custom_Color_4,
+}
+Custom_Keywords._elemdict = {
+}
+Debugger_Display._propdict = {
+       'Show_Variable_Types' : Show_Variable_Types,
+       'Show_Locals' : Show_Locals,
+       'Sort_By_Method' : Sort_By_Method,
+       'Use_RTTI' : Use_RTTI,
+       'Threads_in_Window' : Threads_in_Window,
+       'Variable_Hints' : Variable_Hints,
+       'Watchpoint_Hilite' : Watchpoint_Hilite,
+       'Variable_Changed_Hilite' : Variable_Changed_Hilite,
+       'Default_Array_Size' : Default_Array_Size,
+       'Show_As_Decimal' : Show_As_Decimal,
+}
+Debugger_Display._elemdict = {
+}
+Debugger_Global._propdict = {
+       'Cache_Edited_Files' : Cache_Edited_Files,
+       'File_Cache_Duration' : File_Cache_Duration,
+       'Ignore_Mod_Dates' : Ignore_Mod_Dates,
+       'Open_All_Classes' : Open_All_Classes,
+       'Launch_Apps_on_Open' : Launch_Apps_on_Open,
+       'Confirm_Kill' : Confirm_Kill,
+       'Stop_at_Main' : Stop_at_Main,
+       'Select_Stack_Crawl' : Select_Stack_Crawl,
+       'Dont_Step_in_Runtime' : Dont_Step_in_Runtime,
+       'Auto_Target_Libraries' : Auto_Target_Libraries,
+}
+Debugger_Global._elemdict = {
+}
+Debugger_Target._propdict = {
+       'Log_System_Messages' : Log_System_Messages,
+       'Relocated_Executable_Path' : Relocated_Executable_Path,
+       'Update_Data_While_Running' : Update_Data_While_Running,
+       'Data_Update_Interval' : Data_Update_Interval,
+       'Auto_Target_Libraries' : Auto_Target_Libraries,
+       'Stop_at_temp_breakpoint' : Stop_at_temp_breakpoint,
+       'Temp_breakpoint_names' : Temp_breakpoint_names,
+       'Cache_symbolics' : Cache_symbolics,
+       'Temp_Breakpoint_Type' : Temp_Breakpoint_Type,
+}
+Debugger_Target._elemdict = {
+}
+Debugger_Windowing._propdict = {
+       'Debugging_Start_Action' : Debugging_Start_Action,
+       'Do_Nothing_To_Projects' : Do_Nothing_To_Projects,
+}
+Debugger_Windowing._elemdict = {
+}
+Editor._propdict = {
+       'Flash_Delay' : Flash_Delay,
+       'Dynamic_Scroll' : Dynamic_Scroll,
+       'Balance' : Balance,
+       'Use_Drag__26__Drop_Editing' : Use_Drag__26__Drop_Editing,
+       'Sort_Function_Popup' : Sort_Function_Popup,
+       'Use_Multiple_Undo' : Use_Multiple_Undo,
+       'Relaxed_C_Popup_Parsing' : Relaxed_C_Popup_Parsing,
+       'Left_Margin_Line_Select' : Left_Margin_Line_Select,
+       'Default_Text_File_Format' : Default_Text_File_Format,
+       'Remember_Font' : Remember_Font,
+       'Remember_Selection' : Remember_Selection,
+       'Remember_Window' : Remember_Window,
+       'Main_Text_Color' : Main_Text_Color,
+       'Background_Color' : Background_Color,
+       'Context_Popup_Delay' : Context_Popup_Delay,
+}
+Editor._elemdict = {
+}
+Environment_Variable._propdict = {
+       'name' : name,
+       'value' : value,
+}
+Environment_Variable._elemdict = {
+}
+Error_Information._propdict = {
+       'messageKind' : messageKind,
+       'message' : message,
+       'disk_file' : disk_file,
+       'lineNumber' : lineNumber,
+}
+Error_Information._elemdict = {
+}
+Extras._propdict = {
+       'Automatic_Toolbar_Help' : Automatic_Toolbar_Help,
+       'External_Reference' : External_Reference,
+       'Full_Screen_Zoom' : Full_Screen_Zoom,
+       'Recent_Editor_Count' : Recent_Editor_Count,
+       'Recent_Project_Count' : Recent_Project_Count,
+       'Use_Editor_Extensions' : Use_Editor_Extensions,
+       'Use_External_Editor' : Use_External_Editor,
+       'Use_Script_Menu' : Use_Script_Menu,
+       'Use_ToolServer_Menu' : Use_ToolServer_Menu,
+}
+Extras._elemdict = {
+}
+File_Mapping._propdict = {
+       'File_Type' : File_Type,
+       'Extension' : Extension,
+       'Precompiled' : Precompiled,
+       'Resource_File' : Resource_File,
+       'Launchable' : Launchable,
+       'Ignored_by_Make' : Ignored_by_Make,
+       'Compiler' : Compiler,
+}
+File_Mapping._elemdict = {
+}
+File_Mappings._propdict = {
+       'Mappings' : Mappings,
+}
+File_Mappings._elemdict = {
+}
+Font._propdict = {
+       'Auto_Indent' : Auto_Indent,
+       'Tab_Size' : Tab_Size,
+       'Tab_Indents_Selection' : Tab_Indents_Selection,
+       'Tab_Inserts_Spaces' : Tab_Inserts_Spaces,
+       'Text_Font' : Text_Font,
+       'Text_Size' : Text_Size,
+}
+Font._elemdict = {
+}
+Function_Information._propdict = {
+       'disk_file' : disk_file,
+       'lineNumber' : lineNumber,
+}
+Function_Information._elemdict = {
+}
+Global_Source_Trees._propdict = {
+       'Source_Trees' : Source_Trees,
+}
+Global_Source_Trees._elemdict = {
+}
+Path_Information._propdict = {
+       'name' : name,
+       'format' : format,
+       'origin' : origin,
+       'root' : root,
+       'recursive' : recursive,
+       'host_flags' : host_flags,
+}
+Path_Information._elemdict = {
+}
+Plugin_Settings._propdict = {
+       'Plugin_Diagnostics_Level' : Plugin_Diagnostics_Level,
+       'Disable_Third_Party_COM_Plugins' : Disable_Third_Party_COM_Plugins,
+}
+Plugin_Settings._elemdict = {
+}
+ProjectFile._propdict = {
+       'filetype' : filetype,
+       'name' : name,
+       'disk_file' : disk_file,
+       'codesize' : codesize,
+       'datasize' : datasize,
+       'up_to_date' : up_to_date,
+       'symbols' : symbols,
+       'weak_link' : weak_link,
+       'initialize_before' : initialize_before,
+       'includes' : includes,
+}
+ProjectFile._elemdict = {
+}
+Relative_Path._propdict = {
+       'name' : name,
+       'format' : format,
+       'origin' : origin,
+       'root' : root,
+}
+Relative_Path._elemdict = {
+}
+Runtime_Settings._propdict = {
+       'Host_Application' : Host_Application,
+       'Command_Line_Arguments' : Command_Line_Arguments,
+       'Working_Directory' : Working_Directory,
+       'Environment_Variables' : Environment_Variables,
+}
+Runtime_Settings._elemdict = {
+}
+Segment._propdict = {
+       'name' : name,
+       'filecount' : filecount,
+       'seg_2d_preloaded' : seg_2d_preloaded,
+       'seg_2d_protected' : seg_2d_protected,
+       'seg_2d_locked' : seg_2d_locked,
+       'seg_2d_purgeable' : seg_2d_purgeable,
+       'seg_2d_system_heap' : seg_2d_system_heap,
+}
+Segment._elemdict = {
+}
+Shielded_Folder._propdict = {
+       'Expression_To_Match' : Expression_To_Match,
+       'Skip_Project_Operations' : Skip_Project_Operations,
+       'Skip_Find_And_Compare_Operations' : Skip_Find_And_Compare_Operations,
+}
+Shielded_Folder._elemdict = {
+}
+Shielded_Folders._propdict = {
+       'Shielded_Items' : Shielded_Items,
+}
+Shielded_Folders._elemdict = {
+}
+Source_Tree._propdict = {
+       'name' : name,
+       'path' : path,
+       'path_kind' : path_kind,
+       'format' : format,
+}
+Source_Tree._elemdict = {
+}
+Syntax_Coloring._propdict = {
+       'Syntax_Coloring' : Syntax_Coloring,
+       'Comment_Color' : Comment_Color,
+       'Keyword_Color' : Keyword_Color,
+       'String_Color' : String_Color,
+       'Custom_Color_1' : Custom_Color_1,
+       'Custom_Color_2' : Custom_Color_2,
+       'Custom_Color_3' : Custom_Color_3,
+       'Custom_Color_4' : Custom_Color_4,
+}
+Syntax_Coloring._elemdict = {
+}
+Target_Settings._propdict = {
+       'Linker' : Linker,
+       'Pre_Linker' : Pre_Linker,
+       'Post_Linker' : Post_Linker,
+       'Target_Name' : Target_Name,
+       'Output_Directory_Path' : Output_Directory_Path,
+       'Output_Directory_Origin' : Output_Directory_Origin,
+       'Output_Directory_Location' : Output_Directory_Location,
+       'Use_Relative_Paths' : Use_Relative_Paths,
+}
+Target_Settings._elemdict = {
+}
+Target_Source_Trees._propdict = {
+       'Source_Trees' : Source_Trees,
+}
+Target_Source_Trees._elemdict = {
+}
+VCS_Setup._propdict = {
+       'VCS_Active' : VCS_Active,
+       'Use_Global_Settings' : Use_Global_Settings,
+       'Connection_Method' : Connection_Method,
+       'Username' : Username,
+       'Password' : Password,
+       'Auto_Connect' : Auto_Connect,
+       'Store_Password' : Store_Password,
+       'Always_Prompt' : Always_Prompt,
+       'Mount_Volume' : Mount_Volume,
+       'Database_Path' : Database_Path,
+       'Local_Path' : Local_Path,
+}
+VCS_Setup._elemdict = {
+}
+_class._propdict = {
+       'name' : name,
+       'language' : language,
+       'declaration_file' : declaration_file,
+       'declaration_start_offset' : declaration_start_offset,
+       'declaration_end_offset' : declaration_end_offset,
+       'subclasses' : subclasses,
+       'all_subclasses' : all_subclasses,
+}
+_class._elemdict = {
+       'base_class' : base_class,
+       'member_function' : member_function,
+       'data_member' : data_member,
+}
+member_function._propdict = {
+       'name' : name,
+       'access' : access,
+       'virtual' : virtual,
+       'static' : static,
+       'declaration_file' : declaration_file,
+       'declaration_start_offset' : declaration_start_offset,
+       'declaration_end_offset' : declaration_end_offset,
+       'implementation_file' : implementation_file,
+       'implementation_start_offset' : implementation_start_offset,
+       'implementation_end_offset' : implementation_end_offset,
+}
+member_function._elemdict = {
+}
+data_member._propdict = {
+       'name' : name,
+       'access' : access,
+       'static' : static,
+       'declaration_start_offset' : declaration_start_offset,
+       'declaration_end_offset' : declaration_end_offset,
+}
+data_member._elemdict = {
+}
+base_class._propdict = {
+       '_class' : _class,
+       'access' : access,
+       'virtual' : virtual,
+}
+base_class._elemdict = {
+}
+browser_catalog._propdict = {
+}
+browser_catalog._elemdict = {
+       '_class' : _class,
+}
+_Enum_TmpB = {
+       'User_Specified' : 'Usrs',      # Use user specified symbols when setting temporary breakpoints on program launch.
+       'Default' : 'Dflt',     # Use system default symbols when setting temporary breakpoints on program launch.
+}
+
+_Enum_TxtF = {
+       'MacOS' : 'TxF0',       # MacOS text format
+       'DOS' : 'TxF1', # DOS text format
+       'Unix' : 'TxF2',        # Unix text format
+}
+
+_Enum_savo = {
+       'yes' : 'yes ', # Save changes
+       'no' : 'no  ',  # Do not save changes
+       'ask' : 'ask ', # Ask the user whether to save
+}
+
+_Enum_ErrT = {
+       'information' : 'ErIn', # 
+       'compiler_warning' : 'ErCW',    # 
+       'compiler_error' : 'ErCE',      # 
+       'definition' : 'ErDf',  # 
+       'linker_warning' : 'ErLW',      # 
+       'linker_error' : 'ErLE',        # 
+       'find_result' : 'ErFn', # 
+       'generic_error' : 'ErGn',       # 
+}
+
+_Enum_SrcT = {
+       'source' : 'FTxt',      # A source file (.c, .cp, .p, etc).
+       'unknown' : 'FUnk',     # An unknown file type.
+}
+
+_Enum_PPrm = {
+       'absolute' : 'Abso',    # An absolute path name, including volume name.
+       'project_relative' : 'PRel',    # A path relative to the current projectÕs folder.
+       'shell_relative' : 'SRel',      # A path relative to the CodeWarrior\8e folder.
+       'system_relative' : 'YRel',     # A path relative to the system folder
+       'root_relative' : 'RRel',       # 
+}
+
+_Enum_DbSA = {
+       'No_Action' : 'DSA1',   # DonÕt do anything to non-debug windows
+       'Hide_Windows' : 'DSA2',        # Hide non-debugging windows
+       'Collapse_Windows' : 'DSA3',    # Collapse non-debugging windows
+       'Close_Windows' : 'DSA4',       # Close non-debugging windows
+}
+
+_Enum_Lang = {
+       'C' : 'LC  ',   # 
+       'C_2b__2b_' : 'LC++',   # 
+       'Pascal' : 'LP  ',      # 
+       'Object_Pascal' : 'LP++',       # 
+       'Java' : 'LJav',        # 
+       'Assembler' : 'LAsm',   # 
+       'Unknown' : 'L?  ',     # 
+}
+
+_Enum_Acce = {
+       'public' : 'Publ',      # 
+       'protected' : 'Prot',   # 
+       'private' : 'Priv',     # 
+}
+
+_Enum_Inte = {
+       'never_interact' : 'eNvr',      # Never allow user interactions
+       'interact_with_self' : 'eInS',  # Allow user interaction only when an AppleEvent is sent from within CodeWarrior
+       'interact_with_local' : 'eInL', # Allow user interaction when AppleEvents are sent from applications on the same machine (default)
+       'interact_with_all' : 'eInA',   # Allow user interaction from both local and remote AppleEvents
+}
+
+_Enum_DgBL = {
+       'Always' : 'DgB0',      # Always build before debugging.
+       'Never' : 'DgB1',       # Never build before debugging.
+       'Ask' : 'DgB2', # Ask about building before debugging.
+}
+
+_Enum_RefP = {
+       'Think_Reference' : 'DanR',     # 
+       'QuickView' : 'ALTV',   # 
+}
+
+_Enum_PXdg = {
+       'Diagnose_None' : 'PXd1',       # No Plugin Diagnostics.
+       'Diagnose_Errors' : 'PXd2',     # Plugin Diagnostics for errors only.
+       'Diagnose_All' : 'PXd3',        # Plugin Diagnostics for everything.
+}
+
+_Enum_BXbr = {
+       'Always_Build' : 'BXb1',        # Always build the target before running.
+       'Ask_Build' : 'BXb2',   # Ask before building the target when running.
+       'Never_Build' : 'BXb3', # Never before building the target before running.
+}
+
+_Enum_STKd = {
+       'Absolute_Path' : 'STK0',       # The \96path\94 property is an absolute path to the location of the source tree.
+       'Registry_Key' : 'STK1',        # The \96path\94 property is the name of a registry key that contains the path to the root.
+       'Environment_Variable' : 'STK2',        # The \96path\94 property is the name of an environment variable that contains the path to the root.
+}
+
+_Enum_PthF = {
+       'Generic_Path' : 'PFGn',        # 
+       'MacOS_Path' : 'PFMc',  # MacOS path using colon as separator
+       'Windows_Path' : 'PFWn',        # Windows path using backslash as separator
+       'Unix_Path' : 'PFUx',   # Unix path using slash as separator
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'DbDS' : Debugger_Display,
+       'TSTs' : Target_Source_Trees,
+       'VCSs' : VCS_Setup,
+       'mFNT' : Font,
+       'BRKW' : Browser_Coloring,
+       'PSTG' : Plugin_Settings,
+       'RSTG' : Runtime_Settings,
+       'MbFn' : member_function,
+       'DbGL' : Debugger_Global,
+       'SHFL' : Shielded_Folders,
+       'EnvV' : Environment_Variable,
+       'TARG' : Target_Settings,
+       'RlPt' : Relative_Path,
+       'BsCl' : base_class,
+       'PInf' : Path_Information,
+       'Seg ' : Segment,
+       'DtMb' : data_member,
+       'SNTX' : Syntax_Coloring,
+       'LXTR' : Build_Extras,
+       'DbWN' : Debugger_Windowing,
+       'PATH' : Access_Paths,
+       'FDef' : Function_Information,
+       'SrcT' : Source_Tree,
+       'SFit' : Shielded_Folder,
+       'FLMP' : File_Mappings,
+       'GXTR' : Extras,
+       'CUKW' : Custom_Keywords,
+       'GSTs' : Global_Source_Trees,
+       'EDTR' : Editor,
+       'DbTG' : Debugger_Target,
+       'ErrM' : Error_Information,
+       'Clas' : _class,
+       'SrcF' : ProjectFile,
+       'BSTG' : Build_Settings,
+       'Cata' : browser_catalog,
+       'FMap' : File_Mapping,
+}
+
+_propdeclarations = {
+       'SymG' : symbols,
+       'CSiz' : codesize,
+       'DfEn' : implementation_end_offset,
+       'DcEn' : declaration_end_offset,
+       'VC10' : Local_Path,
+       'FMps' : Mappings,
+       'VC02' : Connection_Method,
+       'VC03' : Username,
+       'TA02' : Extension,
+       'UpTD' : up_to_date,
+       'VC07' : Always_Prompt,
+       'VC04' : Password,
+       'VC05' : Auto_Connect,
+       'Dg13' : File_Cache_Duration,
+       'Dg12' : Cache_Edited_Files,
+       'Dg11' : Auto_Target_Libraries,
+       'VC09' : Database_Path,
+       'VC06' : Store_Password,
+       'Clas' : _class,
+       'PA02' : Always_Full_Search,
+       'PA03' : System_Paths,
+       'GH04' : String_Color,
+       'PA01' : User_Paths,
+       'TA09' : Post_Linker,
+       'PA04' : Convert_Paths,
+       'Lang' : language,
+       'EX31' : Cache_Subproject_Data,
+       'EX30' : Dump_Browser_Info,
+       'SrcT' : filetype,
+       'ST01' : Source_Trees,
+       'VC11' : Use_Global_Settings,
+       'PLck' : seg_2d_locked,
+       'GH08' : Custom_Color_4,
+       'DfFl' : implementation_file,
+       'GH06' : Custom_Color_2,
+       'GH07' : Custom_Color_3,
+       'Db10' : Show_As_Decimal,
+       'GH05' : Custom_Color_1,
+       'GH02' : Comment_Color,
+       'Kind' : path_kind,
+       'GH01' : Syntax_Coloring,
+       'Dt10' : Relocated_Executable_Path,
+       'BW03' : Enums_Color,
+       'BW00' : Browser_Keywords,
+       'Dt13' : Stop_at_temp_breakpoint,
+       'Dt14' : Temp_breakpoint_names,
+       'Dt15' : Cache_symbolics,
+       'Dt16' : Temp_Breakpoint_Type,
+       'pnam' : name,
+       'DfSt' : implementation_start_offset,
+       'Dw01' : Debugging_Start_Action,
+       'BW08' : Typedefs_Color,
+       'TA16' : Output_Directory_Location,
+       'PR04' : File_Type,
+       'EX04' : Modification_Date_Caching,
+       'RS04' : Environment_Variables,
+       'EX07' : Full_Screen_Zoom,
+       'RS02' : Command_Line_Arguments,
+       'RS03' : Working_Directory,
+       'RS01' : Host_Application,
+       'TA06' : Ignored_by_Make,
+       'TA07' : Compiler,
+       'TA04' : Resource_File,
+       'TA05' : Launchable,
+       'EX08' : External_Reference,
+       'EX09' : Browser_Active,
+       'Prot' : seg_2d_protected,
+       'TA01' : Linker,
+       'Db05' : Variable_Hints,
+       'Db04' : Threads_in_Window,
+       'Db07' : Variable_Changed_Hilite,
+       'Db06' : Watchpoint_Hilite,
+       'Db01' : Show_Variable_Types,
+       'Db03' : Use_RTTI,
+       'Db02' : Sort_By_Method,
+       'file' : disk_file,
+       'SysH' : seg_2d_system_heap,
+       'Db09' : Show_Locals,
+       'Db08' : Default_Array_Size,
+       'GH03' : Keyword_Color,
+       'VC08' : Mount_Volume,
+       'SFis' : Shielded_Items,
+       'SubA' : all_subclasses,
+       'Prel' : seg_2d_preloaded,
+       'Orig' : origin,
+       'Dt02' : Log_System_Messages,
+       'DcFl' : declaration_file,
+       'BW02' : Constants_Color,
+       'Dt09' : Data_Update_Interval,
+       'Dt08' : Update_Data_While_Running,
+       'BW10' : Template_Commands_in_Menu,
+       'BW01' : Classes_Color,
+       'EX17' : Recent_Project_Count,
+       'EX16' : Recent_Editor_Count,
+       'BW07' : Templates_Color,
+       'BW04' : Functions_Color,
+       'EX12' : Use_Script_Menu,
+       'BW05' : Globals_Color,
+       'EX10' : Use_Editor_Extensions,
+       'TA11' : Output_Directory_Path,
+       'TA10' : Target_Name,
+       'TA13' : Pre_Linker,
+       'TA12' : Output_Directory_Origin,
+       'TA15' : Use_Relative_Paths,
+       'EX19' : Automatic_Toolbar_Help,
+       'EX18' : Use_ToolServer_Menu,
+       'ErrT' : messageKind,
+       'ptxf' : Text_Font,
+       'Weak' : weak_link,
+       'ptps' : Text_Size,
+       'Root' : root,
+       'ErrS' : message,
+       'SubC' : subclasses,
+       'Dg04' : Confirm_Kill,
+       'SF01' : Expression_To_Match,
+       'SF02' : Skip_Project_Operations,
+       'SF03' : Skip_Find_And_Compare_Operations,
+       'ED08' : Remember_Font,
+       'ED09' : Remember_Selection,
+       'DSiz' : datasize,
+       'VC01' : VCS_Active,
+       'ErrL' : lineNumber,
+       'ED01' : Flash_Delay,
+       'ED02' : Dynamic_Scroll,
+       'ED03' : Balance,
+       'ED04' : Use_Drag__26__Drop_Editing,
+       'ED06' : Sort_Function_Popup,
+       'ED07' : Use_Multiple_Undo,
+       'Recu' : recursive,
+       'Valu' : value,
+       'Path' : path,
+       'IncF' : includes,
+       'Bfor' : initialize_before,
+       'Dw02' : Do_Nothing_To_Projects,
+       'TA03' : Precompiled,
+       'PX01' : Plugin_Diagnostics_Level,
+       'EX11' : Use_External_Editor,
+       'PX02' : Disable_Third_Party_COM_Plugins,
+       'DcSt' : declaration_start_offset,
+       'Dg01' : Ignore_Mod_Dates,
+       'Dg02' : Open_All_Classes,
+       'Dg03' : Launch_Apps_on_Open,
+       'BW06' : Macros_Color,
+       'Dg05' : Stop_at_Main,
+       'Dg06' : Select_Stack_Crawl,
+       'Dg07' : Dont_Step_in_Runtime,
+       'HstF' : host_flags,
+       'FN04' : Tab_Inserts_Spaces,
+       'FN03' : Tab_Indents_Selection,
+       'FN02' : Tab_Size,
+       'FN01' : Auto_Indent,
+       'Frmt' : format,
+       'Stat' : static,
+       'Virt' : virtual,
+       'Purg' : seg_2d_purgeable,
+       'NumF' : filecount,
+       'Acce' : access,
+       'BX05' : Include_Cache_Size,
+       'BX04' : Build_Before_Running,
+       'BX07' : Save_Before_Building,
+       'BX06' : Compiler_Thread_Stack_Size,
+       'BX01' : Completion_Sound,
+       'BX03' : Failure_Sound,
+       'BX02' : Success_Sound,
+       'ED13' : Background_Color,
+       'ED12' : Main_Text_Color,
+       'ED10' : Remember_Window,
+       'ED17' : Default_Text_File_Format,
+       'ED16' : Left_Margin_Line_Select,
+       'ED15' : Relaxed_C_Popup_Parsing,
+       'ED14' : Context_Popup_Delay,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'PPrm' : _Enum_PPrm,
+       'BXbr' : _Enum_BXbr,
+       'PthF' : _Enum_PthF,
+       'Lang' : _Enum_Lang,
+       'PXdg' : _Enum_PXdg,
+       'SrcT' : _Enum_SrcT,
+       'savo' : _Enum_savo,
+       'TmpB' : _Enum_TmpB,
+       'DbSA' : _Enum_DbSA,
+       'ErrT' : _Enum_ErrT,
+       'TxtF' : _Enum_TxtF,
+       'RefP' : _Enum_RefP,
+       'Acce' : _Enum_Acce,
+       'STKd' : _Enum_STKd,
+       'DgBL' : _Enum_DgBL,
+       'Inte' : _Enum_Inte,
+}
diff --git a/Mac/Lib/lib-scriptpackages/CodeWarrior/Standard_Suite.py b/Mac/Lib/lib-scriptpackages/CodeWarrior/Standard_Suite.py
new file mode 100644 (file)
index 0000000..96581c5
--- /dev/null
@@ -0,0 +1,410 @@
+"""Suite Standard Suite: Common terms for most applications
+Level 1, version 1
+
+Generated from Macintosh HD:SWdev:CodeWarrior 6 MPTP:Metrowerks CodeWarrior:CodeWarrior IDE 4.1B9
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'CoRe'
+
+class Standard_Suite_Events:
+
+       _argmap_close = {
+               'saving' : 'savo',
+               'saving_in' : 'kfil',
+       }
+
+       def close(self, _object, _attributes={}, **_arguments):
+               """close: close an object
+               Required argument: the object to close
+               Keyword argument saving: specifies whether or not changes should be saved before closing
+               Keyword argument saving_in: the file in which to save the object
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'clos'
+
+               aetools.keysubst(_arguments, self._argmap_close)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'savo', _Enum_savo)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_count = {
+               'each' : 'kocl',
+       }
+
+       def count(self, _object, _attributes={}, **_arguments):
+               """count: return the number of elements of a particular class within an object
+               Required argument: the object whose elements are to be counted
+               Keyword argument each: the class of the elements to be counted. Keyword 'each' is optional in AppleScript
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the number of elements
+               """
+               _code = 'core'
+               _subcode = 'cnte'
+
+               aetools.keysubst(_arguments, self._argmap_count)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_get = {
+               'as' : 'rtyp',
+       }
+
+       def get(self, _object, _attributes={}, **_arguments):
+               """get: get the data for an object
+               Required argument: the object whose data is to be returned
+               Keyword argument as: the desired types for the data, in order of preference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The data from the object
+               """
+               _code = 'core'
+               _subcode = 'getd'
+
+               aetools.keysubst(_arguments, self._argmap_get)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_make = {
+               'new' : 'kocl',
+               'as' : 'rtyp',
+               'at' : 'insh',
+               'with_data' : 'data',
+               'with_properties' : 'prdt',
+       }
+
+       def make(self, _no_object=None, _attributes={}, **_arguments):
+               """make: make a new element
+               Keyword argument new: the class of the new element\84keyword 'new' is optional in AppleScript
+               Keyword argument as: the desired types for the data, in order of preference
+               Keyword argument at: the location at which to insert the element
+               Keyword argument with_data: the initial data for the element
+               Keyword argument with_properties: the initial values for the properties of the element
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: to the new object(s)
+               """
+               _code = 'core'
+               _subcode = 'crel'
+
+               aetools.keysubst(_arguments, self._argmap_make)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def select(self, _object=None, _attributes={}, **_arguments):
+               """select: select the specified object
+               Required argument: the object to select
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'slct'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_set = {
+               'to' : 'data',
+       }
+
+       def set(self, _object, _attributes={}, **_arguments):
+               """set: set an object's data
+               Required argument: the object to change
+               Keyword argument to: the new value
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'setd'
+
+               aetools.keysubst(_arguments, self._argmap_set)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class application(aetools.ComponentItem):
+       """application - an application program """
+       want = 'capp'
+class user_interaction(aetools.NProperty):
+       """user interaction - user interaction level """
+       which = 'inte'
+       want = 'Inte'
+#        element 'docu' as ['indx', 'name', 'rang']
+#        element 'cwin' as ['indx', 'name', 'rang']
+
+class character(aetools.ComponentItem):
+       """character - a character """
+       want = 'cha '
+class offset(aetools.NProperty):
+       """offset - offset of a text object from the beginning of the document (first char has offset 1) """
+       which = 'pOff'
+       want = 'long'
+class length(aetools.NProperty):
+       """length - length in characters of this object """
+       which = 'pLen'
+       want = 'long'
+
+class document(aetools.ComponentItem):
+       """document - a document """
+       want = 'docu'
+class name(aetools.NProperty):
+       """name - the title of the document """
+       which = 'pnam'
+       want = 'itxt'
+class kind(aetools.NProperty):
+       """kind - the kind of document """
+       which = 'DKND'
+       want = 'DKND'
+class index(aetools.NProperty):
+       """index - the number of the document """
+       which = 'pidx'
+       want = 'long'
+class location(aetools.NProperty):
+       """location - the file of the document """
+       which = 'FILE'
+       want = 'fss '
+class file_permissions(aetools.NProperty):
+       """file permissions - the file permissions for the document """
+       which = 'PERM'
+       want = 'PERM'
+class window(aetools.NProperty):
+       """window - the window of the document. """
+       which = 'cwin'
+       want = 'cwin'
+
+documents = document
+
+class file(aetools.ComponentItem):
+       """file - A file """
+       want = 'file'
+
+files = file
+
+class insertion_point(aetools.ComponentItem):
+       """insertion point - An insertion location between two objects """
+       want = 'cins'
+# repeated property length length of text object (in characters)
+# repeated property offset offset of a text object from the beginning of the document (first char has offset 1)
+
+class line(aetools.ComponentItem):
+       """line - lines of text """
+       want = 'clin'
+# repeated property index index of a line object from the beginning of the document (first line has index 1)
+# repeated property offset offset  (in characters) of a line object from the beginning of the document
+# repeated property length length in characters of this object
+#        element 'cha ' as ['indx', 'rang', 'rele']
+
+lines = line
+
+class selection_2d_object(aetools.ComponentItem):
+       """selection-object - the selection visible to the user """
+       want = 'csel'
+class contents(aetools.NProperty):
+       """contents - the contents of the selection """
+       which = 'pcnt'
+       want = 'type'
+# repeated property length length of text object (in characters)
+# repeated property offset offset of a text object from the beginning of the document (first char has offset 1)
+#        element 'cha ' as ['indx', 'rele', 'rang', 'test']
+#        element 'clin' as ['indx', 'rang', 'rele']
+#        element 'ctxt' as ['rang']
+
+class text(aetools.ComponentItem):
+       """text - Text """
+       want = 'ctxt'
+# repeated property length length of text object (in characters)
+# repeated property offset offset of a text object from the beginning of the document (first char has offset 1)
+#        element 'cha ' as ['indx', 'rele', 'rang']
+#        element 'cins' as ['rele']
+#        element 'clin' as ['indx', 'rang', 'rele']
+#        element 'ctxt' as ['rang']
+
+class window(aetools.ComponentItem):
+       """window - A window """
+       want = 'cwin'
+# repeated property name the title of the window
+# repeated property index the number of the window
+class bounds(aetools.NProperty):
+       """bounds - the boundary rectangle for the window """
+       which = 'pbnd'
+       want = 'qdrt'
+class document(aetools.NProperty):
+       """document - the document that owns this window """
+       which = 'docu'
+       want = 'docu'
+class position(aetools.NProperty):
+       """position - upper left coordinates of window """
+       which = 'ppos'
+       want = 'QDpt'
+class visible(aetools.NProperty):
+       """visible - is the window visible? """
+       which = 'pvis'
+       want = 'bool'
+class zoomed(aetools.NProperty):
+       """zoomed - Is the window zoomed? """
+       which = 'pzum'
+       want = 'bool'
+
+windows = window
+application._propdict = {
+       'user_interaction' : user_interaction,
+}
+application._elemdict = {
+       'document' : document,
+       'window' : window,
+}
+character._propdict = {
+       'offset' : offset,
+       'length' : length,
+}
+character._elemdict = {
+}
+document._propdict = {
+       'name' : name,
+       'kind' : kind,
+       'index' : index,
+       'location' : location,
+       'file_permissions' : file_permissions,
+       'window' : window,
+}
+document._elemdict = {
+}
+file._propdict = {
+}
+file._elemdict = {
+}
+insertion_point._propdict = {
+       'length' : length,
+       'offset' : offset,
+}
+insertion_point._elemdict = {
+}
+line._propdict = {
+       'index' : index,
+       'offset' : offset,
+       'length' : length,
+}
+line._elemdict = {
+       'character' : character,
+}
+selection_2d_object._propdict = {
+       'contents' : contents,
+       'length' : length,
+       'offset' : offset,
+}
+selection_2d_object._elemdict = {
+       'character' : character,
+       'line' : line,
+       'text' : text,
+}
+text._propdict = {
+       'length' : length,
+       'offset' : offset,
+}
+text._elemdict = {
+       'character' : character,
+       'insertion_point' : insertion_point,
+       'line' : line,
+       'text' : text,
+}
+window._propdict = {
+       'name' : name,
+       'index' : index,
+       'bounds' : bounds,
+       'document' : document,
+       'position' : position,
+       'visible' : visible,
+       'zoomed' : zoomed,
+}
+window._elemdict = {
+}
+import Metrowerks_Shell_Suite
+from Metrowerks_Shell_Suite import _Enum_savo
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'docu' : document,
+       'cins' : insertion_point,
+       'capp' : application,
+       'ctxt' : text,
+       'csel' : selection_2d_object,
+       'clin' : line,
+       'file' : file,
+       'cwin' : window,
+       'cha ' : character,
+}
+
+_propdeclarations = {
+       'pzum' : zoomed,
+       'DKND' : kind,
+       'pOff' : offset,
+       'pLen' : length,
+       'pnam' : name,
+       'FILE' : location,
+       'pcnt' : contents,
+       'cwin' : window,
+       'ppos' : position,
+       'pidx' : index,
+       'docu' : document,
+       'PERM' : file_permissions,
+       'pbnd' : bounds,
+       'pvis' : visible,
+       'inte' : user_interaction,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Finder/Containers_and_folders.py b/Mac/Lib/lib-scriptpackages/Finder/Containers_and_folders.py
new file mode 100644 (file)
index 0000000..26df454
--- /dev/null
@@ -0,0 +1,484 @@
+"""Suite Containers and folders: Classes that can contain other file system items
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Finder
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'fndr'
+
+class Containers_and_folders_Events:
+
+       pass
+
+
+class container(aetools.ComponentItem):
+       """container - An item that contains other items """
+       want = 'ctnr'
+class _3c_Inheritance_3e_(aetools.NProperty):
+       """<Inheritance> - inherits some of its properties from the item class """
+       which = 'c@#^'
+       want = 'cobj'
+class selection(aetools.NProperty):
+       """selection - the selection visible to the user """
+       which = 'sele'
+       want = 'obj '
+class entire_contents(aetools.NProperty):
+       """entire contents - the entire contents of the container, including the contents of its children """
+       which = 'ects'
+       want = 'obj '
+class expandable(aetools.NProperty):
+       """expandable - Is the container capable of being expanded as an outline? """
+       which = 'pexa'
+       want = 'bool'
+class expanded(aetools.NProperty):
+       """expanded - Is the container opened as an outline? (can only be set for containers viewed as lists) """
+       which = 'pexp'
+       want = 'bool'
+class completely_expanded(aetools.NProperty):
+       """completely expanded - Are the container and all of its children opened as outlines? (can only be set for containers viewed as lists) """
+       which = 'pexc'
+       want = 'bool'
+class icon_size(aetools.NProperty):
+       """icon size - the size of icons displayed in the window. Can be specified as a number, or ... """
+       which = 'lvis'
+       want = 'long'
+#        element 'cobj' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name', 'ID  ']
+#        element 'file' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name', 'ID  ']
+#        element 'docf' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'inlf' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'clpf' as ['indx', 'name']
+#        element 'pack' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'dsut' as ['indx', 'name']
+
+containers = container
+
+class sharable_container(aetools.ComponentItem):
+       """sharable container - A container that may be shared (disks and folders) """
+       want = 'sctr'
+class owner(aetools.NProperty):
+       """owner - the user that owns the container (file sharing must be on to use this property) """
+       which = 'sown'
+       want = 'itxt'
+class group(aetools.NProperty):
+       """group - the user or group that has special access to the container (file sharing must be on to use this property) """
+       which = 'sgrp'
+       want = 'itxt'
+class owner_privileges(aetools.NProperty):
+       """owner privileges - the see folders/see files/make changes privileges for the owner (file sharing must be on to use this property) """
+       which = 'ownr'
+       want = 'priv'
+class group_privileges(aetools.NProperty):
+       """group privileges - the see folders/see files/make changes privileges for the group (file sharing must be on to use this property) """
+       which = 'gppr'
+       want = 'priv'
+class guest_privileges(aetools.NProperty):
+       """guest privileges - the see folders/see files/make changes privileges for everyone (file sharing must be on to use this property) """
+       which = 'gstp'
+       want = 'priv'
+class privileges_inherited(aetools.NProperty):
+       """privileges inherited - Are the privileges of the container always the same as the container in which it is stored? (file sharing must be on to use this property) """
+       which = 'iprv'
+       want = 'bool'
+class mounted(aetools.NProperty):
+       """mounted - Is the container mounted on another machine's desktop? (file sharing must be on to use this property) """
+       which = 'smou'
+       want = 'bool'
+class exported(aetools.NProperty):
+       """exported - Is the container a share point or inside a share point, i.e., can the container be shared? (file sharing must be on to use this property) """
+       which = 'sexp'
+       want = 'bool'
+class shared(aetools.NProperty):
+       """shared - Is the container a share point, i.e., is the container currently being shared? (file sharing must be on to use this property) """
+       which = 'shar'
+       want = 'bool'
+class protected(aetools.NProperty):
+       """protected - Is the container protected from being moved, renamed and deleted? (file sharing must be on to use this property) """
+       which = 'spro'
+       want = 'bool'
+#        element 'cobj' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name', 'ID  ']
+#        element 'file' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name', 'ID  ']
+#        element 'docf' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'inlf' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'clpf' as ['indx', 'name']
+#        element 'pack' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'dsut' as ['indx', 'name']
+
+sharable_containers = sharable_container
+
+class sharing_privileges(aetools.ComponentItem):
+       """sharing privileges - A set of sharing properties (used in sharable containers) """
+       want = 'priv'
+class see_folders(aetools.NProperty):
+       """see folders - Can folders be seen? """
+       which = 'prvs'
+       want = 'bool'
+class see_files(aetools.NProperty):
+       """see files - Can files be seen? """
+       which = 'prvr'
+       want = 'bool'
+class make_changes(aetools.NProperty):
+       """make changes - Can changes be made? """
+       which = 'prvw'
+       want = 'bool'
+
+class disk(aetools.ComponentItem):
+       """disk - A disk """
+       want = 'cdis'
+class capacity(aetools.NProperty):
+       """capacity - the total number of bytes (free or used) on the disk """
+       which = 'capa'
+       want = 'long'
+class free_space(aetools.NProperty):
+       """free space - the number of free bytes left on the disk """
+       which = 'frsp'
+       want = 'long'
+class ejectable(aetools.NProperty):
+       """ejectable - Can the media be ejected (floppies, CD's, and so on)? """
+       which = 'isej'
+       want = 'bool'
+class local_volume(aetools.NProperty):
+       """local volume - Is the media a local volume (as opposed to a file server)? """
+       which = 'isrv'
+       want = 'bool'
+class startup(aetools.NProperty):
+       """startup - Is this disk the boot disk? """
+       which = 'istd'
+       want = 'bool'
+#        element 'cobj' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name', 'ID  ']
+#        element 'file' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name', 'ID  ']
+#        element 'docf' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'inlf' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'clpf' as ['indx', 'name']
+#        element 'pack' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'dsut' as ['indx', 'name']
+
+disks = disk
+
+class folder(aetools.ComponentItem):
+       """folder - A folder """
+       want = 'cfol'
+#        element 'cobj' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name', 'ID  ']
+#        element 'file' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name', 'ID  ']
+#        element 'docf' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'inlf' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'clpf' as ['indx', 'name']
+#        element 'pack' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'dsut' as ['indx', 'name']
+
+folders = folder
+
+class desktop_2d_object(aetools.ComponentItem):
+       """desktop-object - Desktop-object is the class of the \96desktop\94 object """
+       want = 'cdsk'
+class startup_disk(aetools.NProperty):
+       """startup disk - the startup disk """
+       which = 'sdsk'
+       want = 'cdis'
+class trash(aetools.NProperty):
+       """trash - the trash """
+       which = 'trsh'
+       want = 'ctrs'
+#        element 'cobj' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'cdis' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name', 'ID  ']
+#        element 'file' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name', 'ID  ']
+#        element 'docf' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'inlf' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'clpf' as ['indx', 'name']
+#        element 'pack' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'dsut' as ['indx', 'name']
+
+class trash_2d_object(aetools.ComponentItem):
+       """trash-object - Trash-object is the class of the \96trash\94 object """
+       want = 'ctrs'
+class warns_before_emptying(aetools.NProperty):
+       """warns before emptying - Display a dialog when emptying the trash? """
+       which = 'warn'
+       want = 'bool'
+#        element 'cobj' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'cfol' as ['indx', 'name', 'ID  ']
+#        element 'file' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name', 'ID  ']
+#        element 'docf' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'inlf' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'clpf' as ['indx', 'name']
+#        element 'pack' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'dsut' as ['indx', 'name']
+import Earlier_terms
+import Files_and_suitcases
+container._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'selection' : selection,
+       'entire_contents' : entire_contents,
+       'expandable' : expandable,
+       'expanded' : expanded,
+       'completely_expanded' : completely_expanded,
+       'icon_size' : icon_size,
+       'icon_size' : icon_size,
+}
+container._elemdict = {
+       'item' : Earlier_terms.item,
+       'container' : container,
+       'sharable_container' : sharable_container,
+       'folder' : folder,
+       'file' : Files_and_suitcases.file,
+       'alias_file' : Files_and_suitcases.alias_file,
+       'application_file' : Earlier_terms.application_file,
+       'document_file' : Files_and_suitcases.document_file,
+       'font_file' : Files_and_suitcases.font_file,
+       'desk_accessory_file' : Files_and_suitcases.desk_accessory_file,
+       'internet_location' : Earlier_terms.internet_location,
+       'sound_file' : Files_and_suitcases.sound_file,
+       'clipping' : Files_and_suitcases.clipping,
+       'package' : Files_and_suitcases.package,
+       'suitcase' : Files_and_suitcases.suitcase,
+       'font_suitcase' : Files_and_suitcases.font_suitcase,
+       'accessory_suitcase' : Earlier_terms.accessory_suitcase,
+}
+sharable_container._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'owner' : owner,
+       'group' : group,
+       'owner_privileges' : owner_privileges,
+       'group_privileges' : group_privileges,
+       'guest_privileges' : guest_privileges,
+       'privileges_inherited' : privileges_inherited,
+       'mounted' : mounted,
+       'exported' : exported,
+       'shared' : shared,
+       'protected' : protected,
+}
+sharable_container._elemdict = {
+       'item' : Earlier_terms.item,
+       'container' : container,
+       'sharable_container' : sharable_container,
+       'folder' : folder,
+       'file' : Files_and_suitcases.file,
+       'alias_file' : Files_and_suitcases.alias_file,
+       'application_file' : Earlier_terms.application_file,
+       'document_file' : Files_and_suitcases.document_file,
+       'font_file' : Files_and_suitcases.font_file,
+       'desk_accessory_file' : Files_and_suitcases.desk_accessory_file,
+       'internet_location' : Earlier_terms.internet_location,
+       'sound_file' : Files_and_suitcases.sound_file,
+       'clipping' : Files_and_suitcases.clipping,
+       'package' : Files_and_suitcases.package,
+       'suitcase' : Files_and_suitcases.suitcase,
+       'font_suitcase' : Files_and_suitcases.font_suitcase,
+       'accessory_suitcase' : Earlier_terms.accessory_suitcase,
+}
+sharing_privileges._propdict = {
+       'see_folders' : see_folders,
+       'see_files' : see_files,
+       'make_changes' : make_changes,
+}
+sharing_privileges._elemdict = {
+}
+disk._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'capacity' : capacity,
+       'free_space' : free_space,
+       'ejectable' : ejectable,
+       'local_volume' : local_volume,
+       'startup' : startup,
+}
+disk._elemdict = {
+       'item' : Earlier_terms.item,
+       'container' : container,
+       'sharable_container' : sharable_container,
+       'folder' : folder,
+       'file' : Files_and_suitcases.file,
+       'alias_file' : Files_and_suitcases.alias_file,
+       'application_file' : Earlier_terms.application_file,
+       'document_file' : Files_and_suitcases.document_file,
+       'font_file' : Files_and_suitcases.font_file,
+       'desk_accessory_file' : Files_and_suitcases.desk_accessory_file,
+       'internet_location' : Earlier_terms.internet_location,
+       'sound_file' : Files_and_suitcases.sound_file,
+       'clipping' : Files_and_suitcases.clipping,
+       'package' : Files_and_suitcases.package,
+       'suitcase' : Files_and_suitcases.suitcase,
+       'font_suitcase' : Files_and_suitcases.font_suitcase,
+       'accessory_suitcase' : Earlier_terms.accessory_suitcase,
+}
+folder._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+folder._elemdict = {
+       'item' : Earlier_terms.item,
+       'container' : container,
+       'sharable_container' : sharable_container,
+       'folder' : folder,
+       'file' : Files_and_suitcases.file,
+       'alias_file' : Files_and_suitcases.alias_file,
+       'application_file' : Earlier_terms.application_file,
+       'document_file' : Files_and_suitcases.document_file,
+       'font_file' : Files_and_suitcases.font_file,
+       'desk_accessory_file' : Files_and_suitcases.desk_accessory_file,
+       'internet_location' : Earlier_terms.internet_location,
+       'sound_file' : Files_and_suitcases.sound_file,
+       'clipping' : Files_and_suitcases.clipping,
+       'package' : Files_and_suitcases.package,
+       'suitcase' : Files_and_suitcases.suitcase,
+       'font_suitcase' : Files_and_suitcases.font_suitcase,
+       'accessory_suitcase' : Earlier_terms.accessory_suitcase,
+}
+desktop_2d_object._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'startup_disk' : startup_disk,
+       'trash' : trash,
+}
+desktop_2d_object._elemdict = {
+       'item' : Earlier_terms.item,
+       'container' : container,
+       'sharable_container' : sharable_container,
+       'disk' : disk,
+       'folder' : folder,
+       'file' : Files_and_suitcases.file,
+       'alias_file' : Files_and_suitcases.alias_file,
+       'application_file' : Earlier_terms.application_file,
+       'document_file' : Files_and_suitcases.document_file,
+       'font_file' : Files_and_suitcases.font_file,
+       'desk_accessory_file' : Files_and_suitcases.desk_accessory_file,
+       'internet_location' : Earlier_terms.internet_location,
+       'sound_file' : Files_and_suitcases.sound_file,
+       'clipping' : Files_and_suitcases.clipping,
+       'package' : Files_and_suitcases.package,
+       'suitcase' : Files_and_suitcases.suitcase,
+       'font_suitcase' : Files_and_suitcases.font_suitcase,
+       'accessory_suitcase' : Earlier_terms.accessory_suitcase,
+}
+trash_2d_object._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'warns_before_emptying' : warns_before_emptying,
+}
+trash_2d_object._elemdict = {
+       'item' : Earlier_terms.item,
+       'container' : container,
+       'sharable_container' : sharable_container,
+       'folder' : folder,
+       'file' : Files_and_suitcases.file,
+       'alias_file' : Files_and_suitcases.alias_file,
+       'application_file' : Earlier_terms.application_file,
+       'document_file' : Files_and_suitcases.document_file,
+       'font_file' : Files_and_suitcases.font_file,
+       'desk_accessory_file' : Files_and_suitcases.desk_accessory_file,
+       'internet_location' : Earlier_terms.internet_location,
+       'sound_file' : Files_and_suitcases.sound_file,
+       'clipping' : Files_and_suitcases.clipping,
+       'package' : Files_and_suitcases.package,
+       'suitcase' : Files_and_suitcases.suitcase,
+       'font_suitcase' : Files_and_suitcases.font_suitcase,
+       'accessory_suitcase' : Earlier_terms.accessory_suitcase,
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'priv' : sharing_privileges,
+       'cfol' : folder,
+       'cdis' : disk,
+       'sctr' : sharable_container,
+       'ctnr' : container,
+       'cdsk' : desktop_2d_object,
+       'ctrs' : trash_2d_object,
+}
+
+_propdeclarations = {
+       'ownr' : owner_privileges,
+       'spro' : protected,
+       'frsp' : free_space,
+       'sgrp' : group,
+       'pexc' : completely_expanded,
+       'sele' : selection,
+       'smou' : mounted,
+       'pexa' : expandable,
+       'istd' : startup,
+       'sdsk' : startup_disk,
+       'gppr' : group_privileges,
+       'shar' : shared,
+       'capa' : capacity,
+       'isej' : ejectable,
+       'gstp' : guest_privileges,
+       'warn' : warns_before_emptying,
+       'sown' : owner,
+       'c@#^' : _3c_Inheritance_3e_,
+       'sexp' : exported,
+       'isrv' : local_volume,
+       'iprv' : privileges_inherited,
+       'lvis' : icon_size,
+       'trsh' : trash,
+       'prvs' : see_folders,
+       'prvr' : see_files,
+       'prvw' : make_changes,
+       'pexp' : expanded,
+       'ects' : entire_contents,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Finder/Earlier_terms.py b/Mac/Lib/lib-scriptpackages/Finder/Earlier_terms.py
new file mode 100644 (file)
index 0000000..6ec7e53
--- /dev/null
@@ -0,0 +1,728 @@
+"""Suite Earlier terms: Terms that have been renamed
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Finder
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'tpnm'
+
+from StdSuites.Type_Names_Suite import *
+class Earlier_terms_Events(Type_Names_Suite_Events):
+
+       pass
+
+
+class application(aetools.ComponentItem):
+       """application - The Finder """
+       want = 'capp'
+class properties(aetools.NProperty):
+       """properties - property that allows getting and setting of multiple properties """
+       which = 'qpro'
+       want = 'reco'
+class clipboard(aetools.NProperty):
+       """clipboard - the FinderÕs clipboard window """
+       which = 'pcli'
+       want = 'obj '
+class largest_free_block(aetools.NProperty):
+       """largest free block - the largest free block of process memory available to launch an application """
+       which = 'mfre'
+       want = 'long'
+class name(aetools.NProperty):
+       """name - the FinderÕs name """
+       which = 'pnam'
+       want = 'itxt'
+class visible(aetools.NProperty):
+       """visible - Is the FinderÕs layer visible? """
+       which = 'pvis'
+       want = 'bool'
+class frontmost(aetools.NProperty):
+       """frontmost - Is the Finder the frontmost process? """
+       which = 'pisf'
+       want = 'bool'
+class selection(aetools.NProperty):
+       """selection - the selection visible to the user """
+       which = 'sele'
+       want = 'obj '
+class insertion_location(aetools.NProperty):
+       """insertion location - the container in which a new folder would appear if \96New Folder\94 was selected """
+       which = 'pins'
+       want = 'obj '
+class file_sharing(aetools.NProperty):
+       """file sharing - Is file sharing on? """
+       which = 'fshr'
+       want = 'bool'
+class sharing_starting_up(aetools.NProperty):
+       """sharing starting up - Is file sharing in the process of starting up? """
+       which = 'fsup'
+       want = 'bool'
+class product_version(aetools.NProperty):
+       """product version - the version of the System software running on this computer """
+       which = 'ver2'
+       want = 'itxt'
+class version(aetools.NProperty):
+       """version - the version of the Finder """
+       which = 'vers'
+       want = 'itxt'
+class about_this_computer(aetools.NProperty):
+       """about this computer - the \96About this Computer\94 dialog and the list of running processes displayed in it """
+       which = 'abbx'
+       want = 'obj '
+class desktop(aetools.NProperty):
+       """desktop - the desktop """
+       which = 'desk'
+       want = 'cdsk'
+class Finder_preferences(aetools.NProperty):
+       """Finder preferences - Various preferences that apply to the Finder as a whole """
+       which = 'pfrp'
+       want = 'obj '
+
+class application_file(aetools.ComponentItem):
+       """application file - An application's file on disk """
+       want = 'appf'
+class _3c_Inheritance_3e_(aetools.NProperty):
+       """<Inheritance> - inherits some of its properties from the file class """
+       which = 'c@#^'
+       want = 'file'
+class minimum_partition_size(aetools.NProperty):
+       """minimum partition size - the smallest memory size with which the application can be launched """
+       which = 'mprt'
+       want = 'long'
+class partition_size(aetools.NProperty):
+       """partition size - the memory size with which the application will be launched """
+       which = 'appt'
+       want = 'long'
+class suggested_partition_size(aetools.NProperty):
+       """suggested partition size - the memory size with which the developer recommends the application be launched """
+       which = 'sprt'
+       want = 'long'
+class scriptable(aetools.NProperty):
+       """scriptable - Is the application high-level event aware? """
+       which = 'isab'
+       want = 'bool'
+
+class container_window(aetools.ComponentItem):
+       """container window - A window that contains items """
+       want = 'cwnd'
+class container(aetools.NProperty):
+       """container - the container from which the window was opened """
+       which = 'ctnr'
+       want = 'obj '
+class item(aetools.NProperty):
+       """item - the item from which the window was opened (always returns something) """
+       which = 'cobj'
+       want = 'obj '
+class has_custom_view_settings(aetools.NProperty):
+       """has custom view settings - Does the folder have custom view settings or is it using the default global settings? """
+       which = 'cuss'
+       want = 'long'
+class view(aetools.NProperty):
+       """view - the current view for the window (icon, name, date, etc.) """
+       which = 'pvew'
+       want = 'long'
+class previous_list_view(aetools.NProperty):
+       """previous list view - the last non-icon view (by name, by date, etc.) selected for the container (forgotten as soon as the window is closed and only available when the window is open) """
+       which = 'svew'
+       want = 'enum'
+class button_view_arrangement(aetools.NProperty):
+       """button view arrangement - the property by which to keep icons arranged within a button view window """
+       which = 'barr'
+       want = 'earr'
+class spatial_view_arrangement(aetools.NProperty):
+       """spatial view arrangement - the property by which to keep icons arranged within a spatial view window """
+       which = 'iarr'
+       want = 'earr'
+class sort_direction(aetools.NProperty):
+       """sort direction - The direction in which the window is sorted """
+       which = 'sord'
+       want = 'sodr'
+class calculate_folder_sizes(aetools.NProperty):
+       """calculate folder sizes - Are folder sizes calculated and displayed in the window? (does not apply to suitcase windows) """
+       which = 'sfsz'
+       want = 'bool'
+class show_comments(aetools.NProperty):
+       """show comments - Are comments displayed in the window? (does not apply to suitcases) """
+       which = 'scom'
+       want = 'bool'
+class show_creation_date(aetools.NProperty):
+       """show creation date - Are creation dates displayed in the window? """
+       which = 'scda'
+       want = 'bool'
+class show_kind(aetools.NProperty):
+       """show kind - Are document kinds displayed in the window? """
+       which = 'sknd'
+       want = 'bool'
+class show_label(aetools.NProperty):
+       """show label - Are labels displayed in the window? """
+       which = 'slbl'
+       want = 'bool'
+class show_modification_date(aetools.NProperty):
+       """show modification date - Are modification dates displayed in the window? """
+       which = 'sdat'
+       want = 'bool'
+class show_size(aetools.NProperty):
+       """show size - Are file sizes displayed in the window? """
+       which = 'ssiz'
+       want = 'bool'
+class show_version(aetools.NProperty):
+       """show version - Are file versions displayed in the window? (does not apply to suitcase windows) """
+       which = 'svrs'
+       want = 'bool'
+class use_relative_dates(aetools.NProperty):
+       """use relative dates - Are relative dates (e.g., today, yesterday) shown in the window? """
+       which = 'urdt'
+       want = 'bool'
+
+class accessory_process(aetools.ComponentItem):
+       """accessory process - A process launched from a desk accessory file """
+       want = 'pcda'
+
+accessory_processes = accessory_process
+
+class accessory_suitcase(aetools.ComponentItem):
+       """accessory suitcase - A desk accessory suitcase """
+       want = 'dsut'
+
+accessory_suitcases = accessory_suitcase
+
+class internet_location(aetools.ComponentItem):
+       """internet location - An file containing an internet location """
+       want = 'inlf'
+
+internet_locations = internet_location
+
+class information_window(aetools.ComponentItem):
+       """information window - An information window (opened by \96Get Info\94) """
+       want = 'iwnd'
+class comment(aetools.NProperty):
+       """comment - the comment """
+       which = 'comt'
+       want = 'itxt'
+class size(aetools.NProperty):
+       """size - the logical size of the item """
+       which = 'ptsz'
+       want = 'long'
+class physical_size(aetools.NProperty):
+       """physical size - the actual space used by the item on disk """
+       which = 'phys'
+       want = 'long'
+class creation_date(aetools.NProperty):
+       """creation date - the date on which the item was created """
+       which = 'ascd'
+       want = 'ldt '
+class modification_date(aetools.NProperty):
+       """modification date - the date on which the item was last modified """
+       which = 'asmo'
+       want = 'ldt '
+class icon(aetools.NProperty):
+       """icon - the icon bitmap of the item """
+       which = 'iimg'
+       want = 'ifam'
+class locked(aetools.NProperty):
+       """locked - Is the item locked (applies only to file and application information windows)? """
+       which = 'aslk'
+       want = 'bool'
+class stationery(aetools.NProperty):
+       """stationery - Is the item a stationery pad? """
+       which = 'pspd'
+       want = 'bool'
+class warn_before_emptying(aetools.NProperty):
+       """warn before emptying - Display a dialog when emptying the trash (only valid for trash info window)? """
+       which = 'warn'
+       want = 'bool'
+
+class item(aetools.ComponentItem):
+       """item - An item """
+       want = 'cobj'
+class index(aetools.NProperty):
+       """index - the index in the front-to-back ordering within its container """
+       which = 'pidx'
+       want = 'long'
+class id(aetools.NProperty):
+       """id - an id that identifies the item """
+       which = 'ID  '
+       want = 'long'
+class disk(aetools.NProperty):
+       """disk - the disk on which the item is stored """
+       which = 'cdis'
+       want = 'obj '
+class folder(aetools.NProperty):
+       """folder - the folder in which the item is stored """
+       which = 'asdr'
+       want = 'obj '
+class position(aetools.NProperty):
+       """position - the position of the item within its parent window (can only be set for an item in a window viewed as icons or buttons) """
+       which = 'posn'
+       want = 'QDpt'
+class bounds(aetools.NProperty):
+       """bounds - the bounding rectangle of the item (can only be set for an item in a window viewed as icons or buttons) """
+       which = 'pbnd'
+       want = 'qdrt'
+class label_index(aetools.NProperty):
+       """label index - the label of the item """
+       which = 'labi'
+       want = 'long'
+class kind(aetools.NProperty):
+       """kind - the kind of the item """
+       which = 'kind'
+       want = 'itxt'
+class description(aetools.NProperty):
+       """description - a description of the item """
+       which = 'dscr'
+       want = 'itxt'
+class selected(aetools.NProperty):
+       """selected - Is the item selected? """
+       which = 'issl'
+       want = 'bool'
+class content_space(aetools.NProperty):
+       """content space - the window that would open if the item was opened """
+       which = 'dwnd'
+       want = 'obj '
+class window(aetools.NProperty):
+       """window - the window that would open if the item was opened """
+       which = 'cwin'
+       want = 'obj '
+class information_window(aetools.NProperty):
+       """information window - the information window for the item """
+       which = 'iwnd'
+       want = 'obj '
+
+class process(aetools.ComponentItem):
+       """process - A process running on this computer """
+       want = 'prcs'
+class file(aetools.NProperty):
+       """file - the file from which the process was launched """
+       which = 'file'
+       want = 'obj '
+class file_type(aetools.NProperty):
+       """file type - the OSType of the file type of the process """
+       which = 'asty'
+       want = 'type'
+class creator_type(aetools.NProperty):
+       """creator type - the OSType of the creator of the process (the signature) """
+       which = 'fcrt'
+       want = 'type'
+class remote_events(aetools.NProperty):
+       """remote events - Does the process accept remote events? """
+       which = 'revt'
+       want = 'bool'
+class partition_space_used(aetools.NProperty):
+       """partition space used - the number of bytes currently used in the process' partition """
+       which = 'pusd'
+       want = 'long'
+
+class sharable_container(aetools.ComponentItem):
+       """sharable container - A container that may be shared (disks and folders) """
+       want = 'sctr'
+class owner(aetools.NProperty):
+       """owner - the user that owns the container (file sharing must be on to use this property) """
+       which = 'sown'
+       want = 'itxt'
+class group(aetools.NProperty):
+       """group - the user or group that has special access to the container (file sharing must be on to use this property) """
+       which = 'sgrp'
+       want = 'itxt'
+class owner_privileges(aetools.NProperty):
+       """owner privileges - the see folders/see files/make changes privileges for the owner (file sharing must be on to use this property) """
+       which = 'ownr'
+       want = 'priv'
+class group_privileges(aetools.NProperty):
+       """group privileges - the see folders/see files/make changes privileges for the group (file sharing must be on to use this property) """
+       which = 'gppr'
+       want = 'priv'
+class guest_privileges(aetools.NProperty):
+       """guest privileges - the see folders/see files/make changes privileges for everyone (file sharing must be on to use this property) """
+       which = 'gstp'
+       want = 'priv'
+class inherited_privileges(aetools.NProperty):
+       """inherited privileges - Are the privileges of the container always the same as the container in which it is stored? (file sharing must be on to use this property) """
+       which = 'iprv'
+       want = 'bool'
+class mounted(aetools.NProperty):
+       """mounted - Is the container mounted on another machine's desktop? (file sharing must be on to use this property) """
+       which = 'smou'
+       want = 'bool'
+class exported(aetools.NProperty):
+       """exported - Is the container a share point or inside a share point, i.e., can the container be shared? (file sharing must be on to use this property) """
+       which = 'sexp'
+       want = 'bool'
+class shared(aetools.NProperty):
+       """shared - Is the container a share point, i.e., is the container currently being shared? (file sharing must be on to use this property) """
+       which = 'shar'
+       want = 'bool'
+class protected(aetools.NProperty):
+       """protected - Is the container protected from being moved, renamed and deleted? (file sharing must be on to use this property) """
+       which = 'spro'
+       want = 'bool'
+
+class trash_2d_object(aetools.ComponentItem):
+       """trash-object - Trash-object is the class of the \96trash\94 object """
+       want = 'ctrs'
+
+class preferences(aetools.ComponentItem):
+       """preferences - The Finder Preferences """
+       want = 'cprf'
+class delay_before_springing(aetools.NProperty):
+       """delay before springing - the delay before springing open a container in ticks (1/60th of a second) (12 is shortest delay, 60 is longest delay) """
+       which = 'dela'
+       want = 'shor'
+class spring_open_folders(aetools.NProperty):
+       """spring open folders - Spring open folders after the specified delay? """
+       which = 'sprg'
+       want = 'bool'
+class use_simple_menus(aetools.NProperty):
+       """use simple menus - Use simplified Finder menus? """
+       which = 'usme'
+       want = 'bool'
+class use_wide_grid(aetools.NProperty):
+       """use wide grid - Space icons on a wide grid? """
+       which = 'uswg'
+       want = 'bool'
+
+class window(aetools.ComponentItem):
+       """window - A window """
+       want = 'cwin'
+class titled(aetools.NProperty):
+       """titled - Does the window have a title bar? """
+       which = 'ptit'
+       want = 'bool'
+class closeable(aetools.NProperty):
+       """closeable - Does the window have a close box? """
+       which = 'hclb'
+       want = 'bool'
+class floating(aetools.NProperty):
+       """floating - Does the window have a title bar? """
+       which = 'isfl'
+       want = 'bool'
+class modal(aetools.NProperty):
+       """modal - Is the window modal? """
+       which = 'pmod'
+       want = 'bool'
+
+resizable = titled
+class zoomable(aetools.NProperty):
+       """zoomable - Is the window zoomable? """
+       which = 'iszm'
+       want = 'bool'
+class zoomed(aetools.NProperty):
+       """zoomed - Is the window zoomed? """
+       which = 'pzum'
+       want = 'bool'
+class zoomed_full_size(aetools.NProperty):
+       """zoomed full size - Is the window zoomed to the full size of the screen? (can only be set, not read, and only applies to open non-pop-up windows) """
+       which = 'zumf'
+       want = 'bool'
+class popup(aetools.NProperty):
+       """popup - Is the window is a pop-up window? (only applies to open container windows in the Finder and can only be set when the Finder is the front application) """
+       which = 'drwr'
+       want = 'bool'
+class pulled_open(aetools.NProperty):
+       """pulled open - Is the window pulled open (only applies to pop-up windows and can only be set when the Finder is the front application)? """
+       which = 'pull'
+       want = 'bool'
+class collapsed(aetools.NProperty):
+       """collapsed - Is the window collapsed (only applies to open non-pop-up windows)? """
+       which = 'wshd'
+       want = 'bool'
+application._propdict = {
+       'properties' : properties,
+       'clipboard' : clipboard,
+       'largest_free_block' : largest_free_block,
+       'name' : name,
+       'visible' : visible,
+       'frontmost' : frontmost,
+       'selection' : selection,
+       'insertion_location' : insertion_location,
+       'file_sharing' : file_sharing,
+       'sharing_starting_up' : sharing_starting_up,
+       'product_version' : product_version,
+       'version' : version,
+       'about_this_computer' : about_this_computer,
+       'desktop' : desktop,
+       'Finder_preferences' : Finder_preferences,
+}
+application._elemdict = {
+}
+application_file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'minimum_partition_size' : minimum_partition_size,
+       'partition_size' : partition_size,
+       'suggested_partition_size' : suggested_partition_size,
+       'scriptable' : scriptable,
+}
+application_file._elemdict = {
+}
+container_window._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'container' : container,
+       'item' : item,
+       'has_custom_view_settings' : has_custom_view_settings,
+       'view' : view,
+       'previous_list_view' : previous_list_view,
+       'button_view_arrangement' : button_view_arrangement,
+       'spatial_view_arrangement' : spatial_view_arrangement,
+       'sort_direction' : sort_direction,
+       'calculate_folder_sizes' : calculate_folder_sizes,
+       'show_comments' : show_comments,
+       'show_creation_date' : show_creation_date,
+       'show_kind' : show_kind,
+       'show_label' : show_label,
+       'show_modification_date' : show_modification_date,
+       'show_size' : show_size,
+       'show_version' : show_version,
+       'use_relative_dates' : use_relative_dates,
+}
+container_window._elemdict = {
+}
+accessory_process._propdict = {
+}
+accessory_process._elemdict = {
+}
+accessory_suitcase._propdict = {
+}
+accessory_suitcase._elemdict = {
+}
+internet_location._propdict = {
+}
+internet_location._elemdict = {
+}
+information_window._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'item' : item,
+       'comment' : comment,
+       'size' : size,
+       'physical_size' : physical_size,
+       'creation_date' : creation_date,
+       'modification_date' : modification_date,
+       'suggested_partition_size' : suggested_partition_size,
+       'minimum_partition_size' : minimum_partition_size,
+       'partition_size' : partition_size,
+       'icon' : icon,
+       'locked' : locked,
+       'stationery' : stationery,
+       'warn_before_emptying' : warn_before_emptying,
+       'product_version' : product_version,
+       'version' : version,
+}
+information_window._elemdict = {
+}
+item._propdict = {
+       'properties' : properties,
+       'name' : name,
+       'index' : index,
+       'id' : id,
+       'container' : container,
+       'disk' : disk,
+       'folder' : folder,
+       'position' : position,
+       'bounds' : bounds,
+       'label_index' : label_index,
+       'kind' : kind,
+       'description' : description,
+       'comment' : comment,
+       'size' : size,
+       'physical_size' : physical_size,
+       'creation_date' : creation_date,
+       'modification_date' : modification_date,
+       'icon' : icon,
+       'selected' : selected,
+       'content_space' : content_space,
+       'window' : window,
+       'information_window' : information_window,
+}
+item._elemdict = {
+}
+process._propdict = {
+       'properties' : properties,
+       'name' : name,
+       'visible' : visible,
+       'frontmost' : frontmost,
+       'file' : file,
+       'file_type' : file_type,
+       'creator_type' : creator_type,
+       'scriptable' : scriptable,
+       'remote_events' : remote_events,
+       'partition_size' : partition_size,
+       'partition_space_used' : partition_space_used,
+}
+process._elemdict = {
+}
+sharable_container._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'owner' : owner,
+       'group' : group,
+       'owner_privileges' : owner_privileges,
+       'group_privileges' : group_privileges,
+       'guest_privileges' : guest_privileges,
+       'inherited_privileges' : inherited_privileges,
+       'mounted' : mounted,
+       'exported' : exported,
+       'shared' : shared,
+       'protected' : protected,
+}
+sharable_container._elemdict = {
+}
+trash_2d_object._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'warn_before_emptying' : warn_before_emptying,
+}
+trash_2d_object._elemdict = {
+}
+preferences._propdict = {
+       'window' : window,
+       'calculate_folder_sizes' : calculate_folder_sizes,
+       'delay_before_springing' : delay_before_springing,
+       'show_comments' : show_comments,
+       'show_creation_date' : show_creation_date,
+       'show_kind' : show_kind,
+       'show_label' : show_label,
+       'show_modification_date' : show_modification_date,
+       'show_size' : show_size,
+       'show_version' : show_version,
+       'spring_open_folders' : spring_open_folders,
+       'use_relative_dates' : use_relative_dates,
+       'use_simple_menus' : use_simple_menus,
+       'use_wide_grid' : use_wide_grid,
+}
+preferences._elemdict = {
+}
+window._propdict = {
+       'properties' : properties,
+       'position' : position,
+       'bounds' : bounds,
+       'titled' : titled,
+       'name' : name,
+       'index' : index,
+       'closeable' : closeable,
+       'floating' : floating,
+       'modal' : modal,
+       'resizable' : resizable,
+       'zoomable' : zoomable,
+       'zoomed' : zoomed,
+       'zoomed_full_size' : zoomed_full_size,
+       'visible' : visible,
+       'popup' : popup,
+       'pulled_open' : pulled_open,
+       'collapsed' : collapsed,
+}
+window._elemdict = {
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'iwnd' : information_window,
+       'cwnd' : container_window,
+       'inlf' : internet_location,
+       'appf' : application_file,
+       'prcs' : process,
+       'cobj' : item,
+       'cwin' : window,
+       'pcda' : accessory_process,
+       'ctrs' : trash_2d_object,
+       'capp' : application,
+       'cprf' : preferences,
+       'sctr' : sharable_container,
+       'dsut' : accessory_suitcase,
+}
+
+_propdeclarations = {
+       'pidx' : index,
+       'scda' : show_creation_date,
+       'qpro' : properties,
+       'fshr' : file_sharing,
+       'pvew' : view,
+       'pusd' : partition_space_used,
+       'aslk' : locked,
+       'sdat' : show_modification_date,
+       'issl' : selected,
+       'pvis' : visible,
+       'slbl' : show_label,
+       'wshd' : collapsed,
+       'cdis' : disk,
+       'usme' : use_simple_menus,
+       'sord' : sort_direction,
+       'sexp' : exported,
+       'comt' : comment,
+       'dscr' : description,
+       'svew' : previous_list_view,
+       'svrs' : show_version,
+       'sknd' : show_kind,
+       'phys' : physical_size,
+       'iarr' : spatial_view_arrangement,
+       'smou' : mounted,
+       'posn' : position,
+       'cobj' : item,
+       'revt' : remote_events,
+       'asmo' : modification_date,
+       'ssiz' : show_size,
+       'pnam' : name,
+       'mprt' : minimum_partition_size,
+       'cwin' : window,
+       'pcli' : clipboard,
+       'spro' : protected,
+       'sprt' : suggested_partition_size,
+       'pisf' : frontmost,
+       'sele' : selection,
+       'pmod' : modal,
+       'fcrt' : creator_type,
+       'shar' : shared,
+       'dwnd' : content_space,
+       'zumf' : zoomed_full_size,
+       'sfsz' : calculate_folder_sizes,
+       'ID  ' : id,
+       'c@#^' : _3c_Inheritance_3e_,
+       'pspd' : stationery,
+       'iprv' : inherited_privileges,
+       'pfrp' : Finder_preferences,
+       'barr' : button_view_arrangement,
+       'ownr' : owner_privileges,
+       'drwr' : popup,
+       'sgrp' : group,
+       'ptsz' : size,
+       'kind' : kind,
+       'pull' : pulled_open,
+       'abbx' : about_this_computer,
+       'ctnr' : container,
+       'ascd' : creation_date,
+       'desk' : desktop,
+       'warn' : warn_before_emptying,
+       'iszm' : zoomable,
+       'isab' : scriptable,
+       'gstp' : guest_privileges,
+       'vers' : version,
+       'dela' : delay_before_springing,
+       'ptit' : titled,
+       'uswg' : use_wide_grid,
+       'cuss' : has_custom_view_settings,
+       'labi' : label_index,
+       'iwnd' : information_window,
+       'file' : file,
+       'asty' : file_type,
+       'appt' : partition_size,
+       'scom' : show_comments,
+       'pins' : insertion_location,
+       'pbnd' : bounds,
+       'urdt' : use_relative_dates,
+       'fsup' : sharing_starting_up,
+       'sown' : owner,
+       'isfl' : floating,
+       'hclb' : closeable,
+       'iimg' : icon,
+       'gppr' : group_privileges,
+       'asdr' : folder,
+       'sprg' : spring_open_folders,
+       'pzum' : zoomed,
+       'ver2' : product_version,
+       'mfre' : largest_free_block,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Finder/Files_and_suitcases.py b/Mac/Lib/lib-scriptpackages/Finder/Files_and_suitcases.py
new file mode 100644 (file)
index 0000000..5137594
--- /dev/null
@@ -0,0 +1,283 @@
+"""Suite Files and suitcases: Classes representing files and suitcases
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Finder
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'fndr'
+
+class Files_and_suitcases_Events:
+
+       pass
+
+
+class file(aetools.ComponentItem):
+       """file - A file """
+       want = 'file'
+class _3c_Inheritance_3e_(aetools.NProperty):
+       """<Inheritance> - inherits some of its properties from the item class """
+       which = 'c@#^'
+       want = 'cobj'
+class file_type(aetools.NProperty):
+       """file type - the OSType identifying the type of data contained in the item """
+       which = 'asty'
+       want = 'type'
+class creator_type(aetools.NProperty):
+       """creator type - the OSType identifying the application that created the item """
+       which = 'fcrt'
+       want = 'type'
+class locked(aetools.NProperty):
+       """locked - Is the file locked? """
+       which = 'aslk'
+       want = 'bool'
+class stationery(aetools.NProperty):
+       """stationery - Is the file a stationery pad? """
+       which = 'pspd'
+       want = 'bool'
+class product_version(aetools.NProperty):
+       """product version - the version of the product (visible at the top of the \96Get Info\94 window) """
+       which = 'ver2'
+       want = 'itxt'
+class version(aetools.NProperty):
+       """version - the version of the file (visible at the bottom of the \96Get Info\94 window) """
+       which = 'vers'
+       want = 'itxt'
+
+files = file
+
+class alias_file(aetools.ComponentItem):
+       """alias file - An alias file (created with \96Make Alias\94) """
+       want = 'alia'
+class original_item(aetools.NProperty):
+       """original item - the original item pointed to by the alias """
+       which = 'orig'
+       want = 'obj '
+
+alias_files = alias_file
+
+class application_file(aetools.ComponentItem):
+       """application file - An application's file on disk """
+       want = 'appf'
+class suggested_size(aetools.NProperty):
+       """suggested size - the memory size with which the developer recommends the application be launched """
+       which = 'sprt'
+       want = 'long'
+class minimum_size(aetools.NProperty):
+       """minimum size - the smallest memory size with which the application can be launched """
+       which = 'mprt'
+       want = 'long'
+class preferred_size(aetools.NProperty):
+       """preferred size - the memory size with which the application will be launched """
+       which = 'appt'
+       want = 'long'
+class accepts_high_level_events(aetools.NProperty):
+       """accepts high level events - Is the application high-level event aware? """
+       which = 'isab'
+       want = 'bool'
+class has_scripting_terminology(aetools.NProperty):
+       """has scripting terminology - Does the process have a scripting terminology, i.e., can it be scripted? """
+       which = 'hscr'
+       want = 'bool'
+
+application_files = application_file
+
+class document_file(aetools.ComponentItem):
+       """document file - A document file """
+       want = 'docf'
+
+document_files = document_file
+
+class font_file(aetools.ComponentItem):
+       """font file - A font file """
+       want = 'fntf'
+
+font_files = font_file
+
+class desk_accessory_file(aetools.ComponentItem):
+       """desk accessory file - A desk accessory file """
+       want = 'dafi'
+
+desk_accessory_files = desk_accessory_file
+
+class internet_location_file(aetools.ComponentItem):
+       """internet location file - An file containing an internet location """
+       want = 'inlf'
+class location(aetools.NProperty):
+       """location - the internet location """
+       which = 'iloc'
+       want = 'itxt'
+
+internet_location_files = internet_location_file
+
+class sound_file(aetools.ComponentItem):
+       """sound file - A sound file """
+       want = 'sndf'
+class sound(aetools.NProperty):
+       """sound - the sound data """
+       which = 'snd '
+       want = 'snd '
+
+sound_files = sound_file
+
+class clipping(aetools.ComponentItem):
+       """clipping - A clipping """
+       want = 'clpf'
+
+clippings = clipping
+
+class package(aetools.ComponentItem):
+       """package - A package """
+       want = 'pack'
+
+packages = package
+
+class suitcase(aetools.ComponentItem):
+       """suitcase - A font or desk accessory suitcase """
+       want = 'stcs'
+#        element 'cobj' as ['indx', 'name']
+
+suitcases = suitcase
+
+class font_suitcase(aetools.ComponentItem):
+       """font suitcase - A font suitcase """
+       want = 'fsut'
+#        element 'cobj' as ['indx', 'name']
+
+font_suitcases = font_suitcase
+
+class desk_accessory_suitcase(aetools.ComponentItem):
+       """desk accessory suitcase - A desk accessory suitcase """
+       want = 'dsut'
+#        element 'cobj' as ['indx', 'name']
+
+desk_accessory_suitcases = desk_accessory_suitcase
+file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'file_type' : file_type,
+       'creator_type' : creator_type,
+       'locked' : locked,
+       'stationery' : stationery,
+       'product_version' : product_version,
+       'version' : version,
+}
+file._elemdict = {
+}
+alias_file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'original_item' : original_item,
+}
+alias_file._elemdict = {
+}
+application_file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'suggested_size' : suggested_size,
+       'minimum_size' : minimum_size,
+       'preferred_size' : preferred_size,
+       'accepts_high_level_events' : accepts_high_level_events,
+       'has_scripting_terminology' : has_scripting_terminology,
+}
+application_file._elemdict = {
+}
+document_file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+document_file._elemdict = {
+}
+font_file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+font_file._elemdict = {
+}
+desk_accessory_file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+desk_accessory_file._elemdict = {
+}
+internet_location_file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'location' : location,
+}
+internet_location_file._elemdict = {
+}
+sound_file._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'sound' : sound,
+}
+sound_file._elemdict = {
+}
+clipping._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+clipping._elemdict = {
+}
+package._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+package._elemdict = {
+}
+import Earlier_terms
+suitcase._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+suitcase._elemdict = {
+       'item' : Earlier_terms.item,
+}
+font_suitcase._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+font_suitcase._elemdict = {
+       'item' : Earlier_terms.item,
+}
+desk_accessory_suitcase._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+desk_accessory_suitcase._elemdict = {
+       'item' : Earlier_terms.item,
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'clpf' : clipping,
+       'docf' : document_file,
+       'stcs' : suitcase,
+       'appf' : application_file,
+       'file' : file,
+       'fsut' : font_suitcase,
+       'pack' : package,
+       'dafi' : desk_accessory_file,
+       'alia' : alias_file,
+       'dsut' : desk_accessory_suitcase,
+       'inlf' : internet_location_file,
+       'fntf' : font_file,
+       'sndf' : sound_file,
+}
+
+_propdeclarations = {
+       'orig' : original_item,
+       'pspd' : stationery,
+       'aslk' : locked,
+       'iloc' : location,
+       'mprt' : minimum_size,
+       'fcrt' : creator_type,
+       'c@#^' : _3c_Inheritance_3e_,
+       'asty' : file_type,
+       'hscr' : has_scripting_terminology,
+       'sprt' : suggested_size,
+       'appt' : preferred_size,
+       'isab' : accepts_high_level_events,
+       'snd ' : sound,
+       'ver2' : product_version,
+       'vers' : version,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Finder/Finder_Basics.py b/Mac/Lib/lib-scriptpackages/Finder/Finder_Basics.py
new file mode 100644 (file)
index 0000000..9c4b65e
--- /dev/null
@@ -0,0 +1,370 @@
+"""Suite Finder Basics: Commonly-used Finder commands and object classes
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Finder
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'fndr'
+
+class Finder_Basics_Events:
+
+       _argmap_computer = {
+               'has' : 'has ',
+       }
+
+       def computer(self, _object, _attributes={}, **_arguments):
+               """computer: Test attributes of this computer
+               Required argument: the attribute to test
+               Keyword argument has: test specific bits of response
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the result of the query
+               """
+               _code = 'fndr'
+               _subcode = 'gstl'
+
+               aetools.keysubst(_arguments, self._argmap_computer)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def copy(self, _no_object=None, _attributes={}, **_arguments):
+               """copy: Copy the selected items to the clipboard (the Finder must be the front application)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'copy'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def restart(self, _no_object=None, _attributes={}, **_arguments):
+               """restart: Restart the computer
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'rest'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def shut_down(self, _no_object=None, _attributes={}, **_arguments):
+               """shut down: Shut Down the computer
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'shut'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def sleep(self, _no_object=None, _attributes={}, **_arguments):
+               """sleep: Put the computer to sleep
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'slep'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_sort = {
+               'by' : 'by  ',
+       }
+
+       def sort(self, _object, _attributes={}, **_arguments):
+               """sort: Return the specified object(s) in a sorted list
+               Required argument: a list of finder objects to sort
+               Keyword argument by: the property to sort the items by (name, index, date, etc.)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the sorted items in their new order
+               """
+               _code = 'DATA'
+               _subcode = 'SORT'
+
+               aetools.keysubst(_arguments, self._argmap_sort)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class application(aetools.ComponentItem):
+       """application - The Finder """
+       want = 'capp'
+class clipboard(aetools.NProperty):
+       """clipboard - the FinderÕs clipboard window """
+       which = 'pcli'
+       want = 'obj '
+class largest_free_block(aetools.NProperty):
+       """largest free block - the largest free block of process memory available to launch an application """
+       which = 'mfre'
+       want = 'long'
+class name(aetools.NProperty):
+       """name - the FinderÕs name """
+       which = 'pnam'
+       want = 'itxt'
+class visible(aetools.NProperty):
+       """visible - Is the FinderÕs layer visible? """
+       which = 'pvis'
+       want = 'bool'
+class frontmost(aetools.NProperty):
+       """frontmost - Is the Finder the frontmost process? """
+       which = 'pisf'
+       want = 'bool'
+class selection(aetools.NProperty):
+       """selection - the selection visible to the user """
+       which = 'sele'
+       want = 'obj '
+class insertion_location(aetools.NProperty):
+       """insertion location - the container in which a new folder would appear if \96New Folder\94 was selected """
+       which = 'pins'
+       want = 'obj '
+class file_sharing(aetools.NProperty):
+       """file sharing - Is file sharing on? """
+       which = 'fshr'
+       want = 'bool'
+class sharing_starting_up(aetools.NProperty):
+       """sharing starting up - Is file sharing in the process of starting up? """
+       which = 'fsup'
+       want = 'bool'
+class product_version(aetools.NProperty):
+       """product version - the version of the System software running on this computer """
+       which = 'ver2'
+       want = 'itxt'
+class version(aetools.NProperty):
+       """version - the version of the Finder """
+       which = 'vers'
+       want = 'itxt'
+class about_this_computer(aetools.NProperty):
+       """about this computer - the \96About this Computer\94 dialog and the list of running processes displayed in it """
+       which = 'abbx'
+       want = 'obj '
+class desktop(aetools.NProperty):
+       """desktop - the desktop """
+       which = 'desk'
+       want = 'cdsk'
+class Finder_preferences(aetools.NProperty):
+       """Finder preferences - Various preferences that apply to the Finder as a whole """
+       which = 'pfrp'
+       want = 'cprf'
+#        element 'cobj' as ['indx', 'name']
+#        element 'ctnr' as ['indx', 'name']
+#        element 'sctr' as ['indx', 'name']
+#        element 'cdis' as ['indx', 'name', 'ID  ']
+#        element 'cfol' as ['indx', 'name', 'ID  ']
+#        element 'file' as ['indx', 'name']
+#        element 'alia' as ['indx', 'name']
+#        element 'appf' as ['indx', 'name', 'ID  ']
+#        element 'docf' as ['indx', 'name']
+#        element 'fntf' as ['indx', 'name']
+#        element 'dafi' as ['indx', 'name']
+#        element 'inlf' as ['indx', 'name']
+#        element 'sndf' as ['indx', 'name']
+#        element 'clpf' as ['indx', 'name']
+#        element 'pack' as ['indx', 'name']
+#        element 'stcs' as ['indx', 'name']
+#        element 'fsut' as ['indx', 'name']
+#        element 'dsut' as ['indx', 'name']
+#        element 'prcs' as ['indx', 'name']
+#        element 'pcap' as ['indx', 'name']
+#        element 'pcda' as ['indx', 'name']
+#        element 'cwin' as ['indx', 'name']
+#        element 'cwnd' as ['indx', 'name']
+#        element 'iwnd' as ['indx', 'name']
+#        element 'lwnd' as ['indx', 'name']
+#        element 'dwnd' as ['indx', 'name']
+
+class special_folders(aetools.ComponentItem):
+       """special folders - The special folders used by the Mac OS """
+       want = 'spfl'
+class system_folder(aetools.NProperty):
+       """system folder - the System folder """
+       which = 'macs'
+       want = 'obj '
+class apple_menu_items_folder(aetools.NProperty):
+       """apple menu items folder - the special folder named \96Apple Menu Items,\94 the contents of which appear in the Apple menu """
+       which = 'amnu'
+       want = 'obj '
+class control_panels_folder(aetools.NProperty):
+       """control panels folder - the special folder named \96Control Panels\94 """
+       which = 'ctrl'
+       want = 'obj '
+class extensions_folder(aetools.NProperty):
+       """extensions folder - the special folder named \96Extensions\94 """
+       which = 'extn'
+       want = 'obj '
+class fonts_folder(aetools.NProperty):
+       """fonts folder - the special folder named \96Fonts\94 """
+       which = 'font'
+       want = 'obj '
+class preferences_folder(aetools.NProperty):
+       """preferences folder - the special folder named \96Preferences\94 """
+       which = 'pref'
+       want = 'obj '
+class shutdown_items_folder(aetools.NProperty):
+       """shutdown items folder - the special folder named \96Shutdown Items\94 """
+       which = 'shdf'
+       want = 'obj '
+class startup_items_folder(aetools.NProperty):
+       """startup items folder - the special folder named \96Startup Items\94 """
+       which = 'strt'
+       want = 'obj '
+class temporary_items_folder(aetools.NProperty):
+       """temporary items folder - the special folder named \96Temporary Items\94 (invisible) """
+       which = 'temp'
+       want = 'obj '
+import Earlier_terms
+import Containers_and_folders
+import Files_and_suitcases
+import Process_classes
+import Window_classes
+application._propdict = {
+       'clipboard' : clipboard,
+       'largest_free_block' : largest_free_block,
+       'name' : name,
+       'visible' : visible,
+       'frontmost' : frontmost,
+       'selection' : selection,
+       'insertion_location' : insertion_location,
+       'file_sharing' : file_sharing,
+       'sharing_starting_up' : sharing_starting_up,
+       'product_version' : product_version,
+       'version' : version,
+       'about_this_computer' : about_this_computer,
+       'desktop' : desktop,
+       'Finder_preferences' : Finder_preferences,
+}
+application._elemdict = {
+       'item' : Earlier_terms.item,
+       'container' : Containers_and_folders.container,
+       'sharable_container' : Earlier_terms.sharable_container,
+       'disk' : Containers_and_folders.disk,
+       'folder' : Containers_and_folders.folder,
+       'file' : Files_and_suitcases.file,
+       'alias_file' : Files_and_suitcases.alias_file,
+       'application_file' : Earlier_terms.application_file,
+       'document_file' : Files_and_suitcases.document_file,
+       'font_file' : Files_and_suitcases.font_file,
+       'desk_accessory_file' : Files_and_suitcases.desk_accessory_file,
+       'internet_location' : Earlier_terms.internet_location,
+       'sound_file' : Files_and_suitcases.sound_file,
+       'clipping' : Files_and_suitcases.clipping,
+       'package' : Files_and_suitcases.package,
+       'suitcase' : Files_and_suitcases.suitcase,
+       'font_suitcase' : Files_and_suitcases.font_suitcase,
+       'accessory_suitcase' : Earlier_terms.accessory_suitcase,
+       'process' : Earlier_terms.process,
+       'application_process' : Process_classes.application_process,
+       'accessory_process' : Earlier_terms.accessory_process,
+       'window' : Earlier_terms.window,
+       'container_window' : Earlier_terms.container_window,
+       'information_window' : Earlier_terms.information_window,
+       'clipping_window' : Window_classes.clipping_window,
+       'content_space' : Window_classes.content_space,
+}
+special_folders._propdict = {
+       'system_folder' : system_folder,
+       'apple_menu_items_folder' : apple_menu_items_folder,
+       'control_panels_folder' : control_panels_folder,
+       'extensions_folder' : extensions_folder,
+       'fonts_folder' : fonts_folder,
+       'preferences_folder' : preferences_folder,
+       'shutdown_items_folder' : shutdown_items_folder,
+       'startup_items_folder' : startup_items_folder,
+       'temporary_items_folder' : temporary_items_folder,
+}
+special_folders._elemdict = {
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'spfl' : special_folders,
+       'capp' : application,
+}
+
+_propdeclarations = {
+       'amnu' : apple_menu_items_folder,
+       'extn' : extensions_folder,
+       'pnam' : name,
+       'fshr' : file_sharing,
+       'pcli' : clipboard,
+       'strt' : startup_items_folder,
+       'pref' : preferences_folder,
+       'pisf' : frontmost,
+       'pins' : insertion_location,
+       'pvis' : visible,
+       'abbx' : about_this_computer,
+       'temp' : temporary_items_folder,
+       'font' : fonts_folder,
+       'pfrp' : Finder_preferences,
+       'desk' : desktop,
+       'fsup' : sharing_starting_up,
+       'mfre' : largest_free_block,
+       'ctrl' : control_panels_folder,
+       'sele' : selection,
+       'shdf' : shutdown_items_folder,
+       'macs' : system_folder,
+       'ver2' : product_version,
+       'vers' : version,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Finder/Finder_items.py b/Mac/Lib/lib-scriptpackages/Finder/Finder_items.py
new file mode 100644 (file)
index 0000000..742c51a
--- /dev/null
@@ -0,0 +1,332 @@
+"""Suite Finder items: Commands used with file system items, and basic item definition
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Finder
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'fndr'
+
+class Finder_items_Events:
+
+       def add_to_favorites(self, _object, _attributes={}, **_arguments):
+               """add to favorites: Add the items to the Favorites menu in the Apple Menu and in Open and Save dialogs
+               Required argument: the items to add to the collection of Favorites
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'ffav'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_clean_up = {
+               'by' : 'by  ',
+       }
+
+       def clean_up(self, _object, _attributes={}, **_arguments):
+               """clean up: Arrange items in window nicely (only applies to open windows in icon or button views that are not kept arranged)
+               Required argument: the window to clean up
+               Keyword argument by: the order in which to clean up the objects (name, index, date, etc.)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'fclu'
+
+               aetools.keysubst(_arguments, self._argmap_clean_up)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def eject(self, _object=None, _attributes={}, **_arguments):
+               """eject: Eject the specified disk(s), or every ejectable disk if no parameter is specified
+               Required argument: the items to eject
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'ejct'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def empty(self, _object=None, _attributes={}, **_arguments):
+               """empty: Empty the trash
+               Required argument: \96empty\94 and \96empty trash\94 both do the same thing
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'empt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def erase(self, _object, _attributes={}, **_arguments):
+               """erase: Erase the specified disk(s)
+               Required argument: the items to erase
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'fera'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def put_away(self, _object, _attributes={}, **_arguments):
+               """put away: Put away the specified object(s)
+               Required argument: the items to put away
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the object put away in its put-away location
+               """
+               _code = 'fndr'
+               _subcode = 'ptwy'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def reveal(self, _object, _attributes={}, **_arguments):
+               """reveal: Bring the specified object(s) into view
+               Required argument: the object to be made visible
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'mvis'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def update(self, _object, _attributes={}, **_arguments):
+               """update: Update the display of the specified object(s) to match their on-disk representation
+               Required argument: the item to update
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'fndr'
+               _subcode = 'fupd'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class item(aetools.ComponentItem):
+       """item - An item """
+       want = 'cobj'
+class name(aetools.NProperty):
+       """name - the name of the item """
+       which = 'pnam'
+       want = 'itxt'
+class index(aetools.NProperty):
+       """index - the index in the front-to-back ordering within its container """
+       which = 'pidx'
+       want = 'long'
+class id(aetools.NProperty):
+       """id - an id that identifies the item """
+       which = 'ID  '
+       want = 'long'
+class container(aetools.NProperty):
+       """container - the container of the item """
+       which = 'ctnr'
+       want = 'obj '
+class disk(aetools.NProperty):
+       """disk - the disk on which the item is stored """
+       which = 'cdis'
+       want = 'obj '
+class folder(aetools.NProperty):
+       """folder - the folder in which the item is stored """
+       which = 'asdr'
+       want = 'obj '
+class position(aetools.NProperty):
+       """position - the position of the item within its parent window (can only be set for an item in a window viewed as icons or buttons) """
+       which = 'posn'
+       want = 'QDpt'
+class bounds(aetools.NProperty):
+       """bounds - the bounding rectangle of the item (can only be set for an item in a window viewed as icons or buttons) """
+       which = 'pbnd'
+       want = 'qdrt'
+class label_index(aetools.NProperty):
+       """label index - the label of the item """
+       which = 'labi'
+       want = 'long'
+class kind(aetools.NProperty):
+       """kind - the kind of the item """
+       which = 'kind'
+       want = 'itxt'
+class description(aetools.NProperty):
+       """description - a description of the item """
+       which = 'dscr'
+       want = 'itxt'
+class comment(aetools.NProperty):
+       """comment - the comment of the item, displayed in the \96Get Info\94 window """
+       which = 'comt'
+       want = 'itxt'
+class size(aetools.NProperty):
+       """size - the logical size of the item """
+       which = 'ptsz'
+       want = 'long'
+class physical_size(aetools.NProperty):
+       """physical size - the actual space used by the item on disk """
+       which = 'phys'
+       want = 'long'
+class creation_date(aetools.NProperty):
+       """creation date - the date on which the item was created """
+       which = 'ascd'
+       want = 'ldt '
+class modification_date(aetools.NProperty):
+       """modification date - the date on which the item was last modified """
+       which = 'asmo'
+       want = 'ldt '
+class icon(aetools.NProperty):
+       """icon - the icon bitmap of the item """
+       which = 'iimg'
+       want = 'ifam'
+class selected(aetools.NProperty):
+       """selected - Is the item selected? """
+       which = 'issl'
+       want = 'bool'
+class content_space(aetools.NProperty):
+       """content space - the window that would open if the item was opened """
+       which = 'dwnd'
+       want = 'obj '
+class window(aetools.NProperty):
+       """window - the window that would open if the item was opened """
+       which = 'cwin'
+       want = 'obj '
+class information_window(aetools.NProperty):
+       """information window - the information window for the item """
+       which = 'iwnd'
+       want = 'obj '
+
+items = item
+item._propdict = {
+       'name' : name,
+       'index' : index,
+       'id' : id,
+       'container' : container,
+       'disk' : disk,
+       'folder' : folder,
+       'position' : position,
+       'bounds' : bounds,
+       'label_index' : label_index,
+       'kind' : kind,
+       'description' : description,
+       'comment' : comment,
+       'size' : size,
+       'physical_size' : physical_size,
+       'creation_date' : creation_date,
+       'modification_date' : modification_date,
+       'icon' : icon,
+       'selected' : selected,
+       'content_space' : content_space,
+       'window' : window,
+       'information_window' : information_window,
+}
+item._elemdict = {
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'cobj' : item,
+}
+
+_propdeclarations = {
+       'iwnd' : information_window,
+       'cdis' : disk,
+       'asmo' : modification_date,
+       'ascd' : creation_date,
+       'pnam' : name,
+       'labi' : label_index,
+       'ID  ' : id,
+       'iimg' : icon,
+       'pidx' : index,
+       'dwnd' : content_space,
+       'cwin' : window,
+       'comt' : comment,
+       'dscr' : description,
+       'asdr' : folder,
+       'issl' : selected,
+       'pbnd' : bounds,
+       'ctnr' : container,
+       'phys' : physical_size,
+       'ptsz' : size,
+       'kind' : kind,
+       'posn' : position,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Finder/Obsolete_terms.py b/Mac/Lib/lib-scriptpackages/Finder/Obsolete_terms.py
new file mode 100644 (file)
index 0000000..6dfd9c6
--- /dev/null
@@ -0,0 +1,209 @@
+"""Suite Obsolete terms: Terms that have been deprecated
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Finder
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'tpnm'
+
+from StdSuites.Type_Names_Suite import *
+class Obsolete_terms_Events(Type_Names_Suite_Events):
+
+       pass
+
+
+class application(aetools.ComponentItem):
+       """application - The Finder """
+       want = 'capp'
+class view_preferences(aetools.NProperty):
+       """view preferences - backwards compatibility with Finder Scripting Extension. DEPRECATED -- not supported after Finder 8.0 """
+       which = 'pvwp'
+       want = 'obj '
+
+class container(aetools.ComponentItem):
+       """container - An item that contains other items """
+       want = 'ctnr'
+class container_window(aetools.NProperty):
+       """container window - the main window for the container """
+       which = 'cwnd'
+       want = 'obj '
+
+class container_window(aetools.ComponentItem):
+       """container window - A window that contains items """
+       want = 'cwnd'
+class folder_obsolete(aetools.NProperty):
+       """folder obsolete - the folder from which the window was opened (DEPRECATED - for use with scripts compiled before Finder 8.0. Will be removed in the next release.) """
+       which = 'cfol'
+       want = 'obj '
+
+class control_panel(aetools.ComponentItem):
+       """control panel - A control panel """
+       want = 'ccdv'
+
+control_panels = control_panel
+
+class file(aetools.ComponentItem):
+       """file - A file """
+       want = 'file'
+class file_type_obsolete(aetools.NProperty):
+       """file type obsolete - the OSType identifying the type of data contained in the item (DEPRECATED - for use with scripts compiled before Finder 8.0. Will be removed in the next release) """
+       which = 'fitp'
+       want = 'type'
+class locked_obsolete(aetools.NProperty):
+       """locked obsolete - Is the file locked? (DEPRECATED - for use with scripts compiled before Finder 8.0. Will be removed in the next release) """
+       which = 'islk'
+       want = 'bool'
+
+class information_window(aetools.ComponentItem):
+       """information window - An information window (opened by \96Get Info\94) """
+       want = 'iwnd'
+class creation_date_obsolete(aetools.NProperty):
+       """creation date obsolete - the date on which the item was created (DEPRECATED - for use with scripts compiled before Finder 8.0. Will be removed in the next release) """
+       which = 'crtd'
+       want = 'ldt '
+class modification_date_obsolete(aetools.NProperty):
+       """modification date obsolete - the date on which the item was last modified (DEPRECATED - for use with scripts compiled before Finder 8.0. Will be removed in the next release) """
+       which = 'modd'
+       want = 'ldt '
+
+class item(aetools.ComponentItem):
+       """item - An item """
+       want = 'cobj'
+
+class process(aetools.ComponentItem):
+       """process - A process running on this computer """
+       want = 'prcs'
+
+class sharable_container(aetools.ComponentItem):
+       """sharable container - A container that may be shared (disks and folders) """
+       want = 'sctr'
+class sharing_window(aetools.NProperty):
+       """sharing window - the sharing window for the container (file sharing must be on to use this property) """
+       which = 'swnd'
+       want = 'obj '
+
+class sharing_window(aetools.ComponentItem):
+       """sharing window - A sharing window (opened by \96Sharing\83\94) """
+       want = 'swnd'
+class sharable_container(aetools.NProperty):
+       """sharable container - the sharable container from which the window was opened """
+       which = 'sctr'
+       want = 'obj '
+class item(aetools.NProperty):
+       """item - the item from which this window was opened """
+       which = 'cobj'
+       want = 'obj '
+class container(aetools.NProperty):
+       """container - the container from which this window was opened """
+       which = 'ctnr'
+       want = 'obj '
+
+sharing_windows = sharing_window
+
+class status_window(aetools.ComponentItem):
+       """status window - Progress dialogs (e.g., copy window, rebuild desktop database, empty trash) """
+       want = 'qwnd'
+
+status_windows = status_window
+application._propdict = {
+       'view_preferences' : view_preferences,
+}
+application._elemdict = {
+}
+container._propdict = {
+       'container_window' : container_window,
+}
+container._elemdict = {
+}
+container_window._propdict = {
+       'folder_obsolete' : folder_obsolete,
+}
+container_window._elemdict = {
+}
+control_panel._propdict = {
+}
+control_panel._elemdict = {
+}
+file._propdict = {
+       'file_type_obsolete' : file_type_obsolete,
+       'locked_obsolete' : locked_obsolete,
+}
+file._elemdict = {
+}
+information_window._propdict = {
+       'creation_date_obsolete' : creation_date_obsolete,
+       'locked_obsolete' : locked_obsolete,
+       'modification_date_obsolete' : modification_date_obsolete,
+}
+information_window._elemdict = {
+}
+item._propdict = {
+       'creation_date_obsolete' : creation_date_obsolete,
+       'folder_obsolete' : folder_obsolete,
+       'modification_date_obsolete' : modification_date_obsolete,
+}
+item._elemdict = {
+}
+process._propdict = {
+       'file_type_obsolete' : file_type_obsolete,
+}
+process._elemdict = {
+}
+sharable_container._propdict = {
+       'sharing_window' : sharing_window,
+}
+sharable_container._elemdict = {
+}
+sharing_window._propdict = {
+       'sharable_container' : sharable_container,
+       'item' : item,
+       'container' : container,
+       'folder_obsolete' : folder_obsolete,
+}
+sharing_window._elemdict = {
+}
+status_window._propdict = {
+}
+status_window._elemdict = {
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'ccdv' : control_panel,
+       'iwnd' : information_window,
+       'ctnr' : container,
+       'capp' : application,
+       'sctr' : sharable_container,
+       'cwnd' : container_window,
+       'prcs' : process,
+       'file' : file,
+       'cobj' : item,
+       'qwnd' : status_window,
+       'swnd' : sharing_window,
+}
+
+_propdeclarations = {
+       'crtd' : creation_date_obsolete,
+       'cfol' : folder_obsolete,
+       'ctnr' : container,
+       'cwnd' : container_window,
+       'pvwp' : view_preferences,
+       'swnd' : sharing_window,
+       'sctr' : sharable_container,
+       'cobj' : item,
+       'modd' : modification_date_obsolete,
+       'islk' : locked_obsolete,
+       'fitp' : file_type_obsolete,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Finder/Type_Definitions.py b/Mac/Lib/lib-scriptpackages/Finder/Type_Definitions.py
new file mode 100644 (file)
index 0000000..b4d6037
--- /dev/null
@@ -0,0 +1,270 @@
+"""Suite Type Definitions: Definitions of records used in scripting the Finder
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Finder
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'tpdf'
+
+class Type_Definitions_Events:
+
+       pass
+
+
+class preferences(aetools.ComponentItem):
+       """preferences - The Finder Preferences """
+       want = 'cprf'
+class window(aetools.NProperty):
+       """window - the window that would open if Finder preferences was opened """
+       which = 'cwin'
+       want = 'pwnd'
+class button_view_arrangement(aetools.NProperty):
+       """button view arrangement - the method of arrangement of icons in default Finder button view windows """
+       which = 'barr'
+       want = 'earr'
+class button_view_icon_size(aetools.NProperty):
+       """button view icon size - the size of icons displayed in Finder button view windows. """
+       which = 'bisz'
+       want = 'long'
+class spatial_view_arrangement(aetools.NProperty):
+       """spatial view arrangement - the method of arrangement of icons in default Finder spatial view windows """
+       which = 'iarr'
+       want = 'earr'
+class spatial_view_icon_size(aetools.NProperty):
+       """spatial view icon size - the size of icons displayed in Finder spatial view windows. """
+       which = 'iisz'
+       want = 'long'
+class calculates_folder_sizes(aetools.NProperty):
+       """calculates folder sizes - Are folder sizes calculated and displayed in Finder list view windows? """
+       which = 'sfsz'
+       want = 'bool'
+class list_view_icon_size(aetools.NProperty):
+       """list view icon size - the size of icons displayed in Finder list view windows. """
+       which = 'lisz'
+       want = 'long'
+class shows_comments(aetools.NProperty):
+       """shows comments - Are comments displayed in default Finder list view windows? """
+       which = 'scom'
+       want = 'bool'
+class shows_creation_date(aetools.NProperty):
+       """shows creation date - Are creation dates displayed in default Finder list view windows? """
+       which = 'scda'
+       want = 'bool'
+class shows_kind(aetools.NProperty):
+       """shows kind - Are document kinds displayed in default Finder list view windows? """
+       which = 'sknd'
+       want = 'bool'
+class shows_label(aetools.NProperty):
+       """shows label - Are labels displayed in default Finder list view windows? """
+       which = 'slbl'
+       want = 'bool'
+class shows_modification_date(aetools.NProperty):
+       """shows modification date - Are modification dates displayed in default Finder list view windows? """
+       which = 'sdat'
+       want = 'bool'
+class shows_size(aetools.NProperty):
+       """shows size - Are file sizes displayed in default Finder list view windows? """
+       which = 'ssiz'
+       want = 'bool'
+class shows_version(aetools.NProperty):
+       """shows version - Are file versions displayed in default Finder list view windows? """
+       which = 'svrs'
+       want = 'bool'
+class uses_relative_dates(aetools.NProperty):
+       """uses relative dates - Are relative dates (e.g., today, yesterday) shown  in Finder list view windows? """
+       which = 'urdt'
+       want = 'bool'
+class uses_simple_menus(aetools.NProperty):
+       """uses simple menus - Use simplified Finder menus? """
+       which = 'usme'
+       want = 'bool'
+class uses_wide_grid(aetools.NProperty):
+       """uses wide grid - Space icons on a wide grid? """
+       which = 'uswg'
+       want = 'bool'
+class spring_open_folders(aetools.NProperty):
+       """spring open folders - Spring open folders after the specified delay? """
+       which = 'sprg'
+       want = 'bool'
+class delay_before_springing(aetools.NProperty):
+       """delay before springing - the delay before springing open a container in ticks (1/60th of a second) (12 is shortest delay, 60 is longest delay) """
+       which = 'dela'
+       want = 'shor'
+class view_font(aetools.NProperty):
+       """view font - the id of the font used in Finder views. """
+       which = 'vfnt'
+       want = 'long'
+class view_font_size(aetools.NProperty):
+       """view font size - the size of the font used in Finder views """
+       which = 'vfsz'
+       want = 'long'
+#        element 'clbl' as ['indx', 'name']
+
+class label(aetools.ComponentItem):
+       """label - A Finder label (name and color) """
+       want = 'clbl'
+class name(aetools.NProperty):
+       """name - the name associated with the label """
+       which = 'pnam'
+       want = 'itxt'
+class index(aetools.NProperty):
+       """index - the index in the front-to-back ordering within its container """
+       which = 'pidx'
+       want = 'long'
+class color(aetools.NProperty):
+       """color - the color associated with the label """
+       which = 'colr'
+       want = 'cRGB'
+
+class icon_family(aetools.ComponentItem):
+       """icon family - A family of icons """
+       want = 'ifam'
+class large_monochrome_icon_and_mask(aetools.NProperty):
+       """large monochrome icon and mask - the large black-and-white icon and the mask for large icons """
+       which = 'ICN#'
+       want = 'ICN#'
+class large_8_bit_mask(aetools.NProperty):
+       """large 8 bit mask - the large 8-bit mask for large 32-bit icons """
+       which = 'l8mk'
+       want = 'l8mk'
+class large_32_bit_icon(aetools.NProperty):
+       """large 32 bit icon - the large 32-bit color icon """
+       which = 'il32'
+       want = 'il32'
+class large_8_bit_icon(aetools.NProperty):
+       """large 8 bit icon - the large 8-bit color icon """
+       which = 'icl8'
+       want = 'icl8'
+class large_4_bit_icon(aetools.NProperty):
+       """large 4 bit icon - the large 4-bit color icon """
+       which = 'icl4'
+       want = 'icl4'
+class small_monochrome_icon_and_mask(aetools.NProperty):
+       """small monochrome icon and mask - the small black-and-white icon and the mask for small icons """
+       which = 'ics#'
+       want = 'ics#'
+class small_8_bit_mask(aetools.NProperty):
+       """small 8 bit mask - the small 8-bit mask for small 32-bit icons """
+       which = 'ics8'
+       want = 's8mk'
+class small_32_bit_icon(aetools.NProperty):
+       """small 32 bit icon - the small 32-bit color icon """
+       which = 'is32'
+       want = 'is32'
+
+small_8_bit_icon = small_8_bit_mask
+class small_4_bit_icon(aetools.NProperty):
+       """small 4 bit icon - the small 4-bit color icon """
+       which = 'ics4'
+       want = 'ics4'
+
+class alias_list(aetools.ComponentItem):
+       """alias list - A list of aliases.  Use \95as alias listÕ when a list of aliases is needed (instead of a list of file system item references). """
+       want = 'alst'
+preferences._propdict = {
+       'window' : window,
+       'button_view_arrangement' : button_view_arrangement,
+       'button_view_icon_size' : button_view_icon_size,
+       'spatial_view_arrangement' : spatial_view_arrangement,
+       'spatial_view_icon_size' : spatial_view_icon_size,
+       'calculates_folder_sizes' : calculates_folder_sizes,
+       'list_view_icon_size' : list_view_icon_size,
+       'shows_comments' : shows_comments,
+       'shows_creation_date' : shows_creation_date,
+       'shows_kind' : shows_kind,
+       'shows_label' : shows_label,
+       'shows_modification_date' : shows_modification_date,
+       'shows_size' : shows_size,
+       'shows_version' : shows_version,
+       'uses_relative_dates' : uses_relative_dates,
+       'uses_simple_menus' : uses_simple_menus,
+       'uses_wide_grid' : uses_wide_grid,
+       'spring_open_folders' : spring_open_folders,
+       'delay_before_springing' : delay_before_springing,
+       'view_font' : view_font,
+       'view_font_size' : view_font_size,
+}
+preferences._elemdict = {
+       'label' : label,
+}
+label._propdict = {
+       'name' : name,
+       'index' : index,
+       'color' : color,
+}
+label._elemdict = {
+}
+icon_family._propdict = {
+       'large_monochrome_icon_and_mask' : large_monochrome_icon_and_mask,
+       'large_8_bit_mask' : large_8_bit_mask,
+       'large_32_bit_icon' : large_32_bit_icon,
+       'large_8_bit_icon' : large_8_bit_icon,
+       'large_4_bit_icon' : large_4_bit_icon,
+       'small_monochrome_icon_and_mask' : small_monochrome_icon_and_mask,
+       'small_8_bit_mask' : small_8_bit_mask,
+       'small_32_bit_icon' : small_32_bit_icon,
+       'small_8_bit_icon' : small_8_bit_icon,
+       'small_4_bit_icon' : small_4_bit_icon,
+}
+icon_family._elemdict = {
+}
+alias_list._propdict = {
+}
+alias_list._elemdict = {
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'clbl' : label,
+       'ifam' : icon_family,
+       'alst' : alias_list,
+       'cprf' : preferences,
+}
+
+_propdeclarations = {
+       'ics#' : small_monochrome_icon_and_mask,
+       'scda' : shows_creation_date,
+       'uswg' : uses_wide_grid,
+       'sprg' : spring_open_folders,
+       'is32' : small_32_bit_icon,
+       'ICN#' : large_monochrome_icon_and_mask,
+       'cwin' : window,
+       'sdat' : shows_modification_date,
+       'iisz' : spatial_view_icon_size,
+       'barr' : button_view_arrangement,
+       'il32' : large_32_bit_icon,
+       'l8mk' : large_8_bit_mask,
+       'scom' : shows_comments,
+       'bisz' : button_view_icon_size,
+       'lisz' : list_view_icon_size,
+       'slbl' : shows_label,
+       'icl4' : large_4_bit_icon,
+       'usme' : uses_simple_menus,
+       'urdt' : uses_relative_dates,
+       'vfnt' : view_font,
+       'sfsz' : calculates_folder_sizes,
+       'pidx' : index,
+       'icl8' : large_8_bit_icon,
+       'ssiz' : shows_size,
+       'ics8' : small_8_bit_mask,
+       'colr' : color,
+       'svrs' : shows_version,
+       'pnam' : name,
+       'sknd' : shows_kind,
+       'vfsz' : view_font_size,
+       'iarr' : spatial_view_arrangement,
+       'ics4' : small_4_bit_icon,
+       'dela' : delay_before_springing,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Finder/Window_classes.py b/Mac/Lib/lib-scriptpackages/Finder/Window_classes.py
new file mode 100644 (file)
index 0000000..4986946
--- /dev/null
@@ -0,0 +1,391 @@
+"""Suite Window classes: Classes representing windows
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Finder
+AETE/AEUT resource version 0/144, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'fndr'
+
+class Window_classes_Events:
+
+       pass
+
+
+class window(aetools.ComponentItem):
+       """window - A window """
+       want = 'cwin'
+class position(aetools.NProperty):
+       """position - the upper left position of the window """
+       which = 'posn'
+       want = 'QDpt'
+class bounds(aetools.NProperty):
+       """bounds - the boundary rectangle for the window """
+       which = 'pbnd'
+       want = 'qdrt'
+class titled(aetools.NProperty):
+       """titled - Does the window have a title bar? """
+       which = 'ptit'
+       want = 'bool'
+class name(aetools.NProperty):
+       """name - the name of the window """
+       which = 'pnam'
+       want = 'itxt'
+class index(aetools.NProperty):
+       """index - the number of the window in the front-to-back layer ordering """
+       which = 'pidx'
+       want = 'long'
+class closeable(aetools.NProperty):
+       """closeable - Does the window have a close box? """
+       which = 'hclb'
+       want = 'bool'
+class floating(aetools.NProperty):
+       """floating - Does the window have a title bar? """
+       which = 'isfl'
+       want = 'bool'
+class modal(aetools.NProperty):
+       """modal - Is the window modal? """
+       which = 'pmod'
+       want = 'bool'
+
+resizable = titled
+class zoomable(aetools.NProperty):
+       """zoomable - Is the window zoomable? """
+       which = 'iszm'
+       want = 'bool'
+class zoomed(aetools.NProperty):
+       """zoomed - Is the window zoomed? """
+       which = 'pzum'
+       want = 'bool'
+class zoomed_full_size(aetools.NProperty):
+       """zoomed full size - Is the window zoomed to the full size of the screen? (can only be set, not read, and only applies to open non-pop-up windows) """
+       which = 'zumf'
+       want = 'bool'
+class visible(aetools.NProperty):
+       """visible - Is the window visible (always true for open Finder windows)? """
+       which = 'pvis'
+       want = 'bool'
+class popup(aetools.NProperty):
+       """popup - Is the window is a pop-up window? (only applies to open container windows in the Finder and can only be set when the Finder is the front application) """
+       which = 'drwr'
+       want = 'bool'
+class pulled_open(aetools.NProperty):
+       """pulled open - Is the window pulled open (only applies to pop-up windows and can only be set when the Finder is the front application)? """
+       which = 'pull'
+       want = 'bool'
+class collapsed(aetools.NProperty):
+       """collapsed - Is the window collapsed (only applies to open non-pop-up windows)? """
+       which = 'wshd'
+       want = 'bool'
+
+windows = window
+
+class container_window(aetools.ComponentItem):
+       """container window - A window that contains items """
+       want = 'cwnd'
+class _3c_Inheritance_3e_(aetools.NProperty):
+       """<Inheritance> - inherits some of its properties from the window class """
+       which = 'c@#^'
+       want = 'cwin'
+class container(aetools.NProperty):
+       """container - the container from which the window was opened """
+       which = 'ctnr'
+       want = 'obj '
+class item(aetools.NProperty):
+       """item - the item from which the window was opened (always returns something) """
+       which = 'cobj'
+       want = 'obj '
+class has_custom_view_settings(aetools.NProperty):
+       """has custom view settings - Does the folder have custom view settings or is it using the default global settings? """
+       which = 'cuss'
+       want = 'bool'
+class view(aetools.NProperty):
+       """view - the current view for the window (icon, name, date, etc.) """
+       which = 'pvew'
+       want = 'long'
+class previous_list_view(aetools.NProperty):
+       """previous list view - the last non-icon view (by name, by date, etc.) selected for the container (forgotten as soon as the window is closed and only available when the window is open) """
+       which = 'svew'
+       want = 'enum'
+class button_view_arrangement(aetools.NProperty):
+       """button view arrangement - the property by which to keep icons arranged within a button view window """
+       which = 'barr'
+       want = 'earr'
+class spatial_view_arrangement(aetools.NProperty):
+       """spatial view arrangement - the property by which to keep icons arranged within a spatial view window """
+       which = 'iarr'
+       want = 'earr'
+class sort_direction(aetools.NProperty):
+       """sort direction - The direction in which the window is sorted """
+       which = 'sord'
+       want = 'sodr'
+class calculates_folder_sizes(aetools.NProperty):
+       """calculates folder sizes - Are folder sizes calculated and displayed in the window? (does not apply to suitcase windows) """
+       which = 'sfsz'
+       want = 'bool'
+class shows_comments(aetools.NProperty):
+       """shows comments - Are comments displayed in the window? (does not apply to suitcases) """
+       which = 'scom'
+       want = 'bool'
+class shows_creation_date(aetools.NProperty):
+       """shows creation date - Are creation dates displayed in the window? """
+       which = 'scda'
+       want = 'bool'
+class shows_kind(aetools.NProperty):
+       """shows kind - Are document kinds displayed in the window? """
+       which = 'sknd'
+       want = 'bool'
+class shows_label(aetools.NProperty):
+       """shows label - Are labels displayed in the window? """
+       which = 'slbl'
+       want = 'bool'
+class shows_modification_date(aetools.NProperty):
+       """shows modification date - Are modification dates displayed in the window? """
+       which = 'sdat'
+       want = 'bool'
+class shows_size(aetools.NProperty):
+       """shows size - Are file sizes displayed in the window? """
+       which = 'ssiz'
+       want = 'bool'
+class shows_version(aetools.NProperty):
+       """shows version - Are file versions displayed in the window? (does not apply to suitcase windows) """
+       which = 'svrs'
+       want = 'bool'
+class uses_relative_dates(aetools.NProperty):
+       """uses relative dates - Are relative dates (e.g., today, yesterday) shown in the window? """
+       which = 'urdt'
+       want = 'bool'
+
+container_windows = container_window
+
+class information_window(aetools.ComponentItem):
+       """information window - An information window (opened by \96Get Info\94) """
+       want = 'iwnd'
+class current_panel(aetools.NProperty):
+       """current panel - the current panel in the information window """
+       which = 'panl'
+       want = 'ipnl'
+class comment(aetools.NProperty):
+       """comment - the comment """
+       which = 'comt'
+       want = 'itxt'
+class size(aetools.NProperty):
+       """size - the logical size of the item """
+       which = 'ptsz'
+       want = 'long'
+class physical_size(aetools.NProperty):
+       """physical size - the actual space used by the item on disk """
+       which = 'phys'
+       want = 'long'
+class creation_date(aetools.NProperty):
+       """creation date - the date on which the item was created """
+       which = 'ascd'
+       want = 'ldt '
+class modification_date(aetools.NProperty):
+       """modification date - the date on which the item was last modified """
+       which = 'asmo'
+       want = 'ldt '
+class suggested_size(aetools.NProperty):
+       """suggested size - the memory size with which the developer recommends the application be launched """
+       which = 'sprt'
+       want = 'long'
+class minimum_size(aetools.NProperty):
+       """minimum size - the smallest memory size with which the application can be launched (only applies to information windows for applications) """
+       which = 'mprt'
+       want = 'long'
+class preferred_size(aetools.NProperty):
+       """preferred size - the memory size with which the application will be launched (only applies to information windows for applications) """
+       which = 'appt'
+       want = 'long'
+class icon(aetools.NProperty):
+       """icon - the icon bitmap of the item """
+       which = 'iimg'
+       want = 'ifam'
+class locked(aetools.NProperty):
+       """locked - Is the item locked (applies only to file and application information windows)? """
+       which = 'aslk'
+       want = 'bool'
+class stationery(aetools.NProperty):
+       """stationery - Is the item a stationery pad? """
+       which = 'pspd'
+       want = 'bool'
+class warns_before_emptying(aetools.NProperty):
+       """warns before emptying - Display a dialog when emptying the trash (only valid for trash info window)? """
+       which = 'warn'
+       want = 'bool'
+class product_version(aetools.NProperty):
+       """product version - the version of the product (visible at the top of the \96Get Info\94 window) """
+       which = 'ver2'
+       want = 'itxt'
+class version(aetools.NProperty):
+       """version - the version of the file (visible at the bottom of the \96Get Info\94 window) """
+       which = 'vers'
+       want = 'itxt'
+
+information_windows = information_window
+
+class preferences_window(aetools.ComponentItem):
+       """preferences window - The Finder Preferences window """
+       want = 'pwnd'
+
+class clipping_window(aetools.ComponentItem):
+       """clipping window - The window containing a clipping """
+       want = 'lwnd'
+
+clipping_windows = clipping_window
+
+class content_space(aetools.ComponentItem):
+       """content space - All windows, including the desktop window (\96Window\94 does not include the desktop window) """
+       want = 'dwnd'
+
+content_spaces = content_space
+window._propdict = {
+       'position' : position,
+       'bounds' : bounds,
+       'titled' : titled,
+       'name' : name,
+       'index' : index,
+       'closeable' : closeable,
+       'floating' : floating,
+       'modal' : modal,
+       'resizable' : resizable,
+       'zoomable' : zoomable,
+       'zoomed' : zoomed,
+       'zoomed_full_size' : zoomed_full_size,
+       'visible' : visible,
+       'popup' : popup,
+       'pulled_open' : pulled_open,
+       'collapsed' : collapsed,
+}
+window._elemdict = {
+}
+container_window._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'container' : container,
+       'item' : item,
+       'has_custom_view_settings' : has_custom_view_settings,
+       'view' : view,
+       'previous_list_view' : previous_list_view,
+       'button_view_arrangement' : button_view_arrangement,
+       'spatial_view_arrangement' : spatial_view_arrangement,
+       'sort_direction' : sort_direction,
+       'calculates_folder_sizes' : calculates_folder_sizes,
+       'shows_comments' : shows_comments,
+       'shows_creation_date' : shows_creation_date,
+       'shows_kind' : shows_kind,
+       'shows_label' : shows_label,
+       'shows_modification_date' : shows_modification_date,
+       'shows_size' : shows_size,
+       'shows_version' : shows_version,
+       'uses_relative_dates' : uses_relative_dates,
+}
+container_window._elemdict = {
+}
+information_window._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'item' : item,
+       'current_panel' : current_panel,
+       'comment' : comment,
+       'size' : size,
+       'physical_size' : physical_size,
+       'creation_date' : creation_date,
+       'modification_date' : modification_date,
+       'suggested_size' : suggested_size,
+       'minimum_size' : minimum_size,
+       'preferred_size' : preferred_size,
+       'icon' : icon,
+       'locked' : locked,
+       'stationery' : stationery,
+       'warns_before_emptying' : warns_before_emptying,
+       'product_version' : product_version,
+       'version' : version,
+}
+information_window._elemdict = {
+}
+preferences_window._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+       'current_panel' : current_panel,
+}
+preferences_window._elemdict = {
+}
+clipping_window._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+clipping_window._elemdict = {
+}
+content_space._propdict = {
+}
+content_space._elemdict = {
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'dwnd' : content_space,
+       'iwnd' : information_window,
+       'lwnd' : clipping_window,
+       'cwnd' : container_window,
+       'cwin' : window,
+       'pwnd' : preferences_window,
+}
+
+_propdeclarations = {
+       'pidx' : index,
+       'scda' : shows_creation_date,
+       'vers' : version,
+       'aslk' : locked,
+       'pvew' : view,
+       'sdat' : shows_modification_date,
+       'drwr' : popup,
+       'sprt' : suggested_size,
+       'pvis' : visible,
+       'ptsz' : size,
+       'pull' : pulled_open,
+       'slbl' : shows_label,
+       'wshd' : collapsed,
+       'ctnr' : container,
+       'ascd' : creation_date,
+       'warn' : warns_before_emptying,
+       'sord' : sort_direction,
+       'iszm' : zoomable,
+       'comt' : comment,
+       'svew' : previous_list_view,
+       'svrs' : shows_version,
+       'sknd' : shows_kind,
+       'phys' : physical_size,
+       'iarr' : spatial_view_arrangement,
+       'posn' : position,
+       'ptit' : titled,
+       'cobj' : item,
+       'asmo' : modification_date,
+       'ssiz' : shows_size,
+       'pnam' : name,
+       'pbnd' : bounds,
+       'mprt' : minimum_size,
+       'iimg' : icon,
+       'cuss' : has_custom_view_settings,
+       'appt' : preferred_size,
+       'scom' : shows_comments,
+       'pmod' : modal,
+       'panl' : current_panel,
+       'urdt' : uses_relative_dates,
+       'zumf' : zoomed_full_size,
+       'sfsz' : calculates_folder_sizes,
+       'c@#^' : _3c_Inheritance_3e_,
+       'isfl' : floating,
+       'hclb' : closeable,
+       'pspd' : stationery,
+       'pzum' : zoomed,
+       'barr' : button_view_arrangement,
+       'ver2' : product_version,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Netscape/Mozilla_suite.py b/Mac/Lib/lib-scriptpackages/Netscape/Mozilla_suite.py
new file mode 100644 (file)
index 0000000..57b61b3
--- /dev/null
@@ -0,0 +1,269 @@
+"""Suite Mozilla suite: Experimental Mozilla suite
+Level 1, version 1
+
+Generated from Macintosh HD:Internet:Internet-programma's:Netscape Communicator\8e-map:Netscape Communicator\8e
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'MOSS'
+
+class Mozilla_suite_Events:
+
+       _argmap_Read_help_file = {
+               'with_index' : 'idid',
+               'search_text' : 'sear',
+       }
+
+       def Read_help_file(self, _object, _attributes={}, **_arguments):
+               """Read help file: Reads in the help file (file should be in the help file format)
+               Required argument: undocumented, typecode 'alis'
+               Keyword argument with_index: Index to the help file. Defaults to  \95DEFAULTÕ)
+               Keyword argument search_text: Optional text to search for
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MOSS'
+               _subcode = 'help'
+
+               aetools.keysubst(_arguments, self._argmap_Read_help_file)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Open_bookmark(self, _object=None, _attributes={}, **_arguments):
+               """Open bookmark: Reads in a bookmark file
+               Required argument: If not available, reloads the current bookmark file
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MOSS'
+               _subcode = 'book'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Go = {
+               'direction' : 'dire',
+       }
+
+       def Go(self, _object, _attributes={}, **_arguments):
+               """Go: navigate a window: back, forward, again(reload), home)
+               Required argument: window
+               Keyword argument direction: undocumented, typecode 'dire'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MOSS'
+               _subcode = 'gogo'
+
+               aetools.keysubst(_arguments, self._argmap_Go)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'dire', _Enum_dire)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_workingURL(self, _no_object=None, _attributes={}, **_arguments):
+               """Get workingURL: Get the path to the running application in URL format.  This will allow a script to construct a relative URL
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Will return text of the from \96FILE://foo/applicationname\94
+               """
+               _code = 'MOSS'
+               _subcode = 'wurl'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Open_Profile_Manager(self, _no_object=None, _attributes={}, **_arguments):
+               """Open Profile Manager: Open the user profile manager (obsolete)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MOSS'
+               _subcode = 'prfl'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Import_Data(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Import Data: Returns a structure containing information that is of use to an external module in importing data from an external mail application into Communicator.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: vRefNum and dirID of profile folder (2+4 bytes), vRefNum and DirID of the local mail folder (2+4 bytes), window type of front window (0 if none, \95BrwzÕ browser, \95AddrÕ addressbook, \95MesgÕ messenger, etc., 4 bytes)
+               """
+               _code = 'MOSS'
+               _subcode = 'Impt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Get_Profile_Name(self, _no_object=None, _attributes={}, **_arguments):
+               """Get Profile Name: Get the current User Profile
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Name of the current profile, like \96Joe Bloggs\94. This is the name of the profile folder in the Netscape Users folder.
+               """
+               _code = 'MOSS'
+               _subcode = 'upro'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Open_Address_Book(self, _no_object=None, _attributes={}, **_arguments):
+               """Open Address Book: Opens the address book
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MOSS'
+               _subcode = 'addr'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Open_Component(self, _object, _attributes={}, **_arguments):
+               """Open Component: Open a Communicator component
+               Required argument: The component to open
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MOSS'
+               _subcode = 'cpnt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def Handle_command(self, _object, _attributes={}, **_arguments):
+               """Handle command: Handle a command
+               Required argument: The command to handle
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'MOSS'
+               _subcode = 'hcmd'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+_Enum_dire = {
+       'again' : 'agai',       # Again (reload)
+       'home' : 'home',        # Home
+       'backward' : 'prev',    # Previous page
+       'forward' : 'next',     # Next page
+}
+
+_Enum_comp = {
+       'Navigator' : 'navg',   # The Navigator component
+       'InBox' : 'inbx',       # The InBox component
+       'Newsgroups' : 'colb',  # The Newsgroups component
+       'Composer' : 'cpsr',    # The Page Composer component
+       'Conference' : 'conf',  # The Conference Component
+       'Calendar' : 'cald',    # The Calendar Component
+}
+
+_Enum_ncmd = {
+       'Get_new_mail' : '\000\000\004W',       # 
+       'Send_queued_messages' : '\000\000\004X',       # 
+       'Read_newsgroups' : '\000\000\004\004', # 
+       'Show_Inbox' : '\000\000\004\005',      # 
+       'Show_Bookmarks_window' : '\000\000\004\006',   # 
+       'Show_History_window' : '\000\000\004\007',     # 
+       'Show_Address_Book_window' : '\000\000\004\011',        # 
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+}
+
+_propdeclarations = {
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'dire' : _Enum_dire,
+       'comp' : _Enum_comp,
+       'ncmd' : _Enum_ncmd,
+}
diff --git a/Mac/Lib/lib-scriptpackages/Netscape/PowerPlant.py b/Mac/Lib/lib-scriptpackages/Netscape/PowerPlant.py
new file mode 100644 (file)
index 0000000..b57086d
--- /dev/null
@@ -0,0 +1,86 @@
+"""Suite PowerPlant: 
+Level 0, version 0
+
+Generated from Macintosh HD:Internet:Internet-programma's:Netscape Communicator\8e-map:Netscape Communicator\8e
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'ppnt'
+
+class PowerPlant_Events:
+
+       _argmap_select = {
+               'data' : 'data',
+       }
+
+       def select(self, _object, _attributes={}, **_arguments):
+               """select: Sets the present selection
+               Required argument: object to select or container of sub-objects to select
+               Keyword argument data: sub-object(s) to select
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'slct'
+
+               aetools.keysubst(_arguments, self._argmap_select)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_SwitchTellTarget = {
+               'to' : 'data',
+       }
+
+       def SwitchTellTarget(self, _no_object=None, _attributes={}, **_arguments):
+               """SwitchTellTarget: Makes an object the \96focus\94 of AppleEvents
+               Keyword argument to: reference to new focus of AppleEvents
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ppnt'
+               _subcode = 'sttg'
+
+               aetools.keysubst(_arguments, self._argmap_SwitchTellTarget)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+_Enum_dbac = {
+       'DoNothing' : '\000\000\000\000',       # No debugging action is taken.
+       'PostAlert' : '\000\000\000\001',       # Post an alert.
+       'LowLevelDebugger' : '\000\000\000\002',        # Break into the low level debugger (MacsBug).
+       'SourceDebugger' : '\000\000\000\003',  # Break into the source level debugger (if source debugger is executing).
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+}
+
+_propdeclarations = {
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'dbac' : _Enum_dbac,
+}
diff --git a/Mac/Lib/lib-scriptpackages/Netscape/Required_suite.py b/Mac/Lib/lib-scriptpackages/Netscape/Required_suite.py
new file mode 100644 (file)
index 0000000..90b37ff
--- /dev/null
@@ -0,0 +1,108 @@
+"""Suite Required suite: 
+Level 0, version 0
+
+Generated from Macintosh HD:Internet:Internet-programma's:Netscape Communicator\8e-map:Netscape Communicator\8e
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'reqd'
+
+from StdSuites.Required_Suite import *
+class Required_suite_Events(Required_Suite_Events):
+
+       def open(self, _object, _attributes={}, **_arguments):
+               """open: Open the specified object(s)
+               Required argument: list of objects to open
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'odoc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _print(self, _object, _attributes={}, **_arguments):
+               """print: Print the specified object(s)
+               Required argument: list of objects to print
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'pdoc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def quit(self, _no_object=None, _attributes={}, **_arguments):
+               """quit: Quit Navigator
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'quit'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def run(self, _no_object=None, _attributes={}, **_arguments):
+               """run: Sent to an application when it is double-clicked
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'oapp'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+}
+
+_propdeclarations = {
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Netscape/Standard_Suite.py b/Mac/Lib/lib-scriptpackages/Netscape/Standard_Suite.py
new file mode 100644 (file)
index 0000000..1044ca8
--- /dev/null
@@ -0,0 +1,238 @@
+"""Suite Standard Suite: Common terms for most applications
+Level 1, version 1
+
+Generated from Macintosh HD:Internet:Internet-programma's:Netscape Communicator\8e-map:Netscape Communicator\8e
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'CoRe'
+
+class Standard_Suite_Events:
+
+       def close(self, _object, _attributes={}, **_arguments):
+               """close: Close an object
+               Required argument: the objects to close
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'clos'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def data_size(self, _object, _attributes={}, **_arguments):
+               """data size: Return the size in bytes of an object
+               Required argument: the object whose data size is to be returned
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the size of the object in bytes
+               """
+               _code = 'core'
+               _subcode = 'dsiz'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def get(self, _object, _attributes={}, **_arguments):
+               """get: Get the data for an object
+               Required argument: the object whose data is to be returned
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The data from the object
+               """
+               _code = 'core'
+               _subcode = 'getd'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_set = {
+               'to' : 'data',
+       }
+
+       def set(self, _object, _attributes={}, **_arguments):
+               """set: Set an objectÕs data
+               Required argument: the object to change
+               Keyword argument to: the new value
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'setd'
+
+               aetools.keysubst(_arguments, self._argmap_set)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class application(aetools.ComponentItem):
+       """application - An application program """
+       want = 'capp'
+class alert_application(aetools.NProperty):
+       """alert application - Most of the alerts will be sent to this application using yet unspecified AE interface. We need a few alert boxes: alert, confirm and notify. Any ideas on how to design this event? mailto:atotic@netscape.com. IÕd like to conform to the standard. """
+       which = 'ALAP'
+       want = 'type'
+class kiosk_mode(aetools.NProperty):
+       """kiosk mode - Kiosk mode leaves very few menus enabled """
+       which = 'KOSK'
+       want = 'long'
+#        element 'cwin' as ['indx', 'name', 'ID  ']
+
+class window(aetools.ComponentItem):
+       """window - A Window """
+       want = 'cwin'
+class bounds(aetools.NProperty):
+       """bounds - the boundary rectangle for the window """
+       which = 'pbnd'
+       want = 'qdrt'
+class closeable(aetools.NProperty):
+       """closeable - Does the window have a close box? """
+       which = 'hclb'
+       want = 'bool'
+class titled(aetools.NProperty):
+       """titled - Does the window have a title bar? """
+       which = 'ptit'
+       want = 'bool'
+class index(aetools.NProperty):
+       """index - the number of the window """
+       which = 'pidx'
+       want = 'long'
+class floating(aetools.NProperty):
+       """floating - Does the window float? """
+       which = 'isfl'
+       want = 'bool'
+class modal(aetools.NProperty):
+       """modal - Is the window modal? """
+       which = 'pmod'
+       want = 'bool'
+class resizable(aetools.NProperty):
+       """resizable - Is the window resizable? """
+       which = 'prsz'
+       want = 'bool'
+class zoomable(aetools.NProperty):
+       """zoomable - Is the window zoomable? """
+       which = 'iszm'
+       want = 'bool'
+class zoomed(aetools.NProperty):
+       """zoomed - Is the window zoomed? """
+       which = 'pzum'
+       want = 'bool'
+class name(aetools.NProperty):
+       """name - the title of the window """
+       which = 'pnam'
+       want = 'itxt'
+class visible(aetools.NProperty):
+       """visible - is the window visible? """
+       which = 'pvis'
+       want = 'bool'
+class position(aetools.NProperty):
+       """position - upper left coordinates of window """
+       which = 'ppos'
+       want = 'QDpt'
+class URL(aetools.NProperty):
+       """URL - Current URL """
+       which = 'curl'
+       want = 'TEXT'
+class unique_ID(aetools.NProperty):
+       """unique ID - WindowÕs unique ID (a bridge between WWW! suite window idÕs and standard AE windows) """
+       which = 'wiid'
+       want = 'long'
+class busy(aetools.NProperty):
+       """busy - Is window loading something right now. 2, window is busy and will reject load requests. 1, window is busy, but will interrupt outstanding loads """
+       which = 'busy'
+       want = 'long'
+application._propdict = {
+       'alert_application' : alert_application,
+       'kiosk_mode' : kiosk_mode,
+}
+application._elemdict = {
+       'window' : window,
+}
+window._propdict = {
+       'bounds' : bounds,
+       'closeable' : closeable,
+       'titled' : titled,
+       'index' : index,
+       'floating' : floating,
+       'modal' : modal,
+       'resizable' : resizable,
+       'zoomable' : zoomable,
+       'zoomed' : zoomed,
+       'name' : name,
+       'visible' : visible,
+       'position' : position,
+       'URL' : URL,
+       'unique_ID' : unique_ID,
+       'busy' : busy,
+}
+window._elemdict = {
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'cwin' : window,
+       'capp' : application,
+}
+
+_propdeclarations = {
+       'ptit' : titled,
+       'pidx' : index,
+       'ppos' : position,
+       'curl' : URL,
+       'pnam' : name,
+       'pbnd' : bounds,
+       'isfl' : floating,
+       'hclb' : closeable,
+       'ALAP' : alert_application,
+       'iszm' : zoomable,
+       'pmod' : modal,
+       'pzum' : zoomed,
+       'pvis' : visible,
+       'KOSK' : kiosk_mode,
+       'busy' : busy,
+       'prsz' : resizable,
+       'wiid' : unique_ID,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Netscape/Standard_URL_suite.py b/Mac/Lib/lib-scriptpackages/Netscape/Standard_URL_suite.py
new file mode 100644 (file)
index 0000000..1498c71
--- /dev/null
@@ -0,0 +1,62 @@
+"""Suite Standard URL suite: Mac URL standard, supported by many apps
+
+
+
+Level 1, version 1
+
+Generated from Macintosh HD:Internet:Internet-programma's:Netscape Communicator\8e-map:Netscape Communicator\8e
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'GURL'
+
+class Standard_URL_suite_Events:
+
+       _argmap_GetURL = {
+               'to' : 'dest',
+               'inside' : 'HWIN',
+               '_from' : 'refe',
+       }
+
+       def GetURL(self, _object, _attributes={}, **_arguments):
+               """GetURL: Loads the URL (optionally to disk)
+
+               Required argument: The url 
+               Keyword argument to: file the URL should be loaded into  
+               Keyword argument inside: Window the URL should be loaded to
+               Keyword argument _from: Referrer, to be sent with the HTTP request
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'GURL'
+               _subcode = 'GURL'
+
+               aetools.keysubst(_arguments, self._argmap_GetURL)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+}
+
+_propdeclarations = {
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Netscape/Text.py b/Mac/Lib/lib-scriptpackages/Netscape/Text.py
new file mode 100644 (file)
index 0000000..beda5b3
--- /dev/null
@@ -0,0 +1,120 @@
+"""Suite Text: 
+Level 0, version 0
+
+Generated from Macintosh HD:Internet:Internet-programma's:Netscape Communicator\8e-map:Netscape Communicator\8e
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'TEXT'
+
+from StdSuites.Text_Suite import *
+class Text_Events(Text_Suite_Events):
+
+       pass
+
+
+class text(aetools.ComponentItem):
+       """text - independent text view objects """
+       want = 'ctxt'
+class updateLevel(aetools.NProperty):
+       """updateLevel - updating level.  Can only be incremented or decremented.  Do so only in a try block -- if the level is greater than zero, visual text updating will cease. """
+       which = 'pUpL'
+       want = 'long'
+class beginning(aetools.NProperty):
+       """beginning - Beginning of element """
+       which = 'bgng'
+       want = 'obj '
+class end(aetools.NProperty):
+       """end - Ending of element """
+       which = 'end '
+       want = 'obj '
+class infront(aetools.NProperty):
+       """infront - Immediately before element """
+       which = 'pBef'
+       want = 'obj '
+class justbehind(aetools.NProperty):
+       """justbehind - Immediately after element """
+       which = 'pAft'
+       want = 'obj '
+#        element 'stys' as ['indx', 'name']
+
+class styleset(aetools.ComponentItem):
+       """styleset - A style \96set\94 that may be used repeatedly in text objects. """
+       want = 'stys'
+class name(aetools.NProperty):
+       """name - style name """
+       which = 'pnam'
+       want = 'TEXT'
+class color(aetools.NProperty):
+       """color - the color """
+       which = 'colr'
+       want = 'RGB '
+class font(aetools.NProperty):
+       """font - font name """
+       which = 'font'
+       want = 'TEXT'
+class size(aetools.NProperty):
+       """size - the size in points """
+       which = 'ptsz'
+       want = 'long'
+class writing_code(aetools.NProperty):
+       """writing code - the script system and language """
+       which = 'psct'
+       want = 'tsty'
+class style(aetools.NProperty):
+       """style - the text styles or face attributes """
+       which = 'txst'
+       want = 'tsty'
+
+stylesets = styleset
+text._propdict = {
+       'updateLevel' : updateLevel,
+       'beginning' : beginning,
+       'end' : end,
+       'infront' : infront,
+       'justbehind' : justbehind,
+}
+text._elemdict = {
+       'styleset' : styleset,
+}
+styleset._propdict = {
+       'name' : name,
+       'color' : color,
+       'font' : font,
+       'size' : size,
+       'writing_code' : writing_code,
+       'style' : style,
+}
+styleset._elemdict = {
+}
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'stys' : styleset,
+       'ctxt' : text,
+}
+
+_propdeclarations = {
+       'pAft' : justbehind,
+       'psct' : writing_code,
+       'txst' : style,
+       'colr' : color,
+       'pBef' : infront,
+       'pnam' : name,
+       'ptsz' : size,
+       'pUpL' : updateLevel,
+       'bgng' : beginning,
+       'font' : font,
+       'end ' : end,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Netscape/WorldWideWeb_suite.py b/Mac/Lib/lib-scriptpackages/Netscape/WorldWideWeb_suite.py
new file mode 100644 (file)
index 0000000..c42505c
--- /dev/null
@@ -0,0 +1,426 @@
+"""Suite WorldWideWeb suite, as defined in Spyglass spec.: 
+Level 1, version 1
+
+Generated from Macintosh HD:Internet:Internet-programma's:Netscape Communicator\8e-map:Netscape Communicator\8e
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'WWW!'
+
+class WorldWideWeb_suite_Events:
+
+       _argmap_OpenURL = {
+               'to' : 'INTO',
+               'toWindow' : 'WIND',
+               'flags' : 'FLGS',
+               'post_data' : 'POST',
+               'post_type' : 'MIME',
+               'progressApp' : 'PROG',
+       }
+
+       def OpenURL(self, _object, _attributes={}, **_arguments):
+               """OpenURL: Opens a URL. Allows for more options than GetURL event
+               Required argument: URL
+               Keyword argument to: file destination
+               Keyword argument toWindow: window iD
+               Keyword argument flags: Binary: any combination of 1, 2 and 4 is allowed: 1 and 2 mean force reload the document. 4 is ignored
+               Keyword argument post_data: Form posting data
+               Keyword argument post_type: MIME type of the posting data. Defaults to application/x-www-form-urlencoded
+               Keyword argument progressApp: Application that will display progress
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: ID of the loading window
+               """
+               _code = 'WWW!'
+               _subcode = 'OURL'
+
+               aetools.keysubst(_arguments, self._argmap_OpenURL)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_ShowFile = {
+               'MIME_type' : 'MIME',
+               'Window_ID' : 'WIND',
+               'URL' : 'URL ',
+       }
+
+       def ShowFile(self, _object, _attributes={}, **_arguments):
+               """ShowFile: Similar to OpenDocuments, except that it specifies the parent URL, and MIME type of the file
+               Required argument: File to open
+               Keyword argument MIME_type: MIME type
+               Keyword argument Window_ID: Window to open the file in
+               Keyword argument URL: Use this as a base URL
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Window ID of the loaded window. 0 means ShowFile failed, FFFFFFF means that data was not appropriate type to display in the browser.
+               """
+               _code = 'WWW!'
+               _subcode = 'SHWF'
+
+               aetools.keysubst(_arguments, self._argmap_ShowFile)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_parse_anchor = {
+               'relative_to' : 'RELA',
+       }
+
+       def parse_anchor(self, _object, _attributes={}, **_arguments):
+               """parse anchor: Resolves the relative URL
+               Required argument: Main URL
+               Keyword argument relative_to: Relative URL
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: Parsed  URL
+               """
+               _code = 'WWW!'
+               _subcode = 'PRSA'
+
+               aetools.keysubst(_arguments, self._argmap_parse_anchor)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_cancel_progress = {
+               'in_window' : 'WIND',
+       }
+
+       def cancel_progress(self, _object=None, _attributes={}, **_arguments):
+               """cancel progress: Interrupts the download of the document in the given window
+               Required argument: progress ID, obtained from the progress app
+               Keyword argument in_window: window ID of the progress to cancel
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'WWW!'
+               _subcode = 'CNCL'
+
+               aetools.keysubst(_arguments, self._argmap_cancel_progress)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def find_URL(self, _object, _attributes={}, **_arguments):
+               """find URL: If the file was downloaded by Netscape, you can call FindURL to find out the URL used to download the file.
+               Required argument: File spec
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: The URL
+               """
+               _code = 'WWW!'
+               _subcode = 'FURL'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def webActivate(self, _object=None, _attributes={}, **_arguments):
+               """webActivate: Makes Netscape the frontmost application, and selects a given window. This event is here for suite completeness/ cross-platform compatibility only, you should use standard AppleEvents instead.
+               Required argument: window to bring to front
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'WWW!'
+               _subcode = 'ACTV'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def list_windows(self, _no_object=None, _attributes={}, **_arguments):
+               """list windows: Lists the IDs of all the hypertext windows
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: List of unique IDs of all the hypertext windows
+               """
+               _code = 'WWW!'
+               _subcode = 'LSTW'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def get_window_info(self, _object=None, _attributes={}, **_arguments):
+               """get window info: Returns the information about the window as a list. Currently the list contains the window title and the URL. You can get the same information using standard Apple Event GetProperty.
+               Required argument: window ID
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: undocumented, typecode 'list'
+               """
+               _code = 'WWW!'
+               _subcode = 'WNFO'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def register_URL_echo(self, _object=None, _attributes={}, **_arguments):
+               """register URL echo: Registers the \96echo\94 application. Each download from now on will be echoed to this application.
+               Required argument: Application signature
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'WWW!'
+               _subcode = 'RGUE'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def unregister_URL_echo(self, _object, _attributes={}, **_arguments):
+               """unregister URL echo: cancels URL echo
+               Required argument: application signature
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'WWW!'
+               _subcode = 'UNRU'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_register_viewer = {
+               'MIME_type' : 'MIME',
+               'with_file_type' : 'FTYP',
+       }
+
+       def register_viewer(self, _object, _attributes={}, **_arguments):
+               """register viewer: Registers an application as a \95specialÕ viewer for this MIME type. The application will be launched with ViewDoc events
+               Required argument: Application sig
+               Keyword argument MIME_type: MIME type viewer is registering for
+               Keyword argument with_file_type: Mac file type for the downloaded files
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: TRUE if registration has been successful
+               """
+               _code = 'WWW!'
+               _subcode = 'RGVW'
+
+               aetools.keysubst(_arguments, self._argmap_register_viewer)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_unregister_viewer = {
+               'MIME_type' : 'MIME',
+       }
+
+       def unregister_viewer(self, _object, _attributes={}, **_arguments):
+               """unregister viewer: Revert to the old way of handling this MIME type
+               Required argument: Application sig
+               Keyword argument MIME_type: MIME type to be unregistered
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: TRUE if the event was successful
+               """
+               _code = 'WWW!'
+               _subcode = 'UNRV'
+
+               aetools.keysubst(_arguments, self._argmap_unregister_viewer)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_register_protocol = {
+               'for_protocol' : 'PROT',
+       }
+
+       def register_protocol(self, _object=None, _attributes={}, **_arguments):
+               """register protocol: Registers application as a \96handler\94 for this protocol with a given prefix. The handler will receive \96OpenURL\94, or if that fails, \96GetURL\94 event.
+               Required argument: Application sig
+               Keyword argument for_protocol: protocol prefix: \96finger:\94\96file\94,
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: TRUE if registration has been successful
+               """
+               _code = 'WWW!'
+               _subcode = 'RGPR'
+
+               aetools.keysubst(_arguments, self._argmap_register_protocol)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_unregister_protocol = {
+               'for_protocol' : 'PROT',
+       }
+
+       def unregister_protocol(self, _object=None, _attributes={}, **_arguments):
+               """unregister protocol: reverses the effects of \96register protocol\94
+               Required argument: Application sig. 
+               Keyword argument for_protocol: protocol prefix. If none, unregister for all protocols
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: TRUE if successful
+               """
+               _code = 'WWW!'
+               _subcode = 'UNRP'
+
+               aetools.keysubst(_arguments, self._argmap_unregister_protocol)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_register_window_close = {
+               'for_window' : 'WIND',
+       }
+
+       def register_window_close(self, _object=None, _attributes={}, **_arguments):
+               """register window close: Netscape will notify registered application when this window closes
+               Required argument: Application signature
+               Keyword argument for_window: window ID
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: true if successful
+               """
+               _code = 'WWW!'
+               _subcode = 'RGWC'
+
+               aetools.keysubst(_arguments, self._argmap_register_window_close)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_unregister_window_close = {
+               'for_window' : 'WIND',
+       }
+
+       def unregister_window_close(self, _object=None, _attributes={}, **_arguments):
+               """unregister window close: Undo for register window close
+               Required argument: Application signature
+               Keyword argument for_window: window ID
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: true if successful
+               """
+               _code = 'WWW!'
+               _subcode = 'UNRC'
+
+               aetools.keysubst(_arguments, self._argmap_unregister_window_close)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+}
+
+_propdeclarations = {
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+}
diff --git a/Mac/Lib/lib-scriptpackages/Netscape/__init__.py b/Mac/Lib/lib-scriptpackages/Netscape/__init__.py
new file mode 100644 (file)
index 0000000..38af429
--- /dev/null
@@ -0,0 +1,55 @@
+"""
+Package generated from Macintosh HD:Internet:Internet-programma's:Netscape Communicator\8e-map:Netscape Communicator\8e
+Resource aete resid 0 
+"""
+import aetools
+import Required_suite
+import Standard_Suite
+import Standard_URL_suite
+import WorldWideWeb_suite
+import Mozilla_suite
+import PowerPlant
+import Text
+
+
+_code_to_module = {
+       'reqd' : Required_suite,
+       'CoRe' : Standard_Suite,
+       'GURL' : Standard_URL_suite,
+       'WWW!' : WorldWideWeb_suite,
+       'MOSS' : Mozilla_suite,
+       'ppnt' : PowerPlant,
+       'TEXT' : Text,
+}
+
+
+
+_code_to_fullname = {
+       'reqd' : ('Netscape.Required_suite', 'Required_suite'),
+       'CoRe' : ('Netscape.Standard_Suite', 'Standard_Suite'),
+       'GURL' : ('Netscape.Standard_URL_suite', 'Standard_URL_suite'),
+       'WWW!' : ('Netscape.WorldWideWeb_suite', 'WorldWideWeb_suite'),
+       'MOSS' : ('Netscape.Mozilla_suite', 'Mozilla_suite'),
+       'ppnt' : ('Netscape.PowerPlant', 'PowerPlant'),
+       'TEXT' : ('Netscape.Text', 'Text'),
+}
+
+from Required_suite import *
+from Standard_Suite import *
+from Standard_URL_suite import *
+from WorldWideWeb_suite import *
+from Mozilla_suite import *
+from PowerPlant import *
+from Text import *
+
+
+class Netscape(Required_suite_Events,
+               Standard_Suite_Events,
+               Standard_URL_suite_Events,
+               WorldWideWeb_suite_Events,
+               Mozilla_suite_Events,
+               PowerPlant_Events,
+               Text_Events,
+               aetools.TalkTo):
+       _signature = 'MOSS'
+
diff --git a/Mac/Lib/lib-scriptpackages/StdSuites/AppleScript_Suite.py b/Mac/Lib/lib-scriptpackages/StdSuites/AppleScript_Suite.py
new file mode 100644 (file)
index 0000000..58d265c
--- /dev/null
@@ -0,0 +1,2074 @@
+"""Suite AppleScript Suite: Standard terms for AppleScript
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Extensies:AppleScript
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'ascr'
+
+class AppleScript_Suite_Events:
+
+       def activate(self, _no_object=None, _attributes={}, **_arguments):
+               """activate: Bring the targeted application program to the front
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'actv'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def log(self, _object, _attributes={}, **_arguments):
+               """log: Cause a comment to be logged
+               Required argument: undocumented, typecode 'TEXT'
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ascr'
+               _subcode = 'cmnt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def stop_log(self, _no_object=None, _attributes={}, **_arguments):
+               """stop log: Stop event logging in the script editor
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ToyS'
+               _subcode = 'log0'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def start_log(self, _no_object=None, _attributes={}, **_arguments):
+               """start log: Start event logging in the script editor
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ToyS'
+               _subcode = 'log1'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def idle(self, _no_object=None, _attributes={}, **_arguments):
+               """idle: Sent to a script application when it is idle
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the number of seconds to wait for next idle event
+               """
+               _code = 'misc'
+               _subcode = 'idle'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def launch(self, _no_object=None, _attributes={}, **_arguments):
+               """launch: Start an application for scripting
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ascr'
+               _subcode = 'noop'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def tell(self, _no_object=None, _attributes={}, **_arguments):
+               """tell: Record or log a \95tellÕ statement
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ascr'
+               _subcode = 'tell'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def end_tell(self, _no_object=None, _attributes={}, **_arguments):
+               """end tell: Record or log an \95end tellÕ statement
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ascr'
+               _subcode = 'tend'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_error = {
+               'number' : 'errn',
+               'partial_result' : 'ptlr',
+               '_from' : 'erob',
+               'to' : 'errt',
+       }
+
+       def error(self, _object=None, _attributes={}, **_arguments):
+               """error: Raise an error
+               Required argument: anything
+               Keyword argument number: an error number
+               Keyword argument partial_result: any partial result occurring before the error
+               Keyword argument _from: the object that caused the error
+               Keyword argument to: the desired class for a failed coercion
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'ascr'
+               _subcode = 'err '
+
+               aetools.keysubst(_arguments, self._argmap_error)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_Call_a5_subroutine = {
+               'at' : 'at  ',
+               '_from' : 'from',
+               '_for' : 'for ',
+               'to' : 'to  ',
+               'thru' : 'thru',
+               'through' : 'thgh',
+               'by' : 'by  ',
+               'on' : 'on  ',
+               'into' : 'into',
+               'onto' : 'onto',
+               'between' : 'btwn',
+               'against' : 'agst',
+               'out_of' : 'outo',
+               'instead_of' : 'isto',
+               'aside_from' : 'asdf',
+               'around' : 'arnd',
+               'beside' : 'bsid',
+               'beneath' : 'bnth',
+               'under' : 'undr',
+               'over' : 'over',
+               'above' : 'abve',
+               'below' : 'belw',
+               'apart_from' : 'aprt',
+               'about' : 'abou',
+               'since' : 'snce',
+               'given' : 'givn',
+               'with' : 'with',
+               'without' : 'wout',
+       }
+
+       def Call_a5_subroutine(self, _object=None, _attributes={}, **_arguments):
+               """Call\82subroutine: A subroutine call
+               Required argument: anything
+               Keyword argument at: a preposition
+               Keyword argument _from: a preposition
+               Keyword argument _for: a preposition
+               Keyword argument to: a preposition
+               Keyword argument thru: a preposition
+               Keyword argument through: a preposition
+               Keyword argument by: a preposition
+               Keyword argument on: a preposition
+               Keyword argument into: a preposition
+               Keyword argument onto: a preposition
+               Keyword argument between: a preposition
+               Keyword argument against: a preposition
+               Keyword argument out_of: a preposition
+               Keyword argument instead_of: a preposition
+               Keyword argument aside_from: a preposition
+               Keyword argument around: a preposition
+               Keyword argument beside: a preposition
+               Keyword argument beneath: a preposition
+               Keyword argument under: a preposition
+               Keyword argument over: a preposition
+               Keyword argument above: a preposition
+               Keyword argument below: a preposition
+               Keyword argument apart_from: a preposition
+               Keyword argument about: a preposition
+               Keyword argument since: a preposition
+               Keyword argument given: parameter:value pairs, comma-separated
+               Keyword argument with: formal parameter set to true if matching actual parameter is provided
+               Keyword argument without: formal parameter set to false if matching actual parmeter is provided
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'psbr'
+
+               aetools.keysubst(_arguments, self._argmap_Call_a5_subroutine)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _3d_(self, _object, _attributes={}, **_arguments):
+               """=: Equality
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '=   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _ad_(self, _object, _attributes={}, **_arguments):
+               """­: Inequality
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '\255   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _2b_(self, _object, _attributes={}, **_arguments):
+               """+: Addition
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '+   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _2d_(self, _object, _attributes={}, **_arguments):
+               """-: Subtraction
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '-   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _2a_(self, _object, _attributes={}, **_arguments):
+               """*: Multiplication
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '*   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _d6_(self, _object, _attributes={}, **_arguments):
+               """÷: Division
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '/   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def div(self, _object, _attributes={}, **_arguments):
+               """div: Quotient
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'div '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def mod(self, _object, _attributes={}, **_arguments):
+               """mod: Remainder
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'mod '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _5e_(self, _object, _attributes={}, **_arguments):
+               """^: Exponentiation
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '^   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _3e_(self, _object, _attributes={}, **_arguments):
+               """>: Greater than
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '>   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _b3_(self, _object, _attributes={}, **_arguments):
+               """³: Greater than or equal to
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '>=  '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _3c_(self, _object, _attributes={}, **_arguments):
+               """<: Less than
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '<   '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _b2_(self, _object, _attributes={}, **_arguments):
+               """²: Less than or equal to
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = '<=  '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _26_(self, _object, _attributes={}, **_arguments):
+               """&: Concatenation
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'ccat'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def starts_with(self, _object, _attributes={}, **_arguments):
+               """starts with: Starts with
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'bgwt'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def ends_with(self, _object, _attributes={}, **_arguments):
+               """ends with: Ends with
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'ends'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def contains(self, _object, _attributes={}, **_arguments):
+               """contains: Containment
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'cont'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _and(self, _object, _attributes={}, **_arguments):
+               """and: Logical conjunction
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'AND '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _or(self, _object, _attributes={}, **_arguments):
+               """or: Logical disjunction
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'OR  '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def as(self, _object, _attributes={}, **_arguments):
+               """as: Coercion
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'coer'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _not(self, _object, _attributes={}, **_arguments):
+               """not: Logical negation
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'NOT '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def negate(self, _object, _attributes={}, **_arguments):
+               """negate: Numeric negation
+               Required argument: an AE object reference
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: anything
+               """
+               _code = 'ascr'
+               _subcode = 'neg '
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class boolean(aetools.ComponentItem):
+       """boolean - A true or false value """
+       want = 'bool'
+
+booleans = boolean
+
+class integer(aetools.ComponentItem):
+       """integer - An integral number """
+       want = 'long'
+
+integers = integer
+
+class real(aetools.ComponentItem):
+       """real - A real number """
+       want = 'doub'
+
+reals = real
+
+class number(aetools.ComponentItem):
+       """number - an integer or real number """
+       want = 'nmbr'
+
+numbers = number
+
+class list(aetools.ComponentItem):
+       """list - An ordered collection of items """
+       want = 'list'
+class length(aetools.NProperty):
+       """length - the length of a list """
+       which = 'leng'
+       want = 'long'
+class reverse(aetools.NProperty):
+       """reverse - the items of the list in reverse order """
+       which = 'rvse'
+       want = 'list'
+class rest(aetools.NProperty):
+       """rest - all items of the list excluding first """
+       which = 'rest'
+       want = 'list'
+
+lists = list
+
+class linked_list(aetools.ComponentItem):
+       """linked list - An ordered collection of items """
+       want = 'llst'
+# repeated property length the length of a list
+
+linked_lists = linked_list
+
+class vector(aetools.ComponentItem):
+       """vector - An ordered collection of items """
+       want = 'vect'
+# repeated property length the length of a list
+
+vectors = vector
+
+class record(aetools.ComponentItem):
+       """record - A set of labeled items """
+       want = 'reco'
+
+records = record
+
+class item(aetools.ComponentItem):
+       """item - An item of any type """
+       want = 'cobj'
+class id(aetools.NProperty):
+       """id - the unique ID number of this object """
+       which = 'ID  '
+       want = 'long'
+
+items = item
+
+class script(aetools.ComponentItem):
+       """script - An AppleScript script """
+       want = 'scpt'
+class name(aetools.NProperty):
+       """name - the name of the script """
+       which = 'pnam'
+       want = 'TEXT'
+class parent(aetools.NProperty):
+       """parent - its parent, i.e. the script that will handle events that this script doesnÕt """
+       which = 'pare'
+       want = 'scpt'
+
+scripts = script
+
+class list_or_record(aetools.ComponentItem):
+       """list or record - a list or record """
+       want = 'lr  '
+
+class list_or_string(aetools.ComponentItem):
+       """list or string - a list or string """
+       want = 'ls  '
+
+class number_or_string(aetools.ComponentItem):
+       """number or string - a number or string """
+       want = 'ns  '
+
+class alias_or_string(aetools.ComponentItem):
+       """alias or string - an alias or string """
+       want = 'sf  '
+
+class list_2c__record_or_text(aetools.ComponentItem):
+       """list, record or text - a list, record or text """
+       want = 'lrs '
+
+class number_or_date(aetools.ComponentItem):
+       """number or date - a number or date """
+       want = 'nd  '
+
+class number_2c__date_or_text(aetools.ComponentItem):
+       """number, date or text - a number, date or text """
+       want = 'nds '
+
+class _class(aetools.ComponentItem):
+       """class - the type of a value """
+       want = 'pcls'
+class _3c_Inheritance_3e_(aetools.NProperty):
+       """<Inheritance> - inherits some of its properties from this class """
+       which = 'c@#^'
+       want = 'type'
+
+classes = _class
+
+class event(aetools.ComponentItem):
+       """event - an AppleEvents event """
+       want = 'evnt'
+
+events = event
+
+class property(aetools.ComponentItem):
+       """property - an AppleEvents property """
+       want = 'prop'
+
+properties = property
+
+class constant(aetools.ComponentItem):
+       """constant - A constant value """
+       want = 'enum'
+
+constants = constant
+
+class preposition(aetools.ComponentItem):
+       """preposition - an AppleEvents preposition """
+       want = 'prep'
+
+prepositions = preposition
+
+class reference_form(aetools.ComponentItem):
+       """reference form - an AppleEvents key form """
+       want = 'kfrm'
+
+reference_forms = reference_form
+
+class handler(aetools.ComponentItem):
+       """handler - an AppleScript event or subroutine handler """
+       want = 'hand'
+
+handlers = handler
+
+class data(aetools.ComponentItem):
+       """data - an AppleScript raw data object """
+       want = 'rdat'
+
+class text(aetools.ComponentItem):
+       """text - text with language and style information """
+       want = 'ctxt'
+
+class international_text(aetools.ComponentItem):
+       """international text -  """
+       want = 'itxt'
+
+international_text = international_text
+
+class string(aetools.ComponentItem):
+       """string - text in 8-bit Macintosh Roman format """
+       want = 'TEXT'
+
+strings = string
+
+class styled_text(aetools.ComponentItem):
+       """styled text -  """
+       want = 'STXT'
+
+styled_text = styled_text
+
+class styled_Clipboard_text(aetools.ComponentItem):
+       """styled Clipboard text -  """
+       want = 'styl'
+
+styled_Clipboard_text = styled_Clipboard_text
+
+class Unicode_text(aetools.ComponentItem):
+       """Unicode text -  """
+       want = 'utxt'
+
+Unicode_text = Unicode_text
+
+class styled_Unicode_text(aetools.ComponentItem):
+       """styled Unicode text -  """
+       want = 'sutx'
+
+styled_Unicode_text = styled_Unicode_text
+
+class encoded_string(aetools.ComponentItem):
+       """encoded string - text encoded using the Text Encoding Converter """
+       want = 'encs'
+
+encoded_strings = encoded_string
+
+class C_string(aetools.ComponentItem):
+       """C string - text followed by a null """
+       want = 'cstr'
+
+C_strings = C_string
+
+class Pascal_string(aetools.ComponentItem):
+       """Pascal string - text up to 255 characters preceded by a length byte """
+       want = 'pstr'
+
+Pascal_strings = Pascal_string
+
+class character(aetools.ComponentItem):
+       """character - an individual text character """
+       want = 'cha '
+
+characters = character
+
+class text_item(aetools.ComponentItem):
+       """text item - text between delimiters """
+       want = 'citm'
+
+text_items = text_item
+
+class writing_code(aetools.ComponentItem):
+       """writing code - codes that identify the language and script system """
+       want = 'psct'
+
+class writing_code_info(aetools.ComponentItem):
+       """writing code info - script code and language code of text run """
+       want = 'citl'
+class script_code(aetools.NProperty):
+       """script code - the script code for the text """
+       which = 'pscd'
+       want = 'shor'
+class language_code(aetools.NProperty):
+       """language code - the language code for the text """
+       which = 'plcd'
+       want = 'shor'
+
+writing_code_infos = writing_code_info
+
+class _empty_ae_name(aetools.ComponentItem):
+       """ - the undefined value """
+       want = 'undf'
+
+class missing_value(aetools.ComponentItem):
+       """missing value - unavailable value, such as properties missing from heterogeneous classes in a Whose clause """
+       want = 'msng'
+
+missing_values = missing_value
+
+class reference(aetools.ComponentItem):
+       """reference - an AppleScript reference """
+       want = 'obj '
+
+references = reference
+
+class anything(aetools.ComponentItem):
+       """anything - any class or reference """
+       want = '****'
+
+class type_class(aetools.ComponentItem):
+       """type class - the name of a particular class (or any four-character code) """
+       want = 'type'
+
+class RGB_color(aetools.ComponentItem):
+       """RGB color - Three integers specifying red, green, blue color values """
+       want = 'cRGB'
+
+RGB_colors = RGB_color
+
+class picture(aetools.ComponentItem):
+       """picture - A QuickDraw picture object """
+       want = 'PICT'
+
+pictures = picture
+
+class sound(aetools.ComponentItem):
+       """sound - a sound object on the clipboard """
+       want = 'snd '
+
+sounds = sound
+
+class version(aetools.ComponentItem):
+       """version - a version value """
+       want = 'vers'
+
+class file_specification(aetools.ComponentItem):
+       """file specification - a file specification as used by the operating system """
+       want = 'fss '
+
+file_specifications = file_specification
+
+class alias(aetools.ComponentItem):
+       """alias - a file on a disk or server.  The file must exist when you check the syntax of your script. """
+       want = 'alis'
+
+aliases = alias
+
+class machine(aetools.ComponentItem):
+       """machine - a computer """
+       want = 'mach'
+
+machines = machine
+
+class zone(aetools.ComponentItem):
+       """zone - an AppleTalk zone """
+       want = 'zone'
+
+zones = zone
+
+class keystroke(aetools.ComponentItem):
+       """keystroke - a press of a key combination on a Macintosh keyboard """
+       want = 'kprs'
+class key(aetools.NProperty):
+       """key - the character for the key was pressed (ignoring modifiers) """
+       which = 'kMsg'
+       want = 'cha '
+class modifiers(aetools.NProperty):
+       """modifiers - the modifier keys pressed in combination """
+       which = 'kMod'
+       want = 'eMds'
+class key_kind(aetools.NProperty):
+       """key kind - the kind of key that was pressed """
+       which = 'kknd'
+       want = 'ekst'
+
+keystrokes = keystroke
+
+class seconds(aetools.ComponentItem):
+       """seconds - more than one second """
+       want = 'scnd'
+
+class date(aetools.ComponentItem):
+       """date - Absolute date and time values """
+       want = 'ldt '
+class weekday(aetools.NProperty):
+       """weekday - the day of a week of a date """
+       which = 'wkdy'
+       want = 'wkdy'
+class month(aetools.NProperty):
+       """month - the month of a date """
+       which = 'mnth'
+       want = 'mnth'
+class day(aetools.NProperty):
+       """day - the day of the month of a date """
+       which = 'day '
+       want = 'long'
+class year(aetools.NProperty):
+       """year - the year of a date """
+       which = 'year'
+       want = 'long'
+class time(aetools.NProperty):
+       """time - the time since midnight of a date """
+       which = 'time'
+       want = 'long'
+class date_string(aetools.NProperty):
+       """date string - the date portion of a date-time value as text """
+       which = 'dstr'
+       want = 'TEXT'
+class time_string(aetools.NProperty):
+       """time string - the time portion of a date-time value as text """
+       which = 'tstr'
+       want = 'TEXT'
+
+dates = date
+
+class month(aetools.ComponentItem):
+       """month - a month """
+       want = 'mnth'
+
+months = month
+
+class January(aetools.ComponentItem):
+       """January - the month of January """
+       want = 'jan '
+
+class February(aetools.ComponentItem):
+       """February - the month of February """
+       want = 'feb '
+
+class March(aetools.ComponentItem):
+       """March - the month of March """
+       want = 'mar '
+
+class April(aetools.ComponentItem):
+       """April - the month of April """
+       want = 'apr '
+
+class May(aetools.ComponentItem):
+       """May - the month of May """
+       want = 'may '
+
+class June(aetools.ComponentItem):
+       """June - the month of June """
+       want = 'jun '
+
+class July(aetools.ComponentItem):
+       """July - the month of July """
+       want = 'jul '
+
+class August(aetools.ComponentItem):
+       """August - the month of August """
+       want = 'aug '
+
+class September(aetools.ComponentItem):
+       """September - the month of September """
+       want = 'sep '
+
+class October(aetools.ComponentItem):
+       """October - the month of October """
+       want = 'oct '
+
+class November(aetools.ComponentItem):
+       """November - the month of November """
+       want = 'nov '
+
+class December(aetools.ComponentItem):
+       """December - the month of December """
+       want = 'dec '
+
+class weekday(aetools.ComponentItem):
+       """weekday - a weekday """
+       want = 'wkdy'
+
+weekdays = weekday
+
+class Sunday(aetools.ComponentItem):
+       """Sunday - Sunday """
+       want = 'sun '
+
+class Monday(aetools.ComponentItem):
+       """Monday - Monday """
+       want = 'mon '
+
+class Tuesday(aetools.ComponentItem):
+       """Tuesday - Tuesday """
+       want = 'tue '
+
+class Wednesday(aetools.ComponentItem):
+       """Wednesday - Wednesday """
+       want = 'wed '
+
+class Thursday(aetools.ComponentItem):
+       """Thursday - Thursday """
+       want = 'thu '
+
+class Friday(aetools.ComponentItem):
+       """Friday - Friday """
+       want = 'fri '
+
+class Saturday(aetools.ComponentItem):
+       """Saturday - Saturday """
+       want = 'sat '
+
+class metres(aetools.ComponentItem):
+       """metres - a distance measurement in SI meters """
+       want = 'metr'
+
+meters = metres
+
+class inches(aetools.ComponentItem):
+       """inches - a distance measurement in Imperial inches """
+       want = 'inch'
+
+class feet(aetools.ComponentItem):
+       """feet - a distance measurement in Imperial feet """
+       want = 'feet'
+
+class yards(aetools.ComponentItem):
+       """yards - a distance measurement in Imperial yards """
+       want = 'yard'
+
+class miles(aetools.ComponentItem):
+       """miles - a distance measurement in Imperial miles """
+       want = 'mile'
+
+class kilometres(aetools.ComponentItem):
+       """kilometres - a distance measurement in SI kilometers """
+       want = 'kmtr'
+
+kilometers = kilometres
+
+class centimetres(aetools.ComponentItem):
+       """centimetres - a distance measurement in SI centimeters """
+       want = 'cmtr'
+
+centimeters = centimetres
+
+class square_metres(aetools.ComponentItem):
+       """square metres - an area measurement in SI square meters """
+       want = 'sqrm'
+
+square_meters = square_metres
+
+class square_feet(aetools.ComponentItem):
+       """square feet - an area measurement in Imperial square feet """
+       want = 'sqft'
+
+class square_yards(aetools.ComponentItem):
+       """square yards - an area measurement in Imperial square yards """
+       want = 'sqyd'
+
+class square_miles(aetools.ComponentItem):
+       """square miles - an area measurement in Imperial square miles """
+       want = 'sqmi'
+
+class square_kilometres(aetools.ComponentItem):
+       """square kilometres - an area measurement in SI square kilometers """
+       want = 'sqkm'
+
+square_kilometers = square_kilometres
+
+class litres(aetools.ComponentItem):
+       """litres - a volume measurement in SI liters """
+       want = 'litr'
+
+liters = litres
+
+class gallons(aetools.ComponentItem):
+       """gallons - a volume measurement in Imperial gallons """
+       want = 'galn'
+
+class quarts(aetools.ComponentItem):
+       """quarts - a volume measurement in Imperial quarts """
+       want = 'qrts'
+
+class cubic_metres(aetools.ComponentItem):
+       """cubic metres - a volume measurement in SI cubic meters """
+       want = 'cmet'
+
+cubic_meters = cubic_metres
+
+class cubic_centimetres(aetools.ComponentItem):
+       """cubic centimetres - a volume measurement in SI cubic centimeters """
+       want = 'ccmt'
+
+cubic_centimeters = cubic_centimetres
+
+class cubic_feet(aetools.ComponentItem):
+       """cubic feet - a volume measurement in Imperial cubic feet """
+       want = 'cfet'
+
+class cubic_inches(aetools.ComponentItem):
+       """cubic inches - a volume measurement in Imperial cubic inches """
+       want = 'cuin'
+
+class cubic_yards(aetools.ComponentItem):
+       """cubic yards - a distance measurement in Imperial cubic yards """
+       want = 'cyrd'
+
+class kilograms(aetools.ComponentItem):
+       """kilograms - a mass measurement in SI kilograms """
+       want = 'kgrm'
+
+class grams(aetools.ComponentItem):
+       """grams - a mass measurement in SI meters """
+       want = 'gram'
+
+class ounces(aetools.ComponentItem):
+       """ounces - a weight measurement in SI meters """
+       want = 'ozs '
+
+class pounds(aetools.ComponentItem):
+       """pounds - a weight measurement in SI meters """
+       want = 'lbs '
+
+class degrees_Celsius(aetools.ComponentItem):
+       """degrees Celsius - a temperature measurement in SI degrees Celsius """
+       want = 'degc'
+
+class degrees_Fahrenheit(aetools.ComponentItem):
+       """degrees Fahrenheit - a temperature measurement in degrees Fahrenheit """
+       want = 'degf'
+
+class degrees_Kelvin(aetools.ComponentItem):
+       """degrees Kelvin - a temperature measurement in degrees Kelvin """
+       want = 'degk'
+
+class upper_case(aetools.ComponentItem):
+       """upper case - Text with lower case converted to upper case """
+       want = 'case'
+
+class app(aetools.ComponentItem):
+       """app - Short name for application """
+       want = 'capp'
+
+application = app
+class result(aetools.NProperty):
+       """result - the last result of evaluation """
+       which = 'rslt'
+       want = '****'
+class space(aetools.NProperty):
+       """space - a space character """
+       which = 'spac'
+       want = 'cha '
+class _return(aetools.NProperty):
+       """return - a return character """
+       which = 'ret '
+       want = 'cha '
+class tab(aetools.NProperty):
+       """tab - a tab character """
+       which = 'tab '
+       want = 'cha '
+class minutes(aetools.NProperty):
+       """minutes - the number of seconds in a minute """
+       which = 'min '
+       want = 'long'
+class hours(aetools.NProperty):
+       """hours - the number of seconds in an hour """
+       which = 'hour'
+       want = 'long'
+class days(aetools.NProperty):
+       """days - the number of seconds in a day """
+       which = 'days'
+       want = 'long'
+class weeks(aetools.NProperty):
+       """weeks - the number of seconds in a week """
+       which = 'week'
+       want = 'long'
+class pi(aetools.NProperty):
+       """pi - the constant pi """
+       which = 'pi  '
+       want = 'doub'
+class print_length(aetools.NProperty):
+       """print length - the maximum length to print """
+       which = 'prln'
+       want = 'long'
+class print_depth(aetools.NProperty):
+       """print depth - the maximum depth to print """
+       which = 'prdp'
+       want = 'long'
+class text_item_delimiters(aetools.NProperty):
+       """text item delimiters - the text item delimiters of a string """
+       which = 'txdl'
+       want = 'list'
+class AppleScript(aetools.NProperty):
+       """AppleScript - the top-level script object """
+       which = 'ascr'
+       want = 'scpt'
+
+applications = app
+boolean._propdict = {
+}
+boolean._elemdict = {
+}
+integer._propdict = {
+}
+integer._elemdict = {
+}
+real._propdict = {
+}
+real._elemdict = {
+}
+number._propdict = {
+}
+number._elemdict = {
+}
+list._propdict = {
+       'length' : length,
+       'reverse' : reverse,
+       'rest' : rest,
+}
+list._elemdict = {
+}
+linked_list._propdict = {
+       'length' : length,
+}
+linked_list._elemdict = {
+}
+vector._propdict = {
+       'length' : length,
+}
+vector._elemdict = {
+}
+record._propdict = {
+}
+record._elemdict = {
+}
+item._propdict = {
+       'id' : id,
+}
+item._elemdict = {
+}
+script._propdict = {
+       'name' : name,
+       'parent' : parent,
+}
+script._elemdict = {
+}
+list_or_record._propdict = {
+}
+list_or_record._elemdict = {
+}
+list_or_string._propdict = {
+}
+list_or_string._elemdict = {
+}
+number_or_string._propdict = {
+}
+number_or_string._elemdict = {
+}
+alias_or_string._propdict = {
+}
+alias_or_string._elemdict = {
+}
+list_2c__record_or_text._propdict = {
+}
+list_2c__record_or_text._elemdict = {
+}
+number_or_date._propdict = {
+}
+number_or_date._elemdict = {
+}
+number_2c__date_or_text._propdict = {
+}
+number_2c__date_or_text._elemdict = {
+}
+_class._propdict = {
+       '_3c_Inheritance_3e_' : _3c_Inheritance_3e_,
+}
+_class._elemdict = {
+}
+event._propdict = {
+}
+event._elemdict = {
+}
+property._propdict = {
+}
+property._elemdict = {
+}
+constant._propdict = {
+}
+constant._elemdict = {
+}
+preposition._propdict = {
+}
+preposition._elemdict = {
+}
+reference_form._propdict = {
+}
+reference_form._elemdict = {
+}
+handler._propdict = {
+}
+handler._elemdict = {
+}
+data._propdict = {
+}
+data._elemdict = {
+}
+text._propdict = {
+}
+text._elemdict = {
+}
+international_text._propdict = {
+}
+international_text._elemdict = {
+}
+international_text._propdict = {
+}
+international_text._elemdict = {
+}
+string._propdict = {
+}
+string._elemdict = {
+}
+styled_text._propdict = {
+}
+styled_text._elemdict = {
+}
+styled_text._propdict = {
+}
+styled_text._elemdict = {
+}
+styled_Clipboard_text._propdict = {
+}
+styled_Clipboard_text._elemdict = {
+}
+styled_Clipboard_text._propdict = {
+}
+styled_Clipboard_text._elemdict = {
+}
+Unicode_text._propdict = {
+}
+Unicode_text._elemdict = {
+}
+Unicode_text._propdict = {
+}
+Unicode_text._elemdict = {
+}
+styled_Unicode_text._propdict = {
+}
+styled_Unicode_text._elemdict = {
+}
+styled_Unicode_text._propdict = {
+}
+styled_Unicode_text._elemdict = {
+}
+encoded_string._propdict = {
+}
+encoded_string._elemdict = {
+}
+C_string._propdict = {
+}
+C_string._elemdict = {
+}
+Pascal_string._propdict = {
+}
+Pascal_string._elemdict = {
+}
+character._propdict = {
+}
+character._elemdict = {
+}
+text_item._propdict = {
+}
+text_item._elemdict = {
+}
+writing_code._propdict = {
+}
+writing_code._elemdict = {
+}
+writing_code_info._propdict = {
+       'script_code' : script_code,
+       'language_code' : language_code,
+}
+writing_code_info._elemdict = {
+}
+_empty_ae_name._propdict = {
+}
+_empty_ae_name._elemdict = {
+}
+missing_value._propdict = {
+}
+missing_value._elemdict = {
+}
+reference._propdict = {
+}
+reference._elemdict = {
+}
+anything._propdict = {
+}
+anything._elemdict = {
+}
+type_class._propdict = {
+}
+type_class._elemdict = {
+}
+RGB_color._propdict = {
+}
+RGB_color._elemdict = {
+}
+picture._propdict = {
+}
+picture._elemdict = {
+}
+sound._propdict = {
+}
+sound._elemdict = {
+}
+version._propdict = {
+}
+version._elemdict = {
+}
+file_specification._propdict = {
+}
+file_specification._elemdict = {
+}
+alias._propdict = {
+}
+alias._elemdict = {
+}
+machine._propdict = {
+}
+machine._elemdict = {
+}
+zone._propdict = {
+}
+zone._elemdict = {
+}
+keystroke._propdict = {
+       'key' : key,
+       'modifiers' : modifiers,
+       'key_kind' : key_kind,
+}
+keystroke._elemdict = {
+}
+seconds._propdict = {
+}
+seconds._elemdict = {
+}
+date._propdict = {
+       'weekday' : weekday,
+       'month' : month,
+       'day' : day,
+       'year' : year,
+       'time' : time,
+       'date_string' : date_string,
+       'time_string' : time_string,
+}
+date._elemdict = {
+}
+month._propdict = {
+}
+month._elemdict = {
+}
+January._propdict = {
+}
+January._elemdict = {
+}
+February._propdict = {
+}
+February._elemdict = {
+}
+March._propdict = {
+}
+March._elemdict = {
+}
+April._propdict = {
+}
+April._elemdict = {
+}
+May._propdict = {
+}
+May._elemdict = {
+}
+June._propdict = {
+}
+June._elemdict = {
+}
+July._propdict = {
+}
+July._elemdict = {
+}
+August._propdict = {
+}
+August._elemdict = {
+}
+September._propdict = {
+}
+September._elemdict = {
+}
+October._propdict = {
+}
+October._elemdict = {
+}
+November._propdict = {
+}
+November._elemdict = {
+}
+December._propdict = {
+}
+December._elemdict = {
+}
+weekday._propdict = {
+}
+weekday._elemdict = {
+}
+Sunday._propdict = {
+}
+Sunday._elemdict = {
+}
+Monday._propdict = {
+}
+Monday._elemdict = {
+}
+Tuesday._propdict = {
+}
+Tuesday._elemdict = {
+}
+Wednesday._propdict = {
+}
+Wednesday._elemdict = {
+}
+Thursday._propdict = {
+}
+Thursday._elemdict = {
+}
+Friday._propdict = {
+}
+Friday._elemdict = {
+}
+Saturday._propdict = {
+}
+Saturday._elemdict = {
+}
+metres._propdict = {
+}
+metres._elemdict = {
+}
+inches._propdict = {
+}
+inches._elemdict = {
+}
+feet._propdict = {
+}
+feet._elemdict = {
+}
+yards._propdict = {
+}
+yards._elemdict = {
+}
+miles._propdict = {
+}
+miles._elemdict = {
+}
+kilometres._propdict = {
+}
+kilometres._elemdict = {
+}
+centimetres._propdict = {
+}
+centimetres._elemdict = {
+}
+square_metres._propdict = {
+}
+square_metres._elemdict = {
+}
+square_feet._propdict = {
+}
+square_feet._elemdict = {
+}
+square_yards._propdict = {
+}
+square_yards._elemdict = {
+}
+square_miles._propdict = {
+}
+square_miles._elemdict = {
+}
+square_kilometres._propdict = {
+}
+square_kilometres._elemdict = {
+}
+litres._propdict = {
+}
+litres._elemdict = {
+}
+gallons._propdict = {
+}
+gallons._elemdict = {
+}
+quarts._propdict = {
+}
+quarts._elemdict = {
+}
+cubic_metres._propdict = {
+}
+cubic_metres._elemdict = {
+}
+cubic_centimetres._propdict = {
+}
+cubic_centimetres._elemdict = {
+}
+cubic_feet._propdict = {
+}
+cubic_feet._elemdict = {
+}
+cubic_inches._propdict = {
+}
+cubic_inches._elemdict = {
+}
+cubic_yards._propdict = {
+}
+cubic_yards._elemdict = {
+}
+kilograms._propdict = {
+}
+kilograms._elemdict = {
+}
+grams._propdict = {
+}
+grams._elemdict = {
+}
+ounces._propdict = {
+}
+ounces._elemdict = {
+}
+pounds._propdict = {
+}
+pounds._elemdict = {
+}
+degrees_Celsius._propdict = {
+}
+degrees_Celsius._elemdict = {
+}
+degrees_Fahrenheit._propdict = {
+}
+degrees_Fahrenheit._elemdict = {
+}
+degrees_Kelvin._propdict = {
+}
+degrees_Kelvin._elemdict = {
+}
+upper_case._propdict = {
+}
+upper_case._elemdict = {
+}
+app._propdict = {
+}
+app._elemdict = {
+}
+_Enum_cons = {
+       'case' : 'case',        # case
+       'diacriticals' : 'diac',        # diacriticals
+       'white_space' : 'whit', # white space
+       'hyphens' : 'hyph',     # hyphens
+       'expansion' : 'expa',   # expansion
+       'punctuation' : 'punc', # punctuation
+       'application_responses' : 'rmte',       # remote event replies
+}
+
+_Enum_boov = {
+       'true' : 'true',        # the true boolean value
+       'false' : 'fals',       # the false boolean value
+}
+
+_Enum_misc = {
+       'current_application' : 'cura', # the current application
+}
+
+_Enum_eMds = {
+       'option_down' : 'Kopt', # 
+       'command_down' : 'Kcmd',        # 
+       'control_down' : 'Kctl',        # 
+       'shift_down' : 'Ksft',  # 
+       'caps_lock_down' : 'Kclk',      # 
+}
+
+_Enum_ekst = {
+       'escape_key' : 'ks5\000',       # 
+       'delete_key' : 'ks3\000',       # 
+       'tab_key' : 'ks0\000',  # 
+       'return_key' : 'ks$\000',       # 
+       'clear_key' : 'ksG\000',        # 
+       'enter_key' : 'ksL\000',        # 
+       'up_arrow_key' : 'ks~\000',     # 
+       'down_arrow_key' : 'ks}\000',   # 
+       'left_arrow_key' : 'ks{\000',   # 
+       'right_arrow_key' : 'ks|\000',  # 
+       'help_key' : 'ksr\000', # 
+       'home_key' : 'kss\000', # 
+       'page_up_key' : 'kst\000',      # 
+       'page_down_key' : 'ksy\000',    # 
+       'forward_del_key' : 'ksu\000',  # 
+       'end_key' : 'ksw\000',  # 
+       'F1_key' : 'ksz\000',   # 
+       'F2_key' : 'ksx\000',   # 
+       'F3_key' : 'ksc\000',   # 
+       'F4_key' : 'ksv\000',   # 
+       'F5_key' : 'ks`\000',   # 
+       'F6_key' : 'ksa\000',   # 
+       'F7_key' : 'ksb\000',   # 
+       'F8_key' : 'ksd\000',   # 
+       'F9_key' : 'kse\000',   # 
+       'F10_key' : 'ksm\000',  # 
+       'F11_key' : 'ksg\000',  # 
+       'F12_key' : 'kso\000',  # 
+       'F13_key' : 'ksi\000',  # 
+       'F14_key' : 'ksk\000',  # 
+       'F15_key' : 'ksq\000',  # 
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'nmbr' : number,
+       'ctxt' : text,
+       'fss ' : file_specification,
+       'sat ' : Saturday,
+       'ccmt' : cubic_centimetres,
+       'cfet' : cubic_feet,
+       'lbs ' : pounds,
+       'yard' : yards,
+       'sqyd' : square_yards,
+       'mach' : machine,
+       'utxt' : Unicode_text,
+       'cstr' : C_string,
+       'rdat' : data,
+       'doub' : real,
+       'hand' : handler,
+       'sutx' : styled_Unicode_text,
+       'sqmi' : square_miles,
+       'undf' : _empty_ae_name,
+       'reco' : record,
+       'cha ' : character,
+       'cobj' : item,
+       'kfrm' : reference_form,
+       'enum' : constant,
+       'inch' : inches,
+       'sqrm' : square_metres,
+       'bool' : boolean,
+       'prop' : property,
+       '****' : anything,
+       'scpt' : script,
+       'kgrm' : kilograms,
+       'sep ' : September,
+       'snd ' : sound,
+       'mon ' : Monday,
+       'capp' : app,
+       'lr  ' : list_or_record,
+       'fri ' : Friday,
+       'cuin' : cubic_inches,
+       'mar ' : March,
+       'galn' : gallons,
+       'encs' : encoded_string,
+       'litr' : litres,
+       'case' : upper_case,
+       'styl' : styled_Clipboard_text,
+       'llst' : linked_list,
+       'pcls' : _class,
+       'jun ' : June,
+       'ns  ' : number_or_string,
+       'ozs ' : ounces,
+       'mnth' : month,
+       'metr' : metres,
+       'jan ' : January,
+       'pstr' : Pascal_string,
+       'alis' : alias,
+       'gram' : grams,
+       'msng' : missing_value,
+       'qrts' : quarts,
+       'nov ' : November,
+       'list' : list,
+       'sqft' : square_feet,
+       'kmtr' : kilometres,
+       'cRGB' : RGB_color,
+       'itxt' : international_text,
+       'scnd' : seconds,
+       'apr ' : April,
+       'nd  ' : number_or_date,
+       'wkdy' : weekday,
+       'vect' : vector,
+       'obj ' : reference,
+       'sqkm' : square_kilometres,
+       'dec ' : December,
+       'wed ' : Wednesday,
+       'cyrd' : cubic_yards,
+       'vers' : version,
+       'tue ' : Tuesday,
+       'prep' : preposition,
+       'type' : type_class,
+       'citm' : text_item,
+       'citl' : writing_code_info,
+       'sf  ' : alias_or_string,
+       'degc' : degrees_Celsius,
+       'long' : integer,
+       'ls  ' : list_or_string,
+       'PICT' : picture,
+       'zone' : zone,
+       'psct' : writing_code,
+       'lrs ' : list_2c__record_or_text,
+       'cmtr' : centimetres,
+       'evnt' : event,
+       'oct ' : October,
+       'degk' : degrees_Kelvin,
+       'ldt ' : date,
+       'thu ' : Thursday,
+       'degf' : degrees_Fahrenheit,
+       'kprs' : keystroke,
+       'mile' : miles,
+       'feb ' : February,
+       'feet' : feet,
+       'nds ' : number_2c__date_or_text,
+       'STXT' : styled_text,
+       'cmet' : cubic_metres,
+       'sun ' : Sunday,
+       'aug ' : August,
+       'may ' : May,
+       'jul ' : July,
+       'TEXT' : string,
+}
+
+_propdeclarations = {
+       'pscd' : script_code,
+       'rslt' : result,
+       'pnam' : name,
+       'time' : time,
+       'txdl' : text_item_delimiters,
+       'prln' : print_length,
+       'prdp' : print_depth,
+       'kMod' : modifiers,
+       'days' : days,
+       'spac' : space,
+       'kMsg' : key,
+       'plcd' : language_code,
+       'ret ' : _return,
+       'tstr' : time_string,
+       'hour' : hours,
+       'tab ' : tab,
+       'rvse' : reverse,
+       'wkdy' : weekday,
+       'day ' : day,
+       'ID  ' : id,
+       'c@#^' : _3c_Inheritance_3e_,
+       'kknd' : key_kind,
+       'ascr' : AppleScript,
+       'rest' : rest,
+       'dstr' : date_string,
+       'min ' : minutes,
+       'pi  ' : pi,
+       'leng' : length,
+       'year' : year,
+       'pare' : parent,
+       'mnth' : month,
+       'week' : weeks,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'boov' : _Enum_boov,
+       'ekst' : _Enum_ekst,
+       'misc' : _Enum_misc,
+       'cons' : _Enum_cons,
+       'eMds' : _Enum_eMds,
+}
diff --git a/Mac/Lib/lib-scriptpackages/StdSuites/Standard_Suite.py b/Mac/Lib/lib-scriptpackages/StdSuites/Standard_Suite.py
new file mode 100644 (file)
index 0000000..7870acd
--- /dev/null
@@ -0,0 +1,703 @@
+"""Suite Standard Suite: Common terms for most applications
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Extensies:AppleScript
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'core'
+
+class Standard_Suite_Events:
+
+       def open(self, _object, _attributes={}, **_arguments):
+               """open: Open the specified object(s)
+               Required argument: list of objects to open
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'odoc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def run(self, _no_object=None, _attributes={}, **_arguments):
+               """run: Run an application.  Most applications will open an empty, untitled window.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'oapp'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def reopen(self, _no_object=None, _attributes={}, **_arguments):
+               """reopen: Reactivate a running application.  Some applications will open a new untitled window if no window is open.
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'rapp'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def _print(self, _object, _attributes={}, **_arguments):
+               """print: Print the specified object(s)
+               Required argument: list of objects to print
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'pdoc'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_quit = {
+               'saving' : 'savo',
+       }
+
+       def quit(self, _no_object=None, _attributes={}, **_arguments):
+               """quit: Quit an application
+               Keyword argument saving: specifies whether to save currently open documents
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'aevt'
+               _subcode = 'quit'
+
+               aetools.keysubst(_arguments, self._argmap_quit)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+               aetools.enumsubst(_arguments, 'savo', _Enum_savo)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_close = {
+               'saving' : 'savo',
+               'saving_in' : 'kfil',
+       }
+
+       def close(self, _object, _attributes={}, **_arguments):
+               """close: Close an object
+               Required argument: the object to close
+               Keyword argument saving: specifies whether changes should be saved before closing
+               Keyword argument saving_in: the file in which to save the object
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'clos'
+
+               aetools.keysubst(_arguments, self._argmap_close)
+               _arguments['----'] = _object
+
+               aetools.enumsubst(_arguments, 'savo', _Enum_savo)
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_count = {
+               'each' : 'kocl',
+       }
+
+       def count(self, _object, _attributes={}, **_arguments):
+               """count: Return the number of elements of an object
+               Required argument: the object whose elements are to be counted
+               Keyword argument each: if specified, restricts counting to objects of this class
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the number of elements
+               """
+               _code = 'core'
+               _subcode = 'cnte'
+
+               aetools.keysubst(_arguments, self._argmap_count)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def delete(self, _object, _attributes={}, **_arguments):
+               """delete: Delete an object from its container. Note this does not work on script variables, only on elements of application classes.
+               Required argument: the element to delete
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'delo'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_duplicate = {
+               'to' : 'insh',
+               'with_properties' : 'prdt',
+       }
+
+       def duplicate(self, _object, _attributes={}, **_arguments):
+               """duplicate: Duplicate one or more objects
+               Required argument: the object(s) to duplicate
+               Keyword argument to: the new location for the object(s)
+               Keyword argument with_properties: the initial values for properties of the new object that are to be different from the original
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: to the duplicated object(s)
+               """
+               _code = 'core'
+               _subcode = 'clon'
+
+               aetools.keysubst(_arguments, self._argmap_duplicate)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def exists(self, _object, _attributes={}, **_arguments):
+               """exists: Verify if an object exists
+               Required argument: the object in question
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: true if it exists, false if not
+               """
+               _code = 'core'
+               _subcode = 'doex'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_make = {
+               'new' : 'kocl',
+               'at' : 'insh',
+               'with_data' : 'data',
+               'with_properties' : 'prdt',
+       }
+
+       def make(self, _no_object=None, _attributes={}, **_arguments):
+               """make: Make a new element
+               Keyword argument new: the class of the new element
+               Keyword argument at: the location at which to insert the element
+               Keyword argument with_data: the initial data for the element
+               Keyword argument with_properties: the initial values for the properties of the element
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: to the new object(s)
+               """
+               _code = 'core'
+               _subcode = 'crel'
+
+               aetools.keysubst(_arguments, self._argmap_make)
+               if _no_object != None: raise TypeError, 'No direct arg expected'
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_move = {
+               'to' : 'insh',
+       }
+
+       def move(self, _object, _attributes={}, **_arguments):
+               """move: Move object(s) to a new location
+               Required argument: the object(s) to move
+               Keyword argument to: the new location for the object(s)
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: to the object(s) after they have been moved
+               """
+               _code = 'core'
+               _subcode = 'move'
+
+               aetools.keysubst(_arguments, self._argmap_move)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_save = {
+               '_in' : 'kfil',
+               'as' : 'fltp',
+       }
+
+       def save(self, _object, _attributes={}, **_arguments):
+               """save: Save an object
+               Required argument: the object to save, usually a document or window
+               Keyword argument _in: the file in which to save the object
+               Keyword argument as: the file type of the document in which to save the data
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'core'
+               _subcode = 'save'
+
+               aetools.keysubst(_arguments, self._argmap_save)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       def select(self, _object, _attributes={}, **_arguments):
+               """select: Make a selection
+               Required argument: the object to select
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               """
+               _code = 'misc'
+               _subcode = 'slct'
+
+               if _arguments: raise TypeError, 'No optional args expected'
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_data_size = {
+               'as' : 'rtyp',
+       }
+
+       def data_size(self, _object, _attributes={}, **_arguments):
+               """data size: (optional) Return the size in bytes of an object
+               Required argument: the object whose data size is to be returned
+               Keyword argument as: the data type for which the size is calculated
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: the size of the object in bytes
+               """
+               _code = 'core'
+               _subcode = 'dsiz'
+
+               aetools.keysubst(_arguments, self._argmap_data_size)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_suite_info = {
+               '_in' : 'wrcd',
+       }
+
+       def suite_info(self, _object, _attributes={}, **_arguments):
+               """suite info: (optional) Get information about event suite(s)
+               Required argument: the suite for which to return information
+               Keyword argument _in: the human language and script system in which to return information
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a record containing the suites and their versions
+               """
+               _code = 'core'
+               _subcode = 'gtsi'
+
+               aetools.keysubst(_arguments, self._argmap_suite_info)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_event_info = {
+               '_in' : 'wrcd',
+       }
+
+       def event_info(self, _object, _attributes={}, **_arguments):
+               """event info: (optional) Get information about the Apple events in a suite
+               Required argument: the event class of the Apple events for which to return information
+               Keyword argument _in: the human language and script system in which to return information
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a record containing the events and their parameters
+               """
+               _code = 'core'
+               _subcode = 'gtei'
+
+               aetools.keysubst(_arguments, self._argmap_event_info)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+       _argmap_class_info = {
+               '_in' : 'wrcd',
+       }
+
+       def class_info(self, _object=None, _attributes={}, **_arguments):
+               """class info: (optional) Get information about an object class
+               Required argument: the object class about which information is requested
+               Keyword argument _in: the human language and script system in which to return information
+               Keyword argument _attributes: AppleEvent attribute dictionary
+               Returns: a record containing the objectÕs properties and elements
+               """
+               _code = 'core'
+               _subcode = 'qobj'
+
+               aetools.keysubst(_arguments, self._argmap_class_info)
+               _arguments['----'] = _object
+
+
+               _reply, _arguments, _attributes = self.send(_code, _subcode,
+                               _arguments, _attributes)
+               if _arguments.has_key('errn'):
+                       raise aetools.Error, aetools.decodeerror(_arguments)
+               # XXXX Optionally decode result
+               if _arguments.has_key('----'):
+                       return _arguments['----']
+
+
+class application(aetools.ComponentItem):
+       """application - An application program """
+       want = 'capp'
+class name(aetools.NProperty):
+       """name - the name of the application """
+       which = 'pnam'
+       want = 'itxt'
+class frontmost(aetools.NProperty):
+       """frontmost - Is this the frontmost application? """
+       which = 'pisf'
+       want = 'bool'
+class selection(aetools.NProperty):
+       """selection - the selection visible to the user.  Use the \95selectÕ command to set a new selection; use \95contents of selectionÕ to get or change information in the document. """
+       which = 'sele'
+       want = 'csel'
+class clipboard(aetools.NProperty):
+       """clipboard - the contents of the clipboard for this application """
+       which = 'pcli'
+       want = '****'
+class version(aetools.NProperty):
+       """version - the version of the application """
+       which = 'vers'
+       want = 'vers'
+
+applications = application
+
+class document(aetools.ComponentItem):
+       """document - A document of a scriptable application """
+       want = 'docu'
+class modified(aetools.NProperty):
+       """modified - Has the document been modified since the last save? """
+       which = 'imod'
+       want = 'bool'
+
+documents = document
+
+class file(aetools.ComponentItem):
+       """file - a file on a disk or server (or a file yet to be created) """
+       want = 'file'
+class stationery(aetools.NProperty):
+       """stationery - Is the file a stationery file? """
+       which = 'pspd'
+       want = 'bool'
+
+files = file
+
+class alias(aetools.ComponentItem):
+       """alias - a file on a disk or server.  The file must exist when you check the syntax of your script. """
+       want = 'alis'
+
+aliases = alias
+
+class selection_2d_object(aetools.ComponentItem):
+       """selection-object - A way to refer to the state of the current of the selection.  Use the \95selectÕ command to make a new selection. """
+       want = 'csel'
+class contents(aetools.NProperty):
+       """contents - the information currently selected.  Use \95contents of selectionÕ to get or change information in a document. """
+       which = 'pcnt'
+       want = '****'
+
+class window(aetools.ComponentItem):
+       """window - A window """
+       want = 'cwin'
+class bounds(aetools.NProperty):
+       """bounds - the boundary rectangle for the window """
+       which = 'pbnd'
+       want = 'qdrt'
+class closeable(aetools.NProperty):
+       """closeable - Does the window have a close box? """
+       which = 'hclb'
+       want = 'bool'
+class titled(aetools.NProperty):
+       """titled - Does the window have a title bar? """
+       which = 'ptit'
+       want = 'bool'
+class index(aetools.NProperty):
+       """index - the number of the window """
+       which = 'pidx'
+       want = 'long'
+class floating(aetools.NProperty):
+       """floating - Does the window float? """
+       which = 'isfl'
+       want = 'bool'
+class modal(aetools.NProperty):
+       """modal - Is the window modal? """
+       which = 'pmod'
+       want = 'bool'
+class resizable(aetools.NProperty):
+       """resizable - Is the window resizable? """
+       which = 'prsz'
+       want = 'bool'
+class zoomable(aetools.NProperty):
+       """zoomable - Is the window zoomable? """
+       which = 'iszm'
+       want = 'bool'
+class zoomed(aetools.NProperty):
+       """zoomed - Is the window zoomed? """
+       which = 'pzum'
+       want = 'bool'
+class visible(aetools.NProperty):
+       """visible - Is the window visible? """
+       which = 'pvis'
+       want = 'bool'
+
+windows = window
+
+class insertion_point(aetools.ComponentItem):
+       """insertion point - An insertion location between two objects """
+       want = 'cins'
+
+insertion_points = insertion_point
+application._propdict = {
+       'name' : name,
+       'frontmost' : frontmost,
+       'selection' : selection,
+       'clipboard' : clipboard,
+       'version' : version,
+}
+application._elemdict = {
+}
+document._propdict = {
+       'modified' : modified,
+}
+document._elemdict = {
+}
+file._propdict = {
+       'stationery' : stationery,
+}
+file._elemdict = {
+}
+alias._propdict = {
+}
+alias._elemdict = {
+}
+selection_2d_object._propdict = {
+       'contents' : contents,
+}
+selection_2d_object._elemdict = {
+}
+window._propdict = {
+       'bounds' : bounds,
+       'closeable' : closeable,
+       'titled' : titled,
+       'index' : index,
+       'floating' : floating,
+       'modal' : modal,
+       'resizable' : resizable,
+       'zoomable' : zoomable,
+       'zoomed' : zoomed,
+       'visible' : visible,
+}
+window._elemdict = {
+}
+insertion_point._propdict = {
+}
+insertion_point._elemdict = {
+}
+class starts_with(aetools.NComparison):
+       """starts with - Starts with """
+class contains(aetools.NComparison):
+       """contains - Contains """
+class ends_with(aetools.NComparison):
+       """ends with - Ends with """
+class _3d_(aetools.NComparison):
+       """= - Equal """
+class _3e_(aetools.NComparison):
+       """> - Greater than """
+class _b3_(aetools.NComparison):
+       """³ - Greater than or equal to """
+class _3c_(aetools.NComparison):
+       """< - Less than """
+class _b2_(aetools.NComparison):
+       """² - Less than or equal to """
+_Enum_savo = {
+       'yes' : 'yes ', # Save objects now
+       'no' : 'no  ',  # Do not save objects
+       'ask' : 'ask ', # Ask the user whether to save
+}
+
+_Enum_kfrm = {
+       'index' : 'indx',       # keyform designating indexed access
+       'named' : 'name',       # keyform designating named access
+       'id' : 'ID  ',  # keyform designating access by unique identifier
+}
+
+_Enum_styl = {
+       'plain' : 'plan',       # Plain
+       'bold' : 'bold',        # Bold
+       'italic' : 'ital',      # Italic
+       'outline' : 'outl',     # Outline
+       'shadow' : 'shad',      # Shadow
+       'underline' : 'undl',   # Underline
+       'superscript' : 'spsc', # Superscript
+       'subscript' : 'sbsc',   # Subscript
+       'strikethrough' : 'strk',       # Strikethrough
+       'small_caps' : 'smcp',  # Small caps
+       'all_caps' : 'alcp',    # All capital letters
+       'all_lowercase' : 'lowc',       # Lowercase
+       'condensed' : 'cond',   # Condensed
+       'expanded' : 'pexp',    # Expanded
+       'hidden' : 'hidn',      # Hidden
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'docu' : document,
+       'cins' : insertion_point,
+       'capp' : application,
+       'alis' : alias,
+       'csel' : selection_2d_object,
+       'file' : file,
+       'cwin' : window,
+}
+
+_propdeclarations = {
+       'ptit' : titled,
+       'pidx' : index,
+       'pnam' : name,
+       'pzum' : zoomed,
+       'pcnt' : contents,
+       'pcli' : clipboard,
+       'hclb' : closeable,
+       'iszm' : zoomable,
+       'isfl' : floating,
+       'pspd' : stationery,
+       'pisf' : frontmost,
+       'sele' : selection,
+       'pbnd' : bounds,
+       'imod' : modified,
+       'pvis' : visible,
+       'pmod' : modal,
+       'vers' : version,
+       'prsz' : resizable,
+}
+
+_compdeclarations = {
+       '>   ' : _3e_,
+       'bgwt' : starts_with,
+       '>=  ' : _b3_,
+       '=   ' : _3d_,
+       '<=  ' : _b2_,
+       'cont' : contains,
+       'ends' : ends_with,
+       '<   ' : _3c_,
+}
+
+_enumdeclarations = {
+       'styl' : _Enum_styl,
+       'savo' : _Enum_savo,
+       'kfrm' : _Enum_kfrm,
+}
diff --git a/Mac/Lib/lib-scriptpackages/StdSuites/Table_Suite.py b/Mac/Lib/lib-scriptpackages/StdSuites/Table_Suite.py
new file mode 100644 (file)
index 0000000..0e62666
--- /dev/null
@@ -0,0 +1,100 @@
+"""Suite Table Suite: Classes for manipulating tables
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Extensies:AppleScript
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'tbls'
+
+class Table_Suite_Events:
+
+       pass
+
+
+class cell(aetools.ComponentItem):
+       """cell - A cell """
+       want = 'ccel'
+class formula(aetools.NProperty):
+       """formula - the formula of the cell """
+       which = 'pfor'
+       want = 'ctxt'
+class protection(aetools.NProperty):
+       """protection - Indicates whether value or formula in the cell can be changed """
+       which = 'ppro'
+       want = 'prtn'
+
+cells = cell
+
+class column(aetools.ComponentItem):
+       """column - A column """
+       want = 'ccol'
+class name(aetools.NProperty):
+       """name - the name of the column """
+       which = 'pnam'
+       want = 'itxt'
+
+columns = column
+
+class row(aetools.ComponentItem):
+       """row - A row """
+       want = 'crow'
+
+rows = row
+
+class table(aetools.ComponentItem):
+       """table - A table """
+       want = 'ctbl'
+
+tables = table
+cell._propdict = {
+       'formula' : formula,
+       'protection' : protection,
+}
+cell._elemdict = {
+}
+column._propdict = {
+       'name' : name,
+}
+column._elemdict = {
+}
+row._propdict = {
+}
+row._elemdict = {
+}
+table._propdict = {
+}
+table._elemdict = {
+}
+_Enum_prtn = {
+       'read_only' : 'nmod',   # CanÕt change values or formulas
+       'formulas_protected' : 'fpro',  # Can changes values but not formulas
+       'read_2f_write' : 'modf',       # Can change values and formulas
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'ccel' : cell,
+       'ctbl' : table,
+       'ccol' : column,
+       'crow' : row,
+}
+
+_propdeclarations = {
+       'ppro' : protection,
+       'pfor' : formula,
+       'pnam' : name,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'prtn' : _Enum_prtn,
+}
diff --git a/Mac/Lib/lib-scriptpackages/StdSuites/Text_Suite.py b/Mac/Lib/lib-scriptpackages/StdSuites/Text_Suite.py
new file mode 100644 (file)
index 0000000..2f18df1
--- /dev/null
@@ -0,0 +1,215 @@
+"""Suite Text Suite: A set of basic classes for text processing
+Level 1, version 1
+
+Generated from Macintosh HD:Systeemmap:Extensies:AppleScript
+AETE/AEUT resource version 1/0, language 0, script 0
+"""
+
+import aetools
+import MacOS
+
+_code = 'TEXT'
+
+class Text_Suite_Events:
+
+       pass
+
+
+class character(aetools.ComponentItem):
+       """character - A character """
+       want = 'cha '
+class _3c_inheritance_3e_(aetools.NProperty):
+       """<inheritance> - inherits some of its properties from this class """
+       which = 'c@#^'
+       want = 'ctxt'
+
+class line(aetools.ComponentItem):
+       """line - A line of text """
+       want = 'clin'
+# repeated property _3c_inheritance_3e_ inherits some of its properties from this class
+class justification(aetools.NProperty):
+       """justification - the justification of the text """
+       which = 'pjst'
+       want = 'just'
+
+lines = line
+
+class paragraph(aetools.ComponentItem):
+       """paragraph - A paragraph """
+       want = 'cpar'
+# repeated property _3c_inheritance_3e_ inherits some of its properties from this class
+
+paragraphs = paragraph
+
+class text(aetools.ComponentItem):
+       """text - Text """
+       want = 'ctxt'
+class color(aetools.NProperty):
+       """color - the color of the first character """
+       which = 'colr'
+       want = 'cRGB'
+class font(aetools.NProperty):
+       """font - the name of the font of the first character """
+       which = 'font'
+       want = 'ctxt'
+class size(aetools.NProperty):
+       """size - the size in points of the first character """
+       which = 'ptsz'
+       want = 'fixd'
+class writing_code(aetools.NProperty):
+       """writing code - the script system and language """
+       which = 'psct'
+       want = 'intl'
+class style(aetools.NProperty):
+       """style - the text style of the first character of the first character """
+       which = 'txst'
+       want = 'tsty'
+class uniform_styles(aetools.NProperty):
+       """uniform styles - the text styles that are uniform throughout the text """
+       which = 'ustl'
+       want = 'tsty'
+#        element 'cha ' as ['indx']
+#        element 'clin' as ['indx']
+#        element 'cpar' as ['indx']
+#        element 'ctxt' as ['indx']
+#        element 'cwor' as ['indx']
+
+class text_flow(aetools.ComponentItem):
+       """text flow - A contiguous block of text.  Page layout applications call this a \95story.Õ """
+       want = 'cflo'
+# repeated property _3c_inheritance_3e_ inherits some of its properties from this class
+class name(aetools.NProperty):
+       """name - the name """
+       which = 'pnam'
+       want = 'itxt'
+
+text_flows = text_flow
+
+class text_style_info(aetools.ComponentItem):
+       """text style info - On and Off styles of text run """
+       want = 'tsty'
+class on_styles(aetools.NProperty):
+       """on styles - the styles that are on for the text """
+       which = 'onst'
+       want = 'styl'
+class off_styles(aetools.NProperty):
+       """off styles - the styles that are off for the text """
+       which = 'ofst'
+       want = 'styl'
+
+text_style_infos = text_style_info
+
+class word(aetools.ComponentItem):
+       """word - A word """
+       want = 'cwor'
+# repeated property _3c_inheritance_3e_ inherits some of its properties from this class
+
+words = word
+character._propdict = {
+       '_3c_inheritance_3e_' : _3c_inheritance_3e_,
+}
+character._elemdict = {
+}
+line._propdict = {
+       '_3c_inheritance_3e_' : _3c_inheritance_3e_,
+       'justification' : justification,
+}
+line._elemdict = {
+}
+paragraph._propdict = {
+       '_3c_inheritance_3e_' : _3c_inheritance_3e_,
+}
+paragraph._elemdict = {
+}
+text._propdict = {
+       'color' : color,
+       'font' : font,
+       'size' : size,
+       'writing_code' : writing_code,
+       'style' : style,
+       'uniform_styles' : uniform_styles,
+}
+text._elemdict = {
+       'character' : character,
+       'line' : line,
+       'paragraph' : paragraph,
+       'text' : text,
+       'word' : word,
+}
+text_flow._propdict = {
+       '_3c_inheritance_3e_' : _3c_inheritance_3e_,
+       'name' : name,
+}
+text_flow._elemdict = {
+}
+text_style_info._propdict = {
+       'on_styles' : on_styles,
+       'off_styles' : off_styles,
+}
+text_style_info._elemdict = {
+}
+word._propdict = {
+       '_3c_inheritance_3e_' : _3c_inheritance_3e_,
+}
+word._elemdict = {
+}
+_Enum_just = {
+       'left' : 'left',        # Align with left margin
+       'right' : 'rght',       # Align with right margin
+       'center' : 'cent',      # Align with center
+       'full' : 'full',        # Align with both left and right margins
+}
+
+_Enum_styl = {
+       'plain' : 'plan',       # Plain
+       'bold' : 'bold',        # Bold
+       'italic' : 'ital',      # Italic
+       'outline' : 'outl',     # Outline
+       'shadow' : 'shad',      # Shadow
+       'underline' : 'undl',   # Underline
+       'superscript' : 'spsc', # Superscript
+       'subscript' : 'sbsc',   # Subscript
+       'strikethrough' : 'strk',       # Strikethrough
+       'small_caps' : 'smcp',  # Small caps
+       'all_caps' : 'alcp',    # All capital letters
+       'all_lowercase' : 'lowc',       # Lowercase
+       'condensed' : 'cond',   # Condensed
+       'expanded' : 'pexp',    # Expanded
+       'hidden' : 'hidn',      # Hidden
+}
+
+
+#
+# Indices of types declared in this module
+#
+_classdeclarations = {
+       'clin' : line,
+       'ctxt' : text,
+       'cwor' : word,
+       'cflo' : text_flow,
+       'cpar' : paragraph,
+       'tsty' : text_style_info,
+       'cha ' : character,
+}
+
+_propdeclarations = {
+       'psct' : writing_code,
+       'txst' : style,
+       'colr' : color,
+       'font' : font,
+       'pnam' : name,
+       'ustl' : uniform_styles,
+       'pjst' : justification,
+       'ofst' : off_styles,
+       'onst' : on_styles,
+       'ptsz' : size,
+       'c@#^' : _3c_inheritance_3e_,
+}
+
+_compdeclarations = {
+}
+
+_enumdeclarations = {
+       'styl' : _Enum_styl,
+       'just' : _Enum_just,
+}
diff --git a/Mac/Lib/lib-toolbox/AppleEvents.py b/Mac/Lib/lib-toolbox/AppleEvents.py
new file mode 100644 (file)
index 0000000..605a3e0
--- /dev/null
@@ -0,0 +1,952 @@
+# Generated from 'AEDataModel.h'
+
+def FOUR_CHAR_CODE(x): return x
+typeBoolean = FOUR_CHAR_CODE('bool')
+typeChar = FOUR_CHAR_CODE('TEXT')
+typeSInt16 = FOUR_CHAR_CODE('shor')
+typeSInt32 = FOUR_CHAR_CODE('long')
+typeUInt32 = FOUR_CHAR_CODE('magn')
+typeSInt64 = FOUR_CHAR_CODE('comp')
+typeIEEE32BitFloatingPoint = FOUR_CHAR_CODE('sing')
+typeIEEE64BitFloatingPoint = FOUR_CHAR_CODE('doub')
+type128BitFloatingPoint = FOUR_CHAR_CODE('ldbl')
+typeDecimalStruct = FOUR_CHAR_CODE('decm')
+typeSMInt = typeSInt16
+typeShortInteger = typeSInt16
+typeInteger = typeSInt32
+typeLongInteger = typeSInt32
+typeMagnitude = typeUInt32
+typeComp = typeSInt64
+typeSMFloat = typeIEEE32BitFloatingPoint
+typeShortFloat = typeIEEE32BitFloatingPoint
+typeFloat = typeIEEE64BitFloatingPoint
+typeLongFloat = typeIEEE64BitFloatingPoint
+typeExtended = FOUR_CHAR_CODE('exte')
+typeAEList = FOUR_CHAR_CODE('list')
+typeAERecord = FOUR_CHAR_CODE('reco')
+typeAppleEvent = FOUR_CHAR_CODE('aevt')
+typeEventRecord = FOUR_CHAR_CODE('evrc')
+typeTrue = FOUR_CHAR_CODE('true')
+typeFalse = FOUR_CHAR_CODE('fals')
+typeAlias = FOUR_CHAR_CODE('alis')
+typeEnumerated = FOUR_CHAR_CODE('enum')
+typeType = FOUR_CHAR_CODE('type')
+typeAppParameters = FOUR_CHAR_CODE('appa')
+typeProperty = FOUR_CHAR_CODE('prop')
+typeFSS = FOUR_CHAR_CODE('fss ')
+typeKeyword = FOUR_CHAR_CODE('keyw')
+typeSectionH = FOUR_CHAR_CODE('sect')
+typeWildCard = FOUR_CHAR_CODE('****')
+typeApplSignature = FOUR_CHAR_CODE('sign')
+typeQDRectangle = FOUR_CHAR_CODE('qdrt')
+typeFixed = FOUR_CHAR_CODE('fixd')
+typeSessionID = FOUR_CHAR_CODE('ssid')
+typeTargetID = FOUR_CHAR_CODE('targ')
+typeProcessSerialNumber = FOUR_CHAR_CODE('psn ')
+typeKernelProcessID = FOUR_CHAR_CODE('kpid')
+typeDispatcherID = FOUR_CHAR_CODE('dspt')
+typeNull = FOUR_CHAR_CODE('null')        
+keyTransactionIDAttr = FOUR_CHAR_CODE('tran')
+keyReturnIDAttr = FOUR_CHAR_CODE('rtid')
+keyEventClassAttr = FOUR_CHAR_CODE('evcl')
+keyEventIDAttr = FOUR_CHAR_CODE('evid')
+keyAddressAttr = FOUR_CHAR_CODE('addr')
+keyOptionalKeywordAttr = FOUR_CHAR_CODE('optk')
+keyTimeoutAttr = FOUR_CHAR_CODE('timo')
+keyInteractLevelAttr = FOUR_CHAR_CODE('inte')
+keyEventSourceAttr = FOUR_CHAR_CODE('esrc')
+keyMissedKeywordAttr = FOUR_CHAR_CODE('miss')
+keyOriginalAddressAttr = FOUR_CHAR_CODE('from')        
+kAEDescListFactorNone = 0
+kAEDescListFactorType = 4
+kAEDescListFactorTypeAndSize = 8
+kAutoGenerateReturnID = -1
+kAnyTransactionID = 0                             
+kAEDataArray = 0
+kAEPackedArray = 1
+kAEDescArray = 3
+kAEKeyDescArray = 4
+kAEHandleArray = 2
+keyDirectObject = FOUR_CHAR_CODE('----')
+keyErrorNumber = FOUR_CHAR_CODE('errn')
+keyErrorString = FOUR_CHAR_CODE('errs')
+keyProcessSerialNumber = FOUR_CHAR_CODE('psn ')
+keyPreDispatch = FOUR_CHAR_CODE('phac')
+keySelectProc = FOUR_CHAR_CODE('selh')
+keyAERecorderCount = FOUR_CHAR_CODE('recr')
+keyAEVersion = FOUR_CHAR_CODE('vers')        
+kCoreEventClass = FOUR_CHAR_CODE('aevt')
+kAEOpenApplication = FOUR_CHAR_CODE('oapp')
+kAEOpenDocuments = FOUR_CHAR_CODE('odoc')
+kAEPrintDocuments = FOUR_CHAR_CODE('pdoc')
+kAEQuitApplication = FOUR_CHAR_CODE('quit')
+kAEAnswer = FOUR_CHAR_CODE('ansr')
+kAEApplicationDied = FOUR_CHAR_CODE('obit')
+kAEStartRecording = FOUR_CHAR_CODE('reca')
+kAEStopRecording = FOUR_CHAR_CODE('recc')
+kAENotifyStartRecording = FOUR_CHAR_CODE('rec1')
+kAENotifyStopRecording = FOUR_CHAR_CODE('rec0')
+kAENotifyRecording = FOUR_CHAR_CODE('recr')        
+kAENeverInteract = 0x00000010
+kAECanInteract = 0x00000020
+kAEAlwaysInteract = 0x00000030
+kAECanSwitchLayer = 0x00000040
+kAEDontRecord = 0x00001000
+kAEDontExecute = 0x00002000
+kAEProcessNonReplyEvents = 0x00008000                    
+kAENoReply = 0x00000001
+kAEQueueReply = 0x00000002
+kAEWaitReply = 0x00000003
+kAEDontReconnect = 0x00000080
+kAEWantReceipt = 0x00000200                    
+kAEDefaultTimeout = -1
+kNoTimeOut = -2                            
+kAENormalPriority = 0x00000000
+kAEHighPriority = 0x00000001                    
+kAEUnknownSource = 0
+kAEDirectCall = 1
+kAESameProcess = 2
+kAELocalProcess = 3
+kAERemoteProcess = 4
+kAEInteractWithSelf = 0
+kAEInteractWithLocal = 1
+kAEInteractWithAll = 2
+kAEDoNotIgnoreHandler = 0x00000000
+kAEIgnoreAppPhacHandler = 0x00000001
+kAEIgnoreAppEventHandler = 0x00000002
+kAEIgnoreSysPhacHandler = 0x00000004
+kAEIgnoreSysEventHandler = 0x00000008
+kAEIngoreBuiltInEventHandler = 0x00000010
+# kAEDontDisposeOnResume = (long)0x80000000              
+kAENoDispatch = 0
+# kAEUseStandardDispatch = (long)0xFFFFFFFF              
+cAEList = FOUR_CHAR_CODE('list')
+cApplication = FOUR_CHAR_CODE('capp')
+cArc = FOUR_CHAR_CODE('carc')
+cBoolean = FOUR_CHAR_CODE('bool')
+cCell = FOUR_CHAR_CODE('ccel')
+cChar = FOUR_CHAR_CODE('cha ')
+cColorTable = FOUR_CHAR_CODE('clrt')
+cColumn = FOUR_CHAR_CODE('ccol')
+cDocument = FOUR_CHAR_CODE('docu')
+cDrawingArea = FOUR_CHAR_CODE('cdrw')
+cEnumeration = FOUR_CHAR_CODE('enum')
+cFile = FOUR_CHAR_CODE('file')
+cFixed = FOUR_CHAR_CODE('fixd')
+cFixedPoint = FOUR_CHAR_CODE('fpnt')
+cFixedRectangle = FOUR_CHAR_CODE('frct')
+cGraphicLine = FOUR_CHAR_CODE('glin')
+cGraphicObject = FOUR_CHAR_CODE('cgob')
+cGraphicShape = FOUR_CHAR_CODE('cgsh')
+cGraphicText = FOUR_CHAR_CODE('cgtx')
+cGroupedGraphic = FOUR_CHAR_CODE('cpic')        
+cInsertionLoc = FOUR_CHAR_CODE('insl')
+cInsertionPoint = FOUR_CHAR_CODE('cins')
+cIntlText = FOUR_CHAR_CODE('itxt')
+cIntlWritingCode = FOUR_CHAR_CODE('intl')
+cItem = FOUR_CHAR_CODE('citm')
+cLine = FOUR_CHAR_CODE('clin')
+cLongDateTime = FOUR_CHAR_CODE('ldt ')
+cLongFixed = FOUR_CHAR_CODE('lfxd')
+cLongFixedPoint = FOUR_CHAR_CODE('lfpt')
+cLongFixedRectangle = FOUR_CHAR_CODE('lfrc')
+cLongInteger = FOUR_CHAR_CODE('long')
+cLongPoint = FOUR_CHAR_CODE('lpnt')
+cLongRectangle = FOUR_CHAR_CODE('lrct')
+cMachineLoc = FOUR_CHAR_CODE('mLoc')
+cMenu = FOUR_CHAR_CODE('cmnu')
+cMenuItem = FOUR_CHAR_CODE('cmen')
+cObject = FOUR_CHAR_CODE('cobj')
+cObjectSpecifier = FOUR_CHAR_CODE('obj ')
+cOpenableObject = FOUR_CHAR_CODE('coob')
+cOval = FOUR_CHAR_CODE('covl')        
+cParagraph = FOUR_CHAR_CODE('cpar')
+cPICT = FOUR_CHAR_CODE('PICT')
+cPixel = FOUR_CHAR_CODE('cpxl')
+cPixelMap = FOUR_CHAR_CODE('cpix')
+cPolygon = FOUR_CHAR_CODE('cpgn')
+cProperty = FOUR_CHAR_CODE('prop')
+cQDPoint = FOUR_CHAR_CODE('QDpt')
+cQDRectangle = FOUR_CHAR_CODE('qdrt')
+cRectangle = FOUR_CHAR_CODE('crec')
+cRGBColor = FOUR_CHAR_CODE('cRGB')
+cRotation = FOUR_CHAR_CODE('trot')
+cRoundedRectangle = FOUR_CHAR_CODE('crrc')
+cRow = FOUR_CHAR_CODE('crow')
+cSelection = FOUR_CHAR_CODE('csel')
+cShortInteger = FOUR_CHAR_CODE('shor')
+cTable = FOUR_CHAR_CODE('ctbl')
+cText = FOUR_CHAR_CODE('ctxt')
+cTextFlow = FOUR_CHAR_CODE('cflo')
+cTextStyles = FOUR_CHAR_CODE('tsty')
+cType = FOUR_CHAR_CODE('type')        
+cVersion = FOUR_CHAR_CODE('vers')
+cWindow = FOUR_CHAR_CODE('cwin')
+cWord = FOUR_CHAR_CODE('cwor')
+enumArrows = FOUR_CHAR_CODE('arro')
+enumJustification = FOUR_CHAR_CODE('just')
+enumKeyForm = FOUR_CHAR_CODE('kfrm')
+enumPosition = FOUR_CHAR_CODE('posi')
+enumProtection = FOUR_CHAR_CODE('prtn')
+enumQuality = FOUR_CHAR_CODE('qual')
+enumSaveOptions = FOUR_CHAR_CODE('savo')
+enumStyle = FOUR_CHAR_CODE('styl')
+enumTransferMode = FOUR_CHAR_CODE('tran')
+formUniqueID = FOUR_CHAR_CODE('ID  ')
+kAEAbout = FOUR_CHAR_CODE('abou')
+kAEAfter = FOUR_CHAR_CODE('afte')
+kAEAliasSelection = FOUR_CHAR_CODE('sali')
+kAEAllCaps = FOUR_CHAR_CODE('alcp')
+kAEArrowAtEnd = FOUR_CHAR_CODE('aren')
+kAEArrowAtStart = FOUR_CHAR_CODE('arst')
+kAEArrowBothEnds = FOUR_CHAR_CODE('arbo')        
+kAEAsk = FOUR_CHAR_CODE('ask ')
+kAEBefore = FOUR_CHAR_CODE('befo')
+kAEBeginning = FOUR_CHAR_CODE('bgng')
+kAEBeginsWith = FOUR_CHAR_CODE('bgwt')
+kAEBeginTransaction = FOUR_CHAR_CODE('begi')
+kAEBold = FOUR_CHAR_CODE('bold')
+kAECaseSensEquals = FOUR_CHAR_CODE('cseq')
+kAECentered = FOUR_CHAR_CODE('cent')
+kAEChangeView = FOUR_CHAR_CODE('view')
+kAEClone = FOUR_CHAR_CODE('clon')
+kAEClose = FOUR_CHAR_CODE('clos')
+kAECondensed = FOUR_CHAR_CODE('cond')
+kAEContains = FOUR_CHAR_CODE('cont')
+kAECopy = FOUR_CHAR_CODE('copy')
+kAECoreSuite = FOUR_CHAR_CODE('core')
+kAECountElements = FOUR_CHAR_CODE('cnte')
+kAECreateElement = FOUR_CHAR_CODE('crel')
+kAECreatePublisher = FOUR_CHAR_CODE('cpub')
+kAECut = FOUR_CHAR_CODE('cut ')
+kAEDelete = FOUR_CHAR_CODE('delo')        
+kAEDoObjectsExist = FOUR_CHAR_CODE('doex')
+kAEDoScript = FOUR_CHAR_CODE('dosc')
+kAEDrag = FOUR_CHAR_CODE('drag')
+kAEDuplicateSelection = FOUR_CHAR_CODE('sdup')
+kAEEditGraphic = FOUR_CHAR_CODE('edit')
+kAEEmptyTrash = FOUR_CHAR_CODE('empt')
+kAEEnd = FOUR_CHAR_CODE('end ')
+kAEEndsWith = FOUR_CHAR_CODE('ends')
+kAEEndTransaction = FOUR_CHAR_CODE('endt')
+kAEEquals = FOUR_CHAR_CODE('=   ')
+kAEExpanded = FOUR_CHAR_CODE('pexp')
+kAEFast = FOUR_CHAR_CODE('fast')
+kAEFinderEvents = FOUR_CHAR_CODE('FNDR')
+kAEFormulaProtect = FOUR_CHAR_CODE('fpro')
+kAEFullyJustified = FOUR_CHAR_CODE('full')
+kAEGetClassInfo = FOUR_CHAR_CODE('qobj')
+kAEGetData = FOUR_CHAR_CODE('getd')
+kAEGetDataSize = FOUR_CHAR_CODE('dsiz')
+kAEGetEventInfo = FOUR_CHAR_CODE('gtei')
+kAEGetInfoSelection = FOUR_CHAR_CODE('sinf')        
+kAEGetPrivilegeSelection = FOUR_CHAR_CODE('sprv')
+kAEGetSuiteInfo = FOUR_CHAR_CODE('gtsi')
+kAEGreaterThan = FOUR_CHAR_CODE('>   ')
+kAEGreaterThanEquals = FOUR_CHAR_CODE('>=  ')
+kAEGrow = FOUR_CHAR_CODE('grow')
+kAEHidden = FOUR_CHAR_CODE('hidn')
+kAEHiQuality = FOUR_CHAR_CODE('hiqu')
+kAEImageGraphic = FOUR_CHAR_CODE('imgr')
+kAEIsUniform = FOUR_CHAR_CODE('isun')
+kAEItalic = FOUR_CHAR_CODE('ital')
+kAELeftJustified = FOUR_CHAR_CODE('left')
+kAELessThan = FOUR_CHAR_CODE('<   ')
+kAELessThanEquals = FOUR_CHAR_CODE('<=  ')
+kAELowercase = FOUR_CHAR_CODE('lowc')
+kAEMakeObjectsVisible = FOUR_CHAR_CODE('mvis')
+kAEMiscStandards = FOUR_CHAR_CODE('misc')
+kAEModifiable = FOUR_CHAR_CODE('modf')
+kAEMove = FOUR_CHAR_CODE('move')
+kAENo = FOUR_CHAR_CODE('no  ')
+kAENoArrow = FOUR_CHAR_CODE('arno')        
+kAENonmodifiable = FOUR_CHAR_CODE('nmod')
+kAEOpen = FOUR_CHAR_CODE('odoc')
+kAEOpenSelection = FOUR_CHAR_CODE('sope')
+kAEOutline = FOUR_CHAR_CODE('outl')
+kAEPageSetup = FOUR_CHAR_CODE('pgsu')
+kAEPaste = FOUR_CHAR_CODE('past')
+kAEPlain = FOUR_CHAR_CODE('plan')
+kAEPrint = FOUR_CHAR_CODE('pdoc')
+kAEPrintSelection = FOUR_CHAR_CODE('spri')
+kAEPrintWindow = FOUR_CHAR_CODE('pwin')
+kAEPutAwaySelection = FOUR_CHAR_CODE('sput')
+kAEQDAddOver = FOUR_CHAR_CODE('addo')
+kAEQDAddPin = FOUR_CHAR_CODE('addp')
+kAEQDAdMax = FOUR_CHAR_CODE('admx')
+kAEQDAdMin = FOUR_CHAR_CODE('admn')
+kAEQDBic = FOUR_CHAR_CODE('bic ')
+kAEQDBlend = FOUR_CHAR_CODE('blnd')
+kAEQDCopy = FOUR_CHAR_CODE('cpy ')
+kAEQDNotBic = FOUR_CHAR_CODE('nbic')
+kAEQDNotCopy = FOUR_CHAR_CODE('ncpy')        
+kAEQDNotOr = FOUR_CHAR_CODE('ntor')
+kAEQDNotXor = FOUR_CHAR_CODE('nxor')
+kAEQDOr = FOUR_CHAR_CODE('or  ')
+kAEQDSubOver = FOUR_CHAR_CODE('subo')
+kAEQDSubPin = FOUR_CHAR_CODE('subp')
+kAEQDSupplementalSuite = FOUR_CHAR_CODE('qdsp')
+kAEQDXor = FOUR_CHAR_CODE('xor ')
+kAEQuickdrawSuite = FOUR_CHAR_CODE('qdrw')
+kAEQuitAll = FOUR_CHAR_CODE('quia')
+kAERedo = FOUR_CHAR_CODE('redo')
+kAERegular = FOUR_CHAR_CODE('regl')
+kAEReopenApplication = FOUR_CHAR_CODE('rapp')
+kAEReplace = FOUR_CHAR_CODE('rplc')
+kAERequiredSuite = FOUR_CHAR_CODE('reqd')
+kAERestart = FOUR_CHAR_CODE('rest')
+kAERevealSelection = FOUR_CHAR_CODE('srev')
+kAERevert = FOUR_CHAR_CODE('rvrt')
+kAERightJustified = FOUR_CHAR_CODE('rght')
+kAESave = FOUR_CHAR_CODE('save')
+kAESelect = FOUR_CHAR_CODE('slct')
+kAESetData = FOUR_CHAR_CODE('setd')        
+kAESetPosition = FOUR_CHAR_CODE('posn')
+kAEShadow = FOUR_CHAR_CODE('shad')
+kAEShowClipboard = FOUR_CHAR_CODE('shcl')
+kAEShutDown = FOUR_CHAR_CODE('shut')
+kAESleep = FOUR_CHAR_CODE('slep')
+kAESmallCaps = FOUR_CHAR_CODE('smcp')
+kAESpecialClassProperties = FOUR_CHAR_CODE('c@#!')
+kAEStrikethrough = FOUR_CHAR_CODE('strk')
+kAESubscript = FOUR_CHAR_CODE('sbsc')
+kAESuperscript = FOUR_CHAR_CODE('spsc')
+kAETableSuite = FOUR_CHAR_CODE('tbls')
+kAETextSuite = FOUR_CHAR_CODE('TEXT')
+kAETransactionTerminated = FOUR_CHAR_CODE('ttrm')
+kAEUnderline = FOUR_CHAR_CODE('undl')
+kAEUndo = FOUR_CHAR_CODE('undo')
+kAEWholeWordEquals = FOUR_CHAR_CODE('wweq')
+kAEYes = FOUR_CHAR_CODE('yes ')
+kAEZoom = FOUR_CHAR_CODE('zoom')        
+kAEMouseClass = FOUR_CHAR_CODE('mous')
+kAEDown = FOUR_CHAR_CODE('down')
+kAEUp = FOUR_CHAR_CODE('up  ')
+kAEMoved = FOUR_CHAR_CODE('move')
+kAEStoppedMoving = FOUR_CHAR_CODE('stop')
+kAEWindowClass = FOUR_CHAR_CODE('wind')
+kAEUpdate = FOUR_CHAR_CODE('updt')
+kAEActivate = FOUR_CHAR_CODE('actv')
+kAEDeactivate = FOUR_CHAR_CODE('dact')
+kAECommandClass = FOUR_CHAR_CODE('cmnd')
+kAEKeyClass = FOUR_CHAR_CODE('keyc')
+kAERawKey = FOUR_CHAR_CODE('rkey')
+kAEVirtualKey = FOUR_CHAR_CODE('keyc')
+kAENavigationKey = FOUR_CHAR_CODE('nave')
+kAEAutoDown = FOUR_CHAR_CODE('auto')
+kAEApplicationClass = FOUR_CHAR_CODE('appl')
+kAESuspend = FOUR_CHAR_CODE('susp')
+kAEResume = FOUR_CHAR_CODE('rsme')
+kAEDiskEvent = FOUR_CHAR_CODE('disk')
+kAENullEvent = FOUR_CHAR_CODE('null')
+kAEWakeUpEvent = FOUR_CHAR_CODE('wake')
+kAEScrapEvent = FOUR_CHAR_CODE('scrp')
+kAEHighLevel = FOUR_CHAR_CODE('high')
+keyAEAngle = FOUR_CHAR_CODE('kang')
+keyAEArcAngle = FOUR_CHAR_CODE('parc')        
+keyAEBaseAddr = FOUR_CHAR_CODE('badd')
+keyAEBestType = FOUR_CHAR_CODE('pbst')
+keyAEBgndColor = FOUR_CHAR_CODE('kbcl')
+keyAEBgndPattern = FOUR_CHAR_CODE('kbpt')
+keyAEBounds = FOUR_CHAR_CODE('pbnd')
+keyAECellList = FOUR_CHAR_CODE('kclt')
+keyAEClassID = FOUR_CHAR_CODE('clID')
+keyAEColor = FOUR_CHAR_CODE('colr')
+keyAEColorTable = FOUR_CHAR_CODE('cltb')
+keyAECurveHeight = FOUR_CHAR_CODE('kchd')
+keyAECurveWidth = FOUR_CHAR_CODE('kcwd')
+keyAEDashStyle = FOUR_CHAR_CODE('pdst')
+keyAEData = FOUR_CHAR_CODE('data')
+keyAEDefaultType = FOUR_CHAR_CODE('deft')
+keyAEDefinitionRect = FOUR_CHAR_CODE('pdrt')
+keyAEDescType = FOUR_CHAR_CODE('dstp')
+keyAEDestination = FOUR_CHAR_CODE('dest')
+keyAEDoAntiAlias = FOUR_CHAR_CODE('anta')
+keyAEDoDithered = FOUR_CHAR_CODE('gdit')
+keyAEDoRotate = FOUR_CHAR_CODE('kdrt')        
+keyAEDoScale = FOUR_CHAR_CODE('ksca')
+keyAEDoTranslate = FOUR_CHAR_CODE('ktra')
+keyAEEditionFileLoc = FOUR_CHAR_CODE('eloc')
+keyAEElements = FOUR_CHAR_CODE('elms')
+keyAEEndPoint = FOUR_CHAR_CODE('pend')
+keyAEEventClass = FOUR_CHAR_CODE('evcl')
+keyAEEventID = FOUR_CHAR_CODE('evti')
+keyAEFile = FOUR_CHAR_CODE('kfil')
+keyAEFileType = FOUR_CHAR_CODE('fltp')
+keyAEFillColor = FOUR_CHAR_CODE('flcl')
+keyAEFillPattern = FOUR_CHAR_CODE('flpt')
+keyAEFlipHorizontal = FOUR_CHAR_CODE('kfho')
+keyAEFlipVertical = FOUR_CHAR_CODE('kfvt')
+keyAEFont = FOUR_CHAR_CODE('font')
+keyAEFormula = FOUR_CHAR_CODE('pfor')
+keyAEGraphicObjects = FOUR_CHAR_CODE('gobs')
+keyAEID = FOUR_CHAR_CODE('ID  ')
+keyAEImageQuality = FOUR_CHAR_CODE('gqua')
+keyAEInsertHere = FOUR_CHAR_CODE('insh')
+keyAEKeyForms = FOUR_CHAR_CODE('keyf')        
+keyAEKeyword = FOUR_CHAR_CODE('kywd')
+keyAELevel = FOUR_CHAR_CODE('levl')
+keyAELineArrow = FOUR_CHAR_CODE('arro')
+keyAEName = FOUR_CHAR_CODE('pnam')
+keyAENewElementLoc = FOUR_CHAR_CODE('pnel')
+keyAEObject = FOUR_CHAR_CODE('kobj')
+keyAEObjectClass = FOUR_CHAR_CODE('kocl')
+keyAEOffStyles = FOUR_CHAR_CODE('ofst')
+keyAEOnStyles = FOUR_CHAR_CODE('onst')
+keyAEParameters = FOUR_CHAR_CODE('prms')
+keyAEParamFlags = FOUR_CHAR_CODE('pmfg')
+keyAEPenColor = FOUR_CHAR_CODE('ppcl')
+keyAEPenPattern = FOUR_CHAR_CODE('pppa')
+keyAEPenWidth = FOUR_CHAR_CODE('ppwd')
+keyAEPixelDepth = FOUR_CHAR_CODE('pdpt')
+keyAEPixMapMinus = FOUR_CHAR_CODE('kpmm')
+keyAEPMTable = FOUR_CHAR_CODE('kpmt')
+keyAEPointList = FOUR_CHAR_CODE('ptlt')
+keyAEPointSize = FOUR_CHAR_CODE('ptsz')
+keyAEPosition = FOUR_CHAR_CODE('kpos')        
+keyAEPropData = FOUR_CHAR_CODE('prdt')
+keyAEProperties = FOUR_CHAR_CODE('qpro')
+keyAEProperty = FOUR_CHAR_CODE('kprp')
+keyAEPropFlags = FOUR_CHAR_CODE('prfg')
+keyAEPropID = FOUR_CHAR_CODE('prop')
+keyAEProtection = FOUR_CHAR_CODE('ppro')
+keyAERenderAs = FOUR_CHAR_CODE('kren')
+keyAERequestedType = FOUR_CHAR_CODE('rtyp')
+keyAEResult = FOUR_CHAR_CODE('----')
+keyAEResultInfo = FOUR_CHAR_CODE('rsin')
+keyAERotation = FOUR_CHAR_CODE('prot')
+keyAERotPoint = FOUR_CHAR_CODE('krtp')
+keyAERowList = FOUR_CHAR_CODE('krls')
+keyAESaveOptions = FOUR_CHAR_CODE('savo')
+keyAEScale = FOUR_CHAR_CODE('pscl')
+keyAEScriptTag = FOUR_CHAR_CODE('psct')
+keyAEShowWhere = FOUR_CHAR_CODE('show')
+keyAEStartAngle = FOUR_CHAR_CODE('pang')
+keyAEStartPoint = FOUR_CHAR_CODE('pstp')
+keyAEStyles = FOUR_CHAR_CODE('ksty')        
+keyAESuiteID = FOUR_CHAR_CODE('suit')
+keyAEText = FOUR_CHAR_CODE('ktxt')
+keyAETextColor = FOUR_CHAR_CODE('ptxc')
+keyAETextFont = FOUR_CHAR_CODE('ptxf')
+keyAETextPointSize = FOUR_CHAR_CODE('ptps')
+keyAETextStyles = FOUR_CHAR_CODE('txst')
+keyAETextLineHeight = FOUR_CHAR_CODE('ktlh')
+keyAETextLineAscent = FOUR_CHAR_CODE('ktas')
+keyAETheText = FOUR_CHAR_CODE('thtx')
+keyAETransferMode = FOUR_CHAR_CODE('pptm')
+keyAETranslation = FOUR_CHAR_CODE('ptrs')
+keyAETryAsStructGraf = FOUR_CHAR_CODE('toog')
+keyAEUniformStyles = FOUR_CHAR_CODE('ustl')
+keyAEUpdateOn = FOUR_CHAR_CODE('pupd')
+keyAEUserTerm = FOUR_CHAR_CODE('utrm')
+keyAEWindow = FOUR_CHAR_CODE('wndw')
+keyAEWritingCode = FOUR_CHAR_CODE('wrcd')        
+keyMiscellaneous = FOUR_CHAR_CODE('fmsc')
+keySelection = FOUR_CHAR_CODE('fsel')
+keyWindow = FOUR_CHAR_CODE('kwnd')
+keyWhen = FOUR_CHAR_CODE('when')
+keyWhere = FOUR_CHAR_CODE('wher')
+keyModifiers = FOUR_CHAR_CODE('mods')
+keyKey = FOUR_CHAR_CODE('key ')
+keyKeyCode = FOUR_CHAR_CODE('code')
+keyKeyboard = FOUR_CHAR_CODE('keyb')
+keyDriveNumber = FOUR_CHAR_CODE('drv#')
+keyErrorCode = FOUR_CHAR_CODE('err#')
+keyHighLevelClass = FOUR_CHAR_CODE('hcls')
+keyHighLevelID = FOUR_CHAR_CODE('hid ')
+pArcAngle = FOUR_CHAR_CODE('parc')
+pBackgroundColor = FOUR_CHAR_CODE('pbcl')
+pBackgroundPattern = FOUR_CHAR_CODE('pbpt')
+pBestType = FOUR_CHAR_CODE('pbst')
+pBounds = FOUR_CHAR_CODE('pbnd')
+pClass = FOUR_CHAR_CODE('pcls')
+pClipboard = FOUR_CHAR_CODE('pcli')
+pColor = FOUR_CHAR_CODE('colr')
+pColorTable = FOUR_CHAR_CODE('cltb')
+pContents = FOUR_CHAR_CODE('pcnt')
+pCornerCurveHeight = FOUR_CHAR_CODE('pchd')
+pCornerCurveWidth = FOUR_CHAR_CODE('pcwd')
+pDashStyle = FOUR_CHAR_CODE('pdst')
+pDefaultType = FOUR_CHAR_CODE('deft')
+pDefinitionRect = FOUR_CHAR_CODE('pdrt')
+pEnabled = FOUR_CHAR_CODE('enbl')
+pEndPoint = FOUR_CHAR_CODE('pend')
+pFillColor = FOUR_CHAR_CODE('flcl')
+pFillPattern = FOUR_CHAR_CODE('flpt')
+pFont = FOUR_CHAR_CODE('font')        
+pFormula = FOUR_CHAR_CODE('pfor')
+pGraphicObjects = FOUR_CHAR_CODE('gobs')
+pHasCloseBox = FOUR_CHAR_CODE('hclb')
+pHasTitleBar = FOUR_CHAR_CODE('ptit')
+pID = FOUR_CHAR_CODE('ID  ')
+pIndex = FOUR_CHAR_CODE('pidx')
+pInsertionLoc = FOUR_CHAR_CODE('pins')
+pIsFloating = FOUR_CHAR_CODE('isfl')
+pIsFrontProcess = FOUR_CHAR_CODE('pisf')
+pIsModal = FOUR_CHAR_CODE('pmod')
+pIsModified = FOUR_CHAR_CODE('imod')
+pIsResizable = FOUR_CHAR_CODE('prsz')
+pIsStationeryPad = FOUR_CHAR_CODE('pspd')
+pIsZoomable = FOUR_CHAR_CODE('iszm')
+pIsZoomed = FOUR_CHAR_CODE('pzum')
+pItemNumber = FOUR_CHAR_CODE('itmn')
+pJustification = FOUR_CHAR_CODE('pjst')
+pLineArrow = FOUR_CHAR_CODE('arro')
+pMenuID = FOUR_CHAR_CODE('mnid')
+pName = FOUR_CHAR_CODE('pnam')        
+pNewElementLoc = FOUR_CHAR_CODE('pnel')
+pPenColor = FOUR_CHAR_CODE('ppcl')
+pPenPattern = FOUR_CHAR_CODE('pppa')
+pPenWidth = FOUR_CHAR_CODE('ppwd')
+pPixelDepth = FOUR_CHAR_CODE('pdpt')
+pPointList = FOUR_CHAR_CODE('ptlt')
+pPointSize = FOUR_CHAR_CODE('ptsz')
+pProtection = FOUR_CHAR_CODE('ppro')
+pRotation = FOUR_CHAR_CODE('prot')
+pScale = FOUR_CHAR_CODE('pscl')
+pScript = FOUR_CHAR_CODE('scpt')
+pScriptTag = FOUR_CHAR_CODE('psct')
+pSelected = FOUR_CHAR_CODE('selc')
+pSelection = FOUR_CHAR_CODE('sele')
+pStartAngle = FOUR_CHAR_CODE('pang')
+pStartPoint = FOUR_CHAR_CODE('pstp')
+pTextColor = FOUR_CHAR_CODE('ptxc')
+pTextFont = FOUR_CHAR_CODE('ptxf')
+pTextItemDelimiters = FOUR_CHAR_CODE('txdl')
+pTextPointSize = FOUR_CHAR_CODE('ptps')        
+pTextStyles = FOUR_CHAR_CODE('txst')
+pTransferMode = FOUR_CHAR_CODE('pptm')
+pTranslation = FOUR_CHAR_CODE('ptrs')
+pUniformStyles = FOUR_CHAR_CODE('ustl')
+pUpdateOn = FOUR_CHAR_CODE('pupd')
+pUserSelection = FOUR_CHAR_CODE('pusl')
+pVersion = FOUR_CHAR_CODE('vers')
+pVisible = FOUR_CHAR_CODE('pvis')        
+typeAEText = FOUR_CHAR_CODE('tTXT')
+typeArc = FOUR_CHAR_CODE('carc')
+typeBest = FOUR_CHAR_CODE('best')
+typeCell = FOUR_CHAR_CODE('ccel')
+typeClassInfo = FOUR_CHAR_CODE('gcli')
+typeColorTable = FOUR_CHAR_CODE('clrt')
+typeColumn = FOUR_CHAR_CODE('ccol')
+typeDashStyle = FOUR_CHAR_CODE('tdas')
+typeData = FOUR_CHAR_CODE('tdta')
+typeDrawingArea = FOUR_CHAR_CODE('cdrw')
+typeElemInfo = FOUR_CHAR_CODE('elin')
+typeEnumeration = FOUR_CHAR_CODE('enum')
+typeEPS = FOUR_CHAR_CODE('EPS ')
+typeEventInfo = FOUR_CHAR_CODE('evin')        
+typeFinderWindow = FOUR_CHAR_CODE('fwin')
+typeFixedPoint = FOUR_CHAR_CODE('fpnt')
+typeFixedRectangle = FOUR_CHAR_CODE('frct')
+typeGraphicLine = FOUR_CHAR_CODE('glin')
+typeGraphicText = FOUR_CHAR_CODE('cgtx')
+typeGroupedGraphic = FOUR_CHAR_CODE('cpic')
+typeInsertionLoc = FOUR_CHAR_CODE('insl')
+typeIntlText = FOUR_CHAR_CODE('itxt')
+typeIntlWritingCode = FOUR_CHAR_CODE('intl')
+typeLongDateTime = FOUR_CHAR_CODE('ldt ')
+typeLongFixed = FOUR_CHAR_CODE('lfxd')
+typeLongFixedPoint = FOUR_CHAR_CODE('lfpt')
+typeLongFixedRectangle = FOUR_CHAR_CODE('lfrc')
+typeLongPoint = FOUR_CHAR_CODE('lpnt')
+typeLongRectangle = FOUR_CHAR_CODE('lrct')
+typeMachineLoc = FOUR_CHAR_CODE('mLoc')
+typeOval = FOUR_CHAR_CODE('covl')
+typeParamInfo = FOUR_CHAR_CODE('pmin')
+typePict = FOUR_CHAR_CODE('PICT')        
+typePixelMap = FOUR_CHAR_CODE('cpix')
+typePixMapMinus = FOUR_CHAR_CODE('tpmm')
+typePolygon = FOUR_CHAR_CODE('cpgn')
+typePropInfo = FOUR_CHAR_CODE('pinf')
+typeQDPoint = FOUR_CHAR_CODE('QDpt')
+typeQDRegion = FOUR_CHAR_CODE('Qrgn')
+typeRectangle = FOUR_CHAR_CODE('crec')
+typeRGB16 = FOUR_CHAR_CODE('tr16')
+typeRGB96 = FOUR_CHAR_CODE('tr96')
+typeRGBColor = FOUR_CHAR_CODE('cRGB')
+typeRotation = FOUR_CHAR_CODE('trot')
+typeRoundedRectangle = FOUR_CHAR_CODE('crrc')
+typeRow = FOUR_CHAR_CODE('crow')
+typeScrapStyles = FOUR_CHAR_CODE('styl')
+typeScript = FOUR_CHAR_CODE('scpt')
+typeStyledText = FOUR_CHAR_CODE('STXT')
+typeSuiteInfo = FOUR_CHAR_CODE('suin')
+typeTable = FOUR_CHAR_CODE('ctbl')
+typeTextStyles = FOUR_CHAR_CODE('tsty')        
+typeTIFF = FOUR_CHAR_CODE('TIFF')
+typeVersion = FOUR_CHAR_CODE('vers')        
+kAEMenuClass = FOUR_CHAR_CODE('menu')
+kAEMenuSelect = FOUR_CHAR_CODE('mhit')
+kAEMouseDown = FOUR_CHAR_CODE('mdwn')
+kAEMouseDownInBack = FOUR_CHAR_CODE('mdbk')
+kAEKeyDown = FOUR_CHAR_CODE('kdwn')
+kAEResized = FOUR_CHAR_CODE('rsiz')
+kAEPromise = FOUR_CHAR_CODE('prom')
+keyMenuID = FOUR_CHAR_CODE('mid ')
+keyMenuItem = FOUR_CHAR_CODE('mitm')
+keyCloseAllWindows = FOUR_CHAR_CODE('caw ')
+keyOriginalBounds = FOUR_CHAR_CODE('obnd')
+keyNewBounds = FOUR_CHAR_CODE('nbnd')
+keyLocalWhere = FOUR_CHAR_CODE('lwhr')
+typeHIMenu = FOUR_CHAR_CODE('mobj')
+typeHIWindow = FOUR_CHAR_CODE('wobj')
+kBySmallIcon = 0
+kByIconView = 1
+kByNameView = 2
+kByDateView = 3
+kBySizeView = 4
+kByKindView = 5
+kByCommentView = 6
+kByLabelView = 7
+kByVersionView = 8
+kAEInfo = 11
+kAEMain = 0
+kAESharing = 13
+kAEZoomIn = 7
+kAEZoomOut = 8
+kTextServiceClass = FOUR_CHAR_CODE('tsvc')
+kUpdateActiveInputArea = FOUR_CHAR_CODE('updt')
+kShowHideInputWindow = FOUR_CHAR_CODE('shiw')
+kPos2Offset = FOUR_CHAR_CODE('p2st')
+kOffset2Pos = FOUR_CHAR_CODE('st2p')
+kUnicodeNotFromInputMethod = FOUR_CHAR_CODE('unim')
+kGetSelectedText = FOUR_CHAR_CODE('gtxt')
+keyAETSMDocumentRefcon = FOUR_CHAR_CODE('refc')
+keyAEServerInstance = FOUR_CHAR_CODE('srvi')
+keyAETheData = FOUR_CHAR_CODE('kdat')
+keyAEFixLength = FOUR_CHAR_CODE('fixl')
+keyAEUpdateRange = FOUR_CHAR_CODE('udng')
+keyAECurrentPoint = FOUR_CHAR_CODE('cpos')
+keyAEBufferSize = FOUR_CHAR_CODE('buff')
+keyAEMoveView = FOUR_CHAR_CODE('mvvw')
+keyAENextBody = FOUR_CHAR_CODE('nxbd')
+keyAETSMScriptTag = FOUR_CHAR_CODE('sclg')
+keyAETSMTextFont = FOUR_CHAR_CODE('ktxf')
+keyAETSMTextPointSize = FOUR_CHAR_CODE('ktps')
+keyAETSMEventRecord = FOUR_CHAR_CODE('tevt')
+keyAETextServiceEncoding = FOUR_CHAR_CODE('tsen')
+keyAETextServiceMacEncoding = FOUR_CHAR_CODE('tmen')
+typeTextRange = FOUR_CHAR_CODE('txrn')
+typeComponentInstance = FOUR_CHAR_CODE('cmpi')
+typeOffsetArray = FOUR_CHAR_CODE('ofay')
+typeTextRangeArray = FOUR_CHAR_CODE('tray')
+typeLowLevelEventRecord = FOUR_CHAR_CODE('evtr')
+typeText = typeChar                      
+kTSMOutsideOfBody = 1
+kTSMInsideOfBody = 2
+kTSMInsideOfActiveInputArea = 3
+kNextBody = 1
+kPreviousBody = 2
+kCaretPosition = 1
+kRawText = 2
+kSelectedRawText = 3
+kConvertedText = 4
+kSelectedConvertedText = 5
+kBlockFillText = 6
+kOutlineText = 7
+kSelectedText = 8                             
+keyAEHiliteRange = FOUR_CHAR_CODE('hrng')
+keyAEPinRange = FOUR_CHAR_CODE('pnrg')
+keyAEClauseOffsets = FOUR_CHAR_CODE('clau')
+keyAEOffset = FOUR_CHAR_CODE('ofst')
+keyAEPoint = FOUR_CHAR_CODE('gpos')
+keyAELeftSide = FOUR_CHAR_CODE('klef')
+keyAERegionClass = FOUR_CHAR_CODE('rgnc')
+keyAEDragging = FOUR_CHAR_CODE('bool')        
+keyAELeadingEdge = keyAELeftSide
+typeUnicodeText = FOUR_CHAR_CODE('utxt')
+typeStyledUnicodeText = FOUR_CHAR_CODE('sutx')
+typeEncodedString = FOUR_CHAR_CODE('encs')
+typeCString = FOUR_CHAR_CODE('cstr')
+typePString = FOUR_CHAR_CODE('pstr')
+typeMeters = FOUR_CHAR_CODE('metr')
+typeInches = FOUR_CHAR_CODE('inch')
+typeFeet = FOUR_CHAR_CODE('feet')
+typeYards = FOUR_CHAR_CODE('yard')
+typeMiles = FOUR_CHAR_CODE('mile')
+typeKilometers = FOUR_CHAR_CODE('kmtr')
+typeCentimeters = FOUR_CHAR_CODE('cmtr')
+typeSquareMeters = FOUR_CHAR_CODE('sqrm')
+typeSquareFeet = FOUR_CHAR_CODE('sqft')
+typeSquareYards = FOUR_CHAR_CODE('sqyd')
+typeSquareMiles = FOUR_CHAR_CODE('sqmi')
+typeSquareKilometers = FOUR_CHAR_CODE('sqkm')
+typeLiters = FOUR_CHAR_CODE('litr')
+typeQuarts = FOUR_CHAR_CODE('qrts')
+typeGallons = FOUR_CHAR_CODE('galn')
+typeCubicMeters = FOUR_CHAR_CODE('cmet')
+typeCubicFeet = FOUR_CHAR_CODE('cfet')
+typeCubicInches = FOUR_CHAR_CODE('cuin')
+typeCubicCentimeter = FOUR_CHAR_CODE('ccmt')
+typeCubicYards = FOUR_CHAR_CODE('cyrd')
+typeKilograms = FOUR_CHAR_CODE('kgrm')
+typeGrams = FOUR_CHAR_CODE('gram')
+typeOunces = FOUR_CHAR_CODE('ozs ')
+typePounds = FOUR_CHAR_CODE('lbs ')
+typeDegreesC = FOUR_CHAR_CODE('degc')
+typeDegreesF = FOUR_CHAR_CODE('degf')
+typeDegreesK = FOUR_CHAR_CODE('degk')
+kFAServerApp = FOUR_CHAR_CODE('ssrv')
+kDoFolderActionEvent = FOUR_CHAR_CODE('fola')
+kFolderActionCode = FOUR_CHAR_CODE('actn')
+kFolderOpenedEvent = FOUR_CHAR_CODE('fopn')
+kFolderClosedEvent = FOUR_CHAR_CODE('fclo')
+kFolderWindowMovedEvent = FOUR_CHAR_CODE('fsiz')
+kFolderItemsAddedEvent = FOUR_CHAR_CODE('fget')
+kFolderItemsRemovedEvent = FOUR_CHAR_CODE('flos')
+kItemList = FOUR_CHAR_CODE('flst')
+kNewSizeParameter = FOUR_CHAR_CODE('fnsz')
+kFASuiteCode = FOUR_CHAR_CODE('faco')
+kFAAttachCommand = FOUR_CHAR_CODE('atfa')
+kFARemoveCommand = FOUR_CHAR_CODE('rmfa')
+kFAEditCommand = FOUR_CHAR_CODE('edfa')
+kFAFileParam = FOUR_CHAR_CODE('faal')
+kFAIndexParam = FOUR_CHAR_CODE('indx')        
+kAEInternetSuite = FOUR_CHAR_CODE('gurl')
+kAEISWebStarSuite = FOUR_CHAR_CODE('WWW½')
+kAEISGetURL = FOUR_CHAR_CODE('gurl')
+KAEISHandleCGI = FOUR_CHAR_CODE('sdoc')
+cURL = FOUR_CHAR_CODE('url ')
+cInternetAddress = FOUR_CHAR_CODE('IPAD')
+cHTML = FOUR_CHAR_CODE('html')
+cFTPItem = FOUR_CHAR_CODE('ftp ')
+kAEISHTTPSearchArgs = FOUR_CHAR_CODE('kfor')
+kAEISPostArgs = FOUR_CHAR_CODE('post')
+kAEISMethod = FOUR_CHAR_CODE('meth')
+kAEISClientAddress = FOUR_CHAR_CODE('addr')
+kAEISUserName = FOUR_CHAR_CODE('user')
+kAEISPassword = FOUR_CHAR_CODE('pass')
+kAEISFromUser = FOUR_CHAR_CODE('frmu')
+kAEISServerName = FOUR_CHAR_CODE('svnm')
+kAEISServerPort = FOUR_CHAR_CODE('svpt')
+kAEISScriptName = FOUR_CHAR_CODE('scnm')
+kAEISContentType = FOUR_CHAR_CODE('ctyp')
+kAEISReferrer = FOUR_CHAR_CODE('refr')
+kAEISUserAgent = FOUR_CHAR_CODE('Agnt')
+kAEISAction = FOUR_CHAR_CODE('Kact')
+kAEISActionPath = FOUR_CHAR_CODE('Kapt')
+kAEISClientIP = FOUR_CHAR_CODE('Kcip')
+kAEISFullRequest = FOUR_CHAR_CODE('Kfrq')
+pScheme = FOUR_CHAR_CODE('pusc')
+pHost = FOUR_CHAR_CODE('HOST')
+pPath = FOUR_CHAR_CODE('FTPc')
+pUserName = FOUR_CHAR_CODE('RAun')
+pUserPassword = FOUR_CHAR_CODE('RApw')
+pDNSForm = FOUR_CHAR_CODE('pDNS')
+pURL = FOUR_CHAR_CODE('pURL')
+pTextEncoding = FOUR_CHAR_CODE('ptxe')
+pFTPKind = FOUR_CHAR_CODE('kind')
+eScheme = FOUR_CHAR_CODE('esch')
+eurlHTTP = FOUR_CHAR_CODE('http')
+eurlHTTPS = FOUR_CHAR_CODE('htps')
+eurlFTP = FOUR_CHAR_CODE('ftp ')
+eurlMail = FOUR_CHAR_CODE('mail')
+eurlFile = FOUR_CHAR_CODE('file')
+eurlGopher = FOUR_CHAR_CODE('gphr')
+eurlTelnet = FOUR_CHAR_CODE('tlnt')
+eurlNews = FOUR_CHAR_CODE('news')
+eurlSNews = FOUR_CHAR_CODE('snws')
+eurlNNTP = FOUR_CHAR_CODE('nntp')
+eurlMessage = FOUR_CHAR_CODE('mess')
+eurlMailbox = FOUR_CHAR_CODE('mbox')
+eurlMulti = FOUR_CHAR_CODE('mult')
+eurlLaunch = FOUR_CHAR_CODE('laun')
+eurlAFP = FOUR_CHAR_CODE('afp ')
+eurlAT = FOUR_CHAR_CODE('at  ')
+eurlEPPC = FOUR_CHAR_CODE('eppc')
+eurlRTSP = FOUR_CHAR_CODE('rtsp')
+eurlIMAP = FOUR_CHAR_CODE('imap')
+eurlNFS = FOUR_CHAR_CODE('unfs')
+eurlPOP = FOUR_CHAR_CODE('upop')
+eurlLDAP = FOUR_CHAR_CODE('uldp')
+eurlUnknown = FOUR_CHAR_CODE('url?')
+kConnSuite = FOUR_CHAR_CODE('macc')
+cDevSpec = FOUR_CHAR_CODE('cdev')
+cAddressSpec = FOUR_CHAR_CODE('cadr')
+cADBAddress = FOUR_CHAR_CODE('cadb')
+cAppleTalkAddress = FOUR_CHAR_CODE('cat ')
+cBusAddress = FOUR_CHAR_CODE('cbus')
+cEthernetAddress = FOUR_CHAR_CODE('cen ')
+cFireWireAddress = FOUR_CHAR_CODE('cfw ')
+cIPAddress = FOUR_CHAR_CODE('cip ')
+cLocalTalkAddress = FOUR_CHAR_CODE('clt ')
+cSCSIAddress = FOUR_CHAR_CODE('cscs')
+cTokenRingAddress = FOUR_CHAR_CODE('ctok')
+cUSBAddress = FOUR_CHAR_CODE('cusb')
+pDeviceType = FOUR_CHAR_CODE('pdvt')
+pDeviceAddress = FOUR_CHAR_CODE('pdva')
+pConduit = FOUR_CHAR_CODE('pcon')
+pProtocol = FOUR_CHAR_CODE('pprt')
+pATMachine = FOUR_CHAR_CODE('patm')
+pATZone = FOUR_CHAR_CODE('patz')
+pATType = FOUR_CHAR_CODE('patt')
+pDottedDecimal = FOUR_CHAR_CODE('pipd')
+pDNS = FOUR_CHAR_CODE('pdns')
+pPort = FOUR_CHAR_CODE('ppor')
+pNetwork = FOUR_CHAR_CODE('pnet')
+pNode = FOUR_CHAR_CODE('pnod')
+pSocket = FOUR_CHAR_CODE('psoc')
+pSCSIBus = FOUR_CHAR_CODE('pscb')
+pSCSILUN = FOUR_CHAR_CODE('pslu')
+eDeviceType = FOUR_CHAR_CODE('edvt')
+eAddressSpec = FOUR_CHAR_CODE('eads')
+eConduit = FOUR_CHAR_CODE('econ')
+eProtocol = FOUR_CHAR_CODE('epro')
+eADB = FOUR_CHAR_CODE('eadb')
+eAnalogAudio = FOUR_CHAR_CODE('epau')
+eAppleTalk = FOUR_CHAR_CODE('epat')
+eAudioLineIn = FOUR_CHAR_CODE('ecai')
+eAudioLineOut = FOUR_CHAR_CODE('ecal')
+eAudioOut = FOUR_CHAR_CODE('ecao')
+eBus = FOUR_CHAR_CODE('ebus')
+eCDROM = FOUR_CHAR_CODE('ecd ')
+eCommSlot = FOUR_CHAR_CODE('eccm')
+eDigitalAudio = FOUR_CHAR_CODE('epda')
+eDisplay = FOUR_CHAR_CODE('edds')
+eDVD = FOUR_CHAR_CODE('edvd')
+eEthernet = FOUR_CHAR_CODE('ecen')
+eFireWire = FOUR_CHAR_CODE('ecfw')
+eFloppy = FOUR_CHAR_CODE('efd ')
+eHD = FOUR_CHAR_CODE('ehd ')
+eInfrared = FOUR_CHAR_CODE('ecir')
+eIP = FOUR_CHAR_CODE('epip')
+eIrDA = FOUR_CHAR_CODE('epir')
+eIRTalk = FOUR_CHAR_CODE('epit')
+eKeyboard = FOUR_CHAR_CODE('ekbd')
+eLCD = FOUR_CHAR_CODE('edlc')
+eLocalTalk = FOUR_CHAR_CODE('eclt')
+eMacIP = FOUR_CHAR_CODE('epmi')
+eMacVideo = FOUR_CHAR_CODE('epmv')
+eMicrophone = FOUR_CHAR_CODE('ecmi')
+eModemPort = FOUR_CHAR_CODE('ecmp')
+eModemPrinterPort = FOUR_CHAR_CODE('empp')
+eModem = FOUR_CHAR_CODE('edmm')
+eMonitorOut = FOUR_CHAR_CODE('ecmn')
+eMouse = FOUR_CHAR_CODE('emou')
+eNuBusCard = FOUR_CHAR_CODE('ednb')
+eNuBus = FOUR_CHAR_CODE('enub')
+ePCcard = FOUR_CHAR_CODE('ecpc')
+ePCIbus = FOUR_CHAR_CODE('ecpi')
+ePCIcard = FOUR_CHAR_CODE('edpi')
+ePDSslot = FOUR_CHAR_CODE('ecpd')
+ePDScard = FOUR_CHAR_CODE('epds')
+ePointingDevice = FOUR_CHAR_CODE('edpd')
+ePostScript = FOUR_CHAR_CODE('epps')
+ePPP = FOUR_CHAR_CODE('eppp')
+ePrinterPort = FOUR_CHAR_CODE('ecpp')
+ePrinter = FOUR_CHAR_CODE('edpr')
+eSvideo = FOUR_CHAR_CODE('epsv')
+eSCSI = FOUR_CHAR_CODE('ecsc')
+eSerial = FOUR_CHAR_CODE('epsr')
+eSpeakers = FOUR_CHAR_CODE('edsp')
+eStorageDevice = FOUR_CHAR_CODE('edst')
+eSVGA = FOUR_CHAR_CODE('epsg')
+eTokenRing = FOUR_CHAR_CODE('etok')
+eTrackball = FOUR_CHAR_CODE('etrk')
+eTrackpad = FOUR_CHAR_CODE('edtp')
+eUSB = FOUR_CHAR_CODE('ecus')
+eVideoIn = FOUR_CHAR_CODE('ecvi')
+eVideoMonitor = FOUR_CHAR_CODE('edvm')
+eVideoOut = FOUR_CHAR_CODE('ecvo')
+cKeystroke = FOUR_CHAR_CODE('kprs')
+pKeystrokeKey = FOUR_CHAR_CODE('kMsg')
+pModifiers = FOUR_CHAR_CODE('kMod')
+pKeyKind = FOUR_CHAR_CODE('kknd')
+eModifiers = FOUR_CHAR_CODE('eMds')
+eOptionDown = FOUR_CHAR_CODE('Kopt')
+eCommandDown = FOUR_CHAR_CODE('Kcmd')
+eControlDown = FOUR_CHAR_CODE('Kctl')
+eShiftDown = FOUR_CHAR_CODE('Ksft')
+eCapsLockDown = FOUR_CHAR_CODE('Kclk')
+eKeyKind = FOUR_CHAR_CODE('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
+kAEAND = FOUR_CHAR_CODE('AND ')
+kAEOR = FOUR_CHAR_CODE('OR  ')
+kAENOT = FOUR_CHAR_CODE('NOT ')
+kAEFirst = FOUR_CHAR_CODE('firs')
+kAELast = FOUR_CHAR_CODE('last')
+kAEMiddle = FOUR_CHAR_CODE('midd')
+kAEAny = FOUR_CHAR_CODE('any ')
+kAEAll = FOUR_CHAR_CODE('all ')
+kAENext = FOUR_CHAR_CODE('next')
+kAEPrevious = FOUR_CHAR_CODE('prev')
+keyAECompOperator = FOUR_CHAR_CODE('relo')
+keyAELogicalTerms = FOUR_CHAR_CODE('term')
+keyAELogicalOperator = FOUR_CHAR_CODE('logc')
+keyAEObject1 = FOUR_CHAR_CODE('obj1')
+keyAEObject2 = FOUR_CHAR_CODE('obj2')
+keyAEDesiredClass = FOUR_CHAR_CODE('want')
+keyAEContainer = FOUR_CHAR_CODE('from')
+keyAEKeyForm = FOUR_CHAR_CODE('form')
+keyAEKeyData = FOUR_CHAR_CODE('seld')        
+keyAERangeStart = FOUR_CHAR_CODE('star')
+keyAERangeStop = FOUR_CHAR_CODE('stop')
+keyDisposeTokenProc = FOUR_CHAR_CODE('xtok')
+keyAECompareProc = FOUR_CHAR_CODE('cmpr')
+keyAECountProc = FOUR_CHAR_CODE('cont')
+keyAEMarkTokenProc = FOUR_CHAR_CODE('mkid')
+keyAEMarkProc = FOUR_CHAR_CODE('mark')
+keyAEAdjustMarksProc = FOUR_CHAR_CODE('adjm')
+keyAEGetErrDescProc = FOUR_CHAR_CODE('indc')        
+formAbsolutePosition = FOUR_CHAR_CODE('indx')
+formRelativePosition = FOUR_CHAR_CODE('rele')
+formTest = FOUR_CHAR_CODE('test')
+formRange = FOUR_CHAR_CODE('rang')
+formPropertyID = FOUR_CHAR_CODE('prop')
+formName = FOUR_CHAR_CODE('name')
+typeObjectSpecifier = FOUR_CHAR_CODE('obj ')
+typeObjectBeingExamined = FOUR_CHAR_CODE('exmn')
+typeCurrentContainer = FOUR_CHAR_CODE('ccnt')
+typeToken = FOUR_CHAR_CODE('toke')
+typeRelativeDescriptor = FOUR_CHAR_CODE('rel ')
+typeAbsoluteOrdinal = FOUR_CHAR_CODE('abso')
+typeIndexDescriptor = FOUR_CHAR_CODE('inde')
+typeRangeDescriptor = FOUR_CHAR_CODE('rang')
+typeLogicalDescriptor = FOUR_CHAR_CODE('logi')
+typeCompDescriptor = FOUR_CHAR_CODE('cmpd')
+typeOSLTokenList = FOUR_CHAR_CODE('ostl')        
+kAEIDoMinimum = 0x0000
+kAEIDoWhose = 0x0001
+kAEIDoMarking = 0x0004
+kAEPassSubDescs = 0x0008
+kAEResolveNestedLists = 0x0010
+kAEHandleSimpleRanges = 0x0020
+kAEUseRelativeIterators = 0x0040
+typeWhoseDescriptor = FOUR_CHAR_CODE('whos')
+formWhose = FOUR_CHAR_CODE('whos')
+typeWhoseRange = FOUR_CHAR_CODE('wrng')
+keyAEWhoseRangeStart = FOUR_CHAR_CODE('wstr')
+keyAEWhoseRangeStop = FOUR_CHAR_CODE('wstp')
+keyAEIndex = FOUR_CHAR_CODE('kidx')
+keyAETest = FOUR_CHAR_CODE('ktst')        
diff --git a/Mac/Lib/lib-toolbox/Dialogs.py b/Mac/Lib/lib-toolbox/Dialogs.py
new file mode 100644 (file)
index 0000000..9ba542a
--- /dev/null
@@ -0,0 +1,72 @@
+# Generated from 'Moes:SWDev:Metrowerks Codewarrior 6.0:Metrowerks CodeWarrior:MacOS Support:Universal:Interfaces:CIncludes:Dialogs.h'
+
+def FOUR_CHAR_CODE(x): return x
+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
+ctrlItem = 4
+btnCtrl = 0
+chkCtrl = 1
+radCtrl = 2
+resCtrl = 3
+statText = 8
+editText = 16
+iconItem = 32
+picItem = 64
+userItem = 0
+itemDisable = 128
+kStdOkItemIndex = 1
+kStdCancelItemIndex = 2
+ok = kStdOkItemIndex
+cancel = kStdCancelItemIndex
+kStopIcon = 0
+kNoteIcon = 1
+kCautionIcon = 2
+stopIcon = kStopIcon
+noteIcon = kNoteIcon
+cautionIcon = kCautionIcon
+kOkItemIndex = 1
+kCancelItemIndex = 2
+overlayDITL = 0
+appendDITLRight = 1
+appendDITLBottom = 2
+kAlertStopAlert = 0
+kAlertNoteAlert = 1
+kAlertCautionAlert = 2
+kAlertPlainAlert = 3
+kAlertDefaultOKText = -1
+kAlertDefaultCancelText = -1
+kAlertDefaultOtherText = -1                            
+kAlertStdAlertOKButton = 1
+kAlertStdAlertCancelButton = 2
+kAlertStdAlertOtherButton = 3
+kAlertStdAlertHelpButton = 4
+kDialogFlagsUseThemeBackground = (1 << 0)
+kDialogFlagsUseControlHierarchy = (1 << 1)
+kDialogFlagsHandleMovableModal = (1 << 2)
+kDialogFlagsUseThemeControls = (1 << 3)
+kAlertFlagsUseThemeBackground = (1 << 0)
+kAlertFlagsUseControlHierarchy = (1 << 1)
+kAlertFlagsAlertIsMovable = (1 << 2)
+kAlertFlagsUseThemeControls = (1 << 3)
+kDialogFontNoFontStyle = 0
+kDialogFontUseFontMask = 0x0001
+kDialogFontUseFaceMask = 0x0002
+kDialogFontUseSizeMask = 0x0004
+kDialogFontUseForeColorMask = 0x0008
+kDialogFontUseBackColorMask = 0x0010
+kDialogFontUseModeMask = 0x0020
+kDialogFontUseJustMask = 0x0040
+kDialogFontUseAllMask = 0x00FF
+kDialogFontAddFontSizeMask = 0x0100
+kDialogFontUseFontNameMask = 0x0200
+kDialogFontAddToMetaFontMask = 0x0400
diff --git a/Mac/Lib/lib-toolbox/Icons.py b/Mac/Lib/lib-toolbox/Icons.py
new file mode 100644 (file)
index 0000000..56dde47
--- /dev/null
@@ -0,0 +1,359 @@
+# Generated from 'Icons.h'
+
+def FOUR_CHAR_CODE(x): return x
+kGenericDocumentIconResource = -4000
+kGenericStationeryIconResource = -3985
+kGenericEditionFileIconResource = -3989
+kGenericApplicationIconResource = -3996
+kGenericDeskAccessoryIconResource = -3991
+kGenericFolderIconResource = -3999
+kPrivateFolderIconResource = -3994
+kFloppyIconResource = -3998
+kTrashIconResource = -3993
+kGenericRAMDiskIconResource = -3988
+kGenericCDROMIconResource = -3987
+kDesktopIconResource = -3992
+kOpenFolderIconResource = -3997
+kGenericHardDiskIconResource = -3995
+kGenericFileServerIconResource = -3972
+kGenericSuitcaseIconResource = -3970
+kGenericMoverObjectIconResource = -3969
+kGenericPreferencesIconResource = -3971
+kGenericQueryDocumentIconResource = -16506
+kGenericExtensionIconResource = -16415
+kSystemFolderIconResource = -3983
+kHelpIconResource = -20271
+kAppleMenuFolderIconResource = -3982
+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
+kStartupFolderIconResource = -3981
+kOwnedFolderIconResource = -3980
+kDropFolderIconResource = -3979
+kSharedFolderIconResource = -3978
+kMountedFolderIconResource = -3977
+kControlPanelFolderIconResource = -3976
+kPrintMonitorFolderIconResource = -3975
+kPreferencesFolderIconResource = -3974
+kExtensionsFolderIconResource = -3973
+kFontsFolderIconResource = -3968
+kFullTrashIconResource = -3984
+startupFolderIconResource = kStartupFolderIconResource
+ownedFolderIconResource = kOwnedFolderIconResource
+dropFolderIconResource = kDropFolderIconResource
+sharedFolderIconResource = kSharedFolderIconResource
+mountedFolderIconResource = kMountedFolderIconResource
+controlPanelFolderIconResource = kControlPanelFolderIconResource
+printMonitorFolderIconResource = kPrintMonitorFolderIconResource
+preferencesFolderIconResource = kPreferencesFolderIconResource
+extensionsFolderIconResource = kExtensionsFolderIconResource
+fontsFolderIconResource = kFontsFolderIconResource
+fullTrashIconResource = kFullTrashIconResource
+kThumbnail32BitData = FOUR_CHAR_CODE('it32')
+kThumbnail8BitMask = FOUR_CHAR_CODE('t8mk')
+kHuge1BitMask = FOUR_CHAR_CODE('ich#')
+kHuge4BitData = FOUR_CHAR_CODE('ich4')
+kHuge8BitData = FOUR_CHAR_CODE('ich8')
+kHuge32BitData = FOUR_CHAR_CODE('ih32')
+kHuge8BitMask = FOUR_CHAR_CODE('h8mk')
+kLarge1BitMask = FOUR_CHAR_CODE('ICN#')
+kLarge4BitData = FOUR_CHAR_CODE('icl4')
+kLarge8BitData = FOUR_CHAR_CODE('icl8')
+kLarge32BitData = FOUR_CHAR_CODE('il32')
+kLarge8BitMask = FOUR_CHAR_CODE('l8mk')
+kSmall1BitMask = FOUR_CHAR_CODE('ics#')
+kSmall4BitData = FOUR_CHAR_CODE('ics4')
+kSmall8BitData = FOUR_CHAR_CODE('ics8')
+kSmall32BitData = FOUR_CHAR_CODE('is32')
+kSmall8BitMask = FOUR_CHAR_CODE('s8mk')
+kMini1BitMask = FOUR_CHAR_CODE('icm#')
+kMini4BitData = FOUR_CHAR_CODE('icm4')
+kMini8BitData = FOUR_CHAR_CODE('icm8')
+kTileIconVariant = FOUR_CHAR_CODE('tile')
+kRolloverIconVariant = FOUR_CHAR_CODE('over')
+kDropIconVariant = FOUR_CHAR_CODE('drop')
+kOpenIconVariant = FOUR_CHAR_CODE('open')
+kOpenDropIconVariant = FOUR_CHAR_CODE('odrp')
+large1BitMask = kLarge1BitMask
+large4BitData = kLarge4BitData
+large8BitData = kLarge8BitData
+small1BitMask = kSmall1BitMask
+small4BitData = kSmall4BitData
+small8BitData = kSmall8BitData
+mini1BitMask = kMini1BitMask
+mini4BitData = kMini4BitData
+mini8BitData = kMini8BitData
+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
+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
+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
+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
+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
+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
+kSystemIconsCreator = FOUR_CHAR_CODE('macs')
+# err = GetIconRef(kOnSystemDisk
+kClipboardIcon = FOUR_CHAR_CODE('CLIP')
+kClippingUnknownTypeIcon = FOUR_CHAR_CODE('clpu')
+kClippingPictureTypeIcon = FOUR_CHAR_CODE('clpp')
+kClippingTextTypeIcon = FOUR_CHAR_CODE('clpt')
+kClippingSoundTypeIcon = FOUR_CHAR_CODE('clps')
+kDesktopIcon = FOUR_CHAR_CODE('desk')
+kFinderIcon = FOUR_CHAR_CODE('FNDR')
+kFontSuitcaseIcon = FOUR_CHAR_CODE('FFIL')
+kFullTrashIcon = FOUR_CHAR_CODE('ftrh')
+kGenericApplicationIcon = FOUR_CHAR_CODE('APPL')
+kGenericCDROMIcon = FOUR_CHAR_CODE('cddr')
+kGenericControlPanelIcon = FOUR_CHAR_CODE('APPC')
+kGenericControlStripModuleIcon = FOUR_CHAR_CODE('sdev')
+kGenericComponentIcon = FOUR_CHAR_CODE('thng')
+kGenericDeskAccessoryIcon = FOUR_CHAR_CODE('APPD')
+kGenericDocumentIcon = FOUR_CHAR_CODE('docu')
+kGenericEditionFileIcon = FOUR_CHAR_CODE('edtf')
+kGenericExtensionIcon = FOUR_CHAR_CODE('INIT')
+kGenericFileServerIcon = FOUR_CHAR_CODE('srvr')
+kGenericFontIcon = FOUR_CHAR_CODE('ffil')
+kGenericFontScalerIcon = FOUR_CHAR_CODE('sclr')
+kGenericFloppyIcon = FOUR_CHAR_CODE('flpy')
+kGenericHardDiskIcon = FOUR_CHAR_CODE('hdsk')
+kGenericRemovableMediaIcon = FOUR_CHAR_CODE('rmov')
+kGenericMoverObjectIcon = FOUR_CHAR_CODE('movr')
+kGenericPCCardIcon = FOUR_CHAR_CODE('pcmc')
+kGenericPreferencesIcon = FOUR_CHAR_CODE('pref')
+kGenericQueryDocumentIcon = FOUR_CHAR_CODE('qery')
+kGenericRAMDiskIcon = FOUR_CHAR_CODE('ramd')
+kGenericSharedLibaryIcon = FOUR_CHAR_CODE('shlb')
+kGenericStationeryIcon = FOUR_CHAR_CODE('sdoc')
+kGenericSuitcaseIcon = FOUR_CHAR_CODE('suit')
+kGenericWORMIcon = FOUR_CHAR_CODE('worm')
+kInternationResourcesIcon = FOUR_CHAR_CODE('ifil')
+kKeyboardLayoutIcon = FOUR_CHAR_CODE('kfil')
+kSoundFileIcon = FOUR_CHAR_CODE('sfil')
+kSystemSuitcaseIcon = FOUR_CHAR_CODE('zsys')
+kTrashIcon = FOUR_CHAR_CODE('trsh')
+kTrueTypeFontIcon = FOUR_CHAR_CODE('tfil')
+kTrueTypeFlatFontIcon = FOUR_CHAR_CODE('sfnt')
+kTrueTypeMultiFlatFontIcon = FOUR_CHAR_CODE('ttcf')
+kInternetLocationHTTPIcon = FOUR_CHAR_CODE('ilht')
+kInternetLocationFTPIcon = FOUR_CHAR_CODE('ilft')
+kInternetLocationAppleShareIcon = FOUR_CHAR_CODE('ilaf')
+kInternetLocationAppleTalkZoneIcon = FOUR_CHAR_CODE('ilat')
+kInternetLocationFileIcon = FOUR_CHAR_CODE('ilfi')
+kInternetLocationMailIcon = FOUR_CHAR_CODE('ilma')
+kInternetLocationNewsIcon = FOUR_CHAR_CODE('ilnw')
+kInternetLocationNSLNeighborhoodIcon = FOUR_CHAR_CODE('ilns')
+kInternetLocationGenericIcon = FOUR_CHAR_CODE('ilge')
+kGenericFolderIcon = FOUR_CHAR_CODE('fldr')
+kDropFolderIcon = FOUR_CHAR_CODE('dbox')
+kMountedFolderIcon = FOUR_CHAR_CODE('mntd')
+kOpenFolderIcon = FOUR_CHAR_CODE('ofld')
+kOwnedFolderIcon = FOUR_CHAR_CODE('ownd')
+kPrivateFolderIcon = FOUR_CHAR_CODE('prvf')
+kSharedFolderIcon = FOUR_CHAR_CODE('shfl')
+kSharingPrivsNotApplicableIcon = FOUR_CHAR_CODE('shna')
+kSharingPrivsReadOnlyIcon = FOUR_CHAR_CODE('shro')
+kSharingPrivsReadWriteIcon = FOUR_CHAR_CODE('shrw')
+kSharingPrivsUnknownIcon = FOUR_CHAR_CODE('shuk')
+kSharingPrivsWritableIcon = FOUR_CHAR_CODE('writ')
+kUserFolderIcon = FOUR_CHAR_CODE('ufld')
+kWorkgroupFolderIcon = FOUR_CHAR_CODE('wfld')
+kGuestUserIcon = FOUR_CHAR_CODE('gusr')
+kUserIcon = FOUR_CHAR_CODE('user')
+kOwnerIcon = FOUR_CHAR_CODE('susr')
+kGroupIcon = FOUR_CHAR_CODE('grup')
+kAppleExtrasFolderIcon = FOUR_CHAR_CODE('aex\80')
+kAppleMenuFolderIcon = FOUR_CHAR_CODE('amnu')
+kApplicationsFolderIcon = FOUR_CHAR_CODE('apps')
+kApplicationSupportFolderIcon = FOUR_CHAR_CODE('asup')
+kAssistantsFolderIcon = FOUR_CHAR_CODE('ast\80')
+kContextualMenuItemsFolderIcon = FOUR_CHAR_CODE('cmnu')
+kControlPanelDisabledFolderIcon = FOUR_CHAR_CODE('ctrD')
+kControlPanelFolderIcon = FOUR_CHAR_CODE('ctrl')
+kControlStripModulesFolderIcon = FOUR_CHAR_CODE('sdv\80')
+kDocumentsFolderIcon = FOUR_CHAR_CODE('docs')
+kExtensionsDisabledFolderIcon = FOUR_CHAR_CODE('extD')
+kExtensionsFolderIcon = FOUR_CHAR_CODE('extn')
+kFavoritesFolderIcon = FOUR_CHAR_CODE('favs')
+kFontsFolderIcon = FOUR_CHAR_CODE('font')
+kHelpFolderIcon = FOUR_CHAR_CODE('\80hlp')
+kInternetFolderIcon = FOUR_CHAR_CODE('int\80')
+kInternetPlugInFolderIcon = FOUR_CHAR_CODE('\80net')
+kLocalesFolderIcon = FOUR_CHAR_CODE('\80loc')
+kMacOSReadMeFolderIcon = FOUR_CHAR_CODE('mor\80')
+kPreferencesFolderIcon = FOUR_CHAR_CODE('prf\80')
+kPrinterDescriptionFolderIcon = FOUR_CHAR_CODE('ppdf')
+kPrinterDriverFolderIcon = FOUR_CHAR_CODE('\80prd')
+kPrintMonitorFolderIcon = FOUR_CHAR_CODE('prnt')
+kRecentApplicationsFolderIcon = FOUR_CHAR_CODE('rapp')
+kRecentDocumentsFolderIcon = FOUR_CHAR_CODE('rdoc')
+kRecentServersFolderIcon = FOUR_CHAR_CODE('rsrv')
+kScriptingAdditionsFolderIcon = FOUR_CHAR_CODE('\80scr')
+kSharedLibrariesFolderIcon = FOUR_CHAR_CODE('\80lib')
+kScriptsFolderIcon = FOUR_CHAR_CODE('scr\80')
+kShutdownItemsDisabledFolderIcon = FOUR_CHAR_CODE('shdD')
+kShutdownItemsFolderIcon = FOUR_CHAR_CODE('shdf')
+kSpeakableItemsFolder = FOUR_CHAR_CODE('spki')
+kStartupItemsDisabledFolderIcon = FOUR_CHAR_CODE('strD')
+kStartupItemsFolderIcon = FOUR_CHAR_CODE('strt')
+kSystemExtensionDisabledFolderIcon = FOUR_CHAR_CODE('macD')
+kSystemFolderIcon = FOUR_CHAR_CODE('macs')
+kTextEncodingsFolderIcon = FOUR_CHAR_CODE('\80tex')
+kAppearanceFolderIcon = FOUR_CHAR_CODE('appr')
+kUtilitiesFolderIcon = FOUR_CHAR_CODE('uti\80')
+kVoicesFolderIcon = FOUR_CHAR_CODE('fvoc')
+kColorSyncFolderIcon = FOUR_CHAR_CODE('prof')
+kInternetSearchSitesFolderIcon = FOUR_CHAR_CODE('issf')
+kUsersFolderIcon = FOUR_CHAR_CODE('usr\80')
+kAppleScriptBadgeIcon = FOUR_CHAR_CODE('scrp')
+kLockedBadgeIcon = FOUR_CHAR_CODE('lbdg')
+kMountedBadgeIcon = FOUR_CHAR_CODE('mbdg')
+kSharedBadgeIcon = FOUR_CHAR_CODE('sbdg')
+kAliasBadgeIcon = FOUR_CHAR_CODE('abdg')
+kAlertNoteIcon = FOUR_CHAR_CODE('note')
+kAlertCautionIcon = FOUR_CHAR_CODE('caut')
+kAlertStopIcon = FOUR_CHAR_CODE('stop')
+kAppleTalkIcon = FOUR_CHAR_CODE('atlk')
+kAppleTalkZoneIcon = FOUR_CHAR_CODE('atzn')
+kAFPServerIcon = FOUR_CHAR_CODE('afps')
+kFTPServerIcon = FOUR_CHAR_CODE('ftps')
+kHTTPServerIcon = FOUR_CHAR_CODE('htps')
+kGenericNetworkIcon = FOUR_CHAR_CODE('gnet')
+kIPFileServerIcon = FOUR_CHAR_CODE('isrv')
+kAppleLogoIcon = FOUR_CHAR_CODE('capl')
+kAppleMenuIcon = FOUR_CHAR_CODE('sapl')
+kBackwardArrowIcon = FOUR_CHAR_CODE('baro')
+kFavoriteItemsIcon = FOUR_CHAR_CODE('favr')
+kForwardArrowIcon = FOUR_CHAR_CODE('faro')
+kGridIcon = FOUR_CHAR_CODE('grid')
+kHelpIcon = FOUR_CHAR_CODE('help')
+kKeepArrangedIcon = FOUR_CHAR_CODE('arng')
+kLockedIcon = FOUR_CHAR_CODE('lock')
+kNoFilesIcon = FOUR_CHAR_CODE('nfil')
+kNoFolderIcon = FOUR_CHAR_CODE('nfld')
+kNoWriteIcon = FOUR_CHAR_CODE('nwrt')
+kProtectedApplicationFolderIcon = FOUR_CHAR_CODE('papp')
+kProtectedSystemFolderIcon = FOUR_CHAR_CODE('psys')
+kRecentItemsIcon = FOUR_CHAR_CODE('rcnt')
+kShortcutIcon = FOUR_CHAR_CODE('shrt')
+kSortAscendingIcon = FOUR_CHAR_CODE('asnd')
+kSortDescendingIcon = FOUR_CHAR_CODE('dsnd')
+kUnlockedIcon = FOUR_CHAR_CODE('ulck')
+kConnectToIcon = FOUR_CHAR_CODE('cnct')
+kIconServicesNormalUsageFlag = 0
+kIconFamilyType = FOUR_CHAR_CODE('icns')
diff --git a/Mac/Lib/macerrors.py b/Mac/Lib/macerrors.py
new file mode 100644 (file)
index 0000000..dda3f08
--- /dev/null
@@ -0,0 +1,1789 @@
+svTempDisable  =       -32768  #svTempDisable
+svDisabled     =       -32640  #Reserve range -32640 to -32768 for Apple temp disables.
+fontNotOutlineErr      =       -32615  #bitmap font passed to routine that does outlines only
+kURL68kNotSupportedError       =       -30788  #kURL68kNotSupportedError
+kURLAccessNotAvailableError    =       -30787  #kURLAccessNotAvailableError
+kURLInvalidConfigurationError  =       -30786  #kURLInvalidConfigurationError
+kURLExtensionFailureError      =       -30785  #kURLExtensionFailureError
+kURLFileEmptyError     =       -30783  #kURLFileEmptyError
+kURLInvalidCallError   =       -30781  #kURLInvalidCallError
+kURLUnsettablePropertyError    =       -30780  #kURLUnsettablePropertyError
+kURLPropertyBufferTooSmallError        =       -30779  #kURLPropertyBufferTooSmallError
+kURLUnknownPropertyError       =       -30778  #kURLUnknownPropertyError
+kURLPropertyNotYetKnownError   =       -30777  #kURLPropertyNotYetKnownError
+kURLAuthenticationError        =       -30776  #kURLAuthenticationError
+kURLServerBusyError    =       -30775  #kURLServerBusyError
+kURLUnsupportedSchemeError     =       -30774  #kURLUnsupportedSchemeError
+kURLInvalidURLError    =       -30773  #kURLInvalidURLError
+kURLDestinationExistsError     =       -30772  #kURLDestinationExistsError
+kURLProgressAlreadyDisplayedError      =       -30771  #kURLProgressAlreadyDisplayedError
+kURLInvalidURLReferenceError   =       -30770  #kURLInvalidURLReferenceError
+controlHandleInvalidErr        =       -30599  #controlHandleInvalidErr
+controlInvalidDataVersionErr   =       -30597  #controlInvalidDataVersionErr
+errItemNotControl      =       -30596  #errItemNotControl
+errCantEmbedRoot       =       -30595  #errCantEmbedRoot
+errCantEmbedIntoSelf   =       -30594  #errCantEmbedIntoSelf
+errWindowRegionCodeInvalid     =       -30593  #errWindowRegionCodeInvalid
+errControlHiddenOrDisabled     =       -30592  #errControlHiddenOrDisabled
+errDataSizeMismatch    =       -30591  #errDataSizeMismatch
+errControlIsNotEmbedder        =       -30590  #errControlIsNotEmbedder
+errControlsAlreadyExist        =       -30589  #errControlsAlreadyExist
+errInvalidPartCode     =       -30588  #errInvalidPartCode
+errRootAlreadyExists   =       -30587  #errRootAlreadyExists
+errNoRootControl       =       -30586  #errNoRootControl
+errCouldntSetFocus     =       -30585  #errCouldntSetFocus
+errUnknownControl      =       -30584  #errUnknownControl
+errWindowDoesntSupportFocus    =       -30583  #errWindowDoesntSupportFocus
+errControlDoesntSupportFocus   =       -30582  #errControlDoesntSupportFocus
+errDataNotSupported    =       -30581  #errDataNotSupported
+errMessageNotSupported =       -30580  #errMessageNotSupported
+themeMonitorDepthNotSupportedErr       =       -30567  #theme not supported at monitor depth
+themeScriptFontNotFoundErr     =       -30566  #theme font requested for uninstalled script system
+themeBadCursorIndexErr =       -30565  #themeBadCursorIndexErr
+themeHasNoAccentsErr   =       -30564  #themeHasNoAccentsErr
+themeBadTextColorErr   =       -30563  #themeBadTextColorErr
+themeProcessNotRegisteredErr   =       -30562  #themeProcessNotRegisteredErr
+themeProcessRegisteredErr      =       -30561  #themeProcessRegisteredErr
+themeInvalidBrushErr   =       -30560  #pattern index invalid
+qtvrUninitialized      =       -30555  #qtvrUninitialized
+qtvrLibraryLoadErr     =       -30554  #qtvrLibraryLoadErr
+streamingNodeNotReadyErr       =       -30553  #streamingNodeNotReadyErr
+noMemoryNodeFailedInitialize   =       -30552  #noMemoryNodeFailedInitialize
+invalidHotSpotIDErr    =       -30551  #invalidHotSpotIDErr
+invalidNodeFormatErr   =       -30550  #invalidNodeFormatErr
+limitReachedErr        =       -30549  #limitReachedErr
+settingNotSupportedByNodeErr   =       -30548  #settingNotSupportedByNodeErr
+propertyNotSupportedByNodeErr  =       -30547  #propertyNotSupportedByNodeErr
+timeNotInViewErr       =       -30546  #timeNotInViewErr
+invalidViewStateErr    =       -30545  #invalidViewStateErr
+invalidNodeIDErr       =       -30544  #invalidNodeIDErr
+selectorNotSupportedByNodeErr  =       -30543  #selectorNotSupportedByNodeErr
+callNotSupportedByNodeErr      =       -30542  #callNotSupportedByNodeErr
+constraintReachedErr   =       -30541  #constraintReachedErr
+notAQTVRMovieErr       =       -30540  #notAQTVRMovieErr
+kFBCnoSuchHit  =       -30532  #kFBCnoSuchHit
+kFBCbadSearchSession   =       -30531  #kFBCbadSearchSession
+kFBCindexDiskIOFailed  =       -30530  #kFBCindexDiskIOFailed
+kFBCsummarizationCanceled      =       -30529  #kFBCsummarizationCanceled
+kFBCbadIndexFileVersion        =       -30528  #kFBCbadIndexFileVersion
+kFBCanalysisNotAvailable       =       -30527  #kFBCanalysisNotAvailable
+kFBCillegalSessionChange       =       -30526  #tried to add/remove vols to a session
+kFBCsomeFilesNotIndexed        =       -30525  #kFBCsomeFilesNotIndexed
+kFBCsearchFailed       =       -30524  #kFBCsearchFailed
+kFBCindexNotAvailable  =       -30523  #kFBCindexNotAvailable
+kFBCindexFileDestroyed =       -30522  #kFBCindexFileDestroyed
+kFBCaccessCanceled     =       -30521  #kFBCaccessCanceled
+kFBCindexingCanceled   =       -30520  #kFBCindexingCanceled
+kFBCnoSearchSession    =       -30519  #kFBCnoSearchSession
+kFBCindexNotFound      =       -30518  #kFBCindexNotFound
+kFBCflushFailed        =       -30517  #kFBCflushFailed
+kFBCaddDocFailed       =       -30516  #kFBCaddDocFailed
+kFBCaccessorStoreFailed        =       -30515  #kFBCaccessorStoreFailed
+kFBCindexCreationFailed        =       -30514  #couldn't create index
+kFBCmergingFailed      =       -30513  #couldn't merge index files
+kFBCtokenizationFailed =       -30512  #couldn't read from document or query
+kFBCmoveFailed =       -30511  #V-Twin exception caught
+kFBCdeletionFailed     =       -30510  #V-Twin exception caught
+kFBCcommitFailed       =       -30509  #V-Twin exception caught
+kFBCindexingFailed     =       -30508  #V-Twin exception caught
+kFBCvalidationFailed   =       -30507  #V-Twin exception caught
+kFBCcompactionFailed   =       -30506  #V-Twin exception caught
+kFBCbadIndexFile       =       -30505  #bad FSSpec, or bad data in file
+kFBCfileNotIndexed     =       -30504  #kFBCfileNotIndexed
+kFBCbadParam   =       -30503  #kFBCbadParam
+kFBCallocFailed        =       -30502  #probably low memory
+kFBCnoIndexesFound     =       -30501  #kFBCnoIndexesFound
+kFBCvTwinExceptionErr  =       -30500  #no telling what it was
+kDSpStereoContextErr   =       -30450  #kDSpStereoContextErr
+kDSpInternalErr        =       -30449  #kDSpInternalErr
+kDSpConfirmSwitchWarning       =       -30448  #kDSpConfirmSwitchWarning
+kDSpFrameRateNotReadyErr       =       -30447  #kDSpFrameRateNotReadyErr
+kDSpContextNotFoundErr =       -30446  #kDSpContextNotFoundErr
+kDSpContextNotReservedErr      =       -30445  #kDSpContextNotReservedErr
+kDSpContextAlreadyReservedErr  =       -30444  #kDSpContextAlreadyReservedErr
+kDSpInvalidAttributesErr       =       -30443  #kDSpInvalidAttributesErr
+kDSpInvalidContextErr  =       -30442  #kDSpInvalidContextErr
+kDSpSystemSWTooOldErr  =       -30441  #kDSpSystemSWTooOldErr
+kDSpNotInitializedErr  =       -30440  #kDSpNotInitializedErr
+kISpListBusyErr        =       -30429  #kISpListBusyErr
+kISpDeviceActiveErr    =       -30428  #kISpDeviceActiveErr
+kISpSystemActiveErr    =       -30427  #kISpSystemActiveErr
+kISpDeviceInactiveErr  =       -30426  #kISpDeviceInactiveErr
+kISpSystemInactiveErr  =       -30425  #kISpSystemInactiveErr
+kISpElementNotInListErr        =       -30424  #kISpElementNotInListErr
+kISpElementInListErr   =       -30423  #kISpElementInListErr
+kISpBufferToSmallErr   =       -30422  #kISpBufferToSmallErr
+kISpSystemListErr      =       -30421  #kISpSystemListErr
+kISpInternalErr        =       -30420  #kISpInternalErr
+kNSpJoinFailedErr      =       -30399  #kNSpJoinFailedErr
+kNSpCantBlockErr       =       -30398  #kNSpCantBlockErr
+kNSpMessageTooBigErr   =       -30397  #kNSpMessageTooBigErr
+kNSpSendFailedErr      =       -30396  #kNSpSendFailedErr
+kNSpConnectFailedErr   =       -30395  #kNSpConnectFailedErr
+kNSpGameTerminatedErr  =       -30394  #kNSpGameTerminatedErr
+kNSpTimeoutErr =       -30393  #kNSpTimeoutErr
+kNSpInvalidProtocolListErr     =       -30392  #kNSpInvalidProtocolListErr
+kNSpInvalidProtocolRefErr      =       -30391  #kNSpInvalidProtocolRefErr
+kNSpInvalidDefinitionErr       =       -30390  #kNSpInvalidDefinitionErr
+kNSpAddPlayerFailedErr =       -30389  #kNSpAddPlayerFailedErr
+kNSpCreateGroupFailedErr       =       -30388  #kNSpCreateGroupFailedErr
+kNSpNoHostVolunteersErr        =       -30387  #kNSpNoHostVolunteersErr
+kNSpNoGroupsErr        =       -30386  #kNSpNoGroupsErr
+kNSpNoPlayersErr       =       -30385  #kNSpNoPlayersErr
+kNSpInvalidGroupIDErr  =       -30384  #kNSpInvalidGroupIDErr
+kNSpInvalidPlayerIDErr =       -30383  #kNSpInvalidPlayerIDErr
+kNSpNameRequiredErr    =       -30382  #kNSpNameRequiredErr
+kNSpFeatureNotImplementedErr   =       -30381  #kNSpFeatureNotImplementedErr
+kNSpAddressInUseErr    =       -30380  #kNSpAddressInUseErr
+kNSpRemovePlayerFailedErr      =       -30379  #kNSpRemovePlayerFailedErr
+kNSpFreeQExhaustedErr  =       -30378  #kNSpFreeQExhaustedErr
+kNSpInvalidAddressErr  =       -30377  #kNSpInvalidAddressErr
+kNSpNotAdvertisingErr  =       -30376  #kNSpNotAdvertisingErr
+kNSpAlreadyAdvertisingErr      =       -30374  #kNSpAlreadyAdvertisingErr
+kNSpMemAllocationErr   =       -30373  #kNSpMemAllocationErr
+kNSpOTVersionTooOldErr =       -30371  #kNSpOTVersionTooOldErr
+kNSpOTNotPresentErr    =       -30370  #kNSpOTNotPresentErr
+kNSpInvalidParameterErr        =       -30369  #kNSpInvalidParameterErr
+kNSpInvalidGameRefErr  =       -30367  #kNSpInvalidGameRefErr
+kNSpProtocolNotAvailableErr    =       -30366  #kNSpProtocolNotAvailableErr
+kNSpHostFailedErr      =       -30365  #kNSpHostFailedErr
+kNSpPipeFullErr        =       -30364  #kNSpPipeFullErr
+kNSpTopologyNotSupportedErr    =       -30362  #kNSpTopologyNotSupportedErr
+kNSpAlreadyInitializedErr      =       -30361  #kNSpAlreadyInitializedErr
+kNSpInitializationFailedErr    =       -30360  #kNSpInitializationFailedErr
+kSSpScaleToZeroErr     =       -30344  #kSSpScaleToZeroErr
+kSSpParallelUpVectorErr        =       -30343  #kSSpParallelUpVectorErr
+kSSpCantInstallErr     =       -30342  #kSSpCantInstallErr
+kSSpVersionErr =       -30341  #kSSpVersionErr
+kSSpInternalErr        =       -30340  #kSSpInternalErr
+kALMInternalErr        =       -30049  #kALMInternalErr
+kALMGroupNotFoundErr   =       -30048  #kALMGroupNotFoundErr
+kALMNoSuchModuleErr    =       -30047  #kALMNoSuchModuleErr
+kALMModuleCommunicationErr     =       -30046  #kALMModuleCommunicationErr
+kALMDuplicateModuleErr =       -30045  #kALMDuplicateModuleErr
+kALMInstallationErr    =       -30044  #kALMInstallationErr
+kALMDeferSwitchErr     =       -30043  #kALMDeferSwitchErr
+kALMRebootFlagsLevelErr        =       -30042  #kALMRebootFlagsLevelErr
+kLocalesDefaultDisplayStatus   =       -30029  #Requested display locale unavailable, used default
+kLocalesTableFormatErr =       -30002  #kLocalesTableFormatErr
+kLocalesBufferTooSmallErr      =       -30001  #kLocalesBufferTooSmallErr
+kFNSNameNotFoundErr    =       -29589  #The name with the requested paramters was not found
+kFNSBadFlattenedSizeErr        =       -29587  #flattened size didn't match input or was too small
+kFNSInsufficientDataErr        =       -29586  #insufficient data for the operation
+kFNSMismatchErr        =       -29585  #reference didn't match or wasn't found in profile
+kFNSDuplicateReferenceErr      =       -29584  #the ref. being added is already in the profile
+kFNSBadProfileVersionErr       =       -29583  #profile version is out of known range
+kFNSInvalidProfileErr  =       -29582  #profile is NULL or otherwise bad
+kFNSBadReferenceVersionErr     =       -29581  #ref. version is out of known range
+kFNSInvalidReferenceErr        =       -29580  #ref. was NULL or otherwise bad
+kCollateInvalidCollationRef    =       -29507  #kCollateInvalidCollationRef
+kCollateBufferTooSmall =       -29506  #kCollateBufferTooSmall
+kCollateInvalidChar    =       -29505  #kCollateInvalidChar
+kCollatePatternNotFoundErr     =       -29504  #kCollatePatternNotFoundErr
+kCollateUnicodeConvertFailedErr        =       -29503  #kCollateUnicodeConvertFailedErr
+kCollateMissingUnicodeTableErr =       -29502  #kCollateMissingUnicodeTableErr
+kCollateInvalidOptions =       -29501  #kCollateInvalidOptions
+kCollateAttributesNotFoundErr  =       -29500  #kCollateAttributesNotFoundErr
+kMPInvalidIDErr        =       -29299  #kMPInvalidIDErr
+kMPInsufficientResourcesErr    =       -29298  #kMPInsufficientResourcesErr
+kMPTaskAbortedErr      =       -29297  #kMPTaskAbortedErr
+kMPTimeoutErr  =       -29296  #kMPTimeoutErr
+kMPDeletedErr  =       -29295  #kMPDeletedErr
+kMPBlueBlockingErr     =       -29293  #kMPBlueBlockingErr
+kMPTaskStoppedErr      =       -29292  #A convention used with MPThrowException.
+kMPTaskBlockedErr      =       -29291  #kMPTaskBlockedErr
+kMPTaskCreatedErr      =       -29290  #kMPTaskCreatedErr
+kMPProcessTerminatedErr        =       -29289  #kMPProcessTerminatedErr
+kMPProcessCreatedErr   =       -29288  #kMPProcessCreatedErr
+kMPPrivilegedErr       =       -29276  #kMPPrivilegedErr
+kMPIterationEndErr     =       -29275  #kMPIterationEndErr
+kUCTextBreakLocatorMissingType =       -25341  #Unicode text break error
+kUCOutputBufferTooSmall        =       -25340  #Output buffer too small for Unicode string result
+errKCCreateChainFailed =       -25318  #errKCCreateChainFailed
+errKCDataNotModifiable =       -25317  #errKCDataNotModifiable
+errKCDataNotAvailable  =       -25316  #errKCDataNotAvailable
+errKCInteractionRequired       =       -25315  #errKCInteractionRequired
+errKCNoPolicyModule    =       -25314  #errKCNoPolicyModule
+errKCNoCertificateModule       =       -25313  #errKCNoCertificateModule
+errKCNoStorageModule   =       -25312  #errKCNoStorageModule
+errKCKeySizeNotAllowed =       -25311  #errKCKeySizeNotAllowed
+errKCWrongKCVersion    =       -25310  #errKCWrongKCVersion
+errKCReadOnlyAttr      =       -25309  #errKCReadOnlyAttr
+errKCInteractionNotAllowed     =       -25308  #errKCInteractionNotAllowed
+errKCNoDefaultKeychain =       -25307  #errKCNoDefaultKeychain
+errKCNoSuchClass       =       -25306  #errKCNoSuchClass
+errKCInvalidSearchRef  =       -25305  #errKCInvalidSearchRef
+errKCInvalidItemRef    =       -25304  #errKCInvalidItemRef
+errKCNoSuchAttr        =       -25303  #errKCNoSuchAttr
+errKCDataTooLarge      =       -25302  #errKCDataTooLarge
+errKCBufferTooSmall    =       -25301  #errKCBufferTooSmall
+errKCItemNotFound      =       -25300  #errKCItemNotFound
+errKCDuplicateItem     =       -25299  #errKCDuplicateItem
+errKCInvalidCallback   =       -25298  #errKCInvalidCallback
+errKCDuplicateCallback =       -25297  #errKCDuplicateCallback
+errKCDuplicateKeychain =       -25296  #errKCDuplicateKeychain
+errKCInvalidKeychain   =       -25295  #errKCInvalidKeychain
+errKCNoSuchKeychain    =       -25294  #errKCNoSuchKeychain
+errKCAuthFailed        =       -25293  #errKCAuthFailed
+errKCReadOnly  =       -25292  #errKCReadOnly
+errKCNotAvailable      =       -25291  #errKCNotAvailable
+printerStatusOpCodeNotSupportedErr     =       -25280  #printerStatusOpCodeNotSupportedErr
+kTXNATSUIIsNotInstalledErr     =       -22016  #kTXNATSUIIsNotInstalledErr
+kTXNDataTypeNotAllowedErr      =       -22015  #kTXNDataTypeNotAllowedErr
+kTXNCopyNotAllowedInEchoModeErr        =       -22014  #kTXNCopyNotAllowedInEchoModeErr
+kTXNCannotTurnTSMOffWhenUsingUnicodeErr        =       -22013  #kTXNCannotTurnTSMOffWhenUsingUnicodeErr
+kTXNAlreadyInitializedErr      =       -22012  #kTXNAlreadyInitializedErr
+kTXNInvalidRunIndex    =       -22011  #kTXNInvalidRunIndex
+kTXNSomeOrAllTagsInvalidForRunErr      =       -22010  #kTXNSomeOrAllTagsInvalidForRunErr
+kTXNAttributeTagInvalidForRunErr       =       -22009  #dataValue is set to this per invalid tag
+kTXNNoMatchErr =       -22008  #kTXNNoMatchErr
+kTXNRunIndexOutofBoundsErr     =       -22007  #kTXNRunIndexOutofBoundsErr
+kTXNCannotSetAutoIndentErr     =       -22006  #kTXNCannotSetAutoIndentErr
+kTXNBadDefaultFileTypeWarning  =       -22005  #kTXNBadDefaultFileTypeWarning
+kTXNUserCanceledOperationErr   =       -22004  #kTXNUserCanceledOperationErr
+kTXNIllegalToCrossDataBoundariesErr    =       -22003  #kTXNIllegalToCrossDataBoundariesErr
+kTXNInvalidFrameIDErr  =       -22002  #kTXNInvalidFrameIDErr
+kTXNCannotAddFrameErr  =       -22001  #kTXNCannotAddFrameErr
+kTXNEndIterationErr    =       -22000  #kTXNEndIterationErr
+invalidIndexErr        =       -20002  #The recordIndex parameter is not valid.
+recordDataTooBigErr    =       -20001  #The record data is bigger than buffer size (1024 bytes).
+unknownInsertModeErr   =       -20000  #There is no such an insert mode.
+kHIDBaseError  =       -13950  #kHIDBaseError
+kHIDNullStateErr       =       -13949  #kHIDNullStateErr
+kHIDBufferTooSmallErr  =       -13948  #kHIDBufferTooSmallErr
+kHIDValueOutOfRangeErr =       -13947  #kHIDValueOutOfRangeErr
+kHIDUsageNotFoundErr   =       -13946  #kHIDUsageNotFoundErr
+kHIDNotValueArrayErr   =       -13945  #kHIDNotValueArrayErr
+kHIDInvalidPreparsedDataErr    =       -13944  #kHIDInvalidPreparsedDataErr
+kHIDIncompatibleReportErr      =       -13943  #kHIDIncompatibleReportErr
+kHIDBadLogPhysValuesErr        =       -13942  #kHIDBadLogPhysValuesErr
+kHIDInvalidReportTypeErr       =       -13941  #kHIDInvalidReportTypeErr
+kHIDInvalidReportLengthErr     =       -13940  #kHIDInvalidReportLengthErr
+kHIDNullPointerErr     =       -13939  #kHIDNullPointerErr
+kHIDBadParameterErr    =       -13938  #kHIDBadParameterErr
+kHIDNotEnoughMemoryErr =       -13937  #kHIDNotEnoughMemoryErr
+kHIDEndOfDescriptorErr =       -13936  #kHIDEndOfDescriptorErr
+kHIDUsagePageZeroErr   =       -13935  #kHIDUsagePageZeroErr
+kHIDBadLogicalMinimumErr       =       -13934  #kHIDBadLogicalMinimumErr
+kHIDBadLogicalMaximumErr       =       -13933  #kHIDBadLogicalMaximumErr
+kHIDInvertedLogicalRangeErr    =       -13932  #kHIDInvertedLogicalRangeErr
+kHIDInvertedPhysicalRangeErr   =       -13931  #kHIDInvertedPhysicalRangeErr
+kHIDUnmatchedUsageRangeErr     =       -13930  #kHIDUnmatchedUsageRangeErr
+kHIDInvertedUsageRangeErr      =       -13929  #kHIDInvertedUsageRangeErr
+kHIDUnmatchedStringRangeErr    =       -13928  #kHIDUnmatchedStringRangeErr
+kHIDUnmatchedDesignatorRangeErr        =       -13927  #kHIDUnmatchedDesignatorRangeErr
+kHIDReportSizeZeroErr  =       -13926  #kHIDReportSizeZeroErr
+kHIDReportCountZeroErr =       -13925  #kHIDReportCountZeroErr
+kHIDReportIDZeroErr    =       -13924  #kHIDReportIDZeroErr
+kHIDInvalidRangePageErr        =       -13923  #kHIDInvalidRangePageErr
+kHIDDeviceNotReady     =       -13910  #The device is still initializing, try again later
+kHIDVersionIncompatibleErr     =       -13909  #kHIDVersionIncompatibleErr
+debuggingNoMatchErr    =       -13887  #debugging component or option not found at this index
+debuggingNoCallbackErr =       -13886  #debugging component has no callback
+debuggingInvalidNameErr        =       -13885  #componentName or optionName is invalid (NULL)
+debuggingInvalidOptionErr      =       -13884  #optionSelectorNum is not registered
+debuggingInvalidSignatureErr   =       -13883  #componentSignature not registered
+debuggingDuplicateOptionErr    =       -13882  #optionSelectorNum already registered
+debuggingDuplicateSignatureErr =       -13881  #componentSignature already registered
+debuggingExecutionContextErr   =       -13880  #routine cannot be called at this time
+kNoSuchPowerSource     =       -13020  #kNoSuchPowerSource
+kProcessorTempRoutineRequiresMPLib2    =       -13014  #kProcessorTempRoutineRequiresMPLib2
+kCantReportProcessorTemperatureErr     =       -13013  #kCantReportProcessorTemperatureErr
+kPowerMgtRequestDenied =       -13010  #kPowerMgtRequestDenied
+kPowerMgtMessageNotHandled     =       -13009  #kPowerMgtMessageNotHandled
+kPowerHandlerNotFoundForProcErr        =       -13008  #kPowerHandlerNotFoundForProcErr
+kPowerHandlerNotFoundForDeviceErr      =       -13007  #kPowerHandlerNotFoundForDeviceErr
+kPowerHandlerExistsForDeviceErr        =       -13006  #kPowerHandlerExistsForDeviceErr
+pmRecvEndErr   =       -13005  #during receive, pmgr did not finish hs configured for this connection
+pmRecvStartErr =       -13004  #during receive, pmgr did not start hs
+pmSendEndErr   =       -13003  #during send, pmgr did not finish hs
+pmSendStartErr =       -13002  #during send, pmgr did not start hs
+pmReplyTOErr   =       -13001  #Timed out waiting for reply
+pmBusyErr      =       -13000  #Power Mgr never ready to start handshake
+pictureDataErr =       -11005  #the picture data was invalid
+colorsRequestedErr     =       -11004  #the number of colors requested was illegal
+cantLoadPickMethodErr  =       -11003  #unable to load the custom pick proc
+pictInfoVerbErr        =       -11002  #the passed verb was invalid
+pictInfoIDErr  =       -11001  #the internal consistancy check for the PictInfoID is wrong
+pictInfoVersionErr     =       -11000  #wrong version of the PictInfo structure
+telNotEnoughdspBW      =       -10116  #not enough real-time for allocation
+telBadSampleRate       =       -10115  #incompatible sample rate
+telBadSWErr    =       -10114  #Software not installed properly
+telDetAlreadyOn        =       -10113  #detection is already turned on
+telAutoAnsNotOn        =       -10112  #autoAnswer in not turned on
+telValidateFailed      =       -10111  #telValidate failed
+telBadProcID   =       -10110  #invalid procID
+telDeviceNotFound      =       -10109  #device not found
+telBadCodeResource     =       -10108  #code resource not found
+telInitFailed  =       -10107  #initialization failed
+telNoCommFolder        =       -10106  #Communications/Extensions \80 not found
+telUnknownErr  =       -10103  #unable to set config
+telNoSuchTool  =       -10102  #unable to find tool with name specified
+telBadFunction =       -10091  #bad msgCode specified
+telPBErr       =       -10090  #parameter block error, bad format
+telCANotDeflectable    =       -10082  #CA not "deflectable"
+telCANotRejectable     =       -10081  #CA not "rejectable"
+telCANotAcceptable     =       -10080  #CA not "acceptable"
+telTermNotOpen =       -10072  #terminal not opened via TELOpenTerm
+telStillNeeded =       -10071  #terminal driver still needed by someone else
+telAlreadyOpen =       -10070  #terminal already open
+telNoCallbackRef       =       -10064  #no call back reference was specified, but is required
+telDisplayModeNotSupp  =       -10063  #display mode not supported by tool
+telBadDisplayMode      =       -10062  #bad display mode specified
+telFwdTypeNotSupp      =       -10061  #forward type not supported by tool
+telDNTypeNotSupp       =       -10060  #DN type not supported by tool
+telBadRate     =       -10059  #bad rate specified
+telBadBearerType       =       -10058  #bad bearerType specified
+telBadSelect   =       -10057  #unable to select or deselect DN
+telBadParkID   =       -10056  #bad park id specified
+telBadPickupGroupID    =       -10055  #bad pickup group ID specified
+telBadFwdType  =       -10054  #bad fwdType specified
+telBadFeatureID        =       -10053  #bad feature ID specified
+telBadIntercomID       =       -10052  #bad intercom ID specified
+telBadPageID   =       -10051  #bad page ID specified
+telBadDNType   =       -10050  #DN type invalid
+telConfLimitExceeded   =       -10047  #attempt to exceed switch conference limits
+telCBErr       =       -10046  #call back feature not set previously
+telTransferRej =       -10045  #transfer request rejected
+telTransferErr =       -10044  #transfer not prepared
+telConfRej     =       -10043  #conference request was rejected
+telConfErr     =       -10042  #conference was not prepared
+telConfNoLimit =       -10041  #no limit was specified but required
+telConfLimitErr        =       -10040  #limit specified is too high for this configuration
+telFeatNotSupp =       -10033  #feature program call not supported by this tool
+telFeatActive  =       -10032  #feature already active
+telFeatNotAvail        =       -10031  #feature subscribed but not available
+telFeatNotSub  =       -10030  #feature not subscribed
+errAEPropertiesClash   =       -10025  #illegal combination of properties settings for Set Data, make new, or duplicate
+errAECantPutThatThere  =       -10024  #in make new, duplicate, etc. class can't be an element of container
+errAENotAnEnumMember   =       -10023  #enumerated value in SetData is not allowed for this property
+telIntExtNotSupp       =       -10022  #internal external type not supported by this tool
+telBadIntExt   =       -10021  #bad internal external error
+telStateNotSupp        =       -10020  #device state not supported by tool
+telBadStateErr =       -10019  #bad device state specified
+telIndexNotSupp        =       -10018  #index not supported by this tool
+telBadIndex    =       -10017  #bad index specified
+telAPattNotSupp        =       -10016  #alerting pattern not supported by tool
+telBadAPattErr =       -10015  #bad alerting pattern specified
+telVTypeNotSupp        =       -10014  #volume type not supported by this tool
+telBadVTypeErr =       -10013  #bad volume type error
+telBadLevelErr =       -10012  #bad volume level setting
+telHTypeNotSupp        =       -10011  #hook type not supported by this tool
+telBadHTypeErr =       -10010  #bad hook type specified
+errAECantSupplyType    =       -10009  #errAECantSupplyType
+telNoOpenErr   =       -10008  #unable to open terminal
+telNoMemErr    =       -10007  #no memory to allocate handle
+errOSACantAssign       =       -10006  #Signaled when an object cannot be set in a container.
+telBadProcErr  =       -10005  #bad msgProc specified
+telBadHandErr  =       -10004  #bad handle specified
+OSAIllegalAssign       =       -10003  #Signaled when an object can never be set in a container
+telBadDNErr    =       -10002  #TELDNHandle not found or invalid
+telBadTermErr  =       -10001  #invalid TELHandle or handle not found
+errAEEventFailed       =       -10000  #errAEEventFailed
+cannotMoveAttachedController   =       -9999   #cannotMoveAttachedController
+controllerHasFixedHeight       =       -9998   #controllerHasFixedHeight
+cannotSetWidthOfAttachedController     =       -9997   #cannotSetWidthOfAttachedController
+controllerBoundsNotExact       =       -9996   #controllerBoundsNotExact
+editingNotAllowed      =       -9995   #editingNotAllowed
+badControllerHeight    =       -9994   #badControllerHeight
+deviceCantMeetRequest  =       -9408   #deviceCantMeetRequest
+seqGrabInfoNotAvailable        =       -9407   #seqGrabInfoNotAvailable
+badSGChannel   =       -9406   #badSGChannel
+couldntGetRequiredComponent    =       -9405   #couldntGetRequiredComponent
+notEnoughDiskSpaceToGrab       =       -9404   #notEnoughDiskSpaceToGrab
+notEnoughMemoryToGrab  =       -9403   #notEnoughMemoryToGrab
+cantDoThatInCurrentMode        =       -9402   #cantDoThatInCurrentMode
+grabTimeComplete       =       -9401   #grabTimeComplete
+noDeviceForChannel     =       -9400   #noDeviceForChannel
+kNoCardBusCISErr       =       -9109   #No valid CIS exists for this CardBus card
+kNotZVCapableErr       =       -9108   #This socket does not support Zoomed Video
+kCardPowerOffErr       =       -9107   #Power to the card has been turned off
+kAttemptDupCardEntryErr        =       -9106   #The Enabler was asked to create a duplicate card entry
+kAlreadySavedStateErr  =       -9105   #The state has been saved on previous call
+kTooManyIOWindowsErr   =       -9104   #device requested more than one I/O window
+kNotReadyErr   =       -9103   #PC Card failed to go ready
+kClientRequestDenied   =       -9102   #CS Clients should return this code inorder to
+kNoCompatibleNameErr   =       -9101   #There is no compatible driver name for this device
+kNoEnablerForCardErr   =       -9100   #No Enablers were found that can support the card
+kNoCardEnablersFoundErr        =       -9099   #No Enablers were found
+kUnsupportedCardErr    =       -9098   #Card not supported by generic enabler
+kNoClientTableErr      =       -9097   #The client table has not be initialized yet
+kNoMoreInterruptSlotsErr       =       -9096   #All internal Interrupt slots are in use
+kNoMoreTimerClientsErr =       -9095   #All timer callbacks are in use
+kNoIOWindowRequestedErr        =       -9094   #Request I/O window before calling configuration
+kBadCustomIFIDErr      =       -9093   #Custom interface ID is invalid
+kBadTupleDataErr       =       -9092   #Data in tuple is invalid
+kInvalidCSClientErr    =       -9091   #Card Services ClientID is not registered
+kUnsupportedVsErr      =       -9090   #Unsupported Voltage Sense
+kInvalidDeviceNumber   =       -9089   #kInvalidDeviceNumber
+kPostCardEventErr      =       -9088   #_PCCSLPostCardEvent failed and dropped an event
+kCantConfigureCardErr  =       -9087   #kCantConfigureCardErr
+kPassCallToChainErr    =       -9086   #kPassCallToChainErr
+kCardBusCardErr        =       -9085   #kCardBusCardErr
+k16BitCardErr  =       -9084   #k16BitCardErr
+kBadDeviceErr  =       -9083   #kBadDeviceErr
+kBadLinkErr    =       -9082   #kBadLinkErr
+kInvalidRegEntryErr    =       -9081   #kInvalidRegEntryErr
+kNoCardSevicesSocketsErr       =       -9080   #kNoCardSevicesSocketsErr
+kOutOfResourceErr      =       -9079   #Card Services has exhausted the resource
+kNoMoreItemsErr        =       -9078   #there are no more of the requested item
+kInUseErr      =       -9077   #requested resource is being used by a client
+kConfigurationLockedErr        =       -9076   #a configuration has already been locked
+kWriteProtectedErr     =       -9075   #media is write-protected
+kBusyErr       =       -9074   #unable to process request at this time - try later
+kUnsupportedModeErr    =       -9073   #mode is not supported
+kUnsupportedFunctionErr        =       -9072   #function is not supported by this implementation
+kNoCardErr     =       -9071   #no PC card in the socket
+kGeneralFailureErr     =       -9070   #an undefined error has occurred
+kWriteFailureErr       =       -9069   #unable to complete write request
+kReadFailureErr        =       -9068   #unable to complete read request
+kBadSpeedErr   =       -9067   #specified speed is unavailable
+kBadCISErr     =       -9066   #CIS on card is invalid
+kBadHandleErr  =       -9065   #clientHandle is invalid
+kBadArgsErr    =       -9064   #values in argument packet are invalid
+kBadArgLengthErr       =       -9063   #ArgLength argument is invalid
+kBadWindowErr  =       -9062   #specified window is invalid
+kBadVppErr     =       -9061   #specified Vpp1 or Vpp2 power level index is invalid
+kBadVccErr     =       -9060   #specified Vcc power level index is invalid
+kBadTypeErr    =       -9059   #specified window or interface type is invalid
+kBadSocketErr  =       -9058   #specified logical or physical socket number is invalid
+kBadSizeErr    =       -9057   #specified size is invalid
+kBadPageErr    =       -9056   #specified page is invalid
+kBadOffsetErr  =       -9055   #specified PC card memory array offset is invalid
+kBadIRQErr     =       -9054   #specified IRQ level is invalid
+kBadEDCErr     =       -9053   #specified EDC generator specified is invalid
+kBadBaseErr    =       -9052   #specified base system memory address is invalid
+kBadAttributeErr       =       -9051   #specified attributes field value is invalid
+kBadAdapterErr =       -9050   #invalid adapter number
+codecOffscreenFailedPleaseRetryErr     =       -8992   #codecOffscreenFailedPleaseRetryErr
+lockPortBitsWrongGDeviceErr    =       -8991   #lockPortBitsWrongGDeviceErr
+directXObjectAlreadyExists     =       -8990   #directXObjectAlreadyExists
+codecDroppedFrameErr   =       -8989   #returned from ImageCodecDrawBand
+codecOffscreenFailedErr        =       -8988   #codecOffscreenFailedErr
+codecNeedAccessKeyErr  =       -8987   #codec needs password in order to decompress
+codecParameterDialogConfirm    =       -8986   #codecParameterDialogConfirm
+lockPortBitsSurfaceLostErr     =       -8985   #lockPortBitsSurfaceLostErr
+lockPortBitsBadPortErr =       -8984   #lockPortBitsBadPortErr
+lockPortBitsWindowClippedErr   =       -8983   #lockPortBitsWindowClippedErr
+lockPortBitsWindowResizedErr   =       -8982   #lockPortBitsWindowResizedErr
+lockPortBitsWindowMovedErr     =       -8981   #lockPortBitsWindowMovedErr
+lockPortBitsBadSurfaceErr      =       -8980   #lockPortBitsBadSurfaceErr
+codecNeedToFlushChainErr       =       -8979   #codecNeedToFlushChainErr
+codecDisabledErr       =       -8978   #codec disabled itself -- pass codecFlagReenable to reset
+codecNoMemoryPleaseWaitErr     =       -8977   #codecNoMemoryPleaseWaitErr
+codecNothingToBlitErr  =       -8976   #codecNothingToBlitErr
+codecCantQueueErr      =       -8975   #codecCantQueueErr
+codecCantWhenErr       =       -8974   #codecCantWhenErr
+codecOpenErr   =       -8973   #codecOpenErr
+codecConditionErr      =       -8972   #codecConditionErr
+codecExtensionNotFoundErr      =       -8971   #codecExtensionNotFoundErr
+codecDataVersErr       =       -8970   #codecDataVersErr
+codecBadDataErr        =       -8969   #codecBadDataErr
+codecWouldOffscreenErr =       -8968   #codecWouldOffscreenErr
+codecAbortErr  =       -8967   #codecAbortErr
+codecSpoolErr  =       -8966   #codecSpoolErr
+codecImageBufErr       =       -8965   #codecImageBufErr
+codecScreenBufErr      =       -8964   #codecScreenBufErr
+codecSizeErr   =       -8963   #codecSizeErr
+codecUnimpErr  =       -8962   #codecUnimpErr
+noCodecErr     =       -8961   #noCodecErr
+codecErr       =       -8960   #codecErr
+kIllegalClockValueErr  =       -8852   #kIllegalClockValueErr
+kUTCOverflowErr        =       -8851   #kUTCOverflowErr
+kUTCUnderflowErr       =       -8850   #kUTCUnderflowErr
+kATSULastErr   =       -8809   #The last ATSUI error code.
+kATSULineBreakInWord   =       -8808   #This is not an error code but is returned by ATSUBreakLine to
+kATSUCoordinateOverflowErr     =       -8807   #Used to indicate the coordinates provided to an ATSUI routine caused
+kATSUNoFontScalerAvailableErr  =       -8806   #Used when no font scaler is available for the font passed
+kATSUNoFontCmapAvailableErr    =       -8805   #Used when no CMAP table can be accessed or synthesized for the
+kATSULowLevelErr       =       -8804   #Used when an error was encountered within the low level ATS
+kATSUQuickDrawTextErr  =       -8803   #Used when QuickDraw Text encounters an error rendering or measuring
+kATSUNoStyleRunsAssignedErr    =       -8802   #Used when an attempt was made to measure, highlight or draw
+kATSUNotSetErr =       -8801   #Used when the client attempts to retrieve an attribute,
+kATSUInvalidCacheErr   =       -8800   #Used when an attempt was made to read in style data
+kATSUInvalidAttributeTagErr    =       -8799   #Used when an attempt was made to use a tag value that
+kATSUInvalidAttributeSizeErr   =       -8798   #Used when an attempt was made to use an attribute with a
+kATSUInvalidAttributeValueErr  =       -8797   #Used when an attempt was made to use an attribute with
+kATSUInvalidFontErr    =       -8796   #Used when an attempt was made to use an invalid font ID.
+kATSUNoCorrespondingFontErr    =       -8795   #This value is retrned by font ID conversion
+kATSUFontsNotMatched   =       -8794   #This value is returned by ATSUMatchFontsToText()
+kATSUFontsMatched      =       -8793   #This is not an error code but is returned by
+kATSUInvalidTextRangeErr       =       -8792   #An attempt was made to extract information
+kATSUInvalidStyleErr   =       -8791   #An attempt was made to use a ATSUStyle which
+kATSUInvalidTextLayoutErr      =       -8790   #An attempt was made to use a ATSUTextLayout
+kTECOutputBufferFullStatus     =       -8785   #output buffer has no room for conversion of next input text element (partial conversion)
+kTECNeedFlushStatus    =       -8784   #kTECNeedFlushStatus
+kTECUsedFallbacksStatus        =       -8783   #kTECUsedFallbacksStatus
+kTECItemUnavailableErr =       -8771   #item (e.g. name) not available for specified region (& encoding if relevant)
+kTECGlobalsUnavailableErr      =       -8770   #globals have already been deallocated (premature TERM)
+unicodeChecksumErr     =       -8769   #unicodeChecksumErr
+unicodeNoTableErr      =       -8768   #unicodeNoTableErr
+unicodeVariantErr      =       -8767   #unicodeVariantErr
+unicodeFallbacksErr    =       -8766   #unicodeFallbacksErr
+unicodePartConvertErr  =       -8765   #unicodePartConvertErr
+unicodeBufErr  =       -8764   #unicodeBufErr
+unicodeCharErr =       -8763   #unicodeCharErr
+unicodeElementErr      =       -8762   #unicodeElementErr
+unicodeNotFoundErr     =       -8761   #unicodeNotFoundErr
+unicodeTableFormatErr  =       -8760   #unicodeTableFormatErr
+unicodeDirectionErr    =       -8759   #unicodeDirectionErr
+unicodeContextualErr   =       -8758   #unicodeContextualErr
+unicodeTextEncodingDataErr     =       -8757   #unicodeTextEncodingDataErr
+kTECDirectionErr       =       -8756   #direction stack overflow, etc.
+kTECIncompleteElementErr       =       -8755   #text element may be incomplete or is too long for internal buffers
+kTECUnmappableElementErr       =       -8754   #kTECUnmappableElementErr
+kTECPartialCharErr     =       -8753   #input buffer ends in the middle of a multibyte character, conversion stopped
+kTECBadTextRunErr      =       -8752   #kTECBadTextRunErr
+kTECArrayFullErr       =       -8751   #supplied name buffer or TextRun, TextEncoding, or UnicodeMapping array is too small
+kTECBufferBelowMinimumSizeErr  =       -8750   #output buffer too small to allow processing of first input text element
+kTECNoConversionPathErr        =       -8749   #kTECNoConversionPathErr
+kTECCorruptConverterErr        =       -8748   #invalid converter object reference
+kTECTableFormatErr     =       -8747   #kTECTableFormatErr
+kTECTableChecksumErr   =       -8746   #kTECTableChecksumErr
+kTECMissingTableErr    =       -8745   #kTECMissingTableErr
+kTextUndefinedElementErr       =       -8740   #text conversion errors
+kTextMalformedInputErr =       -8739   #in DBCS, for example, high byte followed by invalid low byte
+kTextUnsupportedEncodingErr    =       -8738   #specified encoding not supported for this operation
+dcmBufferOverflowErr   =       -7127   #data is larger than buffer size
+dcmIterationCompleteErr        =       -7126   #no more item in iterator
+dcmBadFeatureErr       =       -7124   #invalid AccessMethod feature
+dcmNoAccessMethodErr   =       -7122   #no such AccessMethod
+dcmProtectedErr        =       -7121   #need keyword to use dictionary
+dcmBadPropertyErr      =       -7119   #no such property exist
+dcmBadFindMethodErr    =       -7118   #no such find method supported
+dcmBadDataSizeErr      =       -7117   #too big data size
+dcmTooManyKeyErr       =       -7116   #too many key field
+dcmBadKeyErr   =       -7115   #bad key information
+dcmNoFieldErr  =       -7113   #no such field exist
+dcmBadFieldTypeErr     =       -7112   #no such field type supported
+dcmBadFieldInfoErr     =       -7111   #incomplete information
+dcmNecessaryFieldErr   =       -7110   #lack required/identify field
+dcmDupRecordErr        =       -7109   #same record already exist
+dcmNoRecordErr =       -7108   #no such record
+dcmBlockFullErr        =       -7107   #dictionary block full
+dcmDictionaryBusyErr   =       -7105   #dictionary is busy
+dcmDictionaryNotOpenErr        =       -7104   #dictionary not opened
+dcmPermissionErr       =       -7103   #invalid permission
+dcmBadDictionaryErr    =       -7102   #invalid dictionary
+dcmNotDictionaryErr    =       -7101   #not dictionary
+dcmParamErr    =       -7100   #bad parameter
+laEngineNotFoundErr    =       -7000   #can't find the engine
+laPropertyErr  =       -6999   #Error in properties
+kUSBUnknownDeviceErr   =       -6998   #device ref not recognised
+laPropertyIsReadOnlyErr        =       -6997   #the property is read only
+laPropertyUnknownErr   =       -6996   #the property is unknown to this environment
+laPropertyValueErr     =       -6995   #Invalid property value
+laDictionaryTooManyErr =       -6994   #too many dictionaries
+laDictionaryUnknownErr =       -6993   #can't use this dictionary with this environment
+laDictionaryNotOpenedErr       =       -6992   #the dictionary is not opened
+laTextOverFlowErr      =       -6991   #text is too long
+laFailAnalysisErr      =       -6990   #analysis failed
+laNoMoreMorphemeErr    =       -6989   #nothing to read
+laInvalidPathErr       =       -6988   #path is not correct
+kUSBNotHandled =       -6987   #Notification was not handled   (same as NotFound)
+laEnvironmentNotFoundErr       =       -6986   #can't fint the specified environment
+laEnvironmentBusyErr   =       -6985   #specified environment is used
+laTooSmallBufferErr    =       -6984   #output buffer is too small to store any result
+kUSBFlagsError =       -6983   #Unused flags not zeroed
+kUSBAbortedError       =       -6982   #Pipe aborted
+kUSBNoBandwidthError   =       -6981   #Not enough bandwidth available
+kUSBPipeIdleError      =       -6980   #Pipe is Idle, it will not accept transactions
+kUSBPipeStalledError   =       -6979   #Pipe has stalled, error needs to be cleared
+kUSBUnknownInterfaceErr        =       -6978   #Interface ref not recognised
+kUSBDeviceBusy =       -6977   #Device is already being configured
+kUSBDevicePowerProblem =       -6976   #Device has a power problem
+kUSBInvalidBuffer      =       -6975   #bad buffer, usually nil
+kUSBDeviceSuspended    =       -6974   #Device is suspended
+kUSBDeviceNotSuspended =       -6973   #device is not suspended for resume
+kUSBDeviceDisconnected =       -6972   #Disconnected during suspend or reset
+kUSBTimedOut   =       -6971   #Transaction timed out.
+kUSBQueueAborted       =       -6970   #Pipe zero stall cleared.
+kUSBPortDisabled       =       -6969   #The port you are attached to is disabled, use USBDeviceReset.
+kUSBBadDispatchTable   =       -6950   #Improper driver dispatch table
+kUSBUnknownNotification        =       -6949   #Notification type not defined
+kUSBQueueFull  =       -6948   #Internal queue maxxed
+kUSBLinkErr    =       -6916   #kUSBLinkErr
+kUSBCRCErr     =       -6915   #Pipe stall, bad CRC
+kUSBBitstufErr =       -6914   #Pipe stall, bitstuffing
+kUSBDataToggleErr      =       -6913   #Pipe stall, Bad data toggle
+kUSBEndpointStallErr   =       -6912   #Device didn't understand
+kUSBNotRespondingErr   =       -6911   #Pipe stall, No device, device hung
+kUSBPIDCheckErr        =       -6910   #Pipe stall, PID CRC error
+kUSBWrongPIDErr        =       -6909   #Pipe stall, Bad or wrong PID
+kUSBOverRunErr =       -6908   #Packet too large or more data than buffer
+kUSBUnderRunErr        =       -6907   #Less data than buffer
+kUSBRes1Err    =       -6906   #kUSBRes1Err
+kUSBRes2Err    =       -6905   #kUSBRes2Err
+kUSBBufOvrRunErr       =       -6904   #Host hardware failure on data in, PCI busy?
+kUSBBufUnderRunErr     =       -6903   #Host hardware failure on data out, PCI busy?
+kUSBNotSent1Err        =       -6902   #Transaction not sent
+kUSBNotSent2Err        =       -6901   #Transaction not sent
+kDMFoundErr    =       -6232   #Did not proceed because we found an item
+kDMMainDisplayCannotMoveErr    =       -6231   #Trying to move main display (or a display mirrored to it)
+kDMDisplayAlreadyInstalledErr  =       -6230   #Attempt to add an already installed display.
+kDMDisplayNotFoundErr  =       -6229   #Could not find item (will someday remove).
+kDMDriverNotDisplayMgrAwareErr =       -6228   #Video Driver does not support display manager.
+kDMSWNotInitializedErr =       -6227   #Required software not initialized (eg windowmanager or display mgr).
+kSysSWTooOld   =       -6226   #Missing critical pieces of System Software.
+kDMMirroringNotOn      =       -6225   #Returned by all calls that need mirroring to be on to do their thing.
+kDMCantBlock   =       -6224   #Mirroring is already on, canÕt Block now (call DMUnMirror() first).
+kDMMirroringBlocked    =       -6223   #DMBlockMirroring() has been called.
+kDMWrongNumberOfDisplays       =       -6222   #Can only handle 2 displays for now.
+kDMMirroringOnAlready  =       -6221   #Returned by all calls that need mirroring to be off to do their thing.
+kDMGenErr      =       -6220   #Unexpected Error
+kQTSSUnknownErr        =       -6150   #kQTSSUnknownErr
+collectionVersionErr   =       -5753   #collectionVersionErr
+collectionIndexRangeErr        =       -5752   #collectionIndexRangeErr
+collectionItemNotFoundErr      =       -5751   #collectionItemNotFoundErr
+collectionItemLockedErr        =       -5750   #collectionItemLockedErr
+kNavMissingKindStringErr       =       -5699   #kNavMissingKindStringErr
+kNavInvalidCustomControlMessageErr     =       -5698   #kNavInvalidCustomControlMessageErr
+kNavCustomControlMessageFailedErr      =       -5697   #kNavCustomControlMessageFailedErr
+kNavInvalidSystemConfigErr     =       -5696   #kNavInvalidSystemConfigErr
+dialogNoTimeoutErr     =       -5640   #dialogNoTimeoutErr
+menuInvalidErr =       -5623   #menu is invalid
+menuItemNotFoundErr    =       -5622   #specified menu item wasn't found
+menuUsesSystemDefErr   =       -5621   #GetMenuDefinition failed because the menu uses the system MDEF
+menuNotFoundErr        =       -5620   #specified menu or menu ID wasn't found
+errWindowNotFound      =       -5610   #returned from FindWindowOfClass
+errFloatingWindowsNotInitialized       =       -5609   #called HideFloatingWindows or ShowFloatingWindows without calling InitFloatingWindows
+errWindowsAlreadyInitialized   =       -5608   #tried to call InitFloatingWindows twice, or called InitWindows and then floating windows
+errUserWantsToDragWindow       =       -5607   #if returned from TrackWindowProxyDrag, you should call DragWindow on the window
+errCorruptWindowDescription    =       -5606   #tried to load a corrupt window description (size or version fields incorrect)
+errUnrecognizedWindowClass     =       -5605   #tried to create a window with a bad WindowClass
+errWindowPropertyNotFound      =       -5604   #tried to get a nonexistent property
+errInvalidWindowProperty       =       -5603   #tried to access a property tag with private creator
+errWindowDoesNotHaveProxy      =       -5602   #tried to do something requiring a proxy to a window which doesnÕt have a proxy
+errUnsupportedWindowAttributesForClass =       -5601   #tried to create a window with WindowAttributes not supported by the WindowClass
+errInvalidWindowPtr    =       -5600   #tried to pass a bad WindowRef argument
+gestaltLocationErr     =       -5553   #gestalt function ptr wasn't in sysheap
+gestaltDupSelectorErr  =       -5552   #tried to add an entry that already existed
+gestaltUndefSelectorErr        =       -5551   #undefined selector was passed to Gestalt
+gestaltUnknownErr      =       -5550   #value returned if Gestalt doesn't know the answer
+envVersTooBig  =       -5502   #Version bigger than call can handle
+envBadVers     =       -5501   #Version non-positive
+envNotPresent  =       -5500   #returned by glue.
+qtsAddressBusyErr      =       -5421   #qtsAddressBusyErr
+qtsConnectionFailedErr =       -5420   #qtsConnectionFailedErr
+qtsTimeoutErr  =       -5408   #qtsTimeoutErr
+qtsUnknownValueErr     =       -5407   #qtsUnknownValueErr
+qtsTooMuchDataErr      =       -5406   #qtsTooMuchDataErr
+qtsUnsupportedFeatureErr       =       -5405   #qtsUnsupportedFeatureErr
+qtsUnsupportedRateErr  =       -5404   #qtsUnsupportedRateErr
+qtsUnsupportedDataTypeErr      =       -5403   #qtsUnsupportedDataTypeErr
+qtsBadDataErr  =       -5402   #something is wrong with the data
+qtsBadStateErr =       -5401   #qtsBadStateErr
+qtsBadSelectorErr      =       -5400   #qtsBadSelectorErr
+errIAEndOfTextRun      =       -5388   #errIAEndOfTextRun
+errIATextExtractionErr =       -5387   #errIATextExtractionErr
+errIAInvalidDocument   =       -5386   #errIAInvalidDocument
+errIACanceled  =       -5385   #errIACanceled
+errIABufferTooSmall    =       -5384   #errIABufferTooSmall
+errIANoMoreItems       =       -5383   #errIANoMoreItems
+errIAParamErr  =       -5382   #errIAParamErr
+errIAAllocationErr     =       -5381   #errIAAllocationErr
+errIAUnknownErr        =       -5380   #errIAUnknownErr
+hrUnableToResizeHandleErr      =       -5362   #hrUnableToResizeHandleErr
+hrMiscellaneousExceptionErr    =       -5361   #hrMiscellaneousExceptionErr
+hrHTMLRenderingLibNotInstalledErr      =       -5360   #hrHTMLRenderingLibNotInstalledErr
+errCannotUndo  =       -5253   #errCannotUndo
+errNonContiuousAttribute       =       -5252   #errNonContiuousAttribute
+errUnknownElement      =       -5251   #errUnknownElement
+errReadOnlyText        =       -5250   #errReadOnlyText
+errEmptyScrap  =       -5249   #errEmptyScrap
+errNoHiliteText        =       -5248   #errNoHiliteText
+errOffsetNotOnElementBounday   =       -5247   #errOffsetNotOnElementBounday
+errInvalidRange        =       -5246   #errInvalidRange
+errIteratorReachedEnd  =       -5245   #errIteratorReachedEnd
+errEngineNotFound      =       -5244   #errEngineNotFound
+errAlreadyInImagingMode        =       -5243   #errAlreadyInImagingMode
+errNotInImagingMode    =       -5242   #errNotInImagingMode
+errMarginWilllNotFit   =       -5241   #errMarginWilllNotFit
+errUnknownAttributeTag =       -5240   #errUnknownAttributeTag
+afpSameNodeErr =       -5063   #An Attempt was made to connect to a file server running on the same machine
+afpAlreadyMounted      =       -5062   #The volume is already mounted
+afpCantMountMoreSrvre  =       -5061   #The Maximum number of server connections has been reached
+afpBadDirIDType        =       -5060   #afpBadDirIDType
+afpCallNotAllowed      =       -5048   #The server knows what you wanted to do, but won't let you do it just now
+afpAlreadyLoggedInErr  =       -5047   #User has been authenticated but is already logged in from another machine (and that's not allowed on this server)
+afpPwdPolicyErr        =       -5046   #Password does not conform to servers password policy
+afpPwdNeedsChangeErr   =       -5045   #The password needs to be changed
+afpInsideTrashErr      =       -5044   #The folder being shared is inside the trash folder OR the shared folder is being moved into the trash folder
+afpInsideSharedErr     =       -5043   #The folder being shared is inside a shared folder OR the folder contains a shared folder and is being moved into a shared folder
+afpPwdExpiredErr       =       -5042   #The password being used is too old: this requires the user to change the password before log-in can continue
+afpPwdTooShortErr      =       -5041   #The password being set is too short: there is a minimum length that must be met or exceeded
+afpPwdSameErr  =       -5040   #Someone tried to change their password to the same password on a mantadory password change
+afpBadIDErr    =       -5039   #afpBadIDErr
+afpSameObjectErr       =       -5038   #afpSameObjectErr
+afpCatalogChanged      =       -5037   #afpCatalogChanged
+afpDiffVolErr  =       -5036   #afpDiffVolErr
+afpIDExists    =       -5035   #afpIDExists
+afpIDNotFound  =       -5034   #afpIDNotFound
+afpContainsSharedErr   =       -5033   #the folder being shared contains a shared folder
+afpObjectLocked        =       -5032   #Object is M/R/D/W inhibited
+afpVolLocked   =       -5031   #Volume is Read-Only
+afpIconTypeError       =       -5030   #Icon size specified different from existing icon size
+afpDirNotFound =       -5029   #Unknown directory specified
+afpCantRename  =       -5028   #AFPRename cannot rename volume
+afpServerGoingDown     =       -5027   #Server is shutting down
+afpTooManyFilesOpen    =       -5026   #Maximum open file count reached
+afpObjectTypeErr       =       -5025   #File/Directory specified where Directory/File expected
+afpCallNotSupported    =       -5024   #Unsupported AFP call was made
+afpUserNotAuth =       -5023   #No AFPLogin call has successfully been made for this session
+afpSessClosed  =       -5022   #Session closed
+afpRangeOverlap        =       -5021   #Some or all of range already locked by same user
+afpRangeNotLocked      =       -5020   #Tried to unlock range that was not locked by user
+afpParmErr     =       -5019   #A specified parameter was out of allowable range
+afpObjectNotFound      =       -5018   #Specified file or directory does not exist
+afpObjectExists        =       -5017   #Specified destination file or directory already exists
+afpNoServer    =       -5016   #Server not responding
+afpNoMoreLocks =       -5015   #Maximum lock limit reached
+afpMiscErr     =       -5014   #Unexpected error encountered during execution
+afpLockErr     =       -5013   #Some or all of requested range is locked by another user
+afpItemNotFound        =       -5012   #Unknown UserName/UserID or missing comment/APPL entry
+afpFlatVol     =       -5011   #Cannot create directory on specified volume
+afpFileBusy    =       -5010   #Cannot delete an open file
+afpEofError    =       -5009   #Read beyond logical end-of-file
+afpDiskFull    =       -5008   #Insufficient free space on volume for operation
+afpDirNotEmpty =       -5007   #Cannot delete non-empty directory
+afpDenyConflict        =       -5006   #Specified open/deny modes conflict with current open modes
+afpCantMove    =       -5005   #Move destination is offspring of source, or root was specified
+afpBitmapErr   =       -5004   #Bitmap contained bits undefined for call
+afpBadVersNum  =       -5003   #Unknown AFP protocol version number specified
+afpBadUAM      =       -5002   #Unknown user authentication method specified
+afpAuthContinue        =       -5001   #Further information required to complete AFPLogin call
+afpAccessDenied        =       -5000   #Insufficient access privileges for operation
+illegalScrapFlavorSizeErr      =       -4999   #illegalScrapFlavorSizeErr
+illegalScrapFlavorTypeErr      =       -4998   #illegalScrapFlavorTypeErr
+illegalScrapFlavorFlagsErr     =       -4997   #illegalScrapFlavorFlagsErr
+scrapFlavorSizeMismatchErr     =       -4996   #scrapFlavorSizeMismatchErr
+scrapFlavorFlagsMismatchErr    =       -4995   #scrapFlavorFlagsMismatchErr
+nilScrapFlavorDataErr  =       -4994   #nilScrapFlavorDataErr
+noScrapPromiseKeeperErr        =       -4993   #noScrapPromiseKeeperErr
+scrapPromiseNotKeptErr =       -4992   #scrapPromiseNotKeptErr
+processStateIncorrectErr       =       -4991   #processStateIncorrectErr
+badScrapRefErr =       -4990   #badScrapRefErr
+duplicateScrapFlavorErr        =       -4989   #duplicateScrapFlavorErr
+internalScrapErr       =       -4988   #internalScrapErr
+coreFoundationUnknownErr       =       -4960   #coreFoundationUnknownErr
+badRoutingSizeErr      =       -4276   #badRoutingSizeErr
+routingNotFoundErr     =       -4275   #routingNotFoundErr
+duplicateRoutingErr    =       -4274   #duplicateRoutingErr
+invalidFolderTypeErr   =       -4273   #invalidFolderTypeErr
+noMoreFolderDescErr    =       -4272   #noMoreFolderDescErr
+duplicateFolderDescErr =       -4271   #duplicateFolderDescErr
+badFolderDescErr       =       -4270   #badFolderDescErr
+cmCantGamutCheckError  =       -4217   #Gammut checking not supported by this ColorWorld
+cmNamedColorNotFound   =       -4216   #NamedColor not found
+cmCantCopyModifiedV1Profile    =       -4215   #Illegal to copy version 1 profiles that have been modified
+cmRangeOverFlow        =       -4214   #Color conversion warning that some output color values over/underflowed and were clipped
+cmInvalidProfileComment        =       -4213   #Bad Profile comment during drawpicture
+cmNoGDevicesError      =       -4212   #Begin/End Matching -- no gdevices available
+cmInvalidDstMap        =       -4211   #Destination pix/bit map was invalid
+cmInvalidSrcMap        =       -4210   #Source pix/bit map was invalid
+cmInvalidColorSpace    =       -4209   #Profile colorspace does not match bitmap type
+cmErrIncompatibleProfile       =       -4208   #Other ColorSync Errors
+cmSearchError  =       -4207   #cmSearchError
+cmInvalidSearch        =       -4206   #Bad Search Handle
+cmInvalidProfileLocation       =       -4205   #Operation not supported for this profile location
+cmInvalidProfile       =       -4204   #A Profile must contain a 'cs1 ' tag to be valid
+cmFatalProfileErr      =       -4203   #cmFatalProfileErr
+cmCantDeleteElement    =       -4202   #cmCantDeleteElement
+cmIndexRangeErr        =       -4201   #Tag index out of range
+kNSLInitializationFailed       =       -4200   #UNABLE TO INITIALIZE THE MANAGER!!!!! DO NOT CONTINUE!!!!
+kNSLNotInitialized     =       -4199   #kNSLNotInitialized
+kNSLInsufficientSysVer =       -4198   #kNSLInsufficientSysVer
+kNSLInsufficientOTVer  =       -4197   #kNSLInsufficientOTVer
+kNSLNoElementsInList   =       -4196   #kNSLNoElementsInList
+kNSLBadReferenceErr    =       -4195   #kNSLBadReferenceErr
+kNSLBadServiceTypeErr  =       -4194   #kNSLBadServiceTypeErr
+kNSLBadDataTypeErr     =       -4193   #kNSLBadDataTypeErr
+kNSLBadNetConnection   =       -4192   #kNSLBadNetConnection
+kNSLNoSupportForService        =       -4191   #kNSLNoSupportForService
+kNSLInvalidPluginSpec  =       -4190   #kNSLInvalidPluginSpec
+kNSLRequestBufferAlreadyInList =       -4189   #kNSLRequestBufferAlreadyInList
+kNSLNoContextAvailable =       -4188   #(ContinueLookup function ptr invalid)
+kNSLBufferTooSmallForData      =       -4187   #(Client buffer too small for data from plugin)
+kNSLCannotContinueLookup       =       -4186   #(Can't continue lookup; error or bad state)
+kNSLBadClientInfoPtr   =       -4185   #(nil ClientAsyncInfoPtr; no reference available)
+kNSLNullListPtr        =       -4184   #(client is trying to add items to a nil list)
+kNSLBadProtocolTypeErr =       -4183   #(client is trying to add a null protocol type)
+kNSLPluginLoadFailed   =       -4182   #(manager unable to load one of the plugins)
+kNSLNoPluginsFound     =       -4181   #(manager didn't find any valid plugins to load)
+kNSLSearchAlreadyInProgress    =       -4180   #(you can only have one ongoing search per clientRef)
+kNSLNoPluginsForSearch =       -4179   #(no plugins will respond to search request; bad protocol(s)?)
+kNSLNullNeighborhoodPtr        =       -4178   #(client passed a null neighborhood ptr)
+kNSLSomePluginsFailedToLoad    =       -4177   #(one or more plugins failed to load, but at least one did load; this error isn't fatal)
+kNSLErrNullPtrError    =       -4176   #kNSLErrNullPtrError
+kNSLNotImplementedYet  =       -4175   #kNSLNotImplementedYet
+kNSLUILibraryNotAvailable      =       -4174   #The NSL UI Library needs to be in the Extensions Folder
+kNSLNoCarbonLib        =       -4173   #kNSLNoCarbonLib
+kNSLBadURLSyntax       =       -4172   #URL contains illegal characters
+kNSLSchedulerError     =       -4171   #A custom thread routine encountered an error
+kNSL68kContextNotSupported     =       -4170   #no 68k allowed
+noHelpForItem  =       -4009   #noHelpForItem
+badProfileError        =       -4008   #badProfileError
+colorSyncNotInstalled  =       -4007   #colorSyncNotInstalled
+pickerCantLive =       -4006   #pickerCantLive
+cantLoadPackage        =       -4005   #cantLoadPackage
+cantCreatePickerWindow =       -4004   #cantCreatePickerWindow
+cantLoadPicker =       -4003   #cantLoadPicker
+pickerResourceError    =       -4002   #pickerResourceError
+requiredFlagsDontMatch =       -4001   #requiredFlagsDontMatch
+firstPickerError       =       -4000   #firstPickerError
+kOTPortLostConnection  =       -3285   #
+kOTUserRequestedErr    =       -3284   #
+kOTConfigurationChangedErr     =       -3283   #
+kOTBadConfigurationErr =       -3282   #
+kOTPortWasEjectedErr   =       -3281   #
+kOTPortHasDiedErr      =       -3280   #
+kOTClientNotInittedErr =       -3279   #
+kENOMSGErr     =       -3278   #
+kESRCHErr      =       -3277   #
+kEINPROGRESSErr        =       -3276   #
+kENODATAErr    =       -3275   #
+kENOSTRErr     =       -3274   #
+kECANCELErr    =       -3273   #
+kEBADMSGErr    =       -3272   #
+kENOSRErr      =       -3271   #
+kETIMEErr      =       -3270   #
+kEPROTOErr     =       -3269   #\82\82\82 fill out missing codes \82\82\82
+kEHOSTUNREACHErr       =       -3264   #No route to host
+kEHOSTDOWNErr  =       -3263   #Host is down
+kECONNREFUSEDErr       =       -3260   #Connection refused
+kETIMEDOUTErr  =       -3259   #Connection timed out
+kETOOMANYREFSErr       =       -3258   #Too many references: can't splice
+kESHUTDOWNErr  =       -3257   #Can't send after socket shutdown
+kENOTCONNErr   =       -3256   #Socket is not connected
+kEISCONNErr    =       -3255   #Socket is already connected
+kENOBUFSErr    =       -3254   #No buffer space available
+kECONNRESETErr =       -3253   #Connection reset by peer
+kECONNABORTEDErr       =       -3252   #Software caused connection abort
+kENETRESETErr  =       -3251   #Network dropped connection on reset
+kENETUNREACHErr        =       -3250   #Network is unreachable
+kENETDOWNErr   =       -3249   #Network is down
+kEADDRNOTAVAILErr      =       -3248   #Can't assign requested address
+kEADDRINUSEErr =       -3247   #Address already in use
+kEOPNOTSUPPErr =       -3244   #Operation not supported on socket
+kESOCKTNOSUPPORTErr    =       -3243   #Socket type not supported
+kEPROTONOSUPPORTErr    =       -3242   #Protocol not supported
+kENOPROTOOPTErr        =       -3241   #Protocol not available
+kEPROTOTYPEErr =       -3240   #Protocol wrong type for socket
+kEMSGSIZEErr   =       -3239   #Message too long
+kEDESTADDRREQErr       =       -3238   #Destination address required
+kENOTSOCKErr   =       -3237   #Socket operation on non-socket
+kEALREADYErr   =       -3236   #
+kEWOULDBLOCKErr        =       -3234   #Call would block, so was aborted
+kERANGEErr     =       -3233   #Message size too large for STREAM
+kEPIPEErr      =       -3231   #Broken pipe
+kENOTTYErr     =       -3224   #Not a character device
+kEINVALErr     =       -3221   #Invalid argument
+kENODEVErr     =       -3218   #No such device
+kOTDuplicateFoundErr   =       -3216   #OT generic duplicate found error
+kEBUSYErr      =       -3215   #Device or resource busy
+kEFAULTErr     =       -3213   #Bad address
+kEACCESErr     =       -3212   #Permission denied
+kOTOutOfMemoryErr      =       -3211   #OT ran out of memory, may be a temporary
+kEAGAINErr     =       -3210   #Try operation again later
+kEBADFErr      =       -3208   #Bad file number
+kENXIOErr      =       -3205   #No such device or address
+kEIOErr        =       -3204   #I/O error
+kEINTRErr      =       -3203   #Interrupted system service
+kENORSRCErr    =       -3202   #No such resource
+kOTNotFoundErr =       -3201   #OT generic not found error
+kEPERMErr      =       -3200   #Permission denied
+kOTCanceledErr =       -3180   #XTI2OSStatus(TCANCELED) The command was cancelled
+kOTBadSyncErr  =       -3179   #XTI2OSStatus(TBADSYNC) A synchronous call at interrupt time
+kOTProtocolErr =       -3178   #XTI2OSStatus(TPROTO) An unspecified provider error occurred
+kOTQFullErr    =       -3177   #XTI2OSStatus(TQFULL)
+kOTResAddressErr       =       -3176   #XTI2OSStatus(TRESADDR)
+kOTResQLenErr  =       -3175   #XTI2OSStatus(TRESQLEN)
+kOTProviderMismatchErr =       -3174   #XTI2OSStatus(TPROVMISMATCH) Tried to accept on incompatible endpoint
+kOTIndOutErr   =       -3173   #XTI2OSStatus(TINDOUT) Accept failed because of pending listen
+kOTAddressBusyErr      =       -3172   #XTI2OSStatus(TADDRBUSY) Address requested is already in use
+kOTBadQLenErr  =       -3171   #XTI2OSStatus(TBADQLEN) A Bind to an in-use addr with qlen > 0
+kOTBadNameErr  =       -3170   #XTI2OSStatus(TBADNAME) A bad endpoint name was supplied
+kOTNoStructureTypeErr  =       -3169   #XTI2OSStatus(TNOSTRUCTYPE) Bad structure type requested for OTAlloc
+kOTStateChangeErr      =       -3168   #XTI2OSStatus(TSTATECHNG) State is changing - try again later
+kOTNotSupportedErr     =       -3167   #XTI2OSStatus(TNOTSUPPORT) Command is not supported
+kOTNoReleaseErr        =       -3166   #XTI2OSStatus(TNOREL) No orderly release indication available
+kOTBadFlagErr  =       -3165   #XTI2OSStatus(TBADFLAG) A Bad flag value was supplied
+kOTNoUDErrErr  =       -3164   #XTI2OSStatus(TNOUDERR) No Unit Data Error indication available
+kOTNoDisconnectErr     =       -3163   #XTI2OSStatus(TNODIS) No disconnect indication available
+kOTNoDataErr   =       -3162   #XTI2OSStatus(TNODATA) No data available for reading
+kOTFlowErr     =       -3161   #XTI2OSStatus(TFLOW) Provider is flow-controlled
+kOTBufferOverflowErr   =       -3160   #XTI2OSStatus(TBUFOVFLW) Passed buffer not big enough
+kOTBadDataErr  =       -3159   #XTI2OSStatus(TBADDATA) An illegal amount of data was specified
+kOTLookErr     =       -3158   #XTI2OSStatus(TLOOK) An event occurred - call Look()
+kOTSysErrorErr =       -3157   #XTI2OSStatus(TSYSERR) A system error occurred
+kOTBadSequenceErr      =       -3156   #XTI2OSStatus(TBADSEQ) Sequence specified does not exist
+kOTOutStateErr =       -3155   #XTI2OSStatus(TOUTSTATE) Call issued in wrong state
+kOTNoAddressErr        =       -3154   #XTI2OSStatus(TNOADDR) No address was specified
+kOTBadReferenceErr     =       -3153   #XTI2OSStatus(TBADF) Bad provider reference
+kOTAccessErr   =       -3152   #XTI2OSStatus(TACCES) Missing access permission
+kOTBadOptionErr        =       -3151   #XTI2OSStatus(TBADOPT) A Bad option was specified
+kOTBadAddressErr       =       -3150   #XTI2OSStatus(TBADADDR) A Bad address was specified
+sktClosedErr   =       -3109   #sktClosedErr
+recNotFnd      =       -3108   #recNotFnd
+atpBadRsp      =       -3107   #atpBadRsp
+atpLenErr      =       -3106   #atpLenErr
+readQErr       =       -3105   #readQErr
+extractErr     =       -3104   #extractErr
+ckSumErr       =       -3103   #ckSumErr
+noMPPErr       =       -3102   #noMPPErr
+buf2SmallErr   =       -3101   #buf2SmallErr
+noPrefAppErr   =       -3032   #noPrefAppErr
+badTranslationSpecErr  =       -3031   #badTranslationSpecErr
+noTranslationPathErr   =       -3030   #noTranslationPathErr
+couldNotParseSourceFileErr     =       -3026   #Source document does not contain source type
+invalidTranslationPathErr      =       -3025   #Source type to destination type not a valid path
+unresolvedComponentDLLErr      =       -3004   #unresolvedComponentDLLErr
+componentDontRegister  =       -3003   #componentDontRegister
+componentNotCaptured   =       -3002   #componentNotCaptured
+validInstancesExist    =       -3001   #validInstancesExist
+invalidComponentID     =       -3000   #invalidComponentID
+cfragLastErrCode       =       -2899   #The last value in the range of CFM errors.
+cfragOutputLengthErr   =       -2831   #An output parameter is too small to hold the value.
+cfragAbortClosureErr   =       -2830   #Used by notification handlers to abort a closure.
+cfragClosureIDErr      =       -2829   #The closure ID was not valid.
+cfragContainerIDErr    =       -2828   #The fragment container ID was not valid.
+cfragNoRegistrationErr =       -2827   #The registration name was not found.
+cfragNotClosureErr     =       -2826   #The closure ID was actually a connection ID.
+cfragFileSizeErr       =       -2825   #A file was too large to be mapped.
+cfragFragmentUsageErr  =       -2824   #A semantic error in usage of the fragment.
+cfragArchitectureErr   =       -2823   #A fragment has an unacceptable architecture.
+cfragNoApplicationErr  =       -2822   #No application member found in the cfrg resource.
+cfragInitFunctionErr   =       -2821   #A fragment's initialization routine returned an error.
+cfragFragmentCorruptErr        =       -2820   #A fragment's container was corrupt (known format).
+cfragCFMInternalErr    =       -2819   #An internal inconstistancy has been detected.
+cfragCFMStartupErr     =       -2818   #Internal error during CFM initialization.
+cfragLibConnErr        =       -2817   #
+cfragInitAtBootErr     =       -2816   #A boot library has an initialization function.  (System 7 only)
+cfragInitLoopErr       =       -2815   #Circularity in required initialization order.
+cfragImportTooNewErr   =       -2814   #An import library was too new for a client.
+cfragImportTooOldErr   =       -2813   #An import library was too old for a client.
+cfragInitOrderErr      =       -2812   #
+cfragNoIDsErr  =       -2811   #No more CFM IDs for contexts, connections, etc.
+cfragNoClientMemErr    =       -2810   #Out of memory for fragment mapping or section instances.
+cfragNoPrivateMemErr   =       -2809   #Out of memory for internal bookkeeping.
+cfragNoPositionErr     =       -2808   #The registration insertion point was not found.
+cfragUnresolvedErr     =       -2807   #A fragment had "hard" unresolved imports.
+cfragFragmentFormatErr =       -2806   #A fragment's container format is unknown.
+cfragDupRegistrationErr        =       -2805   #The registration name was already in use.
+cfragNoLibraryErr      =       -2804   #The named library was not found.
+cfragNoSectionErr      =       -2803   #The specified section was not found.
+cfragNoSymbolErr       =       -2802   #The specified symbol was not found.
+cfragConnectionIDErr   =       -2801   #The connection ID was not valid.
+cfragFirstErrCode      =       -2800   #The first value in the range of CFM errors.
+errASInconsistentNames =       -2780   #English errors:
+errASNoResultReturned  =       -2763   #The range -2780 thru -2799 is reserved for dialect specific error codes. (Error codes from different dialects may overlap.)
+errASParameterNotForEvent      =       -2762   #errASParameterNotForEvent
+errASIllegalFormalParameter    =       -2761   #errASIllegalFormalParameter
+errASTerminologyNestingTooDeep =       -2760   #errASTerminologyNestingTooDeep
+OSAControlFlowError    =       -2755   #Signaled when illegal control flow occurs in an application (no catcher for throw, non-lexical loop exit, etc.)
+OSAInconsistentDeclarations    =       -2754   #Signaled when a variable is declared inconsistently in the same scope, such as both local and global
+OSAUndefinedVariable   =       -2753   #Signaled when a variable is accessed that has no value
+OSADuplicateHandler    =       -2752   #Signaled when more than one handler is defined with the same name in a scope where the language doesn't allow it
+OSADuplicateProperty   =       -2751   #Signaled when a formal parameter, local variable, or instance variable is specified more than once.
+OSADuplicateParameter  =       -2750   #Signaled when a formal parameter, local variable, or instance variable is specified more than once
+OSATokenTooLong        =       -2742   #Signaled when a name or number is too long to be parsed
+OSASyntaxTypeError     =       -2741   #Signaled when another form of syntax was expected. (e.g. "expected a <type> but found <this>")
+OSASyntaxError =       -2740   #Signaled when a syntax error occurs. (e.g. "Syntax error" or "<this> can't go after <that>")
+errASCantCompareMoreThan32k    =       -2721   #Parser/Compiler errors:
+errASCantConsiderAndIgnore     =       -2720   #errASCantConsiderAndIgnore
+errOSACantCreate       =       -2710   #errOSACantCreate
+errOSACantGetTerminology       =       -2709   #errOSACantGetTerminology
+errOSADataBlockTooLarge        =       -2708   #Signaled when an intrinsic limitation is exceeded for the size of a value or data structure.
+errOSAInternalTableOverflow    =       -2707   #Signaled when a runtime internal data structure overflows
+errOSAStackOverflow    =       -2706   #Signaled when the runtime stack overflows
+errOSACorruptTerminology       =       -2705   #Signaled when an application's terminology resource is not readable
+errOSAAppNotHighLevelEventAware        =       -2704   #Signaled when an application can't respond to AppleEvents
+errOSACantLaunch       =       -2703   #Signaled when application can't be launched or when it is remote and program linking is not enabled
+errOSANumericOverflow  =       -2702   #Signaled when integer or real value is too large to be represented
+errOSADivideByZero     =       -2701   #Signaled when there is an attempt to divide by zero
+errOSAGeneralError     =       -2700   #Signaled by user scripts or applications when no actual error code is to be returned.
+noIconDataAvailableErr =       -2582   #The necessary icon data is not available
+noSuchIconErr  =       -2581   #The requested icon could not be found
+invalidIconRefErr      =       -2580   #The icon ref is not valid
+nrCallNotSupported     =       -2557   #This call is not available or supported on this machine
+nrTransactionAborted   =       -2556   #transaction was aborted
+nrExitedIteratorScope  =       -2555   #outer scope of iterator was exited
+nrIterationDone        =       -2554   #iteration operation is done
+nrPropertyAlreadyExists        =       -2553   #property already exists
+nrInvalidEntryIterationOp      =       -2552   #invalid entry iteration operation
+nrPathBufferTooSmall   =       -2551   #buffer for path is too small
+nrPathNotFound =       -2550   #a path component lookup failed
+nrResultCodeBase       =       -2549   #nrResultCodeBase
+nrOverrunErr   =       -2548   #nrOverrunErr
+nrNotModifiedErr       =       -2547   #nrNotModifiedErr
+nrTypeMismatchErr      =       -2546   #nrTypeMismatchErr
+nrPowerSwitchAbortErr  =       -2545   #nrPowerSwitchAbortErr
+nrPowerErr     =       -2544   #nrPowerErr
+nrDataTruncatedErr     =       -2543   #nrDataTruncatedErr
+nrNotSlotDeviceErr     =       -2542   #nrNotSlotDeviceErr
+nrNameErr      =       -2541   #nrNameErr
+nrNotCreatedErr        =       -2540   #nrNotCreatedErr
+nrNotFoundErr  =       -2539   #nrNotFoundErr
+nrInvalidNodeErr       =       -2538   #nrInvalidNodeErr
+nrNotEnoughMemoryErr   =       -2537   #nrNotEnoughMemoryErr
+nrLockedErr    =       -2536   #nrLockedErr
+mmInternalError        =       -2526   #mmInternalError
+tsmDefaultIsNotInputMethodErr  =       -2524   #Current Input source is KCHR or uchr, not Input Method  (GetDefaultInputMethod)
+tsmNoStem      =       -2523   #No stem exists for the token
+tsmNoMoreTokens        =       -2522   #No more tokens are available for the source text
+tsmNoHandler   =       -2521   #No Callback Handler exists for callback
+tsmInvalidContext      =       -2520   #Invalid TSMContext specified in call
+tsmUnknownErr  =       -2519   #any other errors
+tsmUnsupportedTypeErr  =       -2518   #unSupported interface type error
+tsmScriptHasNoIMErr    =       -2517   #script has no imput method or is using old IM
+tsmInputMethodIsOldErr =       -2516   #returned by GetDefaultInputMethod
+tsmComponentAlreadyOpenErr     =       -2515   #text service already opened for the document
+tsmTSNotOpenErr        =       -2514   #text service is not open
+tsmTSHasNoMenuErr      =       -2513   #the text service has no menu
+tsmUseInputWindowErr   =       -2512   #not TSM aware because we are using input window
+tsmDocumentOpenErr     =       -2511   #there are open documents
+tsmTextServiceNotFoundErr      =       -2510   #no text service found
+tsmCantOpenComponentErr        =       -2509   #canÕt open the component
+tsmNoOpenTSErr =       -2508   #no open text service
+tsmDocNotActiveErr     =       -2507   #document is NOT active
+tsmTSMDocBusyErr       =       -2506   #document is still active
+tsmInvalidDocIDErr     =       -2505   #invalid TSM documentation id
+tsmNeverRegisteredErr  =       -2504   #app never registered error (not TSM aware)
+tsmAlreadyRegisteredErr        =       -2503   #want to register again error
+tsmNotAnAppErr =       -2502   #not an application error
+tsmInputMethodNotFoundErr      =       -2501   #tsmInputMethodNotFoundErr
+tsmUnsupScriptLanguageErr      =       -2500   #tsmUnsupScriptLanguageErr
+kernelUnrecoverableErr =       -2499   #kernelUnrecoverableErr
+kernelReturnValueErr   =       -2422   #kernelReturnValueErr
+kernelAlreadyFreeErr   =       -2421   #kernelAlreadyFreeErr
+kernelIDErr    =       -2419   #kernelIDErr
+kernelExceptionErr     =       -2418   #kernelExceptionErr
+kernelTerminatedErr    =       -2417   #kernelTerminatedErr
+kernelInUseErr =       -2416   #kernelInUseErr
+kernelTimeoutErr       =       -2415   #kernelTimeoutErr
+kernelAsyncReceiveLimitErr     =       -2414   #kernelAsyncReceiveLimitErr
+kernelAsyncSendLimitErr        =       -2413   #kernelAsyncSendLimitErr
+kernelAttributeErr     =       -2412   #kernelAttributeErr
+kernelExecutionLevelErr        =       -2411   #kernelExecutionLevelErr
+kernelDeletePermissionErr      =       -2410   #kernelDeletePermissionErr
+kernelExecutePermissionErr     =       -2409   #kernelExecutePermissionErr
+kernelReadPermissionErr        =       -2408   #kernelReadPermissionErr
+kernelWritePermissionErr       =       -2407   #kernelWritePermissionErr
+kernelObjectExistsErr  =       -2406   #kernelObjectExistsErr
+kernelUnsupportedErr   =       -2405   #kernelUnsupportedErr
+kernelPrivilegeErr     =       -2404   #kernelPrivilegeErr
+kernelOptionsErr       =       -2403   #kernelOptionsErr
+kernelCanceledErr      =       -2402   #kernelCanceledErr
+kernelIncompleteErr    =       -2401   #kernelIncompleteErr
+badCallOrderErr        =       -2209   #Usually due to a status call being called prior to being setup first
+noDMAErr       =       -2208   #CanÕt do DMA digitizing (i.e. can't go to requested dest
+badDepthErr    =       -2207   #CanÕt digitize into this depth
+notExactSizeErr        =       -2206   #CanÕt do exact size requested
+noMoreKeyColorsErr     =       -2205   #all key indexes in use
+notExactMatrixErr      =       -2204   #warning of bad matrix, digitizer did its best
+matrixErr      =       -2203   #bad matrix, digitizer did nothing
+qtParamErr     =       -2202   #bad input parameter (out of range, etc)
+digiUnimpErr   =       -2201   #feature unimplemented
+qtActionNotHandledErr  =       -2157   #qtActionNotHandledErr
+notEnoughDataErr       =       -2149   #notEnoughDataErr
+urlDataHFTPURLErr      =       -2148   #urlDataHFTPURLErr
+urlDataHFTPServerDisconnectedErr       =       -2147   #urlDataHFTPServerDisconnectedErr
+urlDataHFTPNoPasswordErr       =       -2146   #urlDataHFTPNoPasswordErr
+urlDataHFTPNeedPasswordErr     =       -2145   #urlDataHFTPNeedPasswordErr
+urlDataHFTPBadNameListErr      =       -2144   #urlDataHFTPBadNameListErr
+urlDataHFTPNoNetDriverErr      =       -2143   #urlDataHFTPNoNetDriverErr
+urlDataHFTPFilenameErr =       -2142   #urlDataHFTPFilenameErr
+urlDataHFTPPermissionsErr      =       -2141   #urlDataHFTPPermissionsErr
+urlDataHFTPQuotaErr    =       -2140   #urlDataHFTPQuotaErr
+urlDataHFTPNoDirectoryErr      =       -2139   #urlDataHFTPNoDirectoryErr
+urlDataHFTPDataConnectionErr   =       -2138   #urlDataHFTPDataConnectionErr
+urlDataHFTPServerErr   =       -2137   #urlDataHFTPServerErr
+urlDataHFTPBadPasswordErr      =       -2136   #urlDataHFTPBadPasswordErr
+urlDataHFTPBadUserErr  =       -2135   #urlDataHFTPBadUserErr
+urlDataHFTPShutdownErr =       -2134   #urlDataHFTPShutdownErr
+urlDataHFTPProtocolErr =       -2133   #urlDataHFTPProtocolErr
+urlDataHHTTPRedirectErr        =       -2132   #urlDataHHTTPRedirectErr
+urlDataHHTTPURLErr     =       -2131   #urlDataHHTTPURLErr
+urlDataHHTTPNoNetDriverErr     =       -2130   #urlDataHHTTPNoNetDriverErr
+urlDataHHTTPProtocolErr        =       -2129   #urlDataHHTTPProtocolErr
+qtNetworkAlreadyAllocatedErr   =       -2127   #qtNetworkAlreadyAllocatedErr
+notAllowedToSaveMovieErr       =       -2126   #notAllowedToSaveMovieErr
+fileOffsetTooBigErr    =       -2125   #fileOffsetTooBigErr
+ASDEntryNotFoundErr    =       -2124   #ASDEntryNotFoundErr
+ASDBadForkErr  =       -2123   #ASDBadForkErr
+ASDBadHeaderErr        =       -2122   #ASDBadHeaderErr
+AAPNotFoundErr =       -2121   #AAPNotFoundErr
+AAPNotCreatedErr       =       -2120   #AAPNotCreatedErr
+qfcbNotCreatedErr      =       -2119   #qfcbNotCreatedErr
+qfcbNotFoundErr        =       -2118   #qfcbNotFoundErr
+wackBadMetaDataErr     =       -2117   #wackBadMetaDataErr
+wackForkNotFoundErr    =       -2116   #wackForkNotFoundErr
+wackBadFileErr =       -2115   #wackBadFileErr
+unknownFormatErr       =       -2114   #unknownFormatErr
+pathNotVerifiedErr     =       -2113   #pathNotVerifiedErr
+noPathMappingErr       =       -2112   #noPathMappingErr
+emptyPathErr   =       -2111   #emptyPathErr
+pathTooLongErr =       -2110   #pathTooLongErr
+cannotBeLeafAtomErr    =       -2109   #cannotBeLeafAtomErr
+invalidAtomTypeErr     =       -2108   #invalidAtomTypeErr
+invalidAtomContainerErr        =       -2107   #invalidAtomContainerErr
+invalidAtomErr =       -2106   #invalidAtomErr
+duplicateAtomTypeAndIDErr      =       -2105   #duplicateAtomTypeAndIDErr
+atomIndexInvalidErr    =       -2104   #atomIndexInvalidErr
+atomsNotOfSameTypeErr  =       -2103   #atomsNotOfSameTypeErr
+notLeafAtomErr =       -2102   #notLeafAtomErr
+cannotFindAtomErr      =       -2101   #cannotFindAtomErr
+unsupportedProcessorErr        =       -2097   #unsupportedProcessorErr
+unsupportedOSErr       =       -2096   #unsupportedOSErr
+qtmlUninitialized      =       -2095   #qtmlUninitialized
+qtmlDllEntryNotFoundErr        =       -2094   #Windows specific errors (when qtml is loading)
+qtmlDllLoadErr =       -2093   #Windows specific errors (when qtml is loading)
+componentDllEntryNotFoundErr   =       -2092   #Windows specific errors (when component is loading)
+componentDllLoadErr    =       -2091   #Windows specific errors (when component is loading)
+videoOutputInUseErr    =       -2090   #videoOutputInUseErr
+noExportProcAvailableErr       =       -2089   #noExportProcAvailableErr
+tuneParseOSErr =       -2087   #tuneParseOSErr
+tunePlayerFullOSErr    =       -2086   #tunePlayerFullOSErr
+noteChannelNotAllocatedOSErr   =       -2085   #noteChannelNotAllocatedOSErr
+illegalNoteChannelOSErr        =       -2084   #illegalNoteChannelOSErr
+synthesizerOSErr       =       -2083   #synthesizerOSErr
+synthesizerNotRespondingOSErr  =       -2082   #synthesizerNotRespondingOSErr
+midiManagerAbsentOSErr =       -2081   #midiManagerAbsentOSErr
+illegalControllerOSErr =       -2080   #illegalControllerOSErr
+illegalInstrumentOSErr =       -2079   #illegalInstrumentOSErr
+illegalKnobValueOSErr  =       -2078   #illegalKnobValueOSErr
+illegalKnobOSErr       =       -2077   #illegalKnobOSErr
+illegalChannelOSErr    =       -2076   #illegalChannelOSErr
+illegalPartOSErr       =       -2075   #illegalPartOSErr
+illegalVoiceAllocationOSErr    =       -2074   #illegalVoiceAllocationOSErr
+cantReceiveFromSynthesizerOSErr        =       -2073   #cantReceiveFromSynthesizerOSErr
+cantSendToSynthesizerOSErr     =       -2072   #cantSendToSynthesizerOSErr
+notImplementedMusicOSErr       =       -2071   #notImplementedMusicOSErr
+internalComponentErr   =       -2070   #internalComponentErr
+invalidSpriteIDErr     =       -2069   #invalidSpriteIDErr
+invalidImageIndexErr   =       -2068   #invalidImageIndexErr
+invalidSpriteIndexErr  =       -2067   #invalidSpriteIndexErr
+gWorldsNotSameDepthAndSizeErr  =       -2066   #gWorldsNotSameDepthAndSizeErr
+invalidSpritePropertyErr       =       -2065   #invalidSpritePropertyErr
+invalidSpriteWorldPropertyErr  =       -2064   #invalidSpriteWorldPropertyErr
+missingRequiredParameterErr    =       -2063   #missingRequiredParameterErr
+movieTextNotFoundErr   =       -2062   #movieTextNotFoundErr
+sourceNotFoundErr      =       -2061   #sourceNotFoundErr
+noSourceTreeFoundErr   =       -2060   #noSourceTreeFoundErr
+samplesAlreadyInMediaErr       =       -2059   #samplesAlreadyInMediaErr
+auxiliaryExportDataUnavailable =       -2058   #auxiliaryExportDataUnavailable
+unsupportedAuxiliaryImportData =       -2057   #unsupportedAuxiliaryImportData
+soundSupportNotAvailableErr    =       -2056   #QT for Windows error
+noSoundTrackInMovieErr =       -2055   #QT for Windows error
+noVideoTrackInMovieErr =       -2054   #QT for Windows error
+featureUnsupported     =       -2053   #featureUnsupported
+couldNotUseAnExistingSample    =       -2052   #couldNotUseAnExistingSample
+noDefaultDataRef       =       -2051   #noDefaultDataRef
+badDataRefIndex        =       -2050   #badDataRefIndex
+invalidDataRefContainer        =       -2049   #invalidDataRefContainer
+noMovieFound   =       -2048   #noMovieFound
+dataNoDataRef  =       -2047   #dataNoDataRef
+endOfDataReached       =       -2046   #endOfDataReached
+dataAlreadyClosed      =       -2045   #dataAlreadyClosed
+dataAlreadyOpenForWrite        =       -2044   #dataAlreadyOpenForWrite
+dataNotOpenForWrite    =       -2043   #dataNotOpenForWrite
+dataNotOpenForRead     =       -2042   #dataNotOpenForRead
+invalidSampleDescription       =       -2041   #invalidSampleDescription
+invalidChunkCache      =       -2040   #invalidChunkCache
+invalidSampleDescIndex =       -2039   #invalidSampleDescIndex
+invalidChunkNum        =       -2038   #invalidChunkNum
+invalidSampleNum       =       -2037   #invalidSampleNum
+invalidRect    =       -2036   #invalidRect
+cantEnableTrack        =       -2035   #cantEnableTrack
+internalQuickTimeError =       -2034   #internalQuickTimeError
+badEditIndex   =       -2033   #badEditIndex
+timeNotInMedia =       -2032   #timeNotInMedia
+timeNotInTrack =       -2031   #timeNotInTrack
+trackNotInMovie        =       -2030   #trackNotInMovie
+trackIDNotFound        =       -2029   #trackIDNotFound
+badTrackIndex  =       -2028   #badTrackIndex
+maxSizeToGrowTooSmall  =       -2027   #maxSizeToGrowTooSmall
+userDataItemNotFound   =       -2026   #userDataItemNotFound
+staleEditState =       -2025   #staleEditState
+nonMatchingEditState   =       -2024   #nonMatchingEditState
+invalidEditState       =       -2023   #invalidEditState
+cantCreateSingleForkFile       =       -2022   #happens when file already exists
+wfFileNotFound =       -2021   #wfFileNotFound
+movieToolboxUninitialized      =       -2020   #movieToolboxUninitialized
+progressProcAborted    =       -2019   #progressProcAborted
+mediaTypesDontMatch    =       -2018   #mediaTypesDontMatch
+badEditList    =       -2017   #badEditList
+cantPutPublicMovieAtom =       -2016   #cantPutPublicMovieAtom
+invalidTime    =       -2015   #invalidTime
+invalidDuration        =       -2014   #invalidDuration
+invalidHandler =       -2013   #invalidHandler
+invalidDataRef =       -2012   #invalidDataRef
+invalidSampleTable     =       -2011   #invalidSampleTable
+invalidMovie   =       -2010   #invalidMovie
+invalidTrack   =       -2009   #invalidTrack
+invalidMedia   =       -2008   #invalidMedia
+noDataHandler  =       -2007   #noDataHandler
+noMediaHandler =       -2006   #noMediaHandler
+badComponentType       =       -2005   #badComponentType
+cantOpenHandler        =       -2004   #cantOpenHandler
+cantFindHandler        =       -2003   #cantFindHandler
+badPublicMovieAtom     =       -2002   #badPublicMovieAtom
+badImageDescription    =       -2001   #badImageDescription
+couldNotResolveDataRef =       -2000   #couldNotResolveDataRef
+badImageErr    =       -1861   #bad translucent image PixMap
+badImageRgnErr =       -1860   #bad translucent image region
+noSuitableDisplaysErr  =       -1859   #no displays support translucency
+unsupportedForPlatformErr      =       -1858   #call is for PowerPC only
+dragNotAcceptedErr     =       -1857   #drag was not accepted by receiver
+handlerNotFoundErr     =       -1856   #handler not found
+duplicateHandlerErr    =       -1855   #handler already exists
+cantGetFlavorErr       =       -1854   #error while trying to get flavor data
+duplicateFlavorErr     =       -1853   #flavor type already exists
+badDragFlavorErr       =       -1852   #unknown flavor type
+badDragItemErr =       -1851   #unknown drag item reference
+badDragRefErr  =       -1850   #unknown drag reference
+errEndOfBody   =       -1813   #errEndOfBody
+errEndOfDocument       =       -1812   #errEndOfDocument
+errTopOfBody   =       -1811   #errTopOfBody
+errTopOfDocument       =       -1810   #errTopOfDocument
+errOffsetIsOutsideOfView       =       -1801   #errOffsetIsOutsideOfView
+errOffsetInvalid       =       -1800   #errOffsetInvalid
+errOSACantOpenComponent        =       -1762   #Can't connect to scripting system with that ID
+errOSAComponentMismatch        =       -1761   #Parameters are from 2 different components
+errOSADataFormatTooNew =       -1759   #errOSADataFormatTooNew
+errOSADataFormatObsolete       =       -1758   #errOSADataFormatObsolete
+errOSANoSuchDialect    =       -1757   #errOSANoSuchDialect
+errOSASourceNotAvailable       =       -1756   #errOSASourceNotAvailable
+errOSABadSelector      =       -1754   #errOSABadSelector
+errOSAScriptError      =       -1753   #errOSAScriptError
+errOSABadStorageType   =       -1752   #errOSABadStorageType
+errOSAInvalidID        =       -1751   #errOSAInvalidID
+errOSASystemError      =       -1750   #errOSASystemError
+errAEDescIsNull        =       -1739   #attempting to perform an invalid operation on a null descriptor
+errAEStreamAlreadyConverted    =       -1738   #attempt to convert a stream that has already been converted
+errAEStreamBadNesting  =       -1737   #nesting violation while streaming
+errAEDuplicateHandler  =       -1736   #attempt to install handler in table for identical class and id (1.1 or greater)
+errAEEventFiltered     =       -1735   #event has been filtered, and should not be propogated (1.1 or greater)
+errAEReceiveEscapeCurrent      =       -1734   #break out of only lowest level of AEReceive (1.1 or greater)
+errAEReceiveTerminate  =       -1733   #break out of all levels of AEReceive to the topmost (1.1 or greater)
+errAERecordingIsAlreadyOn      =       -1732   #available only in version 1.0.1 or greater
+errAEUnknownObjectType =       -1731   #available only in version 1.0.1 or greater
+errAEEmptyListContainer        =       -1730   #Attempt to pass empty list as container to accessor
+errAENegativeCount     =       -1729   #CountProc returned negative value
+errAENoSuchObject      =       -1728   #e.g.,: specifier asked for the 3rd, but there are only 2. Basically, this indicates a run-time resolution error.
+errAENotAnObjSpec      =       -1727   #Param to AEResolve not of type 'obj '
+errAEBadTestKey        =       -1726   #Test is neither typeLogicalDescriptor nor typeCompDescriptor
+errAENoSuchLogical     =       -1725   #Something other than AND, OR, or NOT
+errAEAccessorNotFound  =       -1723   #Accessor proc matching wantClass and containerType or wildcards not found
+errAEWrongNumberArgs   =       -1721   #Logical op kAENOT used with other than 1 term
+errAEImpossibleRange   =       -1720   #A range like 3rd to 2nd, or 1st to all.
+errAEIllegalIndex      =       -1719   #index is out of range in a put operation
+errAEReplyNotArrived   =       -1718   #the contents of the reply you are accessing have not arrived yet
+errAEHandlerNotFound   =       -1717   #no handler in the dispatch tables fits the parameters to AEGetEventHandler or AEGetCoercionHandler
+errAEUnknownAddressType        =       -1716   #the target address type is not known
+errAEParamMissed       =       -1715   #a required parameter was not accessed
+errAENotASpecialFunction       =       -1714   #there is no special function for/with this keyword
+errAENoUserInteraction =       -1713   #no user interaction is allowed
+errAETimeout   =       -1712   #the AppleEvent timed out
+errAEWaitCanceled      =       -1711   #in AESend, the user cancelled out of wait loop for reply or receipt
+errAEUnknownSendMode   =       -1710   #mode wasn't NoReply, WaitReply, or QueueReply or Interaction level is unknown
+errAEReplyNotValid     =       -1709   #AEResetTimer was passed an invalid reply parameter
+errAEEventNotHandled   =       -1708   #the AppleEvent was not handled by any handler
+errAENotAppleEvent     =       -1707   #the event is not in AppleEvent format
+errAENewerVersion      =       -1706   #need newer version of the AppleEvent manager
+errAEBadListItem       =       -1705   #the specified list item does not exist
+errAENotAEDesc =       -1704   #errAENotAEDesc
+errAEWrongDataType     =       -1703   #errAEWrongDataType
+errAECorruptData       =       -1702   #errAECorruptData
+errAEDescNotFound      =       -1701   #errAEDescNotFound
+errAECoercionFail      =       -1700   #bad parameter data or unable to coerce the data supplied
+errFSIteratorNotSupported      =       -1424   #The iterator's flags or container are not supported by this call
+errFSIteratorNotFound  =       -1423   #Passed FSIterator is not an open iterator
+errFSBadIteratorFlags  =       -1422   #Flags passed to FSOpenIterator are bad
+errFSForkExists        =       -1421   #Named fork already exists.
+errFSRefsDifferent     =       -1420   #FSCompareFSRefs; refs are for different objects
+errFSBadSearchParams   =       -1419   #Something wrong with CatalogSearch searchParams
+errFSBadItemCount      =       -1418   #maximumItems was zero
+errFSNoMoreItems       =       -1417   #Iteration ran out of items to return
+errFSBadAllocFlags     =       -1413   #Invalid bits set in allocationFlags
+errFSBadPosMode        =       -1412   #Newline bits set in positionMode
+errFSMissingName       =       -1411   #A Unicode name parameter was NULL or nameLength parameter was zero
+errFSNameTooLong       =       -1410   #File/fork name is too long to create/rename
+errFSForkNotFound      =       -1409   #Named fork does not exist
+errFSNotAFolder        =       -1407   #Expected a folder, got a file
+errFSMissingCatInfo    =       -1406   #A CatalogInfo parameter was NULL
+errFSBadInfoBitmap     =       -1405   #A CatalogInfoBitmap or VolumeInfoBitmap has reserved or invalid bits set
+errFSBadForkRef        =       -1404   #A ForkRefNum parameter was bad
+errFSBadBuffer =       -1403   #A buffer parameter was bad
+errFSBadForkName       =       -1402   #Fork name parameter is bad
+errFSBadFSRef  =       -1401   #FSRef parameter is bad
+errFSUnknownCall       =       -1400   #selector is not recognized by this filesystem
+badFCBErr      =       -1327   #FCBRecPtr is not valid
+volVMBusyErr   =       -1311   #can't eject because volume is in use by VM
+fsDataTooBigErr        =       -1310   #file or volume is too big for system
+fileBoundsErr  =       -1309   #file's EOF, offset, mark or size is too big
+notARemountErr =       -1308   #when _Mount allows only remounts and doesn't get one
+badFidErr      =       -1307   #file id is dangling or doesn't match with the file number
+sameFileErr    =       -1306   #can't exchange a file with itself
+desktopDamagedErr      =       -1305   #desktop database files are corrupted
+catChangedErr  =       -1304   #the catalog has been modified
+diffVolErr     =       -1303   #files on different volumes
+notAFileErr    =       -1302   #directory specified
+fidExists      =       -1301   #file id already exists
+fidNotFound    =       -1300   #no file thread exists.
+errRefNum      =       -1280   #bad connection refNum
+errAborted     =       -1279   #control call was aborted
+errState       =       -1278   #bad connection state for this operation
+errOpening     =       -1277   #open connection request failed
+errAttention   =       -1276   #attention message too long
+errFwdReset    =       -1275   #read terminated by forward reset
+errDSPQueueSize        =       -1274   #DSP Read/Write Queue Too small
+errOpenDenied  =       -1273   #open connection request was denied
+reqAborted     =       -1105   #reqAborted
+noDataArea     =       -1104   #noDataArea
+noSendResp     =       -1103   #noSendResp
+cbNotFound     =       -1102   #cbNotFound
+noRelErr       =       -1101   #noRelErr
+badBuffNum     =       -1100   #badBuffNum
+badATPSkt      =       -1099   #badATPSkt
+tooManySkts    =       -1098   #tooManySkts
+tooManyReqs    =       -1097   #tooManyReqs
+reqFailed      =       -1096   #reqFailed
+aspNoAck       =       -1075   #No ack on attention request (server err)
+aspTooMany     =       -1074   #Too many clients (server error)
+aspSizeErr     =       -1073   #Command block too big
+aspSessClosed  =       -1072   #Session closed
+aspServerBusy  =       -1071   #Server cannot open another session
+aspParamErr    =       -1070   #Parameter error
+aspNoServers   =       -1069   #No servers at that address
+aspNoMoreSess  =       -1068   #No more sessions on server
+aspBufTooSmall =       -1067   #Buffer too small
+aspBadVersNum  =       -1066   #Server cannot support this ASP version
+nbpNISErr      =       -1029   #Error trying to open the NIS
+nbpNotFound    =       -1028   #Name not found on remove
+nbpDuplicate   =       -1027   #Duplicate name exists already
+nbpConfDiff    =       -1026   #Name confirmed at different socket
+nbpNoConfirm   =       -1025   #nbpNoConfirm
+nbpBuffOvr     =       -1024   #Buffer overflow in LookupName
+noMaskFoundErr =       -1000   #Icon Utilties Error
+kFMFontContainerAccessErr      =       -985    #kFMFontContainerAccessErr
+kFMFontTableAccessErr  =       -984    #kFMFontTableAccessErr
+kFMIterationScopeModifiedErr   =       -983    #kFMIterationScopeModifiedErr
+kFMInvalidFontErr      =       -982    #kFMInvalidFontErr
+kFMInvalidFontFamilyErr        =       -981    #kFMInvalidFontFamilyErr
+kFMIterationCompleted  =       -980    #kFMIterationCompleted
+guestNotAllowedErr     =       -932    #destination port requires authentication
+badLocNameErr  =       -931    #location name malformed
+badServiceMethodErr    =       -930    #illegal service type, or not supported
+noUserRecErr   =       -928    #Invalid user reference number
+authFailErr    =       -927    #unable to authenticate user at destination
+noInformErr    =       -926    #PPCStart failed because destination did not have inform pending
+networkErr     =       -925    #An error has occurred in the network, not too likely
+noUserRefErr   =       -924    #unable to create a new userRefNum
+notLoggedInErr =       -923    #The default userRefNum does not yet exist
+noDefaultUserErr       =       -922    #user hasn't typed in owners name in Network Setup Control Pannel
+badPortNameErr =       -919    #PPCPortRec malformed
+sessClosedErr  =       -917    #session was closed
+portClosedErr  =       -916    #port was closed
+noResponseErr  =       -915    #unable to contact destination
+noToolboxNameErr       =       -914    #A system resource is missing, not too likely
+noMachineNameErr       =       -913    #user hasn't named his Macintosh in the Network Setup Control Panel
+userRejectErr  =       -912    #Destination rejected the session request
+noUserNameErr  =       -911    #user name unknown on destination machine
+portNameExistsErr      =       -910    #port is already open (perhaps in another app)
+badReqErr      =       -909    #bad parameter or invalid state for operation
+noSessionErr   =       -908    #Invalid session reference number
+sessTableErr   =       -907    #Out of session tables, try again later
+destPortErr    =       -906    #Port does not exist at destination
+localOnlyErr   =       -905    #Network activity is currently disabled
+noGlobalsErr   =       -904    #The system is hosed, better re-boot
+noPortErr      =       -903    #Unable to open port or bad portRefNum.  If you're calling
+nameTypeErr    =       -902    #Invalid or inappropriate locationKindSelector in locationName
+notInitErr     =       -900    #PPCToolBox not initialized
+appVersionTooOld       =       -876    #The application's creator and version are incompatible with the current version of Mac OS.
+wrongApplicationPlatform       =       -875    #The application could not launch because the required platform is not available
+hmCloseViewActive      =       -863    #Returned from HMRemoveBalloon if CloseView was active
+hmNoBalloonUp  =       -862    #Returned from HMRemoveBalloon if no balloon was visible when call was made
+hmOperationUnsupported =       -861    #Returned from HMShowBalloon call if bad method passed to routine
+hmUnknownHelpType      =       -859    #Returned if help msg record contained a bad type
+hmWrongVersion =       -858    #Returned if help mgr resource was the wrong version
+hmSkippedBalloon       =       -857    #Returned from calls if helpmsg specified a skip balloon
+hmHelpManagerNotInited =       -855    #Returned from HMGetHelpMenuHandle if help menu not setup
+hmSameAsLastBalloon    =       -854    #Returned from HMShowMenuBalloon if menu & item is same as last time
+hmBalloonAborted       =       -853    #Returned if mouse was moving or mouse wasn't in window port rect
+hmHelpDisabled =       -850    #Show Balloons mode was off, call to routine ignored
+rcDBPackNotInited      =       -813    #attempt to call other routine before InitDBPack
+rcDBWrongVersion       =       -812    #incompatible versions
+rcDBNoHandler  =       -811    #no app handler for specified data type
+rcDBBadAsyncPB =       -810    #tried to kill a bad pb
+rcDBAsyncNotSupp       =       -809    #ddev does not support async calls
+rcDBBadDDEV    =       -808    #bad ddev specified on DBInit
+rcDBBadSessNum =       -807    #bad session number for DBGetConnInfo
+rcDBBadSessID  =       -806    #rcDBBadSessID
+rcDBExec       =       -805    #rcDBExec
+rcDBBreak      =       -804    #rcDBBreak
+rcDBBadType    =       -803    #rcDBBadType
+rcDBError      =       -802    #rcDBError
+rcDBValue      =       -801    #rcDBValue
+rcDBNull       =       -800    #rcDBNull
+noMMUErr       =       -626    #no MMU present
+cannotDeferErr =       -625    #unable to defer additional functions
+interruptsMaskedErr    =       -624    #donÕt call with interrupts masked
+notLockedErr   =       -623    #specified range of memory is not locked
+cannotMakeContiguousErr        =       -622    #cannot make specified range contiguous
+notHeldErr     =       -621    #specified range of memory is not held
+notEnoughMemoryErr     =       -620    #insufficient physical memory
+threadProtocolErr      =       -619    #threadProtocolErr
+threadNotFoundErr      =       -618    #threadNotFoundErr
+threadTooManyReqsErr   =       -617    #threadTooManyReqsErr
+noUserInteractionAllowed       =       -610    #no user interaction allowed
+connectionInvalid      =       -609    #connectionInvalid
+noOutstandingHLE       =       -608    #noOutstandingHLE
+bufferIsSmall  =       -607    #error returns from Post and Accept
+appIsDaemon    =       -606    #app is BG-only, and launch flags disallow this
+appMemFullErr  =       -605    #application SIZE not big enough for launch
+hardwareConfigErr      =       -604    #hardware configuration not correct for call
+protocolErr    =       -603    #app made module calls in improper order
+appModeErr     =       -602    #memory mode is 32-bit, but app not 32-bit clean
+memFragErr     =       -601    #not enough room to launch app w/special requirements
+procNotFound   =       -600    #no eligible process with specified descriptor
+driverHardwareGoneErr  =       -503    #disk driver's hardware was disconnected
+hwParamErr     =       -502    #bad selector for _HWPriv
+teScrapSizeErr =       -501    #scrap item too big for text edit record
+rgnTooBigErr   =       -500    #rgnTooBigErr
+exUserBreak    =       -492    #user debugger break; execute debugger commands on stack
+strUserBreak   =       -491    #user debugger break; display string on stack
+userBreak      =       -490    #user debugger break
+notThePublisherWrn     =       -463    #not the first registered publisher for that container
+containerAlreadyOpenWrn        =       -462    #container already opened by this section
+containerNotFoundWrn   =       -461    #could not find editionContainer at this time
+multiplePublisherWrn   =       -460    #A Publisher is already registered for that container
+badSubPartErr  =       -454    #can not use sub parts in this release
+badEditionFileErr      =       -453    #edition file is corrupt
+notRegisteredSectionErr        =       -452    #not a registered SectionRecord
+badSectionErr  =       -451    #not a valid SectionRecord
+editionMgrInitErr      =       -450    #edition manager not inited by this app
+fsmUnknownFSMMessageErr        =       -438    #unknown message passed to FSM
+fsmNoAlternateStackErr =       -437    #no alternate stack for HFS CI
+fsmBadFSDVersionErr    =       -436    #FSM version incompatible with FSD
+fsmDuplicateFSIDErr    =       -435    #FSID already exists on InstallFS
+fsmBadFSDLenErr        =       -434    #FSD size incompatible with current FSM vers
+fsmBadFFSNameErr       =       -433    #Name length not 1 <= length <= 31
+fsmBusyFFSErr  =       -432    #File system is busy, cannot be removed
+fsmFFSNotFoundErr      =       -431    #Foreign File system does not exist - new Pack2 could return this error too
+btKeyAttrErr   =       -417    #There is no such a key attribute.
+btKeyLenErr    =       -416    #Maximum key length is too long or equal to zero.
+btRecNotFnd    =       -415    #Record cannot be found.
+btDupRecErr    =       -414    #Record already exists.
+btNoSpace      =       -413    #Can't allocate disk space.
+notBTree       =       -410    #The file is not a dictionary.
+gcrOnMFMErr    =       -400    #gcr format on high density media error
+slotNumErr     =       -360    #invalid slot # error
+smRecNotFnd    =       -351    #Record not found in the SRT.
+smSRTOvrFlErr  =       -350    #SRT over flow.
+smNoGoodOpens  =       -349    #No opens were successfull in the loop.
+smOffsetErr    =       -348    #Offset was too big (temporary error
+smByteLanesErr =       -347    #NumByteLanes was determined to be zero.
+smBadsPtrErr   =       -346    #Bad pointer was passed to sCalcsPointer
+smsGetDrvrErr  =       -345    #Error occurred during _sGetDriver.
+smNoMoresRsrcs =       -344    #No more sResources
+smDisDrvrNamErr        =       -343    #Error occurred during _sDisDrvrName.
+smGetDrvrNamErr        =       -342    #Error occurred during _sGetDrvrName.
+smCkStatusErr  =       -341    #Status of slot = fail.
+smBlkMoveErr   =       -340    #_BlockMove error
+smNewPErr      =       -339    #_NewPtr error
+smSelOOBErr    =       -338    #Selector out of bounds error
+smSlotOOBErr   =       -337    #Slot out of bounds error
+smNilsBlockErr =       -336    #Nil sBlock error (Dont allocate and try to use a nil sBlock)
+smsPointerNil  =       -335    #LPointer is nil From sOffsetData. If this error occurs; check sInfo rec for more information.
+smCPUErr       =       -334    #Code revision is wrong
+smCodeRevErr   =       -333    #Code revision is wrong
+smReservedErr  =       -332    #Reserved field not zero
+smBadsList     =       -331    #Bad sList: Id1 < Id2 < Id3 ...format is not followed.
+smBadRefId     =       -330    #Reference Id not found in List
+smBusErrTO     =       -320    #BusError time out.
+smBadBoardId   =       -319    #BoardId was wrong; re-init the PRAM record.
+smReservedSlot =       -318    #slot is reserved, VM should not use this address space.
+smInitTblVErr  =       -317    #An error occurred while trying to initialize the Slot Resource Table.
+smInitStatVErr =       -316    #The InitStatusV field was negative after primary or secondary init.
+smNoBoardId    =       -315    #No Board Id.
+smGetPRErr     =       -314    #Error occurred during _sGetPRAMRec (See SIMStatus).
+smNoBoardSRsrc =       -313    #No Board sResource.
+smDisposePErr  =       -312    #_DisposePointer error
+smFHBlkDispErr =       -311    #Error occurred during _sDisposePtr (Dispose of FHeader block).
+smFHBlockRdErr =       -310    #Error occurred during _sGetFHeader.
+smBLFieldBad   =       -309    #ByteLanes field was bad.
+smUnExBusErr   =       -308    #Unexpected BusError
+smResrvErr     =       -307    #Fatal reserved error. Resreved field <> 0.
+smNosInfoArray =       -306    #No sInfoArray. Memory Mgr error.
+smDisabledSlot =       -305    #This slot is disabled (-305 use to be smLWTstBad)
+smNoDir        =       -304    #Directory offset is Nil
+smRevisionErr  =       -303    #Wrong revison level
+smFormatErr    =       -302    #FHeader Format is not Apple's
+smCRCFail      =       -301    #CRC check failed for declaration data
+smEmptySlot    =       -300    #No card in slot
+nmTypErr       =       -299    #Notification Manager:wrong queue type
+smPriInitErr   =       -293    #Error; Cards could not be initialized.
+smPRAMInitErr  =       -292    #Error; Slot Resource Table could not be initialized.
+smSRTInitErr   =       -291    #Error; Slot Resource Table could not be initialized.
+smSDMInitErr   =       -290    #Error; SDM could not be initialized.
+midiInvalidCmdErr      =       -261    #command not supported for port type
+midiDupIDErr   =       -260    #duplicate client ID
+midiNameLenErr =       -259    #name supplied is longer than 31 characters
+midiWriteErr   =       -258    #MIDIWritePacket couldn't write to all connected ports
+midiNoConErr   =       -257    #no connection exists between specified ports
+midiVConnectRmvd       =       -256    #pending virtual connection removed
+midiVConnectMade       =       -255    #pending virtual connection resolved
+midiVConnectErr        =       -254    #pending virtual connection created
+midiTooManyConsErr     =       -253    #too many connections made
+midiTooManyPortsErr    =       -252    #too many ports already installed in the system
+midiNoPortErr  =       -251    #no port with that ID found
+midiNoClientErr        =       -250    #no client with that ID found
+badInputText   =       -247    #badInputText
+badDictFormat  =       -246    #badDictFormat
+incompatibleVoice      =       -245    #incompatibleVoice
+voiceNotFound  =       -244    #voiceNotFound
+bufTooSmall    =       -243    #bufTooSmall
+synthNotReady  =       -242    #synthNotReady
+synthOpenFailed        =       -241    #synthOpenFailed
+noSynthFound   =       -240    #noSynthFound
+siUnknownQuality       =       -232    #invalid quality selector (returned by driver)
+siUnknownInfoType      =       -231    #invalid info type selector (returned by driver)
+siInputDeviceErr       =       -230    #input device hardware failure
+siBadRefNum    =       -229    #invalid input device reference number
+siBadDeviceName        =       -228    #input device could not be opened
+siDeviceBusyErr        =       -227    #input device already in use
+siInvalidSampleSize    =       -226    #invalid sample size
+siInvalidSampleRate    =       -225    #invalid sample rate
+siHardDriveTooSlow     =       -224    #hard drive too slow to record to disk
+siInvalidCompression   =       -223    #invalid compression type
+siNoBufferSpecified    =       -222    #returned by synchronous SPBRecord if nil buffer passed
+siBadSoundInDevice     =       -221    #invalid index passed to SoundInGetIndexedDevice
+siNoSoundInHardware    =       -220    #no Sound Input hardware
+siVBRCompressionNotSupported   =       -213    #vbr audio compression not supported for this operation
+noMoreRealTime =       -212    #not enough CPU cycles left to add another task
+channelNotBusy =       -211    #channelNotBusy
+buffersTooSmall        =       -210    #can not operate in the memory allowed
+channelBusy    =       -209    #the Channel is being used for a PFD already
+badFileFormat  =       -208    #was not type AIFF or was of bad format,corrupt
+notEnoughBufferSpace   =       -207    #could not allocate enough memory
+badFormat      =       -206    #Sound Manager Error Returns
+badChannel     =       -205    #Sound Manager Error Returns
+resProblem     =       -204    #Sound Manager Error Returns
+queueFull      =       -203    #Sound Manager Error Returns
+notEnoughHardwareErr   =       -201    #Sound Manager Error Returns
+noHardwareErr  =       -200    #Sound Manager Error Returns
+mapReadErr     =       -199    #map inconsistent with operation
+resAttrErr     =       -198    #attribute inconsistent with operation
+rmvRefFailed   =       -197    #RmveReference failed
+rmvResFailed   =       -196    #RmveResource failed
+addRefFailed   =       -195    #AddReference failed
+addResFailed   =       -194    #AddResource failed
+resFNotFound   =       -193    #Resource file not found
+resNotFound    =       -192    #Resource not found
+inputOutOfBounds       =       -190    #Offset of Count out of bounds
+writingPastEnd =       -189    #Writing past end of file
+resourceInMemory       =       -188    #Resource already in memory
+CantDecompress =       -186    #resource bent ("the bends") - can't decompress a compressed resource
+badExtResource =       -185    #extended resource has a bad format.
+cmNoCurrentProfile     =       -182    #Responder error
+cmUnsupportedDataType  =       -181    #Responder error
+cmCantDeleteProfile    =       -180    #Responder error
+cmCantXYZ      =       -179    #CMM cant handle XYZ space
+cmCantConcatenateError =       -178    #Profile can't be concatenated
+cmProfilesIdentical    =       -177    #Profiles the same
+cmProfileNotFound      =       -176    #Responder error
+cmMethodNotFound       =       -175    #CMM not present
+cmMethodError  =       -171    #cmMethodError
+cmProfileError =       -170    #cmProfileError
+cDepthErr      =       -157    #invalid pixel depth
+cResErr        =       -156    #invalid resolution for MakeITable
+cDevErr        =       -155    #invalid type of graphics device
+cProtectErr    =       -154    #colorTable entry protection violation
+cRangeErr      =       -153    #range error on colorTable request
+cNoMemErr      =       -152    #failed to allocate memory for structure
+cTempMemErr    =       -151    #failed to allocate memory for temporary structures
+cMatchErr      =       -150    #Color2Index failed to find an index
+insufficientStackErr   =       -149    #insufficientStackErr
+pixMapTooDeepErr       =       -148    #pixMapTooDeepErr
+rgnOverflowErr =       -147    #rgnOverflowErr
+noMemForPictPlaybackErr        =       -145    #noMemForPictPlaybackErr
+userCanceledErr        =       -128    #userCanceledErr
+hMenuFindErr   =       -127    #could not find HMenu's parent in MenuKey (wrong error code - obsolete)
+mBarNFnd       =       -126    #system error code for MBDF not found
+updPixMemErr   =       -125    #insufficient memory to update a pixmap
+volGoneErr     =       -124    #Server volume has been disconnected.
+wrgVolTypErr   =       -123    #Wrong volume type error [operation not supported for MFS]
+badMovErr      =       -122    #Move into offspring error
+tmwdoErr       =       -121    #No free WDCB available
+dirNFErr       =       -120    #Directory not found
+memLockedErr   =       -117    #trying to move a locked block (MoveHHi)
+memSCErr       =       -116    #Size Check failed
+memBCErr       =       -115    #Block Check failed
+memPCErr       =       -114    #Pointer Check failed
+memAZErr       =       -113    #Address in zone check failed
+memPurErr      =       -112    #trying to purge a locked or non-purgeable block
+memWZErr       =       -111    #WhichZone failed (applied to free block)
+memAdrErr      =       -110    #address was odd; or out of range
+nilHandleErr   =       -109    #Master Pointer was NIL in HandleZone or other
+memFullErr     =       -108    #Not enough room in heap zone
+noTypeErr      =       -102    #No object of that type in scrap
+noScrapErr     =       -100    #No scrap exists error
+memROZWarn     =       -99     #soft error in ROZ
+portNotCf      =       -98     #driver Open error code (parameter RAM not configured for this connection)
+portInUse      =       -97     #driver Open error code (port is in use)
+portNotPwr     =       -96     #serial port not currently powered
+excessCollsns  =       -95     #excessive collisions on write
+lapProtErr     =       -94     #error in attaching/detaching protocol
+noBridgeErr    =       -93     #no network bridge for non-local send
+eLenErr        =       -92     #Length error ddpLenErr
+eMultiErr      =       -91     #Multicast address error ddpSktErr
+breakRecd      =       -90     #Break received (SCC)
+rcvrErr        =       -89     #SCC receiver error (framing; parity; OR)
+prInitErr      =       -88     #InitUtil found the parameter ram uninitialized
+prWrErr        =       -87     #parameter ram written didn't read-verify
+clkWrErr       =       -86     #time written did not verify
+clkRdErr       =       -85     #unable to read same clock value twice
+verErr =       -84     #track failed to verify
+fmt2Err        =       -83     #can't get enough sync
+fmt1Err        =       -82     #can't find sector 0 after track format
+sectNFErr      =       -81     #sector number never found on a track
+seekErr        =       -80     #track number wrong on address mark
+spdAdjErr      =       -79     #unable to correctly adjust disk speed
+twoSideErr     =       -78     #tried to read 2nd side on a 1-sided drive
+initIWMErr     =       -77     #unable to initialize IWM
+tk0BadErr      =       -76     #track 0 detect doesn't change
+cantStepErr    =       -75     #step handshake failed
+wrUnderrun     =       -74     #write underrun occurred
+badDBtSlp      =       -73     #bad data mark bit slip nibbles
+badDCksum      =       -72     #bad data mark checksum
+noDtaMkErr     =       -71     #couldn't find a data mark header
+badBtSlpErr    =       -70     #bad addr mark bit slip nibbles
+badCksmErr     =       -69     #addr mark checksum didn't check
+dataVerErr     =       -68     #read verify compare failed
+noAdrMkErr     =       -67     #couldn't find valid addr mark
+noNybErr       =       -66     #couldn't find 5 nybbles in 200 tries
+offLinErr      =       -65     #r/w requested for an off-line drive
+fontDecError   =       -64     #error during font declaration
+wrPermErr      =       -61     #write permissions error
+badMDBErr      =       -60     #bad master directory block
+fsRnErr        =       -59     #file system internal error:during rename the old entry was deleted but could not be restored.
+extFSErr       =       -58     #volume in question belongs to an external fs
+noMacDskErr    =       -57     #not a mac diskette (sig bytes are wrong)
+nsDrvErr       =       -56     #no such drive (tried to mount a bad drive num)
+volOnLinErr    =       -55     #drive volume already on-line at MountVol
+permErr        =       -54     #permissions error (on file open)
+volOffLinErr   =       -53     #volume not on line error (was Ejected)
+gfpErr =       -52     #get file position error
+rfNumErr       =       -51     #refnum error
+paramErr       =       -50     #error in user parameter list
+opWrErr        =       -49     #file already open with with write permission
+dupFNErr       =       -48     #duplicate filename (rename)
+fBsyErr        =       -47     #File is busy (delete)
+vLckdErr       =       -46     #volume is locked
+fLckdErr       =       -45     #file is locked
+wPrErr =       -44     #diskette is write protected.
+fnfErr =       -43     #File not found
+tmfoErr        =       -42     #too many files open
+mFulErr        =       -41     #memory full (open) or file won't fit (load)
+posErr =       -40     #tried to position to before start of file (r/w)
+eofErr =       -39     #End of file
+fnOpnErr       =       -38     #File not open
+bdNamErr       =       -37     #there may be no bad names in the final system!
+ioErr  =       -36     #I/O error (bummers)
+nsvErr =       -35     #no such volume
+dskFulErr      =       -34     #disk full
+dirFulErr      =       -33     #Directory full
+dceExtErr      =       -30     #dce extension error
+unitTblFullErr =       -29     #unit table has no more entries
+notOpenErr     =       -28     #Couldn't rd/wr/ctl/sts cause driver not opened
+iIOAbortErr    =       -27     #IO abort error (Printing Manager)
+dInstErr       =       -26     #DrvrInstall couldn't find driver in resources
+dRemovErr      =       -25     #tried to remove an open driver
+closErr        =       -24     #I/O System Errors
+openErr        =       -23     #I/O System Errors
+unitEmptyErr   =       -22     #I/O System Errors
+badUnitErr     =       -21     #I/O System Errors
+writErr        =       -20     #I/O System Errors
+readErr        =       -19     #I/O System Errors
+statusErr      =       -18     #I/O System Errors
+controlErr     =       -17     #I/O System Errors
+dsExtensionsDisabled   =       -13     #say \96Extensions Disabled\94
+dsHD20Installed        =       -12     #say \96HD20 Startup\94
+dsDisassemblerInstalled        =       -11     #say \96Disassembler Installed\94
+dsMacsBugInstalled     =       -10     #say \96MacsBug Installed\94
+seNoDB =       -8      #no debugger installed to handle debugger command
+SlpTypeErr     =       -5      #invalid queue element
+unimpErr       =       -4      #unimplemented core routine
+corErr =       -3      #core routine number out of range
+dsNoExtsDisassembler   =       -2      #not a SysErr, just a placeholder
+qErr   =       -1      #queue element not found during deletion
+tsmComponentNoErr      =       0       #component result = no error
+EPERM  =       1       #Operation not permitted
+ENOENT =       2       #No such file or directory
+ESRCH  =       3       #No such process
+EINTR  =       4       #Interrupted system call
+EIO    =       5       #Input/output error
+ENXIO  =       6       #Device not configured
+E2BIG  =       7       #Argument list too long
+ENOEXEC        =       8       #Exec format error
+EBADF  =       9       #Bad file descriptor
+ECHILD =       10      #No child processes
+EDEADLK        =       11      #Resource deadlock avoided
+ENOMEM =       12      #Cannot allocate memory
+EACCES =       13      #Permission denied
+EFAULT =       14      #Bad address
+ECANCELED      =       15      #Operation cancelled
+EBUSY  =       16      #Device busy
+EEXIST =       17      #File exists
+EXDEV  =       18      #Cross-device link
+ENODEV =       19      #Operation not supported by device
+ENOTDIR        =       20      #Not a directory
+EISDIR =       21      #Is a directory
+EINVAL =       22      #Invalid argument
+ENFILE =       23      #Too many open files in system
+EMFILE =       24      #Too many open files
+ENOTTY =       25      #Inappropriate ioctl for device
+EFBIG  =       27      #File too large
+ENOSPC =       28      #No space left on device
+ESPIPE =       29      #Illegal seek
+EROFS  =       30      #Read-only file system
+EMLINK =       31      #Too many links
+EPIPE  =       32      #Broken pipe
+EDOM   =       33      #Numerical argument out of domain
+ERANGE =       34      #Result too large
+EAGAIN =       35      #Resource temporarily unavailable
+EINPROGRESS    =       36      #Operation now in progress
+EALREADY       =       37      #Operation already in progress
+ENOTSOCK       =       38      #Socket operation on non-socket
+EDESTADDRREQ   =       39      #Destination address required
+EMSGSIZE       =       40      #Message too long
+EPROTOTYPE     =       41      #Protocol wrong type for socket
+ENOPROTOOPT    =       42      #Protocol not available
+EPROTONOSUPPORT        =       43      #Protocol not supported
+ESOCKTNOSUPPORT        =       44      #Socket type not supported
+EOPNOTSUPP     =       45      #Operation not supported
+EPFNOSUPPORT   =       46      #Protocol family not supported
+EAFNOSUPPORT   =       47      #Address family not supported by protocol family
+EADDRINUSE     =       48      #Address already in use
+EADDRNOTAVAIL  =       49      #Can't assign requested address
+ENETDOWN       =       50      #Network is down
+ENETUNREACH    =       51      #Network is unreachable
+ENETRESET      =       52      #Network dropped connection on reset
+ECONNABORTED   =       53      #Software caused connection abort
+ECONNRESET     =       54      #Connection reset by peer
+ENOBUFS        =       55      #No buffer space available
+EISCONN        =       56      #Socket is already connected
+ENOTCONN       =       57      #Socket is not connected
+ESHUTDOWN      =       58      #Can't send after socket shutdown
+ETOOMANYREFS   =       59      #Too many references: can't splice
+ETIMEDOUT      =       60      #Operation timed out
+ECONNREFUSED   =       61      #Connection refused
+ELOOP  =       62      #Too many levels of symbolic links
+ENAMETOOLONG   =       63      #File name too long
+EHOSTDOWN      =       64      #Host is down
+EHOSTUNREACH   =       65      #No route to host
+ENOTEMPTY      =       66      #Directory not empty
+ELOOK  =       67      #Internal mapping for kOTLookErr, don't return to client
+ENOLCK =       77      #No locks available
+ENOSYS =       78      #Function not implemented
diff --git a/Mac/Lib/test/tlist_dialog.rsrc b/Mac/Lib/test/tlist_dialog.rsrc
new file mode 100644 (file)
index 0000000..f906f6c
--- /dev/null
@@ -0,0 +1 @@
+(This file must be converted with BinHex 4.0)\r:!!"bFh*M8P0&4!#3#!'IKH8!N!3"!!!!!9N!!!"C!!!!4J$k+J!!qLS!!2SU!!$\rk+J!!qLS!!2SUq!$k+`!!q[rj%A4XDA0dAf4TB@a[CbjbFh*M-M%Z-5iaFh4KE'a\rPFQ`!!(*cFQ058d9%!*!BXQ0apJ#3"J'I+J!!qLS!!2SU!!$k+J!!qLS!!2SU!!$\rk+J!!qLS!!2SUq!$k+`!!q[rj!$S!!2Vr%$S!!2SV!!$kr!!!qLS!!2SU!!$k+J!\r!qLS!!2SU!!$k+J!!qLS!!2SU!!$k+[J!qLX!!2Vrq3!k!!$kr`!!qLX!!2Vm!!$\rk+J!!qLS!!2SU!*!%2!!#!*!&UJ#J!,i!fJ3#6dX!N!8S!!S!T3$D!*!(#J!+!"`\r!fBJ18f9XC@0d)'%JGfpbC$S!!!!9!%B!MJ%1!Ai!!`%!!3#3"3)"!!!!!3!!!!&\rC!!!!@3!!!%B!b9$i%D)!!!!F!%B!!84-6dF!!!!54%P86!!!!"i#!Irr!!!!3!$\r*8E`#!Irr!*!&b8rJLZ):\r
\ No newline at end of file
diff --git a/Mac/Modules/Nav.c b/Mac/Modules/Nav.c
new file mode 100644 (file)
index 0000000..ff7724e
--- /dev/null
@@ -0,0 +1,977 @@
+/***********************************************************
+Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI or Corporation for National Research Initiatives or
+CNRI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+While CWI is the initial source for this software, a modified version
+is made available by the Corporation for National Research Initiatives
+(CNRI) at the Internet address ftp://ftp.python.org.
+
+STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
+CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+#include "Python.h"
+#include "macglue.h"
+#include "pymactoolbox.h"
+#ifdef WITHOUT_FRAMEWORKS
+#include <Navigation.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+static PyObject *ErrorObject;
+
+static NavEventUPP my_eventProcUPP;
+static NavPreviewUPP my_previewProcUPP;
+static NavObjectFilterUPP my_filterProcUPP;
+
+/* Callback functions */
+static pascal void
+my_eventProc(NavEventCallbackMessage callBackSelector,
+                        NavCBRecPtr callBackParms,
+                        NavCallBackUserData callbackUD)
+{
+       PyObject *dict = (PyObject *)callbackUD;
+       PyObject *pyfunc;
+       PyObject *rv;
+       
+       if (!dict) return;
+       if ( (pyfunc = PyDict_GetItemString(dict, "eventProc")) == NULL ) {
+               PyErr_Clear();
+               return;
+       }
+       if ( pyfunc == Py_None ) {
+               /* Special case: give update events to the Python event handling code */
+               if ( callBackSelector == kNavCBEvent && 
+                               callBackParms->eventData.eventDataParms.event->what == updateEvt)
+                       PyMac_HandleEvent(callBackParms->eventData.eventDataParms.event);
+               /* Ignore others */
+               return;
+       }
+       rv = PyObject_CallFunction(pyfunc, "ls#", (long)callBackSelector,
+                       (void *)callBackParms, sizeof(NavCBRec));
+       if ( rv )
+               Py_DECREF(rv);
+       else {
+               fprintf(stderr, "Nav: exception in eventProc callback\n");
+               PyErr_Clear();
+       }
+}
+
+static pascal Boolean
+my_previewProc(NavCBRecPtr callBackParms,
+                          NavCallBackUserData callbackUD)
+{
+       PyObject *dict = (PyObject *)callbackUD;
+       PyObject *pyfunc;
+       PyObject *rv;
+       Boolean c_rv = false;
+       
+       if (!dict) return;
+       if ( (pyfunc = PyDict_GetItemString(dict, "previewProc")) == NULL ) {
+               PyErr_Clear();
+               return;
+       }
+       rv = PyObject_CallFunction(pyfunc, "s#", (void *)callBackParms, sizeof(NavCBRec));
+       if ( rv ) {
+               c_rv = PyObject_IsTrue(rv);
+               Py_DECREF(rv);
+       } else {
+               fprintf(stderr, "Nav: exception in previewProc callback\n");
+               PyErr_Clear();
+       }
+       return c_rv;
+}
+
+static pascal Boolean
+my_filterProc(AEDesc *theItem, void *info,
+                         NavCallBackUserData callbackUD,
+                         NavFilterModes filterMode)
+{
+       PyObject *dict = (PyObject *)callbackUD;
+       PyObject *pyfunc;
+       PyObject *rv;
+       Boolean c_rv = false;
+       
+       if (!dict) return;
+       if ( (pyfunc = PyDict_GetItemString(dict, "filterProc")) == NULL ) {
+               PyErr_Clear();
+               return;
+       }
+       rv = PyObject_CallFunction(pyfunc, "O&s#h",
+               AEDesc_New, theItem, info, sizeof(NavFileOrFolderInfo), (short)filterMode);
+       if ( rv ) {
+               c_rv = PyObject_IsTrue(rv);
+               Py_DECREF(rv);
+       } else {
+               fprintf(stderr, "Nav: exception in filterProc callback\n");
+               PyErr_Clear();
+       }
+       return c_rv;
+}
+
+/* ----------------------------------------------------- */
+static int
+filldialogoptions(PyObject *d,
+               AEDesc **defaultLocationP,
+               NavDialogOptions *opt,
+               NavEventUPP *eventProcP,
+               NavPreviewUPP *previewProcP,
+               NavObjectFilterUPP *filterProcP,
+               NavTypeListHandle *typeListP,
+               OSType *fileTypeP,
+               OSType *fileCreatorP)
+{
+       int pos = 0;
+       PyObject *key, *value;
+       char *keystr;
+       AEDesc *defaultLocation_storage;
+       
+       NavGetDefaultDialogOptions(opt);
+
+       while ( PyDict_Next(d, &pos, &key, &value) ) {
+               if ( !key || !value || !PyString_Check(key) ) {
+                       PyErr_SetString(ErrorObject, "DialogOption has non-string key");
+                       return 0;
+               }
+               keystr = PyString_AsString(key);
+               if( strcmp(keystr, "defaultLocation") == 0 ) {
+                       if ( (defaultLocation_storage = PyMem_NEW(AEDesc, 1)) == NULL ) {
+                               PyErr_NoMemory();
+                               return 0;
+                       }
+                       if ( !PyArg_Parse(value, "O&", AEDesc_Convert, defaultLocation_storage) ) {
+                               PyMem_DEL(defaultLocation_storage);
+                               return 0;
+                       }
+                       *defaultLocationP = defaultLocation_storage;
+               } else if( strcmp(keystr, "version") == 0 ) {
+                       if ( !PyArg_Parse(value, "h", &opt->version) )
+                               return 0;
+               } else if( strcmp(keystr, "dialogOptionFlags") == 0 ) {
+                       if ( !PyArg_Parse(value, "l", &opt->dialogOptionFlags) )
+                               return 0;
+               } else if( strcmp(keystr, "location") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetPoint, &opt->location) )
+                               return 0;
+               } else if( strcmp(keystr, "clientName") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->clientName) )
+                               return 0;
+               } else if( strcmp(keystr, "windowTitle") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->windowTitle) )
+                               return 0;
+               } else if( strcmp(keystr, "actionButtonLabel") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->actionButtonLabel) )
+                               return 0;
+               } else if( strcmp(keystr, "cancelButtonLabel") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->cancelButtonLabel) )
+                               return 0;
+               } else if( strcmp(keystr, "savedFileName") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->savedFileName) )
+                               return 0;
+               } else if( strcmp(keystr, "message") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->message) )
+                               return 0;
+               } else if( strcmp(keystr, "preferenceKey") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, &opt->preferenceKey) )
+                               return 0;
+               } else if( strcmp(keystr, "popupExtension") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", ResObj_Convert, &opt->popupExtension) )
+                               return 0;
+               } else if( eventProcP && strcmp(keystr, "eventProc") == 0 ) {
+                       *eventProcP = my_eventProcUPP;
+               } else if( previewProcP && strcmp(keystr, "previewProc") == 0 ) {
+                       PyErr_SetString(ErrorObject, "No callbacks implemented yet");
+                       return 0;
+               } else if( filterProcP && strcmp(keystr, "filterProc") == 0 ) {
+                       PyErr_SetString(ErrorObject, "No callbacks implemented yet");
+                       return 0;
+               } else if( typeListP && strcmp(keystr, "typeList") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", ResObj_Convert, typeListP) )
+                               return 0;
+               } else if( fileTypeP && strcmp(keystr, "fileType") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, fileTypeP) )
+                               return 0;
+               } else if( fileCreatorP && strcmp(keystr, "fileCreator") == 0 ) {
+                       if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, fileCreatorP) )
+                               return 0;
+               } else {
+                       PyErr_Format(ErrorObject, "Unknown DialogOption key: %s", keystr);
+                       return 0;
+               }
+       }
+       return 1;
+}
+
+/* ----------------------------------------------------- */
+
+/* Declarations for objects of type NavReplyRecord */
+
+typedef struct {
+       PyObject_HEAD
+       NavReplyRecord itself;
+} navrrobject;
+
+staticforward PyTypeObject Navrrtype;
+
+
+
+/* ---------------------------------------------------------------- */
+
+static char nav_NavTranslateFile__doc__[] =
+"(NavTranslationOptions)->None"
+;
+
+static PyObject *
+nav_NavTranslateFile(self, args)
+       navrrobject *self;
+       PyObject *args;
+{
+       NavTranslationOptions howToTranslate;
+       OSErr err;
+
+       if (!PyArg_ParseTuple(args, "l", &howToTranslate))
+               return NULL;
+       err = NavTranslateFile(&self->itself, howToTranslate);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char nav_NavCompleteSave__doc__[] =
+"(NavTranslationOptions)->None"
+;
+
+static PyObject *
+nav_NavCompleteSave(self, args)
+       navrrobject *self;
+       PyObject *args;
+{
+       NavTranslationOptions howToTranslate;
+       OSErr err;
+
+       if (!PyArg_ParseTuple(args, "l", &howToTranslate))
+               return NULL;
+       err = NavCompleteSave(&self->itself, howToTranslate);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static struct PyMethodDef navrr_methods[] = {
+ {"NavTranslateFile",  (PyCFunction)nav_NavTranslateFile,      METH_VARARGS,   nav_NavTranslateFile__doc__},
+ {"NavCompleteSave",   (PyCFunction)nav_NavCompleteSave,       METH_VARARGS,   nav_NavCompleteSave__doc__},
+       
+       {NULL,          NULL}           /* sentinel */
+};
+
+/* ---------- */
+
+
+static navrrobject *
+newnavrrobject(NavReplyRecord *itself)
+{
+       navrrobject *self;
+       
+       self = PyObject_NEW(navrrobject, &Navrrtype);
+       if (self == NULL)
+               return NULL;
+       self->itself = *itself;
+       return self;
+}
+
+
+static void
+navrr_dealloc(self)
+       navrrobject *self;
+{
+       NavDisposeReply(&self->itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *
+navrr_getattr(self, name)
+       navrrobject *self;
+       char *name;
+{
+       FSSpec fss;
+       
+       if( strcmp(name, "__members__") == 0 )
+               return Py_BuildValue("sssssss", "version", "validRecord", "replacing",
+                       "isStationery", "translationNeeded", "selection", "fileTranslation");
+       if( strcmp(name, "version") == 0 )
+               return Py_BuildValue("h", self->itself.version);
+       if( strcmp(name, "validRecord") == 0 )
+               return Py_BuildValue("l", (long)self->itself.validRecord);
+       if( strcmp(name, "replacing") == 0 )
+               return Py_BuildValue("l", (long)self->itself.replacing);
+       if( strcmp(name, "isStationery") == 0 )
+               return Py_BuildValue("l", (long)self->itself.isStationery);
+       if( strcmp(name, "translationNeeded") == 0 )
+               return Py_BuildValue("l", (long)self->itself.translationNeeded);
+       if( strcmp(name, "selection") == 0 ) {
+               SInt32 i, count;
+               OSErr err;
+               PyObject *rv, *rvitem;
+               AEDesc desc;
+               
+               if (err=AECountItems(&self->itself.selection, &count)) {
+                       PyErr_Mac(ErrorObject, err);
+                       return NULL;
+               }
+               if ( (rv=PyList_New(count)) == NULL )
+                       return NULL;
+               for(i=0; i<count; i++) {
+                       desc.dataHandle = NULL;
+                       if (err=AEGetNthDesc(&self->itself.selection, i+1, typeFSS, NULL, &desc)) {
+                               Py_DECREF(rv);
+                               PyErr_Mac(ErrorObject, err);
+                               return NULL;
+                       }
+#if TARGET_API_MAC_CARBON
+                       if (err=AEGetDescData(&desc, &fss, sizeof(FSSpec))) {
+                               Py_DECREF(rv);
+                               PyErr_Mac(ErrorObject, err);
+                               return NULL;
+                       }
+#else
+                       memcpy((void *)&fss, (void *)*desc.dataHandle, sizeof(FSSpec));
+#endif
+                       rvitem = PyMac_BuildFSSpec(&fss);
+                       PyList_SetItem(rv, i, rvitem);
+                       AEDisposeDesc(&desc);
+               }
+               return rv;
+       }
+       if( strcmp(name, "fileTranslation") == 0 )
+               return ResObj_New((Handle)self->itself.fileTranslation);
+
+
+       return Py_FindMethod(navrr_methods, (PyObject *)self, name);
+}
+
+static int
+navrr_setattr(self, name, v)
+       navrrobject *self;
+       char *name;
+       PyObject *v;
+{
+       /* Set attribute 'name' to value 'v'. v==NULL means delete */
+       
+       /* XXXX Add your own setattr code here */
+       return -1;
+}
+
+static char Navrrtype__doc__[] = 
+"Record containing result of a Nav file selection call. Use dir() for member names."
+;
+
+static PyTypeObject Navrrtype = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0,                              /*ob_size*/
+       "NavReplyRecord",                       /*tp_name*/
+       sizeof(navrrobject),            /*tp_basicsize*/
+       0,                              /*tp_itemsize*/
+       /* methods */
+       (destructor)navrr_dealloc,      /*tp_dealloc*/
+       (printfunc)0,           /*tp_print*/
+       (getattrfunc)navrr_getattr,     /*tp_getattr*/
+       (setattrfunc)navrr_setattr,     /*tp_setattr*/
+       (cmpfunc)0,             /*tp_compare*/
+       (reprfunc)0,            /*tp_repr*/
+       0,                      /*tp_as_number*/
+       0,              /*tp_as_sequence*/
+       0,              /*tp_as_mapping*/
+       (hashfunc)0,            /*tp_hash*/
+       (ternaryfunc)0,         /*tp_call*/
+       (reprfunc)0,            /*tp_str*/
+
+       /* Space for future expansion */
+       0L,0L,0L,0L,
+       Navrrtype__doc__ /* Documentation string */
+};
+
+/* End of code for NavReplyRecord objects */
+               
+/* ----------------------------------------------------- */
+
+static char nav_NavGetFile__doc__[] =
+"(DialogOptions dict or kwargs+defaultLocation,eventProc,previewProc,filterProc,typeList) -> NavReplyRecord"
+;
+
+static PyObject *
+nav_NavGetFile(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       AEDesc  *defaultLocation = NULL;
+       NavReplyRecord reply;
+       NavDialogOptions dialogOptions;
+       NavEventUPP eventProc = NULL;
+       NavPreviewUPP previewProc = NULL;
+       NavObjectFilterUPP filterProc = NULL;
+       NavTypeListHandle typeList = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, &previewProc, &filterProc, &typeList, NULL, NULL))
+               return NULL;
+       err = NavGetFile(defaultLocation, &reply, &dialogOptions,
+                       eventProc, previewProc, filterProc, typeList, (void *)dict);
+       PyMem_DEL(defaultLocation);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return (PyObject *)newnavrrobject(&reply);
+}
+
+static char nav_NavPutFile__doc__[] =
+"(DialogOptions dict or kwargs+defaultLocation,eventProc,fileCreator,fileType) -> NavReplyRecord"
+;
+
+static PyObject *
+nav_NavPutFile(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       AEDesc  *defaultLocation = NULL;
+       NavReplyRecord reply;
+       NavDialogOptions dialogOptions;
+       NavEventUPP eventProc = NULL;
+       OSType fileType;
+       OSType fileCreator;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, &fileType, &fileCreator))
+               return NULL;
+       err = NavPutFile(defaultLocation, &reply, &dialogOptions,
+                       eventProc, fileType, fileCreator, (void *)dict);
+       PyMem_DEL(defaultLocation);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return (PyObject *)newnavrrobject(&reply);
+}
+
+static char nav_NavAskSaveChanges__doc__[] =
+"(NavAskSaveChangesAction, DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"
+
+;
+
+static PyObject *
+nav_NavAskSaveChanges(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       NavDialogOptions dialogOptions;
+       NavAskSaveChangesAction action;
+       NavAskSaveChangesResult reply;
+       NavEventUPP eventProc = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, "l", &action))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "lO!", &action, &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
+               return NULL;
+       err = NavAskSaveChanges(&dialogOptions, action, &reply, eventProc, (void *)dict);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return Py_BuildValue("l", (long)reply);
+}
+
+static char nav_NavCustomAskSaveChanges__doc__[] =
+"(DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"
+;
+
+static PyObject *
+nav_NavCustomAskSaveChanges(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       NavDialogOptions dialogOptions;
+       NavAskSaveChangesResult reply;
+       NavEventUPP eventProc = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
+               return NULL;
+       err = NavCustomAskSaveChanges(&dialogOptions, &reply, eventProc, (void *)dict);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return Py_BuildValue("l", (long)reply);
+}
+
+static char nav_NavAskDiscardChanges__doc__[] =
+"(DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"
+;
+
+static PyObject *
+nav_NavAskDiscardChanges(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       NavDialogOptions dialogOptions;
+       NavAskSaveChangesResult reply;
+       NavEventUPP eventProc = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
+               return NULL;
+       err = NavAskDiscardChanges(&dialogOptions, &reply, eventProc, (void *)dict);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return Py_BuildValue("l", (long)reply);
+}
+
+static char nav_NavChooseFile__doc__[] =
+"(DialogOptions dict or kwargs+defaultLocation,eventProc,previewProc,filterProc,typeList) -> NavReplyRecord"
+;
+
+static PyObject *
+nav_NavChooseFile(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       AEDesc  *defaultLocation = NULL;
+       NavReplyRecord reply;
+       NavDialogOptions dialogOptions;
+       NavEventUPP eventProc = NULL;
+       NavPreviewUPP previewProc = NULL;
+       NavObjectFilterUPP filterProc = NULL;
+       NavTypeListHandle typeList = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, &previewProc, &filterProc, &typeList, NULL, NULL))
+               return NULL;
+       err = NavChooseFile(defaultLocation, &reply, &dialogOptions,
+                       eventProc, previewProc, filterProc, typeList, (void *)dict);
+       PyMem_DEL(defaultLocation);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return (PyObject *)newnavrrobject(&reply);
+}
+
+static char nav_NavChooseFolder__doc__[] =
+"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
+;
+
+static PyObject *
+nav_NavChooseFolder(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       AEDesc  *defaultLocation = NULL;
+       NavReplyRecord reply;
+       NavDialogOptions dialogOptions;
+       NavEventUPP eventProc = NULL;
+       NavObjectFilterUPP filterProc = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
+               return NULL;
+       err = NavChooseFolder(defaultLocation, &reply, &dialogOptions,
+                       eventProc, filterProc, (void *)dict);
+       PyMem_DEL(defaultLocation);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return (PyObject *)newnavrrobject(&reply);
+}
+
+static char nav_NavChooseVolume__doc__[] =
+"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
+;
+
+static PyObject *
+nav_NavChooseVolume(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       AEDesc  *defaultLocation = NULL;
+       NavReplyRecord reply;
+       NavDialogOptions dialogOptions;
+       NavEventUPP eventProc = NULL;
+       NavObjectFilterUPP filterProc = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
+               return NULL;
+       err = NavChooseVolume(defaultLocation, &reply, &dialogOptions,
+                       eventProc, filterProc, (void *)dict);
+       PyMem_DEL(defaultLocation);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return (PyObject *)newnavrrobject(&reply);
+}
+
+static char nav_NavChooseObject__doc__[] =
+"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
+;
+
+static PyObject *
+nav_NavChooseObject(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       AEDesc  *defaultLocation = NULL;
+       NavReplyRecord reply;
+       NavDialogOptions dialogOptions;
+       NavEventUPP eventProc = NULL;
+       NavObjectFilterUPP filterProc = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
+               return NULL;
+       err = NavChooseObject(defaultLocation, &reply, &dialogOptions,
+                       eventProc, filterProc, (void *)dict);
+       PyMem_DEL(defaultLocation);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return (PyObject *)newnavrrobject(&reply);
+}
+
+static char nav_NavNewFolder__doc__[] =
+"(DialogOptions dict or kwargs+defaultLocation,eventProc) -> NavReplyRecord"
+;
+
+static PyObject *
+nav_NavNewFolder(self, args, kw)
+       PyObject *self; /* Not used */
+       PyObject *args;
+       PyObject *kw;
+{
+       PyObject *dict;
+       AEDesc  *defaultLocation = NULL;
+       NavReplyRecord reply;
+       NavDialogOptions dialogOptions;
+       NavEventUPP eventProc = NULL;
+       OSErr err;
+
+       if ( kw && PyObject_IsTrue(kw) ) {
+               if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
+                       return NULL;
+               dict = kw;
+       } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
+               return NULL;
+       if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
+               return NULL;
+       err = NavNewFolder(defaultLocation, &reply, &dialogOptions, eventProc, (void *)dict);
+       PyMem_DEL(defaultLocation);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return (PyObject *)newnavrrobject(&reply);
+}
+
+#if 0
+/* XXXX I don't know what to do with the void * argument */
+static char nav_NavCustomControl__doc__[] =
+""
+;
+
+
+static PyObject *
+nav_NavCustomControl(self, args)
+       PyObject *self; /* Not used */
+       PyObject *args;
+{
+
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+#endif
+
+static char nav_NavServicesCanRun__doc__[] =
+"()->int"
+;
+
+static PyObject *
+nav_NavServicesCanRun(self, args)
+       PyObject *self; /* Not used */
+       PyObject *args;
+{
+       Boolean rv;
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       rv = NavServicesCanRun();
+       return Py_BuildValue("l", (long)rv);
+}
+
+static char nav_NavServicesAvailable__doc__[] =
+"()->int"
+;
+
+static PyObject *
+nav_NavServicesAvailable(self, args)
+       PyObject *self; /* Not used */
+       PyObject *args;
+{
+       Boolean rv;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       rv = NavServicesAvailable();
+       return Py_BuildValue("l", (long)rv);
+}
+/* XX */
+static char nav_NavLoad__doc__[] =
+"()->None"
+;
+
+static PyObject *
+nav_NavLoad(self, args)
+       PyObject *self; /* Not used */
+       PyObject *args;
+{
+
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       NavLoad();
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char nav_NavUnload__doc__[] =
+"()->None"
+;
+
+static PyObject *
+nav_NavUnload(self, args)
+       PyObject *self; /* Not used */
+       PyObject *args;
+{
+
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       NavUnload();
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char nav_NavLibraryVersion__doc__[] =
+"()->int"
+;
+
+static PyObject *
+nav_NavLibraryVersion(self, args)
+       PyObject *self; /* Not used */
+       PyObject *args;
+{
+       UInt32 rv;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       rv = NavLibraryVersion();
+       return Py_BuildValue("l", (long)rv);
+}
+
+static char nav_NavGetDefaultDialogOptions__doc__[] =
+"()->dict\nPass dict or keyword args with same names to other calls."
+;
+
+static PyObject *
+nav_NavGetDefaultDialogOptions(self, args)
+       PyObject *self; /* Not used */
+       PyObject *args;
+{
+       NavDialogOptions dialogOptions;
+       OSErr err;
+       
+       err = NavGetDefaultDialogOptions(&dialogOptions);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return Py_BuildValue("{s:h,s:l,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&}",
+               "version", dialogOptions.version,
+               "dialogOptionFlags", dialogOptions.dialogOptionFlags,
+               "location", PyMac_BuildPoint, dialogOptions.location,
+               "clientName", PyMac_BuildStr255, &dialogOptions.clientName,
+               "windowTitle", PyMac_BuildStr255, &dialogOptions.windowTitle,
+               "actionButtonLabel", PyMac_BuildStr255, &dialogOptions.actionButtonLabel,
+               "cancelButtonLabel", PyMac_BuildStr255, &dialogOptions.cancelButtonLabel,
+               "savedFileName", PyMac_BuildStr255, &dialogOptions.savedFileName,
+               "message", PyMac_BuildStr255, &dialogOptions.message,
+               "preferenceKey", PyMac_BuildOSType, dialogOptions.preferenceKey,
+               "popupExtension", OptResObj_New, dialogOptions.popupExtension);
+}
+
+/* List of methods defined in the module */
+
+static struct PyMethodDef nav_methods[] = {
+       {"NavGetFile",  (PyCFunction)nav_NavGetFile,    METH_VARARGS|METH_KEYWORDS,     nav_NavGetFile__doc__},
+ {"NavPutFile",        (PyCFunction)nav_NavPutFile,    METH_VARARGS|METH_KEYWORDS,     nav_NavPutFile__doc__},
+ {"NavAskSaveChanges", (PyCFunction)nav_NavAskSaveChanges,     METH_VARARGS|METH_KEYWORDS,     nav_NavAskSaveChanges__doc__},
+ {"NavCustomAskSaveChanges",   (PyCFunction)nav_NavCustomAskSaveChanges,       METH_VARARGS|METH_KEYWORDS,     nav_NavCustomAskSaveChanges__doc__},
+ {"NavAskDiscardChanges",      (PyCFunction)nav_NavAskDiscardChanges,  METH_VARARGS|METH_KEYWORDS,     nav_NavAskDiscardChanges__doc__},
+ {"NavChooseFile",     (PyCFunction)nav_NavChooseFile, METH_VARARGS|METH_KEYWORDS,     nav_NavChooseFile__doc__},
+ {"NavChooseFolder",   (PyCFunction)nav_NavChooseFolder,       METH_VARARGS|METH_KEYWORDS,     nav_NavChooseFolder__doc__},
+ {"NavChooseVolume",   (PyCFunction)nav_NavChooseVolume,       METH_VARARGS|METH_KEYWORDS,     nav_NavChooseVolume__doc__},
+ {"NavChooseObject",   (PyCFunction)nav_NavChooseObject,       METH_VARARGS|METH_KEYWORDS,     nav_NavChooseObject__doc__},
+ {"NavNewFolder",      (PyCFunction)nav_NavNewFolder,  METH_VARARGS|METH_KEYWORDS,     nav_NavNewFolder__doc__},
+#if 0
+ {"NavCustomControl",  (PyCFunction)nav_NavCustomControl,      METH_VARARGS,   nav_NavCustomControl__doc__},
+#endif
+ {"NavServicesCanRun", (PyCFunction)nav_NavServicesCanRun,     METH_VARARGS,   nav_NavServicesCanRun__doc__},
+ {"NavServicesAvailable",      (PyCFunction)nav_NavServicesAvailable,  METH_VARARGS,   nav_NavServicesAvailable__doc__},
+ {"NavLoad",   (PyCFunction)nav_NavLoad,       METH_VARARGS,   nav_NavLoad__doc__},
+ {"NavUnload", (PyCFunction)nav_NavUnload,     METH_VARARGS,   nav_NavUnload__doc__},
+ {"NavLibraryVersion", (PyCFunction)nav_NavLibraryVersion,     METH_VARARGS,   nav_NavLibraryVersion__doc__},
+ {"NavGetDefaultDialogOptions",        (PyCFunction)nav_NavGetDefaultDialogOptions,    METH_VARARGS,   nav_NavGetDefaultDialogOptions__doc__},
+       {NULL,   (PyCFunction)NULL, 0, NULL}            /* sentinel */
+};
+
+
+/* Initialization function for the module (*must* be called initNav) */
+
+static char Nav_module_documentation[] = 
+"Interface to Navigation Services\n"
+"Most calls accept a NavDialogOptions dictionary or keywords with the same names, pass {}\n"
+"if you want the default options.\n"
+"Use NavGetDefaultDialogOptions() to find out common option names.\n"
+"See individual docstrings for additional keyword args/dictentries supported by each call.\n"
+"Pass None as eventProc to get movable-modal dialogs that process updates through the standard Python mechanism."
+;
+
+void
+initNav()
+{
+       PyObject *m, *d;
+
+       /* Test that we have NavServices */
+       if ( !NavServicesAvailable() ) {
+               PyErr_SetString(PyExc_ImportError, "Navigation Services not available");
+               return;
+       }
+       /* Create the module and add the functions */
+       m = Py_InitModule4("Nav", nav_methods,
+               Nav_module_documentation,
+               (PyObject*)NULL,PYTHON_API_VERSION);
+
+       /* Add some symbolic constants to the module */
+       d = PyModule_GetDict(m);
+       ErrorObject = PyString_FromString("Nav.error");
+       PyDict_SetItemString(d, "error", ErrorObject);
+
+       /* XXXX Add constants here */
+       
+       /* Set UPPs */
+       my_eventProcUPP = NewNavEventUPP(my_eventProc);
+       my_previewProcUPP = NewNavPreviewUPP(my_previewProc);
+       my_filterProcUPP = NewNavObjectFilterUPP(my_filterProc);
+       
+}
+
diff --git a/Mac/Modules/app/Appmodule.c b/Mac/Modules/app/Appmodule.c
new file mode 100644 (file)
index 0000000..4e06f41
--- /dev/null
@@ -0,0 +1,1168 @@
+
+/* =========================== Module App =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Appearance.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+
+static PyObject *App_Error;
+
+static PyObject *App_RegisterAppearanceClient(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = RegisterAppearanceClient();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_UnregisterAppearanceClient(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = UnregisterAppearanceClient();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_SetThemePen(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeBrush inBrush;
+       SInt16 inDepth;
+       Boolean inIsColorDevice;
+       if (!PyArg_ParseTuple(_args, "hhb",
+                             &inBrush,
+                             &inDepth,
+                             &inIsColorDevice))
+               return NULL;
+       _err = SetThemePen(inBrush,
+                          inDepth,
+                          inIsColorDevice);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_SetThemeBackground(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeBrush inBrush;
+       SInt16 inDepth;
+       Boolean inIsColorDevice;
+       if (!PyArg_ParseTuple(_args, "hhb",
+                             &inBrush,
+                             &inDepth,
+                             &inIsColorDevice))
+               return NULL;
+       _err = SetThemeBackground(inBrush,
+                                 inDepth,
+                                 inIsColorDevice);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_SetThemeTextColor(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeTextColor inColor;
+       SInt16 inDepth;
+       Boolean inIsColorDevice;
+       if (!PyArg_ParseTuple(_args, "hhb",
+                             &inColor,
+                             &inDepth,
+                             &inIsColorDevice))
+               return NULL;
+       _err = SetThemeTextColor(inColor,
+                                inDepth,
+                                inIsColorDevice);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_SetThemeWindowBackground(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       WindowPtr inWindow;
+       ThemeBrush inBrush;
+       Boolean inUpdate;
+       if (!PyArg_ParseTuple(_args, "O&hb",
+                             WinObj_Convert, &inWindow,
+                             &inBrush,
+                             &inUpdate))
+               return NULL;
+       _err = SetThemeWindowBackground(inWindow,
+                                       inBrush,
+                                       inUpdate);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeWindowHeader(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemeWindowHeader(&inRect,
+                                    inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeWindowListViewHeader(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemeWindowListViewHeader(&inRect,
+                                            inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemePlacard(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemePlacard(&inRect,
+                               inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeEditTextFrame(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemeEditTextFrame(&inRect,
+                                     inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeListBoxFrame(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemeListBoxFrame(&inRect,
+                                    inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeFocusRect(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       Boolean inHasFocus;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             PyMac_GetRect, &inRect,
+                             &inHasFocus))
+               return NULL;
+       _err = DrawThemeFocusRect(&inRect,
+                                 inHasFocus);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemePrimaryGroup(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemePrimaryGroup(&inRect,
+                                    inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeSecondaryGroup(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemeSecondaryGroup(&inRect,
+                                      inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeSeparator(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemeSeparator(&inRect,
+                                 inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeModelessDialogFrame(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemeModelessDialogFrame(&inRect,
+                                           inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeGenericWell(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       Boolean inFillCenter;
+       if (!PyArg_ParseTuple(_args, "O&lb",
+                             PyMac_GetRect, &inRect,
+                             &inState,
+                             &inFillCenter))
+               return NULL;
+       _err = DrawThemeGenericWell(&inRect,
+                                   inState,
+                                   inFillCenter);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeFocusRegion(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Boolean inHasFocus;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &inHasFocus))
+               return NULL;
+       _err = DrawThemeFocusRegion((RgnHandle)0,
+                                   inHasFocus);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_IsThemeInColor(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       SInt16 inDepth;
+       Boolean inIsColorDevice;
+       if (!PyArg_ParseTuple(_args, "hb",
+                             &inDepth,
+                             &inIsColorDevice))
+               return NULL;
+       _rv = IsThemeInColor(inDepth,
+                            inIsColorDevice);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *App_GetThemeAccentColors(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       CTabHandle outColors;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetThemeAccentColors(&outColors);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, outColors);
+       return _res;
+}
+
+static PyObject *App_DrawThemeMenuBarBackground(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inBounds;
+       ThemeMenuBarState inState;
+       UInt32 inAttributes;
+       if (!PyArg_ParseTuple(_args, "O&Hl",
+                             PyMac_GetRect, &inBounds,
+                             &inState,
+                             &inAttributes))
+               return NULL;
+       _err = DrawThemeMenuBarBackground(&inBounds,
+                                         inState,
+                                         inAttributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_GetThemeMenuBarHeight(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       SInt16 outHeight;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetThemeMenuBarHeight(&outHeight);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            outHeight);
+       return _res;
+}
+
+static PyObject *App_DrawThemeMenuBackground(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inMenuRect;
+       ThemeMenuType inMenuType;
+       if (!PyArg_ParseTuple(_args, "O&H",
+                             PyMac_GetRect, &inMenuRect,
+                             &inMenuType))
+               return NULL;
+       _err = DrawThemeMenuBackground(&inMenuRect,
+                                      inMenuType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_GetThemeMenuBackgroundRegion(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inMenuRect;
+       ThemeMenuType menuType;
+       if (!PyArg_ParseTuple(_args, "O&H",
+                             PyMac_GetRect, &inMenuRect,
+                             &menuType))
+               return NULL;
+       _err = GetThemeMenuBackgroundRegion(&inMenuRect,
+                                           menuType,
+                                           (RgnHandle)0);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeMenuSeparator(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inItemRect;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetRect, &inItemRect))
+               return NULL;
+       _err = DrawThemeMenuSeparator(&inItemRect);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_GetThemeMenuSeparatorHeight(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       SInt16 outHeight;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetThemeMenuSeparatorHeight(&outHeight);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            outHeight);
+       return _res;
+}
+
+static PyObject *App_GetThemeMenuItemExtra(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeMenuItemType inItemType;
+       SInt16 outHeight;
+       SInt16 outWidth;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &inItemType))
+               return NULL;
+       _err = GetThemeMenuItemExtra(inItemType,
+                                    &outHeight,
+                                    &outWidth);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("hh",
+                            outHeight,
+                            outWidth);
+       return _res;
+}
+
+static PyObject *App_GetThemeMenuTitleExtra(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       SInt16 outWidth;
+       Boolean inIsSquished;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &inIsSquished))
+               return NULL;
+       _err = GetThemeMenuTitleExtra(&outWidth,
+                                     inIsSquished);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            outWidth);
+       return _res;
+}
+
+static PyObject *App_DrawThemeTabPane(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeDrawState inState;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &inRect,
+                             &inState))
+               return NULL;
+       _err = DrawThemeTabPane(&inRect,
+                               inState);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_GetThemeTabRegion(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect inRect;
+       ThemeTabStyle inStyle;
+       ThemeTabDirection inDirection;
+       if (!PyArg_ParseTuple(_args, "O&HH",
+                             PyMac_GetRect, &inRect,
+                             &inStyle,
+                             &inDirection))
+               return NULL;
+       _err = GetThemeTabRegion(&inRect,
+                                inStyle,
+                                inDirection,
+                                (RgnHandle)0);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_SetThemeCursor(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeCursor inCursor;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &inCursor))
+               return NULL;
+       _err = SetThemeCursor(inCursor);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_SetAnimatedThemeCursor(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeCursor inCursor;
+       UInt32 inAnimationStep;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &inCursor,
+                             &inAnimationStep))
+               return NULL;
+       _err = SetAnimatedThemeCursor(inCursor,
+                                     inAnimationStep);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_GetThemeScrollBarThumbStyle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeScrollBarThumbStyle outStyle;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetThemeScrollBarThumbStyle(&outStyle);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("H",
+                            outStyle);
+       return _res;
+}
+
+static PyObject *App_GetThemeScrollBarArrowStyle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeScrollBarArrowStyle outStyle;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetThemeScrollBarArrowStyle(&outStyle);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("H",
+                            outStyle);
+       return _res;
+}
+
+static PyObject *App_GetThemeCheckBoxStyle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeCheckBoxStyle outStyle;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetThemeCheckBoxStyle(&outStyle);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("H",
+                            outStyle);
+       return _res;
+}
+
+static PyObject *App_UseThemeFont(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeFontID inFontID;
+       ScriptCode inScript;
+       if (!PyArg_ParseTuple(_args, "Hh",
+                             &inFontID,
+                             &inScript))
+               return NULL;
+       _err = UseThemeFont(inFontID,
+                           inScript);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeScrollBarArrows(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect bounds;
+       ThemeTrackEnableState enableState;
+       ThemeTrackPressState pressState;
+       Boolean isHoriz;
+       Rect trackBounds;
+       if (!PyArg_ParseTuple(_args, "O&bbb",
+                             PyMac_GetRect, &bounds,
+                             &enableState,
+                             &pressState,
+                             &isHoriz))
+               return NULL;
+       _err = DrawThemeScrollBarArrows(&bounds,
+                                       enableState,
+                                       pressState,
+                                       isHoriz,
+                                       &trackBounds);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildRect, &trackBounds);
+       return _res;
+}
+
+static PyObject *App_GetThemeScrollBarTrackRect(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect bounds;
+       ThemeTrackEnableState enableState;
+       ThemeTrackPressState pressState;
+       Boolean isHoriz;
+       Rect trackBounds;
+       if (!PyArg_ParseTuple(_args, "O&bbb",
+                             PyMac_GetRect, &bounds,
+                             &enableState,
+                             &pressState,
+                             &isHoriz))
+               return NULL;
+       _err = GetThemeScrollBarTrackRect(&bounds,
+                                         enableState,
+                                         pressState,
+                                         isHoriz,
+                                         &trackBounds);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildRect, &trackBounds);
+       return _res;
+}
+
+static PyObject *App_HitTestThemeScrollBarArrows(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Rect scrollBarBounds;
+       ThemeTrackEnableState enableState;
+       ThemeTrackPressState pressState;
+       Boolean isHoriz;
+       Point ptHit;
+       Rect trackBounds;
+       ControlPartCode partcode;
+       if (!PyArg_ParseTuple(_args, "O&bbbO&",
+                             PyMac_GetRect, &scrollBarBounds,
+                             &enableState,
+                             &pressState,
+                             &isHoriz,
+                             PyMac_GetPoint, &ptHit))
+               return NULL;
+       _rv = HitTestThemeScrollBarArrows(&scrollBarBounds,
+                                         enableState,
+                                         pressState,
+                                         isHoriz,
+                                         ptHit,
+                                         &trackBounds,
+                                         &partcode);
+       _res = Py_BuildValue("bO&h",
+                            _rv,
+                            PyMac_BuildRect, &trackBounds,
+                            partcode);
+       return _res;
+}
+
+static PyObject *App_DrawThemeScrollBarDelimiters(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeWindowType flavor;
+       Rect inContRect;
+       ThemeDrawState state;
+       ThemeWindowAttributes attributes;
+       if (!PyArg_ParseTuple(_args, "HO&ll",
+                             &flavor,
+                             PyMac_GetRect, &inContRect,
+                             &state,
+                             &attributes))
+               return NULL;
+       _err = DrawThemeScrollBarDelimiters(flavor,
+                                           &inContRect,
+                                           state,
+                                           attributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_PlayThemeSound(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeSoundKind kind;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &kind))
+               return NULL;
+       _err = PlayThemeSound(kind);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_BeginThemeDragSound(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeDragSoundKind kind;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &kind))
+               return NULL;
+       _err = BeginThemeDragSound(kind);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_EndThemeDragSound(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = EndThemeDragSound();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeTickMark(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Rect bounds;
+       ThemeDrawState state;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &bounds,
+                             &state))
+               return NULL;
+       _err = DrawThemeTickMark(&bounds,
+                                state);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeStandaloneGrowBox(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Point origin;
+       ThemeGrowDirection growDirection;
+       Boolean isSmall;
+       ThemeDrawState state;
+       if (!PyArg_ParseTuple(_args, "O&Hbl",
+                             PyMac_GetPoint, &origin,
+                             &growDirection,
+                             &isSmall,
+                             &state))
+               return NULL;
+       _err = DrawThemeStandaloneGrowBox(origin,
+                                         growDirection,
+                                         isSmall,
+                                         state);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_DrawThemeStandaloneNoGrowBox(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Point origin;
+       ThemeGrowDirection growDirection;
+       Boolean isSmall;
+       ThemeDrawState state;
+       if (!PyArg_ParseTuple(_args, "O&Hbl",
+                             PyMac_GetPoint, &origin,
+                             &growDirection,
+                             &isSmall,
+                             &state))
+               return NULL;
+       _err = DrawThemeStandaloneNoGrowBox(origin,
+                                           growDirection,
+                                           isSmall,
+                                           state);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_GetThemeStandaloneGrowBoxBounds(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Point origin;
+       ThemeGrowDirection growDirection;
+       Boolean isSmall;
+       Rect bounds;
+       if (!PyArg_ParseTuple(_args, "O&Hb",
+                             PyMac_GetPoint, &origin,
+                             &growDirection,
+                             &isSmall))
+               return NULL;
+       _err = GetThemeStandaloneGrowBoxBounds(origin,
+                                              growDirection,
+                                              isSmall,
+                                              &bounds);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildRect, &bounds);
+       return _res;
+}
+
+static PyObject *App_NormalizeThemeDrawingState(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = NormalizeThemeDrawingState();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_ApplyThemeBackground(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeBackgroundKind inKind;
+       Rect bounds;
+       ThemeDrawState inState;
+       SInt16 inDepth;
+       Boolean inColorDev;
+       if (!PyArg_ParseTuple(_args, "lO&lhb",
+                             &inKind,
+                             PyMac_GetRect, &bounds,
+                             &inState,
+                             &inDepth,
+                             &inColorDev))
+               return NULL;
+       _err = ApplyThemeBackground(inKind,
+                                   &bounds,
+                                   inState,
+                                   inDepth,
+                                   inColorDev);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_SetThemeTextColorForWindow(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       WindowPtr window;
+       Boolean isActive;
+       SInt16 depth;
+       Boolean isColorDev;
+       if (!PyArg_ParseTuple(_args, "O&bhb",
+                             WinObj_Convert, &window,
+                             &isActive,
+                             &depth,
+                             &isColorDev))
+               return NULL;
+       _err = SetThemeTextColorForWindow(window,
+                                         isActive,
+                                         depth,
+                                         isColorDev);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *App_IsValidAppearanceFileType(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       OSType fileType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &fileType))
+               return NULL;
+       _rv = IsValidAppearanceFileType(fileType);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *App_GetThemeBrushAsColor(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeBrush inBrush;
+       SInt16 inDepth;
+       Boolean inColorDev;
+       RGBColor outColor;
+       if (!PyArg_ParseTuple(_args, "hhb",
+                             &inBrush,
+                             &inDepth,
+                             &inColorDev))
+               return NULL;
+       _err = GetThemeBrushAsColor(inBrush,
+                                   inDepth,
+                                   inColorDev,
+                                   &outColor);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            QdRGB_New, &outColor);
+       return _res;
+}
+
+static PyObject *App_GetThemeTextColor(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeTextColor inColor;
+       SInt16 inDepth;
+       Boolean inColorDev;
+       RGBColor outColor;
+       if (!PyArg_ParseTuple(_args, "hhb",
+                             &inColor,
+                             &inDepth,
+                             &inColorDev))
+               return NULL;
+       _err = GetThemeTextColor(inColor,
+                                inDepth,
+                                inColorDev,
+                                &outColor);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            QdRGB_New, &outColor);
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *App_GetThemeMetric(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ThemeMetric inMetric;
+       SInt32 outMetric;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &inMetric))
+               return NULL;
+       _err = GetThemeMetric(inMetric,
+                             &outMetric);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outMetric);
+       return _res;
+}
+#endif
+
+static PyMethodDef App_methods[] = {
+       {"RegisterAppearanceClient", (PyCFunction)App_RegisterAppearanceClient, 1,
+        "() -> None"},
+       {"UnregisterAppearanceClient", (PyCFunction)App_UnregisterAppearanceClient, 1,
+        "() -> None"},
+       {"SetThemePen", (PyCFunction)App_SetThemePen, 1,
+        "(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None"},
+       {"SetThemeBackground", (PyCFunction)App_SetThemeBackground, 1,
+        "(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None"},
+       {"SetThemeTextColor", (PyCFunction)App_SetThemeTextColor, 1,
+        "(ThemeTextColor inColor, SInt16 inDepth, Boolean inIsColorDevice) -> None"},
+       {"SetThemeWindowBackground", (PyCFunction)App_SetThemeWindowBackground, 1,
+        "(WindowPtr inWindow, ThemeBrush inBrush, Boolean inUpdate) -> None"},
+       {"DrawThemeWindowHeader", (PyCFunction)App_DrawThemeWindowHeader, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemeWindowListViewHeader", (PyCFunction)App_DrawThemeWindowListViewHeader, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemePlacard", (PyCFunction)App_DrawThemePlacard, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemeEditTextFrame", (PyCFunction)App_DrawThemeEditTextFrame, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemeListBoxFrame", (PyCFunction)App_DrawThemeListBoxFrame, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemeFocusRect", (PyCFunction)App_DrawThemeFocusRect, 1,
+        "(Rect inRect, Boolean inHasFocus) -> None"},
+       {"DrawThemePrimaryGroup", (PyCFunction)App_DrawThemePrimaryGroup, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemeSecondaryGroup", (PyCFunction)App_DrawThemeSecondaryGroup, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemeSeparator", (PyCFunction)App_DrawThemeSeparator, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemeModelessDialogFrame", (PyCFunction)App_DrawThemeModelessDialogFrame, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"DrawThemeGenericWell", (PyCFunction)App_DrawThemeGenericWell, 1,
+        "(Rect inRect, ThemeDrawState inState, Boolean inFillCenter) -> None"},
+       {"DrawThemeFocusRegion", (PyCFunction)App_DrawThemeFocusRegion, 1,
+        "(Boolean inHasFocus) -> None"},
+       {"IsThemeInColor", (PyCFunction)App_IsThemeInColor, 1,
+        "(SInt16 inDepth, Boolean inIsColorDevice) -> (Boolean _rv)"},
+       {"GetThemeAccentColors", (PyCFunction)App_GetThemeAccentColors, 1,
+        "() -> (CTabHandle outColors)"},
+       {"DrawThemeMenuBarBackground", (PyCFunction)App_DrawThemeMenuBarBackground, 1,
+        "(Rect inBounds, ThemeMenuBarState inState, UInt32 inAttributes) -> None"},
+       {"GetThemeMenuBarHeight", (PyCFunction)App_GetThemeMenuBarHeight, 1,
+        "() -> (SInt16 outHeight)"},
+       {"DrawThemeMenuBackground", (PyCFunction)App_DrawThemeMenuBackground, 1,
+        "(Rect inMenuRect, ThemeMenuType inMenuType) -> None"},
+       {"GetThemeMenuBackgroundRegion", (PyCFunction)App_GetThemeMenuBackgroundRegion, 1,
+        "(Rect inMenuRect, ThemeMenuType menuType) -> None"},
+       {"DrawThemeMenuSeparator", (PyCFunction)App_DrawThemeMenuSeparator, 1,
+        "(Rect inItemRect) -> None"},
+       {"GetThemeMenuSeparatorHeight", (PyCFunction)App_GetThemeMenuSeparatorHeight, 1,
+        "() -> (SInt16 outHeight)"},
+       {"GetThemeMenuItemExtra", (PyCFunction)App_GetThemeMenuItemExtra, 1,
+        "(ThemeMenuItemType inItemType) -> (SInt16 outHeight, SInt16 outWidth)"},
+       {"GetThemeMenuTitleExtra", (PyCFunction)App_GetThemeMenuTitleExtra, 1,
+        "(Boolean inIsSquished) -> (SInt16 outWidth)"},
+       {"DrawThemeTabPane", (PyCFunction)App_DrawThemeTabPane, 1,
+        "(Rect inRect, ThemeDrawState inState) -> None"},
+       {"GetThemeTabRegion", (PyCFunction)App_GetThemeTabRegion, 1,
+        "(Rect inRect, ThemeTabStyle inStyle, ThemeTabDirection inDirection) -> None"},
+       {"SetThemeCursor", (PyCFunction)App_SetThemeCursor, 1,
+        "(ThemeCursor inCursor) -> None"},
+       {"SetAnimatedThemeCursor", (PyCFunction)App_SetAnimatedThemeCursor, 1,
+        "(ThemeCursor inCursor, UInt32 inAnimationStep) -> None"},
+       {"GetThemeScrollBarThumbStyle", (PyCFunction)App_GetThemeScrollBarThumbStyle, 1,
+        "() -> (ThemeScrollBarThumbStyle outStyle)"},
+       {"GetThemeScrollBarArrowStyle", (PyCFunction)App_GetThemeScrollBarArrowStyle, 1,
+        "() -> (ThemeScrollBarArrowStyle outStyle)"},
+       {"GetThemeCheckBoxStyle", (PyCFunction)App_GetThemeCheckBoxStyle, 1,
+        "() -> (ThemeCheckBoxStyle outStyle)"},
+       {"UseThemeFont", (PyCFunction)App_UseThemeFont, 1,
+        "(ThemeFontID inFontID, ScriptCode inScript) -> None"},
+       {"DrawThemeScrollBarArrows", (PyCFunction)App_DrawThemeScrollBarArrows, 1,
+        "(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)"},
+       {"GetThemeScrollBarTrackRect", (PyCFunction)App_GetThemeScrollBarTrackRect, 1,
+        "(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)"},
+       {"HitTestThemeScrollBarArrows", (PyCFunction)App_HitTestThemeScrollBarArrows, 1,
+        "(Rect scrollBarBounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz, Point ptHit) -> (Boolean _rv, Rect trackBounds, ControlPartCode partcode)"},
+       {"DrawThemeScrollBarDelimiters", (PyCFunction)App_DrawThemeScrollBarDelimiters, 1,
+        "(ThemeWindowType flavor, Rect inContRect, ThemeDrawState state, ThemeWindowAttributes attributes) -> None"},
+       {"PlayThemeSound", (PyCFunction)App_PlayThemeSound, 1,
+        "(ThemeSoundKind kind) -> None"},
+       {"BeginThemeDragSound", (PyCFunction)App_BeginThemeDragSound, 1,
+        "(ThemeDragSoundKind kind) -> None"},
+       {"EndThemeDragSound", (PyCFunction)App_EndThemeDragSound, 1,
+        "() -> None"},
+       {"DrawThemeTickMark", (PyCFunction)App_DrawThemeTickMark, 1,
+        "(Rect bounds, ThemeDrawState state) -> None"},
+       {"DrawThemeStandaloneGrowBox", (PyCFunction)App_DrawThemeStandaloneGrowBox, 1,
+        "(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None"},
+       {"DrawThemeStandaloneNoGrowBox", (PyCFunction)App_DrawThemeStandaloneNoGrowBox, 1,
+        "(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None"},
+       {"GetThemeStandaloneGrowBoxBounds", (PyCFunction)App_GetThemeStandaloneGrowBoxBounds, 1,
+        "(Point origin, ThemeGrowDirection growDirection, Boolean isSmall) -> (Rect bounds)"},
+       {"NormalizeThemeDrawingState", (PyCFunction)App_NormalizeThemeDrawingState, 1,
+        "() -> None"},
+       {"ApplyThemeBackground", (PyCFunction)App_ApplyThemeBackground, 1,
+        "(ThemeBackgroundKind inKind, Rect bounds, ThemeDrawState inState, SInt16 inDepth, Boolean inColorDev) -> None"},
+       {"SetThemeTextColorForWindow", (PyCFunction)App_SetThemeTextColorForWindow, 1,
+        "(WindowPtr window, Boolean isActive, SInt16 depth, Boolean isColorDev) -> None"},
+       {"IsValidAppearanceFileType", (PyCFunction)App_IsValidAppearanceFileType, 1,
+        "(OSType fileType) -> (Boolean _rv)"},
+       {"GetThemeBrushAsColor", (PyCFunction)App_GetThemeBrushAsColor, 1,
+        "(ThemeBrush inBrush, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)"},
+       {"GetThemeTextColor", (PyCFunction)App_GetThemeTextColor, 1,
+        "(ThemeTextColor inColor, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)"},
+
+#if TARGET_API_MAC_CARBON
+       {"GetThemeMetric", (PyCFunction)App_GetThemeMetric, 1,
+        "(ThemeMetric inMetric) -> (SInt32 outMetric)"},
+#endif
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initApp(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+
+       m = Py_InitModule("App", App_methods);
+       d = PyModule_GetDict(m);
+       App_Error = PyMac_GetOSErrException();
+       if (App_Error == NULL ||
+           PyDict_SetItemString(d, "Error", App_Error) != 0)
+               return;
+}
+
+/* ========================= End module App ========================= */
+
diff --git a/Mac/Modules/app/appsupport.py b/Mac/Modules/app/appsupport.py
new file mode 100644 (file)
index 0000000..d370a57
--- /dev/null
@@ -0,0 +1,117 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Appearance.h'         # The Apple header file
+MODNAME = 'App'                                # The name of the module
+OBJECTNAME = 'UNUSED'                  # The basic name of the objects used here
+KIND = 'Record'                                # Usually 'Ptr' or 'Handle'
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = OBJECTNAME + KIND         # The C type used to represent them
+OBJECTPREFIX = MODPREFIX + 'Obj'       # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+#MenuRef = OpaqueByValueType("MenuRef", "MenuObj")
+
+
+#WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX)
+
+RgnHandle = FakeType("(RgnHandle)0")
+# XXXX Should be next, but this will break a lot of code...
+# RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj")
+
+#KeyMap = ArrayOutputBufferType("KeyMap")
+#MacOSEventKind = Type("MacOSEventKind", "h") # Old-style
+#MacOSEventMask = Type("MacOSEventMask", "h") # Old-style
+#EventMask = Type("EventMask", "h")
+#EventKind = Type("EventKind", "h")
+ThemeBrush = Type("ThemeBrush", "h")
+ThemeColor = Type("ThemeColor", "h")
+ThemeTextColor = Type("ThemeTextColor", "h")
+ThemeMenuBarState = Type("ThemeMenuBarState", "H")
+ThemeMenuState = Type("ThemeMenuState", "H")
+ThemeMenuType = Type("ThemeMenuType", "H")
+ThemeMenuItemType = Type("ThemeMenuItemType", "H")
+ThemeFontID = Type("ThemeFontID", "H")
+ThemeTabStyle = Type("ThemeTabStyle", "H")
+ThemeTabDirection = Type("ThemeTabDirection", "H")
+ThemeDrawState = Type("ThemeDrawState", "l")
+ThemeCursor = Type("ThemeCursor", "l")
+ThemeCheckBoxStyle = Type("ThemeCheckBoxStyle", "H")
+ThemeScrollBarArrowStyle = Type("ThemeScrollBarArrowStyle", "H")
+ThemeScrollBarThumbStyle = Type("ThemeScrollBarThumbStyle", "H")
+CTabHandle = OpaqueByValueType("CTabHandle", "ResObj")
+ThemeTrackEnableState = Type("ThemeTrackEnableState", "b")
+ThemeTrackPressState = Type("ThemeTrackPressState", "b")
+ThemeThumbDirection = Type("ThemeThumbDirection", "b")
+ThemeTrackAttributes = Type("ThemeTrackAttributes", "H")
+ControlPartCode = Type("ControlPartCode", "h")
+ThemeWindowAttributes = Type("ThemeWindowAttributes", "l")
+ThemeWindowType = Type("ThemeWindowType", "H")
+ThemeTitleBarWidget = Type("ThemeTitleBarWidget", "H")
+ThemeArrowOrientation = Type("ThemeArrowOrientation", "H")
+ThemePopupArrowSize = Type("ThemePopupArrowSize", "H")
+ThemeGrowDirection = Type("ThemeGrowDirection", "H")
+ThemeSoundKind = OSTypeType("ThemeSoundKind")
+ThemeDragSoundKind = OSTypeType("ThemeDragSoundKind")
+ThemeBackgroundKind = Type("ThemeBackgroundKind", "l")
+ThemeMetric = Type("ThemeMetric", "l")
+RGBColor = OpaqueType("RGBColor", "QdRGB")
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Appearance.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+"""
+
+## class MyObjectDefinition(GlobalObjectDefinition):
+##     def outputCheckNewArg(self):
+##             Output("if (itself == NULL) return PyMac_Error(resNotFound);")
+##     def outputCheckConvertArg(self):
+##             OutLbrace("if (DlgObj_Check(v))")
+##             Output("*p_itself = ((WindowObject *)v)->ob_itself;")
+##             Output("return 1;")
+##             OutRbrace()
+##             Out("""
+##             if (v == Py_None) { *p_itself = NULL; return 1; }
+##             if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; }
+##             """)
+
+# From here on it's basically all boiler plate...
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+##object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
+##module.addobject(object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+##Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+##methods = []
+execfile(INPUTFILE)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+##for f in methods: object.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Modules/cm/Cmmodule.c b/Mac/Modules/cm/Cmmodule.c
new file mode 100644 (file)
index 0000000..1738f3e
--- /dev/null
@@ -0,0 +1,790 @@
+
+/* =========================== Module Cm ============================ */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Components.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_CmpObj_New(Component);
+extern int _CmpObj_Convert(PyObject *, Component *);
+extern PyObject *_CmpInstObj_New(ComponentInstance);
+extern int _CmpInstObj_Convert(PyObject *, ComponentInstance *);
+
+#define CmpObj_New _CmpObj_New
+#define CmpObj_Convert _CmpObj_Convert
+#define CmpInstObj_New _CmpInstObj_New
+#define CmpInstObj_Convert _CmpInstObj_Convert
+#endif
+
+/*
+** Parse/generate ComponentDescriptor records
+*/
+static PyObject *
+CmpDesc_New(ComponentDescription *itself)
+{
+
+       return Py_BuildValue("O&O&O&ll", 
+               PyMac_BuildOSType, itself->componentType,
+               PyMac_BuildOSType, itself->componentSubType,
+               PyMac_BuildOSType, itself->componentManufacturer,
+               itself->componentFlags, itself->componentFlagsMask);
+}
+
+static int
+CmpDesc_Convert(PyObject *v, ComponentDescription *p_itself)
+{
+       return PyArg_ParseTuple(v, "O&O&O&ll",
+               PyMac_GetOSType, &p_itself->componentType,
+               PyMac_GetOSType, &p_itself->componentSubType,
+               PyMac_GetOSType, &p_itself->componentManufacturer,
+               &p_itself->componentFlags, &p_itself->componentFlagsMask);
+}
+
+
+static PyObject *Cm_Error;
+
+/* ----------------- Object type ComponentInstance ------------------ */
+
+PyTypeObject ComponentInstance_Type;
+
+#define CmpInstObj_Check(x) ((x)->ob_type == &ComponentInstance_Type)
+
+typedef struct ComponentInstanceObject {
+       PyObject_HEAD
+       ComponentInstance ob_itself;
+} ComponentInstanceObject;
+
+PyObject *CmpInstObj_New(ComponentInstance itself)
+{
+       ComponentInstanceObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(Cm_Error,"NULL ComponentInstance");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(ComponentInstanceObject, &ComponentInstance_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+CmpInstObj_Convert(PyObject *v, ComponentInstance *p_itself)
+{
+       if (!CmpInstObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "ComponentInstance required");
+               return 0;
+       }
+       *p_itself = ((ComponentInstanceObject *)v)->ob_itself;
+       return 1;
+}
+
+static void CmpInstObj_dealloc(ComponentInstanceObject *self)
+{
+       /* Cleanup of self->ob_itself goes here */
+       PyMem_DEL(self);
+}
+
+static PyObject *CmpInstObj_CloseComponent(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = CloseComponent(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *CmpInstObj_GetComponentInstanceError(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetComponentInstanceError(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *CmpInstObj_SetComponentInstanceError(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr theError;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &theError))
+               return NULL;
+       SetComponentInstanceError(_self->ob_itself,
+                                 theError);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *CmpInstObj_GetComponentInstanceStorage(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetComponentInstanceStorage(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *CmpInstObj_SetComponentInstanceStorage(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle theStorage;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theStorage))
+               return NULL;
+       SetComponentInstanceStorage(_self->ob_itself,
+                                   theStorage);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *CmpInstObj_GetComponentInstanceA5(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetComponentInstanceA5(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *CmpInstObj_SetComponentInstanceA5(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long theA5;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &theA5))
+               return NULL;
+       SetComponentInstanceA5(_self->ob_itself,
+                              theA5);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *CmpInstObj_ComponentFunctionImplemented(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       short ftnNumber;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &ftnNumber))
+               return NULL;
+       _rv = ComponentFunctionImplemented(_self->ob_itself,
+                                          ftnNumber);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *CmpInstObj_GetComponentVersion(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetComponentVersion(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *CmpInstObj_ComponentSetTarget(ComponentInstanceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       ComponentInstance target;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &target))
+               return NULL;
+       _rv = ComponentSetTarget(_self->ob_itself,
+                                target);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyMethodDef CmpInstObj_methods[] = {
+       {"CloseComponent", (PyCFunction)CmpInstObj_CloseComponent, 1,
+        "() -> None"},
+       {"GetComponentInstanceError", (PyCFunction)CmpInstObj_GetComponentInstanceError, 1,
+        "() -> None"},
+       {"SetComponentInstanceError", (PyCFunction)CmpInstObj_SetComponentInstanceError, 1,
+        "(OSErr theError) -> None"},
+       {"GetComponentInstanceStorage", (PyCFunction)CmpInstObj_GetComponentInstanceStorage, 1,
+        "() -> (Handle _rv)"},
+       {"SetComponentInstanceStorage", (PyCFunction)CmpInstObj_SetComponentInstanceStorage, 1,
+        "(Handle theStorage) -> None"},
+
+#if !TARGET_API_MAC_CARBON
+       {"GetComponentInstanceA5", (PyCFunction)CmpInstObj_GetComponentInstanceA5, 1,
+        "() -> (long _rv)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"SetComponentInstanceA5", (PyCFunction)CmpInstObj_SetComponentInstanceA5, 1,
+        "(long theA5) -> None"},
+#endif
+       {"ComponentFunctionImplemented", (PyCFunction)CmpInstObj_ComponentFunctionImplemented, 1,
+        "(short ftnNumber) -> (long _rv)"},
+       {"GetComponentVersion", (PyCFunction)CmpInstObj_GetComponentVersion, 1,
+        "() -> (long _rv)"},
+       {"ComponentSetTarget", (PyCFunction)CmpInstObj_ComponentSetTarget, 1,
+        "(ComponentInstance target) -> (long _rv)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain CmpInstObj_chain = { CmpInstObj_methods, NULL };
+
+static PyObject *CmpInstObj_getattr(ComponentInstanceObject *self, char *name)
+{
+       return Py_FindMethodInChain(&CmpInstObj_chain, (PyObject *)self, name);
+}
+
+#define CmpInstObj_setattr NULL
+
+#define CmpInstObj_compare NULL
+
+#define CmpInstObj_repr NULL
+
+#define CmpInstObj_hash NULL
+
+PyTypeObject ComponentInstance_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "ComponentInstance", /*tp_name*/
+       sizeof(ComponentInstanceObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) CmpInstObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) CmpInstObj_getattr, /*tp_getattr*/
+       (setattrfunc) CmpInstObj_setattr, /*tp_setattr*/
+       (cmpfunc) CmpInstObj_compare, /*tp_compare*/
+       (reprfunc) CmpInstObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) CmpInstObj_hash, /*tp_hash*/
+};
+
+/* --------------- End object type ComponentInstance ---------------- */
+
+
+/* --------------------- Object type Component ---------------------- */
+
+PyTypeObject Component_Type;
+
+#define CmpObj_Check(x) ((x)->ob_type == &Component_Type)
+
+typedef struct ComponentObject {
+       PyObject_HEAD
+       Component ob_itself;
+} ComponentObject;
+
+PyObject *CmpObj_New(Component itself)
+{
+       ComponentObject *it;
+       if (itself == NULL) {
+                                               /* XXXX Or should we return None? */
+                                               PyErr_SetString(Cm_Error,"No such component");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(ComponentObject, &Component_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+CmpObj_Convert(PyObject *v, Component *p_itself)
+{
+       if ( v == Py_None ) {
+                                               *p_itself = 0;
+                                               return 1;
+                       }
+       if (!CmpObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "Component required");
+               return 0;
+       }
+       *p_itself = ((ComponentObject *)v)->ob_itself;
+       return 1;
+}
+
+static void CmpObj_dealloc(ComponentObject *self)
+{
+       /* Cleanup of self->ob_itself goes here */
+       PyMem_DEL(self);
+}
+
+static PyObject *CmpObj_UnregisterComponent(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = UnregisterComponent(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *CmpObj_GetComponentInfo(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ComponentDescription cd;
+       Handle componentName;
+       Handle componentInfo;
+       Handle componentIcon;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             ResObj_Convert, &componentName,
+                             ResObj_Convert, &componentInfo,
+                             ResObj_Convert, &componentIcon))
+               return NULL;
+       _err = GetComponentInfo(_self->ob_itself,
+                               &cd,
+                               componentName,
+                               componentInfo,
+                               componentIcon);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            CmpDesc_New, &cd);
+       return _res;
+}
+
+static PyObject *CmpObj_OpenComponent(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentInstance _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = OpenComponent(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            CmpInstObj_New, _rv);
+       return _res;
+}
+
+static PyObject *CmpObj_GetComponentRefcon(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetComponentRefcon(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *CmpObj_SetComponentRefcon(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long theRefcon;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &theRefcon))
+               return NULL;
+       SetComponentRefcon(_self->ob_itself,
+                          theRefcon);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *CmpObj_OpenComponentResFile(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = OpenComponentResFile(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *CmpObj_GetComponentResource(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType resType;
+       short resID;
+       Handle theResource;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetOSType, &resType,
+                             &resID))
+               return NULL;
+       _err = GetComponentResource(_self->ob_itself,
+                                   resType,
+                                   resID,
+                                   &theResource);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theResource);
+       return _res;
+}
+
+static PyObject *CmpObj_GetComponentIndString(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Str255 theString;
+       short strListID;
+       short index;
+       if (!PyArg_ParseTuple(_args, "O&hh",
+                             PyMac_GetStr255, theString,
+                             &strListID,
+                             &index))
+               return NULL;
+       _err = GetComponentIndString(_self->ob_itself,
+                                    theString,
+                                    strListID,
+                                    index);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *CmpObj_ResolveComponentAlias(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Component _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = ResolveComponentAlias(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            CmpObj_New, _rv);
+       return _res;
+}
+
+static PyObject *CmpObj_CountComponentInstances(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CountComponentInstances(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *CmpObj_SetDefaultComponent(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short flags;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &flags))
+               return NULL;
+       _err = SetDefaultComponent(_self->ob_itself,
+                                  flags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *CmpObj_CaptureComponent(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Component _rv;
+       Component capturingComponent;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpObj_Convert, &capturingComponent))
+               return NULL;
+       _rv = CaptureComponent(_self->ob_itself,
+                              capturingComponent);
+       _res = Py_BuildValue("O&",
+                            CmpObj_New, _rv);
+       return _res;
+}
+
+static PyObject *CmpObj_UncaptureComponent(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = UncaptureComponent(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *CmpObj_GetComponentIconSuite(ComponentObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle iconSuite;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetComponentIconSuite(_self->ob_itself,
+                                    &iconSuite);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, iconSuite);
+       return _res;
+}
+
+static PyMethodDef CmpObj_methods[] = {
+       {"UnregisterComponent", (PyCFunction)CmpObj_UnregisterComponent, 1,
+        "() -> None"},
+       {"GetComponentInfo", (PyCFunction)CmpObj_GetComponentInfo, 1,
+        "(Handle componentName, Handle componentInfo, Handle componentIcon) -> (ComponentDescription cd)"},
+       {"OpenComponent", (PyCFunction)CmpObj_OpenComponent, 1,
+        "() -> (ComponentInstance _rv)"},
+       {"GetComponentRefcon", (PyCFunction)CmpObj_GetComponentRefcon, 1,
+        "() -> (long _rv)"},
+       {"SetComponentRefcon", (PyCFunction)CmpObj_SetComponentRefcon, 1,
+        "(long theRefcon) -> None"},
+       {"OpenComponentResFile", (PyCFunction)CmpObj_OpenComponentResFile, 1,
+        "() -> (short _rv)"},
+       {"GetComponentResource", (PyCFunction)CmpObj_GetComponentResource, 1,
+        "(OSType resType, short resID) -> (Handle theResource)"},
+       {"GetComponentIndString", (PyCFunction)CmpObj_GetComponentIndString, 1,
+        "(Str255 theString, short strListID, short index) -> None"},
+       {"ResolveComponentAlias", (PyCFunction)CmpObj_ResolveComponentAlias, 1,
+        "() -> (Component _rv)"},
+       {"CountComponentInstances", (PyCFunction)CmpObj_CountComponentInstances, 1,
+        "() -> (long _rv)"},
+       {"SetDefaultComponent", (PyCFunction)CmpObj_SetDefaultComponent, 1,
+        "(short flags) -> None"},
+       {"CaptureComponent", (PyCFunction)CmpObj_CaptureComponent, 1,
+        "(Component capturingComponent) -> (Component _rv)"},
+       {"UncaptureComponent", (PyCFunction)CmpObj_UncaptureComponent, 1,
+        "() -> None"},
+       {"GetComponentIconSuite", (PyCFunction)CmpObj_GetComponentIconSuite, 1,
+        "() -> (Handle iconSuite)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain CmpObj_chain = { CmpObj_methods, NULL };
+
+static PyObject *CmpObj_getattr(ComponentObject *self, char *name)
+{
+       return Py_FindMethodInChain(&CmpObj_chain, (PyObject *)self, name);
+}
+
+#define CmpObj_setattr NULL
+
+#define CmpObj_compare NULL
+
+#define CmpObj_repr NULL
+
+#define CmpObj_hash NULL
+
+PyTypeObject Component_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "Component", /*tp_name*/
+       sizeof(ComponentObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) CmpObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) CmpObj_getattr, /*tp_getattr*/
+       (setattrfunc) CmpObj_setattr, /*tp_setattr*/
+       (cmpfunc) CmpObj_compare, /*tp_compare*/
+       (reprfunc) CmpObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) CmpObj_hash, /*tp_hash*/
+};
+
+/* ------------------- End object type Component -------------------- */
+
+
+static PyObject *Cm_RegisterComponentResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Component _rv;
+       ComponentResourceHandle cr;
+       short global;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             ResObj_Convert, &cr,
+                             &global))
+               return NULL;
+       _rv = RegisterComponentResource(cr,
+                                       global);
+       _res = Py_BuildValue("O&",
+                            CmpObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Cm_FindNextComponent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Component _rv;
+       Component aComponent;
+       ComponentDescription looking;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             CmpObj_Convert, &aComponent,
+                             CmpDesc_Convert, &looking))
+               return NULL;
+       _rv = FindNextComponent(aComponent,
+                               &looking);
+       _res = Py_BuildValue("O&",
+                            CmpObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Cm_CountComponents(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       ComponentDescription looking;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpDesc_Convert, &looking))
+               return NULL;
+       _rv = CountComponents(&looking);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Cm_GetComponentListModSeed(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetComponentListModSeed();
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Cm_CloseComponentResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short refnum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &refnum))
+               return NULL;
+       _err = CloseComponentResFile(refnum);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Cm_OpenDefaultComponent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentInstance _rv;
+       OSType componentType;
+       OSType componentSubType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetOSType, &componentType,
+                             PyMac_GetOSType, &componentSubType))
+               return NULL;
+       _rv = OpenDefaultComponent(componentType,
+                                  componentSubType);
+       _res = Py_BuildValue("O&",
+                            CmpInstObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Cm_RegisterComponentResourceFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       short resRefNum;
+       short global;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &resRefNum,
+                             &global))
+               return NULL;
+       _rv = RegisterComponentResourceFile(resRefNum,
+                                           global);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyMethodDef Cm_methods[] = {
+       {"RegisterComponentResource", (PyCFunction)Cm_RegisterComponentResource, 1,
+        "(ComponentResourceHandle cr, short global) -> (Component _rv)"},
+       {"FindNextComponent", (PyCFunction)Cm_FindNextComponent, 1,
+        "(Component aComponent, ComponentDescription looking) -> (Component _rv)"},
+       {"CountComponents", (PyCFunction)Cm_CountComponents, 1,
+        "(ComponentDescription looking) -> (long _rv)"},
+       {"GetComponentListModSeed", (PyCFunction)Cm_GetComponentListModSeed, 1,
+        "() -> (long _rv)"},
+       {"CloseComponentResFile", (PyCFunction)Cm_CloseComponentResFile, 1,
+        "(short refnum) -> None"},
+       {"OpenDefaultComponent", (PyCFunction)Cm_OpenDefaultComponent, 1,
+        "(OSType componentType, OSType componentSubType) -> (ComponentInstance _rv)"},
+       {"RegisterComponentResourceFile", (PyCFunction)Cm_RegisterComponentResourceFile, 1,
+        "(short resRefNum, short global) -> (long _rv)"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initCm(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(Component, CmpObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Component, CmpObj_Convert);
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, CmpInstObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, CmpInstObj_Convert);
+
+
+       m = Py_InitModule("Cm", Cm_methods);
+       d = PyModule_GetDict(m);
+       Cm_Error = PyMac_GetOSErrException();
+       if (Cm_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Cm_Error) != 0)
+               return;
+       ComponentInstance_Type.ob_type = &PyType_Type;
+       Py_INCREF(&ComponentInstance_Type);
+       if (PyDict_SetItemString(d, "ComponentInstanceType", (PyObject *)&ComponentInstance_Type) != 0)
+               Py_FatalError("can't initialize ComponentInstanceType");
+       Component_Type.ob_type = &PyType_Type;
+       Py_INCREF(&Component_Type);
+       if (PyDict_SetItemString(d, "ComponentType", (PyObject *)&Component_Type) != 0)
+               Py_FatalError("can't initialize ComponentType");
+}
+
+/* ========================= End module Cm ========================== */
+
diff --git a/Mac/Modules/cm/cmsupport.py b/Mac/Modules/cm/cmsupport.py
new file mode 100644 (file)
index 0000000..cb9112b
--- /dev/null
@@ -0,0 +1,130 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Components.h'         # The Apple header file
+MODNAME = 'Cm'                         # The name of the module
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+C_OBJECTPREFIX = 'CmpObj'      # The prefix for object methods
+CI_OBJECTPREFIX = 'CmpInstObj'
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Components.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_CmpObj_New(Component);
+extern int _CmpObj_Convert(PyObject *, Component *);
+extern PyObject *_CmpInstObj_New(ComponentInstance);
+extern int _CmpInstObj_Convert(PyObject *, ComponentInstance *);
+
+#define CmpObj_New _CmpObj_New
+#define CmpObj_Convert _CmpObj_Convert
+#define CmpInstObj_New _CmpInstObj_New
+#define CmpInstObj_Convert _CmpInstObj_Convert
+#endif
+
+/*
+** Parse/generate ComponentDescriptor records
+*/
+static PyObject *
+CmpDesc_New(ComponentDescription *itself)
+{
+
+       return Py_BuildValue("O&O&O&ll", 
+               PyMac_BuildOSType, itself->componentType,
+               PyMac_BuildOSType, itself->componentSubType,
+               PyMac_BuildOSType, itself->componentManufacturer,
+               itself->componentFlags, itself->componentFlagsMask);
+}
+
+static int
+CmpDesc_Convert(PyObject *v, ComponentDescription *p_itself)
+{
+       return PyArg_ParseTuple(v, "O&O&O&ll",
+               PyMac_GetOSType, &p_itself->componentType,
+               PyMac_GetOSType, &p_itself->componentSubType,
+               PyMac_GetOSType, &p_itself->componentManufacturer,
+               &p_itself->componentFlags, &p_itself->componentFlagsMask);
+}
+
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(Component, CmpObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Component, CmpObj_Convert);
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, CmpInstObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, CmpInstObj_Convert);
+"""
+
+ComponentDescription = OpaqueType('ComponentDescription', 'CmpDesc')
+Component = OpaqueByValueType('Component', C_OBJECTPREFIX)
+ComponentInstance = OpaqueByValueType('ComponentInstance', CI_OBJECTPREFIX)
+ComponentResult = Type("ComponentResult", "l")
+
+ComponentResourceHandle = OpaqueByValueType("ComponentResourceHandle", "ResObj")
+
+class MyCIObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(Cm_Error,"NULL ComponentInstance");
+                                       return NULL;
+                               }""")
+
+class MyCObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       /* XXXX Or should we return None? */
+                                       PyErr_SetString(Cm_Error,"No such component");
+                                       return NULL;
+                               }""")
+                               
+       def outputCheckConvertArg(self):
+               Output("""if ( v == Py_None ) {
+                                       *p_itself = 0;
+                                       return 1;
+               }""")
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+ci_object = MyCIObjectDefinition('ComponentInstance', CI_OBJECTPREFIX,
+               'ComponentInstance')
+c_object = MyCObjectDefinition('Component', C_OBJECTPREFIX, 'Component')
+module.addobject(ci_object)
+module.addobject(c_object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+c_methods = []
+ci_methods = []
+execfile(INPUTFILE)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+for f in c_methods: c_object.add(f)
+for f in ci_methods: ci_object.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Modules/dlg/Dlgmodule.c b/Mac/Modules/dlg/Dlgmodule.c
new file mode 100644 (file)
index 0000000..3c3c855
--- /dev/null
@@ -0,0 +1,1426 @@
+
+/* =========================== Module Dlg =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Dialogs.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_DlgObj_New(DialogRef);
+extern PyObject *_DlgObj_WhichDialog(DialogRef);
+extern int _DlgObj_Convert(PyObject *, DialogRef *);
+
+#define DlgObj_New _DlgObj_New
+#define DlgObj_WhichDialog _DlgObj_WhichDialog
+#define DlgObj_Convert _DlgObj_Convert
+#endif
+
+#if !ACCESSOR_CALLS_ARE_FUNCTIONS
+#define GetDialogTextEditHandle(dlg) (((DialogPeek)(dlg))->textH)
+#define SetPortDialogPort(dlg) SetPort(dlg)
+#define GetDialogPort(dlg) ((CGrafPtr)(dlg))
+#define GetDialogFromWindow(win) ((DialogRef)(win))
+#endif
+
+/* XXX Shouldn't this be a stack? */
+static PyObject *Dlg_FilterProc_callback = NULL;
+
+static pascal Boolean Dlg_UnivFilterProc(DialogPtr dialog,
+                                         EventRecord *event,
+                                         short *itemHit)
+{
+       Boolean rv;
+       PyObject *args, *res;
+       PyObject *callback = Dlg_FilterProc_callback;
+       if (callback == NULL)
+               return 0; /* Default behavior */
+       Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
+       args = Py_BuildValue("O&O&", DlgObj_WhichDialog, dialog, PyMac_BuildEventRecord, event);
+       if (args == NULL)
+               res = NULL;
+       else {
+               res = PyEval_CallObject(callback, args);
+               Py_DECREF(args);
+       }
+       if (res == NULL) {
+               PySys_WriteStderr("Exception in Dialog Filter\n");
+               PyErr_Print();
+               *itemHit = -1; /* Fake return item */
+               return 1; /* We handled it */
+       }
+       else {
+               Dlg_FilterProc_callback = callback;
+               if (PyInt_Check(res)) {
+                       *itemHit = PyInt_AsLong(res);
+                       rv = 1;
+               }
+               else
+                       rv = PyObject_IsTrue(res);
+       }
+       Py_DECREF(res);
+       return rv;
+}
+
+static ModalFilterUPP
+Dlg_PassFilterProc(PyObject *callback)
+{
+       PyObject *tmp = Dlg_FilterProc_callback;
+       static ModalFilterUPP UnivFilterUpp = NULL;
+       
+       Dlg_FilterProc_callback = NULL;
+       if (callback == Py_None) {
+               Py_XDECREF(tmp);
+               return NULL;
+       }
+       Py_INCREF(callback);
+       Dlg_FilterProc_callback = callback;
+       Py_XDECREF(tmp);
+       if ( UnivFilterUpp == NULL )
+               UnivFilterUpp = NewModalFilterUPP(&Dlg_UnivFilterProc);
+       return UnivFilterUpp;
+}
+
+static PyObject *Dlg_UserItemProc_callback = NULL;
+
+static pascal void Dlg_UnivUserItemProc(DialogPtr dialog,
+                                         short item)
+{
+       PyObject *args, *res;
+
+       if (Dlg_UserItemProc_callback == NULL)
+               return; /* Default behavior */
+       Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
+       args = Py_BuildValue("O&h", DlgObj_WhichDialog, dialog, item);
+       if (args == NULL)
+               res = NULL;
+       else {
+               res = PyEval_CallObject(Dlg_UserItemProc_callback, args);
+               Py_DECREF(args);
+       }
+       if (res == NULL) {
+               PySys_WriteStderr("Exception in Dialog UserItem proc\n");
+               PyErr_Print();
+       }
+       Py_XDECREF(res);
+       return;
+}
+
+#if 0
+/*
+** Treating DialogObjects as WindowObjects is (I think) illegal under Carbon.
+** However, as they are still identical under MacOS9 Carbon this is a problem, even
+** if we neatly call GetDialogWindow() at the right places: there's one refcon field
+** and it points to the DialogObject, so WinObj_WhichWindow will smartly return the
+** dialog object, and therefore we still don't have a WindowObject.
+** I'll leave the chaining code in place for now, with this comment to warn the
+** unsuspecting victims (i.e. me, probably, in a few weeks:-)
+*/
+extern PyMethodChain WinObj_chain;
+#endif
+
+static PyObject *Dlg_Error;
+
+/* ----------------------- Object type Dialog ----------------------- */
+
+PyTypeObject Dialog_Type;
+
+#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
+
+typedef struct DialogObject {
+       PyObject_HEAD
+       DialogPtr ob_itself;
+} DialogObject;
+
+PyObject *DlgObj_New(DialogPtr itself)
+{
+       DialogObject *it;
+       if (itself == NULL) return Py_None;
+       it = PyObject_NEW(DialogObject, &Dialog_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       SetWRefCon(GetDialogWindow(itself), (long)it);
+       return (PyObject *)it;
+}
+DlgObj_Convert(PyObject *v, DialogPtr *p_itself)
+{
+       if (v == Py_None) { *p_itself = NULL; return 1; }
+       if (PyInt_Check(v)) { *p_itself = (DialogPtr)PyInt_AsLong(v);
+                             return 1; }
+       if (!DlgObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "Dialog required");
+               return 0;
+       }
+       *p_itself = ((DialogObject *)v)->ob_itself;
+       return 1;
+}
+
+static void DlgObj_dealloc(DialogObject *self)
+{
+       DisposeDialog(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *DlgObj_DrawDialog(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DrawDialog(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_UpdateDialog(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle updateRgn;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &updateRgn))
+               return NULL;
+       UpdateDialog(_self->ob_itself,
+                    updateRgn);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_HideDialogItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex itemNo;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &itemNo))
+               return NULL;
+       HideDialogItem(_self->ob_itself,
+                      itemNo);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_ShowDialogItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex itemNo;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &itemNo))
+               return NULL;
+       ShowDialogItem(_self->ob_itself,
+                      itemNo);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_FindDialogItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndexZeroBased _rv;
+       Point thePt;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &thePt))
+               return NULL;
+       _rv = FindDialogItem(_self->ob_itself,
+                            thePt);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *DlgObj_DialogCut(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DialogCut(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_DialogPaste(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DialogPaste(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_DialogCopy(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DialogCopy(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_DialogDelete(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DialogDelete(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex itemNo;
+       DialogItemType itemType;
+       Handle item;
+       Rect box;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &itemNo))
+               return NULL;
+       GetDialogItem(_self->ob_itself,
+                     itemNo,
+                     &itemType,
+                     &item,
+                     &box);
+       _res = Py_BuildValue("hO&O&",
+                            itemType,
+                            OptResObj_New, item,
+                            PyMac_BuildRect, &box);
+       return _res;
+}
+
+static PyObject *DlgObj_SetDialogItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex itemNo;
+       DialogItemType itemType;
+       Handle item;
+       Rect box;
+       if (!PyArg_ParseTuple(_args, "hhO&O&",
+                             &itemNo,
+                             &itemType,
+                             ResObj_Convert, &item,
+                             PyMac_GetRect, &box))
+               return NULL;
+       SetDialogItem(_self->ob_itself,
+                     itemNo,
+                     itemType,
+                     item,
+                     &box);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_SelectDialogItemText(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex itemNo;
+       SInt16 strtSel;
+       SInt16 endSel;
+       if (!PyArg_ParseTuple(_args, "hhh",
+                             &itemNo,
+                             &strtSel,
+                             &endSel))
+               return NULL;
+       SelectDialogItemText(_self->ob_itself,
+                            itemNo,
+                            strtSel,
+                            endSel);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_AppendDITL(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle theHandle;
+       DITLMethod method;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             ResObj_Convert, &theHandle,
+                             &method))
+               return NULL;
+       AppendDITL(_self->ob_itself,
+                  theHandle,
+                  method);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_CountDITL(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CountDITL(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *DlgObj_ShortenDITL(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex numberItems;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &numberItems))
+               return NULL;
+       ShortenDITL(_self->ob_itself,
+                   numberItems);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *DlgObj_InsertDialogItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       DialogItemIndex afterItem;
+       DialogItemType itemType;
+       Handle itemHandle;
+       Rect box;
+       if (!PyArg_ParseTuple(_args, "hhO&O&",
+                             &afterItem,
+                             &itemType,
+                             ResObj_Convert, &itemHandle,
+                             PyMac_GetRect, &box))
+               return NULL;
+       _err = InsertDialogItem(_self->ob_itself,
+                               afterItem,
+                               itemType,
+                               itemHandle,
+                               &box);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *DlgObj_RemoveDialogItems(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       DialogItemIndex itemNo;
+       DialogItemIndex amountToRemove;
+       Boolean disposeItemData;
+       if (!PyArg_ParseTuple(_args, "hhb",
+                             &itemNo,
+                             &amountToRemove,
+                             &disposeItemData))
+               return NULL;
+       _err = RemoveDialogItems(_self->ob_itself,
+                                itemNo,
+                                amountToRemove,
+                                disposeItemData);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *DlgObj_StdFilterProc(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventRecord event;
+       DialogItemIndex itemHit;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = StdFilterProc(_self->ob_itself,
+                           &event,
+                           &itemHit);
+       _res = Py_BuildValue("bO&h",
+                            _rv,
+                            PyMac_BuildEventRecord, &event,
+                            itemHit);
+       return _res;
+}
+
+static PyObject *DlgObj_SetDialogDefaultItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       DialogItemIndex newItem;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &newItem))
+               return NULL;
+       _err = SetDialogDefaultItem(_self->ob_itself,
+                                   newItem);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_SetDialogCancelItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       DialogItemIndex newItem;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &newItem))
+               return NULL;
+       _err = SetDialogCancelItem(_self->ob_itself,
+                                  newItem);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_SetDialogTracksCursor(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Boolean tracks;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &tracks))
+               return NULL;
+       _err = SetDialogTracksCursor(_self->ob_itself,
+                                    tracks);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_AutoSizeDialog(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = AutoSizeDialog(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogItemAsControl(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItemNo;
+       ControlHandle outControl;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItemNo))
+               return NULL;
+       _err = GetDialogItemAsControl(_self->ob_itself,
+                                     inItemNo,
+                                     &outControl);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            CtlObj_New, outControl);
+       return _res;
+}
+
+static PyObject *DlgObj_MoveDialogItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItemNo;
+       SInt16 inHoriz;
+       SInt16 inVert;
+       if (!PyArg_ParseTuple(_args, "hhh",
+                             &inItemNo,
+                             &inHoriz,
+                             &inVert))
+               return NULL;
+       _err = MoveDialogItem(_self->ob_itself,
+                             inItemNo,
+                             inHoriz,
+                             inVert);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_SizeDialogItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItemNo;
+       SInt16 inWidth;
+       SInt16 inHeight;
+       if (!PyArg_ParseTuple(_args, "hhh",
+                             &inItemNo,
+                             &inWidth,
+                             &inHeight))
+               return NULL;
+       _err = SizeDialogItem(_self->ob_itself,
+                             inItemNo,
+                             inWidth,
+                             inHeight);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_AppendDialogItemList(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 ditlID;
+       DITLMethod method;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &ditlID,
+                             &method))
+               return NULL;
+       _err = AppendDialogItemList(_self->ob_itself,
+                                   ditlID,
+                                   method);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_SetDialogTimeout(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       SInt16 inButtonToPress;
+       UInt32 inSecondsToWait;
+       if (!PyArg_ParseTuple(_args, "hl",
+                             &inButtonToPress,
+                             &inSecondsToWait))
+               return NULL;
+       _err = SetDialogTimeout(_self->ob_itself,
+                               inButtonToPress,
+                               inSecondsToWait);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogTimeout(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       SInt16 outButtonToPress;
+       UInt32 outSecondsToWait;
+       UInt32 outSecondsRemaining;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetDialogTimeout(_self->ob_itself,
+                               &outButtonToPress,
+                               &outSecondsToWait,
+                               &outSecondsRemaining);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("hll",
+                            outButtonToPress,
+                            outSecondsToWait,
+                            outSecondsRemaining);
+       return _res;
+}
+
+static PyObject *DlgObj_SetModalDialogEventMask(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       EventMask inMask;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &inMask))
+               return NULL;
+       _err = SetModalDialogEventMask(_self->ob_itself,
+                                      inMask);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_GetModalDialogEventMask(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       EventMask outMask;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetModalDialogEventMask(_self->ob_itself,
+                                      &outMask);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("H",
+                            outMask);
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogWindow(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       WindowPtr _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetDialogWindow(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            WinObj_New, _rv);
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogTextEditHandle(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TEHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetDialogTextEditHandle(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogDefaultItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetDialogDefaultItem(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogCancelItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetDialogCancelItem(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogKeyboardFocusItem(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetDialogKeyboardFocusItem(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *DlgObj_SetPortDialogPort(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       SetPortDialogPort(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DlgObj_GetDialogPort(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CGrafPtr _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetDialogPort(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            GrafObj_New, _rv);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *DlgObj_SetGrafPortOfDialog(DialogObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       SetGrafPortOfDialog(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyMethodDef DlgObj_methods[] = {
+       {"DrawDialog", (PyCFunction)DlgObj_DrawDialog, 1,
+        "() -> None"},
+       {"UpdateDialog", (PyCFunction)DlgObj_UpdateDialog, 1,
+        "(RgnHandle updateRgn) -> None"},
+       {"HideDialogItem", (PyCFunction)DlgObj_HideDialogItem, 1,
+        "(DialogItemIndex itemNo) -> None"},
+       {"ShowDialogItem", (PyCFunction)DlgObj_ShowDialogItem, 1,
+        "(DialogItemIndex itemNo) -> None"},
+       {"FindDialogItem", (PyCFunction)DlgObj_FindDialogItem, 1,
+        "(Point thePt) -> (DialogItemIndexZeroBased _rv)"},
+       {"DialogCut", (PyCFunction)DlgObj_DialogCut, 1,
+        "() -> None"},
+       {"DialogPaste", (PyCFunction)DlgObj_DialogPaste, 1,
+        "() -> None"},
+       {"DialogCopy", (PyCFunction)DlgObj_DialogCopy, 1,
+        "() -> None"},
+       {"DialogDelete", (PyCFunction)DlgObj_DialogDelete, 1,
+        "() -> None"},
+       {"GetDialogItem", (PyCFunction)DlgObj_GetDialogItem, 1,
+        "(DialogItemIndex itemNo) -> (DialogItemType itemType, Handle item, Rect box)"},
+       {"SetDialogItem", (PyCFunction)DlgObj_SetDialogItem, 1,
+        "(DialogItemIndex itemNo, DialogItemType itemType, Handle item, Rect box) -> None"},
+       {"SelectDialogItemText", (PyCFunction)DlgObj_SelectDialogItemText, 1,
+        "(DialogItemIndex itemNo, SInt16 strtSel, SInt16 endSel) -> None"},
+       {"AppendDITL", (PyCFunction)DlgObj_AppendDITL, 1,
+        "(Handle theHandle, DITLMethod method) -> None"},
+       {"CountDITL", (PyCFunction)DlgObj_CountDITL, 1,
+        "() -> (DialogItemIndex _rv)"},
+       {"ShortenDITL", (PyCFunction)DlgObj_ShortenDITL, 1,
+        "(DialogItemIndex numberItems) -> None"},
+
+#if TARGET_API_MAC_CARBON
+       {"InsertDialogItem", (PyCFunction)DlgObj_InsertDialogItem, 1,
+        "(DialogItemIndex afterItem, DialogItemType itemType, Handle itemHandle, Rect box) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"RemoveDialogItems", (PyCFunction)DlgObj_RemoveDialogItems, 1,
+        "(DialogItemIndex itemNo, DialogItemIndex amountToRemove, Boolean disposeItemData) -> None"},
+#endif
+       {"StdFilterProc", (PyCFunction)DlgObj_StdFilterProc, 1,
+        "() -> (Boolean _rv, EventRecord event, DialogItemIndex itemHit)"},
+       {"SetDialogDefaultItem", (PyCFunction)DlgObj_SetDialogDefaultItem, 1,
+        "(DialogItemIndex newItem) -> None"},
+       {"SetDialogCancelItem", (PyCFunction)DlgObj_SetDialogCancelItem, 1,
+        "(DialogItemIndex newItem) -> None"},
+       {"SetDialogTracksCursor", (PyCFunction)DlgObj_SetDialogTracksCursor, 1,
+        "(Boolean tracks) -> None"},
+       {"AutoSizeDialog", (PyCFunction)DlgObj_AutoSizeDialog, 1,
+        "() -> None"},
+       {"GetDialogItemAsControl", (PyCFunction)DlgObj_GetDialogItemAsControl, 1,
+        "(SInt16 inItemNo) -> (ControlHandle outControl)"},
+       {"MoveDialogItem", (PyCFunction)DlgObj_MoveDialogItem, 1,
+        "(SInt16 inItemNo, SInt16 inHoriz, SInt16 inVert) -> None"},
+       {"SizeDialogItem", (PyCFunction)DlgObj_SizeDialogItem, 1,
+        "(SInt16 inItemNo, SInt16 inWidth, SInt16 inHeight) -> None"},
+       {"AppendDialogItemList", (PyCFunction)DlgObj_AppendDialogItemList, 1,
+        "(SInt16 ditlID, DITLMethod method) -> None"},
+       {"SetDialogTimeout", (PyCFunction)DlgObj_SetDialogTimeout, 1,
+        "(SInt16 inButtonToPress, UInt32 inSecondsToWait) -> None"},
+       {"GetDialogTimeout", (PyCFunction)DlgObj_GetDialogTimeout, 1,
+        "() -> (SInt16 outButtonToPress, UInt32 outSecondsToWait, UInt32 outSecondsRemaining)"},
+       {"SetModalDialogEventMask", (PyCFunction)DlgObj_SetModalDialogEventMask, 1,
+        "(EventMask inMask) -> None"},
+       {"GetModalDialogEventMask", (PyCFunction)DlgObj_GetModalDialogEventMask, 1,
+        "() -> (EventMask outMask)"},
+       {"GetDialogWindow", (PyCFunction)DlgObj_GetDialogWindow, 1,
+        "() -> (WindowPtr _rv)"},
+       {"GetDialogTextEditHandle", (PyCFunction)DlgObj_GetDialogTextEditHandle, 1,
+        "() -> (TEHandle _rv)"},
+       {"GetDialogDefaultItem", (PyCFunction)DlgObj_GetDialogDefaultItem, 1,
+        "() -> (SInt16 _rv)"},
+       {"GetDialogCancelItem", (PyCFunction)DlgObj_GetDialogCancelItem, 1,
+        "() -> (SInt16 _rv)"},
+       {"GetDialogKeyboardFocusItem", (PyCFunction)DlgObj_GetDialogKeyboardFocusItem, 1,
+        "() -> (SInt16 _rv)"},
+       {"SetPortDialogPort", (PyCFunction)DlgObj_SetPortDialogPort, 1,
+        "() -> None"},
+       {"GetDialogPort", (PyCFunction)DlgObj_GetDialogPort, 1,
+        "() -> (CGrafPtr _rv)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"SetGrafPortOfDialog", (PyCFunction)DlgObj_SetGrafPortOfDialog, 1,
+        "() -> None"},
+#endif
+       {NULL, NULL, 0}
+};
+
+PyMethodChain DlgObj_chain = { DlgObj_methods, NULL };
+
+static PyObject *DlgObj_getattr(DialogObject *self, char *name)
+{
+       return Py_FindMethodInChain(&DlgObj_chain, (PyObject *)self, name);
+}
+
+#define DlgObj_setattr NULL
+
+static int DlgObj_compare(DialogObject *self, DialogObject *other)
+{
+       if ( self->ob_itself > other->ob_itself ) return 1;
+       if ( self->ob_itself < other->ob_itself ) return -1;
+       return 0;
+}
+
+#define DlgObj_repr NULL
+
+static int DlgObj_hash(DialogObject *self)
+{
+       return (int)self->ob_itself;
+}
+
+PyTypeObject Dialog_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "Dialog", /*tp_name*/
+       sizeof(DialogObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) DlgObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) DlgObj_getattr, /*tp_getattr*/
+       (setattrfunc) DlgObj_setattr, /*tp_setattr*/
+       (cmpfunc) DlgObj_compare, /*tp_compare*/
+       (reprfunc) DlgObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) DlgObj_hash, /*tp_hash*/
+};
+
+/* --------------------- End object type Dialog --------------------- */
+
+
+static PyObject *Dlg_NewDialog(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogPtr _rv;
+       Rect boundsRect;
+       Str255 title;
+       Boolean visible;
+       SInt16 procID;
+       WindowPtr behind;
+       Boolean goAwayFlag;
+       SInt32 refCon;
+       Handle items;
+       if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&",
+                             PyMac_GetRect, &boundsRect,
+                             PyMac_GetStr255, title,
+                             &visible,
+                             &procID,
+                             WinObj_Convert, &behind,
+                             &goAwayFlag,
+                             &refCon,
+                             ResObj_Convert, &items))
+               return NULL;
+       _rv = NewDialog((void *)0,
+                       &boundsRect,
+                       title,
+                       visible,
+                       procID,
+                       behind,
+                       goAwayFlag,
+                       refCon,
+                       items);
+       _res = Py_BuildValue("O&",
+                            DlgObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Dlg_GetNewDialog(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogPtr _rv;
+       SInt16 dialogID;
+       WindowPtr behind;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &dialogID,
+                             WinObj_Convert, &behind))
+               return NULL;
+       _rv = GetNewDialog(dialogID,
+                          (void *)0,
+                          behind);
+       _res = Py_BuildValue("O&",
+                            DlgObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Dlg_NewColorDialog(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogPtr _rv;
+       Rect boundsRect;
+       Str255 title;
+       Boolean visible;
+       SInt16 procID;
+       WindowPtr behind;
+       Boolean goAwayFlag;
+       SInt32 refCon;
+       Handle items;
+       if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&",
+                             PyMac_GetRect, &boundsRect,
+                             PyMac_GetStr255, title,
+                             &visible,
+                             &procID,
+                             WinObj_Convert, &behind,
+                             &goAwayFlag,
+                             &refCon,
+                             ResObj_Convert, &items))
+               return NULL;
+       _rv = NewColorDialog((void *)0,
+                            &boundsRect,
+                            title,
+                            visible,
+                            procID,
+                            behind,
+                            goAwayFlag,
+                            refCon,
+                            items);
+       _res = Py_BuildValue("O&",
+                            DlgObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Dlg_ModalDialog(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PyObject* modalFilter;
+       DialogItemIndex itemHit;
+       if (!PyArg_ParseTuple(_args, "O",
+                             &modalFilter))
+               return NULL;
+       ModalDialog(Dlg_PassFilterProc(modalFilter),
+                   &itemHit);
+       _res = Py_BuildValue("h",
+                            itemHit);
+       return _res;
+}
+
+static PyObject *Dlg_IsDialogEvent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventRecord theEvent;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetEventRecord, &theEvent))
+               return NULL;
+       _rv = IsDialogEvent(&theEvent);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Dlg_DialogSelect(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventRecord theEvent;
+       DialogPtr theDialog;
+       DialogItemIndex itemHit;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetEventRecord, &theEvent))
+               return NULL;
+       _rv = DialogSelect(&theEvent,
+                          &theDialog,
+                          &itemHit);
+       _res = Py_BuildValue("bO&h",
+                            _rv,
+                            DlgObj_WhichDialog, theDialog,
+                            itemHit);
+       return _res;
+}
+
+static PyObject *Dlg_Alert(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex _rv;
+       SInt16 alertID;
+       PyObject* modalFilter;
+       if (!PyArg_ParseTuple(_args, "hO",
+                             &alertID,
+                             &modalFilter))
+               return NULL;
+       _rv = Alert(alertID,
+                   Dlg_PassFilterProc(modalFilter));
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Dlg_StopAlert(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex _rv;
+       SInt16 alertID;
+       PyObject* modalFilter;
+       if (!PyArg_ParseTuple(_args, "hO",
+                             &alertID,
+                             &modalFilter))
+               return NULL;
+       _rv = StopAlert(alertID,
+                       Dlg_PassFilterProc(modalFilter));
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Dlg_NoteAlert(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex _rv;
+       SInt16 alertID;
+       PyObject* modalFilter;
+       if (!PyArg_ParseTuple(_args, "hO",
+                             &alertID,
+                             &modalFilter))
+               return NULL;
+       _rv = NoteAlert(alertID,
+                       Dlg_PassFilterProc(modalFilter));
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Dlg_CautionAlert(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogItemIndex _rv;
+       SInt16 alertID;
+       PyObject* modalFilter;
+       if (!PyArg_ParseTuple(_args, "hO",
+                             &alertID,
+                             &modalFilter))
+               return NULL;
+       _rv = CautionAlert(alertID,
+                          Dlg_PassFilterProc(modalFilter));
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Dlg_ParamText(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Str255 param0;
+       Str255 param1;
+       Str255 param2;
+       Str255 param3;
+       if (!PyArg_ParseTuple(_args, "O&O&O&O&",
+                             PyMac_GetStr255, param0,
+                             PyMac_GetStr255, param1,
+                             PyMac_GetStr255, param2,
+                             PyMac_GetStr255, param3))
+               return NULL;
+       ParamText(param0,
+                 param1,
+                 param2,
+                 param3);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Dlg_GetDialogItemText(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle item;
+       Str255 text;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &item))
+               return NULL;
+       GetDialogItemText(item,
+                         text);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildStr255, text);
+       return _res;
+}
+
+static PyObject *Dlg_SetDialogItemText(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle item;
+       Str255 text;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &item,
+                             PyMac_GetStr255, text))
+               return NULL;
+       SetDialogItemText(item,
+                         text);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Dlg_GetAlertStage(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetAlertStage();
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Dlg_SetDialogFont(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 fontNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &fontNum))
+               return NULL;
+       SetDialogFont(fontNum);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Dlg_ResetAlertStage(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ResetAlertStage();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Dlg_GetParamText(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Str255 param0;
+       Str255 param1;
+       Str255 param2;
+       Str255 param3;
+       if (!PyArg_ParseTuple(_args, "O&O&O&O&",
+                             PyMac_GetStr255, param0,
+                             PyMac_GetStr255, param1,
+                             PyMac_GetStr255, param2,
+                             PyMac_GetStr255, param3))
+               return NULL;
+       GetParamText(param0,
+                    param1,
+                    param2,
+                    param3);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Dlg_NewFeaturesDialog(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogPtr _rv;
+       Rect inBoundsRect;
+       Str255 inTitle;
+       Boolean inIsVisible;
+       SInt16 inProcID;
+       WindowPtr inBehind;
+       Boolean inGoAwayFlag;
+       SInt32 inRefCon;
+       Handle inItemListHandle;
+       UInt32 inFlags;
+       if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&l",
+                             PyMac_GetRect, &inBoundsRect,
+                             PyMac_GetStr255, inTitle,
+                             &inIsVisible,
+                             &inProcID,
+                             WinObj_Convert, &inBehind,
+                             &inGoAwayFlag,
+                             &inRefCon,
+                             ResObj_Convert, &inItemListHandle,
+                             &inFlags))
+               return NULL;
+       _rv = NewFeaturesDialog((void *)0,
+                               &inBoundsRect,
+                               inTitle,
+                               inIsVisible,
+                               inProcID,
+                               inBehind,
+                               inGoAwayFlag,
+                               inRefCon,
+                               inItemListHandle,
+                               inFlags);
+       _res = Py_BuildValue("O&",
+                            DlgObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Dlg_GetDialogFromWindow(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DialogPtr _rv;
+       WindowPtr window;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             WinObj_Convert, &window))
+               return NULL;
+       _rv = GetDialogFromWindow(window);
+       _res = Py_BuildValue("O&",
+                            DlgObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Dlg_SetUserItemHandler(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+               PyObject *new = NULL;
+               
+               
+               if (!PyArg_ParseTuple(_args, "|O", &new))
+                       return NULL;
+
+               if (Dlg_UserItemProc_callback && new && new != Py_None) {
+                       PyErr_SetString(Dlg_Error, "Another UserItemProc is already installed");
+                       return NULL;
+               }
+               
+               if (new == NULL || new == Py_None) {
+                       new = NULL;
+                       _res = Py_None;
+                       Py_INCREF(Py_None);
+               } else {
+                       Py_INCREF(new);
+                       _res = Py_BuildValue("O&", ResObj_New, (Handle)NewUserItemUPP(Dlg_UnivUserItemProc));
+               }
+               
+               Dlg_UserItemProc_callback = new;
+               return _res;
+
+}
+
+static PyMethodDef Dlg_methods[] = {
+       {"NewDialog", (PyCFunction)Dlg_NewDialog, 1,
+        "(Rect boundsRect, Str255 title, Boolean visible, SInt16 procID, WindowPtr behind, Boolean goAwayFlag, SInt32 refCon, Handle items) -> (DialogPtr _rv)"},
+       {"GetNewDialog", (PyCFunction)Dlg_GetNewDialog, 1,
+        "(SInt16 dialogID, WindowPtr behind) -> (DialogPtr _rv)"},
+       {"NewColorDialog", (PyCFunction)Dlg_NewColorDialog, 1,
+        "(Rect boundsRect, Str255 title, Boolean visible, SInt16 procID, WindowPtr behind, Boolean goAwayFlag, SInt32 refCon, Handle items) -> (DialogPtr _rv)"},
+       {"ModalDialog", (PyCFunction)Dlg_ModalDialog, 1,
+        "(PyObject* modalFilter) -> (DialogItemIndex itemHit)"},
+       {"IsDialogEvent", (PyCFunction)Dlg_IsDialogEvent, 1,
+        "(EventRecord theEvent) -> (Boolean _rv)"},
+       {"DialogSelect", (PyCFunction)Dlg_DialogSelect, 1,
+        "(EventRecord theEvent) -> (Boolean _rv, DialogPtr theDialog, DialogItemIndex itemHit)"},
+       {"Alert", (PyCFunction)Dlg_Alert, 1,
+        "(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)"},
+       {"StopAlert", (PyCFunction)Dlg_StopAlert, 1,
+        "(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)"},
+       {"NoteAlert", (PyCFunction)Dlg_NoteAlert, 1,
+        "(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)"},
+       {"CautionAlert", (PyCFunction)Dlg_CautionAlert, 1,
+        "(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)"},
+       {"ParamText", (PyCFunction)Dlg_ParamText, 1,
+        "(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None"},
+       {"GetDialogItemText", (PyCFunction)Dlg_GetDialogItemText, 1,
+        "(Handle item) -> (Str255 text)"},
+       {"SetDialogItemText", (PyCFunction)Dlg_SetDialogItemText, 1,
+        "(Handle item, Str255 text) -> None"},
+       {"GetAlertStage", (PyCFunction)Dlg_GetAlertStage, 1,
+        "() -> (SInt16 _rv)"},
+       {"SetDialogFont", (PyCFunction)Dlg_SetDialogFont, 1,
+        "(SInt16 fontNum) -> None"},
+       {"ResetAlertStage", (PyCFunction)Dlg_ResetAlertStage, 1,
+        "() -> None"},
+
+#if TARGET_API_MAC_CARBON
+       {"GetParamText", (PyCFunction)Dlg_GetParamText, 1,
+        "(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None"},
+#endif
+       {"NewFeaturesDialog", (PyCFunction)Dlg_NewFeaturesDialog, 1,
+        "(Rect inBoundsRect, Str255 inTitle, Boolean inIsVisible, SInt16 inProcID, WindowPtr inBehind, Boolean inGoAwayFlag, SInt32 inRefCon, Handle inItemListHandle, UInt32 inFlags) -> (DialogPtr _rv)"},
+       {"GetDialogFromWindow", (PyCFunction)Dlg_GetDialogFromWindow, 1,
+        "(WindowPtr window) -> (DialogPtr _rv)"},
+       {"SetUserItemHandler", (PyCFunction)Dlg_SetUserItemHandler, 1,
+        NULL},
+       {NULL, NULL, 0}
+};
+
+
+
+/* Return the WindowPtr corresponding to a DialogObject */
+#if 0
+WindowPtr
+DlgObj_ConvertToWindow(PyObject *self)
+{
+       if ( DlgObj_Check(self) )
+               return GetDialogWindow(((DialogObject *)self)->ob_itself);
+       return NULL;
+}
+#endif
+/* Return the object corresponding to the dialog, or None */
+
+PyObject *
+DlgObj_WhichDialog(DialogPtr d)
+{
+       PyObject *it;
+       
+       if (d == NULL) {
+               it = Py_None;
+               Py_INCREF(it);
+       } else {
+               WindowPtr w = GetDialogWindow(d);
+               
+               it = (PyObject *) GetWRefCon(w);
+               if (it == NULL || ((DialogObject *)it)->ob_itself != d || !DlgObj_Check(it)) {
+#if 0
+                       /* Should do this, but we don't have an ob_freeit for dialogs yet. */
+                       it = WinObj_New(w);
+                       ((WindowObject *)it)->ob_freeit = NULL;
+#else
+                       it = Py_None;
+                       Py_INCREF(it);
+#endif
+               } else {
+                       Py_INCREF(it);
+               }
+       }
+       return it;
+}
+
+
+void initDlg(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_WhichDialog);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DialogPtr, DlgObj_Convert);
+
+
+       m = Py_InitModule("Dlg", Dlg_methods);
+       d = PyModule_GetDict(m);
+       Dlg_Error = PyMac_GetOSErrException();
+       if (Dlg_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Dlg_Error) != 0)
+               return;
+       Dialog_Type.ob_type = &PyType_Type;
+       Py_INCREF(&Dialog_Type);
+       if (PyDict_SetItemString(d, "DialogType", (PyObject *)&Dialog_Type) != 0)
+               Py_FatalError("can't initialize DialogType");
+}
+
+/* ========================= End module Dlg ========================= */
+
diff --git a/Mac/Modules/dlg/dlgsupport.py b/Mac/Modules/dlg/dlgsupport.py
new file mode 100644 (file)
index 0000000..b166b42
--- /dev/null
@@ -0,0 +1,304 @@
+# This script generates the Dialogs interface for Python.
+# It uses the "bgen" package to generate C code.
+# It execs the file dlggen.py which contain the function definitions
+# (dlggen.py was generated by dlgscan.py, scanning the <Dialogs.h> header file).
+
+from macsupport import *
+
+# Create the type objects
+
+DialogPtr = OpaqueByValueType("DialogPtr", "DlgObj")
+DialogRef = DialogPtr
+
+# An OptHandle is either a handle or None (in case NULL is passed in).
+# This is needed for GetDialogItem().
+OptHandle = OpaqueByValueType("Handle", "OptResObj")
+
+ModalFilterProcPtr = InputOnlyType("PyObject*", "O")
+ModalFilterProcPtr.passInput = lambda name: "Dlg_PassFilterProc(%s)" % name
+ModalFilterUPP = ModalFilterProcPtr
+
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+TEHandle = OpaqueByValueType("TEHandle", "ResObj")
+CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
+
+DITLMethod = Type("DITLMethod", "h")
+DialogItemIndex = Type("DialogItemIndex", "h")
+DialogItemType = Type("DialogItemType", "h")
+DialogItemIndexZeroBased = Type("DialogItemIndexZeroBased", "h")
+AlertType = Type("AlertType", "h")
+StringPtr = Str255
+EventMask = Type("EventMask", "H")
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Dialogs.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_DlgObj_New(DialogRef);
+extern PyObject *_DlgObj_WhichDialog(DialogRef);
+extern int _DlgObj_Convert(PyObject *, DialogRef *);
+
+#define DlgObj_New _DlgObj_New
+#define DlgObj_WhichDialog _DlgObj_WhichDialog
+#define DlgObj_Convert _DlgObj_Convert
+#endif
+
+#if !ACCESSOR_CALLS_ARE_FUNCTIONS
+#define GetDialogTextEditHandle(dlg) (((DialogPeek)(dlg))->textH)
+#define SetPortDialogPort(dlg) SetPort(dlg)
+#define GetDialogPort(dlg) ((CGrafPtr)(dlg))
+#define GetDialogFromWindow(win) ((DialogRef)(win))
+#endif
+
+/* XXX Shouldn't this be a stack? */
+static PyObject *Dlg_FilterProc_callback = NULL;
+
+static pascal Boolean Dlg_UnivFilterProc(DialogPtr dialog,
+                                         EventRecord *event,
+                                         short *itemHit)
+{
+       Boolean rv;
+       PyObject *args, *res;
+       PyObject *callback = Dlg_FilterProc_callback;
+       if (callback == NULL)
+               return 0; /* Default behavior */
+       Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
+       args = Py_BuildValue("O&O&", DlgObj_WhichDialog, dialog, PyMac_BuildEventRecord, event);
+       if (args == NULL)
+               res = NULL;
+       else {
+               res = PyEval_CallObject(callback, args);
+               Py_DECREF(args);
+       }
+       if (res == NULL) {
+               PySys_WriteStderr("Exception in Dialog Filter\\n");
+               PyErr_Print();
+               *itemHit = -1; /* Fake return item */
+               return 1; /* We handled it */
+       }
+       else {
+               Dlg_FilterProc_callback = callback;
+               if (PyInt_Check(res)) {
+                       *itemHit = PyInt_AsLong(res);
+                       rv = 1;
+               }
+               else
+                       rv = PyObject_IsTrue(res);
+       }
+       Py_DECREF(res);
+       return rv;
+}
+
+static ModalFilterUPP
+Dlg_PassFilterProc(PyObject *callback)
+{
+       PyObject *tmp = Dlg_FilterProc_callback;
+       static ModalFilterUPP UnivFilterUpp = NULL;
+       
+       Dlg_FilterProc_callback = NULL;
+       if (callback == Py_None) {
+               Py_XDECREF(tmp);
+               return NULL;
+       }
+       Py_INCREF(callback);
+       Dlg_FilterProc_callback = callback;
+       Py_XDECREF(tmp);
+       if ( UnivFilterUpp == NULL )
+               UnivFilterUpp = NewModalFilterUPP(&Dlg_UnivFilterProc);
+       return UnivFilterUpp;
+}
+
+static PyObject *Dlg_UserItemProc_callback = NULL;
+
+static pascal void Dlg_UnivUserItemProc(DialogPtr dialog,
+                                         short item)
+{
+       PyObject *args, *res;
+
+       if (Dlg_UserItemProc_callback == NULL)
+               return; /* Default behavior */
+       Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
+       args = Py_BuildValue("O&h", DlgObj_WhichDialog, dialog, item);
+       if (args == NULL)
+               res = NULL;
+       else {
+               res = PyEval_CallObject(Dlg_UserItemProc_callback, args);
+               Py_DECREF(args);
+       }
+       if (res == NULL) {
+               PySys_WriteStderr("Exception in Dialog UserItem proc\\n");
+               PyErr_Print();
+       }
+       Py_XDECREF(res);
+       return;
+}
+
+#if 0
+/*
+** Treating DialogObjects as WindowObjects is (I think) illegal under Carbon.
+** However, as they are still identical under MacOS9 Carbon this is a problem, even
+** if we neatly call GetDialogWindow() at the right places: there's one refcon field
+** and it points to the DialogObject, so WinObj_WhichWindow will smartly return the
+** dialog object, and therefore we still don't have a WindowObject.
+** I'll leave the chaining code in place for now, with this comment to warn the
+** unsuspecting victims (i.e. me, probably, in a few weeks:-)
+*/
+extern PyMethodChain WinObj_chain;
+#endif
+"""
+
+finalstuff = finalstuff + """
+/* Return the WindowPtr corresponding to a DialogObject */
+#if 0
+WindowPtr
+DlgObj_ConvertToWindow(PyObject *self)
+{
+       if ( DlgObj_Check(self) )
+               return GetDialogWindow(((DialogObject *)self)->ob_itself);
+       return NULL;
+}
+#endif
+/* Return the object corresponding to the dialog, or None */
+
+PyObject *
+DlgObj_WhichDialog(DialogPtr d)
+{
+       PyObject *it;
+       
+       if (d == NULL) {
+               it = Py_None;
+               Py_INCREF(it);
+       } else {
+               WindowPtr w = GetDialogWindow(d);
+               
+               it = (PyObject *) GetWRefCon(w);
+               if (it == NULL || ((DialogObject *)it)->ob_itself != d || !DlgObj_Check(it)) {
+#if 0
+                       /* Should do this, but we don't have an ob_freeit for dialogs yet. */
+                       it = WinObj_New(w);
+                       ((WindowObject *)it)->ob_freeit = NULL;
+#else
+                       it = Py_None;
+                       Py_INCREF(it);
+#endif
+               } else {
+                       Py_INCREF(it);
+               }
+       }
+       return it;
+}
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_WhichDialog);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DialogPtr, DlgObj_Convert);
+"""
+
+
+# Define a class which specializes our object definition
+class MyObjectDefinition(GlobalObjectDefinition):
+       def __init__(self, name, prefix = None, itselftype = None):
+               GlobalObjectDefinition.__init__(self, name, prefix, itselftype)
+## This won't work in Carbon, so we disable it for all MacPythons:-(
+## But see the comment above:-((
+##             self.basechain = "&WinObj_chain"
+
+       def outputInitStructMembers(self):
+               GlobalObjectDefinition.outputInitStructMembers(self)
+               Output("SetWRefCon(GetDialogWindow(itself), (long)it);")
+
+       def outputCheckNewArg(self):
+               Output("if (itself == NULL) return Py_None;")
+
+       def outputCheckConvertArg(self):
+               Output("if (v == Py_None) { *p_itself = NULL; return 1; }")
+               Output("if (PyInt_Check(v)) { *p_itself = (DialogPtr)PyInt_AsLong(v);")
+               Output("                      return 1; }")
+
+       def outputCompare(self):
+               Output()
+               Output("static int %s_compare(%s *self, %s *other)", self.prefix, self.objecttype, self.objecttype)
+               OutLbrace()
+               Output("if ( self->ob_itself > other->ob_itself ) return 1;")
+               Output("if ( self->ob_itself < other->ob_itself ) return -1;")
+               Output("return 0;")
+               OutRbrace()
+               
+       def outputHash(self):
+               Output()
+               Output("static int %s_hash(%s *self)", self.prefix, self.objecttype)
+               OutLbrace()
+               Output("return (int)self->ob_itself;")
+               OutRbrace()
+               
+       def outputFreeIt(self, itselfname):
+               Output("DisposeDialog(%s);", itselfname)
+
+# Create the generator groups and link them
+module = MacModule('Dlg', 'Dlg', includestuff, finalstuff, initstuff)
+object = MyObjectDefinition('Dialog', 'DlgObj', 'DialogPtr')
+module.addobject(object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+methods = []
+execfile("dlggen.py")
+
+# add the populated lists to the generator groups
+for f in functions: module.add(f)
+for f in methods: object.add(f)
+
+# Some methods that are currently macro's in C, but will be real routines
+# in MacOS 8.
+
+##f = Method(ExistingWindowPtr, 'GetDialogWindow', (DialogRef, 'dialog', InMode))
+##object.add(f)
+##f = Method(SInt16, 'GetDialogDefaultItem', (DialogRef, 'dialog', InMode))
+##object.add(f)
+##f = Method(SInt16, 'GetDialogCancelItem', (DialogRef, 'dialog', InMode))
+##object.add(f)
+##f = Method(SInt16, 'GetDialogKeyboardFocusItem', (DialogRef, 'dialog', InMode))
+##object.add(f)
+f = Method(void, 'SetGrafPortOfDialog', (DialogRef, 'dialog', InMode), 
+       condition='#if !TARGET_API_MAC_CARBON')
+object.add(f)
+
+setuseritembody = """
+       PyObject *new = NULL;
+       
+       
+       if (!PyArg_ParseTuple(_args, "|O", &new))
+               return NULL;
+
+       if (Dlg_UserItemProc_callback && new && new != Py_None) {
+               PyErr_SetString(Dlg_Error, "Another UserItemProc is already installed");
+               return NULL;
+       }
+       
+       if (new == NULL || new == Py_None) {
+               new = NULL;
+               _res = Py_None;
+               Py_INCREF(Py_None);
+       } else {
+               Py_INCREF(new);
+               _res = Py_BuildValue("O&", ResObj_New, (Handle)NewUserItemUPP(Dlg_UnivUserItemProc));
+       }
+       
+       Dlg_UserItemProc_callback = new;
+       return _res;
+"""
+f = ManualGenerator("SetUserItemHandler", setuseritembody)
+module.add(f)
+
+# generate output
+SetOutputFileName('Dlgmodule.c')
+module.generate()
diff --git a/Mac/Modules/drag/Dragmodule.c b/Mac/Modules/drag/Dragmodule.c
new file mode 100644 (file)
index 0000000..2fd7cfe
--- /dev/null
@@ -0,0 +1,1004 @@
+
+/* ========================== Module Drag =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Drag.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+/* Callback glue routines */
+DragTrackingHandlerUPP dragglue_TrackingHandlerUPP;
+DragReceiveHandlerUPP dragglue_ReceiveHandlerUPP;
+DragSendDataUPP dragglue_SendDataUPP;
+#if 0
+DragInputUPP dragglue_InputUPP;
+DragDrawingUPP dragglue_DrawingUPP;
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_DragObj_New(DragRef);
+extern int _DragObj_Convert(PyObject *, DragRef *);
+
+#define DragObj_New _DragObj_New
+#define DragObj_Convert _DragObj_Convert
+#endif
+
+static PyObject *Drag_Error;
+
+/* ---------------------- Object type DragObj ----------------------- */
+
+PyTypeObject DragObj_Type;
+
+#define DragObj_Check(x) ((x)->ob_type == &DragObj_Type)
+
+typedef struct DragObjObject {
+       PyObject_HEAD
+       DragRef ob_itself;
+       PyObject *sendproc;
+} DragObjObject;
+
+PyObject *DragObj_New(DragRef itself)
+{
+       DragObjObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(Drag_Error,"Cannot create null Drag");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(DragObjObject, &DragObj_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       it->sendproc = NULL;
+       return (PyObject *)it;
+}
+DragObj_Convert(PyObject *v, DragRef *p_itself)
+{
+       if (!DragObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "DragObj required");
+               return 0;
+       }
+       *p_itself = ((DragObjObject *)v)->ob_itself;
+       return 1;
+}
+
+static void DragObj_dealloc(DragObjObject *self)
+{
+       Py_XDECREF(self->sendproc);
+       PyMem_DEL(self);
+}
+
+static PyObject *DragObj_DisposeDrag(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = DisposeDrag(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_AddDragItemFlavor(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       FlavorType theType;
+       char *dataPtr__in__;
+       long dataPtr__len__;
+       int dataPtr__in_len__;
+       FlavorFlags theFlags;
+       if (!PyArg_ParseTuple(_args, "lO&z#l",
+                             &theItemRef,
+                             PyMac_GetOSType, &theType,
+                             &dataPtr__in__, &dataPtr__in_len__,
+                             &theFlags))
+               return NULL;
+       dataPtr__len__ = dataPtr__in_len__;
+       _err = AddDragItemFlavor(_self->ob_itself,
+                                theItemRef,
+                                theType,
+                                dataPtr__in__, dataPtr__len__,
+                                theFlags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+ dataPtr__error__: ;
+       return _res;
+}
+
+static PyObject *DragObj_SetDragItemFlavorData(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       FlavorType theType;
+       char *dataPtr__in__;
+       long dataPtr__len__;
+       int dataPtr__in_len__;
+       UInt32 dataOffset;
+       if (!PyArg_ParseTuple(_args, "lO&z#l",
+                             &theItemRef,
+                             PyMac_GetOSType, &theType,
+                             &dataPtr__in__, &dataPtr__in_len__,
+                             &dataOffset))
+               return NULL;
+       dataPtr__len__ = dataPtr__in_len__;
+       _err = SetDragItemFlavorData(_self->ob_itself,
+                                    theItemRef,
+                                    theType,
+                                    dataPtr__in__, dataPtr__len__,
+                                    dataOffset);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+ dataPtr__error__: ;
+       return _res;
+}
+
+static PyObject *DragObj_SetDragImage(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       PixMapHandle imagePixMap;
+       RgnHandle imageRgn;
+       Point imageOffsetPt;
+       DragImageFlags theImageFlags;
+       if (!PyArg_ParseTuple(_args, "O&O&O&l",
+                             ResObj_Convert, &imagePixMap,
+                             ResObj_Convert, &imageRgn,
+                             PyMac_GetPoint, &imageOffsetPt,
+                             &theImageFlags))
+               return NULL;
+       _err = SetDragImage(_self->ob_itself,
+                           imagePixMap,
+                           imageRgn,
+                           imageOffsetPt,
+                           theImageFlags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_ChangeDragBehaviors(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       DragBehaviors inBehaviorsToSet;
+       DragBehaviors inBehaviorsToClear;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &inBehaviorsToSet,
+                             &inBehaviorsToClear))
+               return NULL;
+       _err = ChangeDragBehaviors(_self->ob_itself,
+                                  inBehaviorsToSet,
+                                  inBehaviorsToClear);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_TrackDrag(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       EventRecord theEvent;
+       RgnHandle theRegion;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetEventRecord, &theEvent,
+                             ResObj_Convert, &theRegion))
+               return NULL;
+       _err = TrackDrag(_self->ob_itself,
+                        &theEvent,
+                        theRegion);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_CountDragItems(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       UInt16 numItems;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = CountDragItems(_self->ob_itself,
+                             &numItems);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("H",
+                            numItems);
+       return _res;
+}
+
+static PyObject *DragObj_GetDragItemReferenceNumber(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       UInt16 index;
+       ItemReference theItemRef;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &index))
+               return NULL;
+       _err = GetDragItemReferenceNumber(_self->ob_itself,
+                                         index,
+                                         &theItemRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            theItemRef);
+       return _res;
+}
+
+static PyObject *DragObj_CountDragItemFlavors(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       UInt16 numFlavors;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &theItemRef))
+               return NULL;
+       _err = CountDragItemFlavors(_self->ob_itself,
+                                   theItemRef,
+                                   &numFlavors);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("H",
+                            numFlavors);
+       return _res;
+}
+
+static PyObject *DragObj_GetFlavorType(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       UInt16 index;
+       FlavorType theType;
+       if (!PyArg_ParseTuple(_args, "lH",
+                             &theItemRef,
+                             &index))
+               return NULL;
+       _err = GetFlavorType(_self->ob_itself,
+                            theItemRef,
+                            index,
+                            &theType);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildOSType, theType);
+       return _res;
+}
+
+static PyObject *DragObj_GetFlavorFlags(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       FlavorType theType;
+       FlavorFlags theFlags;
+       if (!PyArg_ParseTuple(_args, "lO&",
+                             &theItemRef,
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       _err = GetFlavorFlags(_self->ob_itself,
+                             theItemRef,
+                             theType,
+                             &theFlags);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            theFlags);
+       return _res;
+}
+
+static PyObject *DragObj_GetFlavorDataSize(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       FlavorType theType;
+       Size dataSize;
+       if (!PyArg_ParseTuple(_args, "lO&",
+                             &theItemRef,
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       _err = GetFlavorDataSize(_self->ob_itself,
+                                theItemRef,
+                                theType,
+                                &dataSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            dataSize);
+       return _res;
+}
+
+static PyObject *DragObj_GetFlavorData(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       FlavorType theType;
+       char *dataPtr__out__;
+       long dataPtr__len__;
+       int dataPtr__in_len__;
+       UInt32 dataOffset;
+       if (!PyArg_ParseTuple(_args, "lO&il",
+                             &theItemRef,
+                             PyMac_GetOSType, &theType,
+                             &dataPtr__in_len__,
+                             &dataOffset))
+               return NULL;
+       if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
+       {
+               PyErr_NoMemory();
+               goto dataPtr__error__;
+       }
+       dataPtr__len__ = dataPtr__in_len__;
+       _err = GetFlavorData(_self->ob_itself,
+                            theItemRef,
+                            theType,
+                            dataPtr__out__, &dataPtr__len__,
+                            dataOffset);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("s#",
+                            dataPtr__out__, (int)dataPtr__len__);
+       free(dataPtr__out__);
+ dataPtr__error__: ;
+       return _res;
+}
+
+static PyObject *DragObj_GetDragItemBounds(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       Rect itemBounds;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &theItemRef))
+               return NULL;
+       _err = GetDragItemBounds(_self->ob_itself,
+                                theItemRef,
+                                &itemBounds);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildRect, &itemBounds);
+       return _res;
+}
+
+static PyObject *DragObj_SetDragItemBounds(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       ItemReference theItemRef;
+       Rect itemBounds;
+       if (!PyArg_ParseTuple(_args, "lO&",
+                             &theItemRef,
+                             PyMac_GetRect, &itemBounds))
+               return NULL;
+       _err = SetDragItemBounds(_self->ob_itself,
+                                theItemRef,
+                                &itemBounds);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_GetDropLocation(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       AEDesc dropLocation;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetDropLocation(_self->ob_itself,
+                              &dropLocation);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            AEDesc_New, &dropLocation);
+       return _res;
+}
+
+static PyObject *DragObj_SetDropLocation(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       AEDesc dropLocation;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             AEDesc_Convert, &dropLocation))
+               return NULL;
+       _err = SetDropLocation(_self->ob_itself,
+                              &dropLocation);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_GetDragAttributes(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       DragAttributes flags;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetDragAttributes(_self->ob_itself,
+                                &flags);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            flags);
+       return _res;
+}
+
+static PyObject *DragObj_GetDragMouse(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Point mouse;
+       Point globalPinnedMouse;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetDragMouse(_self->ob_itself,
+                           &mouse,
+                           &globalPinnedMouse);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&O&",
+                            PyMac_BuildPoint, mouse,
+                            PyMac_BuildPoint, globalPinnedMouse);
+       return _res;
+}
+
+static PyObject *DragObj_SetDragMouse(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Point globalPinnedMouse;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &globalPinnedMouse))
+               return NULL;
+       _err = SetDragMouse(_self->ob_itself,
+                           globalPinnedMouse);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_GetDragOrigin(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Point globalInitialMouse;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetDragOrigin(_self->ob_itself,
+                            &globalInitialMouse);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildPoint, globalInitialMouse);
+       return _res;
+}
+
+static PyObject *DragObj_GetDragModifiers(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 modifiers;
+       SInt16 mouseDownModifiers;
+       SInt16 mouseUpModifiers;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetDragModifiers(_self->ob_itself,
+                               &modifiers,
+                               &mouseDownModifiers,
+                               &mouseUpModifiers);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("hhh",
+                            modifiers,
+                            mouseDownModifiers,
+                            mouseUpModifiers);
+       return _res;
+}
+
+static PyObject *DragObj_ShowDragHilite(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       RgnHandle hiliteFrame;
+       Boolean inside;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             ResObj_Convert, &hiliteFrame,
+                             &inside))
+               return NULL;
+       _err = ShowDragHilite(_self->ob_itself,
+                             hiliteFrame,
+                             inside);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_HideDragHilite(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = HideDragHilite(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_DragPreScroll(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 dH;
+       SInt16 dV;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &dH,
+                             &dV))
+               return NULL;
+       _err = DragPreScroll(_self->ob_itself,
+                            dH,
+                            dV);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_DragPostScroll(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = DragPostScroll(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *DragObj_UpdateDragHilite(DragObjObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       RgnHandle updateRgn;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &updateRgn))
+               return NULL;
+       _err = UpdateDragHilite(_self->ob_itself,
+                               updateRgn);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyMethodDef DragObj_methods[] = {
+       {"DisposeDrag", (PyCFunction)DragObj_DisposeDrag, 1,
+        "() -> None"},
+       {"AddDragItemFlavor", (PyCFunction)DragObj_AddDragItemFlavor, 1,
+        "(ItemReference theItemRef, FlavorType theType, Buffer dataPtr, FlavorFlags theFlags) -> None"},
+       {"SetDragItemFlavorData", (PyCFunction)DragObj_SetDragItemFlavorData, 1,
+        "(ItemReference theItemRef, FlavorType theType, Buffer dataPtr, UInt32 dataOffset) -> None"},
+       {"SetDragImage", (PyCFunction)DragObj_SetDragImage, 1,
+        "(PixMapHandle imagePixMap, RgnHandle imageRgn, Point imageOffsetPt, DragImageFlags theImageFlags) -> None"},
+       {"ChangeDragBehaviors", (PyCFunction)DragObj_ChangeDragBehaviors, 1,
+        "(DragBehaviors inBehaviorsToSet, DragBehaviors inBehaviorsToClear) -> None"},
+       {"TrackDrag", (PyCFunction)DragObj_TrackDrag, 1,
+        "(EventRecord theEvent, RgnHandle theRegion) -> None"},
+       {"CountDragItems", (PyCFunction)DragObj_CountDragItems, 1,
+        "() -> (UInt16 numItems)"},
+       {"GetDragItemReferenceNumber", (PyCFunction)DragObj_GetDragItemReferenceNumber, 1,
+        "(UInt16 index) -> (ItemReference theItemRef)"},
+       {"CountDragItemFlavors", (PyCFunction)DragObj_CountDragItemFlavors, 1,
+        "(ItemReference theItemRef) -> (UInt16 numFlavors)"},
+       {"GetFlavorType", (PyCFunction)DragObj_GetFlavorType, 1,
+        "(ItemReference theItemRef, UInt16 index) -> (FlavorType theType)"},
+       {"GetFlavorFlags", (PyCFunction)DragObj_GetFlavorFlags, 1,
+        "(ItemReference theItemRef, FlavorType theType) -> (FlavorFlags theFlags)"},
+       {"GetFlavorDataSize", (PyCFunction)DragObj_GetFlavorDataSize, 1,
+        "(ItemReference theItemRef, FlavorType theType) -> (Size dataSize)"},
+       {"GetFlavorData", (PyCFunction)DragObj_GetFlavorData, 1,
+        "(ItemReference theItemRef, FlavorType theType, Buffer dataPtr, UInt32 dataOffset) -> (Buffer dataPtr)"},
+       {"GetDragItemBounds", (PyCFunction)DragObj_GetDragItemBounds, 1,
+        "(ItemReference theItemRef) -> (Rect itemBounds)"},
+       {"SetDragItemBounds", (PyCFunction)DragObj_SetDragItemBounds, 1,
+        "(ItemReference theItemRef, Rect itemBounds) -> None"},
+       {"GetDropLocation", (PyCFunction)DragObj_GetDropLocation, 1,
+        "() -> (AEDesc dropLocation)"},
+       {"SetDropLocation", (PyCFunction)DragObj_SetDropLocation, 1,
+        "(AEDesc dropLocation) -> None"},
+       {"GetDragAttributes", (PyCFunction)DragObj_GetDragAttributes, 1,
+        "() -> (DragAttributes flags)"},
+       {"GetDragMouse", (PyCFunction)DragObj_GetDragMouse, 1,
+        "() -> (Point mouse, Point globalPinnedMouse)"},
+       {"SetDragMouse", (PyCFunction)DragObj_SetDragMouse, 1,
+        "(Point globalPinnedMouse) -> None"},
+       {"GetDragOrigin", (PyCFunction)DragObj_GetDragOrigin, 1,
+        "() -> (Point globalInitialMouse)"},
+       {"GetDragModifiers", (PyCFunction)DragObj_GetDragModifiers, 1,
+        "() -> (SInt16 modifiers, SInt16 mouseDownModifiers, SInt16 mouseUpModifiers)"},
+       {"ShowDragHilite", (PyCFunction)DragObj_ShowDragHilite, 1,
+        "(RgnHandle hiliteFrame, Boolean inside) -> None"},
+       {"HideDragHilite", (PyCFunction)DragObj_HideDragHilite, 1,
+        "() -> None"},
+       {"DragPreScroll", (PyCFunction)DragObj_DragPreScroll, 1,
+        "(SInt16 dH, SInt16 dV) -> None"},
+       {"DragPostScroll", (PyCFunction)DragObj_DragPostScroll, 1,
+        "() -> None"},
+       {"UpdateDragHilite", (PyCFunction)DragObj_UpdateDragHilite, 1,
+        "(RgnHandle updateRgn) -> None"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain DragObj_chain = { DragObj_methods, NULL };
+
+static PyObject *DragObj_getattr(DragObjObject *self, char *name)
+{
+       return Py_FindMethodInChain(&DragObj_chain, (PyObject *)self, name);
+}
+
+#define DragObj_setattr NULL
+
+#define DragObj_compare NULL
+
+#define DragObj_repr NULL
+
+#define DragObj_hash NULL
+
+PyTypeObject DragObj_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "DragObj", /*tp_name*/
+       sizeof(DragObjObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) DragObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) DragObj_getattr, /*tp_getattr*/
+       (setattrfunc) DragObj_setattr, /*tp_setattr*/
+       (cmpfunc) DragObj_compare, /*tp_compare*/
+       (reprfunc) DragObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) DragObj_hash, /*tp_hash*/
+};
+
+/* -------------------- End object type DragObj --------------------- */
+
+
+static PyObject *Drag_NewDrag(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       DragRef theDrag;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = NewDrag(&theDrag);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            DragObj_New, theDrag);
+       return _res;
+}
+
+static PyObject *Drag_GetDragHiliteColor(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       WindowPtr window;
+       RGBColor color;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             WinObj_Convert, &window))
+               return NULL;
+       _err = GetDragHiliteColor(window,
+                                 &color);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            QdRGB_New, &color);
+       return _res;
+}
+
+static PyObject *Drag_WaitMouseMoved(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Point initialMouse;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &initialMouse))
+               return NULL;
+       _rv = WaitMouseMoved(initialMouse);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Drag_ZoomRects(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Rect fromRect;
+       Rect toRect;
+       SInt16 zoomSteps;
+       ZoomAcceleration acceleration;
+       if (!PyArg_ParseTuple(_args, "O&O&hh",
+                             PyMac_GetRect, &fromRect,
+                             PyMac_GetRect, &toRect,
+                             &zoomSteps,
+                             &acceleration))
+               return NULL;
+       _err = ZoomRects(&fromRect,
+                        &toRect,
+                        zoomSteps,
+                        acceleration);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Drag_ZoomRegion(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       RgnHandle region;
+       Point zoomDistance;
+       SInt16 zoomSteps;
+       ZoomAcceleration acceleration;
+       if (!PyArg_ParseTuple(_args, "O&O&hh",
+                             ResObj_Convert, &region,
+                             PyMac_GetPoint, &zoomDistance,
+                             &zoomSteps,
+                             &acceleration))
+               return NULL;
+       _err = ZoomRegion(region,
+                         zoomDistance,
+                         zoomSteps,
+                         acceleration);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Drag_InstallTrackingHandler(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+           PyObject *callback;
+           WindowPtr theWindow = NULL;
+           OSErr _err;
+           
+           if ( !PyArg_ParseTuple(_args, "O|O&", &callback, WinObj_Convert, &theWindow) )
+               return NULL;
+           Py_INCREF(callback);        /* Cannot decref later, too bad */
+           _err = InstallTrackingHandler(dragglue_TrackingHandlerUPP, theWindow, (void *)callback);
+               if (_err != noErr) return PyMac_Error(_err);
+               Py_INCREF(Py_None);
+               return Py_None;
+
+}
+
+static PyObject *Drag_InstallReceiveHandler(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+           PyObject *callback;
+           WindowPtr theWindow = NULL;
+           OSErr _err;
+           
+           if ( !PyArg_ParseTuple(_args, "O|O&", &callback, WinObj_Convert, &theWindow) )
+               return NULL;
+           Py_INCREF(callback);        /* Cannot decref later, too bad */
+           _err = InstallReceiveHandler(dragglue_ReceiveHandlerUPP, theWindow, (void *)callback);
+               if (_err != noErr) return PyMac_Error(_err);
+               Py_INCREF(Py_None);
+               return Py_None;
+
+}
+
+static PyObject *Drag_RemoveTrackingHandler(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+           WindowPtr theWindow = NULL;
+           OSErr _err;
+           
+           if ( !PyArg_ParseTuple(_args, "|O&", WinObj_Convert, &theWindow) )
+               return NULL;
+           _err = RemoveTrackingHandler(dragglue_TrackingHandlerUPP, theWindow);
+               if (_err != noErr) return PyMac_Error(_err);
+               Py_INCREF(Py_None);
+               return Py_None;
+
+}
+
+static PyObject *Drag_RemoveReceiveHandler(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+           WindowPtr theWindow = NULL;
+           OSErr _err;
+           
+           if ( !PyArg_ParseTuple(_args, "|O&", WinObj_Convert, &theWindow) )
+               return NULL;
+           _err = RemoveReceiveHandler(dragglue_ReceiveHandlerUPP, theWindow);
+               if (_err != noErr) return PyMac_Error(_err);
+               Py_INCREF(Py_None);
+               return Py_None;
+
+}
+
+static PyMethodDef Drag_methods[] = {
+       {"NewDrag", (PyCFunction)Drag_NewDrag, 1,
+        "() -> (DragRef theDrag)"},
+       {"GetDragHiliteColor", (PyCFunction)Drag_GetDragHiliteColor, 1,
+        "(WindowPtr window) -> (RGBColor color)"},
+       {"WaitMouseMoved", (PyCFunction)Drag_WaitMouseMoved, 1,
+        "(Point initialMouse) -> (Boolean _rv)"},
+       {"ZoomRects", (PyCFunction)Drag_ZoomRects, 1,
+        "(Rect fromRect, Rect toRect, SInt16 zoomSteps, ZoomAcceleration acceleration) -> None"},
+       {"ZoomRegion", (PyCFunction)Drag_ZoomRegion, 1,
+        "(RgnHandle region, Point zoomDistance, SInt16 zoomSteps, ZoomAcceleration acceleration) -> None"},
+       {"InstallTrackingHandler", (PyCFunction)Drag_InstallTrackingHandler, 1,
+        NULL},
+       {"InstallReceiveHandler", (PyCFunction)Drag_InstallReceiveHandler, 1,
+        NULL},
+       {"RemoveTrackingHandler", (PyCFunction)Drag_RemoveTrackingHandler, 1,
+        NULL},
+       {"RemoveReceiveHandler", (PyCFunction)Drag_RemoveReceiveHandler, 1,
+        NULL},
+       {NULL, NULL, 0}
+};
+
+
+
+static pascal OSErr
+dragglue_TrackingHandler(DragTrackingMessage theMessage, WindowPtr theWindow,
+                         void *handlerRefCon, DragReference theDrag)
+{
+       PyObject *args, *rv;
+       int i;
+       
+       args = Py_BuildValue("hO&O&", theMessage, DragObj_New, theDrag, WinObj_WhichWindow, theWindow);
+       if ( args == NULL )
+               return -1;
+       rv = PyEval_CallObject((PyObject *)handlerRefCon, args);
+       Py_DECREF(args);
+       if ( rv == NULL ) {
+               fprintf(stderr, "Drag: Exception in TrackingHandler\n");
+               return -1;
+       }
+       i = -1;
+       if ( rv == Py_None )
+               i = 0;
+       else
+               PyArg_Parse(rv, "l", &i);
+       Py_DECREF(rv);
+       return i;
+}
+
+static pascal OSErr
+dragglue_ReceiveHandler(WindowPtr theWindow, void *handlerRefCon,
+                        DragReference theDrag)
+{
+       PyObject *args, *rv;
+       int i;
+       
+       args = Py_BuildValue("O&O&", DragObj_New, theDrag, WinObj_WhichWindow, theWindow);
+       if ( args == NULL )
+               return -1;
+       rv = PyEval_CallObject((PyObject *)handlerRefCon, args);
+       Py_DECREF(args);
+       if ( rv == NULL ) {
+               fprintf(stderr, "Drag: Exception in ReceiveHandler\n");
+               return -1;
+       }
+       i = -1;
+       if ( rv == Py_None )
+               i = 0;
+       else
+               PyArg_Parse(rv, "l", &i);
+       Py_DECREF(rv);
+       return i;
+}
+
+static pascal OSErr
+dragglue_SendData(FlavorType theType, void *dragSendRefCon,
+                      ItemReference theItem, DragReference theDrag)
+{
+       DragObjObject *self = (DragObjObject *)dragSendRefCon;
+       PyObject *args, *rv;
+       int i;
+       
+       if ( self->sendproc == NULL )
+               return -1;
+       args = Py_BuildValue("O&l", PyMac_BuildOSType, theType, theItem);
+       if ( args == NULL )
+               return -1;
+       rv = PyEval_CallObject(self->sendproc, args);
+       Py_DECREF(args);
+       if ( rv == NULL ) {
+               fprintf(stderr, "Drag: Exception in SendDataHandler\n");
+               return -1;
+       }
+       i = -1;
+       if ( rv == Py_None )
+               i = 0;
+       else
+               PyArg_Parse(rv, "l", &i);
+       Py_DECREF(rv);
+       return i;
+}
+
+#if 0
+static pascal OSErr
+dragglue_Input(Point *mouse, short *modifiers,
+                   void *dragSendRefCon, DragReference theDrag)
+{
+    return 0;
+}
+
+static pascal OSErr
+dragglue_Drawing(xxxx
+                   void *dragSendRefCon, DragReference theDrag)
+{
+    return 0;
+}
+#endif
+
+
+
+void initDrag(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(DragRef, DragObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragRef, DragObj_Convert);
+
+
+       m = Py_InitModule("Drag", Drag_methods);
+       d = PyModule_GetDict(m);
+       Drag_Error = PyMac_GetOSErrException();
+       if (Drag_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Drag_Error) != 0)
+               return;
+       DragObj_Type.ob_type = &PyType_Type;
+       Py_INCREF(&DragObj_Type);
+       if (PyDict_SetItemString(d, "DragObjType", (PyObject *)&DragObj_Type) != 0)
+               Py_FatalError("can't initialize DragObjType");
+
+       dragglue_TrackingHandlerUPP = NewDragTrackingHandlerUPP(dragglue_TrackingHandler);
+       dragglue_ReceiveHandlerUPP = NewDragReceiveHandlerUPP(dragglue_ReceiveHandler);
+       dragglue_SendDataUPP = NewDragSendDataUPP(dragglue_SendData);
+#if 0
+       dragglue_InputUPP = NewDragInputUPP(dragglue_Input);
+       dragglue_DrawingUPP = NewDragDrawingUPP(dragglue_Drawing);
+#endif
+
+
+}
+
+/* ======================== End module Drag ========================= */
+
diff --git a/Mac/Modules/drag/dragsupport.py b/Mac/Modules/drag/dragsupport.py
new file mode 100644 (file)
index 0000000..c35111e
--- /dev/null
@@ -0,0 +1,290 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Drag.h'               # The Apple header file
+MODNAME = 'Drag'                               # The name of the module
+OBJECTNAME = 'DragObj'                 # The basic name of the objects used here
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = 'DragRef' # The C type used to represent them
+OBJECTPREFIX = MODPREFIX + 'Obj'       # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+
+DragRef = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX)
+DragItemRef = Type("ItemReference", "l")
+# Old names
+DragReference = DragRef
+ItemReference = DragItemRef
+
+PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj")
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+AEDesc = OpaqueType('AEDesc')
+AEDesc_ptr = AEDesc
+RGBColor = OpaqueType("RGBColor", "QdRGB")
+
+FlavorType = OSTypeType("FlavorType")
+DragAttributes = Type("DragAttributes", "l")
+DragBehaviors = Type("DragBehaviors", "l")
+DragImageFlags = Type("DragImageFlags", "l")
+DragImageTranslucency = Type("DragImageTranslucency", "l")
+DragRegionMessage = Type("DragRegionMessage", "h")
+ZoomAcceleration = Type("ZoomAcceleration", "h")
+FlavorFlags = Type("FlavorFlags", "l")
+DragTrackingMessage = Type("DragTrackingMessage", "h")
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Drag.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+/* Callback glue routines */
+DragTrackingHandlerUPP dragglue_TrackingHandlerUPP;
+DragReceiveHandlerUPP dragglue_ReceiveHandlerUPP;
+DragSendDataUPP dragglue_SendDataUPP;
+#if 0
+DragInputUPP dragglue_InputUPP;
+DragDrawingUPP dragglue_DrawingUPP;
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_DragObj_New(DragRef);
+extern int _DragObj_Convert(PyObject *, DragRef *);
+
+#define DragObj_New _DragObj_New
+#define DragObj_Convert _DragObj_Convert
+#endif
+"""
+
+finalstuff = finalstuff + """
+static pascal OSErr
+dragglue_TrackingHandler(DragTrackingMessage theMessage, WindowPtr theWindow,
+                         void *handlerRefCon, DragReference theDrag)
+{
+       PyObject *args, *rv;
+       int i;
+       
+       args = Py_BuildValue("hO&O&", theMessage, DragObj_New, theDrag, WinObj_WhichWindow, theWindow);
+       if ( args == NULL )
+               return -1;
+       rv = PyEval_CallObject((PyObject *)handlerRefCon, args);
+       Py_DECREF(args);
+       if ( rv == NULL ) {
+               fprintf(stderr, "Drag: Exception in TrackingHandler\\n");
+               return -1;
+       }
+       i = -1;
+       if ( rv == Py_None )
+               i = 0;
+       else
+               PyArg_Parse(rv, "l", &i);
+       Py_DECREF(rv);
+       return i;
+}
+
+static pascal OSErr
+dragglue_ReceiveHandler(WindowPtr theWindow, void *handlerRefCon,
+                        DragReference theDrag)
+{
+       PyObject *args, *rv;
+       int i;
+       
+       args = Py_BuildValue("O&O&", DragObj_New, theDrag, WinObj_WhichWindow, theWindow);
+       if ( args == NULL )
+               return -1;
+       rv = PyEval_CallObject((PyObject *)handlerRefCon, args);
+       Py_DECREF(args);
+       if ( rv == NULL ) {
+               fprintf(stderr, "Drag: Exception in ReceiveHandler\\n");
+               return -1;
+       }
+       i = -1;
+       if ( rv == Py_None )
+               i = 0;
+       else
+               PyArg_Parse(rv, "l", &i);
+       Py_DECREF(rv);
+       return i;
+}
+
+static pascal OSErr
+dragglue_SendData(FlavorType theType, void *dragSendRefCon,
+                      ItemReference theItem, DragReference theDrag)
+{
+       DragObjObject *self = (DragObjObject *)dragSendRefCon;
+       PyObject *args, *rv;
+       int i;
+       
+       if ( self->sendproc == NULL )
+               return -1;
+       args = Py_BuildValue("O&l", PyMac_BuildOSType, theType, theItem);
+       if ( args == NULL )
+               return -1;
+       rv = PyEval_CallObject(self->sendproc, args);
+       Py_DECREF(args);
+       if ( rv == NULL ) {
+               fprintf(stderr, "Drag: Exception in SendDataHandler\\n");
+               return -1;
+       }
+       i = -1;
+       if ( rv == Py_None )
+               i = 0;
+       else
+               PyArg_Parse(rv, "l", &i);
+       Py_DECREF(rv);
+       return i;
+}
+
+#if 0
+static pascal OSErr
+dragglue_Input(Point *mouse, short *modifiers,
+                   void *dragSendRefCon, DragReference theDrag)
+{
+    return 0;
+}
+
+static pascal OSErr
+dragglue_Drawing(xxxx
+                   void *dragSendRefCon, DragReference theDrag)
+{
+    return 0;
+}
+#endif
+
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(DragRef, DragObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragRef, DragObj_Convert);
+"""
+
+variablestuff = """
+dragglue_TrackingHandlerUPP = NewDragTrackingHandlerUPP(dragglue_TrackingHandler);
+dragglue_ReceiveHandlerUPP = NewDragReceiveHandlerUPP(dragglue_ReceiveHandler);
+dragglue_SendDataUPP = NewDragSendDataUPP(dragglue_SendData);
+#if 0
+dragglue_InputUPP = NewDragInputUPP(dragglue_Input);
+dragglue_DrawingUPP = NewDragDrawingUPP(dragglue_Drawing);
+#endif
+"""    
+
+class MyObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(Drag_Error,"Cannot create null Drag");
+                                       return NULL;
+                               }""")
+       def outputFreeIt(self, itselfname):
+               ## Output("DisposeDrag(%s);", itselfname)
+               Output("Py_XDECREF(self->sendproc);")
+               ## Output("Py_XDECREF(self->inputproc);")
+               ## Output("Py_XDECREF(self->drawingproc);")
+               
+       def outputStructMembers(self):
+               GlobalObjectDefinition.outputStructMembers(self)
+               Output("PyObject *sendproc;")
+               ## Output("PyObject *inputproc;")
+               ## Output("PyObject *drawingproc;")
+               
+       def outputInitStructMembers(self):
+               GlobalObjectDefinition.outputInitStructMembers(self)
+               Output("it->sendproc = NULL;")
+               ## Output("it->inputproc = NULL;")
+               ## Output("it->drawingproc = NULL;")
+               
+               
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff, variablestuff)
+object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
+module.addobject(object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+methods = []
+execfile(INPUTFILE)
+
+# add the populated lists to the generator groups
+for f in functions: module.add(f)
+for f in methods: object.add(f)
+
+# Manual generators for the callbacks
+
+installtracking_body = """
+    PyObject *callback;
+    WindowPtr theWindow = NULL;
+    OSErr _err;
+    
+    if ( !PyArg_ParseTuple(_args, "O|O&", &callback, WinObj_Convert, &theWindow) )
+       return NULL;
+    Py_INCREF(callback);       /* Cannot decref later, too bad */
+    _err = InstallTrackingHandler(dragglue_TrackingHandlerUPP, theWindow, (void *)callback);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       return Py_None;
+"""
+installtracking = ManualGenerator("InstallTrackingHandler", installtracking_body)
+module.add(installtracking)
+
+installreceive_body = """
+    PyObject *callback;
+    WindowPtr theWindow = NULL;
+    OSErr _err;
+    
+    if ( !PyArg_ParseTuple(_args, "O|O&", &callback, WinObj_Convert, &theWindow) )
+       return NULL;
+    Py_INCREF(callback);       /* Cannot decref later, too bad */
+    _err = InstallReceiveHandler(dragglue_ReceiveHandlerUPP, theWindow, (void *)callback);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       return Py_None;
+"""
+installreceive = ManualGenerator("InstallReceiveHandler", installreceive_body)
+module.add(installreceive)
+
+removetracking_body = """
+    WindowPtr theWindow = NULL;
+    OSErr _err;
+    
+    if ( !PyArg_ParseTuple(_args, "|O&", WinObj_Convert, &theWindow) )
+       return NULL;
+    _err = RemoveTrackingHandler(dragglue_TrackingHandlerUPP, theWindow);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       return Py_None;
+"""
+removetracking = ManualGenerator("RemoveTrackingHandler", removetracking_body)
+module.add(removetracking)
+
+removereceive_body = """
+    WindowPtr theWindow = NULL;
+    OSErr _err;
+    
+    if ( !PyArg_ParseTuple(_args, "|O&", WinObj_Convert, &theWindow) )
+       return NULL;
+    _err = RemoveReceiveHandler(dragglue_ReceiveHandlerUPP, theWindow);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       return Py_None;
+"""
+removereceive = ManualGenerator("RemoveReceiveHandler", removereceive_body)
+module.add(removereceive)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
diff --git a/Mac/Modules/evt/Evtmodule.c b/Mac/Modules/evt/Evtmodule.c
new file mode 100644 (file)
index 0000000..bff6e1e
--- /dev/null
@@ -0,0 +1,451 @@
+
+/* =========================== Module Evt =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Events.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+
+static PyObject *Evt_Error;
+
+static PyObject *Evt_GetMouse(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Point mouseLoc;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetMouse(&mouseLoc);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildPoint, mouseLoc);
+       return _res;
+}
+
+static PyObject *Evt_Button(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = Button();
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Evt_StillDown(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = StillDown();
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Evt_WaitMouseUp(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = WaitMouseUp();
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Evt_TickCount(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UInt32 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = TickCount();
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Evt_GetCaretTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UInt32 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetCaretTime();
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Evt_GetKeys(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       KeyMap theKeys__out__;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetKeys(theKeys__out__);
+       _res = Py_BuildValue("s#",
+                            (char *)&theKeys__out__, (int)sizeof(KeyMap));
+ theKeys__error__: ;
+       return _res;
+}
+
+static PyObject *Evt_GetDblTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UInt32 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetDblTime();
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Evt_SetEventMask(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       EventMask value;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &value))
+               return NULL;
+       SetEventMask(value);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Evt_GetNextEvent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventMask eventMask;
+       EventRecord theEvent;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &eventMask))
+               return NULL;
+       _rv = GetNextEvent(eventMask,
+                          &theEvent);
+       _res = Py_BuildValue("bO&",
+                            _rv,
+                            PyMac_BuildEventRecord, &theEvent);
+       return _res;
+}
+
+static PyObject *Evt_EventAvail(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventMask eventMask;
+       EventRecord theEvent;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &eventMask))
+               return NULL;
+       _rv = EventAvail(eventMask,
+                        &theEvent);
+       _res = Py_BuildValue("bO&",
+                            _rv,
+                            PyMac_BuildEventRecord, &theEvent);
+       return _res;
+}
+
+static PyObject *Evt_PostEvent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       EventKind eventNum;
+       UInt32 eventMsg;
+       if (!PyArg_ParseTuple(_args, "Hl",
+                             &eventNum,
+                             &eventMsg))
+               return NULL;
+       _err = PostEvent(eventNum,
+                        eventMsg);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Evt_OSEventAvail(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventMask mask;
+       EventRecord theEvent;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &mask))
+               return NULL;
+       _rv = OSEventAvail(mask,
+                          &theEvent);
+       _res = Py_BuildValue("bO&",
+                            _rv,
+                            PyMac_BuildEventRecord, &theEvent);
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Evt_GetOSEvent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventMask mask;
+       EventRecord theEvent;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &mask))
+               return NULL;
+       _rv = GetOSEvent(mask,
+                        &theEvent);
+       _res = Py_BuildValue("bO&",
+                            _rv,
+                            PyMac_BuildEventRecord, &theEvent);
+       return _res;
+}
+#endif
+
+static PyObject *Evt_FlushEvents(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       EventMask whichMask;
+       EventMask stopMask;
+       if (!PyArg_ParseTuple(_args, "HH",
+                             &whichMask,
+                             &stopMask))
+               return NULL;
+       FlushEvents(whichMask,
+                   stopMask);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Evt_SystemClick(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       EventRecord theEvent;
+       WindowPtr theWindow;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetEventRecord, &theEvent,
+                             WinObj_Convert, &theWindow))
+               return NULL;
+       SystemClick(&theEvent,
+                   theWindow);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Evt_SystemTask(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       SystemTask();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Evt_SystemEvent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventRecord theEvent;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetEventRecord, &theEvent))
+               return NULL;
+       _rv = SystemEvent(&theEvent);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Evt_GetGlobalMouse(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Point globalMouse;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetGlobalMouse(&globalMouse);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildPoint, globalMouse);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Evt_GetCurrentKeyModifiers(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UInt32 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetCurrentKeyModifiers();
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Evt_CheckEventQueueForUserCancel(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CheckEventQueueForUserCancel();
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+#endif
+
+static PyObject *Evt_WaitNextEvent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       Boolean _rv;
+       EventMask eventMask;
+       EventRecord theEvent;
+       UInt32 sleep;
+       Handle mouseregion = (Handle)0;
+
+       if (!PyArg_ParseTuple(_args, "Hl|O&",
+                             &eventMask,
+                             &sleep,
+                             OptResObj_Convert, &mouseregion))
+               return NULL;
+       _rv = WaitNextEvent(eventMask,
+                           &theEvent,
+                           sleep,
+                           (RgnHandle)mouseregion);
+       _res = Py_BuildValue("bO&",
+                            _rv,
+                            PyMac_BuildEventRecord, &theEvent);
+       return _res;
+
+}
+
+static PyMethodDef Evt_methods[] = {
+       {"GetMouse", (PyCFunction)Evt_GetMouse, 1,
+        "() -> (Point mouseLoc)"},
+       {"Button", (PyCFunction)Evt_Button, 1,
+        "() -> (Boolean _rv)"},
+       {"StillDown", (PyCFunction)Evt_StillDown, 1,
+        "() -> (Boolean _rv)"},
+       {"WaitMouseUp", (PyCFunction)Evt_WaitMouseUp, 1,
+        "() -> (Boolean _rv)"},
+       {"TickCount", (PyCFunction)Evt_TickCount, 1,
+        "() -> (UInt32 _rv)"},
+       {"GetCaretTime", (PyCFunction)Evt_GetCaretTime, 1,
+        "() -> (UInt32 _rv)"},
+       {"GetKeys", (PyCFunction)Evt_GetKeys, 1,
+        "() -> (KeyMap theKeys)"},
+       {"GetDblTime", (PyCFunction)Evt_GetDblTime, 1,
+        "() -> (UInt32 _rv)"},
+       {"SetEventMask", (PyCFunction)Evt_SetEventMask, 1,
+        "(EventMask value) -> None"},
+       {"GetNextEvent", (PyCFunction)Evt_GetNextEvent, 1,
+        "(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)"},
+       {"EventAvail", (PyCFunction)Evt_EventAvail, 1,
+        "(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)"},
+       {"PostEvent", (PyCFunction)Evt_PostEvent, 1,
+        "(EventKind eventNum, UInt32 eventMsg) -> None"},
+
+#if !TARGET_API_MAC_CARBON
+       {"OSEventAvail", (PyCFunction)Evt_OSEventAvail, 1,
+        "(EventMask mask) -> (Boolean _rv, EventRecord theEvent)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"GetOSEvent", (PyCFunction)Evt_GetOSEvent, 1,
+        "(EventMask mask) -> (Boolean _rv, EventRecord theEvent)"},
+#endif
+       {"FlushEvents", (PyCFunction)Evt_FlushEvents, 1,
+        "(EventMask whichMask, EventMask stopMask) -> None"},
+
+#if !TARGET_API_MAC_CARBON
+       {"SystemClick", (PyCFunction)Evt_SystemClick, 1,
+        "(EventRecord theEvent, WindowPtr theWindow) -> None"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"SystemTask", (PyCFunction)Evt_SystemTask, 1,
+        "() -> None"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"SystemEvent", (PyCFunction)Evt_SystemEvent, 1,
+        "(EventRecord theEvent) -> (Boolean _rv)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetGlobalMouse", (PyCFunction)Evt_GetGlobalMouse, 1,
+        "() -> (Point globalMouse)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetCurrentKeyModifiers", (PyCFunction)Evt_GetCurrentKeyModifiers, 1,
+        "() -> (UInt32 _rv)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"CheckEventQueueForUserCancel", (PyCFunction)Evt_CheckEventQueueForUserCancel, 1,
+        "() -> (Boolean _rv)"},
+#endif
+       {"WaitNextEvent", (PyCFunction)Evt_WaitNextEvent, 1,
+        "(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initEvt(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+
+       m = Py_InitModule("Evt", Evt_methods);
+       d = PyModule_GetDict(m);
+       Evt_Error = PyMac_GetOSErrException();
+       if (Evt_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Evt_Error) != 0)
+               return;
+}
+
+/* ========================= End module Evt ========================= */
+
diff --git a/Mac/Modules/evt/evtsupport.py b/Mac/Modules/evt/evtsupport.py
new file mode 100644 (file)
index 0000000..88ee6c2
--- /dev/null
@@ -0,0 +1,108 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Events.h'             # The Apple header file
+MODNAME = 'Evt'                                # The name of the module
+OBJECTNAME = 'Event'                   # The basic name of the objects used here
+KIND = 'Record'                                # Usually 'Ptr' or 'Handle'
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = OBJECTNAME + KIND         # The C type used to represent them
+OBJECTPREFIX = MODPREFIX + 'Obj'       # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+
+#WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX)
+
+RgnHandle = FakeType("(RgnHandle)0")
+# XXXX Should be next, but this will break a lot of code...
+# RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj")
+
+KeyMap = ArrayOutputBufferType("KeyMap")
+##MacOSEventKind = Type("MacOSEventKind", "h") # Old-style
+##MacOSEventMask = Type("MacOSEventMask", "h") # Old-style
+EventMask = Type("EventMask", "H")
+EventKind = Type("EventKind", "H")
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Events.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+"""
+
+class MyObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("if (itself == NULL) return PyMac_Error(resNotFound);")
+       def outputCheckConvertArg(self):
+               OutLbrace("if (DlgObj_Check(v))")
+               Output("*p_itself = ((WindowObject *)v)->ob_itself;")
+               Output("return 1;")
+               OutRbrace()
+               Out("""
+               if (v == Py_None) { *p_itself = NULL; return 1; }
+               if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; }
+               """)
+
+# From here on it's basically all boiler plate...
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+##object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
+##module.addobject(object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+##Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+##methods = []
+execfile(INPUTFILE)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+##for f in methods: object.add(f)
+
+WaitNextEvent_body = """
+Boolean _rv;
+EventMask eventMask;
+EventRecord theEvent;
+UInt32 sleep;
+Handle mouseregion = (Handle)0;
+
+if (!PyArg_ParseTuple(_args, "Hl|O&",
+                      &eventMask,
+                      &sleep,
+                      OptResObj_Convert, &mouseregion))
+       return NULL;
+_rv = WaitNextEvent(eventMask,
+                    &theEvent,
+                    sleep,
+                    (RgnHandle)mouseregion);
+_res = Py_BuildValue("bO&",
+                     _rv,
+                     PyMac_BuildEventRecord, &theEvent);
+return _res;
+"""
+f = ManualGenerator("WaitNextEvent", WaitNextEvent_body);
+f.docstring = lambda: "(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)"
+module.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Modules/fm/fmsupport.py b/Mac/Modules/fm/fmsupport.py
new file mode 100644 (file)
index 0000000..9ec1e0e
--- /dev/null
@@ -0,0 +1,79 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Fonts.h'              # The Apple header file
+MODNAME = 'Fm'                         # The name of the module
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Fonts.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+
+/*
+** Parse/generate ComponentDescriptor records
+*/
+static PyObject *
+FMRec_New(FMetricRec *itself)
+{
+
+       return Py_BuildValue("O&O&O&O&O&", 
+               PyMac_BuildFixed, itself->ascent,
+               PyMac_BuildFixed, itself->descent,
+               PyMac_BuildFixed, itself->leading,
+               PyMac_BuildFixed, itself->widMax,
+               ResObj_New, itself->wTabHandle);
+}
+
+#if 0
+/* Not needed... */
+static int
+FMRec_Convert(PyObject *v, FMetricRec *p_itself)
+{
+       return PyArg_ParseTuple(v, "O&O&O&O&O&",
+               PyMac_GetFixed, &itself->ascent,
+               PyMac_GetFixed, &itself->descent,
+               PyMac_GetFixed, &itself->leading,
+               PyMac_GetFixed, &itself->widMax,
+               ResObj_Convert, &itself->wTabHandle);
+}
+#endif
+
+"""
+
+FMetricRecPtr = OpaqueType('FMetricRec', 'FMRec')
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+
+# Create and populate the lists
+functions = []
+execfile(INPUTFILE)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Modules/gestaltmodule.c b/Mac/Modules/gestaltmodule.c
new file mode 100644 (file)
index 0000000..15a2c89
--- /dev/null
@@ -0,0 +1,69 @@
+/***********************************************************
+Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* Macintosh Gestalt interface */
+
+#include "Python.h"
+#include "macglue.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Types.h>
+#include <Gestalt.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+static PyObject *
+gestalt_gestalt(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       OSErr iErr;
+       char *str;
+       int size;
+       OSType selector;
+       long response;
+       if (!PyArg_Parse(args, "s#", &str, &size))
+               return NULL;
+       if (size != 4) {
+               PyErr_SetString(PyExc_TypeError, "gestalt arg must be 4-char string");
+               return NULL;
+       }
+       selector = *(OSType*)str;
+       iErr = Gestalt ( selector, &response );
+       if (iErr != 0) 
+               return PyMac_Error(iErr);
+       return PyInt_FromLong(response);
+}
+
+static struct PyMethodDef gestalt_methods[] = {
+       {"gestalt", gestalt_gestalt},
+       {NULL, NULL} /* Sentinel */
+};
+
+void
+initgestalt()
+{
+       Py_InitModule("gestalt", gestalt_methods);
+}
diff --git a/Mac/Modules/help/Helpmodule.c b/Mac/Modules/help/Helpmodule.c
new file mode 100644 (file)
index 0000000..3c26cda
--- /dev/null
@@ -0,0 +1,292 @@
+
+/* ========================== Module Help =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#include <Balloons.h>
+
+static PyObject *Help_Error;
+
+static PyObject *Help_HMGetHelpMenuHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       MenuHandle mh;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = HMGetHelpMenuHandle(&mh);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            MenuObj_New, mh);
+       return _res;
+}
+
+static PyObject *Help_HMRemoveBalloon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = HMRemoveBalloon();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Help_HMIsBalloon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = HMIsBalloon();
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Help_HMGetBalloons(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = HMGetBalloons();
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Help_HMSetBalloons(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Boolean flag;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &flag))
+               return NULL;
+       _err = HMSetBalloons(flag);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Help_HMSetFont(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 font;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &font))
+               return NULL;
+       _err = HMSetFont(font);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Help_HMSetFontSize(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       UInt16 fontSize;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &fontSize))
+               return NULL;
+       _err = HMSetFontSize(fontSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Help_HMGetFont(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 font;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = HMGetFont(&font);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            font);
+       return _res;
+}
+
+static PyObject *Help_HMGetFontSize(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       UInt16 fontSize;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = HMGetFontSize(&fontSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("H",
+                            fontSize);
+       return _res;
+}
+
+static PyObject *Help_HMSetDialogResID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 resID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &resID))
+               return NULL;
+       _err = HMSetDialogResID(resID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Help_HMSetMenuResID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 menuID;
+       SInt16 resID;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &menuID,
+                             &resID))
+               return NULL;
+       _err = HMSetMenuResID(menuID,
+                             resID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Help_HMScanTemplateItems(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 whichID;
+       SInt16 whichResFile;
+       ResType whichType;
+       if (!PyArg_ParseTuple(_args, "hhO&",
+                             &whichID,
+                             &whichResFile,
+                             PyMac_GetOSType, &whichType))
+               return NULL;
+       _err = HMScanTemplateItems(whichID,
+                                  whichResFile,
+                                  whichType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Help_HMGetDialogResID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 resID;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = HMGetDialogResID(&resID);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            resID);
+       return _res;
+}
+
+static PyObject *Help_HMGetMenuResID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 menuID;
+       SInt16 resID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &menuID))
+               return NULL;
+       _err = HMGetMenuResID(menuID,
+                             &resID);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            resID);
+       return _res;
+}
+
+static PyObject *Help_HMGetBalloonWindow(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       WindowPtr window;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = HMGetBalloonWindow(&window);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            WinObj_WhichWindow, window);
+       return _res;
+}
+
+static PyMethodDef Help_methods[] = {
+       {"HMGetHelpMenuHandle", (PyCFunction)Help_HMGetHelpMenuHandle, 1,
+        "() -> (MenuHandle mh)"},
+       {"HMRemoveBalloon", (PyCFunction)Help_HMRemoveBalloon, 1,
+        "() -> None"},
+       {"HMIsBalloon", (PyCFunction)Help_HMIsBalloon, 1,
+        "() -> (Boolean _rv)"},
+       {"HMGetBalloons", (PyCFunction)Help_HMGetBalloons, 1,
+        "() -> (Boolean _rv)"},
+       {"HMSetBalloons", (PyCFunction)Help_HMSetBalloons, 1,
+        "(Boolean flag) -> None"},
+       {"HMSetFont", (PyCFunction)Help_HMSetFont, 1,
+        "(SInt16 font) -> None"},
+       {"HMSetFontSize", (PyCFunction)Help_HMSetFontSize, 1,
+        "(UInt16 fontSize) -> None"},
+       {"HMGetFont", (PyCFunction)Help_HMGetFont, 1,
+        "() -> (SInt16 font)"},
+       {"HMGetFontSize", (PyCFunction)Help_HMGetFontSize, 1,
+        "() -> (UInt16 fontSize)"},
+       {"HMSetDialogResID", (PyCFunction)Help_HMSetDialogResID, 1,
+        "(SInt16 resID) -> None"},
+       {"HMSetMenuResID", (PyCFunction)Help_HMSetMenuResID, 1,
+        "(SInt16 menuID, SInt16 resID) -> None"},
+       {"HMScanTemplateItems", (PyCFunction)Help_HMScanTemplateItems, 1,
+        "(SInt16 whichID, SInt16 whichResFile, ResType whichType) -> None"},
+       {"HMGetDialogResID", (PyCFunction)Help_HMGetDialogResID, 1,
+        "() -> (SInt16 resID)"},
+       {"HMGetMenuResID", (PyCFunction)Help_HMGetMenuResID, 1,
+        "(SInt16 menuID) -> (SInt16 resID)"},
+       {"HMGetBalloonWindow", (PyCFunction)Help_HMGetBalloonWindow, 1,
+        "() -> (WindowPtr window)"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initHelp(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+
+       m = Py_InitModule("Help", Help_methods);
+       d = PyModule_GetDict(m);
+       Help_Error = PyMac_GetOSErrException();
+       if (Help_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Help_Error) != 0)
+               return;
+}
+
+/* ======================== End module Help ========================= */
+
diff --git a/Mac/Modules/icgluemodule.c b/Mac/Modules/icgluemodule.c
new file mode 100644 (file)
index 0000000..bd616db
--- /dev/null
@@ -0,0 +1,620 @@
+/***********************************************************
+Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI or Corporation for National Research Initiatives or
+CNRI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+While CWI is the initial source for this software, a modified version
+is made available by the Corporation for National Research Initiatives
+(CNRI) at the Internet address ftp://ftp.python.org.
+
+STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
+CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+#include "Python.h"
+#include "macglue.h"
+
+extern int ResObj_Convert(PyObject *, Handle *); /* From Resmodule.c */
+
+#ifdef WITHOUT_FRAMEWORKS
+#if !TARGET_API_MAC_OS8
+/* The Carbon headers define PRAGMA_ALIGN_SUPPORT to something illegal,
+** because you shouldn't use it for Carbon. All good and well, but portable
+** code still needs it. So, we undefine it here.
+*/
+#undef PRAGMA_ALIGN_SUPPORTED
+#define PRAGMA_ALIGN_SUPPORTED 0
+#endif /* !TARGET_API_MAC_OS8 */
+
+#include "ICAPI.h"
+#else
+#include <Carbon/Carbon.h>
+typedef OSStatus ICError;
+/* Some fields in ICMapEntry have changed names. */
+#define file_type fileType
+#define file_creator fileCreator
+#define post_creator postCreator
+#define creator_app_name creatorAppName
+#define post_app_name postAppName
+#define MIME_type MIMEType
+#define entry_name entryName
+#endif
+
+static PyObject *ErrorObject;
+
+static PyObject *
+ici_error(ICError err)
+{
+       PyErr_SetObject(ErrorObject, PyInt_FromLong((long)err));
+       return NULL;
+}
+
+/* ----------------------------------------------------- */
+
+/* Declarations for objects of type ic_instance */
+
+typedef struct {
+       PyObject_HEAD
+       ICInstance inst;
+} iciobject;
+
+staticforward PyTypeObject Icitype;
+
+
+
+/* ---------------------------------------------------------------- */
+
+#if TARGET_API_MAC_OS8
+static char ici_ICFindConfigFile__doc__[] = 
+"()->None; Find config file in standard places"
+;
+
+static PyObject *
+ici_ICFindConfigFile(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       if ((err=ICFindConfigFile(self->inst, 0, NULL)) != 0 )
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char ici_ICFindUserConfigFile__doc__[] = 
+"(vRefNum, dirID)->None; Find config file in specified place"
+;
+
+static PyObject *
+ici_ICFindUserConfigFile(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       ICDirSpec where;        
+
+       if (!PyArg_ParseTuple(args, "sl", &where.vRefNum, &where.dirID))
+               return NULL;
+       if ((err=ICFindUserConfigFile(self->inst, &where)) != 0 )
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char ici_ICChooseConfig__doc__[] = 
+"()->None; Let the user choose a config file"
+;
+
+static PyObject *
+ici_ICChooseConfig(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       if ((err=ICChooseConfig(self->inst)) != 0 )
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char ici_ICChooseNewConfig__doc__[] = 
+"()->None; Let the user choose a new config file"
+;
+
+static PyObject *
+ici_ICChooseNewConfig(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       if ((err=ICChooseNewConfig(self->inst)) != 0 )
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+#endif /* TARGET_API_MAC_OS8 */
+
+
+static char ici_ICGetSeed__doc__[] = 
+"()->int; Returns int that changes when configuration does"
+;
+
+static PyObject *
+ici_ICGetSeed(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       long seed;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       if ((err=ICGetSeed(self->inst, &seed)) != 0 )
+               return ici_error(err);
+       return Py_BuildValue("i", (int)seed);
+}
+
+
+static char ici_ICBegin__doc__[] = 
+"(perm)->None; Lock config file for read/write"
+;
+
+static PyObject *
+ici_ICBegin(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       int perm;
+       
+       if (!PyArg_ParseTuple(args, "i", &perm))
+               return NULL;
+       if ((err=ICBegin(self->inst, (ICPerm)perm)) != 0 )
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char ici_ICFindPrefHandle__doc__[] = 
+"(key, handle)->attrs; Lookup key, store result in handle, return attributes"
+;
+
+static PyObject *
+ici_ICFindPrefHandle(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       Str255 key;
+       ICAttr attr;
+       Handle h;
+       
+       if (!PyArg_ParseTuple(args, "O&O&", PyMac_GetStr255, &key, ResObj_Convert, &h))
+               return NULL;
+       if ((err=ICFindPrefHandle(self->inst, key, &attr, h)) != 0 )
+               return ici_error(err);
+       return Py_BuildValue("i", (int)attr);
+}
+
+
+static char ici_ICSetPref__doc__[] = 
+"(key, attr, data)->None; Set preference key to data with attributes"
+;
+
+static PyObject *
+ici_ICSetPref(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       Str255 key;
+       int attr;
+       char *data;
+       int datalen;
+       
+       if (!PyArg_ParseTuple(args, "O&is#", PyMac_GetStr255, &key, &attr, 
+                                       &data, &datalen))
+               return NULL;
+       if ((err=ICSetPref(self->inst, key, (ICAttr)attr, (Ptr)data, 
+                       (long)datalen)) != 0)
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char ici_ICCountPref__doc__[] = 
+"()->int; Return number of preferences"
+;
+
+static PyObject *
+ici_ICCountPref(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       long count;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       if ((err=ICCountPref(self->inst, &count)) != 0 )
+               return ici_error(err);
+       return Py_BuildValue("i", (int)count);
+}
+
+
+static char ici_ICGetIndPref__doc__[] = 
+"(num)->key; Return key of preference with given index"
+;
+
+static PyObject *
+ici_ICGetIndPref(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       long num;
+       Str255 key;
+       
+       if (!PyArg_ParseTuple(args, "l", &num))
+               return NULL;
+       if ((err=ICGetIndPref(self->inst, num, key)) != 0 )
+               return ici_error(err);
+       return Py_BuildValue("O&", PyMac_BuildStr255, key);
+}
+
+
+static char ici_ICDeletePref__doc__[] = 
+"(key)->None; Delete preference"
+;
+
+static PyObject *
+ici_ICDeletePref(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       Str255 key;
+
+       if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, key))
+               return NULL;
+       if ((err=ICDeletePref(self->inst, key)) != 0 )
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char ici_ICEnd__doc__[] = 
+"()->None; Unlock file after ICBegin call"
+;
+
+static PyObject *
+ici_ICEnd(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       if ((err=ICEnd(self->inst)) != 0 )
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char ici_ICEditPreferences__doc__[] = 
+"(key)->None; Ask user to edit preferences, staring with key"
+;
+
+static PyObject *
+ici_ICEditPreferences(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       Str255 key;
+       
+       if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, key))
+               return NULL;
+       if ((err=ICEditPreferences(self->inst, key)) != 0 )
+               return ici_error(err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char ici_ICParseURL__doc__[] = 
+"(hint, data, selStart, selEnd, handle)->selStart, selEnd; Find an URL, return in handle"
+;
+
+static PyObject *
+ici_ICParseURL(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       Str255 hint;
+       char *data;
+       int datalen;
+       long selStart, selEnd;
+       Handle h;
+       
+       if (!PyArg_ParseTuple(args, "O&s#llO&", PyMac_GetStr255, hint, &data, &datalen,
+                               &selStart, &selEnd, ResObj_Convert, &h))
+               return NULL;
+       if ((err=ICParseURL(self->inst, hint, (Ptr)data, (long)datalen,
+                               &selStart, &selEnd, h)) != 0 )
+               return ici_error(err);
+       return Py_BuildValue("ii", (int)selStart, (int)selEnd);
+}
+
+
+static char ici_ICLaunchURL__doc__[] = 
+"(hint, data, selStart, selEnd)->None; Find an URL and launch the correct app"
+;
+
+static PyObject *
+ici_ICLaunchURL(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       Str255 hint;
+       char *data;
+       int datalen;
+       long selStart, selEnd;
+       
+       if (!PyArg_ParseTuple(args, "O&s#ll", PyMac_GetStr255, hint, &data, &datalen,
+                               &selStart, &selEnd))
+               return NULL;
+       if ((err=ICLaunchURL(self->inst, hint, (Ptr)data, (long)datalen,
+                               &selStart, &selEnd)) != 0 )
+               return ici_error(err);
+       return Py_BuildValue("ii", (int)selStart, (int)selEnd);
+}
+
+
+static char ici_ICMapFilename__doc__[] = 
+"(filename)->mapinfo; Get filemap info for given filename"
+;
+
+static PyObject *
+ici_ICMapFilename(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       Str255 filename;
+       ICMapEntry entry;
+       
+       if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, filename))
+               return NULL;
+       if ((err=ICMapFilename(self->inst, filename, &entry)) != 0 )
+               return ici_error(err);
+       return Py_BuildValue("hO&O&O&lO&O&O&O&O&", entry.version, 
+               PyMac_BuildOSType, entry.file_type,
+               PyMac_BuildOSType, entry.file_creator, 
+               PyMac_BuildOSType, entry.post_creator, 
+               entry.flags,
+               PyMac_BuildStr255, entry.extension,
+               PyMac_BuildStr255, entry.creator_app_name,
+               PyMac_BuildStr255, entry.post_app_name,
+               PyMac_BuildStr255, entry.MIME_type,
+               PyMac_BuildStr255, entry.entry_name);
+}
+
+
+static char ici_ICMapTypeCreator__doc__[] = 
+"(type, creator, filename)->mapinfo; Get filemap info for given tp/cr/filename"
+;
+
+static PyObject *
+ici_ICMapTypeCreator(self, args)
+       iciobject *self;
+       PyObject *args;
+{
+       ICError err;
+       OSType type, creator;
+       Str255 filename;
+       ICMapEntry entry;
+       
+       if (!PyArg_ParseTuple(args, "O&O&O&",
+                       PyMac_GetOSType, &type,
+                       PyMac_GetOSType, &creator,
+                       PyMac_GetStr255, filename))
+               return NULL;
+       if ((err=ICMapTypeCreator(self->inst, type, creator, filename, &entry)) != 0 )
+               return ici_error(err);
+       return Py_BuildValue("hO&O&O&lO&O&O&O&O&", entry.version, 
+               PyMac_BuildOSType, entry.file_type,
+               PyMac_BuildOSType, entry.file_creator, 
+               PyMac_BuildOSType, entry.post_creator, 
+               entry.flags,
+               PyMac_BuildStr255, entry.extension,
+               PyMac_BuildStr255, entry.creator_app_name,
+               PyMac_BuildStr255, entry.post_app_name,
+               PyMac_BuildStr255, entry.MIME_type,
+               PyMac_BuildStr255, entry.entry_name);
+}
+
+
+static struct PyMethodDef ici_methods[] = {
+#if TARGET_API_MAC_OS8
+ {"ICFindConfigFile",  (PyCFunction)ici_ICFindConfigFile,      METH_VARARGS,   ici_ICFindConfigFile__doc__},
+ {"ICFindUserConfigFile",      (PyCFunction)ici_ICFindUserConfigFile,  METH_VARARGS,   ici_ICFindUserConfigFile__doc__},
+ {"ICChooseConfig",    (PyCFunction)ici_ICChooseConfig,        METH_VARARGS,   ici_ICChooseConfig__doc__},
+ {"ICChooseNewConfig", (PyCFunction)ici_ICChooseNewConfig,     METH_VARARGS,   ici_ICChooseNewConfig__doc__},
+#endif /* TARGET_API_MAC_OS8 */
+ {"ICGetSeed", (PyCFunction)ici_ICGetSeed,     METH_VARARGS,   ici_ICGetSeed__doc__},
+ {"ICBegin",   (PyCFunction)ici_ICBegin,       METH_VARARGS,   ici_ICBegin__doc__},
+ {"ICFindPrefHandle",  (PyCFunction)ici_ICFindPrefHandle,      METH_VARARGS,   ici_ICFindPrefHandle__doc__},
+ {"ICSetPref", (PyCFunction)ici_ICSetPref,     METH_VARARGS,   ici_ICSetPref__doc__},
+ {"ICCountPref",       (PyCFunction)ici_ICCountPref,   METH_VARARGS,   ici_ICCountPref__doc__},
+ {"ICGetIndPref",      (PyCFunction)ici_ICGetIndPref,  METH_VARARGS,   ici_ICGetIndPref__doc__},
+ {"ICDeletePref",      (PyCFunction)ici_ICDeletePref,  METH_VARARGS,   ici_ICDeletePref__doc__},
+ {"ICEnd",     (PyCFunction)ici_ICEnd, METH_VARARGS,   ici_ICEnd__doc__},
+ {"ICEditPreferences", (PyCFunction)ici_ICEditPreferences,     METH_VARARGS,   ici_ICEditPreferences__doc__},
+ {"ICParseURL",        (PyCFunction)ici_ICParseURL,    METH_VARARGS,   ici_ICParseURL__doc__},
+ {"ICLaunchURL",       (PyCFunction)ici_ICLaunchURL,   METH_VARARGS,   ici_ICLaunchURL__doc__},
+ {"ICMapFilename",     (PyCFunction)ici_ICMapFilename, METH_VARARGS,   ici_ICMapFilename__doc__},
+ {"ICMapTypeCreator",  (PyCFunction)ici_ICMapTypeCreator,      METH_VARARGS,   ici_ICMapTypeCreator__doc__},
+       {NULL,          NULL}           /* sentinel */
+};
+
+/* ---------- */
+
+
+static iciobject *
+newiciobject(OSType creator)
+{
+       iciobject *self;
+       ICError err;
+       
+       self = PyObject_NEW(iciobject, &Icitype);
+       if (self == NULL)
+               return NULL;
+       if ((err=ICStart(&self->inst, creator)) != 0 ) {
+               (void)ici_error(err);
+               PyMem_DEL(self);
+               return NULL;
+       }
+       return self;
+}
+
+
+static void
+ici_dealloc(self)
+       iciobject *self;
+{
+       (void)ICStop(self->inst);
+       PyMem_DEL(self);
+}
+
+static PyObject *
+ici_getattr(self, name)
+       iciobject *self;
+       char *name;
+{
+       return Py_FindMethod(ici_methods, (PyObject *)self, name);
+}
+
+static char Icitype__doc__[] = 
+"Internet Config instance"
+;
+
+static PyTypeObject Icitype = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0,                              /*ob_size*/
+       "ic_instance",                  /*tp_name*/
+       sizeof(iciobject),              /*tp_basicsize*/
+       0,                              /*tp_itemsize*/
+       /* methods */
+       (destructor)ici_dealloc,        /*tp_dealloc*/
+       (printfunc)0,           /*tp_print*/
+       (getattrfunc)ici_getattr,       /*tp_getattr*/
+       (setattrfunc)0, /*tp_setattr*/
+       (cmpfunc)0,             /*tp_compare*/
+       (reprfunc)0,            /*tp_repr*/
+       0,                      /*tp_as_number*/
+       0,              /*tp_as_sequence*/
+       0,              /*tp_as_mapping*/
+       (hashfunc)0,            /*tp_hash*/
+       (ternaryfunc)0,         /*tp_call*/
+       (reprfunc)0,            /*tp_str*/
+
+       /* Space for future expansion */
+       0L,0L,0L,0L,
+       Icitype__doc__ /* Documentation string */
+};
+
+/* End of code for ic_instance objects */
+/* -------------------------------------------------------- */
+
+
+static char ic_ICStart__doc__[] =
+"(OSType)->ic_instance; Create an Internet Config instance"
+;
+
+static PyObject *
+ic_ICStart(self, args)
+       PyObject *self; /* Not used */
+       PyObject *args;
+{
+       OSType creator;
+
+       if (!PyArg_ParseTuple(args, "O&", PyMac_GetOSType, &creator))
+               return NULL;
+       return (PyObject *)newiciobject(creator);
+}
+
+/* List of methods defined in the module */
+
+static struct PyMethodDef ic_methods[] = {
+       {"ICStart",     (PyCFunction)ic_ICStart,        METH_VARARGS,   ic_ICStart__doc__},
+       {NULL,   (PyCFunction)NULL, 0, NULL}            /* sentinel */
+};
+
+
+/* Initialization function for the module (*must* be called initicglue) */
+
+static char icglue_module_documentation[] = 
+"Implements low-level Internet Config interface"
+;
+
+void
+initicglue()
+{
+       PyObject *m, *d;
+
+       /* Create the module and add the functions */
+       m = Py_InitModule4("icglue", ic_methods,
+               icglue_module_documentation,
+               (PyObject*)NULL,PYTHON_API_VERSION);
+
+       /* Add some symbolic constants to the module */
+       d = PyModule_GetDict(m);
+       ErrorObject = PyString_FromString("icglue.error");
+       PyDict_SetItemString(d, "error", ErrorObject);
+
+       /* XXXX Add constants here */
+       
+       /* Check for errors */
+       if (PyErr_Occurred())
+               Py_FatalError("can't initialize module icglue");
+}
+
diff --git a/Mac/Modules/icn/Icnmodule.c b/Mac/Modules/icn/Icnmodule.c
new file mode 100644 (file)
index 0000000..5d68ed9
--- /dev/null
@@ -0,0 +1,1409 @@
+
+/* =========================== Module Icn =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Icons.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+
+static PyObject *Icn_Error;
+
+static PyObject *Icn_GetCIcon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CIconHandle _rv;
+       SInt16 iconID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &iconID))
+               return NULL;
+       _rv = GetCIcon(iconID);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Icn_PlotCIcon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect theRect;
+       CIconHandle theIcon;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetRect, &theRect,
+                             ResObj_Convert, &theIcon))
+               return NULL;
+       PlotCIcon(&theRect,
+                 theIcon);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_DisposeCIcon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CIconHandle theIcon;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theIcon))
+               return NULL;
+       DisposeCIcon(theIcon);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetIcon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       SInt16 iconID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &iconID))
+               return NULL;
+       _rv = GetIcon(iconID);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Icn_PlotIcon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect theRect;
+       Handle theIcon;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetRect, &theRect,
+                             ResObj_Convert, &theIcon))
+               return NULL;
+       PlotIcon(&theRect,
+                theIcon);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_PlotIconID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Rect theRect;
+       IconAlignmentType align;
+       IconTransformType transform;
+       SInt16 theResID;
+       if (!PyArg_ParseTuple(_args, "O&hhh",
+                             PyMac_GetRect, &theRect,
+                             &align,
+                             &transform,
+                             &theResID))
+               return NULL;
+       _err = PlotIconID(&theRect,
+                         align,
+                         transform,
+                         theResID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_NewIconSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconSuiteRef theIconSuite;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = NewIconSuite(&theIconSuite);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theIconSuite);
+       return _res;
+}
+
+static PyObject *Icn_AddIconToSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle theIconData;
+       IconSuiteRef theSuite;
+       ResType theType;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             ResObj_Convert, &theIconData,
+                             ResObj_Convert, &theSuite,
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       _err = AddIconToSuite(theIconData,
+                             theSuite,
+                             theType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetIconFromSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle theIconData;
+       IconSuiteRef theSuite;
+       ResType theType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &theSuite,
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       _err = GetIconFromSuite(&theIconData,
+                               theSuite,
+                               theType);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theIconData);
+       return _res;
+}
+
+static PyObject *Icn_GetIconSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconSuiteRef theIconSuite;
+       SInt16 theResID;
+       IconSelectorValue selector;
+       if (!PyArg_ParseTuple(_args, "hl",
+                             &theResID,
+                             &selector))
+               return NULL;
+       _err = GetIconSuite(&theIconSuite,
+                           theResID,
+                           selector);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theIconSuite);
+       return _res;
+}
+
+static PyObject *Icn_DisposeIconSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconSuiteRef theIconSuite;
+       Boolean disposeData;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             ResObj_Convert, &theIconSuite,
+                             &disposeData))
+               return NULL;
+       _err = DisposeIconSuite(theIconSuite,
+                               disposeData);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_PlotIconSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Rect theRect;
+       IconAlignmentType align;
+       IconTransformType transform;
+       IconSuiteRef theIconSuite;
+       if (!PyArg_ParseTuple(_args, "O&hhO&",
+                             PyMac_GetRect, &theRect,
+                             &align,
+                             &transform,
+                             ResObj_Convert, &theIconSuite))
+               return NULL;
+       _err = PlotIconSuite(&theRect,
+                            align,
+                            transform,
+                            theIconSuite);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_LoadIconCache(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Rect theRect;
+       IconAlignmentType align;
+       IconTransformType transform;
+       IconCacheRef theIconCache;
+       if (!PyArg_ParseTuple(_args, "O&hhO&",
+                             PyMac_GetRect, &theRect,
+                             &align,
+                             &transform,
+                             ResObj_Convert, &theIconCache))
+               return NULL;
+       _err = LoadIconCache(&theRect,
+                            align,
+                            transform,
+                            theIconCache);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetLabel(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 labelNumber;
+       RGBColor labelColor;
+       Str255 labelString;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &labelNumber,
+                             PyMac_GetStr255, labelString))
+               return NULL;
+       _err = GetLabel(labelNumber,
+                       &labelColor,
+                       labelString);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            QdRGB_New, &labelColor);
+       return _res;
+}
+
+static PyObject *Icn_PtInIconID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Point testPt;
+       Rect iconRect;
+       IconAlignmentType align;
+       SInt16 iconID;
+       if (!PyArg_ParseTuple(_args, "O&O&hh",
+                             PyMac_GetPoint, &testPt,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             &iconID))
+               return NULL;
+       _rv = PtInIconID(testPt,
+                        &iconRect,
+                        align,
+                        iconID);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Icn_PtInIconSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Point testPt;
+       Rect iconRect;
+       IconAlignmentType align;
+       IconSuiteRef theIconSuite;
+       if (!PyArg_ParseTuple(_args, "O&O&hO&",
+                             PyMac_GetPoint, &testPt,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             ResObj_Convert, &theIconSuite))
+               return NULL;
+       _rv = PtInIconSuite(testPt,
+                           &iconRect,
+                           align,
+                           theIconSuite);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Icn_RectInIconID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Rect testRect;
+       Rect iconRect;
+       IconAlignmentType align;
+       SInt16 iconID;
+       if (!PyArg_ParseTuple(_args, "O&O&hh",
+                             PyMac_GetRect, &testRect,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             &iconID))
+               return NULL;
+       _rv = RectInIconID(&testRect,
+                          &iconRect,
+                          align,
+                          iconID);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Icn_RectInIconSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Rect testRect;
+       Rect iconRect;
+       IconAlignmentType align;
+       IconSuiteRef theIconSuite;
+       if (!PyArg_ParseTuple(_args, "O&O&hO&",
+                             PyMac_GetRect, &testRect,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             ResObj_Convert, &theIconSuite))
+               return NULL;
+       _rv = RectInIconSuite(&testRect,
+                             &iconRect,
+                             align,
+                             theIconSuite);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Icn_IconIDToRgn(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       RgnHandle theRgn;
+       Rect iconRect;
+       IconAlignmentType align;
+       SInt16 iconID;
+       if (!PyArg_ParseTuple(_args, "O&O&hh",
+                             ResObj_Convert, &theRgn,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             &iconID))
+               return NULL;
+       _err = IconIDToRgn(theRgn,
+                          &iconRect,
+                          align,
+                          iconID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_IconSuiteToRgn(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       RgnHandle theRgn;
+       Rect iconRect;
+       IconAlignmentType align;
+       IconSuiteRef theIconSuite;
+       if (!PyArg_ParseTuple(_args, "O&O&hO&",
+                             ResObj_Convert, &theRgn,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             ResObj_Convert, &theIconSuite))
+               return NULL;
+       _err = IconSuiteToRgn(theRgn,
+                             &iconRect,
+                             align,
+                             theIconSuite);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_SetSuiteLabel(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconSuiteRef theSuite;
+       SInt16 theLabel;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             ResObj_Convert, &theSuite,
+                             &theLabel))
+               return NULL;
+       _err = SetSuiteLabel(theSuite,
+                            theLabel);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetSuiteLabel(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 _rv;
+       IconSuiteRef theSuite;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theSuite))
+               return NULL;
+       _rv = GetSuiteLabel(theSuite);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Icn_PlotIconHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Rect theRect;
+       IconAlignmentType align;
+       IconTransformType transform;
+       Handle theIcon;
+       if (!PyArg_ParseTuple(_args, "O&hhO&",
+                             PyMac_GetRect, &theRect,
+                             &align,
+                             &transform,
+                             ResObj_Convert, &theIcon))
+               return NULL;
+       _err = PlotIconHandle(&theRect,
+                             align,
+                             transform,
+                             theIcon);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_PlotSICNHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Rect theRect;
+       IconAlignmentType align;
+       IconTransformType transform;
+       Handle theSICN;
+       if (!PyArg_ParseTuple(_args, "O&hhO&",
+                             PyMac_GetRect, &theRect,
+                             &align,
+                             &transform,
+                             ResObj_Convert, &theSICN))
+               return NULL;
+       _err = PlotSICNHandle(&theRect,
+                             align,
+                             transform,
+                             theSICN);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_PlotCIconHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Rect theRect;
+       IconAlignmentType align;
+       IconTransformType transform;
+       CIconHandle theCIcon;
+       if (!PyArg_ParseTuple(_args, "O&hhO&",
+                             PyMac_GetRect, &theRect,
+                             &align,
+                             &transform,
+                             ResObj_Convert, &theCIcon))
+               return NULL;
+       _err = PlotCIconHandle(&theRect,
+                              align,
+                              transform,
+                              theCIcon);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Icn_IconServicesTerminate(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       IconServicesTerminate();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Icn_IconRefToIconFamily(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef theIconRef;
+       IconSelectorValue whichIcons;
+       IconFamilyHandle iconFamily;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             ResObj_Convert, &theIconRef,
+                             &whichIcons))
+               return NULL;
+       _err = IconRefToIconFamily(theIconRef,
+                                  whichIcons,
+                                  &iconFamily);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, iconFamily);
+       return _res;
+}
+
+static PyObject *Icn_IconFamilyToIconSuite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconFamilyHandle iconFamily;
+       IconSelectorValue whichIcons;
+       IconSuiteRef iconSuite;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             ResObj_Convert, &iconFamily,
+                             &whichIcons))
+               return NULL;
+       _err = IconFamilyToIconSuite(iconFamily,
+                                    whichIcons,
+                                    &iconSuite);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, iconSuite);
+       return _res;
+}
+
+static PyObject *Icn_IconSuiteToIconFamily(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconSuiteRef iconSuite;
+       IconSelectorValue whichIcons;
+       IconFamilyHandle iconFamily;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             ResObj_Convert, &iconSuite,
+                             &whichIcons))
+               return NULL;
+       _err = IconSuiteToIconFamily(iconSuite,
+                                    whichIcons,
+                                    &iconFamily);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, iconFamily);
+       return _res;
+}
+
+static PyObject *Icn_SetIconFamilyData(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconFamilyHandle iconFamily;
+       OSType iconType;
+       Handle h;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             ResObj_Convert, &iconFamily,
+                             PyMac_GetOSType, &iconType,
+                             ResObj_Convert, &h))
+               return NULL;
+       _err = SetIconFamilyData(iconFamily,
+                                iconType,
+                                h);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetIconFamilyData(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconFamilyHandle iconFamily;
+       OSType iconType;
+       Handle h;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             ResObj_Convert, &iconFamily,
+                             PyMac_GetOSType, &iconType,
+                             ResObj_Convert, &h))
+               return NULL;
+       _err = GetIconFamilyData(iconFamily,
+                                iconType,
+                                h);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetIconRefOwners(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef theIconRef;
+       UInt16 owners;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _err = GetIconRefOwners(theIconRef,
+                               &owners);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("H",
+                            owners);
+       return _res;
+}
+
+static PyObject *Icn_AcquireIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _err = AcquireIconRef(theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_ReleaseIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _err = ReleaseIconRef(theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetIconRefFromFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       FSSpec theFile;
+       IconRef theIconRef;
+       SInt16 theLabel;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetFSSpec, &theFile))
+               return NULL;
+       _err = GetIconRefFromFile(&theFile,
+                                 &theIconRef,
+                                 &theLabel);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&h",
+                            ResObj_New, theIconRef,
+                            theLabel);
+       return _res;
+}
+
+static PyObject *Icn_GetIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 vRefNum;
+       OSType creator;
+       OSType iconType;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "hO&O&",
+                             &vRefNum,
+                             PyMac_GetOSType, &creator,
+                             PyMac_GetOSType, &iconType))
+               return NULL;
+       _err = GetIconRef(vRefNum,
+                         creator,
+                         iconType,
+                         &theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theIconRef);
+       return _res;
+}
+
+static PyObject *Icn_GetIconRefFromFolder(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 vRefNum;
+       SInt32 parentFolderID;
+       SInt32 folderID;
+       SInt8 attributes;
+       SInt8 accessPrivileges;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "hllbb",
+                             &vRefNum,
+                             &parentFolderID,
+                             &folderID,
+                             &attributes,
+                             &accessPrivileges))
+               return NULL;
+       _err = GetIconRefFromFolder(vRefNum,
+                                   parentFolderID,
+                                   folderID,
+                                   attributes,
+                                   accessPrivileges,
+                                   &theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theIconRef);
+       return _res;
+}
+
+static PyObject *Icn_RegisterIconRefFromIconFamily(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType creator;
+       OSType iconType;
+       IconFamilyHandle iconFamily;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             PyMac_GetOSType, &creator,
+                             PyMac_GetOSType, &iconType,
+                             ResObj_Convert, &iconFamily))
+               return NULL;
+       _err = RegisterIconRefFromIconFamily(creator,
+                                            iconType,
+                                            iconFamily,
+                                            &theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theIconRef);
+       return _res;
+}
+
+static PyObject *Icn_RegisterIconRefFromResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType creator;
+       OSType iconType;
+       FSSpec resourceFile;
+       SInt16 resourceID;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&O&O&h",
+                             PyMac_GetOSType, &creator,
+                             PyMac_GetOSType, &iconType,
+                             PyMac_GetFSSpec, &resourceFile,
+                             &resourceID))
+               return NULL;
+       _err = RegisterIconRefFromResource(creator,
+                                          iconType,
+                                          &resourceFile,
+                                          resourceID,
+                                          &theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theIconRef);
+       return _res;
+}
+
+static PyObject *Icn_UnregisterIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType creator;
+       OSType iconType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetOSType, &creator,
+                             PyMac_GetOSType, &iconType))
+               return NULL;
+       _err = UnregisterIconRef(creator,
+                                iconType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_UpdateIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _err = UpdateIconRef(theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_OverrideIconRefFromResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef theIconRef;
+       FSSpec resourceFile;
+       SInt16 resourceID;
+       if (!PyArg_ParseTuple(_args, "O&O&h",
+                             ResObj_Convert, &theIconRef,
+                             PyMac_GetFSSpec, &resourceFile,
+                             &resourceID))
+               return NULL;
+       _err = OverrideIconRefFromResource(theIconRef,
+                                          &resourceFile,
+                                          resourceID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_OverrideIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef oldIconRef;
+       IconRef newIconRef;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &oldIconRef,
+                             ResObj_Convert, &newIconRef))
+               return NULL;
+       _err = OverrideIconRef(oldIconRef,
+                              newIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_RemoveIconRefOverride(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _err = RemoveIconRefOverride(theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_CompositeIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef backgroundIconRef;
+       IconRef foregroundIconRef;
+       IconRef compositeIconRef;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &backgroundIconRef,
+                             ResObj_Convert, &foregroundIconRef))
+               return NULL;
+       _err = CompositeIconRef(backgroundIconRef,
+                               foregroundIconRef,
+                               &compositeIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, compositeIconRef);
+       return _res;
+}
+
+static PyObject *Icn_IsIconRefComposite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconRef compositeIconRef;
+       IconRef backgroundIconRef;
+       IconRef foregroundIconRef;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &compositeIconRef))
+               return NULL;
+       _err = IsIconRefComposite(compositeIconRef,
+                                 &backgroundIconRef,
+                                 &foregroundIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&O&",
+                            ResObj_New, backgroundIconRef,
+                            ResObj_New, foregroundIconRef);
+       return _res;
+}
+
+static PyObject *Icn_IsValidIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _rv = IsValidIconRef(theIconRef);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Icn_PlotIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Rect theRect;
+       IconAlignmentType align;
+       IconTransformType transform;
+       IconServicesUsageFlags theIconServicesUsageFlags;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&hhlO&",
+                             PyMac_GetRect, &theRect,
+                             &align,
+                             &transform,
+                             &theIconServicesUsageFlags,
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _err = PlotIconRef(&theRect,
+                          align,
+                          transform,
+                          theIconServicesUsageFlags,
+                          theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_PtInIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Point testPt;
+       Rect iconRect;
+       IconAlignmentType align;
+       IconServicesUsageFlags theIconServicesUsageFlags;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&O&hlO&",
+                             PyMac_GetPoint, &testPt,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             &theIconServicesUsageFlags,
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _rv = PtInIconRef(&testPt,
+                         &iconRect,
+                         align,
+                         theIconServicesUsageFlags,
+                         theIconRef);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Icn_RectInIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Rect testRect;
+       Rect iconRect;
+       IconAlignmentType align;
+       IconServicesUsageFlags iconServicesUsageFlags;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&O&hlO&",
+                             PyMac_GetRect, &testRect,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             &iconServicesUsageFlags,
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _rv = RectInIconRef(&testRect,
+                           &iconRect,
+                           align,
+                           iconServicesUsageFlags,
+                           theIconRef);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Icn_IconRefToRgn(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       RgnHandle theRgn;
+       Rect iconRect;
+       IconAlignmentType align;
+       IconServicesUsageFlags iconServicesUsageFlags;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&O&hlO&",
+                             ResObj_Convert, &theRgn,
+                             PyMac_GetRect, &iconRect,
+                             &align,
+                             &iconServicesUsageFlags,
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _err = IconRefToRgn(theRgn,
+                           &iconRect,
+                           align,
+                           iconServicesUsageFlags,
+                           theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetIconSizesFromIconRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconSelectorValue iconSelectorInput;
+       IconSelectorValue iconSelectorOutputPtr;
+       IconServicesUsageFlags iconServicesUsageFlags;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "llO&",
+                             &iconSelectorInput,
+                             &iconServicesUsageFlags,
+                             ResObj_Convert, &theIconRef))
+               return NULL;
+       _err = GetIconSizesFromIconRef(iconSelectorInput,
+                                      &iconSelectorOutputPtr,
+                                      iconServicesUsageFlags,
+                                      theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            iconSelectorOutputPtr);
+       return _res;
+}
+
+static PyObject *Icn_FlushIconRefs(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType creator;
+       OSType iconType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetOSType, &creator,
+                             PyMac_GetOSType, &iconType))
+               return NULL;
+       _err = FlushIconRefs(creator,
+                            iconType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_FlushIconRefsByVolume(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 vRefNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &vRefNum))
+               return NULL;
+       _err = FlushIconRefsByVolume(vRefNum);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_SetCustomIconsEnabled(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 vRefNum;
+       Boolean enableCustomIcons;
+       if (!PyArg_ParseTuple(_args, "hb",
+                             &vRefNum,
+                             &enableCustomIcons))
+               return NULL;
+       _err = SetCustomIconsEnabled(vRefNum,
+                                    enableCustomIcons);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Icn_GetCustomIconsEnabled(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 vRefNum;
+       Boolean customIconsEnabled;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &vRefNum))
+               return NULL;
+       _err = GetCustomIconsEnabled(vRefNum,
+                                    &customIconsEnabled);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("b",
+                            customIconsEnabled);
+       return _res;
+}
+
+static PyObject *Icn_IsIconRefMaskEmpty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       IconRef iconRef;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &iconRef))
+               return NULL;
+       _rv = IsIconRefMaskEmpty(iconRef);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Icn_GetIconRefVariant(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       IconRef _rv;
+       IconRef inIconRef;
+       OSType inVariant;
+       IconTransformType outTransform;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &inIconRef,
+                             PyMac_GetOSType, &inVariant))
+               return NULL;
+       _rv = GetIconRefVariant(inIconRef,
+                               inVariant,
+                               &outTransform);
+       _res = Py_BuildValue("O&h",
+                            ResObj_New, _rv,
+                            outTransform);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Icn_RegisterIconRefFromIconFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType creator;
+       OSType iconType;
+       FSSpec iconFile;
+       IconRef theIconRef;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             PyMac_GetOSType, &creator,
+                             PyMac_GetOSType, &iconType,
+                             PyMac_GetFSSpec, &iconFile))
+               return NULL;
+       _err = RegisterIconRefFromIconFile(creator,
+                                          iconType,
+                                          &iconFile,
+                                          &theIconRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, theIconRef);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Icn_ReadIconFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       FSSpec iconFile;
+       IconFamilyHandle iconFamily;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetFSSpec, &iconFile))
+               return NULL;
+       _err = ReadIconFile(&iconFile,
+                           &iconFamily);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, iconFamily);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Icn_WriteIconFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       IconFamilyHandle iconFamily;
+       FSSpec iconFile;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &iconFamily,
+                             PyMac_GetFSSpec, &iconFile))
+               return NULL;
+       _err = WriteIconFile(iconFamily,
+                            &iconFile);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyMethodDef Icn_methods[] = {
+       {"GetCIcon", (PyCFunction)Icn_GetCIcon, 1,
+        "(SInt16 iconID) -> (CIconHandle _rv)"},
+       {"PlotCIcon", (PyCFunction)Icn_PlotCIcon, 1,
+        "(Rect theRect, CIconHandle theIcon) -> None"},
+       {"DisposeCIcon", (PyCFunction)Icn_DisposeCIcon, 1,
+        "(CIconHandle theIcon) -> None"},
+       {"GetIcon", (PyCFunction)Icn_GetIcon, 1,
+        "(SInt16 iconID) -> (Handle _rv)"},
+       {"PlotIcon", (PyCFunction)Icn_PlotIcon, 1,
+        "(Rect theRect, Handle theIcon) -> None"},
+       {"PlotIconID", (PyCFunction)Icn_PlotIconID, 1,
+        "(Rect theRect, IconAlignmentType align, IconTransformType transform, SInt16 theResID) -> None"},
+       {"NewIconSuite", (PyCFunction)Icn_NewIconSuite, 1,
+        "() -> (IconSuiteRef theIconSuite)"},
+       {"AddIconToSuite", (PyCFunction)Icn_AddIconToSuite, 1,
+        "(Handle theIconData, IconSuiteRef theSuite, ResType theType) -> None"},
+       {"GetIconFromSuite", (PyCFunction)Icn_GetIconFromSuite, 1,
+        "(IconSuiteRef theSuite, ResType theType) -> (Handle theIconData)"},
+       {"GetIconSuite", (PyCFunction)Icn_GetIconSuite, 1,
+        "(SInt16 theResID, IconSelectorValue selector) -> (IconSuiteRef theIconSuite)"},
+       {"DisposeIconSuite", (PyCFunction)Icn_DisposeIconSuite, 1,
+        "(IconSuiteRef theIconSuite, Boolean disposeData) -> None"},
+       {"PlotIconSuite", (PyCFunction)Icn_PlotIconSuite, 1,
+        "(Rect theRect, IconAlignmentType align, IconTransformType transform, IconSuiteRef theIconSuite) -> None"},
+       {"LoadIconCache", (PyCFunction)Icn_LoadIconCache, 1,
+        "(Rect theRect, IconAlignmentType align, IconTransformType transform, IconCacheRef theIconCache) -> None"},
+       {"GetLabel", (PyCFunction)Icn_GetLabel, 1,
+        "(SInt16 labelNumber, Str255 labelString) -> (RGBColor labelColor)"},
+       {"PtInIconID", (PyCFunction)Icn_PtInIconID, 1,
+        "(Point testPt, Rect iconRect, IconAlignmentType align, SInt16 iconID) -> (Boolean _rv)"},
+       {"PtInIconSuite", (PyCFunction)Icn_PtInIconSuite, 1,
+        "(Point testPt, Rect iconRect, IconAlignmentType align, IconSuiteRef theIconSuite) -> (Boolean _rv)"},
+       {"RectInIconID", (PyCFunction)Icn_RectInIconID, 1,
+        "(Rect testRect, Rect iconRect, IconAlignmentType align, SInt16 iconID) -> (Boolean _rv)"},
+       {"RectInIconSuite", (PyCFunction)Icn_RectInIconSuite, 1,
+        "(Rect testRect, Rect iconRect, IconAlignmentType align, IconSuiteRef theIconSuite) -> (Boolean _rv)"},
+       {"IconIDToRgn", (PyCFunction)Icn_IconIDToRgn, 1,
+        "(RgnHandle theRgn, Rect iconRect, IconAlignmentType align, SInt16 iconID) -> None"},
+       {"IconSuiteToRgn", (PyCFunction)Icn_IconSuiteToRgn, 1,
+        "(RgnHandle theRgn, Rect iconRect, IconAlignmentType align, IconSuiteRef theIconSuite) -> None"},
+       {"SetSuiteLabel", (PyCFunction)Icn_SetSuiteLabel, 1,
+        "(IconSuiteRef theSuite, SInt16 theLabel) -> None"},
+       {"GetSuiteLabel", (PyCFunction)Icn_GetSuiteLabel, 1,
+        "(IconSuiteRef theSuite) -> (SInt16 _rv)"},
+       {"PlotIconHandle", (PyCFunction)Icn_PlotIconHandle, 1,
+        "(Rect theRect, IconAlignmentType align, IconTransformType transform, Handle theIcon) -> None"},
+       {"PlotSICNHandle", (PyCFunction)Icn_PlotSICNHandle, 1,
+        "(Rect theRect, IconAlignmentType align, IconTransformType transform, Handle theSICN) -> None"},
+       {"PlotCIconHandle", (PyCFunction)Icn_PlotCIconHandle, 1,
+        "(Rect theRect, IconAlignmentType align, IconTransformType transform, CIconHandle theCIcon) -> None"},
+
+#if !TARGET_API_MAC_CARBON
+       {"IconServicesTerminate", (PyCFunction)Icn_IconServicesTerminate, 1,
+        "() -> None"},
+#endif
+       {"IconRefToIconFamily", (PyCFunction)Icn_IconRefToIconFamily, 1,
+        "(IconRef theIconRef, IconSelectorValue whichIcons) -> (IconFamilyHandle iconFamily)"},
+       {"IconFamilyToIconSuite", (PyCFunction)Icn_IconFamilyToIconSuite, 1,
+        "(IconFamilyHandle iconFamily, IconSelectorValue whichIcons) -> (IconSuiteRef iconSuite)"},
+       {"IconSuiteToIconFamily", (PyCFunction)Icn_IconSuiteToIconFamily, 1,
+        "(IconSuiteRef iconSuite, IconSelectorValue whichIcons) -> (IconFamilyHandle iconFamily)"},
+       {"SetIconFamilyData", (PyCFunction)Icn_SetIconFamilyData, 1,
+        "(IconFamilyHandle iconFamily, OSType iconType, Handle h) -> None"},
+       {"GetIconFamilyData", (PyCFunction)Icn_GetIconFamilyData, 1,
+        "(IconFamilyHandle iconFamily, OSType iconType, Handle h) -> None"},
+       {"GetIconRefOwners", (PyCFunction)Icn_GetIconRefOwners, 1,
+        "(IconRef theIconRef) -> (UInt16 owners)"},
+       {"AcquireIconRef", (PyCFunction)Icn_AcquireIconRef, 1,
+        "(IconRef theIconRef) -> None"},
+       {"ReleaseIconRef", (PyCFunction)Icn_ReleaseIconRef, 1,
+        "(IconRef theIconRef) -> None"},
+       {"GetIconRefFromFile", (PyCFunction)Icn_GetIconRefFromFile, 1,
+        "(FSSpec theFile) -> (IconRef theIconRef, SInt16 theLabel)"},
+       {"GetIconRef", (PyCFunction)Icn_GetIconRef, 1,
+        "(SInt16 vRefNum, OSType creator, OSType iconType) -> (IconRef theIconRef)"},
+       {"GetIconRefFromFolder", (PyCFunction)Icn_GetIconRefFromFolder, 1,
+        "(SInt16 vRefNum, SInt32 parentFolderID, SInt32 folderID, SInt8 attributes, SInt8 accessPrivileges) -> (IconRef theIconRef)"},
+       {"RegisterIconRefFromIconFamily", (PyCFunction)Icn_RegisterIconRefFromIconFamily, 1,
+        "(OSType creator, OSType iconType, IconFamilyHandle iconFamily) -> (IconRef theIconRef)"},
+       {"RegisterIconRefFromResource", (PyCFunction)Icn_RegisterIconRefFromResource, 1,
+        "(OSType creator, OSType iconType, FSSpec resourceFile, SInt16 resourceID) -> (IconRef theIconRef)"},
+       {"UnregisterIconRef", (PyCFunction)Icn_UnregisterIconRef, 1,
+        "(OSType creator, OSType iconType) -> None"},
+       {"UpdateIconRef", (PyCFunction)Icn_UpdateIconRef, 1,
+        "(IconRef theIconRef) -> None"},
+       {"OverrideIconRefFromResource", (PyCFunction)Icn_OverrideIconRefFromResource, 1,
+        "(IconRef theIconRef, FSSpec resourceFile, SInt16 resourceID) -> None"},
+       {"OverrideIconRef", (PyCFunction)Icn_OverrideIconRef, 1,
+        "(IconRef oldIconRef, IconRef newIconRef) -> None"},
+       {"RemoveIconRefOverride", (PyCFunction)Icn_RemoveIconRefOverride, 1,
+        "(IconRef theIconRef) -> None"},
+       {"CompositeIconRef", (PyCFunction)Icn_CompositeIconRef, 1,
+        "(IconRef backgroundIconRef, IconRef foregroundIconRef) -> (IconRef compositeIconRef)"},
+       {"IsIconRefComposite", (PyCFunction)Icn_IsIconRefComposite, 1,
+        "(IconRef compositeIconRef) -> (IconRef backgroundIconRef, IconRef foregroundIconRef)"},
+       {"IsValidIconRef", (PyCFunction)Icn_IsValidIconRef, 1,
+        "(IconRef theIconRef) -> (Boolean _rv)"},
+       {"PlotIconRef", (PyCFunction)Icn_PlotIconRef, 1,
+        "(Rect theRect, IconAlignmentType align, IconTransformType transform, IconServicesUsageFlags theIconServicesUsageFlags, IconRef theIconRef) -> None"},
+       {"PtInIconRef", (PyCFunction)Icn_PtInIconRef, 1,
+        "(Point testPt, Rect iconRect, IconAlignmentType align, IconServicesUsageFlags theIconServicesUsageFlags, IconRef theIconRef) -> (Boolean _rv)"},
+       {"RectInIconRef", (PyCFunction)Icn_RectInIconRef, 1,
+        "(Rect testRect, Rect iconRect, IconAlignmentType align, IconServicesUsageFlags iconServicesUsageFlags, IconRef theIconRef) -> (Boolean _rv)"},
+       {"IconRefToRgn", (PyCFunction)Icn_IconRefToRgn, 1,
+        "(RgnHandle theRgn, Rect iconRect, IconAlignmentType align, IconServicesUsageFlags iconServicesUsageFlags, IconRef theIconRef) -> None"},
+       {"GetIconSizesFromIconRef", (PyCFunction)Icn_GetIconSizesFromIconRef, 1,
+        "(IconSelectorValue iconSelectorInput, IconServicesUsageFlags iconServicesUsageFlags, IconRef theIconRef) -> (IconSelectorValue iconSelectorOutputPtr)"},
+       {"FlushIconRefs", (PyCFunction)Icn_FlushIconRefs, 1,
+        "(OSType creator, OSType iconType) -> None"},
+       {"FlushIconRefsByVolume", (PyCFunction)Icn_FlushIconRefsByVolume, 1,
+        "(SInt16 vRefNum) -> None"},
+       {"SetCustomIconsEnabled", (PyCFunction)Icn_SetCustomIconsEnabled, 1,
+        "(SInt16 vRefNum, Boolean enableCustomIcons) -> None"},
+       {"GetCustomIconsEnabled", (PyCFunction)Icn_GetCustomIconsEnabled, 1,
+        "(SInt16 vRefNum) -> (Boolean customIconsEnabled)"},
+       {"IsIconRefMaskEmpty", (PyCFunction)Icn_IsIconRefMaskEmpty, 1,
+        "(IconRef iconRef) -> (Boolean _rv)"},
+
+#if TARGET_API_MAC_CARBON
+       {"GetIconRefVariant", (PyCFunction)Icn_GetIconRefVariant, 1,
+        "(IconRef inIconRef, OSType inVariant) -> (IconRef _rv, IconTransformType outTransform)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"RegisterIconRefFromIconFile", (PyCFunction)Icn_RegisterIconRefFromIconFile, 1,
+        "(OSType creator, OSType iconType, FSSpec iconFile) -> (IconRef theIconRef)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"ReadIconFile", (PyCFunction)Icn_ReadIconFile, 1,
+        "(FSSpec iconFile) -> (IconFamilyHandle iconFamily)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"WriteIconFile", (PyCFunction)Icn_WriteIconFile, 1,
+        "(IconFamilyHandle iconFamily, FSSpec iconFile) -> None"},
+#endif
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initIcn(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+
+       m = Py_InitModule("Icn", Icn_methods);
+       d = PyModule_GetDict(m);
+       Icn_Error = PyMac_GetOSErrException();
+       if (Icn_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Icn_Error) != 0)
+               return;
+}
+
+/* ========================= End module Icn ========================= */
+
diff --git a/Mac/Modules/icn/icnsupport.py b/Mac/Modules/icn/icnsupport.py
new file mode 100644 (file)
index 0000000..bfdc555
--- /dev/null
@@ -0,0 +1,94 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Icons.h'              # The Apple header file
+MODNAME = 'Icn'                                # The name of the module
+OBJECTNAME = 'Icon'                    # The basic name of the objects used here
+KIND = 'Handle'                                # Usually 'Ptr' or 'Handle'
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = OBJECTNAME + KIND         # The C type used to represent them
+OBJECTPREFIX = MODPREFIX + 'Obj'       # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+CIconHandle = OpaqueByValueType("CIconHandle", "ResObj")
+IconSuiteRef = OpaqueByValueType("IconSuiteRef", "ResObj")
+IconCacheRef = OpaqueByValueType("IconCacheRef", "ResObj")
+IconRef = OpaqueByValueType("IconRef", "ResObj")
+IconFamilyHandle = OpaqueByValueType("IconFamilyHandle", "ResObj")
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+IconAlignmentType = Type("IconAlignmentType", "h")
+IconTransformType = Type("IconTransformType", "h")
+IconSelectorValue = Type("IconSelectorValue", "l")
+IconServicesUsageFlags = Type("IconServicesUsageFlags", "l")
+RGBColor = OpaqueType("RGBColor", "QdRGB")
+
+#WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX)
+
+# RgnHandle = FakeType("(RgnHandle)0")
+# XXXX Should be next, but this will break a lot of code...
+# RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj")
+
+# KeyMap = ArrayOutputBufferType("KeyMap")
+#MacOSEventKind = Type("MacOSEventKind", "h") # Old-style
+#MacOSEventMask = Type("MacOSEventMask", "h") # Old-style
+#EventMask = Type("EventMask", "H")
+#EventKind = Type("EventKind", "H")
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Icons.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+"""
+
+class MyObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("if (itself == NULL) return PyMac_Error(resNotFound);")
+       def outputCheckConvertArg(self):
+               OutLbrace("if (DlgObj_Check(v))")
+               Output("*p_itself = ((WindowObject *)v)->ob_itself;")
+               Output("return 1;")
+               OutRbrace()
+               Out("""
+               if (v == Py_None) { *p_itself = NULL; return 1; }
+               if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; }
+               """)
+
+# From here on it's basically all boiler plate...
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+##object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
+##module.addobject(object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+##Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+##methods = []
+execfile(INPUTFILE)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+##for f in methods: object.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Modules/list/Listmodule.c b/Mac/Modules/list/Listmodule.c
new file mode 100644 (file)
index 0000000..6e28613
--- /dev/null
@@ -0,0 +1,1001 @@
+
+/* ========================== Module List =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Lists.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_ListObj_New(ListHandle);
+extern int _ListObj_Convert(PyObject *, ListHandle *);
+
+#define ListObj_New _ListObj_New
+#define ListObj_Convert _ListObj_Convert
+#endif
+
+#if !ACCESSOR_CALLS_ARE_FUNCTIONS
+#define GetListPort(list) ((CGrafPtr)(*(list))->port)
+#define GetListVerticalScrollBar(list) ((*(list))->vScroll)
+#define GetListHorizontalScrollBar(list) ((*(list))->hScroll)
+#define GetListActive(list) ((*(list))->lActive)
+#define GetListClickTime(list) ((*(list))->clikTime)
+#define GetListRefCon(list) ((*(list))->refCon)
+#define GetListDefinition(list) ((*(list))->listDefProc) /* XXX Is this indeed the same? */
+#define GetListUserHandle(list) ((*(list))->userHandle)
+#define GetListDataHandle(list) ((*(list))->cells)
+#define GetListFlags(list) ((*(list))->listFlags)
+#define GetListSelectionFlags(list) ((*(list))->selFlags)
+#define SetListViewBounds(list, bounds) (((*(list))->rView) = *(bounds))
+
+#define SetListPort(list, port) (((*(list))->port) = (GrafPtr)(port))
+#define SetListCellIndent(list, ind) (((*(list))->indent) = *(ind))
+#define SetListClickTime(list, time) (((*(list))->clikTime) = (time))
+#define SetListLastClick(list, click) (((*(list)->lastClick) = *(click))
+#define SetListRefCon(list, refcon) (((*(list))->refCon) = (refcon))
+#define SetListUserHandle(list, handle) (((*(list))->userHandle) = (handle))
+#define SetListFlags(list, flags) (((*(list))->listFlags) = (flags))
+#define SetListSelectionFlags(list, flags) (((*(list))->selFlags) = (flags))
+
+#endif
+
+#define as_List(x) ((ListHandle)x)
+#define as_Resource(lh) ((Handle)lh)
+
+static PyObject *List_Error;
+
+/* ------------------------ Object type List ------------------------ */
+
+PyTypeObject List_Type;
+
+#define ListObj_Check(x) ((x)->ob_type == &List_Type)
+
+typedef struct ListObject {
+       PyObject_HEAD
+       ListHandle ob_itself;
+       int ob_must_be_disposed;
+} ListObject;
+
+PyObject *ListObj_New(ListHandle itself)
+{
+       ListObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(List_Error,"Cannot create null List");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(ListObject, &List_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       it->ob_must_be_disposed = 1;
+       return (PyObject *)it;
+}
+ListObj_Convert(PyObject *v, ListHandle *p_itself)
+{
+       if (!ListObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "List required");
+               return 0;
+       }
+       *p_itself = ((ListObject *)v)->ob_itself;
+       return 1;
+}
+
+static void ListObj_dealloc(ListObject *self)
+{
+       if (self->ob_must_be_disposed && self->ob_itself) LDispose(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *ListObj_LAddColumn(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       short count;
+       short colNum;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &count,
+                             &colNum))
+               return NULL;
+       _rv = LAddColumn(count,
+                        colNum,
+                        _self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *ListObj_LAddRow(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       short count;
+       short rowNum;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &count,
+                             &rowNum))
+               return NULL;
+       _rv = LAddRow(count,
+                     rowNum,
+                     _self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *ListObj_LDelColumn(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short count;
+       short colNum;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &count,
+                             &colNum))
+               return NULL;
+       LDelColumn(count,
+                  colNum,
+                  _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LDelRow(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short count;
+       short rowNum;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &count,
+                             &rowNum))
+               return NULL;
+       LDelRow(count,
+               rowNum,
+               _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LGetSelect(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Boolean next;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "bO&",
+                             &next,
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       _rv = LGetSelect(next,
+                        &theCell,
+                        _self->ob_itself);
+       _res = Py_BuildValue("bO&",
+                            _rv,
+                            PyMac_BuildPoint, theCell);
+       return _res;
+}
+
+static PyObject *ListObj_LLastClick(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Point _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = LLastClick(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildPoint, _rv);
+       return _res;
+}
+
+static PyObject *ListObj_LNextCell(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Boolean hNext;
+       Boolean vNext;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "bbO&",
+                             &hNext,
+                             &vNext,
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       _rv = LNextCell(hNext,
+                       vNext,
+                       &theCell,
+                       _self->ob_itself);
+       _res = Py_BuildValue("bO&",
+                            _rv,
+                            PyMac_BuildPoint, theCell);
+       return _res;
+}
+
+static PyObject *ListObj_LSize(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short listWidth;
+       short listHeight;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &listWidth,
+                             &listHeight))
+               return NULL;
+       LSize(listWidth,
+             listHeight,
+             _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LSetDrawingMode(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean drawIt;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &drawIt))
+               return NULL;
+       LSetDrawingMode(drawIt,
+                       _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LScroll(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short dCols;
+       short dRows;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &dCols,
+                             &dRows))
+               return NULL;
+       LScroll(dCols,
+               dRows,
+               _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LAutoScroll(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       LAutoScroll(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LUpdate(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle theRgn;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theRgn))
+               return NULL;
+       LUpdate(theRgn,
+               _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LActivate(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean act;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &act))
+               return NULL;
+       LActivate(act,
+                 _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LCellSize(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Point cSize;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &cSize))
+               return NULL;
+       LCellSize(cSize,
+                 _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LClick(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Point pt;
+       short modifiers;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetPoint, &pt,
+                             &modifiers))
+               return NULL;
+       _rv = LClick(pt,
+                    modifiers,
+                    _self->ob_itself);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *ListObj_LAddToCell(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       char *dataPtr__in__;
+       short dataPtr__len__;
+       int dataPtr__in_len__;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "s#O&",
+                             &dataPtr__in__, &dataPtr__in_len__,
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       dataPtr__len__ = dataPtr__in_len__;
+       LAddToCell(dataPtr__in__, dataPtr__len__,
+                  theCell,
+                  _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+ dataPtr__error__: ;
+       return _res;
+}
+
+static PyObject *ListObj_LClrCell(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       LClrCell(theCell,
+                _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LGetCell(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       char *dataPtr__out__;
+       short dataPtr__len__;
+       int dataPtr__in_len__;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "iO&",
+                             &dataPtr__in_len__,
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
+       {
+               PyErr_NoMemory();
+               goto dataPtr__error__;
+       }
+       dataPtr__len__ = dataPtr__in_len__;
+       LGetCell(dataPtr__out__, &dataPtr__len__,
+                theCell,
+                _self->ob_itself);
+       _res = Py_BuildValue("s#",
+                            dataPtr__out__, (int)dataPtr__len__);
+       free(dataPtr__out__);
+ dataPtr__error__: ;
+       return _res;
+}
+
+static PyObject *ListObj_LRect(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect cellRect;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       LRect(&cellRect,
+             theCell,
+             _self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildRect, &cellRect);
+       return _res;
+}
+
+static PyObject *ListObj_LSetCell(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       char *dataPtr__in__;
+       short dataPtr__len__;
+       int dataPtr__in_len__;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "s#O&",
+                             &dataPtr__in__, &dataPtr__in_len__,
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       dataPtr__len__ = dataPtr__in_len__;
+       LSetCell(dataPtr__in__, dataPtr__len__,
+                theCell,
+                _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+ dataPtr__error__: ;
+       return _res;
+}
+
+static PyObject *ListObj_LSetSelect(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean setIt;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "bO&",
+                             &setIt,
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       LSetSelect(setIt,
+                  theCell,
+                  _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_LDraw(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Point theCell;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &theCell))
+               return NULL;
+       LDraw(theCell,
+             _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ListObj_as_Resource(ListObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = as_Resource(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyMethodDef ListObj_methods[] = {
+       {"LAddColumn", (PyCFunction)ListObj_LAddColumn, 1,
+        "(short count, short colNum) -> (short _rv)"},
+       {"LAddRow", (PyCFunction)ListObj_LAddRow, 1,
+        "(short count, short rowNum) -> (short _rv)"},
+       {"LDelColumn", (PyCFunction)ListObj_LDelColumn, 1,
+        "(short count, short colNum) -> None"},
+       {"LDelRow", (PyCFunction)ListObj_LDelRow, 1,
+        "(short count, short rowNum) -> None"},
+       {"LGetSelect", (PyCFunction)ListObj_LGetSelect, 1,
+        "(Boolean next, Point theCell) -> (Boolean _rv, Point theCell)"},
+       {"LLastClick", (PyCFunction)ListObj_LLastClick, 1,
+        "() -> (Point _rv)"},
+       {"LNextCell", (PyCFunction)ListObj_LNextCell, 1,
+        "(Boolean hNext, Boolean vNext, Point theCell) -> (Boolean _rv, Point theCell)"},
+       {"LSize", (PyCFunction)ListObj_LSize, 1,
+        "(short listWidth, short listHeight) -> None"},
+       {"LSetDrawingMode", (PyCFunction)ListObj_LSetDrawingMode, 1,
+        "(Boolean drawIt) -> None"},
+       {"LScroll", (PyCFunction)ListObj_LScroll, 1,
+        "(short dCols, short dRows) -> None"},
+       {"LAutoScroll", (PyCFunction)ListObj_LAutoScroll, 1,
+        "() -> None"},
+       {"LUpdate", (PyCFunction)ListObj_LUpdate, 1,
+        "(RgnHandle theRgn) -> None"},
+       {"LActivate", (PyCFunction)ListObj_LActivate, 1,
+        "(Boolean act) -> None"},
+       {"LCellSize", (PyCFunction)ListObj_LCellSize, 1,
+        "(Point cSize) -> None"},
+       {"LClick", (PyCFunction)ListObj_LClick, 1,
+        "(Point pt, short modifiers) -> (Boolean _rv)"},
+       {"LAddToCell", (PyCFunction)ListObj_LAddToCell, 1,
+        "(Buffer dataPtr, Point theCell) -> None"},
+       {"LClrCell", (PyCFunction)ListObj_LClrCell, 1,
+        "(Point theCell) -> None"},
+       {"LGetCell", (PyCFunction)ListObj_LGetCell, 1,
+        "(Buffer dataPtr, Point theCell) -> (Buffer dataPtr)"},
+       {"LRect", (PyCFunction)ListObj_LRect, 1,
+        "(Point theCell) -> (Rect cellRect)"},
+       {"LSetCell", (PyCFunction)ListObj_LSetCell, 1,
+        "(Buffer dataPtr, Point theCell) -> None"},
+       {"LSetSelect", (PyCFunction)ListObj_LSetSelect, 1,
+        "(Boolean setIt, Point theCell) -> None"},
+       {"LDraw", (PyCFunction)ListObj_LDraw, 1,
+        "(Point theCell) -> None"},
+       {"as_Resource", (PyCFunction)ListObj_as_Resource, 1,
+        "() -> (Handle _rv)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain ListObj_chain = { ListObj_methods, NULL };
+
+static PyObject *ListObj_getattr(ListObject *self, char *name)
+{
+       {
+               /* XXXX Should we HLock() here?? */
+               if ( strcmp(name, "listFlags") == 0 )
+                       return Py_BuildValue("l", (long)(*self->ob_itself)->listFlags & 0xff);
+               if ( strcmp(name, "selFlags") == 0 )
+                       return Py_BuildValue("l", (long)(*self->ob_itself)->selFlags & 0xff);
+       }
+       return Py_FindMethodInChain(&ListObj_chain, (PyObject *)self, name);
+}
+
+static int
+ListObj_setattr(ListObject *self, char *name, PyObject *value)
+{
+       long intval;
+               
+       if ( value == NULL || !PyInt_Check(value) )
+               return -1;
+       intval = PyInt_AsLong(value);
+       if (strcmp(name, "listFlags") == 0 ) {
+               /* XXXX Should we HLock the handle here?? */
+               (*self->ob_itself)->listFlags = intval;
+               return 0;
+       }
+       if (strcmp(name, "selFlags") == 0 ) {
+               (*self->ob_itself)->selFlags = intval;
+               return 0;
+       }
+       return -1;
+}
+
+
+#define ListObj_compare NULL
+
+#define ListObj_repr NULL
+
+#define ListObj_hash NULL
+
+PyTypeObject List_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "List", /*tp_name*/
+       sizeof(ListObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) ListObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) ListObj_getattr, /*tp_getattr*/
+       (setattrfunc) ListObj_setattr, /*tp_setattr*/
+       (cmpfunc) ListObj_compare, /*tp_compare*/
+       (reprfunc) ListObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) ListObj_hash, /*tp_hash*/
+};
+
+/* ---------------------- End object type List ---------------------- */
+
+
+static PyObject *List_LNew(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle _rv;
+       Rect rView;
+       Rect dataBounds;
+       Point cSize;
+       short theProc;
+       WindowPtr theWindow;
+       Boolean drawIt;
+       Boolean hasGrow;
+       Boolean scrollHoriz;
+       Boolean scrollVert;
+       if (!PyArg_ParseTuple(_args, "O&O&O&hO&bbbb",
+                             PyMac_GetRect, &rView,
+                             PyMac_GetRect, &dataBounds,
+                             PyMac_GetPoint, &cSize,
+                             &theProc,
+                             WinObj_Convert, &theWindow,
+                             &drawIt,
+                             &hasGrow,
+                             &scrollHoriz,
+                             &scrollVert))
+               return NULL;
+       _rv = LNew(&rView,
+                  &dataBounds,
+                  cSize,
+                  theProc,
+                  theWindow,
+                  drawIt,
+                  hasGrow,
+                  scrollHoriz,
+                  scrollVert);
+       _res = Py_BuildValue("O&",
+                            ListObj_New, _rv);
+       return _res;
+}
+
+static PyObject *List_GetListPort(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CGrafPtr _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListPort(list);
+       _res = Py_BuildValue("O&",
+                            GrafObj_New, _rv);
+       return _res;
+}
+
+static PyObject *List_GetListVerticalScrollBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ControlHandle _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListVerticalScrollBar(list);
+       _res = Py_BuildValue("O&",
+                            CtlObj_New, _rv);
+       return _res;
+}
+
+static PyObject *List_GetListHorizontalScrollBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ControlHandle _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListHorizontalScrollBar(list);
+       _res = Py_BuildValue("O&",
+                            CtlObj_New, _rv);
+       return _res;
+}
+
+static PyObject *List_GetListActive(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListActive(list);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *List_GetListClickTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt32 _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListClickTime(list);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *List_GetListRefCon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt32 _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListRefCon(list);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *List_GetListDefinition(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListDefinition(list);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *List_GetListUserHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListUserHandle(list);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *List_GetListDataHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DataHandle _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListDataHandle(list);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *List_GetListFlags(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OptionBits _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListFlags(list);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *List_GetListSelectionFlags(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OptionBits _rv;
+       ListHandle list;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ListObj_Convert, &list))
+               return NULL;
+       _rv = GetListSelectionFlags(list);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *List_SetListViewBounds(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle list;
+       Rect view;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ListObj_Convert, &list,
+                             PyMac_GetRect, &view))
+               return NULL;
+       SetListViewBounds(list,
+                         &view);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *List_SetListPort(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle list;
+       CGrafPtr port;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ListObj_Convert, &list,
+                             GrafObj_Convert, &port))
+               return NULL;
+       SetListPort(list,
+                   port);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *List_SetListCellIndent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle list;
+       Point indent;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ListObj_Convert, &list,
+                             PyMac_GetPoint, &indent))
+               return NULL;
+       SetListCellIndent(list,
+                         &indent);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *List_SetListClickTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle list;
+       SInt32 time;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             ListObj_Convert, &list,
+                             &time))
+               return NULL;
+       SetListClickTime(list,
+                        time);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *List_SetListRefCon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle list;
+       SInt32 refCon;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             ListObj_Convert, &list,
+                             &refCon))
+               return NULL;
+       SetListRefCon(list,
+                     refCon);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *List_SetListUserHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle list;
+       Handle userHandle;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ListObj_Convert, &list,
+                             ResObj_Convert, &userHandle))
+               return NULL;
+       SetListUserHandle(list,
+                         userHandle);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *List_SetListFlags(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle list;
+       OptionBits listFlags;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             ListObj_Convert, &list,
+                             &listFlags))
+               return NULL;
+       SetListFlags(list,
+                    listFlags);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *List_SetListSelectionFlags(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ListHandle list;
+       OptionBits selectionFlags;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             ListObj_Convert, &list,
+                             &selectionFlags))
+               return NULL;
+       SetListSelectionFlags(list,
+                             selectionFlags);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *List_as_List(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       Handle h;
+       ListObject *l;
+       if (!PyArg_ParseTuple(_args, "O&", ResObj_Convert, &h))
+               return NULL;
+       l = (ListObject *)ListObj_New(as_List(h));
+       l->ob_must_be_disposed = 0;
+       return Py_BuildValue("O", l);
+
+}
+
+static PyMethodDef List_methods[] = {
+       {"LNew", (PyCFunction)List_LNew, 1,
+        "(Rect rView, Rect dataBounds, Point cSize, short theProc, WindowPtr theWindow, Boolean drawIt, Boolean hasGrow, Boolean scrollHoriz, Boolean scrollVert) -> (ListHandle _rv)"},
+       {"GetListPort", (PyCFunction)List_GetListPort, 1,
+        "(ListHandle list) -> (CGrafPtr _rv)"},
+       {"GetListVerticalScrollBar", (PyCFunction)List_GetListVerticalScrollBar, 1,
+        "(ListHandle list) -> (ControlHandle _rv)"},
+       {"GetListHorizontalScrollBar", (PyCFunction)List_GetListHorizontalScrollBar, 1,
+        "(ListHandle list) -> (ControlHandle _rv)"},
+       {"GetListActive", (PyCFunction)List_GetListActive, 1,
+        "(ListHandle list) -> (Boolean _rv)"},
+       {"GetListClickTime", (PyCFunction)List_GetListClickTime, 1,
+        "(ListHandle list) -> (SInt32 _rv)"},
+       {"GetListRefCon", (PyCFunction)List_GetListRefCon, 1,
+        "(ListHandle list) -> (SInt32 _rv)"},
+       {"GetListDefinition", (PyCFunction)List_GetListDefinition, 1,
+        "(ListHandle list) -> (Handle _rv)"},
+       {"GetListUserHandle", (PyCFunction)List_GetListUserHandle, 1,
+        "(ListHandle list) -> (Handle _rv)"},
+       {"GetListDataHandle", (PyCFunction)List_GetListDataHandle, 1,
+        "(ListHandle list) -> (DataHandle _rv)"},
+       {"GetListFlags", (PyCFunction)List_GetListFlags, 1,
+        "(ListHandle list) -> (OptionBits _rv)"},
+       {"GetListSelectionFlags", (PyCFunction)List_GetListSelectionFlags, 1,
+        "(ListHandle list) -> (OptionBits _rv)"},
+       {"SetListViewBounds", (PyCFunction)List_SetListViewBounds, 1,
+        "(ListHandle list, Rect view) -> None"},
+       {"SetListPort", (PyCFunction)List_SetListPort, 1,
+        "(ListHandle list, CGrafPtr port) -> None"},
+       {"SetListCellIndent", (PyCFunction)List_SetListCellIndent, 1,
+        "(ListHandle list, Point indent) -> None"},
+       {"SetListClickTime", (PyCFunction)List_SetListClickTime, 1,
+        "(ListHandle list, SInt32 time) -> None"},
+       {"SetListRefCon", (PyCFunction)List_SetListRefCon, 1,
+        "(ListHandle list, SInt32 refCon) -> None"},
+       {"SetListUserHandle", (PyCFunction)List_SetListUserHandle, 1,
+        "(ListHandle list, Handle userHandle) -> None"},
+       {"SetListFlags", (PyCFunction)List_SetListFlags, 1,
+        "(ListHandle list, OptionBits listFlags) -> None"},
+       {"SetListSelectionFlags", (PyCFunction)List_SetListSelectionFlags, 1,
+        "(ListHandle list, OptionBits selectionFlags) -> None"},
+       {"as_List", (PyCFunction)List_as_List, 1,
+        "(Resource)->List.\nReturns List object (which is not auto-freed!)"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initList(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(ListHandle, ListObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ListHandle, ListObj_Convert);
+
+
+       m = Py_InitModule("List", List_methods);
+       d = PyModule_GetDict(m);
+       List_Error = PyMac_GetOSErrException();
+       if (List_Error == NULL ||
+           PyDict_SetItemString(d, "Error", List_Error) != 0)
+               return;
+       List_Type.ob_type = &PyType_Type;
+       Py_INCREF(&List_Type);
+       if (PyDict_SetItemString(d, "ListType", (PyObject *)&List_Type) != 0)
+               Py_FatalError("can't initialize ListType");
+}
+
+/* ======================== End module List ========================= */
+
diff --git a/Mac/Modules/list/listsupport.py b/Mac/Modules/list/listsupport.py
new file mode 100644 (file)
index 0000000..d5ddd5b
--- /dev/null
@@ -0,0 +1,196 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Lists.h'              # The Apple header file
+MODNAME = 'List'                               # The name of the module
+OBJECTNAME = 'List'                    # The basic name of the objects used here
+KIND = 'Handle'                                # Usually 'Ptr' or 'Handle'
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = "ListHandle"              # The C type used to represent them
+OBJECTPREFIX = MODPREFIX + 'Obj'       # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+ListHandle = OpaqueByValueType("ListHandle", "ListObj")
+ListRef = ListHandle # Obsolete, but used in Lists.h
+Cell = Point
+ListBounds = Rect
+ListBounds_ptr = Rect_ptr
+VarOutBufferShortsize = VarHeapOutputBufferType('char', 'short', 's')  # (buf, &len)
+InBufferShortsize = VarInputBufferType('char', 'short', 's')           # (buf, len)
+
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+DataHandle = OpaqueByValueType("DataHandle", "ResObj")
+Handle = OpaqueByValueType("Handle", "ResObj")
+CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Lists.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_ListObj_New(ListHandle);
+extern int _ListObj_Convert(PyObject *, ListHandle *);
+
+#define ListObj_New _ListObj_New
+#define ListObj_Convert _ListObj_Convert
+#endif
+
+#if !ACCESSOR_CALLS_ARE_FUNCTIONS
+#define GetListPort(list) ((CGrafPtr)(*(list))->port)
+#define GetListVerticalScrollBar(list) ((*(list))->vScroll)
+#define GetListHorizontalScrollBar(list) ((*(list))->hScroll)
+#define GetListActive(list) ((*(list))->lActive)
+#define GetListClickTime(list) ((*(list))->clikTime)
+#define GetListRefCon(list) ((*(list))->refCon)
+#define GetListDefinition(list) ((*(list))->listDefProc) /* XXX Is this indeed the same? */
+#define GetListUserHandle(list) ((*(list))->userHandle)
+#define GetListDataHandle(list) ((*(list))->cells)
+#define GetListFlags(list) ((*(list))->listFlags)
+#define GetListSelectionFlags(list) ((*(list))->selFlags)
+#define SetListViewBounds(list, bounds) (((*(list))->rView) = *(bounds))
+
+#define SetListPort(list, port) (((*(list))->port) = (GrafPtr)(port))
+#define SetListCellIndent(list, ind) (((*(list))->indent) = *(ind))
+#define SetListClickTime(list, time) (((*(list))->clikTime) = (time))
+#define SetListLastClick(list, click) (((*(list)->lastClick) = *(click))
+#define SetListRefCon(list, refcon) (((*(list))->refCon) = (refcon))
+#define SetListUserHandle(list, handle) (((*(list))->userHandle) = (handle))
+#define SetListFlags(list, flags) (((*(list))->listFlags) = (flags))
+#define SetListSelectionFlags(list, flags) (((*(list))->selFlags) = (flags))
+
+#endif
+
+#define as_List(x) ((ListHandle)x)
+#define as_Resource(lh) ((Handle)lh)
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(ListHandle, ListObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ListHandle, ListObj_Convert);
+"""
+
+class ListMethodGenerator(MethodGenerator):
+       """Similar to MethodGenerator, but has self as last argument"""
+
+       def parseArgumentList(self, args):
+               args, a0 = args[:-1], args[-1]
+               t0, n0, m0 = a0
+               if m0 != InMode:
+                       raise ValueError, "method's 'self' must be 'InMode'"
+               self.itself = Variable(t0, "_self->ob_itself", SelfMode)
+               FunctionGenerator.parseArgumentList(self, args)
+               self.argumentList.append(self.itself)
+
+getattrHookCode = """{
+       /* XXXX Should we HLock() here?? */
+       if ( strcmp(name, "listFlags") == 0 )
+               return Py_BuildValue("l", (long)(*self->ob_itself)->listFlags & 0xff);
+       if ( strcmp(name, "selFlags") == 0 )
+               return Py_BuildValue("l", (long)(*self->ob_itself)->selFlags & 0xff);
+}"""
+
+setattrCode = """
+static int
+ListObj_setattr(ListObject *self, char *name, PyObject *value)
+{
+       long intval;
+               
+       if ( value == NULL || !PyInt_Check(value) )
+               return -1;
+       intval = PyInt_AsLong(value);
+       if (strcmp(name, "listFlags") == 0 ) {
+               /* XXXX Should we HLock the handle here?? */
+               (*self->ob_itself)->listFlags = intval;
+               return 0;
+       }
+       if (strcmp(name, "selFlags") == 0 ) {
+               (*self->ob_itself)->selFlags = intval;
+               return 0;
+       }
+       return -1;
+}
+"""
+
+
+class MyObjectDefinition(GlobalObjectDefinition):
+
+       def outputStructMembers(self):
+               ObjectDefinition.outputStructMembers(self)
+               Output("int ob_must_be_disposed;")
+
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(List_Error,"Cannot create null List");
+                                       return NULL;
+                               }""")
+                               
+       def outputInitStructMembers(self):
+               ObjectDefinition.outputInitStructMembers(self)
+               Output("it->ob_must_be_disposed = 1;")
+
+       def outputFreeIt(self, itselfname):
+               Output("if (self->ob_must_be_disposed && %s) LDispose(%s);", itselfname, itselfname)
+               
+       def outputGetattrHook(self):
+               Output(getattrHookCode)
+               
+       def outputSetattr(self):
+               Output(setattrCode)
+               
+# From here on it's basically all boiler plate...
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
+module.addobject(object)
+
+# Create the generator classes used to populate the lists
+Function = FunctionGenerator
+Method = ListMethodGenerator
+
+# Create and populate the lists
+functions = []
+methods = []
+execfile(INPUTFILE)
+
+# Function to convert any handle to a list and vv.
+##f = Function(ListHandle, 'as_List', (Handle, 'h', InMode))
+as_List_body = """
+Handle h;
+ListObject *l;
+if (!PyArg_ParseTuple(_args, "O&", ResObj_Convert, &h))
+       return NULL;
+l = (ListObject *)ListObj_New(as_List(h));
+l->ob_must_be_disposed = 0;
+return Py_BuildValue("O", l);
+"""
+f = ManualGenerator("as_List", as_List_body)
+f.docstring = lambda: "(Resource)->List.\nReturns List object (which is not auto-freed!)"
+functions.append(f)
+
+f = Method(Handle, 'as_Resource', (ListHandle, 'lh', InMode))
+methods.append(f)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+for f in methods: object.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Modules/macmodule.c b/Mac/Modules/macmodule.c
new file mode 100644 (file)
index 0000000..d5f283b
--- /dev/null
@@ -0,0 +1,652 @@
+/***********************************************************
+Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* Mac module implementation */
+
+#include "Python.h"
+#include "ceval.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#if TARGET_API_MAC_OS8
+/* Skip for Carbon */
+#include "macstat.h"
+#endif
+
+#ifdef USE_GUSI
+/* Remove defines from macstat.h */
+#undef S_IFMT
+#undef S_IFDIR
+#undef S_IFREG
+#undef S_IREAD
+#undef S_IWRITE
+#undef S_IEXEC
+
+#ifdef USE_GUSI1
+#include <GUSI.h>
+#endif /* USE_GUSI1 */
+#include <sys/types.h>
+#include <sys/stat.h>
+#else /* USE_GUSI */
+#if TARGET_API_MAC_OS8
+#define stat macstat
+#endif
+#endif /* USE_GUSI */
+
+#ifdef USE_GUSI2
+#define sync bad_sync
+#include <unistd.h>
+#include <fcntl.h>
+#undef sync
+int sync(void);
+#else
+#define mode_t int
+#include <fcntl.h>
+#ifdef _POSIX
+#include <unistd.h>
+#include <stat.h>
+#endif
+#endif
+
+/* Optional routines, for some compiler/runtime combinations */
+#if defined(USE_GUSI) || !defined(__MWERKS__)
+#define WEHAVE_FDOPEN
+#endif
+#if defined(MPW) || defined(USE_GUSI)
+#define WEHAVE_DUP
+#endif
+#if defined(USE_GUSI)
+#define WEHAVE_FSTAT
+#endif
+
+#include "macdefs.h"
+#ifdef USE_GUSI
+#include <dirent.h>
+#else
+#include "dirent.h"
+#endif
+
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
+
+/* Prototypes for Unix simulation on Mac */
+
+#ifndef USE_GUSI
+
+int chdir(const char *path);
+int mkdir(const char *path, int mode);
+DIR * opendir(char *);
+void closedir(DIR *);
+struct dirent * readdir(DIR *);
+int rmdir(const char *path);
+int sync(void);
+
+int unlink(const char *);
+
+#endif /* USE_GUSI */
+
+char *getwd(char *);
+char *getbootvol(void);
+
+
+static PyObject *MacError; /* Exception mac.error */
+
+/* Set a MAC-specific error from errno, and return NULL */
+
+static PyObject * 
+mac_error() 
+{
+       return PyErr_SetFromErrno(MacError);
+}
+
+/* MAC generic methods */
+
+static PyObject *
+mac_1str(args, func)
+       PyObject *args;
+       int (*func)(const char *);
+{
+       char *path1;
+       int res;
+       if (!PyArg_Parse(args, "s", &path1))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = (*func)(path1);
+       Py_END_ALLOW_THREADS
+       if (res < 0)
+               return mac_error();
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static PyObject *
+mac_2str(args, func)
+       PyObject *args;
+       int (*func)(const char *, const char *);
+{
+       char *path1, *path2;
+       int res;
+       if (!PyArg_Parse(args, "(ss)", &path1, &path2))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = (*func)(path1, path2);
+       Py_END_ALLOW_THREADS
+       if (res < 0)
+               return mac_error();
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static PyObject *
+mac_strint(args, func)
+       PyObject *args;
+       int (*func)(const char *, int);
+{
+       char *path;
+       int i;
+       int res;
+       if (!PyArg_Parse(args, "(si)", &path, &i))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = (*func)(path, i);
+       Py_END_ALLOW_THREADS
+       if (res < 0)
+               return mac_error();
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static PyObject *
+mac_chdir(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+#ifdef USE_GUSI1
+       PyObject *rv;
+       
+       /* Change MacOS's idea of wd too */
+       rv = mac_1str(args, chdir);
+       PyMac_FixGUSIcd();
+       return rv;
+#else
+       return mac_1str(args, chdir);
+#endif
+
+}
+
+static PyObject *
+mac_close(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       int fd, res;
+       if (!PyArg_Parse(args, "i", &fd))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = close(fd);
+       Py_END_ALLOW_THREADS
+#ifndef USE_GUSI1
+       /* GUSI gives surious errors here? */
+       if (res < 0)
+               return mac_error();
+#endif
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+#ifdef WEHAVE_DUP
+
+static PyObject *
+mac_dup(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       int fd;
+       if (!PyArg_Parse(args, "i", &fd))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       fd = dup(fd);
+       Py_END_ALLOW_THREADS
+       if (fd < 0)
+               return mac_error();
+       return PyInt_FromLong((long)fd);
+}
+
+#endif
+
+#ifdef WEHAVE_FDOPEN
+static PyObject *
+mac_fdopen(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       extern int fclose(FILE *);
+       int fd;
+       char *mode;
+       FILE *fp;
+       if (!PyArg_Parse(args, "(is)", &fd, &mode))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       fp = fdopen(fd, mode);
+       Py_END_ALLOW_THREADS
+       if (fp == NULL)
+               return mac_error();
+       return PyFile_FromFile(fp, "(fdopen)", mode, fclose);
+}
+#endif
+
+#if TARGET_API_MAC_OS8
+static PyObject *
+mac_getbootvol(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       char *res;
+       if (!PyArg_NoArgs(args))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = getbootvol();
+       Py_END_ALLOW_THREADS
+       if (res == NULL)
+               return mac_error();
+       return PyString_FromString(res);
+}
+#endif
+
+static PyObject *
+mac_getcwd(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       char path[MAXPATHLEN];
+       char *res;
+       if (!PyArg_NoArgs(args))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+#ifdef USE_GUSI
+       res = getcwd(path, sizeof path);
+#else
+       res = getwd(path);
+#endif
+       Py_END_ALLOW_THREADS
+       if (res == NULL) {
+               PyErr_SetString(MacError, path);
+               return NULL;
+       }
+       return PyString_FromString(res);
+}
+
+static PyObject *
+mac_listdir(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       char *name;
+       PyObject *d, *v;
+       DIR *dirp;
+       struct dirent *ep;
+       if (!PyArg_Parse(args, "s", &name))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       if ((dirp = opendir(name)) == NULL) {
+               Py_BLOCK_THREADS
+               return mac_error();
+       }
+       if ((d = PyList_New(0)) == NULL) {
+               closedir(dirp);
+               Py_BLOCK_THREADS
+               return NULL;
+       }
+       while ((ep = readdir(dirp)) != NULL) {
+               v = PyString_FromString(ep->d_name);
+               if (v == NULL) {
+                       Py_DECREF(d);
+                       d = NULL;
+                       break;
+               }
+               if (PyList_Append(d, v) != 0) {
+                       Py_DECREF(v);
+                       Py_DECREF(d);
+                       d = NULL;
+                       break;
+               }
+               Py_DECREF(v);
+       }
+       closedir(dirp);
+       Py_END_ALLOW_THREADS
+
+       return d;
+}
+
+static PyObject *
+mac_lseek(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       int fd;
+       int where;
+       int how;
+       long res;
+       if (!PyArg_Parse(args, "(iii)", &fd, &where, &how))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = lseek(fd, (long)where, how);
+       Py_END_ALLOW_THREADS
+       if (res < 0)
+               return mac_error();
+       return PyInt_FromLong(res);
+}
+
+static PyObject *
+mac_mkdir(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       int res;
+       char *path;
+       int mode = 0777; /* Unused */
+       if (!PyArg_ParseTuple(args, "s|i", &path, &mode))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+#ifdef USE_GUSI1
+       res = mkdir(path);
+#else
+       res = mkdir(path, mode);
+#endif
+       Py_END_ALLOW_THREADS
+       if (res < 0)
+               return mac_error();
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static PyObject *
+mac_open(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       char *path;
+       int mode;
+       int fd;
+       if (!PyArg_Parse(args, "(si)", &path, &mode))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       fd = open(path, mode);
+       Py_END_ALLOW_THREADS
+       if (fd < 0)
+               return mac_error();
+       return PyInt_FromLong((long)fd);
+}
+
+static PyObject *
+mac_read(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       int fd, size;
+       PyObject *buffer;
+       if (!PyArg_Parse(args, "(ii)", &fd, &size))
+               return NULL;
+       buffer = PyString_FromStringAndSize((char *)NULL, size);
+       if (buffer == NULL)
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       size = read(fd, PyString_AsString(buffer), size);
+       Py_END_ALLOW_THREADS
+       if (size < 0) {
+               Py_DECREF(buffer);
+               return mac_error();
+       }
+       _PyString_Resize(&buffer, size);
+       return buffer;
+}
+
+static PyObject *
+mac_rename(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       return mac_2str(args, rename);
+}
+
+static PyObject *
+mac_rmdir(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       return mac_1str(args, rmdir);
+}
+
+static PyObject *
+mac_stat(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       struct stat st;
+       char *path;
+       int res;
+       if (!PyArg_Parse(args, "s", &path))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = stat(path, &st);
+       Py_END_ALLOW_THREADS
+       if (res != 0)
+               return mac_error();
+       return Py_BuildValue("(lllllllddd)",
+                   (long)st.st_mode,
+                   (long)st.st_ino,
+                   (long)st.st_dev,
+                   (long)st.st_nlink,
+                   (long)st.st_uid,
+                   (long)st.st_gid,
+                   (long)st.st_size,
+                   (double)st.st_atime,
+                   (double)st.st_mtime,
+                   (double)st.st_ctime);
+}
+
+#ifdef WEHAVE_FSTAT
+static PyObject *
+mac_fstat(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       struct stat st;
+       long fd;
+       int res;
+       if (!PyArg_Parse(args, "l", &fd))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = fstat((int)fd, &st);
+       Py_END_ALLOW_THREADS
+       if (res != 0)
+               return mac_error();
+       return Py_BuildValue("(lllllllddd)",
+                   (long)st.st_mode,
+                   (long)st.st_ino,
+                   (long)st.st_dev,
+                   (long)st.st_nlink,
+                   (long)st.st_uid,
+                   (long)st.st_gid,
+                   (long)st.st_size,
+                   (double)st.st_atime,
+                   (double)st.st_mtime,
+                   (double)st.st_ctime);
+}
+#endif /* WEHAVE_FSTAT */
+
+#if TARGET_API_MAC_OS8
+static PyObject *
+mac_xstat(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       struct macstat mst;
+       struct stat st;
+       char *path;
+       int res;
+       if (!PyArg_Parse(args, "s", &path))
+               return NULL;
+       /*
+       ** Convoluted: we want stat() and xstat() to agree, so we call both
+       ** stat and macstat, and use the latter only for values not provided by
+       ** the former.
+       */
+       Py_BEGIN_ALLOW_THREADS
+       res = macstat(path, &mst);
+       Py_END_ALLOW_THREADS
+       if (res != 0)
+               return mac_error();
+       Py_BEGIN_ALLOW_THREADS
+       res = stat(path, &st);
+       Py_END_ALLOW_THREADS
+       if (res != 0)
+               return mac_error();
+       return Py_BuildValue("(llllllldddls#s#)",
+                   (long)st.st_mode,
+                   (long)st.st_ino,
+                   (long)st.st_dev,
+                   (long)st.st_nlink,
+                   (long)st.st_uid,
+                   (long)st.st_gid,
+                   (long)st.st_size,
+                   (double)st.st_atime,
+                   (double)st.st_mtime,
+                   (double)st.st_ctime,
+                   (long)mst.st_rsize,
+                   mst.st_creator, 4,
+                   mst.st_type, 4);
+}
+#endif
+
+static PyObject *
+mac_sync(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       int res;
+       if (!PyArg_NoArgs(args))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       res = sync();
+       Py_END_ALLOW_THREADS
+       if (res != 0)
+               return mac_error();
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static PyObject *
+mac_unlink(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       return mac_1str(args, (int (*)(const char *))unlink);
+}
+
+static PyObject *
+mac_write(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       int fd, size;
+       char *buffer;
+       if (!PyArg_Parse(args, "(is#)", &fd, &buffer, &size))
+               return NULL;
+       Py_BEGIN_ALLOW_THREADS
+       size = write(fd, buffer, size);
+       Py_END_ALLOW_THREADS
+       if (size < 0)
+               return mac_error();
+       return PyInt_FromLong((long)size);
+}
+
+#ifdef USE_MALLOC_DEBUG
+void *mstats(char *);
+
+static PyObject *
+mac_mstats(self, args)
+       PyObject*self;
+       PyObject *args;
+{
+       mstats("python");
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+#endif /* USE_MALLOC_DEBUG */
+
+static struct PyMethodDef mac_methods[] = {
+       {"chdir",       mac_chdir},
+       {"close",       mac_close},
+#ifdef WEHAVE_DUP
+       {"dup",         mac_dup},
+#endif
+#ifdef WEHAVE_FDOPEN
+       {"fdopen",      mac_fdopen},
+#endif
+#ifdef WEHAVE_FSTAT
+       {"fstat",       mac_fstat},
+#endif
+#if TARGET_API_MAC_OS8
+       {"getbootvol",  mac_getbootvol}, /* non-standard */
+#endif
+       {"getcwd",      mac_getcwd},
+       {"listdir",     mac_listdir, 0},
+       {"lseek",       mac_lseek},
+       {"mkdir",       mac_mkdir, 1},
+       {"open",        mac_open},
+       {"read",        mac_read},
+       {"rename",      mac_rename},
+       {"rmdir",       mac_rmdir},
+       {"stat",        mac_stat},
+#if TARGET_API_MAC_OS8
+       {"xstat",       mac_xstat},
+#endif
+       {"sync",        mac_sync},
+       {"remove",      mac_unlink},
+       {"unlink",      mac_unlink},
+       {"write",       mac_write},
+#ifdef USE_MALLOC_DEBUG
+       {"mstats",      mac_mstats},
+#endif
+
+       {NULL,          NULL}            /* Sentinel */
+};
+
+
+void
+initmac()
+{
+       PyObject *m, *d;
+       
+       m = Py_InitModule("mac", mac_methods);
+       d = PyModule_GetDict(m);
+       
+       /* Initialize mac.error exception */
+       MacError = PyErr_NewException("mac.error", NULL, NULL);
+       PyDict_SetItemString(d, "error", MacError);
+}
diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c
new file mode 100644 (file)
index 0000000..c99aa4b
--- /dev/null
@@ -0,0 +1,788 @@
+/***********************************************************
+Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* Macintosh OS-specific interface */
+
+#include "Python.h"
+#include "macglue.h"
+#include "pythonresources.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Windows.h>
+#include <Files.h>
+#include <LowMem.h>
+#include <Sound.h>
+#include <Events.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+static PyObject *MacOS_Error; /* Exception MacOS.Error */
+
+#ifdef MPW
+#define bufferIsSmall -607     /*error returns from Post and Accept */
+#endif
+
+static PyObject *ErrorObject;
+
+/* ----------------------------------------------------- */
+
+/* Declarations for objects of type Resource fork */
+
+typedef struct {
+       PyObject_HEAD
+       short fRefNum;
+       int isclosed;
+} rfobject;
+
+staticforward PyTypeObject Rftype;
+
+
+
+/* ---------------------------------------------------------------- */
+
+static void
+do_close(self)
+       rfobject *self;
+{
+       if (self->isclosed ) return;
+       (void)FSClose(self->fRefNum);
+       self->isclosed = 1;
+}
+
+static char rf_read__doc__[] = 
+"Read data from resource fork"
+;
+
+static PyObject *
+rf_read(self, args)
+       rfobject *self;
+       PyObject *args;
+{
+       long n;
+       PyObject *v;
+       OSErr err;
+       
+       if (self->isclosed) {
+               PyErr_SetString(PyExc_ValueError, "Operation on closed file");
+               return NULL;
+       }
+       
+       if (!PyArg_ParseTuple(args, "l", &n))
+               return NULL;
+               
+       v = PyString_FromStringAndSize((char *)NULL, n);
+       if (v == NULL)
+               return NULL;
+               
+       err = FSRead(self->fRefNum, &n, PyString_AsString(v));
+       if (err && err != eofErr) {
+               PyMac_Error(err);
+               Py_DECREF(v);
+               return NULL;
+       }
+       _PyString_Resize(&v, n);
+       return v;
+}
+
+
+static char rf_write__doc__[] = 
+"Write to resource fork"
+;
+
+static PyObject *
+rf_write(self, args)
+       rfobject *self;
+       PyObject *args;
+{
+       char *buffer;
+       long size;
+       OSErr err;
+       
+       if (self->isclosed) {
+               PyErr_SetString(PyExc_ValueError, "Operation on closed file");
+               return NULL;
+       }
+       if (!PyArg_ParseTuple(args, "s#", &buffer, &size))
+               return NULL;
+       err = FSWrite(self->fRefNum, &size, buffer);
+       if (err) {
+               PyMac_Error(err);
+               return NULL;
+       }
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char rf_seek__doc__[] = 
+"Set file position"
+;
+
+static PyObject *
+rf_seek(self, args)
+       rfobject *self;
+       PyObject *args;
+{
+       long amount, pos;
+       int whence = SEEK_SET;
+       long eof;
+       OSErr err;
+       
+       if (self->isclosed) {
+               PyErr_SetString(PyExc_ValueError, "Operation on closed file");
+               return NULL;
+       }
+       if (!PyArg_ParseTuple(args, "l|i", &amount, &whence))
+               return NULL;
+       
+       if ( err = GetEOF(self->fRefNum, &eof))
+               goto ioerr;
+       
+       switch (whence) {
+       case SEEK_CUR:
+               if (err = GetFPos(self->fRefNum, &pos))
+                       goto ioerr; 
+               break;
+       case SEEK_END:
+               pos = eof;
+               break;
+       case SEEK_SET:
+               pos = 0;
+               break;
+       default:
+               PyErr_BadArgument();
+               return NULL;
+       }
+       
+       pos += amount;
+       
+       /* Don't bother implementing seek past EOF */
+       if (pos > eof || pos < 0) {
+               PyErr_BadArgument();
+               return NULL;
+       }
+       
+       if ( err = SetFPos(self->fRefNum, fsFromStart, pos) ) {
+ioerr:
+               PyMac_Error(err);
+               return NULL;
+       }
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static char rf_tell__doc__[] = 
+"Get file position"
+;
+
+static PyObject *
+rf_tell(self, args)
+       rfobject *self;
+       PyObject *args;
+{
+       long where;
+       OSErr err;
+       
+       if (self->isclosed) {
+               PyErr_SetString(PyExc_ValueError, "Operation on closed file");
+               return NULL;
+       }
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       if ( err = GetFPos(self->fRefNum, &where) ) {
+               PyMac_Error(err);
+               return NULL;
+       }
+       return PyInt_FromLong(where);
+}
+
+static char rf_close__doc__[] = 
+"Close resource fork"
+;
+
+static PyObject *
+rf_close(self, args)
+       rfobject *self;
+       PyObject *args;
+{
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       do_close(self);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+
+static struct PyMethodDef rf_methods[] = {
+       {"read",        rf_read,        1,      rf_read__doc__},
+ {"write",     rf_write,       1,      rf_write__doc__},
+ {"seek",      rf_seek,        1,      rf_seek__doc__},
+ {"tell",      rf_tell,        1,      rf_tell__doc__},
+ {"close",     rf_close,       1,      rf_close__doc__},
+       {NULL,          NULL}           /* sentinel */
+};
+
+/* ---------- */
+
+
+static rfobject *
+newrfobject()
+{
+       rfobject *self;
+       
+       self = PyObject_NEW(rfobject, &Rftype);
+       if (self == NULL)
+               return NULL;
+       self->isclosed = 1;
+       return self;
+}
+
+
+static void
+rf_dealloc(self)
+       rfobject *self;
+{
+       do_close(self);
+       PyMem_DEL(self);
+}
+
+static PyObject *
+rf_getattr(self, name)
+       rfobject *self;
+       char *name;
+{
+       return Py_FindMethod(rf_methods, (PyObject *)self, name);
+}
+
+static char Rftype__doc__[] = 
+"Resource fork file object"
+;
+
+static PyTypeObject Rftype = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0,                              /*ob_size*/
+       "ResourceFork",                 /*tp_name*/
+       sizeof(rfobject),               /*tp_basicsize*/
+       0,                              /*tp_itemsize*/
+       /* methods */
+       (destructor)rf_dealloc, /*tp_dealloc*/
+       (printfunc)0,           /*tp_print*/
+       (getattrfunc)rf_getattr,        /*tp_getattr*/
+       (setattrfunc)0, /*tp_setattr*/
+       (cmpfunc)0,             /*tp_compare*/
+       (reprfunc)0,            /*tp_repr*/
+       0,                      /*tp_as_number*/
+       0,              /*tp_as_sequence*/
+       0,              /*tp_as_mapping*/
+       (hashfunc)0,            /*tp_hash*/
+       (ternaryfunc)0,         /*tp_call*/
+       (reprfunc)0,            /*tp_str*/
+
+       /* Space for future expansion */
+       0L,0L,0L,0L,
+       Rftype__doc__ /* Documentation string */
+};
+
+/* End of code for Resource fork objects */
+/* -------------------------------------------------------- */
+
+/*----------------------------------------------------------------------*/
+/* Miscellaneous File System Operations */
+
+static char getcrtp_doc[] = "Obsolete, use macfs module";
+
+static PyObject *
+MacOS_GetCreatorAndType(PyObject *self, PyObject *args)
+{
+       FSSpec fss;
+       FInfo info;
+       PyObject *creator, *type, *res;
+       OSErr err;
+       
+       if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss))
+               return NULL;
+       if ((err = FSpGetFInfo(&fss, &info)) != noErr)
+               return PyErr_Mac(MacOS_Error, err);
+       creator = PyString_FromStringAndSize((char *)&info.fdCreator, 4);
+       type = PyString_FromStringAndSize((char *)&info.fdType, 4);
+       res = Py_BuildValue("OO", creator, type);
+       Py_DECREF(creator);
+       Py_DECREF(type);
+       return res;
+}
+
+static char setcrtp_doc[] = "Obsolete, use macfs module";
+
+static PyObject *
+MacOS_SetCreatorAndType(PyObject *self, PyObject *args)
+{
+       FSSpec fss;
+       ResType creator, type;
+       FInfo info;
+       OSErr err;
+       
+       if (!PyArg_ParseTuple(args, "O&O&O&",
+                       PyMac_GetFSSpec, &fss, PyMac_GetOSType, &creator, PyMac_GetOSType, &type))
+               return NULL;
+       if ((err = FSpGetFInfo(&fss, &info)) != noErr)
+               return PyErr_Mac(MacOS_Error, err);
+       info.fdCreator = creator;
+       info.fdType = type;
+       if ((err = FSpSetFInfo(&fss, &info)) != noErr)
+               return PyErr_Mac(MacOS_Error, err);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+#if TARGET_API_MAC_OS8
+/*----------------------------------------------------------------------*/
+/* STDWIN High Level Event interface */
+
+#include <EPPC.h>
+#include <Events.h>
+
+static char accepthle_doc[] = "Get arguments of pending high-level event";
+
+static PyObject *
+MacOS_AcceptHighLevelEvent(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       TargetID sender;
+       unsigned long refcon;
+       Ptr buf;
+       unsigned long len;
+       OSErr err;
+       PyObject *res;
+       
+       buf = NULL;
+       len = 0;
+       err = AcceptHighLevelEvent(&sender, &refcon, buf, &len);
+       if (err == bufferIsSmall) {
+               buf = malloc(len);
+               if (buf == NULL)
+                       return PyErr_NoMemory();
+               err = AcceptHighLevelEvent(&sender, &refcon, buf, &len);
+               if (err != noErr) {
+                       free(buf);
+                       return PyErr_Mac(MacOS_Error, (int)err);
+               }
+       }
+       else if (err != noErr)
+               return PyErr_Mac(MacOS_Error, (int)err);
+       res = Py_BuildValue("s#ls#",
+               (char *)&sender, (int)(sizeof sender), refcon, (char *)buf, (int)len);
+       free(buf);
+       return res;
+}
+#endif
+
+#if !TARGET_API_MAC_OSX
+static char schedparams_doc[] = "Set/return mainloop interrupt check flag, etc";
+
+/*
+** Set scheduler parameters
+*/
+static PyObject *
+MacOS_SchedParams(PyObject *self, PyObject *args)
+{
+       PyMacSchedParams old, new;
+       
+       PyMac_GetSchedParams(&old);
+       new = old;
+       if (!PyArg_ParseTuple(args, "|iiidd", &new.check_interrupt, &new.process_events,
+                       &new.besocial, &new.check_interval, &new.bg_yield))
+               return NULL;
+       PyMac_SetSchedParams(&new);
+       return Py_BuildValue("iiidd", old.check_interrupt, old.process_events,
+                       old.besocial, old.check_interval, old.bg_yield);
+}
+
+static char appswitch_doc[] = "Obsolete, use SchedParams";
+
+/* Obsolete, for backward compatability */
+static PyObject *
+MacOS_EnableAppswitch(PyObject *self, PyObject *args)
+{
+       int new, old;
+       PyMacSchedParams schp;
+       
+       if (!PyArg_ParseTuple(args, "i", &new))
+               return NULL;
+       PyMac_GetSchedParams(&schp);
+       if ( schp.process_events )
+               old = 1;
+       else if ( schp.check_interrupt )
+               old = 0;
+       else
+               old = -1;
+       if ( new > 0 ) {
+               schp.process_events = mDownMask|keyDownMask|osMask;
+               schp.check_interrupt = 1;
+       } else if ( new == 0 ) {
+               schp.process_events = 0;
+               schp.check_interrupt = 1;
+       } else {
+               schp.process_events = 0;
+               schp.check_interrupt = 0;
+       }
+       PyMac_SetSchedParams(&schp);
+       return Py_BuildValue("i", old);
+}
+
+static char setevh_doc[] = "Set python event handler to be called in mainloop";
+
+static PyObject *
+MacOS_SetEventHandler(self, args)
+       PyObject *self;
+       PyObject *args;
+{
+       PyObject *evh = NULL;
+       
+       if (!PyArg_ParseTuple(args, "|O", &evh))
+               return NULL;
+       if (evh == Py_None)
+               evh = NULL;
+       if ( evh && !PyCallable_Check(evh) ) {
+               PyErr_SetString(PyExc_ValueError, "SetEventHandler argument must be callable");
+               return NULL;
+       }
+       if ( !PyMac_SetEventHandler(evh) )
+               return NULL;
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char handleev_doc[] = "Pass event to other interested parties like sioux";
+
+static PyObject *
+MacOS_HandleEvent(PyObject *self, PyObject *args)
+{
+       EventRecord ev;
+       
+       if (!PyArg_ParseTuple(args, "O&", PyMac_GetEventRecord, &ev))
+               return NULL;
+       PyMac_HandleEventIntern(&ev);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+#endif /* !TARGET_API_MAC_OSX */
+
+static char geterr_doc[] = "Convert OSErr number to string";
+
+static PyObject *
+MacOS_GetErrorString(PyObject *self, PyObject *args)
+{
+       int errn;
+       
+       if (!PyArg_ParseTuple(args, "i", &errn))
+               return NULL;
+       return Py_BuildValue("s", PyMac_StrError(errn));
+}
+
+static char splash_doc[] = "Open a splash-screen dialog by resource-id (0=close)";
+
+static PyObject *
+MacOS_splash(PyObject *self, PyObject *args)
+{
+       int resid = -1;
+       static DialogPtr curdialog = NULL;
+       DialogPtr olddialog;
+       WindowRef theWindow;
+       CGrafPtr thePort;
+#if 0
+       short xpos, ypos, width, height, swidth, sheight;
+#endif
+       
+       if (!PyArg_ParseTuple(args, "|i", &resid))
+               return NULL;
+       olddialog = curdialog;
+       curdialog = NULL;
+               
+       if ( resid != -1 ) {
+               curdialog = GetNewDialog(resid, NULL, (WindowPtr)-1);
+               if ( curdialog ) {
+                       theWindow = GetDialogWindow(curdialog);
+                       thePort = GetWindowPort(theWindow);
+#if 0
+                       width = thePort->portRect.right - thePort->portRect.left;
+                       height = thePort->portRect.bottom - thePort->portRect.top;
+                       swidth = qd.screenBits.bounds.right - qd.screenBits.bounds.left;
+                       sheight = qd.screenBits.bounds.bottom - qd.screenBits.bounds.top - LMGetMBarHeight();
+                       xpos = (swidth-width)/2;
+                       ypos = (sheight-height)/5 + LMGetMBarHeight();
+                       MoveWindow(theWindow, xpos, ypos, 0);
+                       ShowWindow(theWindow);
+#endif
+                       DrawDialog(curdialog);
+               }
+       }
+       if (olddialog)
+               DisposeDialog(olddialog);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char DebugStr_doc[] = "Switch to low-level debugger with a message";
+
+static PyObject *
+MacOS_DebugStr(PyObject *self, PyObject *args)
+{
+       Str255 message;
+       PyObject *object = 0;
+       
+       if (!PyArg_ParseTuple(args, "O&|O", PyMac_GetStr255, message, &object))
+               return NULL;
+       DebugStr(message);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char SysBeep_doc[] = "BEEEEEP!!!";
+
+static PyObject *
+MacOS_SysBeep(PyObject *self, PyObject *args)
+{
+       int duration = 6;
+       
+       if (!PyArg_ParseTuple(args, "|i", &duration))
+               return NULL;
+       SysBeep(duration);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char GetTicks_doc[] = "Return number of ticks since bootup";
+
+static PyObject *
+MacOS_GetTicks(PyObject *self, PyObject *args)
+{
+       return Py_BuildValue("i", (int)TickCount());
+}
+
+static char openrf_doc[] = "Open resource fork of a file";
+
+static PyObject *
+MacOS_openrf(PyObject *self, PyObject *args)
+{
+       OSErr err;
+       char *mode = "r";
+       FSSpec fss;
+       SignedByte permission = 1;
+       rfobject *fp;
+               
+       if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSSpec, &fss, &mode))
+               return NULL;
+       while (*mode) {
+               switch (*mode++) {
+               case '*': break;
+               case 'r': permission = 1; break;
+               case 'w': permission = 2; break;
+               case 'b': break;
+               default:
+                       PyErr_BadArgument();
+                       return NULL;
+               }
+       }
+       
+       if ( (fp = newrfobject()) == NULL )
+               return NULL;
+               
+       err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum);
+       
+       if ( err == fnfErr ) {
+               /* In stead of doing complicated things here to get creator/type
+               ** correct we let the standard i/o library handle it
+               */
+               FILE *tfp;
+               char pathname[257];
+               
+               if ( err=PyMac_GetFullPath(&fss, pathname) ) {
+                       PyMac_Error(err);
+                       Py_DECREF(fp);
+                       return NULL;
+               }
+               
+               if ( (tfp = fopen(pathname, "w")) == NULL ) {
+                       PyMac_Error(fnfErr); /* What else... */
+                       Py_DECREF(fp);
+                       return NULL;
+               }
+               fclose(tfp);
+               err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum);
+       }
+       if ( err ) {
+               Py_DECREF(fp);
+               PyMac_Error(err);
+               return NULL;
+       }
+       fp->isclosed = 0;
+       return (PyObject *)fp;
+}
+
+#if !TARGET_API_MAC_OSX
+static char FreeMem_doc[] = "Return the total amount of free space in the heap";
+
+static PyObject *
+MacOS_FreeMem(PyObject *self, PyObject *args)
+{
+       long rv;
+               
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       rv = FreeMem();
+       return Py_BuildValue("l", rv);
+}
+
+static char MaxBlock_doc[] = "Return the largest contiguous block of free space in the heap";
+
+static PyObject *
+MacOS_MaxBlock(PyObject *self, PyObject *args)
+{
+       long rv;
+               
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       rv = MaxBlock();
+       return Py_BuildValue("l", rv);
+}
+
+static char CompactMem_doc[] = "(wanted size)->actual largest block after compacting";
+
+static PyObject *
+MacOS_CompactMem(PyObject *self, PyObject *args)
+{
+       long value;
+       long rv;
+               
+       if (!PyArg_ParseTuple(args, "l", &value))
+               return NULL;
+       rv = CompactMem(value);
+       return Py_BuildValue("l", rv);
+}
+
+static char KeepConsole_doc[] = "(flag) Keep console open 0:never, 1:on output 2:on error, 3:always";
+
+static PyObject *
+MacOS_KeepConsole(PyObject *self, PyObject *args)
+{
+       int value;
+       
+       if (!PyArg_ParseTuple(args, "i", &value))
+               return NULL;
+       PyMac_options.keep_console = value;
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static char OutputSeen_doc[] = "Call to reset the 'unseen output' flag for the keep-console-open option";
+
+static PyObject *
+MacOS_OutputSeen(PyObject *self, PyObject *args)
+{
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       PyMac_OutputSeen();
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+#endif /* !TARGET_API_MAC_OSX */
+
+static PyMethodDef MacOS_Methods[] = {
+#if TARGET_API_MAC_OS8
+       {"AcceptHighLevelEvent",        MacOS_AcceptHighLevelEvent, 1,  accepthle_doc},
+#endif
+       {"GetCreatorAndType",           MacOS_GetCreatorAndType, 1,     getcrtp_doc},
+       {"SetCreatorAndType",           MacOS_SetCreatorAndType, 1,     setcrtp_doc},
+#if !TARGET_API_MAC_OSX
+       {"SchedParams",                 MacOS_SchedParams,      1,      schedparams_doc},
+       {"EnableAppswitch",             MacOS_EnableAppswitch,  1,      appswitch_doc},
+       {"SetEventHandler",             MacOS_SetEventHandler,  1,      setevh_doc},
+       {"HandleEvent",                 MacOS_HandleEvent,      1,      handleev_doc},
+#endif
+       {"GetErrorString",              MacOS_GetErrorString,   1,      geterr_doc},
+       {"openrf",                      MacOS_openrf,           1,      openrf_doc},
+       {"splash",                      MacOS_splash,           1,      splash_doc},
+       {"DebugStr",                    MacOS_DebugStr,         1,      DebugStr_doc},
+       {"GetTicks",                    MacOS_GetTicks,         1,      GetTicks_doc},
+       {"SysBeep",                     MacOS_SysBeep,          1,      SysBeep_doc},
+#if !TARGET_API_MAC_OSX
+       {"FreeMem",                     MacOS_FreeMem,          1,      FreeMem_doc},
+       {"MaxBlock",            MacOS_MaxBlock,         1,      MaxBlock_doc},
+       {"CompactMem",          MacOS_CompactMem,       1,      CompactMem_doc},
+       {"KeepConsole",         MacOS_KeepConsole,      1,      KeepConsole_doc},
+       {"OutputSeen",          MacOS_OutputSeen,       1,      OutputSeen_doc},
+#endif
+       {NULL,                          NULL}            /* Sentinel */
+};
+
+
+void
+initMacOS()
+{
+       PyObject *m, *d;
+       
+       m = Py_InitModule("MacOS", MacOS_Methods);
+       d = PyModule_GetDict(m);
+       
+       /* Initialize MacOS.Error exception */
+       MacOS_Error = PyMac_GetOSErrException();
+       if (MacOS_Error == NULL || PyDict_SetItemString(d, "Error", MacOS_Error) != 0)
+               return;
+       Rftype.ob_type = &PyType_Type;
+       Py_INCREF(&Rftype);
+       if (PyDict_SetItemString(d, "ResourceForkType", (PyObject *)&Rftype) != 0)
+               return;
+       /*
+       ** This is a hack: the following constant added to the id() of a string
+       ** object gives you the address of the data. Unfortunately, it is needed for
+       ** some of the image and sound processing interfaces on the mac:-(
+       */
+       {
+               PyStringObject *p = 0;
+               long off = (long)&(p->ob_sval[0]);
+               
+               if( PyDict_SetItemString(d, "string_id_to_buffer", Py_BuildValue("i", off)) != 0)
+                       return;
+       }
+       if (PyDict_SetItemString(d, "AppearanceCompliant", 
+                               Py_BuildValue("i", PyMac_AppearanceCompliant)) != 0)
+               return;
+#if TARGET_API_MAC_OSX
+#define PY_RUNTIMEMODEL "macho"
+#elif TARGET_API_MAC_OS8
+#define PY_RUNTIMEMODEL "ppc"
+#elif TARGET_API_MAC_CARBON
+#define PY_RUNTIMEMODEL "carbon"
+#else
+#error "None of the TARGET_API_MAC_XXX I know about is set"
+#endif
+       if (PyDict_SetItemString(d, "runtimemodel", 
+                               Py_BuildValue("s", PY_RUNTIMEMODEL)) != 0)
+               return;
+}
+
diff --git a/Mac/Modules/menu/Menumodule.c b/Mac/Modules/menu/Menumodule.c
new file mode 100644 (file)
index 0000000..f3c2df9
--- /dev/null
@@ -0,0 +1,2558 @@
+
+/* ========================== Module Menu =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Devices.h> /* Defines OpenDeskAcc in universal headers */
+#include <Menus.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+
+extern PyObject *_MenuObj_New(MenuHandle);
+extern int _MenuObj_Convert(PyObject *, MenuHandle *);
+
+#define MenuObj_New _MenuObj_New
+#define MenuObj_Convert _MenuObj_Convert 
+#endif
+
+#if !ACCESSOR_CALLS_ARE_FUNCTIONS
+#define GetMenuID(menu) ((*(menu))->menuID)
+#define GetMenuWidth(menu) ((*(menu))->menuWidth)
+#define GetMenuHeight(menu) ((*(menu))->menuHeight)
+
+#define SetMenuID(menu, id) ((*(menu))->menuID = (id))
+#define SetMenuWidth(menu, width) ((*(menu))->menuWidth = (width))
+#define SetMenuHeight(menu, height) ((*(menu))->menuHeight = (height))
+#endif
+
+#define as_Menu(h) ((MenuHandle)h)
+#define as_Resource(h) ((Handle)h)
+
+static PyObject *Menu_Error;
+
+/* ------------------------ Object type Menu ------------------------ */
+
+PyTypeObject Menu_Type;
+
+#define MenuObj_Check(x) ((x)->ob_type == &Menu_Type)
+
+typedef struct MenuObject {
+       PyObject_HEAD
+       MenuHandle ob_itself;
+} MenuObject;
+
+PyObject *MenuObj_New(MenuHandle itself)
+{
+       MenuObject *it;
+       it = PyObject_NEW(MenuObject, &Menu_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+MenuObj_Convert(PyObject *v, MenuHandle *p_itself)
+{
+       if (!MenuObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "Menu required");
+               return 0;
+       }
+       *p_itself = ((MenuObject *)v)->ob_itself;
+       return 1;
+}
+
+static void MenuObj_dealloc(MenuObject *self)
+{
+       /* Cleanup of self->ob_itself goes here */
+       PyMem_DEL(self);
+}
+
+static PyObject *MenuObj_DisposeMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DisposeMenu(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_CalcMenuSize(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       CalcMenuSize(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_CountMenuItems(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CountMenuItems(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_CountMItems(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CountMItems(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+#endif
+
+static PyObject *MenuObj_GetMenuFont(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       SInt16 outFontID;
+       UInt16 outFontSize;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMenuFont(_self->ob_itself,
+                          &outFontID,
+                          &outFontSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("hH",
+                            outFontID,
+                            outFontSize);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuFont(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       SInt16 inFontID;
+       UInt16 inFontSize;
+       if (!PyArg_ParseTuple(_args, "hH",
+                             &inFontID,
+                             &inFontSize))
+               return NULL;
+       _err = SetMenuFont(_self->ob_itself,
+                          inFontID,
+                          inFontSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuExcludesMarkColumn(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMenuExcludesMarkColumn(_self->ob_itself);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuExcludesMarkColumn(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Boolean excludesMark;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &excludesMark))
+               return NULL;
+       _err = SetMenuExcludesMarkColumn(_self->ob_itself,
+                                        excludesMark);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_MacAppendMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Str255 data;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetStr255, data))
+               return NULL;
+       MacAppendMenu(_self->ob_itself,
+                     data);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_InsertResMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ResType theType;
+       short afterItem;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetOSType, &theType,
+                             &afterItem))
+               return NULL;
+       InsertResMenu(_self->ob_itself,
+                     theType,
+                     afterItem);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_AppendResMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ResType theType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       AppendResMenu(_self->ob_itself,
+                     theType);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_MacInsertMenuItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Str255 itemString;
+       short afterItem;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetStr255, itemString,
+                             &afterItem))
+               return NULL;
+       MacInsertMenuItem(_self->ob_itself,
+                         itemString,
+                         afterItem);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_DeleteMenuItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       DeleteMenuItem(_self->ob_itself,
+                      item);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_InsertFontResMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short afterItem;
+       short scriptFilter;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &afterItem,
+                             &scriptFilter))
+               return NULL;
+       InsertFontResMenu(_self->ob_itself,
+                         afterItem,
+                         scriptFilter);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_InsertIntlResMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ResType theType;
+       short afterItem;
+       short scriptFilter;
+       if (!PyArg_ParseTuple(_args, "O&hh",
+                             PyMac_GetOSType, &theType,
+                             &afterItem,
+                             &scriptFilter))
+               return NULL;
+       InsertIntlResMenu(_self->ob_itself,
+                         theType,
+                         afterItem,
+                         scriptFilter);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_AppendMenuItemText(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Str255 inString;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetStr255, inString))
+               return NULL;
+       _err = AppendMenuItemText(_self->ob_itself,
+                                 inString);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_InsertMenuItemText(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       Str255 inString;
+       MenuItemIndex afterItem;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetStr255, inString,
+                             &afterItem))
+               return NULL;
+       _err = InsertMenuItemText(_self->ob_itself,
+                                 inString,
+                                 afterItem);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_PopUpMenuSelect(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       short top;
+       short left;
+       short popUpItem;
+       if (!PyArg_ParseTuple(_args, "hhh",
+                             &top,
+                             &left,
+                             &popUpItem))
+               return NULL;
+       _rv = PopUpMenuSelect(_self->ob_itself,
+                             top,
+                             left,
+                             popUpItem);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MenuObj_MacInsertMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuID beforeID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &beforeID))
+               return NULL;
+       MacInsertMenu(_self->ob_itself,
+                     beforeID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_MacCheckMenuItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       Boolean checked;
+       if (!PyArg_ParseTuple(_args, "hb",
+                             &item,
+                             &checked))
+               return NULL;
+       MacCheckMenuItem(_self->ob_itself,
+                        item,
+                        checked);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_CheckItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       Boolean checked;
+       if (!PyArg_ParseTuple(_args, "hb",
+                             &item,
+                             &checked))
+               return NULL;
+       CheckItem(_self->ob_itself,
+                 item,
+                 checked);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *MenuObj_SetMenuItemText(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       Str255 itemString;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &item,
+                             PyMac_GetStr255, itemString))
+               return NULL;
+       SetMenuItemText(_self->ob_itself,
+                       item,
+                       itemString);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemText(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       Str255 itemString;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       GetMenuItemText(_self->ob_itself,
+                       item,
+                       itemString);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildStr255, itemString);
+       return _res;
+}
+
+static PyObject *MenuObj_SetItemMark(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       CharParameter markChar;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &item,
+                             &markChar))
+               return NULL;
+       SetItemMark(_self->ob_itself,
+                   item,
+                   markChar);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetItemMark(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       CharParameter markChar;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       GetItemMark(_self->ob_itself,
+                   item,
+                   &markChar);
+       _res = Py_BuildValue("h",
+                            markChar);
+       return _res;
+}
+
+static PyObject *MenuObj_SetItemCmd(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       CharParameter cmdChar;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &item,
+                             &cmdChar))
+               return NULL;
+       SetItemCmd(_self->ob_itself,
+                  item,
+                  cmdChar);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetItemCmd(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       CharParameter cmdChar;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       GetItemCmd(_self->ob_itself,
+                  item,
+                  &cmdChar);
+       _res = Py_BuildValue("h",
+                            cmdChar);
+       return _res;
+}
+
+static PyObject *MenuObj_SetItemIcon(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       short iconIndex;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &item,
+                             &iconIndex))
+               return NULL;
+       SetItemIcon(_self->ob_itself,
+                   item,
+                   iconIndex);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetItemIcon(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       short iconIndex;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       GetItemIcon(_self->ob_itself,
+                   item,
+                   &iconIndex);
+       _res = Py_BuildValue("h",
+                            iconIndex);
+       return _res;
+}
+
+static PyObject *MenuObj_SetItemStyle(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       StyleParameter chStyle;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &item,
+                             &chStyle))
+               return NULL;
+       SetItemStyle(_self->ob_itself,
+                    item,
+                    chStyle);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetItemStyle(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       Style chStyle;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       GetItemStyle(_self->ob_itself,
+                    item,
+                    &chStyle);
+       _res = Py_BuildValue("b",
+                            chStyle);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_DisableItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       DisableItem(_self->ob_itself,
+                   item);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_EnableItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       EnableItem(_self->ob_itself,
+                  item);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *MenuObj_SetMenuItemCommandID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       MenuCommand inCommandID;
+       if (!PyArg_ParseTuple(_args, "hl",
+                             &inItem,
+                             &inCommandID))
+               return NULL;
+       _err = SetMenuItemCommandID(_self->ob_itself,
+                                   inItem,
+                                   inCommandID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemCommandID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       MenuCommand outCommandID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemCommandID(_self->ob_itself,
+                                   inItem,
+                                   &outCommandID);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outCommandID);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuItemModifiers(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       UInt8 inModifiers;
+       if (!PyArg_ParseTuple(_args, "hb",
+                             &inItem,
+                             &inModifiers))
+               return NULL;
+       _err = SetMenuItemModifiers(_self->ob_itself,
+                                   inItem,
+                                   inModifiers);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemModifiers(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       UInt8 outModifiers;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemModifiers(_self->ob_itself,
+                                   inItem,
+                                   &outModifiers);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("b",
+                            outModifiers);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuItemIconHandle(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       UInt8 inIconType;
+       Handle inIconHandle;
+       if (!PyArg_ParseTuple(_args, "hbO&",
+                             &inItem,
+                             &inIconType,
+                             ResObj_Convert, &inIconHandle))
+               return NULL;
+       _err = SetMenuItemIconHandle(_self->ob_itself,
+                                    inItem,
+                                    inIconType,
+                                    inIconHandle);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemIconHandle(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       UInt8 outIconType;
+       Handle outIconHandle;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemIconHandle(_self->ob_itself,
+                                    inItem,
+                                    &outIconType,
+                                    &outIconHandle);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("bO&",
+                            outIconType,
+                            ResObj_New, outIconHandle);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuItemTextEncoding(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       TextEncoding inScriptID;
+       if (!PyArg_ParseTuple(_args, "hl",
+                             &inItem,
+                             &inScriptID))
+               return NULL;
+       _err = SetMenuItemTextEncoding(_self->ob_itself,
+                                      inItem,
+                                      inScriptID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemTextEncoding(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       TextEncoding outScriptID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemTextEncoding(_self->ob_itself,
+                                      inItem,
+                                      &outScriptID);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outScriptID);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuItemHierarchicalID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       MenuID inHierID;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &inItem,
+                             &inHierID))
+               return NULL;
+       _err = SetMenuItemHierarchicalID(_self->ob_itself,
+                                        inItem,
+                                        inHierID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemHierarchicalID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       MenuID outHierID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemHierarchicalID(_self->ob_itself,
+                                        inItem,
+                                        &outHierID);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            outHierID);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuItemFontID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       SInt16 inFontID;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &inItem,
+                             &inFontID))
+               return NULL;
+       _err = SetMenuItemFontID(_self->ob_itself,
+                                inItem,
+                                inFontID);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemFontID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       SInt16 outFontID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemFontID(_self->ob_itself,
+                                inItem,
+                                &outFontID);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            outFontID);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuItemRefCon(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       UInt32 inRefCon;
+       if (!PyArg_ParseTuple(_args, "hl",
+                             &inItem,
+                             &inRefCon))
+               return NULL;
+       _err = SetMenuItemRefCon(_self->ob_itself,
+                                inItem,
+                                inRefCon);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemRefCon(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       UInt32 outRefCon;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemRefCon(_self->ob_itself,
+                                inItem,
+                                &outRefCon);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outRefCon);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_SetMenuItemRefCon2(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       UInt32 inRefCon2;
+       if (!PyArg_ParseTuple(_args, "hl",
+                             &inItem,
+                             &inRefCon2))
+               return NULL;
+       _err = SetMenuItemRefCon2(_self->ob_itself,
+                                 inItem,
+                                 inRefCon2);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_GetMenuItemRefCon2(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       UInt32 outRefCon2;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemRefCon2(_self->ob_itself,
+                                 inItem,
+                                 &outRefCon2);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outRefCon2);
+       return _res;
+}
+#endif
+
+static PyObject *MenuObj_SetMenuItemKeyGlyph(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       SInt16 inGlyph;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &inItem,
+                             &inGlyph))
+               return NULL;
+       _err = SetMenuItemKeyGlyph(_self->ob_itself,
+                                  inItem,
+                                  inGlyph);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuItemKeyGlyph(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SInt16 inItem;
+       SInt16 outGlyph;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &inItem))
+               return NULL;
+       _err = GetMenuItemKeyGlyph(_self->ob_itself,
+                                  inItem,
+                                  &outGlyph);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            outGlyph);
+       return _res;
+}
+
+static PyObject *MenuObj_MacEnableMenuItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuItemIndex item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       MacEnableMenuItem(_self->ob_itself,
+                         item);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_DisableMenuItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuItemIndex item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       DisableMenuItem(_self->ob_itself,
+                       item);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_IsMenuItemEnabled(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       MenuItemIndex item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       _rv = IsMenuItemEnabled(_self->ob_itself,
+                               item);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MenuObj_EnableMenuItemIcon(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuItemIndex item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       EnableMenuItemIcon(_self->ob_itself,
+                          item);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_DisableMenuItemIcon(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuItemIndex item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       DisableMenuItemIcon(_self->ob_itself,
+                           item);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_IsMenuItemIconEnabled(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       MenuItemIndex item;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       _rv = IsMenuItemIconEnabled(_self->ob_itself,
+                                   item);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_GetMenuItemPropertyAttributes(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuItemIndex item;
+       OSType propertyCreator;
+       OSType propertyTag;
+       UInt32 attributes;
+       if (!PyArg_ParseTuple(_args, "hO&O&",
+                             &item,
+                             PyMac_GetOSType, &propertyCreator,
+                             PyMac_GetOSType, &propertyTag))
+               return NULL;
+       _err = GetMenuItemPropertyAttributes(_self->ob_itself,
+                                            item,
+                                            propertyCreator,
+                                            propertyTag,
+                                            &attributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            attributes);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_ChangeMenuItemPropertyAttributes(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuItemIndex item;
+       OSType propertyCreator;
+       OSType propertyTag;
+       UInt32 attributesToSet;
+       UInt32 attributesToClear;
+       if (!PyArg_ParseTuple(_args, "hO&O&ll",
+                             &item,
+                             PyMac_GetOSType, &propertyCreator,
+                             PyMac_GetOSType, &propertyTag,
+                             &attributesToSet,
+                             &attributesToClear))
+               return NULL;
+       _err = ChangeMenuItemPropertyAttributes(_self->ob_itself,
+                                               item,
+                                               propertyCreator,
+                                               propertyTag,
+                                               attributesToSet,
+                                               attributesToClear);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_GetMenuAttributes(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuAttributes outAttributes;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMenuAttributes(_self->ob_itself,
+                                &outAttributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outAttributes);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_ChangeMenuAttributes(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuAttributes setTheseAttributes;
+       MenuAttributes clearTheseAttributes;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &setTheseAttributes,
+                             &clearTheseAttributes))
+               return NULL;
+       _err = ChangeMenuAttributes(_self->ob_itself,
+                                   setTheseAttributes,
+                                   clearTheseAttributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_GetMenuItemAttributes(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuItemIndex item;
+       MenuItemAttributes outAttributes;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       _err = GetMenuItemAttributes(_self->ob_itself,
+                                    item,
+                                    &outAttributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outAttributes);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_ChangeMenuItemAttributes(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuItemIndex item;
+       MenuItemAttributes setTheseAttributes;
+       MenuItemAttributes clearTheseAttributes;
+       if (!PyArg_ParseTuple(_args, "hll",
+                             &item,
+                             &setTheseAttributes,
+                             &clearTheseAttributes))
+               return NULL;
+       _err = ChangeMenuItemAttributes(_self->ob_itself,
+                                       item,
+                                       setTheseAttributes,
+                                       clearTheseAttributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_DisableAllMenuItems(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DisableAllMenuItems(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_EnableAllMenuItems(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       EnableAllMenuItems(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_MenuHasEnabledItems(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MenuHasEnabledItems(_self->ob_itself);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_CountMenuItemsWithCommandID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ItemCount _rv;
+       MenuCommand commandID;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &commandID))
+               return NULL;
+       _rv = CountMenuItemsWithCommandID(_self->ob_itself,
+                                         commandID);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_GetIndMenuItemWithCommandID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuCommand commandID;
+       UInt32 itemIndex;
+       MenuHandle outMenu;
+       MenuItemIndex outIndex;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &commandID,
+                             &itemIndex))
+               return NULL;
+       _err = GetIndMenuItemWithCommandID(_self->ob_itself,
+                                          commandID,
+                                          itemIndex,
+                                          &outMenu,
+                                          &outIndex);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&h",
+                            MenuObj_New, outMenu,
+                            outIndex);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_EnableMenuCommand(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuCommand commandID;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &commandID))
+               return NULL;
+       EnableMenuCommand(_self->ob_itself,
+                         commandID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_DisableMenuCommand(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuCommand commandID;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &commandID))
+               return NULL;
+       DisableMenuCommand(_self->ob_itself,
+                          commandID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_IsMenuCommandEnabled(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       MenuCommand commandID;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &commandID))
+               return NULL;
+       _rv = IsMenuCommandEnabled(_self->ob_itself,
+                                  commandID);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_GetMenuCommandPropertySize(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuCommand commandID;
+       OSType propertyCreator;
+       OSType propertyTag;
+       ByteCount size;
+       if (!PyArg_ParseTuple(_args, "lO&O&",
+                             &commandID,
+                             PyMac_GetOSType, &propertyCreator,
+                             PyMac_GetOSType, &propertyTag))
+               return NULL;
+       _err = GetMenuCommandPropertySize(_self->ob_itself,
+                                         commandID,
+                                         propertyCreator,
+                                         propertyTag,
+                                         &size);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            size);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_RemoveMenuCommandProperty(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuCommand commandID;
+       OSType propertyCreator;
+       OSType propertyTag;
+       if (!PyArg_ParseTuple(_args, "lO&O&",
+                             &commandID,
+                             PyMac_GetOSType, &propertyCreator,
+                             PyMac_GetOSType, &propertyTag))
+               return NULL;
+       _err = RemoveMenuCommandProperty(_self->ob_itself,
+                                        commandID,
+                                        propertyCreator,
+                                        propertyTag);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_CreateStandardFontMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuItemIndex afterItem;
+       MenuID firstHierMenuID;
+       OptionBits options;
+       ItemCount outHierMenuCount;
+       if (!PyArg_ParseTuple(_args, "hhl",
+                             &afterItem,
+                             &firstHierMenuID,
+                             &options))
+               return NULL;
+       _err = CreateStandardFontMenu(_self->ob_itself,
+                                     afterItem,
+                                     firstHierMenuID,
+                                     options,
+                                     &outHierMenuCount);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outHierMenuCount);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_UpdateStandardFontMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       ItemCount outHierMenuCount;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = UpdateStandardFontMenu(_self->ob_itself,
+                                     &outHierMenuCount);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            outHierMenuCount);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *MenuObj_GetFontFamilyFromMenuSelection(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuItemIndex item;
+       FMFontFamily outFontFamily;
+       FMFontStyle outStyle;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &item))
+               return NULL;
+       _err = GetFontFamilyFromMenuSelection(_self->ob_itself,
+                                             item,
+                                             &outFontFamily,
+                                             &outStyle);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("hh",
+                            outFontFamily,
+                            outStyle);
+       return _res;
+}
+#endif
+
+static PyObject *MenuObj_GetMenuID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuID _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMenuID(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuWidth(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMenuWidth(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MenuObj_GetMenuHeight(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMenuHeight(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuID(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuID menuID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &menuID))
+               return NULL;
+       SetMenuID(_self->ob_itself,
+                 menuID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuWidth(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 width;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &width))
+               return NULL;
+       SetMenuWidth(_self->ob_itself,
+                    width);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_SetMenuHeight(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       SInt16 height;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &height))
+               return NULL;
+       SetMenuHeight(_self->ob_itself,
+                     height);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_as_Resource(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = as_Resource(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MenuObj_AppendMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Str255 data;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetStr255, data))
+               return NULL;
+       AppendMenu(_self->ob_itself,
+                  data);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_InsertMenu(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short beforeID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &beforeID))
+               return NULL;
+       InsertMenu(_self->ob_itself,
+                  beforeID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_InsertMenuItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Str255 itemString;
+       short afterItem;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetStr255, itemString,
+                             &afterItem))
+               return NULL;
+       InsertMenuItem(_self->ob_itself,
+                      itemString,
+                      afterItem);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_EnableMenuItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UInt16 item;
+       if (!PyArg_ParseTuple(_args, "H",
+                             &item))
+               return NULL;
+       EnableMenuItem(_self->ob_itself,
+                      item);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MenuObj_CheckMenuItem(MenuObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short item;
+       Boolean checked;
+       if (!PyArg_ParseTuple(_args, "hb",
+                             &item,
+                             &checked))
+               return NULL;
+       CheckMenuItem(_self->ob_itself,
+                     item,
+                     checked);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyMethodDef MenuObj_methods[] = {
+       {"DisposeMenu", (PyCFunction)MenuObj_DisposeMenu, 1,
+        "() -> None"},
+       {"CalcMenuSize", (PyCFunction)MenuObj_CalcMenuSize, 1,
+        "() -> None"},
+       {"CountMenuItems", (PyCFunction)MenuObj_CountMenuItems, 1,
+        "() -> (short _rv)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"CountMItems", (PyCFunction)MenuObj_CountMItems, 1,
+        "() -> (short _rv)"},
+#endif
+       {"GetMenuFont", (PyCFunction)MenuObj_GetMenuFont, 1,
+        "() -> (SInt16 outFontID, UInt16 outFontSize)"},
+       {"SetMenuFont", (PyCFunction)MenuObj_SetMenuFont, 1,
+        "(SInt16 inFontID, UInt16 inFontSize) -> None"},
+       {"GetMenuExcludesMarkColumn", (PyCFunction)MenuObj_GetMenuExcludesMarkColumn, 1,
+        "() -> (Boolean _rv)"},
+       {"SetMenuExcludesMarkColumn", (PyCFunction)MenuObj_SetMenuExcludesMarkColumn, 1,
+        "(Boolean excludesMark) -> None"},
+       {"MacAppendMenu", (PyCFunction)MenuObj_MacAppendMenu, 1,
+        "(Str255 data) -> None"},
+       {"InsertResMenu", (PyCFunction)MenuObj_InsertResMenu, 1,
+        "(ResType theType, short afterItem) -> None"},
+       {"AppendResMenu", (PyCFunction)MenuObj_AppendResMenu, 1,
+        "(ResType theType) -> None"},
+       {"MacInsertMenuItem", (PyCFunction)MenuObj_MacInsertMenuItem, 1,
+        "(Str255 itemString, short afterItem) -> None"},
+       {"DeleteMenuItem", (PyCFunction)MenuObj_DeleteMenuItem, 1,
+        "(short item) -> None"},
+       {"InsertFontResMenu", (PyCFunction)MenuObj_InsertFontResMenu, 1,
+        "(short afterItem, short scriptFilter) -> None"},
+       {"InsertIntlResMenu", (PyCFunction)MenuObj_InsertIntlResMenu, 1,
+        "(ResType theType, short afterItem, short scriptFilter) -> None"},
+       {"AppendMenuItemText", (PyCFunction)MenuObj_AppendMenuItemText, 1,
+        "(Str255 inString) -> None"},
+       {"InsertMenuItemText", (PyCFunction)MenuObj_InsertMenuItemText, 1,
+        "(Str255 inString, MenuItemIndex afterItem) -> None"},
+       {"PopUpMenuSelect", (PyCFunction)MenuObj_PopUpMenuSelect, 1,
+        "(short top, short left, short popUpItem) -> (long _rv)"},
+       {"MacInsertMenu", (PyCFunction)MenuObj_MacInsertMenu, 1,
+        "(MenuID beforeID) -> None"},
+       {"MacCheckMenuItem", (PyCFunction)MenuObj_MacCheckMenuItem, 1,
+        "(short item, Boolean checked) -> None"},
+
+#if !TARGET_API_MAC_CARBON
+       {"CheckItem", (PyCFunction)MenuObj_CheckItem, 1,
+        "(short item, Boolean checked) -> None"},
+#endif
+       {"SetMenuItemText", (PyCFunction)MenuObj_SetMenuItemText, 1,
+        "(short item, Str255 itemString) -> None"},
+       {"GetMenuItemText", (PyCFunction)MenuObj_GetMenuItemText, 1,
+        "(short item) -> (Str255 itemString)"},
+       {"SetItemMark", (PyCFunction)MenuObj_SetItemMark, 1,
+        "(short item, CharParameter markChar) -> None"},
+       {"GetItemMark", (PyCFunction)MenuObj_GetItemMark, 1,
+        "(short item) -> (CharParameter markChar)"},
+       {"SetItemCmd", (PyCFunction)MenuObj_SetItemCmd, 1,
+        "(short item, CharParameter cmdChar) -> None"},
+       {"GetItemCmd", (PyCFunction)MenuObj_GetItemCmd, 1,
+        "(short item) -> (CharParameter cmdChar)"},
+       {"SetItemIcon", (PyCFunction)MenuObj_SetItemIcon, 1,
+        "(short item, short iconIndex) -> None"},
+       {"GetItemIcon", (PyCFunction)MenuObj_GetItemIcon, 1,
+        "(short item) -> (short iconIndex)"},
+       {"SetItemStyle", (PyCFunction)MenuObj_SetItemStyle, 1,
+        "(short item, StyleParameter chStyle) -> None"},
+       {"GetItemStyle", (PyCFunction)MenuObj_GetItemStyle, 1,
+        "(short item) -> (Style chStyle)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"DisableItem", (PyCFunction)MenuObj_DisableItem, 1,
+        "(short item) -> None"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"EnableItem", (PyCFunction)MenuObj_EnableItem, 1,
+        "(short item) -> None"},
+#endif
+       {"SetMenuItemCommandID", (PyCFunction)MenuObj_SetMenuItemCommandID, 1,
+        "(SInt16 inItem, MenuCommand inCommandID) -> None"},
+       {"GetMenuItemCommandID", (PyCFunction)MenuObj_GetMenuItemCommandID, 1,
+        "(SInt16 inItem) -> (MenuCommand outCommandID)"},
+       {"SetMenuItemModifiers", (PyCFunction)MenuObj_SetMenuItemModifiers, 1,
+        "(SInt16 inItem, UInt8 inModifiers) -> None"},
+       {"GetMenuItemModifiers", (PyCFunction)MenuObj_GetMenuItemModifiers, 1,
+        "(SInt16 inItem) -> (UInt8 outModifiers)"},
+       {"SetMenuItemIconHandle", (PyCFunction)MenuObj_SetMenuItemIconHandle, 1,
+        "(SInt16 inItem, UInt8 inIconType, Handle inIconHandle) -> None"},
+       {"GetMenuItemIconHandle", (PyCFunction)MenuObj_GetMenuItemIconHandle, 1,
+        "(SInt16 inItem) -> (UInt8 outIconType, Handle outIconHandle)"},
+       {"SetMenuItemTextEncoding", (PyCFunction)MenuObj_SetMenuItemTextEncoding, 1,
+        "(SInt16 inItem, TextEncoding inScriptID) -> None"},
+       {"GetMenuItemTextEncoding", (PyCFunction)MenuObj_GetMenuItemTextEncoding, 1,
+        "(SInt16 inItem) -> (TextEncoding outScriptID)"},
+       {"SetMenuItemHierarchicalID", (PyCFunction)MenuObj_SetMenuItemHierarchicalID, 1,
+        "(SInt16 inItem, MenuID inHierID) -> None"},
+       {"GetMenuItemHierarchicalID", (PyCFunction)MenuObj_GetMenuItemHierarchicalID, 1,
+        "(SInt16 inItem) -> (MenuID outHierID)"},
+       {"SetMenuItemFontID", (PyCFunction)MenuObj_SetMenuItemFontID, 1,
+        "(SInt16 inItem, SInt16 inFontID) -> None"},
+       {"GetMenuItemFontID", (PyCFunction)MenuObj_GetMenuItemFontID, 1,
+        "(SInt16 inItem) -> (SInt16 outFontID)"},
+       {"SetMenuItemRefCon", (PyCFunction)MenuObj_SetMenuItemRefCon, 1,
+        "(SInt16 inItem, UInt32 inRefCon) -> None"},
+       {"GetMenuItemRefCon", (PyCFunction)MenuObj_GetMenuItemRefCon, 1,
+        "(SInt16 inItem) -> (UInt32 outRefCon)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"SetMenuItemRefCon2", (PyCFunction)MenuObj_SetMenuItemRefCon2, 1,
+        "(SInt16 inItem, UInt32 inRefCon2) -> None"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"GetMenuItemRefCon2", (PyCFunction)MenuObj_GetMenuItemRefCon2, 1,
+        "(SInt16 inItem) -> (UInt32 outRefCon2)"},
+#endif
+       {"SetMenuItemKeyGlyph", (PyCFunction)MenuObj_SetMenuItemKeyGlyph, 1,
+        "(SInt16 inItem, SInt16 inGlyph) -> None"},
+       {"GetMenuItemKeyGlyph", (PyCFunction)MenuObj_GetMenuItemKeyGlyph, 1,
+        "(SInt16 inItem) -> (SInt16 outGlyph)"},
+       {"MacEnableMenuItem", (PyCFunction)MenuObj_MacEnableMenuItem, 1,
+        "(MenuItemIndex item) -> None"},
+       {"DisableMenuItem", (PyCFunction)MenuObj_DisableMenuItem, 1,
+        "(MenuItemIndex item) -> None"},
+       {"IsMenuItemEnabled", (PyCFunction)MenuObj_IsMenuItemEnabled, 1,
+        "(MenuItemIndex item) -> (Boolean _rv)"},
+       {"EnableMenuItemIcon", (PyCFunction)MenuObj_EnableMenuItemIcon, 1,
+        "(MenuItemIndex item) -> None"},
+       {"DisableMenuItemIcon", (PyCFunction)MenuObj_DisableMenuItemIcon, 1,
+        "(MenuItemIndex item) -> None"},
+       {"IsMenuItemIconEnabled", (PyCFunction)MenuObj_IsMenuItemIconEnabled, 1,
+        "(MenuItemIndex item) -> (Boolean _rv)"},
+
+#if TARGET_API_MAC_CARBON
+       {"GetMenuItemPropertyAttributes", (PyCFunction)MenuObj_GetMenuItemPropertyAttributes, 1,
+        "(MenuItemIndex item, OSType propertyCreator, OSType propertyTag) -> (UInt32 attributes)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"ChangeMenuItemPropertyAttributes", (PyCFunction)MenuObj_ChangeMenuItemPropertyAttributes, 1,
+        "(MenuItemIndex item, OSType propertyCreator, OSType propertyTag, UInt32 attributesToSet, UInt32 attributesToClear) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetMenuAttributes", (PyCFunction)MenuObj_GetMenuAttributes, 1,
+        "() -> (MenuAttributes outAttributes)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"ChangeMenuAttributes", (PyCFunction)MenuObj_ChangeMenuAttributes, 1,
+        "(MenuAttributes setTheseAttributes, MenuAttributes clearTheseAttributes) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetMenuItemAttributes", (PyCFunction)MenuObj_GetMenuItemAttributes, 1,
+        "(MenuItemIndex item) -> (MenuItemAttributes outAttributes)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"ChangeMenuItemAttributes", (PyCFunction)MenuObj_ChangeMenuItemAttributes, 1,
+        "(MenuItemIndex item, MenuItemAttributes setTheseAttributes, MenuItemAttributes clearTheseAttributes) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"DisableAllMenuItems", (PyCFunction)MenuObj_DisableAllMenuItems, 1,
+        "() -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"EnableAllMenuItems", (PyCFunction)MenuObj_EnableAllMenuItems, 1,
+        "() -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"MenuHasEnabledItems", (PyCFunction)MenuObj_MenuHasEnabledItems, 1,
+        "() -> (Boolean _rv)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"CountMenuItemsWithCommandID", (PyCFunction)MenuObj_CountMenuItemsWithCommandID, 1,
+        "(MenuCommand commandID) -> (ItemCount _rv)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetIndMenuItemWithCommandID", (PyCFunction)MenuObj_GetIndMenuItemWithCommandID, 1,
+        "(MenuCommand commandID, UInt32 itemIndex) -> (MenuHandle outMenu, MenuItemIndex outIndex)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"EnableMenuCommand", (PyCFunction)MenuObj_EnableMenuCommand, 1,
+        "(MenuCommand commandID) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"DisableMenuCommand", (PyCFunction)MenuObj_DisableMenuCommand, 1,
+        "(MenuCommand commandID) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"IsMenuCommandEnabled", (PyCFunction)MenuObj_IsMenuCommandEnabled, 1,
+        "(MenuCommand commandID) -> (Boolean _rv)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetMenuCommandPropertySize", (PyCFunction)MenuObj_GetMenuCommandPropertySize, 1,
+        "(MenuCommand commandID, OSType propertyCreator, OSType propertyTag) -> (ByteCount size)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"RemoveMenuCommandProperty", (PyCFunction)MenuObj_RemoveMenuCommandProperty, 1,
+        "(MenuCommand commandID, OSType propertyCreator, OSType propertyTag) -> None"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"CreateStandardFontMenu", (PyCFunction)MenuObj_CreateStandardFontMenu, 1,
+        "(MenuItemIndex afterItem, MenuID firstHierMenuID, OptionBits options) -> (ItemCount outHierMenuCount)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"UpdateStandardFontMenu", (PyCFunction)MenuObj_UpdateStandardFontMenu, 1,
+        "() -> (ItemCount outHierMenuCount)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetFontFamilyFromMenuSelection", (PyCFunction)MenuObj_GetFontFamilyFromMenuSelection, 1,
+        "(MenuItemIndex item) -> (FMFontFamily outFontFamily, FMFontStyle outStyle)"},
+#endif
+       {"GetMenuID", (PyCFunction)MenuObj_GetMenuID, 1,
+        "() -> (MenuID _rv)"},
+       {"GetMenuWidth", (PyCFunction)MenuObj_GetMenuWidth, 1,
+        "() -> (SInt16 _rv)"},
+       {"GetMenuHeight", (PyCFunction)MenuObj_GetMenuHeight, 1,
+        "() -> (SInt16 _rv)"},
+       {"SetMenuID", (PyCFunction)MenuObj_SetMenuID, 1,
+        "(MenuID menuID) -> None"},
+       {"SetMenuWidth", (PyCFunction)MenuObj_SetMenuWidth, 1,
+        "(SInt16 width) -> None"},
+       {"SetMenuHeight", (PyCFunction)MenuObj_SetMenuHeight, 1,
+        "(SInt16 height) -> None"},
+       {"as_Resource", (PyCFunction)MenuObj_as_Resource, 1,
+        "() -> (Handle _rv)"},
+       {"AppendMenu", (PyCFunction)MenuObj_AppendMenu, 1,
+        "(Str255 data) -> None"},
+       {"InsertMenu", (PyCFunction)MenuObj_InsertMenu, 1,
+        "(short beforeID) -> None"},
+       {"InsertMenuItem", (PyCFunction)MenuObj_InsertMenuItem, 1,
+        "(Str255 itemString, short afterItem) -> None"},
+       {"EnableMenuItem", (PyCFunction)MenuObj_EnableMenuItem, 1,
+        "(UInt16 item) -> None"},
+       {"CheckMenuItem", (PyCFunction)MenuObj_CheckMenuItem, 1,
+        "(short item, Boolean checked) -> None"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain MenuObj_chain = { MenuObj_methods, NULL };
+
+static PyObject *MenuObj_getattr(MenuObject *self, char *name)
+{
+       return Py_FindMethodInChain(&MenuObj_chain, (PyObject *)self, name);
+}
+
+#define MenuObj_setattr NULL
+
+#define MenuObj_compare NULL
+
+#define MenuObj_repr NULL
+
+#define MenuObj_hash NULL
+
+PyTypeObject Menu_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "Menu", /*tp_name*/
+       sizeof(MenuObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) MenuObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) MenuObj_getattr, /*tp_getattr*/
+       (setattrfunc) MenuObj_setattr, /*tp_setattr*/
+       (cmpfunc) MenuObj_compare, /*tp_compare*/
+       (reprfunc) MenuObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) MenuObj_hash, /*tp_hash*/
+};
+
+/* ---------------------- End object type Menu ---------------------- */
+
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Menu_InitProcMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short resID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &resID))
+               return NULL;
+       InitProcMenu(resID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Menu_InitMenus(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       InitMenus();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Menu_NewMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuHandle _rv;
+       MenuID menuID;
+       Str255 menuTitle;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &menuID,
+                             PyMac_GetStr255, menuTitle))
+               return NULL;
+       _rv = NewMenu(menuID,
+                     menuTitle);
+       _res = Py_BuildValue("O&",
+                            MenuObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Menu_MacGetMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuHandle _rv;
+       short resourceID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &resourceID))
+               return NULL;
+       _rv = MacGetMenu(resourceID);
+       _res = Py_BuildValue("O&",
+                            MenuObj_New, _rv);
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Menu_CreateNewMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuID menuID;
+       MenuAttributes menuAttributes;
+       MenuHandle outMenuRef;
+       if (!PyArg_ParseTuple(_args, "hl",
+                             &menuID,
+                             &menuAttributes))
+               return NULL;
+       _err = CreateNewMenu(menuID,
+                            menuAttributes,
+                            &outMenuRef);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            MenuObj_New, outMenuRef);
+       return _res;
+}
+#endif
+
+static PyObject *Menu_MenuKey(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       CharParameter ch;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &ch))
+               return NULL;
+       _rv = MenuKey(ch);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Menu_MenuSelect(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       Point startPt;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &startPt))
+               return NULL;
+       _rv = MenuSelect(startPt);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Menu_MenuChoice(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MenuChoice();
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Menu_MenuEvent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UInt32 _rv;
+       EventRecord inEvent;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetEventRecord, &inEvent))
+               return NULL;
+       _rv = MenuEvent(&inEvent);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Menu_GetMBarHeight(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMBarHeight();
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Menu_MacDrawMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       MacDrawMenuBar();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_InvalMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       InvalMenuBar();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_HiliteMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuID menuID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &menuID))
+               return NULL;
+       HiliteMenu(menuID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_GetNewMBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuBarHandle _rv;
+       short menuBarID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &menuBarID))
+               return NULL;
+       _rv = GetNewMBar(menuBarID);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Menu_GetMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuBarHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMenuBar();
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Menu_SetMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuBarHandle mbar;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &mbar))
+               return NULL;
+       SetMenuBar(mbar);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Menu_DuplicateMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuBarHandle mbar;
+       MenuBarHandle outBar;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &mbar))
+               return NULL;
+       _err = DuplicateMenuBar(mbar,
+                               &outBar);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, outBar);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Menu_DisposeMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       MenuBarHandle mbar;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &mbar))
+               return NULL;
+       _err = DisposeMenuBar(mbar);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Menu_GetMenuHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuHandle _rv;
+       MenuID menuID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &menuID))
+               return NULL;
+       _rv = GetMenuHandle(menuID);
+       _res = Py_BuildValue("O&",
+                            MenuObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Menu_MacDeleteMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuID menuID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &menuID))
+               return NULL;
+       MacDeleteMenu(menuID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_ClearMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ClearMenuBar();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_SetMenuFlashCount(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short count;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &count))
+               return NULL;
+       SetMenuFlashCount(count);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Menu_SetMenuFlash(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short count;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &count))
+               return NULL;
+       SetMenuFlash(count);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Menu_FlashMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuID menuID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &menuID))
+               return NULL;
+       FlashMenuBar(menuID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Menu_SystemEdit(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       short editCmd;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &editCmd))
+               return NULL;
+       _rv = SystemEdit(editCmd);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Menu_SystemMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long menuResult;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &menuResult))
+               return NULL;
+       SystemMenu(menuResult);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Menu_IsMenuBarVisible(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = IsMenuBarVisible();
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Menu_ShowMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ShowMenuBar();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_HideMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       HideMenuBar();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_DeleteMCEntries(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuID menuID;
+       short menuItem;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &menuID,
+                             &menuItem))
+               return NULL;
+       DeleteMCEntries(menuID,
+                       menuItem);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_InitContextualMenus(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSStatus _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = InitContextualMenus();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_IsShowContextualMenuClick(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       EventRecord inEvent;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetEventRecord, &inEvent))
+               return NULL;
+       _rv = IsShowContextualMenuClick(&inEvent);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Menu_OpenDeskAcc(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Str255 name;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetStr255, name))
+               return NULL;
+       OpenDeskAcc(name);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Menu_as_Menu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuHandle _rv;
+       Handle h;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &h))
+               return NULL;
+       _rv = as_Menu(h);
+       _res = Py_BuildValue("O&",
+                            MenuObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Menu_GetMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MenuHandle _rv;
+       short resourceID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &resourceID))
+               return NULL;
+       _rv = GetMenu(resourceID);
+       _res = Py_BuildValue("O&",
+                            MenuObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Menu_DeleteMenu(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short menuID;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &menuID))
+               return NULL;
+       DeleteMenu(menuID);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Menu_DrawMenuBar(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DrawMenuBar();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyMethodDef Menu_methods[] = {
+
+#if !TARGET_API_MAC_CARBON
+       {"InitProcMenu", (PyCFunction)Menu_InitProcMenu, 1,
+        "(short resID) -> None"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"InitMenus", (PyCFunction)Menu_InitMenus, 1,
+        "() -> None"},
+#endif
+       {"NewMenu", (PyCFunction)Menu_NewMenu, 1,
+        "(MenuID menuID, Str255 menuTitle) -> (MenuHandle _rv)"},
+       {"MacGetMenu", (PyCFunction)Menu_MacGetMenu, 1,
+        "(short resourceID) -> (MenuHandle _rv)"},
+
+#if TARGET_API_MAC_CARBON
+       {"CreateNewMenu", (PyCFunction)Menu_CreateNewMenu, 1,
+        "(MenuID menuID, MenuAttributes menuAttributes) -> (MenuHandle outMenuRef)"},
+#endif
+       {"MenuKey", (PyCFunction)Menu_MenuKey, 1,
+        "(CharParameter ch) -> (long _rv)"},
+       {"MenuSelect", (PyCFunction)Menu_MenuSelect, 1,
+        "(Point startPt) -> (long _rv)"},
+       {"MenuChoice", (PyCFunction)Menu_MenuChoice, 1,
+        "() -> (long _rv)"},
+       {"MenuEvent", (PyCFunction)Menu_MenuEvent, 1,
+        "(EventRecord inEvent) -> (UInt32 _rv)"},
+       {"GetMBarHeight", (PyCFunction)Menu_GetMBarHeight, 1,
+        "() -> (short _rv)"},
+       {"MacDrawMenuBar", (PyCFunction)Menu_MacDrawMenuBar, 1,
+        "() -> None"},
+       {"InvalMenuBar", (PyCFunction)Menu_InvalMenuBar, 1,
+        "() -> None"},
+       {"HiliteMenu", (PyCFunction)Menu_HiliteMenu, 1,
+        "(MenuID menuID) -> None"},
+       {"GetNewMBar", (PyCFunction)Menu_GetNewMBar, 1,
+        "(short menuBarID) -> (MenuBarHandle _rv)"},
+       {"GetMenuBar", (PyCFunction)Menu_GetMenuBar, 1,
+        "() -> (MenuBarHandle _rv)"},
+       {"SetMenuBar", (PyCFunction)Menu_SetMenuBar, 1,
+        "(MenuBarHandle mbar) -> None"},
+
+#if TARGET_API_MAC_CARBON
+       {"DuplicateMenuBar", (PyCFunction)Menu_DuplicateMenuBar, 1,
+        "(MenuBarHandle mbar) -> (MenuBarHandle outBar)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"DisposeMenuBar", (PyCFunction)Menu_DisposeMenuBar, 1,
+        "(MenuBarHandle mbar) -> None"},
+#endif
+       {"GetMenuHandle", (PyCFunction)Menu_GetMenuHandle, 1,
+        "(MenuID menuID) -> (MenuHandle _rv)"},
+       {"MacDeleteMenu", (PyCFunction)Menu_MacDeleteMenu, 1,
+        "(MenuID menuID) -> None"},
+       {"ClearMenuBar", (PyCFunction)Menu_ClearMenuBar, 1,
+        "() -> None"},
+       {"SetMenuFlashCount", (PyCFunction)Menu_SetMenuFlashCount, 1,
+        "(short count) -> None"},
+
+#if !TARGET_API_MAC_CARBON
+       {"SetMenuFlash", (PyCFunction)Menu_SetMenuFlash, 1,
+        "(short count) -> None"},
+#endif
+       {"FlashMenuBar", (PyCFunction)Menu_FlashMenuBar, 1,
+        "(MenuID menuID) -> None"},
+
+#if !TARGET_API_MAC_CARBON
+       {"SystemEdit", (PyCFunction)Menu_SystemEdit, 1,
+        "(short editCmd) -> (Boolean _rv)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"SystemMenu", (PyCFunction)Menu_SystemMenu, 1,
+        "(long menuResult) -> None"},
+#endif
+       {"IsMenuBarVisible", (PyCFunction)Menu_IsMenuBarVisible, 1,
+        "() -> (Boolean _rv)"},
+       {"ShowMenuBar", (PyCFunction)Menu_ShowMenuBar, 1,
+        "() -> None"},
+       {"HideMenuBar", (PyCFunction)Menu_HideMenuBar, 1,
+        "() -> None"},
+       {"DeleteMCEntries", (PyCFunction)Menu_DeleteMCEntries, 1,
+        "(MenuID menuID, short menuItem) -> None"},
+       {"InitContextualMenus", (PyCFunction)Menu_InitContextualMenus, 1,
+        "() -> None"},
+       {"IsShowContextualMenuClick", (PyCFunction)Menu_IsShowContextualMenuClick, 1,
+        "(EventRecord inEvent) -> (Boolean _rv)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"OpenDeskAcc", (PyCFunction)Menu_OpenDeskAcc, 1,
+        "(Str255 name) -> None"},
+#endif
+       {"as_Menu", (PyCFunction)Menu_as_Menu, 1,
+        "(Handle h) -> (MenuHandle _rv)"},
+       {"GetMenu", (PyCFunction)Menu_GetMenu, 1,
+        "(short resourceID) -> (MenuHandle _rv)"},
+       {"DeleteMenu", (PyCFunction)Menu_DeleteMenu, 1,
+        "(short menuID) -> None"},
+       {"DrawMenuBar", (PyCFunction)Menu_DrawMenuBar, 1,
+        "() -> None"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initMenu(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(MenuHandle, MenuObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MenuHandle, MenuObj_Convert);
+
+
+       m = Py_InitModule("Menu", Menu_methods);
+       d = PyModule_GetDict(m);
+       Menu_Error = PyMac_GetOSErrException();
+       if (Menu_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Menu_Error) != 0)
+               return;
+       Menu_Type.ob_type = &PyType_Type;
+       Py_INCREF(&Menu_Type);
+       if (PyDict_SetItemString(d, "MenuType", (PyObject *)&Menu_Type) != 0)
+               Py_FatalError("can't initialize MenuType");
+}
+
+/* ======================== End module Menu ========================= */
+
diff --git a/Mac/Modules/menu/menusupport.py b/Mac/Modules/menu/menusupport.py
new file mode 100644 (file)
index 0000000..a438f14
--- /dev/null
@@ -0,0 +1,99 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Menus.h'              # The Apple header file
+MODNAME = 'Menu'                       # The name of the module
+OBJECTNAME = 'Menu'                    # The basic name of the objects used here
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = OBJECTNAME + 'Handle'     # The C type used to represent them
+OBJECTPREFIX = MODPREFIX + 'Obj'       # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+EXTRAFILE = string.lower(MODPREFIX) + 'edit.py' # A similar file but hand-made
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+
+MenuHandle = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX)
+MenuRef = MenuHandle
+Handle = OpaqueByValueType("Handle", "ResObj")
+MenuBarHandle = OpaqueByValueType("MenuBarHandle", "ResObj")
+MenuID = Type("MenuID", "h")
+MenuItemIndex = Type("MenuItemIndex", "h")
+MenuCommand = Type("MenuCommand", "l")
+MenuAttributes = Type("MenuAttributes", "l")
+MenuItemAttributes = Type("MenuItemAttributes", "l")
+unsigned_char = Type('unsigned char', 'b')
+FMFontFamily = Type("FMFontFamily", "h")
+FMFontStyle = Type("FMFontStyle", "h")
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Devices.h> /* Defines OpenDeskAcc in universal headers */
+#include <Menus.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+
+extern PyObject *_MenuObj_New(MenuHandle);
+extern int _MenuObj_Convert(PyObject *, MenuHandle *);
+
+#define MenuObj_New _MenuObj_New
+#define MenuObj_Convert _MenuObj_Convert 
+#endif
+
+#if !ACCESSOR_CALLS_ARE_FUNCTIONS
+#define GetMenuID(menu) ((*(menu))->menuID)
+#define GetMenuWidth(menu) ((*(menu))->menuWidth)
+#define GetMenuHeight(menu) ((*(menu))->menuHeight)
+
+#define SetMenuID(menu, id) ((*(menu))->menuID = (id))
+#define SetMenuWidth(menu, width) ((*(menu))->menuWidth = (width))
+#define SetMenuHeight(menu, height) ((*(menu))->menuHeight = (height))
+#endif
+
+#define as_Menu(h) ((MenuHandle)h)
+#define as_Resource(h) ((Handle)h)
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(MenuHandle, MenuObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MenuHandle, MenuObj_Convert);
+"""
+
+class MyObjectDefinition(GlobalObjectDefinition):
+       pass
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
+module.addobject(object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+methods = []
+execfile(INPUTFILE)
+execfile(EXTRAFILE)
+
+# add the populated lists to the generator groups
+for f in functions: module.add(f)
+for f in methods: object.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
diff --git a/Mac/Modules/qdoffs/Qdoffsmodule.c b/Mac/Modules/qdoffs/Qdoffsmodule.c
new file mode 100644 (file)
index 0000000..abe3630
--- /dev/null
@@ -0,0 +1,596 @@
+
+/* ========================= Module Qdoffs ========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <QDOffscreen.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_GWorldObj_New(GWorldPtr);
+extern int _GWorldObj_Convert(PyObject *, GWorldPtr *);
+
+#define GWorldObj_New _GWorldObj_New
+#define GWorldObj_Convert _GWorldObj_Convert
+#endif
+
+#define as_GrafPtr(gworld) ((GrafPtr)(gworld))
+
+
+static PyObject *Qdoffs_Error;
+
+/* ----------------------- Object type GWorld ----------------------- */
+
+PyTypeObject GWorld_Type;
+
+#define GWorldObj_Check(x) ((x)->ob_type == &GWorld_Type)
+
+typedef struct GWorldObject {
+       PyObject_HEAD
+       GWorldPtr ob_itself;
+} GWorldObject;
+
+PyObject *GWorldObj_New(GWorldPtr itself)
+{
+       GWorldObject *it;
+       if (itself == NULL) return PyMac_Error(resNotFound);
+       it = PyObject_NEW(GWorldObject, &GWorld_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+GWorldObj_Convert(PyObject *v, GWorldPtr *p_itself)
+{
+       if (!GWorldObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "GWorld required");
+               return 0;
+       }
+       *p_itself = ((GWorldObject *)v)->ob_itself;
+       return 1;
+}
+
+static void GWorldObj_dealloc(GWorldObject *self)
+{
+       DisposeGWorld(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *GWorldObj_GetGWorldDevice(GWorldObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       GDHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetGWorldDevice(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *GWorldObj_GetGWorldPixMap(GWorldObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetGWorldPixMap(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *GWorldObj_as_GrafPtr(GWorldObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       GrafPtr _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = as_GrafPtr(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            GrafObj_New, _rv);
+       return _res;
+}
+
+static PyMethodDef GWorldObj_methods[] = {
+       {"GetGWorldDevice", (PyCFunction)GWorldObj_GetGWorldDevice, 1,
+        "() -> (GDHandle _rv)"},
+       {"GetGWorldPixMap", (PyCFunction)GWorldObj_GetGWorldPixMap, 1,
+        "() -> (PixMapHandle _rv)"},
+       {"as_GrafPtr", (PyCFunction)GWorldObj_as_GrafPtr, 1,
+        "() -> (GrafPtr _rv)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain GWorldObj_chain = { GWorldObj_methods, NULL };
+
+static PyObject *GWorldObj_getattr(GWorldObject *self, char *name)
+{
+       return Py_FindMethodInChain(&GWorldObj_chain, (PyObject *)self, name);
+}
+
+#define GWorldObj_setattr NULL
+
+#define GWorldObj_compare NULL
+
+#define GWorldObj_repr NULL
+
+#define GWorldObj_hash NULL
+
+PyTypeObject GWorld_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "GWorld", /*tp_name*/
+       sizeof(GWorldObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) GWorldObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) GWorldObj_getattr, /*tp_getattr*/
+       (setattrfunc) GWorldObj_setattr, /*tp_setattr*/
+       (cmpfunc) GWorldObj_compare, /*tp_compare*/
+       (reprfunc) GWorldObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) GWorldObj_hash, /*tp_hash*/
+};
+
+/* --------------------- End object type GWorld --------------------- */
+
+
+static PyObject *Qdoffs_NewGWorld(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       QDErr _err;
+       GWorldPtr offscreenGWorld;
+       short PixelDepth;
+       Rect boundsRect;
+       CTabHandle cTable;
+       GDHandle aGDevice;
+       GWorldFlags flags;
+       if (!PyArg_ParseTuple(_args, "hO&O&O&l",
+                             &PixelDepth,
+                             PyMac_GetRect, &boundsRect,
+                             OptResObj_Convert, &cTable,
+                             OptResObj_Convert, &aGDevice,
+                             &flags))
+               return NULL;
+       _err = NewGWorld(&offscreenGWorld,
+                        PixelDepth,
+                        &boundsRect,
+                        cTable,
+                        aGDevice,
+                        flags);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            GWorldObj_New, offscreenGWorld);
+       return _res;
+}
+
+static PyObject *Qdoffs_LockPixels(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       PixMapHandle pm;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &pm))
+               return NULL;
+       _rv = LockPixels(pm);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qdoffs_UnlockPixels(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle pm;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &pm))
+               return NULL;
+       UnlockPixels(pm);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_UpdateGWorld(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       GWorldFlags _rv;
+       GWorldPtr offscreenGWorld;
+       short pixelDepth;
+       Rect boundsRect;
+       CTabHandle cTable;
+       GDHandle aGDevice;
+       GWorldFlags flags;
+       if (!PyArg_ParseTuple(_args, "hO&O&O&l",
+                             &pixelDepth,
+                             PyMac_GetRect, &boundsRect,
+                             OptResObj_Convert, &cTable,
+                             OptResObj_Convert, &aGDevice,
+                             &flags))
+               return NULL;
+       _rv = UpdateGWorld(&offscreenGWorld,
+                          pixelDepth,
+                          &boundsRect,
+                          cTable,
+                          aGDevice,
+                          flags);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            GWorldObj_New, offscreenGWorld);
+       return _res;
+}
+
+static PyObject *Qdoffs_GetGWorld(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CGrafPtr port;
+       GDHandle gdh;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetGWorld(&port,
+                 &gdh);
+       _res = Py_BuildValue("O&O&",
+                            GrafObj_New, port,
+                            ResObj_New, gdh);
+       return _res;
+}
+
+static PyObject *Qdoffs_SetGWorld(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CGrafPtr port;
+       GDHandle gdh;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             GrafObj_Convert, &port,
+                             OptResObj_Convert, &gdh))
+               return NULL;
+       SetGWorld(port,
+                 gdh);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_CTabChanged(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CTabHandle ctab;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             OptResObj_Convert, &ctab))
+               return NULL;
+       CTabChanged(ctab);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_PixPatChanged(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixPatHandle ppat;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &ppat))
+               return NULL;
+       PixPatChanged(ppat);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_PortChanged(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       GrafPtr port;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             GrafObj_Convert, &port))
+               return NULL;
+       PortChanged(port);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_GDeviceChanged(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       GDHandle gdh;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             OptResObj_Convert, &gdh))
+               return NULL;
+       GDeviceChanged(gdh);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_AllowPurgePixels(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle pm;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &pm))
+               return NULL;
+       AllowPurgePixels(pm);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_NoPurgePixels(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle pm;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &pm))
+               return NULL;
+       NoPurgePixels(pm);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_GetPixelsState(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       GWorldFlags _rv;
+       PixMapHandle pm;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &pm))
+               return NULL;
+       _rv = GetPixelsState(pm);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qdoffs_SetPixelsState(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle pm;
+       GWorldFlags state;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             ResObj_Convert, &pm,
+                             &state))
+               return NULL;
+       SetPixelsState(pm,
+                      state);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_GetPixRowBytes(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       PixMapHandle pm;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &pm))
+               return NULL;
+       _rv = GetPixRowBytes(pm);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qdoffs_NewScreenBuffer(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       QDErr _err;
+       Rect globalRect;
+       Boolean purgeable;
+       GDHandle gdh;
+       PixMapHandle offscreenPixMap;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             PyMac_GetRect, &globalRect,
+                             &purgeable))
+               return NULL;
+       _err = NewScreenBuffer(&globalRect,
+                              purgeable,
+                              &gdh,
+                              &offscreenPixMap);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&O&",
+                            ResObj_New, gdh,
+                            ResObj_New, offscreenPixMap);
+       return _res;
+}
+
+static PyObject *Qdoffs_DisposeScreenBuffer(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle offscreenPixMap;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &offscreenPixMap))
+               return NULL;
+       DisposeScreenBuffer(offscreenPixMap);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qdoffs_QDDone(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       GrafPtr port;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             GrafObj_Convert, &port))
+               return NULL;
+       _rv = QDDone(port);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qdoffs_OffscreenVersion(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = OffscreenVersion();
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qdoffs_NewTempScreenBuffer(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       QDErr _err;
+       Rect globalRect;
+       Boolean purgeable;
+       GDHandle gdh;
+       PixMapHandle offscreenPixMap;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             PyMac_GetRect, &globalRect,
+                             &purgeable))
+               return NULL;
+       _err = NewTempScreenBuffer(&globalRect,
+                                  purgeable,
+                                  &gdh,
+                                  &offscreenPixMap);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&O&",
+                            ResObj_New, gdh,
+                            ResObj_New, offscreenPixMap);
+       return _res;
+}
+
+static PyObject *Qdoffs_PixMap32Bit(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       PixMapHandle pmHandle;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &pmHandle))
+               return NULL;
+       _rv = PixMap32Bit(pmHandle);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qdoffs_GetPixMapBytes(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       PixMapHandle pm;
+       int from, length;
+       char *cp;
+
+       if ( !PyArg_ParseTuple(_args, "O&ii", ResObj_Convert, &pm, &from, &length) )
+               return NULL;
+       cp = GetPixBaseAddr(pm)+from;
+       return PyString_FromStringAndSize(cp, length);
+
+}
+
+static PyObject *Qdoffs_PutPixMapBytes(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       PixMapHandle pm;
+       int from, length;
+       char *cp, *icp;
+
+       if ( !PyArg_ParseTuple(_args, "O&is#", ResObj_Convert, &pm, &from, &icp, &length) )
+               return NULL;
+       cp = GetPixBaseAddr(pm)+from;
+       memcpy(cp, icp, length);
+       Py_INCREF(Py_None);
+       return Py_None;
+
+}
+
+static PyMethodDef Qdoffs_methods[] = {
+       {"NewGWorld", (PyCFunction)Qdoffs_NewGWorld, 1,
+        "(short PixelDepth, Rect boundsRect, CTabHandle cTable, GDHandle aGDevice, GWorldFlags flags) -> (GWorldPtr offscreenGWorld)"},
+       {"LockPixels", (PyCFunction)Qdoffs_LockPixels, 1,
+        "(PixMapHandle pm) -> (Boolean _rv)"},
+       {"UnlockPixels", (PyCFunction)Qdoffs_UnlockPixels, 1,
+        "(PixMapHandle pm) -> None"},
+       {"UpdateGWorld", (PyCFunction)Qdoffs_UpdateGWorld, 1,
+        "(short pixelDepth, Rect boundsRect, CTabHandle cTable, GDHandle aGDevice, GWorldFlags flags) -> (GWorldFlags _rv, GWorldPtr offscreenGWorld)"},
+       {"GetGWorld", (PyCFunction)Qdoffs_GetGWorld, 1,
+        "() -> (CGrafPtr port, GDHandle gdh)"},
+       {"SetGWorld", (PyCFunction)Qdoffs_SetGWorld, 1,
+        "(CGrafPtr port, GDHandle gdh) -> None"},
+       {"CTabChanged", (PyCFunction)Qdoffs_CTabChanged, 1,
+        "(CTabHandle ctab) -> None"},
+       {"PixPatChanged", (PyCFunction)Qdoffs_PixPatChanged, 1,
+        "(PixPatHandle ppat) -> None"},
+       {"PortChanged", (PyCFunction)Qdoffs_PortChanged, 1,
+        "(GrafPtr port) -> None"},
+       {"GDeviceChanged", (PyCFunction)Qdoffs_GDeviceChanged, 1,
+        "(GDHandle gdh) -> None"},
+       {"AllowPurgePixels", (PyCFunction)Qdoffs_AllowPurgePixels, 1,
+        "(PixMapHandle pm) -> None"},
+       {"NoPurgePixels", (PyCFunction)Qdoffs_NoPurgePixels, 1,
+        "(PixMapHandle pm) -> None"},
+       {"GetPixelsState", (PyCFunction)Qdoffs_GetPixelsState, 1,
+        "(PixMapHandle pm) -> (GWorldFlags _rv)"},
+       {"SetPixelsState", (PyCFunction)Qdoffs_SetPixelsState, 1,
+        "(PixMapHandle pm, GWorldFlags state) -> None"},
+       {"GetPixRowBytes", (PyCFunction)Qdoffs_GetPixRowBytes, 1,
+        "(PixMapHandle pm) -> (long _rv)"},
+       {"NewScreenBuffer", (PyCFunction)Qdoffs_NewScreenBuffer, 1,
+        "(Rect globalRect, Boolean purgeable) -> (GDHandle gdh, PixMapHandle offscreenPixMap)"},
+       {"DisposeScreenBuffer", (PyCFunction)Qdoffs_DisposeScreenBuffer, 1,
+        "(PixMapHandle offscreenPixMap) -> None"},
+       {"QDDone", (PyCFunction)Qdoffs_QDDone, 1,
+        "(GrafPtr port) -> (Boolean _rv)"},
+       {"OffscreenVersion", (PyCFunction)Qdoffs_OffscreenVersion, 1,
+        "() -> (long _rv)"},
+       {"NewTempScreenBuffer", (PyCFunction)Qdoffs_NewTempScreenBuffer, 1,
+        "(Rect globalRect, Boolean purgeable) -> (GDHandle gdh, PixMapHandle offscreenPixMap)"},
+       {"PixMap32Bit", (PyCFunction)Qdoffs_PixMap32Bit, 1,
+        "(PixMapHandle pmHandle) -> (Boolean _rv)"},
+       {"GetPixMapBytes", (PyCFunction)Qdoffs_GetPixMapBytes, 1,
+        "(pixmap, int start, int size) -> string. Return bytes from the pixmap"},
+       {"PutPixMapBytes", (PyCFunction)Qdoffs_PutPixMapBytes, 1,
+        "(pixmap, int start, string data). Store bytes into the pixmap"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initQdoffs(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(GWorldPtr, GWorldObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GWorldPtr, GWorldObj_Convert);
+
+
+       m = Py_InitModule("Qdoffs", Qdoffs_methods);
+       d = PyModule_GetDict(m);
+       Qdoffs_Error = PyMac_GetOSErrException();
+       if (Qdoffs_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Qdoffs_Error) != 0)
+               return;
+       GWorld_Type.ob_type = &PyType_Type;
+       Py_INCREF(&GWorld_Type);
+       if (PyDict_SetItemString(d, "GWorldType", (PyObject *)&GWorld_Type) != 0)
+               Py_FatalError("can't initialize GWorldType");
+}
+
+/* ======================= End module Qdoffs ======================== */
+
diff --git a/Mac/Modules/qdoffs/qdoffssupport.py b/Mac/Modules/qdoffs/qdoffssupport.py
new file mode 100644 (file)
index 0000000..bc21531
--- /dev/null
@@ -0,0 +1,140 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'QDOffscreen.h'                # The Apple header file
+MODNAME = 'Qdoffs'                             # The name of the module
+OBJECTNAME = 'GWorld'                  # The basic name of the objects used here
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = OBJECTNAME + 'Ptr'                # The C type used to represent them
+OBJECTPREFIX = OBJECTNAME + 'Obj'      # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+#EDITFILE = string.lower(MODPREFIX) + 'edit.py' # The manual definitions
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+
+GWorldPtr = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX)
+GWorldFlags = Type("GWorldFlags", "l")
+GDHandle = OpaqueByValueType("GDHandle", "ResObj")
+OptGDHandle = OpaqueByValueType("GDHandle", "OptResObj")
+CTabHandle = OpaqueByValueType("CTabHandle", "OptResObj")
+PixPatHandle = OpaqueByValueType("PixPatHandle", "ResObj")
+PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj")
+CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
+GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj")
+QDErr = OSErrType("QDErr", 'h')
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <QDOffscreen.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_GWorldObj_New(GWorldPtr);
+extern int _GWorldObj_Convert(PyObject *, GWorldPtr *);
+
+#define GWorldObj_New _GWorldObj_New
+#define GWorldObj_Convert _GWorldObj_Convert
+#endif
+
+#define as_GrafPtr(gworld) ((GrafPtr)(gworld))
+
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(GWorldPtr, GWorldObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GWorldPtr, GWorldObj_Convert);
+"""
+
+class MyObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("if (itself == NULL) return PyMac_Error(resNotFound);")
+##     def outputInitStructMembers(self):
+##             GlobalObjectDefinition.outputInitStructMembers(self)
+##             Output("SetWRefCon(itself, (long)it);")
+##     def outputCheckConvertArg(self):
+##             OutLbrace("if (DlgObj_Check(v))")
+##             Output("*p_itself = ((WindowObject *)v)->ob_itself;")
+##             Output("return 1;")
+##             OutRbrace()
+##             Out("""
+##             if (v == Py_None) { *p_itself = NULL; return 1; }
+##             if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; }
+##             """)
+       def outputFreeIt(self, itselfname):
+               Output("DisposeGWorld(%s);", itselfname)
+# From here on it's basically all boiler plate...
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
+module.addobject(object)
+
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+methods = []
+execfile(INPUTFILE)
+
+# A method to convert a GWorldPtr to a GrafPtr
+f = Method(GrafPtr, 'as_GrafPtr', (GWorldPtr, 'p', InMode))
+methods.append(f)
+
+#
+# Manual generator: get data out of a pixmap
+pixmapgetbytes_body = """
+PixMapHandle pm;
+int from, length;
+char *cp;
+
+if ( !PyArg_ParseTuple(_args, "O&ii", ResObj_Convert, &pm, &from, &length) )
+       return NULL;
+cp = GetPixBaseAddr(pm)+from;
+return PyString_FromStringAndSize(cp, length);
+"""
+f = ManualGenerator("GetPixMapBytes", pixmapgetbytes_body)
+f.docstring = lambda: """(pixmap, int start, int size) -> string. Return bytes from the pixmap"""
+functions.append(f)
+
+# Manual generator: store data in a pixmap
+pixmapputbytes_body = """
+PixMapHandle pm;
+int from, length;
+char *cp, *icp;
+
+if ( !PyArg_ParseTuple(_args, "O&is#", ResObj_Convert, &pm, &from, &icp, &length) )
+       return NULL;
+cp = GetPixBaseAddr(pm)+from;
+memcpy(cp, icp, length);
+Py_INCREF(Py_None);
+return Py_None;
+"""
+f = ManualGenerator("PutPixMapBytes", pixmapputbytes_body)
+f.docstring = lambda: """(pixmap, int start, string data). Store bytes into the pixmap"""
+functions.append(f)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+for f in methods: object.add(f)
+
+
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
diff --git a/Mac/Modules/qt/Qtmodule.c b/Mac/Modules/qt/Qtmodule.c
new file mode 100644 (file)
index 0000000..12c67ca
--- /dev/null
@@ -0,0 +1,8418 @@
+
+/* =========================== Module Qt ============================ */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Movies.h>
+#else
+/* #include <Carbon/Carbon.h> */
+#include <QuickTime/QuickTime.h>
+#endif
+
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_TrackObj_New(Track);
+extern int _TrackObj_Convert(PyObject *, Track *);
+extern PyObject *_MovieObj_New(Movie);
+extern int _MovieObj_Convert(PyObject *, Movie *);
+extern PyObject *_MovieCtlObj_New(MovieController);
+extern int _MovieCtlObj_Convert(PyObject *, MovieController *);
+extern PyObject *_TimeBaseObj_New(TimeBase);
+extern int _TimeBaseObj_Convert(PyObject *, TimeBase *);
+extern PyObject *_UserDataObj_New(UserData);
+extern int _UserDataObj_Convert(PyObject *, UserData *);
+extern PyObject *_MediaObj_New(Media);
+extern int _MediaObj_Convert(PyObject *, Media *);
+
+#define TrackObj_New _TrackObj_New
+#define TrackObj_Convert _TrackObj_Convert
+#define MovieObj_New _MovieObj_New
+#define MovieObj_Convert _MovieObj_Convert
+#define MovieCtlObj_New _MovieCtlObj_New
+#define MovieCtlObj_Convert _MovieCtlObj_Convert
+#define TimeBaseObj_New _TimeBaseObj_New
+#define TimeBaseObj_Convert _TimeBaseObj_Convert
+#define UserDataObj_New _UserDataObj_New
+#define UserDataObj_Convert _UserDataObj_Convert
+#define MediaObj_New _MediaObj_New
+#define MediaObj_Convert _MediaObj_Convert
+#endif
+
+/* Macro to allow us to GetNextInterestingTime without duration */
+#define GetMediaNextInterestingTimeOnly(media, flags, time, rate, rv)                  GetMediaNextInterestingTime(media, flags, time, rate, rv, NULL)
+                       
+/*
+** Parse/generate time records
+*/
+static PyObject *
+QtTimeRecord_New(TimeRecord *itself)
+{
+       if (itself->base)
+               return Py_BuildValue("O&lO&", PyMac_Buildwide, &itself->value, itself->scale, 
+                       TimeBaseObj_New, itself->base);
+       else
+               return  Py_BuildValue("O&lO", PyMac_Buildwide, &itself->value, itself->scale, 
+                       Py_None);
+}
+
+static int
+QtTimeRecord_Convert(PyObject *v, TimeRecord *p_itself)
+{
+       PyObject *base = NULL;
+       if( !PyArg_ParseTuple(v, "O&l|O", PyMac_Getwide, &p_itself->value, &p_itself->scale,
+                       &base) )
+               return 0;
+       if ( base == NULL || base == Py_None )
+               p_itself->base = NULL;
+       else
+               if ( !TimeBaseObj_Convert(base, &p_itself->base) )
+                       return 0;
+       return 1;
+}
+
+
+
+
+static PyObject *Qt_Error;
+
+/* ------------------ Object type MovieController ------------------- */
+
+PyTypeObject MovieController_Type;
+
+#define MovieCtlObj_Check(x) ((x)->ob_type == &MovieController_Type)
+
+typedef struct MovieControllerObject {
+       PyObject_HEAD
+       MovieController ob_itself;
+} MovieControllerObject;
+
+PyObject *MovieCtlObj_New(MovieController itself)
+{
+       MovieControllerObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(Qt_Error,"Cannot create null MovieController");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(MovieControllerObject, &MovieController_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+MovieCtlObj_Convert(PyObject *v, MovieController *p_itself)
+{
+       if (!MovieCtlObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "MovieController required");
+               return 0;
+       }
+       *p_itself = ((MovieControllerObject *)v)->ob_itself;
+       return 1;
+}
+
+static void MovieCtlObj_dealloc(MovieControllerObject *self)
+{
+       DisposeMovieController(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *MovieCtlObj_MCSetMovie(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Movie theMovie;
+       WindowPtr movieWindow;
+       Point where;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             MovieObj_Convert, &theMovie,
+                             WinObj_Convert, &movieWindow,
+                             PyMac_GetPoint, &where))
+               return NULL;
+       _rv = MCSetMovie(_self->ob_itself,
+                        theMovie,
+                        movieWindow,
+                        where);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetIndMovie(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       short index;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &index))
+               return NULL;
+       _rv = MCGetIndMovie(_self->ob_itself,
+                           index);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCRemoveAllMovies(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCRemoveAllMovies(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCRemoveAMovie(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Movie m;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             MovieObj_Convert, &m))
+               return NULL;
+       _rv = MCRemoveAMovie(_self->ob_itself,
+                            m);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCRemoveMovie(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCRemoveMovie(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCIsPlayerEvent(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       EventRecord e;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetEventRecord, &e))
+               return NULL;
+       _rv = MCIsPlayerEvent(_self->ob_itself,
+                             &e);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCDoAction(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       short action;
+       void * params;
+       if (!PyArg_ParseTuple(_args, "hs",
+                             &action,
+                             &params))
+               return NULL;
+       _rv = MCDoAction(_self->ob_itself,
+                        action,
+                        params);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCSetControllerAttached(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Boolean attach;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &attach))
+               return NULL;
+       _rv = MCSetControllerAttached(_self->ob_itself,
+                                     attach);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCIsControllerAttached(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCIsControllerAttached(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCSetControllerPort(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       CGrafPtr gp;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             GrafObj_Convert, &gp))
+               return NULL;
+       _rv = MCSetControllerPort(_self->ob_itself,
+                                 gp);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetControllerPort(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CGrafPtr _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCGetControllerPort(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            GrafObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCSetVisible(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Boolean visible;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &visible))
+               return NULL;
+       _rv = MCSetVisible(_self->ob_itself,
+                          visible);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetVisible(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCGetVisible(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetControllerBoundsRect(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Rect bounds;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCGetControllerBoundsRect(_self->ob_itself,
+                                       &bounds);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            PyMac_BuildRect, &bounds);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCSetControllerBoundsRect(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Rect bounds;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetRect, &bounds))
+               return NULL;
+       _rv = MCSetControllerBoundsRect(_self->ob_itself,
+                                       &bounds);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetControllerBoundsRgn(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCGetControllerBoundsRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetWindowRgn(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       WindowPtr w;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             WinObj_Convert, &w))
+               return NULL;
+       _rv = MCGetWindowRgn(_self->ob_itself,
+                            w);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCMovieChanged(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Movie m;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             MovieObj_Convert, &m))
+               return NULL;
+       _rv = MCMovieChanged(_self->ob_itself,
+                            m);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCSetDuration(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &duration))
+               return NULL;
+       _rv = MCSetDuration(_self->ob_itself,
+                           duration);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetCurrentTime(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       TimeScale scale;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCGetCurrentTime(_self->ob_itself,
+                              &scale);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            scale);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCNewAttachedController(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Movie theMovie;
+       WindowPtr w;
+       Point where;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             MovieObj_Convert, &theMovie,
+                             WinObj_Convert, &w,
+                             PyMac_GetPoint, &where))
+               return NULL;
+       _rv = MCNewAttachedController(_self->ob_itself,
+                                     theMovie,
+                                     w,
+                                     where);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCDraw(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       WindowPtr w;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             WinObj_Convert, &w))
+               return NULL;
+       _rv = MCDraw(_self->ob_itself,
+                    w);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCActivate(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       WindowPtr w;
+       Boolean activate;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             WinObj_Convert, &w,
+                             &activate))
+               return NULL;
+       _rv = MCActivate(_self->ob_itself,
+                        w,
+                        activate);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCIdle(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCIdle(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCKey(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       SInt8 key;
+       long modifiers;
+       if (!PyArg_ParseTuple(_args, "bl",
+                             &key,
+                             &modifiers))
+               return NULL;
+       _rv = MCKey(_self->ob_itself,
+                   key,
+                   modifiers);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCClick(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       WindowPtr w;
+       Point where;
+       long when;
+       long modifiers;
+       if (!PyArg_ParseTuple(_args, "O&O&ll",
+                             WinObj_Convert, &w,
+                             PyMac_GetPoint, &where,
+                             &when,
+                             &modifiers))
+               return NULL;
+       _rv = MCClick(_self->ob_itself,
+                     w,
+                     where,
+                     when,
+                     modifiers);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCEnableEditing(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Boolean enabled;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &enabled))
+               return NULL;
+       _rv = MCEnableEditing(_self->ob_itself,
+                             enabled);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCIsEditingEnabled(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCIsEditingEnabled(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCCopy(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCCopy(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCCut(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCCut(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCPaste(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Movie srcMovie;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             MovieObj_Convert, &srcMovie))
+               return NULL;
+       _rv = MCPaste(_self->ob_itself,
+                     srcMovie);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCClear(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCClear(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCUndo(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCUndo(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCPositionController(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Rect movieRect;
+       Rect controllerRect;
+       long someFlags;
+       if (!PyArg_ParseTuple(_args, "O&O&l",
+                             PyMac_GetRect, &movieRect,
+                             PyMac_GetRect, &controllerRect,
+                             &someFlags))
+               return NULL;
+       _rv = MCPositionController(_self->ob_itself,
+                                  &movieRect,
+                                  &controllerRect,
+                                  someFlags);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetControllerInfo(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       long someFlags;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCGetControllerInfo(_self->ob_itself,
+                                 &someFlags);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            someFlags);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCSetClip(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       RgnHandle theClip;
+       RgnHandle movieClip;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &theClip,
+                             ResObj_Convert, &movieClip))
+               return NULL;
+       _rv = MCSetClip(_self->ob_itself,
+                       theClip,
+                       movieClip);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetClip(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       RgnHandle theClip;
+       RgnHandle movieClip;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = MCGetClip(_self->ob_itself,
+                       &theClip,
+                       &movieClip);
+       _res = Py_BuildValue("lO&O&",
+                            _rv,
+                            ResObj_New, theClip,
+                            ResObj_New, movieClip);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCDrawBadge(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       RgnHandle movieRgn;
+       RgnHandle badgeRgn;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &movieRgn))
+               return NULL;
+       _rv = MCDrawBadge(_self->ob_itself,
+                         movieRgn,
+                         &badgeRgn);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            ResObj_New, badgeRgn);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCSetUpEditMenu(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       long modifiers;
+       MenuHandle mh;
+       if (!PyArg_ParseTuple(_args, "lO&",
+                             &modifiers,
+                             MenuObj_Convert, &mh))
+               return NULL;
+       _rv = MCSetUpEditMenu(_self->ob_itself,
+                             modifiers,
+                             mh);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetMenuString(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       long modifiers;
+       short item;
+       Str255 aString;
+       if (!PyArg_ParseTuple(_args, "lhO&",
+                             &modifiers,
+                             &item,
+                             PyMac_GetStr255, aString))
+               return NULL;
+       _rv = MCGetMenuString(_self->ob_itself,
+                             modifiers,
+                             item,
+                             aString);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCPtInController(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Point thePt;
+       Boolean inController;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &thePt))
+               return NULL;
+       _rv = MCPtInController(_self->ob_itself,
+                              thePt,
+                              &inController);
+       _res = Py_BuildValue("lb",
+                            _rv,
+                            inController);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCInvalidate(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       WindowPtr w;
+       RgnHandle invalidRgn;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             WinObj_Convert, &w,
+                             ResObj_Convert, &invalidRgn))
+               return NULL;
+       _rv = MCInvalidate(_self->ob_itself,
+                          w,
+                          invalidRgn);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCAdjustCursor(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       WindowPtr w;
+       Point where;
+       long modifiers;
+       if (!PyArg_ParseTuple(_args, "O&O&l",
+                             WinObj_Convert, &w,
+                             PyMac_GetPoint, &where,
+                             &modifiers))
+               return NULL;
+       _rv = MCAdjustCursor(_self->ob_itself,
+                            w,
+                            where,
+                            modifiers);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieCtlObj_MCGetInterfaceElement(MovieControllerObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MCInterfaceElement whichElement;
+       void * element;
+       if (!PyArg_ParseTuple(_args, "ls",
+                             &whichElement,
+                             &element))
+               return NULL;
+       _rv = MCGetInterfaceElement(_self->ob_itself,
+                                   whichElement,
+                                   element);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyMethodDef MovieCtlObj_methods[] = {
+       {"MCSetMovie", (PyCFunction)MovieCtlObj_MCSetMovie, 1,
+        "(Movie theMovie, WindowPtr movieWindow, Point where) -> (ComponentResult _rv)"},
+       {"MCGetIndMovie", (PyCFunction)MovieCtlObj_MCGetIndMovie, 1,
+        "(short index) -> (Movie _rv)"},
+       {"MCRemoveAllMovies", (PyCFunction)MovieCtlObj_MCRemoveAllMovies, 1,
+        "() -> (ComponentResult _rv)"},
+       {"MCRemoveAMovie", (PyCFunction)MovieCtlObj_MCRemoveAMovie, 1,
+        "(Movie m) -> (ComponentResult _rv)"},
+       {"MCRemoveMovie", (PyCFunction)MovieCtlObj_MCRemoveMovie, 1,
+        "() -> (ComponentResult _rv)"},
+       {"MCIsPlayerEvent", (PyCFunction)MovieCtlObj_MCIsPlayerEvent, 1,
+        "(EventRecord e) -> (ComponentResult _rv)"},
+       {"MCDoAction", (PyCFunction)MovieCtlObj_MCDoAction, 1,
+        "(short action, void * params) -> (ComponentResult _rv)"},
+       {"MCSetControllerAttached", (PyCFunction)MovieCtlObj_MCSetControllerAttached, 1,
+        "(Boolean attach) -> (ComponentResult _rv)"},
+       {"MCIsControllerAttached", (PyCFunction)MovieCtlObj_MCIsControllerAttached, 1,
+        "() -> (ComponentResult _rv)"},
+       {"MCSetControllerPort", (PyCFunction)MovieCtlObj_MCSetControllerPort, 1,
+        "(CGrafPtr gp) -> (ComponentResult _rv)"},
+       {"MCGetControllerPort", (PyCFunction)MovieCtlObj_MCGetControllerPort, 1,
+        "() -> (CGrafPtr _rv)"},
+       {"MCSetVisible", (PyCFunction)MovieCtlObj_MCSetVisible, 1,
+        "(Boolean visible) -> (ComponentResult _rv)"},
+       {"MCGetVisible", (PyCFunction)MovieCtlObj_MCGetVisible, 1,
+        "() -> (ComponentResult _rv)"},
+       {"MCGetControllerBoundsRect", (PyCFunction)MovieCtlObj_MCGetControllerBoundsRect, 1,
+        "() -> (ComponentResult _rv, Rect bounds)"},
+       {"MCSetControllerBoundsRect", (PyCFunction)MovieCtlObj_MCSetControllerBoundsRect, 1,
+        "(Rect bounds) -> (ComponentResult _rv)"},
+       {"MCGetControllerBoundsRgn", (PyCFunction)MovieCtlObj_MCGetControllerBoundsRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"MCGetWindowRgn", (PyCFunction)MovieCtlObj_MCGetWindowRgn, 1,
+        "(WindowPtr w) -> (RgnHandle _rv)"},
+       {"MCMovieChanged", (PyCFunction)MovieCtlObj_MCMovieChanged, 1,
+        "(Movie m) -> (ComponentResult _rv)"},
+       {"MCSetDuration", (PyCFunction)MovieCtlObj_MCSetDuration, 1,
+        "(TimeValue duration) -> (ComponentResult _rv)"},
+       {"MCGetCurrentTime", (PyCFunction)MovieCtlObj_MCGetCurrentTime, 1,
+        "() -> (TimeValue _rv, TimeScale scale)"},
+       {"MCNewAttachedController", (PyCFunction)MovieCtlObj_MCNewAttachedController, 1,
+        "(Movie theMovie, WindowPtr w, Point where) -> (ComponentResult _rv)"},
+       {"MCDraw", (PyCFunction)MovieCtlObj_MCDraw, 1,
+        "(WindowPtr w) -> (ComponentResult _rv)"},
+       {"MCActivate", (PyCFunction)MovieCtlObj_MCActivate, 1,
+        "(WindowPtr w, Boolean activate) -> (ComponentResult _rv)"},
+       {"MCIdle", (PyCFunction)MovieCtlObj_MCIdle, 1,
+        "() -> (ComponentResult _rv)"},
+       {"MCKey", (PyCFunction)MovieCtlObj_MCKey, 1,
+        "(SInt8 key, long modifiers) -> (ComponentResult _rv)"},
+       {"MCClick", (PyCFunction)MovieCtlObj_MCClick, 1,
+        "(WindowPtr w, Point where, long when, long modifiers) -> (ComponentResult _rv)"},
+       {"MCEnableEditing", (PyCFunction)MovieCtlObj_MCEnableEditing, 1,
+        "(Boolean enabled) -> (ComponentResult _rv)"},
+       {"MCIsEditingEnabled", (PyCFunction)MovieCtlObj_MCIsEditingEnabled, 1,
+        "() -> (long _rv)"},
+       {"MCCopy", (PyCFunction)MovieCtlObj_MCCopy, 1,
+        "() -> (Movie _rv)"},
+       {"MCCut", (PyCFunction)MovieCtlObj_MCCut, 1,
+        "() -> (Movie _rv)"},
+       {"MCPaste", (PyCFunction)MovieCtlObj_MCPaste, 1,
+        "(Movie srcMovie) -> (ComponentResult _rv)"},
+       {"MCClear", (PyCFunction)MovieCtlObj_MCClear, 1,
+        "() -> (ComponentResult _rv)"},
+       {"MCUndo", (PyCFunction)MovieCtlObj_MCUndo, 1,
+        "() -> (ComponentResult _rv)"},
+       {"MCPositionController", (PyCFunction)MovieCtlObj_MCPositionController, 1,
+        "(Rect movieRect, Rect controllerRect, long someFlags) -> (ComponentResult _rv)"},
+       {"MCGetControllerInfo", (PyCFunction)MovieCtlObj_MCGetControllerInfo, 1,
+        "() -> (ComponentResult _rv, long someFlags)"},
+       {"MCSetClip", (PyCFunction)MovieCtlObj_MCSetClip, 1,
+        "(RgnHandle theClip, RgnHandle movieClip) -> (ComponentResult _rv)"},
+       {"MCGetClip", (PyCFunction)MovieCtlObj_MCGetClip, 1,
+        "() -> (ComponentResult _rv, RgnHandle theClip, RgnHandle movieClip)"},
+       {"MCDrawBadge", (PyCFunction)MovieCtlObj_MCDrawBadge, 1,
+        "(RgnHandle movieRgn) -> (ComponentResult _rv, RgnHandle badgeRgn)"},
+       {"MCSetUpEditMenu", (PyCFunction)MovieCtlObj_MCSetUpEditMenu, 1,
+        "(long modifiers, MenuHandle mh) -> (ComponentResult _rv)"},
+       {"MCGetMenuString", (PyCFunction)MovieCtlObj_MCGetMenuString, 1,
+        "(long modifiers, short item, Str255 aString) -> (ComponentResult _rv)"},
+       {"MCPtInController", (PyCFunction)MovieCtlObj_MCPtInController, 1,
+        "(Point thePt) -> (ComponentResult _rv, Boolean inController)"},
+       {"MCInvalidate", (PyCFunction)MovieCtlObj_MCInvalidate, 1,
+        "(WindowPtr w, RgnHandle invalidRgn) -> (ComponentResult _rv)"},
+       {"MCAdjustCursor", (PyCFunction)MovieCtlObj_MCAdjustCursor, 1,
+        "(WindowPtr w, Point where, long modifiers) -> (ComponentResult _rv)"},
+       {"MCGetInterfaceElement", (PyCFunction)MovieCtlObj_MCGetInterfaceElement, 1,
+        "(MCInterfaceElement whichElement, void * element) -> (ComponentResult _rv)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain MovieCtlObj_chain = { MovieCtlObj_methods, NULL };
+
+static PyObject *MovieCtlObj_getattr(MovieControllerObject *self, char *name)
+{
+       return Py_FindMethodInChain(&MovieCtlObj_chain, (PyObject *)self, name);
+}
+
+#define MovieCtlObj_setattr NULL
+
+#define MovieCtlObj_compare NULL
+
+#define MovieCtlObj_repr NULL
+
+#define MovieCtlObj_hash NULL
+
+PyTypeObject MovieController_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "MovieController", /*tp_name*/
+       sizeof(MovieControllerObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) MovieCtlObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) MovieCtlObj_getattr, /*tp_getattr*/
+       (setattrfunc) MovieCtlObj_setattr, /*tp_setattr*/
+       (cmpfunc) MovieCtlObj_compare, /*tp_compare*/
+       (reprfunc) MovieCtlObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) MovieCtlObj_hash, /*tp_hash*/
+};
+
+/* ---------------- End object type MovieController ----------------- */
+
+
+/* ---------------------- Object type TimeBase ---------------------- */
+
+PyTypeObject TimeBase_Type;
+
+#define TimeBaseObj_Check(x) ((x)->ob_type == &TimeBase_Type)
+
+typedef struct TimeBaseObject {
+       PyObject_HEAD
+       TimeBase ob_itself;
+} TimeBaseObject;
+
+PyObject *TimeBaseObj_New(TimeBase itself)
+{
+       TimeBaseObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(Qt_Error,"Cannot create null TimeBase");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(TimeBaseObject, &TimeBase_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+TimeBaseObj_Convert(PyObject *v, TimeBase *p_itself)
+{
+       if (!TimeBaseObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "TimeBase required");
+               return 0;
+       }
+       *p_itself = ((TimeBaseObject *)v)->ob_itself;
+       return 1;
+}
+
+static void TimeBaseObj_dealloc(TimeBaseObject *self)
+{
+       /* Cleanup of self->ob_itself goes here */
+       PyMem_DEL(self);
+}
+
+static PyObject *TimeBaseObj_DisposeTimeBase(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DisposeTimeBase(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseTime(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       TimeScale s;
+       TimeRecord tr;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &s))
+               return NULL;
+       _rv = GetTimeBaseTime(_self->ob_itself,
+                             s,
+                             &tr);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            QtTimeRecord_New, &tr);
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseTime(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord tr;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             QtTimeRecord_Convert, &tr))
+               return NULL;
+       SetTimeBaseTime(_self->ob_itself,
+                       &tr);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseValue(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue t;
+       TimeScale s;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &t,
+                             &s))
+               return NULL;
+       SetTimeBaseValue(_self->ob_itself,
+                        t,
+                        s);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseRate(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTimeBaseRate(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildFixed, _rv);
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseRate(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed r;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetFixed, &r))
+               return NULL;
+       SetTimeBaseRate(_self->ob_itself,
+                       r);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseStartTime(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       TimeScale s;
+       TimeRecord tr;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &s))
+               return NULL;
+       _rv = GetTimeBaseStartTime(_self->ob_itself,
+                                  s,
+                                  &tr);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            QtTimeRecord_New, &tr);
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseStartTime(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord tr;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             QtTimeRecord_Convert, &tr))
+               return NULL;
+       SetTimeBaseStartTime(_self->ob_itself,
+                            &tr);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseStopTime(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       TimeScale s;
+       TimeRecord tr;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &s))
+               return NULL;
+       _rv = GetTimeBaseStopTime(_self->ob_itself,
+                                 s,
+                                 &tr);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            QtTimeRecord_New, &tr);
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseStopTime(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord tr;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             QtTimeRecord_Convert, &tr))
+               return NULL;
+       SetTimeBaseStopTime(_self->ob_itself,
+                           &tr);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseFlags(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTimeBaseFlags(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseFlags(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long timeBaseFlags;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &timeBaseFlags))
+               return NULL;
+       SetTimeBaseFlags(_self->ob_itself,
+                        timeBaseFlags);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseMasterTimeBase(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeBase master;
+       TimeRecord slaveZero;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             TimeBaseObj_Convert, &master,
+                             QtTimeRecord_Convert, &slaveZero))
+               return NULL;
+       SetTimeBaseMasterTimeBase(_self->ob_itself,
+                                 master,
+                                 &slaveZero);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseMasterTimeBase(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeBase _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTimeBaseMasterTimeBase(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            TimeBaseObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseMasterClock(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Component clockMeister;
+       TimeRecord slaveZero;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             CmpObj_Convert, &clockMeister,
+                             QtTimeRecord_Convert, &slaveZero))
+               return NULL;
+       SetTimeBaseMasterClock(_self->ob_itself,
+                              clockMeister,
+                              &slaveZero);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseMasterClock(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentInstance _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTimeBaseMasterClock(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            CmpInstObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseStatus(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       TimeRecord unpinnedTime;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTimeBaseStatus(_self->ob_itself,
+                               &unpinnedTime);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            QtTimeRecord_New, &unpinnedTime);
+       return _res;
+}
+
+static PyObject *TimeBaseObj_SetTimeBaseZero(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord zero;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             QtTimeRecord_Convert, &zero))
+               return NULL;
+       SetTimeBaseZero(_self->ob_itself,
+                       &zero);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TimeBaseObj_GetTimeBaseEffectiveRate(TimeBaseObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTimeBaseEffectiveRate(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildFixed, _rv);
+       return _res;
+}
+
+static PyMethodDef TimeBaseObj_methods[] = {
+       {"DisposeTimeBase", (PyCFunction)TimeBaseObj_DisposeTimeBase, 1,
+        "() -> None"},
+       {"GetTimeBaseTime", (PyCFunction)TimeBaseObj_GetTimeBaseTime, 1,
+        "(TimeScale s) -> (TimeValue _rv, TimeRecord tr)"},
+       {"SetTimeBaseTime", (PyCFunction)TimeBaseObj_SetTimeBaseTime, 1,
+        "(TimeRecord tr) -> None"},
+       {"SetTimeBaseValue", (PyCFunction)TimeBaseObj_SetTimeBaseValue, 1,
+        "(TimeValue t, TimeScale s) -> None"},
+       {"GetTimeBaseRate", (PyCFunction)TimeBaseObj_GetTimeBaseRate, 1,
+        "() -> (Fixed _rv)"},
+       {"SetTimeBaseRate", (PyCFunction)TimeBaseObj_SetTimeBaseRate, 1,
+        "(Fixed r) -> None"},
+       {"GetTimeBaseStartTime", (PyCFunction)TimeBaseObj_GetTimeBaseStartTime, 1,
+        "(TimeScale s) -> (TimeValue _rv, TimeRecord tr)"},
+       {"SetTimeBaseStartTime", (PyCFunction)TimeBaseObj_SetTimeBaseStartTime, 1,
+        "(TimeRecord tr) -> None"},
+       {"GetTimeBaseStopTime", (PyCFunction)TimeBaseObj_GetTimeBaseStopTime, 1,
+        "(TimeScale s) -> (TimeValue _rv, TimeRecord tr)"},
+       {"SetTimeBaseStopTime", (PyCFunction)TimeBaseObj_SetTimeBaseStopTime, 1,
+        "(TimeRecord tr) -> None"},
+       {"GetTimeBaseFlags", (PyCFunction)TimeBaseObj_GetTimeBaseFlags, 1,
+        "() -> (long _rv)"},
+       {"SetTimeBaseFlags", (PyCFunction)TimeBaseObj_SetTimeBaseFlags, 1,
+        "(long timeBaseFlags) -> None"},
+       {"SetTimeBaseMasterTimeBase", (PyCFunction)TimeBaseObj_SetTimeBaseMasterTimeBase, 1,
+        "(TimeBase master, TimeRecord slaveZero) -> None"},
+       {"GetTimeBaseMasterTimeBase", (PyCFunction)TimeBaseObj_GetTimeBaseMasterTimeBase, 1,
+        "() -> (TimeBase _rv)"},
+       {"SetTimeBaseMasterClock", (PyCFunction)TimeBaseObj_SetTimeBaseMasterClock, 1,
+        "(Component clockMeister, TimeRecord slaveZero) -> None"},
+       {"GetTimeBaseMasterClock", (PyCFunction)TimeBaseObj_GetTimeBaseMasterClock, 1,
+        "() -> (ComponentInstance _rv)"},
+       {"GetTimeBaseStatus", (PyCFunction)TimeBaseObj_GetTimeBaseStatus, 1,
+        "() -> (long _rv, TimeRecord unpinnedTime)"},
+       {"SetTimeBaseZero", (PyCFunction)TimeBaseObj_SetTimeBaseZero, 1,
+        "(TimeRecord zero) -> None"},
+       {"GetTimeBaseEffectiveRate", (PyCFunction)TimeBaseObj_GetTimeBaseEffectiveRate, 1,
+        "() -> (Fixed _rv)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain TimeBaseObj_chain = { TimeBaseObj_methods, NULL };
+
+static PyObject *TimeBaseObj_getattr(TimeBaseObject *self, char *name)
+{
+       return Py_FindMethodInChain(&TimeBaseObj_chain, (PyObject *)self, name);
+}
+
+#define TimeBaseObj_setattr NULL
+
+#define TimeBaseObj_compare NULL
+
+#define TimeBaseObj_repr NULL
+
+#define TimeBaseObj_hash NULL
+
+PyTypeObject TimeBase_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "TimeBase", /*tp_name*/
+       sizeof(TimeBaseObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) TimeBaseObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) TimeBaseObj_getattr, /*tp_getattr*/
+       (setattrfunc) TimeBaseObj_setattr, /*tp_setattr*/
+       (cmpfunc) TimeBaseObj_compare, /*tp_compare*/
+       (reprfunc) TimeBaseObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) TimeBaseObj_hash, /*tp_hash*/
+};
+
+/* -------------------- End object type TimeBase -------------------- */
+
+
+/* ---------------------- Object type UserData ---------------------- */
+
+PyTypeObject UserData_Type;
+
+#define UserDataObj_Check(x) ((x)->ob_type == &UserData_Type)
+
+typedef struct UserDataObject {
+       PyObject_HEAD
+       UserData ob_itself;
+} UserDataObject;
+
+PyObject *UserDataObj_New(UserData itself)
+{
+       UserDataObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(Qt_Error,"Cannot create null UserData");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(UserDataObject, &UserData_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+UserDataObj_Convert(PyObject *v, UserData *p_itself)
+{
+       if (!UserDataObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "UserData required");
+               return 0;
+       }
+       *p_itself = ((UserDataObject *)v)->ob_itself;
+       return 1;
+}
+
+static void UserDataObj_dealloc(UserDataObject *self)
+{
+       DisposeUserData(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *UserDataObj_GetUserData(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle data;
+       OSType udType;
+       long index;
+       if (!PyArg_ParseTuple(_args, "O&O&l",
+                             ResObj_Convert, &data,
+                             PyMac_GetOSType, &udType,
+                             &index))
+               return NULL;
+       _err = GetUserData(_self->ob_itself,
+                          data,
+                          udType,
+                          index);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *UserDataObj_AddUserData(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle data;
+       OSType udType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &data,
+                             PyMac_GetOSType, &udType))
+               return NULL;
+       _err = AddUserData(_self->ob_itself,
+                          data,
+                          udType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *UserDataObj_RemoveUserData(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType udType;
+       long index;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetOSType, &udType,
+                             &index))
+               return NULL;
+       _err = RemoveUserData(_self->ob_itself,
+                             udType,
+                             index);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *UserDataObj_CountUserDataType(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       OSType udType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &udType))
+               return NULL;
+       _rv = CountUserDataType(_self->ob_itself,
+                               udType);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *UserDataObj_GetNextUserDataType(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       OSType udType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &udType))
+               return NULL;
+       _rv = GetNextUserDataType(_self->ob_itself,
+                                 udType);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *UserDataObj_AddUserDataText(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle data;
+       OSType udType;
+       long index;
+       short itlRegionTag;
+       if (!PyArg_ParseTuple(_args, "O&O&lh",
+                             ResObj_Convert, &data,
+                             PyMac_GetOSType, &udType,
+                             &index,
+                             &itlRegionTag))
+               return NULL;
+       _err = AddUserDataText(_self->ob_itself,
+                              data,
+                              udType,
+                              index,
+                              itlRegionTag);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *UserDataObj_GetUserDataText(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle data;
+       OSType udType;
+       long index;
+       short itlRegionTag;
+       if (!PyArg_ParseTuple(_args, "O&O&lh",
+                             ResObj_Convert, &data,
+                             PyMac_GetOSType, &udType,
+                             &index,
+                             &itlRegionTag))
+               return NULL;
+       _err = GetUserDataText(_self->ob_itself,
+                              data,
+                              udType,
+                              index,
+                              itlRegionTag);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *UserDataObj_RemoveUserDataText(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType udType;
+       long index;
+       short itlRegionTag;
+       if (!PyArg_ParseTuple(_args, "O&lh",
+                             PyMac_GetOSType, &udType,
+                             &index,
+                             &itlRegionTag))
+               return NULL;
+       _err = RemoveUserDataText(_self->ob_itself,
+                                 udType,
+                                 index,
+                                 itlRegionTag);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *UserDataObj_PutUserDataIntoHandle(UserDataObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle h;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &h))
+               return NULL;
+       _err = PutUserDataIntoHandle(_self->ob_itself,
+                                    h);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyMethodDef UserDataObj_methods[] = {
+       {"GetUserData", (PyCFunction)UserDataObj_GetUserData, 1,
+        "(Handle data, OSType udType, long index) -> None"},
+       {"AddUserData", (PyCFunction)UserDataObj_AddUserData, 1,
+        "(Handle data, OSType udType) -> None"},
+       {"RemoveUserData", (PyCFunction)UserDataObj_RemoveUserData, 1,
+        "(OSType udType, long index) -> None"},
+       {"CountUserDataType", (PyCFunction)UserDataObj_CountUserDataType, 1,
+        "(OSType udType) -> (short _rv)"},
+       {"GetNextUserDataType", (PyCFunction)UserDataObj_GetNextUserDataType, 1,
+        "(OSType udType) -> (long _rv)"},
+       {"AddUserDataText", (PyCFunction)UserDataObj_AddUserDataText, 1,
+        "(Handle data, OSType udType, long index, short itlRegionTag) -> None"},
+       {"GetUserDataText", (PyCFunction)UserDataObj_GetUserDataText, 1,
+        "(Handle data, OSType udType, long index, short itlRegionTag) -> None"},
+       {"RemoveUserDataText", (PyCFunction)UserDataObj_RemoveUserDataText, 1,
+        "(OSType udType, long index, short itlRegionTag) -> None"},
+       {"PutUserDataIntoHandle", (PyCFunction)UserDataObj_PutUserDataIntoHandle, 1,
+        "(Handle h) -> None"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain UserDataObj_chain = { UserDataObj_methods, NULL };
+
+static PyObject *UserDataObj_getattr(UserDataObject *self, char *name)
+{
+       return Py_FindMethodInChain(&UserDataObj_chain, (PyObject *)self, name);
+}
+
+#define UserDataObj_setattr NULL
+
+#define UserDataObj_compare NULL
+
+#define UserDataObj_repr NULL
+
+#define UserDataObj_hash NULL
+
+PyTypeObject UserData_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "UserData", /*tp_name*/
+       sizeof(UserDataObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) UserDataObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) UserDataObj_getattr, /*tp_getattr*/
+       (setattrfunc) UserDataObj_setattr, /*tp_setattr*/
+       (cmpfunc) UserDataObj_compare, /*tp_compare*/
+       (reprfunc) UserDataObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) UserDataObj_hash, /*tp_hash*/
+};
+
+/* -------------------- End object type UserData -------------------- */
+
+
+/* ----------------------- Object type Media ------------------------ */
+
+PyTypeObject Media_Type;
+
+#define MediaObj_Check(x) ((x)->ob_type == &Media_Type)
+
+typedef struct MediaObject {
+       PyObject_HEAD
+       Media ob_itself;
+} MediaObject;
+
+PyObject *MediaObj_New(Media itself)
+{
+       MediaObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(Qt_Error,"Cannot create null Media");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(MediaObject, &Media_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+MediaObj_Convert(PyObject *v, Media *p_itself)
+{
+       if (!MediaObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "Media required");
+               return 0;
+       }
+       *p_itself = ((MediaObject *)v)->ob_itself;
+       return 1;
+}
+
+static void MediaObj_dealloc(MediaObject *self)
+{
+       DisposeTrackMedia(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *MediaObj_LoadMediaIntoRam(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue time;
+       TimeValue duration;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "lll",
+                             &time,
+                             &duration,
+                             &flags))
+               return NULL;
+       _err = LoadMediaIntoRam(_self->ob_itself,
+                               time,
+                               duration,
+                               flags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaTrack(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaTrack(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaCreationTime(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       unsigned long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaCreationTime(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaModificationTime(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       unsigned long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaModificationTime(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaTimeScale(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeScale _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaTimeScale(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaTimeScale(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeScale timeScale;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &timeScale))
+               return NULL;
+       SetMediaTimeScale(_self->ob_itself,
+                         timeScale);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaDuration(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaDuration(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaLanguage(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaLanguage(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaLanguage(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short language;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &language))
+               return NULL;
+       SetMediaLanguage(_self->ob_itself,
+                        language);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaQuality(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaQuality(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaQuality(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short quality;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &quality))
+               return NULL;
+       SetMediaQuality(_self->ob_itself,
+                       quality);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaHandlerDescription(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSType mediaType;
+       Str255 creatorName;
+       OSType creatorManufacturer;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetStr255, creatorName))
+               return NULL;
+       GetMediaHandlerDescription(_self->ob_itself,
+                                  &mediaType,
+                                  creatorName,
+                                  &creatorManufacturer);
+       _res = Py_BuildValue("O&O&",
+                            PyMac_BuildOSType, mediaType,
+                            PyMac_BuildOSType, creatorManufacturer);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaUserData(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UserData _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaUserData(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            UserDataObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaHandler(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MediaHandler _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaHandler(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            CmpInstObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaHandler(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       MediaHandlerComponent mH;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpObj_Convert, &mH))
+               return NULL;
+       _err = SetMediaHandler(_self->ob_itself,
+                              mH);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_BeginMediaEdits(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = BeginMediaEdits(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_EndMediaEdits(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = EndMediaEdits(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaDefaultDataRefIndex(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short index;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &index))
+               return NULL;
+       _err = SetMediaDefaultDataRefIndex(_self->ob_itself,
+                                          index);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaDataHandlerDescription(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short index;
+       OSType dhType;
+       Str255 creatorName;
+       OSType creatorManufacturer;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &index,
+                             PyMac_GetStr255, creatorName))
+               return NULL;
+       GetMediaDataHandlerDescription(_self->ob_itself,
+                                      index,
+                                      &dhType,
+                                      creatorName,
+                                      &creatorManufacturer);
+       _res = Py_BuildValue("O&O&",
+                            PyMac_BuildOSType, dhType,
+                            PyMac_BuildOSType, creatorManufacturer);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaDataHandler(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       DataHandler _rv;
+       short index;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &index))
+               return NULL;
+       _rv = GetMediaDataHandler(_self->ob_itself,
+                                 index);
+       _res = Py_BuildValue("O&",
+                            CmpInstObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaDataHandler(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short index;
+       DataHandlerComponent dataHandler;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &index,
+                             CmpObj_Convert, &dataHandler))
+               return NULL;
+       _err = SetMediaDataHandler(_self->ob_itself,
+                                  index,
+                                  dataHandler);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaSampleDescriptionCount(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaSampleDescriptionCount(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaSampleDescription(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long index;
+       SampleDescriptionHandle descH;
+       if (!PyArg_ParseTuple(_args, "lO&",
+                             &index,
+                             ResObj_Convert, &descH))
+               return NULL;
+       GetMediaSampleDescription(_self->ob_itself,
+                                 index,
+                                 descH);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaSampleDescription(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long index;
+       SampleDescriptionHandle descH;
+       if (!PyArg_ParseTuple(_args, "lO&",
+                             &index,
+                             ResObj_Convert, &descH))
+               return NULL;
+       _err = SetMediaSampleDescription(_self->ob_itself,
+                                        index,
+                                        descH);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaSampleCount(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaSampleCount(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaSyncSampleCount(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMediaSyncSampleCount(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_SampleNumToMediaTime(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long logicalSampleNum;
+       TimeValue sampleTime;
+       TimeValue sampleDuration;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &logicalSampleNum))
+               return NULL;
+       SampleNumToMediaTime(_self->ob_itself,
+                            logicalSampleNum,
+                            &sampleTime,
+                            &sampleDuration);
+       _res = Py_BuildValue("ll",
+                            sampleTime,
+                            sampleDuration);
+       return _res;
+}
+
+static PyObject *MediaObj_MediaTimeToSampleNum(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue time;
+       long sampleNum;
+       TimeValue sampleTime;
+       TimeValue sampleDuration;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &time))
+               return NULL;
+       MediaTimeToSampleNum(_self->ob_itself,
+                            time,
+                            &sampleNum,
+                            &sampleTime,
+                            &sampleDuration);
+       _res = Py_BuildValue("lll",
+                            sampleNum,
+                            sampleTime,
+                            sampleDuration);
+       return _res;
+}
+
+static PyObject *MediaObj_AddMediaSample(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle dataIn;
+       long inOffset;
+       unsigned long size;
+       TimeValue durationPerSample;
+       SampleDescriptionHandle sampleDescriptionH;
+       long numberOfSamples;
+       short sampleFlags;
+       TimeValue sampleTime;
+       if (!PyArg_ParseTuple(_args, "O&lllO&lh",
+                             ResObj_Convert, &dataIn,
+                             &inOffset,
+                             &size,
+                             &durationPerSample,
+                             ResObj_Convert, &sampleDescriptionH,
+                             &numberOfSamples,
+                             &sampleFlags))
+               return NULL;
+       _err = AddMediaSample(_self->ob_itself,
+                             dataIn,
+                             inOffset,
+                             size,
+                             durationPerSample,
+                             sampleDescriptionH,
+                             numberOfSamples,
+                             sampleFlags,
+                             &sampleTime);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            sampleTime);
+       return _res;
+}
+
+static PyObject *MediaObj_AddMediaSampleReference(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long dataOffset;
+       unsigned long size;
+       TimeValue durationPerSample;
+       SampleDescriptionHandle sampleDescriptionH;
+       long numberOfSamples;
+       short sampleFlags;
+       TimeValue sampleTime;
+       if (!PyArg_ParseTuple(_args, "lllO&lh",
+                             &dataOffset,
+                             &size,
+                             &durationPerSample,
+                             ResObj_Convert, &sampleDescriptionH,
+                             &numberOfSamples,
+                             &sampleFlags))
+               return NULL;
+       _err = AddMediaSampleReference(_self->ob_itself,
+                                      dataOffset,
+                                      size,
+                                      durationPerSample,
+                                      sampleDescriptionH,
+                                      numberOfSamples,
+                                      sampleFlags,
+                                      &sampleTime);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            sampleTime);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaSample(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle dataOut;
+       long maxSizeToGrow;
+       long size;
+       TimeValue time;
+       TimeValue sampleTime;
+       TimeValue durationPerSample;
+       SampleDescriptionHandle sampleDescriptionH;
+       long sampleDescriptionIndex;
+       long maxNumberOfSamples;
+       long numberOfSamples;
+       short sampleFlags;
+       if (!PyArg_ParseTuple(_args, "O&llO&l",
+                             ResObj_Convert, &dataOut,
+                             &maxSizeToGrow,
+                             &time,
+                             ResObj_Convert, &sampleDescriptionH,
+                             &maxNumberOfSamples))
+               return NULL;
+       _err = GetMediaSample(_self->ob_itself,
+                             dataOut,
+                             maxSizeToGrow,
+                             &size,
+                             time,
+                             &sampleTime,
+                             &durationPerSample,
+                             sampleDescriptionH,
+                             &sampleDescriptionIndex,
+                             maxNumberOfSamples,
+                             &numberOfSamples,
+                             &sampleFlags);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("lllllh",
+                            size,
+                            sampleTime,
+                            durationPerSample,
+                            sampleDescriptionIndex,
+                            numberOfSamples,
+                            sampleFlags);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaSampleReference(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long dataOffset;
+       long size;
+       TimeValue time;
+       TimeValue sampleTime;
+       TimeValue durationPerSample;
+       SampleDescriptionHandle sampleDescriptionH;
+       long sampleDescriptionIndex;
+       long maxNumberOfSamples;
+       long numberOfSamples;
+       short sampleFlags;
+       if (!PyArg_ParseTuple(_args, "lO&l",
+                             &time,
+                             ResObj_Convert, &sampleDescriptionH,
+                             &maxNumberOfSamples))
+               return NULL;
+       _err = GetMediaSampleReference(_self->ob_itself,
+                                      &dataOffset,
+                                      &size,
+                                      time,
+                                      &sampleTime,
+                                      &durationPerSample,
+                                      sampleDescriptionH,
+                                      &sampleDescriptionIndex,
+                                      maxNumberOfSamples,
+                                      &numberOfSamples,
+                                      &sampleFlags);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("llllllh",
+                            dataOffset,
+                            size,
+                            sampleTime,
+                            durationPerSample,
+                            sampleDescriptionIndex,
+                            numberOfSamples,
+                            sampleFlags);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaPreferredChunkSize(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long maxChunkSize;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &maxChunkSize))
+               return NULL;
+       _err = SetMediaPreferredChunkSize(_self->ob_itself,
+                                         maxChunkSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaPreferredChunkSize(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long maxChunkSize;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMediaPreferredChunkSize(_self->ob_itself,
+                                         &maxChunkSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            maxChunkSize);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaShadowSync(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long frameDiffSampleNum;
+       long syncSampleNum;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &frameDiffSampleNum,
+                             &syncSampleNum))
+               return NULL;
+       _err = SetMediaShadowSync(_self->ob_itself,
+                                 frameDiffSampleNum,
+                                 syncSampleNum);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaShadowSync(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long frameDiffSampleNum;
+       long syncSampleNum;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &frameDiffSampleNum))
+               return NULL;
+       _err = GetMediaShadowSync(_self->ob_itself,
+                                 frameDiffSampleNum,
+                                 &syncSampleNum);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            syncSampleNum);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaDataSize(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       TimeValue startTime;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       _rv = GetMediaDataSize(_self->ob_itself,
+                              startTime,
+                              duration);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaDataSize64(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue startTime;
+       TimeValue duration;
+       wide dataSize;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       _err = GetMediaDataSize64(_self->ob_itself,
+                                 startTime,
+                                 duration,
+                                 &dataSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_Buildwide, dataSize);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaNextInterestingTime(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short interestingTimeFlags;
+       TimeValue time;
+       Fixed rate;
+       TimeValue interestingTime;
+       TimeValue interestingDuration;
+       if (!PyArg_ParseTuple(_args, "hlO&",
+                             &interestingTimeFlags,
+                             &time,
+                             PyMac_GetFixed, &rate))
+               return NULL;
+       GetMediaNextInterestingTime(_self->ob_itself,
+                                   interestingTimeFlags,
+                                   time,
+                                   rate,
+                                   &interestingTime,
+                                   &interestingDuration);
+       _res = Py_BuildValue("ll",
+                            interestingTime,
+                            interestingDuration);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaDataRef(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short index;
+       Handle dataRef;
+       OSType dataRefType;
+       long dataRefAttributes;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &index))
+               return NULL;
+       _err = GetMediaDataRef(_self->ob_itself,
+                              index,
+                              &dataRef,
+                              &dataRefType,
+                              &dataRefAttributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&O&l",
+                            ResObj_New, dataRef,
+                            PyMac_BuildOSType, dataRefType,
+                            dataRefAttributes);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaDataRef(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short index;
+       Handle dataRef;
+       OSType dataRefType;
+       if (!PyArg_ParseTuple(_args, "hO&O&",
+                             &index,
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataRefType))
+               return NULL;
+       _err = SetMediaDataRef(_self->ob_itself,
+                              index,
+                              dataRef,
+                              dataRefType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaDataRefAttributes(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short index;
+       long dataRefAttributes;
+       if (!PyArg_ParseTuple(_args, "hl",
+                             &index,
+                             &dataRefAttributes))
+               return NULL;
+       _err = SetMediaDataRefAttributes(_self->ob_itself,
+                                        index,
+                                        dataRefAttributes);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_AddMediaDataRef(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short index;
+       Handle dataRef;
+       OSType dataRefType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataRefType))
+               return NULL;
+       _err = AddMediaDataRef(_self->ob_itself,
+                              &index,
+                              dataRef,
+                              dataRefType);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            index);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaDataRefCount(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short count;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMediaDataRefCount(_self->ob_itself,
+                                   &count);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            count);
+       return _res;
+}
+
+static PyObject *MediaObj_SetMediaPlayHints(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long flags;
+       long flagsMask;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &flags,
+                             &flagsMask))
+               return NULL;
+       SetMediaPlayHints(_self->ob_itself,
+                         flags,
+                         flagsMask);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaPlayHints(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long flags;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetMediaPlayHints(_self->ob_itself,
+                         &flags);
+       _res = Py_BuildValue("l",
+                            flags);
+       return _res;
+}
+
+static PyObject *MediaObj_GetMediaNextInterestingTimeOnly(MediaObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short interestingTimeFlags;
+       TimeValue time;
+       Fixed rate;
+       TimeValue interestingTime;
+       if (!PyArg_ParseTuple(_args, "hlO&",
+                             &interestingTimeFlags,
+                             &time,
+                             PyMac_GetFixed, &rate))
+               return NULL;
+       GetMediaNextInterestingTimeOnly(_self->ob_itself,
+                                       interestingTimeFlags,
+                                       time,
+                                       rate,
+                                       &interestingTime);
+       _res = Py_BuildValue("l",
+                            interestingTime);
+       return _res;
+}
+
+static PyMethodDef MediaObj_methods[] = {
+       {"LoadMediaIntoRam", (PyCFunction)MediaObj_LoadMediaIntoRam, 1,
+        "(TimeValue time, TimeValue duration, long flags) -> None"},
+       {"GetMediaTrack", (PyCFunction)MediaObj_GetMediaTrack, 1,
+        "() -> (Track _rv)"},
+       {"GetMediaCreationTime", (PyCFunction)MediaObj_GetMediaCreationTime, 1,
+        "() -> (unsigned long _rv)"},
+       {"GetMediaModificationTime", (PyCFunction)MediaObj_GetMediaModificationTime, 1,
+        "() -> (unsigned long _rv)"},
+       {"GetMediaTimeScale", (PyCFunction)MediaObj_GetMediaTimeScale, 1,
+        "() -> (TimeScale _rv)"},
+       {"SetMediaTimeScale", (PyCFunction)MediaObj_SetMediaTimeScale, 1,
+        "(TimeScale timeScale) -> None"},
+       {"GetMediaDuration", (PyCFunction)MediaObj_GetMediaDuration, 1,
+        "() -> (TimeValue _rv)"},
+       {"GetMediaLanguage", (PyCFunction)MediaObj_GetMediaLanguage, 1,
+        "() -> (short _rv)"},
+       {"SetMediaLanguage", (PyCFunction)MediaObj_SetMediaLanguage, 1,
+        "(short language) -> None"},
+       {"GetMediaQuality", (PyCFunction)MediaObj_GetMediaQuality, 1,
+        "() -> (short _rv)"},
+       {"SetMediaQuality", (PyCFunction)MediaObj_SetMediaQuality, 1,
+        "(short quality) -> None"},
+       {"GetMediaHandlerDescription", (PyCFunction)MediaObj_GetMediaHandlerDescription, 1,
+        "(Str255 creatorName) -> (OSType mediaType, OSType creatorManufacturer)"},
+       {"GetMediaUserData", (PyCFunction)MediaObj_GetMediaUserData, 1,
+        "() -> (UserData _rv)"},
+       {"GetMediaHandler", (PyCFunction)MediaObj_GetMediaHandler, 1,
+        "() -> (MediaHandler _rv)"},
+       {"SetMediaHandler", (PyCFunction)MediaObj_SetMediaHandler, 1,
+        "(MediaHandlerComponent mH) -> None"},
+       {"BeginMediaEdits", (PyCFunction)MediaObj_BeginMediaEdits, 1,
+        "() -> None"},
+       {"EndMediaEdits", (PyCFunction)MediaObj_EndMediaEdits, 1,
+        "() -> None"},
+       {"SetMediaDefaultDataRefIndex", (PyCFunction)MediaObj_SetMediaDefaultDataRefIndex, 1,
+        "(short index) -> None"},
+       {"GetMediaDataHandlerDescription", (PyCFunction)MediaObj_GetMediaDataHandlerDescription, 1,
+        "(short index, Str255 creatorName) -> (OSType dhType, OSType creatorManufacturer)"},
+       {"GetMediaDataHandler", (PyCFunction)MediaObj_GetMediaDataHandler, 1,
+        "(short index) -> (DataHandler _rv)"},
+       {"SetMediaDataHandler", (PyCFunction)MediaObj_SetMediaDataHandler, 1,
+        "(short index, DataHandlerComponent dataHandler) -> None"},
+       {"GetMediaSampleDescriptionCount", (PyCFunction)MediaObj_GetMediaSampleDescriptionCount, 1,
+        "() -> (long _rv)"},
+       {"GetMediaSampleDescription", (PyCFunction)MediaObj_GetMediaSampleDescription, 1,
+        "(long index, SampleDescriptionHandle descH) -> None"},
+       {"SetMediaSampleDescription", (PyCFunction)MediaObj_SetMediaSampleDescription, 1,
+        "(long index, SampleDescriptionHandle descH) -> None"},
+       {"GetMediaSampleCount", (PyCFunction)MediaObj_GetMediaSampleCount, 1,
+        "() -> (long _rv)"},
+       {"GetMediaSyncSampleCount", (PyCFunction)MediaObj_GetMediaSyncSampleCount, 1,
+        "() -> (long _rv)"},
+       {"SampleNumToMediaTime", (PyCFunction)MediaObj_SampleNumToMediaTime, 1,
+        "(long logicalSampleNum) -> (TimeValue sampleTime, TimeValue sampleDuration)"},
+       {"MediaTimeToSampleNum", (PyCFunction)MediaObj_MediaTimeToSampleNum, 1,
+        "(TimeValue time) -> (long sampleNum, TimeValue sampleTime, TimeValue sampleDuration)"},
+       {"AddMediaSample", (PyCFunction)MediaObj_AddMediaSample, 1,
+        "(Handle dataIn, long inOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags) -> (TimeValue sampleTime)"},
+       {"AddMediaSampleReference", (PyCFunction)MediaObj_AddMediaSampleReference, 1,
+        "(long dataOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags) -> (TimeValue sampleTime)"},
+       {"GetMediaSample", (PyCFunction)MediaObj_GetMediaSample, 1,
+        "(Handle dataOut, long maxSizeToGrow, TimeValue time, SampleDescriptionHandle sampleDescriptionH, long maxNumberOfSamples) -> (long size, TimeValue sampleTime, TimeValue durationPerSample, long sampleDescriptionIndex, long numberOfSamples, short sampleFlags)"},
+       {"GetMediaSampleReference", (PyCFunction)MediaObj_GetMediaSampleReference, 1,
+        "(TimeValue time, SampleDescriptionHandle sampleDescriptionH, long maxNumberOfSamples) -> (long dataOffset, long size, TimeValue sampleTime, TimeValue durationPerSample, long sampleDescriptionIndex, long numberOfSamples, short sampleFlags)"},
+       {"SetMediaPreferredChunkSize", (PyCFunction)MediaObj_SetMediaPreferredChunkSize, 1,
+        "(long maxChunkSize) -> None"},
+       {"GetMediaPreferredChunkSize", (PyCFunction)MediaObj_GetMediaPreferredChunkSize, 1,
+        "() -> (long maxChunkSize)"},
+       {"SetMediaShadowSync", (PyCFunction)MediaObj_SetMediaShadowSync, 1,
+        "(long frameDiffSampleNum, long syncSampleNum) -> None"},
+       {"GetMediaShadowSync", (PyCFunction)MediaObj_GetMediaShadowSync, 1,
+        "(long frameDiffSampleNum) -> (long syncSampleNum)"},
+       {"GetMediaDataSize", (PyCFunction)MediaObj_GetMediaDataSize, 1,
+        "(TimeValue startTime, TimeValue duration) -> (long _rv)"},
+       {"GetMediaDataSize64", (PyCFunction)MediaObj_GetMediaDataSize64, 1,
+        "(TimeValue startTime, TimeValue duration) -> (wide dataSize)"},
+       {"GetMediaNextInterestingTime", (PyCFunction)MediaObj_GetMediaNextInterestingTime, 1,
+        "(short interestingTimeFlags, TimeValue time, Fixed rate) -> (TimeValue interestingTime, TimeValue interestingDuration)"},
+       {"GetMediaDataRef", (PyCFunction)MediaObj_GetMediaDataRef, 1,
+        "(short index) -> (Handle dataRef, OSType dataRefType, long dataRefAttributes)"},
+       {"SetMediaDataRef", (PyCFunction)MediaObj_SetMediaDataRef, 1,
+        "(short index, Handle dataRef, OSType dataRefType) -> None"},
+       {"SetMediaDataRefAttributes", (PyCFunction)MediaObj_SetMediaDataRefAttributes, 1,
+        "(short index, long dataRefAttributes) -> None"},
+       {"AddMediaDataRef", (PyCFunction)MediaObj_AddMediaDataRef, 1,
+        "(Handle dataRef, OSType dataRefType) -> (short index)"},
+       {"GetMediaDataRefCount", (PyCFunction)MediaObj_GetMediaDataRefCount, 1,
+        "() -> (short count)"},
+       {"SetMediaPlayHints", (PyCFunction)MediaObj_SetMediaPlayHints, 1,
+        "(long flags, long flagsMask) -> None"},
+       {"GetMediaPlayHints", (PyCFunction)MediaObj_GetMediaPlayHints, 1,
+        "() -> (long flags)"},
+       {"GetMediaNextInterestingTimeOnly", (PyCFunction)MediaObj_GetMediaNextInterestingTimeOnly, 1,
+        "(short interestingTimeFlags, TimeValue time, Fixed rate) -> (TimeValue interestingTime)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain MediaObj_chain = { MediaObj_methods, NULL };
+
+static PyObject *MediaObj_getattr(MediaObject *self, char *name)
+{
+       return Py_FindMethodInChain(&MediaObj_chain, (PyObject *)self, name);
+}
+
+#define MediaObj_setattr NULL
+
+#define MediaObj_compare NULL
+
+#define MediaObj_repr NULL
+
+#define MediaObj_hash NULL
+
+PyTypeObject Media_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "Media", /*tp_name*/
+       sizeof(MediaObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) MediaObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) MediaObj_getattr, /*tp_getattr*/
+       (setattrfunc) MediaObj_setattr, /*tp_setattr*/
+       (cmpfunc) MediaObj_compare, /*tp_compare*/
+       (reprfunc) MediaObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) MediaObj_hash, /*tp_hash*/
+};
+
+/* --------------------- End object type Media ---------------------- */
+
+
+/* ----------------------- Object type Track ------------------------ */
+
+PyTypeObject Track_Type;
+
+#define TrackObj_Check(x) ((x)->ob_type == &Track_Type)
+
+typedef struct TrackObject {
+       PyObject_HEAD
+       Track ob_itself;
+} TrackObject;
+
+PyObject *TrackObj_New(Track itself)
+{
+       TrackObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(Qt_Error,"Cannot create null Track");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(TrackObject, &Track_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+TrackObj_Convert(PyObject *v, Track *p_itself)
+{
+       if (!TrackObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "Track required");
+               return 0;
+       }
+       *p_itself = ((TrackObject *)v)->ob_itself;
+       return 1;
+}
+
+static void TrackObj_dealloc(TrackObject *self)
+{
+       DisposeMovieTrack(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *TrackObj_LoadTrackIntoRam(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue time;
+       TimeValue duration;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "lll",
+                             &time,
+                             &duration,
+                             &flags))
+               return NULL;
+       _err = LoadTrackIntoRam(_self->ob_itself,
+                               time,
+                               duration,
+                               flags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackPict(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PicHandle _rv;
+       TimeValue time;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &time))
+               return NULL;
+       _rv = GetTrackPict(_self->ob_itself,
+                          time);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackClipRgn(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackClipRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackClipRgn(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle theClip;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theClip))
+               return NULL;
+       SetTrackClipRgn(_self->ob_itself,
+                       theClip);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackDisplayBoundsRgn(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackDisplayBoundsRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackMovieBoundsRgn(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackMovieBoundsRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackBoundsRgn(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackBoundsRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackMatte(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackMatte(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackMatte(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle theMatte;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theMatte))
+               return NULL;
+       SetTrackMatte(_self->ob_itself,
+                     theMatte);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackID(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackID(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackMovie(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackMovie(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackCreationTime(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       unsigned long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackCreationTime(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackModificationTime(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       unsigned long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackModificationTime(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackEnabled(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackEnabled(_self->ob_itself);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackEnabled(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean isEnabled;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &isEnabled))
+               return NULL;
+       SetTrackEnabled(_self->ob_itself,
+                       isEnabled);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackUsage(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackUsage(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackUsage(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long usage;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &usage))
+               return NULL;
+       SetTrackUsage(_self->ob_itself,
+                     usage);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackDuration(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackDuration(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackOffset(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackOffset(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackOffset(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue movieOffsetTime;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &movieOffsetTime))
+               return NULL;
+       SetTrackOffset(_self->ob_itself,
+                      movieOffsetTime);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackLayer(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackLayer(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackLayer(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short layer;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &layer))
+               return NULL;
+       SetTrackLayer(_self->ob_itself,
+                     layer);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackAlternate(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackAlternate(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackAlternate(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track alternateT;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             TrackObj_Convert, &alternateT))
+               return NULL;
+       SetTrackAlternate(_self->ob_itself,
+                         alternateT);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackVolume(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackVolume(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackVolume(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short volume;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &volume))
+               return NULL;
+       SetTrackVolume(_self->ob_itself,
+                      volume);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackDimensions(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed width;
+       Fixed height;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetTrackDimensions(_self->ob_itself,
+                          &width,
+                          &height);
+       _res = Py_BuildValue("O&O&",
+                            PyMac_BuildFixed, width,
+                            PyMac_BuildFixed, height);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackDimensions(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed width;
+       Fixed height;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetFixed, &width,
+                             PyMac_GetFixed, &height))
+               return NULL;
+       SetTrackDimensions(_self->ob_itself,
+                          width,
+                          height);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackUserData(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UserData _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackUserData(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            UserDataObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackSoundLocalizationSettings(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle settings;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetTrackSoundLocalizationSettings(_self->ob_itself,
+                                                &settings);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, settings);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackSoundLocalizationSettings(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle settings;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &settings))
+               return NULL;
+       _err = SetTrackSoundLocalizationSettings(_self->ob_itself,
+                                                settings);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_NewTrackMedia(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Media _rv;
+       OSType mediaType;
+       TimeScale timeScale;
+       Handle dataRef;
+       OSType dataRefType;
+       if (!PyArg_ParseTuple(_args, "O&lO&O&",
+                             PyMac_GetOSType, &mediaType,
+                             &timeScale,
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataRefType))
+               return NULL;
+       _rv = NewTrackMedia(_self->ob_itself,
+                           mediaType,
+                           timeScale,
+                           dataRef,
+                           dataRefType);
+       _res = Py_BuildValue("O&",
+                            MediaObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackMedia(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Media _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackMedia(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            MediaObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_InsertMediaIntoTrack(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue trackStart;
+       TimeValue mediaTime;
+       TimeValue mediaDuration;
+       Fixed mediaRate;
+       if (!PyArg_ParseTuple(_args, "lllO&",
+                             &trackStart,
+                             &mediaTime,
+                             &mediaDuration,
+                             PyMac_GetFixed, &mediaRate))
+               return NULL;
+       _err = InsertMediaIntoTrack(_self->ob_itself,
+                                   trackStart,
+                                   mediaTime,
+                                   mediaDuration,
+                                   mediaRate);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_InsertTrackSegment(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Track dstTrack;
+       TimeValue srcIn;
+       TimeValue srcDuration;
+       TimeValue dstIn;
+       if (!PyArg_ParseTuple(_args, "O&lll",
+                             TrackObj_Convert, &dstTrack,
+                             &srcIn,
+                             &srcDuration,
+                             &dstIn))
+               return NULL;
+       _err = InsertTrackSegment(_self->ob_itself,
+                                 dstTrack,
+                                 srcIn,
+                                 srcDuration,
+                                 dstIn);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_InsertEmptyTrackSegment(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue dstIn;
+       TimeValue dstDuration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &dstIn,
+                             &dstDuration))
+               return NULL;
+       _err = InsertEmptyTrackSegment(_self->ob_itself,
+                                      dstIn,
+                                      dstDuration);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_DeleteTrackSegment(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue startTime;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       _err = DeleteTrackSegment(_self->ob_itself,
+                                 startTime,
+                                 duration);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_ScaleTrackSegment(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue startTime;
+       TimeValue oldDuration;
+       TimeValue newDuration;
+       if (!PyArg_ParseTuple(_args, "lll",
+                             &startTime,
+                             &oldDuration,
+                             &newDuration))
+               return NULL;
+       _err = ScaleTrackSegment(_self->ob_itself,
+                                startTime,
+                                oldDuration,
+                                newDuration);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_IsScrapMovie(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Component _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = IsScrapMovie(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            CmpObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_CopyTrackSettings(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Track dstTrack;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             TrackObj_Convert, &dstTrack))
+               return NULL;
+       _err = CopyTrackSettings(_self->ob_itself,
+                                dstTrack);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_AddEmptyTrackToMovie(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Movie dstMovie;
+       Handle dataRef;
+       OSType dataRefType;
+       Track dstTrack;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             MovieObj_Convert, &dstMovie,
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataRefType))
+               return NULL;
+       _err = AddEmptyTrackToMovie(_self->ob_itself,
+                                   dstMovie,
+                                   dataRef,
+                                   dataRefType,
+                                   &dstTrack);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, dstTrack);
+       return _res;
+}
+
+static PyObject *TrackObj_AddTrackReference(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Track refTrack;
+       OSType refType;
+       long addedIndex;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             TrackObj_Convert, &refTrack,
+                             PyMac_GetOSType, &refType))
+               return NULL;
+       _err = AddTrackReference(_self->ob_itself,
+                                refTrack,
+                                refType,
+                                &addedIndex);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            addedIndex);
+       return _res;
+}
+
+static PyObject *TrackObj_DeleteTrackReference(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType refType;
+       long index;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetOSType, &refType,
+                             &index))
+               return NULL;
+       _err = DeleteTrackReference(_self->ob_itself,
+                                   refType,
+                                   index);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackReference(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Track refTrack;
+       OSType refType;
+       long index;
+       if (!PyArg_ParseTuple(_args, "O&O&l",
+                             TrackObj_Convert, &refTrack,
+                             PyMac_GetOSType, &refType,
+                             &index))
+               return NULL;
+       _err = SetTrackReference(_self->ob_itself,
+                                refTrack,
+                                refType,
+                                index);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackReference(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       OSType refType;
+       long index;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetOSType, &refType,
+                             &index))
+               return NULL;
+       _rv = GetTrackReference(_self->ob_itself,
+                               refType,
+                               index);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetNextTrackReferenceType(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSType _rv;
+       OSType refType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &refType))
+               return NULL;
+       _rv = GetNextTrackReferenceType(_self->ob_itself,
+                                       refType);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildOSType, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackReferenceCount(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       OSType refType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &refType))
+               return NULL;
+       _rv = GetTrackReferenceCount(_self->ob_itself,
+                                    refType);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackEditRate(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed _rv;
+       TimeValue atTime;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &atTime))
+               return NULL;
+       _rv = GetTrackEditRate(_self->ob_itself,
+                              atTime);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildFixed, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackDataSize(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       TimeValue startTime;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       _rv = GetTrackDataSize(_self->ob_itself,
+                              startTime,
+                              duration);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackDataSize64(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue startTime;
+       TimeValue duration;
+       wide dataSize;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       _err = GetTrackDataSize64(_self->ob_itself,
+                                 startTime,
+                                 duration,
+                                 &dataSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_Buildwide, dataSize);
+       return _res;
+}
+
+static PyObject *TrackObj_PtInTrack(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Point pt;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &pt))
+               return NULL;
+       _rv = PtInTrack(_self->ob_itself,
+                       pt);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackNextInterestingTime(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short interestingTimeFlags;
+       TimeValue time;
+       Fixed rate;
+       TimeValue interestingTime;
+       TimeValue interestingDuration;
+       if (!PyArg_ParseTuple(_args, "hlO&",
+                             &interestingTimeFlags,
+                             &time,
+                             PyMac_GetFixed, &rate))
+               return NULL;
+       GetTrackNextInterestingTime(_self->ob_itself,
+                                   interestingTimeFlags,
+                                   time,
+                                   rate,
+                                   &interestingTime,
+                                   &interestingDuration);
+       _res = Py_BuildValue("ll",
+                            interestingTime,
+                            interestingDuration);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackSegmentDisplayBoundsRgn(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       TimeValue time;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &time,
+                             &duration))
+               return NULL;
+       _rv = GetTrackSegmentDisplayBoundsRgn(_self->ob_itself,
+                                             time,
+                                             duration);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackStatus(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTrackStatus(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TrackObj_SetTrackLoadSettings(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue preloadTime;
+       TimeValue preloadDuration;
+       long preloadFlags;
+       long defaultHints;
+       if (!PyArg_ParseTuple(_args, "llll",
+                             &preloadTime,
+                             &preloadDuration,
+                             &preloadFlags,
+                             &defaultHints))
+               return NULL;
+       SetTrackLoadSettings(_self->ob_itself,
+                            preloadTime,
+                            preloadDuration,
+                            preloadFlags,
+                            defaultHints);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TrackObj_GetTrackLoadSettings(TrackObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue preloadTime;
+       TimeValue preloadDuration;
+       long preloadFlags;
+       long defaultHints;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetTrackLoadSettings(_self->ob_itself,
+                            &preloadTime,
+                            &preloadDuration,
+                            &preloadFlags,
+                            &defaultHints);
+       _res = Py_BuildValue("llll",
+                            preloadTime,
+                            preloadDuration,
+                            preloadFlags,
+                            defaultHints);
+       return _res;
+}
+
+static PyMethodDef TrackObj_methods[] = {
+       {"LoadTrackIntoRam", (PyCFunction)TrackObj_LoadTrackIntoRam, 1,
+        "(TimeValue time, TimeValue duration, long flags) -> None"},
+       {"GetTrackPict", (PyCFunction)TrackObj_GetTrackPict, 1,
+        "(TimeValue time) -> (PicHandle _rv)"},
+       {"GetTrackClipRgn", (PyCFunction)TrackObj_GetTrackClipRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"SetTrackClipRgn", (PyCFunction)TrackObj_SetTrackClipRgn, 1,
+        "(RgnHandle theClip) -> None"},
+       {"GetTrackDisplayBoundsRgn", (PyCFunction)TrackObj_GetTrackDisplayBoundsRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"GetTrackMovieBoundsRgn", (PyCFunction)TrackObj_GetTrackMovieBoundsRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"GetTrackBoundsRgn", (PyCFunction)TrackObj_GetTrackBoundsRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"GetTrackMatte", (PyCFunction)TrackObj_GetTrackMatte, 1,
+        "() -> (PixMapHandle _rv)"},
+       {"SetTrackMatte", (PyCFunction)TrackObj_SetTrackMatte, 1,
+        "(PixMapHandle theMatte) -> None"},
+       {"GetTrackID", (PyCFunction)TrackObj_GetTrackID, 1,
+        "() -> (long _rv)"},
+       {"GetTrackMovie", (PyCFunction)TrackObj_GetTrackMovie, 1,
+        "() -> (Movie _rv)"},
+       {"GetTrackCreationTime", (PyCFunction)TrackObj_GetTrackCreationTime, 1,
+        "() -> (unsigned long _rv)"},
+       {"GetTrackModificationTime", (PyCFunction)TrackObj_GetTrackModificationTime, 1,
+        "() -> (unsigned long _rv)"},
+       {"GetTrackEnabled", (PyCFunction)TrackObj_GetTrackEnabled, 1,
+        "() -> (Boolean _rv)"},
+       {"SetTrackEnabled", (PyCFunction)TrackObj_SetTrackEnabled, 1,
+        "(Boolean isEnabled) -> None"},
+       {"GetTrackUsage", (PyCFunction)TrackObj_GetTrackUsage, 1,
+        "() -> (long _rv)"},
+       {"SetTrackUsage", (PyCFunction)TrackObj_SetTrackUsage, 1,
+        "(long usage) -> None"},
+       {"GetTrackDuration", (PyCFunction)TrackObj_GetTrackDuration, 1,
+        "() -> (TimeValue _rv)"},
+       {"GetTrackOffset", (PyCFunction)TrackObj_GetTrackOffset, 1,
+        "() -> (TimeValue _rv)"},
+       {"SetTrackOffset", (PyCFunction)TrackObj_SetTrackOffset, 1,
+        "(TimeValue movieOffsetTime) -> None"},
+       {"GetTrackLayer", (PyCFunction)TrackObj_GetTrackLayer, 1,
+        "() -> (short _rv)"},
+       {"SetTrackLayer", (PyCFunction)TrackObj_SetTrackLayer, 1,
+        "(short layer) -> None"},
+       {"GetTrackAlternate", (PyCFunction)TrackObj_GetTrackAlternate, 1,
+        "() -> (Track _rv)"},
+       {"SetTrackAlternate", (PyCFunction)TrackObj_SetTrackAlternate, 1,
+        "(Track alternateT) -> None"},
+       {"GetTrackVolume", (PyCFunction)TrackObj_GetTrackVolume, 1,
+        "() -> (short _rv)"},
+       {"SetTrackVolume", (PyCFunction)TrackObj_SetTrackVolume, 1,
+        "(short volume) -> None"},
+       {"GetTrackDimensions", (PyCFunction)TrackObj_GetTrackDimensions, 1,
+        "() -> (Fixed width, Fixed height)"},
+       {"SetTrackDimensions", (PyCFunction)TrackObj_SetTrackDimensions, 1,
+        "(Fixed width, Fixed height) -> None"},
+       {"GetTrackUserData", (PyCFunction)TrackObj_GetTrackUserData, 1,
+        "() -> (UserData _rv)"},
+       {"GetTrackSoundLocalizationSettings", (PyCFunction)TrackObj_GetTrackSoundLocalizationSettings, 1,
+        "() -> (Handle settings)"},
+       {"SetTrackSoundLocalizationSettings", (PyCFunction)TrackObj_SetTrackSoundLocalizationSettings, 1,
+        "(Handle settings) -> None"},
+       {"NewTrackMedia", (PyCFunction)TrackObj_NewTrackMedia, 1,
+        "(OSType mediaType, TimeScale timeScale, Handle dataRef, OSType dataRefType) -> (Media _rv)"},
+       {"GetTrackMedia", (PyCFunction)TrackObj_GetTrackMedia, 1,
+        "() -> (Media _rv)"},
+       {"InsertMediaIntoTrack", (PyCFunction)TrackObj_InsertMediaIntoTrack, 1,
+        "(TimeValue trackStart, TimeValue mediaTime, TimeValue mediaDuration, Fixed mediaRate) -> None"},
+       {"InsertTrackSegment", (PyCFunction)TrackObj_InsertTrackSegment, 1,
+        "(Track dstTrack, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn) -> None"},
+       {"InsertEmptyTrackSegment", (PyCFunction)TrackObj_InsertEmptyTrackSegment, 1,
+        "(TimeValue dstIn, TimeValue dstDuration) -> None"},
+       {"DeleteTrackSegment", (PyCFunction)TrackObj_DeleteTrackSegment, 1,
+        "(TimeValue startTime, TimeValue duration) -> None"},
+       {"ScaleTrackSegment", (PyCFunction)TrackObj_ScaleTrackSegment, 1,
+        "(TimeValue startTime, TimeValue oldDuration, TimeValue newDuration) -> None"},
+       {"IsScrapMovie", (PyCFunction)TrackObj_IsScrapMovie, 1,
+        "() -> (Component _rv)"},
+       {"CopyTrackSettings", (PyCFunction)TrackObj_CopyTrackSettings, 1,
+        "(Track dstTrack) -> None"},
+       {"AddEmptyTrackToMovie", (PyCFunction)TrackObj_AddEmptyTrackToMovie, 1,
+        "(Movie dstMovie, Handle dataRef, OSType dataRefType) -> (Track dstTrack)"},
+       {"AddTrackReference", (PyCFunction)TrackObj_AddTrackReference, 1,
+        "(Track refTrack, OSType refType) -> (long addedIndex)"},
+       {"DeleteTrackReference", (PyCFunction)TrackObj_DeleteTrackReference, 1,
+        "(OSType refType, long index) -> None"},
+       {"SetTrackReference", (PyCFunction)TrackObj_SetTrackReference, 1,
+        "(Track refTrack, OSType refType, long index) -> None"},
+       {"GetTrackReference", (PyCFunction)TrackObj_GetTrackReference, 1,
+        "(OSType refType, long index) -> (Track _rv)"},
+       {"GetNextTrackReferenceType", (PyCFunction)TrackObj_GetNextTrackReferenceType, 1,
+        "(OSType refType) -> (OSType _rv)"},
+       {"GetTrackReferenceCount", (PyCFunction)TrackObj_GetTrackReferenceCount, 1,
+        "(OSType refType) -> (long _rv)"},
+       {"GetTrackEditRate", (PyCFunction)TrackObj_GetTrackEditRate, 1,
+        "(TimeValue atTime) -> (Fixed _rv)"},
+       {"GetTrackDataSize", (PyCFunction)TrackObj_GetTrackDataSize, 1,
+        "(TimeValue startTime, TimeValue duration) -> (long _rv)"},
+       {"GetTrackDataSize64", (PyCFunction)TrackObj_GetTrackDataSize64, 1,
+        "(TimeValue startTime, TimeValue duration) -> (wide dataSize)"},
+       {"PtInTrack", (PyCFunction)TrackObj_PtInTrack, 1,
+        "(Point pt) -> (Boolean _rv)"},
+       {"GetTrackNextInterestingTime", (PyCFunction)TrackObj_GetTrackNextInterestingTime, 1,
+        "(short interestingTimeFlags, TimeValue time, Fixed rate) -> (TimeValue interestingTime, TimeValue interestingDuration)"},
+       {"GetTrackSegmentDisplayBoundsRgn", (PyCFunction)TrackObj_GetTrackSegmentDisplayBoundsRgn, 1,
+        "(TimeValue time, TimeValue duration) -> (RgnHandle _rv)"},
+       {"GetTrackStatus", (PyCFunction)TrackObj_GetTrackStatus, 1,
+        "() -> (ComponentResult _rv)"},
+       {"SetTrackLoadSettings", (PyCFunction)TrackObj_SetTrackLoadSettings, 1,
+        "(TimeValue preloadTime, TimeValue preloadDuration, long preloadFlags, long defaultHints) -> None"},
+       {"GetTrackLoadSettings", (PyCFunction)TrackObj_GetTrackLoadSettings, 1,
+        "() -> (TimeValue preloadTime, TimeValue preloadDuration, long preloadFlags, long defaultHints)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain TrackObj_chain = { TrackObj_methods, NULL };
+
+static PyObject *TrackObj_getattr(TrackObject *self, char *name)
+{
+       return Py_FindMethodInChain(&TrackObj_chain, (PyObject *)self, name);
+}
+
+#define TrackObj_setattr NULL
+
+#define TrackObj_compare NULL
+
+#define TrackObj_repr NULL
+
+#define TrackObj_hash NULL
+
+PyTypeObject Track_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "Track", /*tp_name*/
+       sizeof(TrackObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) TrackObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) TrackObj_getattr, /*tp_getattr*/
+       (setattrfunc) TrackObj_setattr, /*tp_setattr*/
+       (cmpfunc) TrackObj_compare, /*tp_compare*/
+       (reprfunc) TrackObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) TrackObj_hash, /*tp_hash*/
+};
+
+/* --------------------- End object type Track ---------------------- */
+
+
+/* ----------------------- Object type Movie ------------------------ */
+
+PyTypeObject Movie_Type;
+
+#define MovieObj_Check(x) ((x)->ob_type == &Movie_Type)
+
+typedef struct MovieObject {
+       PyObject_HEAD
+       Movie ob_itself;
+} MovieObject;
+
+PyObject *MovieObj_New(Movie itself)
+{
+       MovieObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(Qt_Error,"Cannot create null Movie");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(MovieObject, &Movie_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+MovieObj_Convert(PyObject *v, Movie *p_itself)
+{
+       if (!MovieObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "Movie required");
+               return 0;
+       }
+       *p_itself = ((MovieObject *)v)->ob_itself;
+       return 1;
+}
+
+static void MovieObj_dealloc(MovieObject *self)
+{
+       DisposeMovie(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *MovieObj_MoviesTask(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long maxMilliSecToUse;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &maxMilliSecToUse))
+               return NULL;
+       MoviesTask(_self->ob_itself,
+                  maxMilliSecToUse);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_PrerollMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue time;
+       Fixed Rate;
+       if (!PyArg_ParseTuple(_args, "lO&",
+                             &time,
+                             PyMac_GetFixed, &Rate))
+               return NULL;
+       _err = PrerollMovie(_self->ob_itself,
+                           time,
+                           Rate);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_AbortPrePrerollMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr err;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &err))
+               return NULL;
+       AbortPrePrerollMovie(_self->ob_itself,
+                            err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_LoadMovieIntoRam(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue time;
+       TimeValue duration;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "lll",
+                             &time,
+                             &duration,
+                             &flags))
+               return NULL;
+       _err = LoadMovieIntoRam(_self->ob_itself,
+                               time,
+                               duration,
+                               flags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieActive(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean active;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &active))
+               return NULL;
+       SetMovieActive(_self->ob_itself,
+                      active);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieActive(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieActive(_self->ob_itself);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_StartMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       StartMovie(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_StopMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       StopMovie(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GoToBeginningOfMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GoToBeginningOfMovie(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GoToEndOfMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GoToEndOfMovie(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_IsMovieDone(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = IsMovieDone(_self->ob_itself);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMoviePreviewMode(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMoviePreviewMode(_self->ob_itself);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMoviePreviewMode(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean usePreview;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &usePreview))
+               return NULL;
+       SetMoviePreviewMode(_self->ob_itself,
+                           usePreview);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_ShowMoviePoster(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ShowMoviePoster(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieTimeBase(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeBase _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieTimeBase(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            TimeBaseObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieMasterTimeBase(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeBase tb;
+       TimeRecord slaveZero;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             TimeBaseObj_Convert, &tb,
+                             QtTimeRecord_Convert, &slaveZero))
+               return NULL;
+       SetMovieMasterTimeBase(_self->ob_itself,
+                              tb,
+                              &slaveZero);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieMasterClock(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Component clockMeister;
+       TimeRecord slaveZero;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             CmpObj_Convert, &clockMeister,
+                             QtTimeRecord_Convert, &slaveZero))
+               return NULL;
+       SetMovieMasterClock(_self->ob_itself,
+                           clockMeister,
+                           &slaveZero);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieGWorld(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CGrafPtr port;
+       GDHandle gdh;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetMovieGWorld(_self->ob_itself,
+                      &port,
+                      &gdh);
+       _res = Py_BuildValue("O&O&",
+                            GrafObj_New, port,
+                            OptResObj_New, gdh);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieGWorld(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CGrafPtr port;
+       GDHandle gdh;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             GrafObj_Convert, &port,
+                             OptResObj_Convert, &gdh))
+               return NULL;
+       SetMovieGWorld(_self->ob_itself,
+                      port,
+                      gdh);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieNaturalBoundsRect(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect naturalBounds;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetMovieNaturalBoundsRect(_self->ob_itself,
+                                 &naturalBounds);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildRect, &naturalBounds);
+       return _res;
+}
+
+static PyObject *MovieObj_GetNextTrackForCompositing(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       Track theTrack;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             TrackObj_Convert, &theTrack))
+               return NULL;
+       _rv = GetNextTrackForCompositing(_self->ob_itself,
+                                        theTrack);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetPrevTrackForCompositing(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       Track theTrack;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             TrackObj_Convert, &theTrack))
+               return NULL;
+       _rv = GetPrevTrackForCompositing(_self->ob_itself,
+                                        theTrack);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMoviePict(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PicHandle _rv;
+       TimeValue time;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &time))
+               return NULL;
+       _rv = GetMoviePict(_self->ob_itself,
+                          time);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMoviePosterPict(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PicHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMoviePosterPict(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_UpdateMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = UpdateMovie(_self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_InvalidateMovieRegion(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       RgnHandle invalidRgn;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &invalidRgn))
+               return NULL;
+       _err = InvalidateMovieRegion(_self->ob_itself,
+                                    invalidRgn);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieBox(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect boxRect;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetMovieBox(_self->ob_itself,
+                   &boxRect);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildRect, &boxRect);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieBox(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect boxRect;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetRect, &boxRect))
+               return NULL;
+       SetMovieBox(_self->ob_itself,
+                   &boxRect);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieDisplayClipRgn(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieDisplayClipRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieDisplayClipRgn(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle theClip;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theClip))
+               return NULL;
+       SetMovieDisplayClipRgn(_self->ob_itself,
+                              theClip);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieClipRgn(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieClipRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieClipRgn(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle theClip;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theClip))
+               return NULL;
+       SetMovieClipRgn(_self->ob_itself,
+                       theClip);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieDisplayBoundsRgn(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieDisplayBoundsRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieBoundsRgn(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieBoundsRgn(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_PutMovieIntoHandle(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle publicMovie;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &publicMovie))
+               return NULL;
+       _err = PutMovieIntoHandle(_self->ob_itself,
+                                 publicMovie);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_PutMovieIntoDataFork(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short fRefNum;
+       long offset;
+       long maxSize;
+       if (!PyArg_ParseTuple(_args, "hll",
+                             &fRefNum,
+                             &offset,
+                             &maxSize))
+               return NULL;
+       _err = PutMovieIntoDataFork(_self->ob_itself,
+                                   fRefNum,
+                                   offset,
+                                   maxSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_PutMovieIntoDataFork64(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long fRefNum;
+       wide offset;
+       unsigned long maxSize;
+       if (!PyArg_ParseTuple(_args, "lO&l",
+                             &fRefNum,
+                             PyMac_Getwide, &offset,
+                             &maxSize))
+               return NULL;
+       _err = PutMovieIntoDataFork64(_self->ob_itself,
+                                     fRefNum,
+                                     &offset,
+                                     maxSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieCreationTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       unsigned long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieCreationTime(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieModificationTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       unsigned long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieModificationTime(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieTimeScale(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeScale _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieTimeScale(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieTimeScale(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeScale timeScale;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &timeScale))
+               return NULL;
+       SetMovieTimeScale(_self->ob_itself,
+                         timeScale);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieDuration(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieDuration(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieRate(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieRate(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildFixed, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieRate(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed rate;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetFixed, &rate))
+               return NULL;
+       SetMovieRate(_self->ob_itself,
+                    rate);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMoviePreferredRate(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMoviePreferredRate(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildFixed, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMoviePreferredRate(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Fixed rate;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetFixed, &rate))
+               return NULL;
+       SetMoviePreferredRate(_self->ob_itself,
+                             rate);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMoviePreferredVolume(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMoviePreferredVolume(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMoviePreferredVolume(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short volume;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &volume))
+               return NULL;
+       SetMoviePreferredVolume(_self->ob_itself,
+                               volume);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieVolume(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieVolume(_self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieVolume(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short volume;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &volume))
+               return NULL;
+       SetMovieVolume(_self->ob_itself,
+                      volume);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMoviePreviewTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue previewTime;
+       TimeValue previewDuration;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetMoviePreviewTime(_self->ob_itself,
+                           &previewTime,
+                           &previewDuration);
+       _res = Py_BuildValue("ll",
+                            previewTime,
+                            previewDuration);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMoviePreviewTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue previewTime;
+       TimeValue previewDuration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &previewTime,
+                             &previewDuration))
+               return NULL;
+       SetMoviePreviewTime(_self->ob_itself,
+                           previewTime,
+                           previewDuration);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMoviePosterTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMoviePosterTime(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMoviePosterTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue posterTime;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &posterTime))
+               return NULL;
+       SetMoviePosterTime(_self->ob_itself,
+                          posterTime);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieSelection(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue selectionTime;
+       TimeValue selectionDuration;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetMovieSelection(_self->ob_itself,
+                         &selectionTime,
+                         &selectionDuration);
+       _res = Py_BuildValue("ll",
+                            selectionTime,
+                            selectionDuration);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieSelection(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue selectionTime;
+       TimeValue selectionDuration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &selectionTime,
+                             &selectionDuration))
+               return NULL;
+       SetMovieSelection(_self->ob_itself,
+                         selectionTime,
+                         selectionDuration);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieActiveSegment(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue startTime;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       SetMovieActiveSegment(_self->ob_itself,
+                             startTime,
+                             duration);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieActiveSegment(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue startTime;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetMovieActiveSegment(_self->ob_itself,
+                             &startTime,
+                             &duration);
+       _res = Py_BuildValue("ll",
+                            startTime,
+                            duration);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       TimeRecord currentTime;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieTime(_self->ob_itself,
+                          &currentTime);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            QtTimeRecord_New, &currentTime);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord newtime;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             QtTimeRecord_Convert, &newtime))
+               return NULL;
+       SetMovieTime(_self->ob_itself,
+                    &newtime);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieTimeValue(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue newtime;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &newtime))
+               return NULL;
+       SetMovieTimeValue(_self->ob_itself,
+                         newtime);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieUserData(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       UserData _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieUserData(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            UserDataObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieTrackCount(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieTrackCount(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieTrack(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       long trackID;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &trackID))
+               return NULL;
+       _rv = GetMovieTrack(_self->ob_itself,
+                           trackID);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieIndTrack(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       long index;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &index))
+               return NULL;
+       _rv = GetMovieIndTrack(_self->ob_itself,
+                              index);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieIndTrackType(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       long index;
+       OSType trackType;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "lO&l",
+                             &index,
+                             PyMac_GetOSType, &trackType,
+                             &flags))
+               return NULL;
+       _rv = GetMovieIndTrackType(_self->ob_itself,
+                                  index,
+                                  trackType,
+                                  flags);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_NewMovieTrack(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Track _rv;
+       Fixed width;
+       Fixed height;
+       short trackVolume;
+       if (!PyArg_ParseTuple(_args, "O&O&h",
+                             PyMac_GetFixed, &width,
+                             PyMac_GetFixed, &height,
+                             &trackVolume))
+               return NULL;
+       _rv = NewMovieTrack(_self->ob_itself,
+                           width,
+                           height,
+                           trackVolume);
+       _res = Py_BuildValue("O&",
+                            TrackObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetAutoTrackAlternatesEnabled(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean enable;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &enable))
+               return NULL;
+       SetAutoTrackAlternatesEnabled(_self->ob_itself,
+                                     enable);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_SelectMovieAlternates(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       SelectMovieAlternates(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_InsertMovieSegment(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Movie dstMovie;
+       TimeValue srcIn;
+       TimeValue srcDuration;
+       TimeValue dstIn;
+       if (!PyArg_ParseTuple(_args, "O&lll",
+                             MovieObj_Convert, &dstMovie,
+                             &srcIn,
+                             &srcDuration,
+                             &dstIn))
+               return NULL;
+       _err = InsertMovieSegment(_self->ob_itself,
+                                 dstMovie,
+                                 srcIn,
+                                 srcDuration,
+                                 dstIn);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_InsertEmptyMovieSegment(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue dstIn;
+       TimeValue dstDuration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &dstIn,
+                             &dstDuration))
+               return NULL;
+       _err = InsertEmptyMovieSegment(_self->ob_itself,
+                                      dstIn,
+                                      dstDuration);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_DeleteMovieSegment(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue startTime;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       _err = DeleteMovieSegment(_self->ob_itself,
+                                 startTime,
+                                 duration);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_ScaleMovieSegment(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue startTime;
+       TimeValue oldDuration;
+       TimeValue newDuration;
+       if (!PyArg_ParseTuple(_args, "lll",
+                             &startTime,
+                             &oldDuration,
+                             &newDuration))
+               return NULL;
+       _err = ScaleMovieSegment(_self->ob_itself,
+                                startTime,
+                                oldDuration,
+                                newDuration);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_CutMovieSelection(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CutMovieSelection(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_CopyMovieSelection(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CopyMovieSelection(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_PasteMovieSelection(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie src;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             MovieObj_Convert, &src))
+               return NULL;
+       PasteMovieSelection(_self->ob_itself,
+                           src);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_AddMovieSelection(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie src;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             MovieObj_Convert, &src))
+               return NULL;
+       AddMovieSelection(_self->ob_itself,
+                         src);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_ClearMovieSelection(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ClearMovieSelection(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_PutMovieIntoTypedHandle(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Track targetTrack;
+       OSType handleType;
+       Handle publicMovie;
+       TimeValue start;
+       TimeValue dur;
+       long flags;
+       ComponentInstance userComp;
+       if (!PyArg_ParseTuple(_args, "O&O&O&lllO&",
+                             TrackObj_Convert, &targetTrack,
+                             PyMac_GetOSType, &handleType,
+                             ResObj_Convert, &publicMovie,
+                             &start,
+                             &dur,
+                             &flags,
+                             CmpInstObj_Convert, &userComp))
+               return NULL;
+       _err = PutMovieIntoTypedHandle(_self->ob_itself,
+                                      targetTrack,
+                                      handleType,
+                                      publicMovie,
+                                      start,
+                                      dur,
+                                      flags,
+                                      userComp);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_CopyMovieSettings(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Movie dstMovie;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             MovieObj_Convert, &dstMovie))
+               return NULL;
+       _err = CopyMovieSettings(_self->ob_itself,
+                                dstMovie);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_ConvertMovieToFile(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Track onlyTrack;
+       FSSpec outputFile;
+       OSType fileType;
+       OSType creator;
+       ScriptCode scriptTag;
+       short resID;
+       long flags;
+       ComponentInstance userComp;
+       if (!PyArg_ParseTuple(_args, "O&O&O&O&hlO&",
+                             TrackObj_Convert, &onlyTrack,
+                             PyMac_GetFSSpec, &outputFile,
+                             PyMac_GetOSType, &fileType,
+                             PyMac_GetOSType, &creator,
+                             &scriptTag,
+                             &flags,
+                             CmpInstObj_Convert, &userComp))
+               return NULL;
+       _err = ConvertMovieToFile(_self->ob_itself,
+                                 onlyTrack,
+                                 &outputFile,
+                                 fileType,
+                                 creator,
+                                 scriptTag,
+                                 &resID,
+                                 flags,
+                                 userComp);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            resID);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieDataSize(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       TimeValue startTime;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       _rv = GetMovieDataSize(_self->ob_itself,
+                              startTime,
+                              duration);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieDataSize64(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue startTime;
+       TimeValue duration;
+       wide dataSize;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &startTime,
+                             &duration))
+               return NULL;
+       _err = GetMovieDataSize64(_self->ob_itself,
+                                 startTime,
+                                 duration,
+                                 &dataSize);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_Buildwide, dataSize);
+       return _res;
+}
+
+static PyObject *MovieObj_PtInMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       Point pt;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &pt))
+               return NULL;
+       _rv = PtInMovie(_self->ob_itself,
+                       pt);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieLanguage(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long language;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &language))
+               return NULL;
+       SetMovieLanguage(_self->ob_itself,
+                        language);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieNextInterestingTime(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short interestingTimeFlags;
+       short numMediaTypes;
+       OSType whichMediaTypes;
+       TimeValue time;
+       Fixed rate;
+       TimeValue interestingTime;
+       TimeValue interestingDuration;
+       if (!PyArg_ParseTuple(_args, "hhO&lO&",
+                             &interestingTimeFlags,
+                             &numMediaTypes,
+                             PyMac_GetOSType, &whichMediaTypes,
+                             &time,
+                             PyMac_GetFixed, &rate))
+               return NULL;
+       GetMovieNextInterestingTime(_self->ob_itself,
+                                   interestingTimeFlags,
+                                   numMediaTypes,
+                                   &whichMediaTypes,
+                                   time,
+                                   rate,
+                                   &interestingTime,
+                                   &interestingDuration);
+       _res = Py_BuildValue("ll",
+                            interestingTime,
+                            interestingDuration);
+       return _res;
+}
+
+static PyObject *MovieObj_AddMovieResource(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short resRefNum;
+       short resId;
+       Str255 resName;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &resRefNum,
+                             PyMac_GetStr255, resName))
+               return NULL;
+       _err = AddMovieResource(_self->ob_itself,
+                               resRefNum,
+                               &resId,
+                               resName);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            resId);
+       return _res;
+}
+
+static PyObject *MovieObj_UpdateMovieResource(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short resRefNum;
+       short resId;
+       Str255 resName;
+       if (!PyArg_ParseTuple(_args, "hhO&",
+                             &resRefNum,
+                             &resId,
+                             PyMac_GetStr255, resName))
+               return NULL;
+       _err = UpdateMovieResource(_self->ob_itself,
+                                  resRefNum,
+                                  resId,
+                                  resName);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_HasMovieChanged(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = HasMovieChanged(_self->ob_itself);
+       _res = Py_BuildValue("b",
+                            _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_ClearMovieChanged(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ClearMovieChanged(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_SetMovieDefaultDataRef(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle dataRef;
+       OSType dataRefType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataRefType))
+               return NULL;
+       _err = SetMovieDefaultDataRef(_self->ob_itself,
+                                     dataRef,
+                                     dataRefType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieDefaultDataRef(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle dataRef;
+       OSType dataRefType;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMovieDefaultDataRef(_self->ob_itself,
+                                     &dataRef,
+                                     &dataRefType);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&O&",
+                            ResObj_New, dataRef,
+                            PyMac_BuildOSType, dataRefType);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MovieObj_SetMovieAnchorDataRef(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle dataRef;
+       OSType dataRefType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataRefType))
+               return NULL;
+       _err = SetMovieAnchorDataRef(_self->ob_itself,
+                                    dataRef,
+                                    dataRefType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MovieObj_GetMovieAnchorDataRef(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle dataRef;
+       OSType dataRefType;
+       long outFlags;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMovieAnchorDataRef(_self->ob_itself,
+                                    &dataRef,
+                                    &dataRefType,
+                                    &outFlags);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&O&l",
+                            ResObj_New, dataRef,
+                            PyMac_BuildOSType, dataRefType,
+                            outFlags);
+       return _res;
+}
+#endif
+
+static PyObject *MovieObj_SetMovieColorTable(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       CTabHandle ctab;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &ctab))
+               return NULL;
+       _err = SetMovieColorTable(_self->ob_itself,
+                                 ctab);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieColorTable(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       CTabHandle ctab;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMovieColorTable(_self->ob_itself,
+                                 &ctab);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, ctab);
+       return _res;
+}
+
+static PyObject *MovieObj_FlattenMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long movieFlattenFlags;
+       FSSpec theFile;
+       OSType creator;
+       ScriptCode scriptTag;
+       long createMovieFileFlags;
+       short resId;
+       Str255 resName;
+       if (!PyArg_ParseTuple(_args, "lO&O&hlO&",
+                             &movieFlattenFlags,
+                             PyMac_GetFSSpec, &theFile,
+                             PyMac_GetOSType, &creator,
+                             &scriptTag,
+                             &createMovieFileFlags,
+                             PyMac_GetStr255, resName))
+               return NULL;
+       FlattenMovie(_self->ob_itself,
+                    movieFlattenFlags,
+                    &theFile,
+                    creator,
+                    scriptTag,
+                    createMovieFileFlags,
+                    &resId,
+                    resName);
+       _res = Py_BuildValue("h",
+                            resId);
+       return _res;
+}
+
+static PyObject *MovieObj_FlattenMovieData(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       long movieFlattenFlags;
+       FSSpec theFile;
+       OSType creator;
+       ScriptCode scriptTag;
+       long createMovieFileFlags;
+       if (!PyArg_ParseTuple(_args, "lO&O&hl",
+                             &movieFlattenFlags,
+                             PyMac_GetFSSpec, &theFile,
+                             PyMac_GetOSType, &creator,
+                             &scriptTag,
+                             &createMovieFileFlags))
+               return NULL;
+       _rv = FlattenMovieData(_self->ob_itself,
+                              movieFlattenFlags,
+                              &theFile,
+                              creator,
+                              scriptTag,
+                              createMovieFileFlags);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_MovieSearchText(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Ptr text;
+       long size;
+       long searchFlags;
+       Track searchTrack;
+       TimeValue searchTime;
+       long searchOffset;
+       if (!PyArg_ParseTuple(_args, "sll",
+                             &text,
+                             &size,
+                             &searchFlags))
+               return NULL;
+       _err = MovieSearchText(_self->ob_itself,
+                              text,
+                              size,
+                              searchFlags,
+                              &searchTrack,
+                              &searchTime,
+                              &searchOffset);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&ll",
+                            TrackObj_New, searchTrack,
+                            searchTime,
+                            searchOffset);
+       return _res;
+}
+
+static PyObject *MovieObj_GetPosterBox(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect boxRect;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetPosterBox(_self->ob_itself,
+                    &boxRect);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildRect, &boxRect);
+       return _res;
+}
+
+static PyObject *MovieObj_SetPosterBox(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect boxRect;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetRect, &boxRect))
+               return NULL;
+       SetPosterBox(_self->ob_itself,
+                    &boxRect);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieSegmentDisplayBoundsRgn(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       RgnHandle _rv;
+       TimeValue time;
+       TimeValue duration;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &time,
+                             &duration))
+               return NULL;
+       _rv = GetMovieSegmentDisplayBoundsRgn(_self->ob_itself,
+                                             time,
+                                             duration);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_GetMovieStatus(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       Track firstProblemTrack;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieStatus(_self->ob_itself,
+                            &firstProblemTrack);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            TrackObj_New, firstProblemTrack);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *MovieObj_GetMovieLoadState(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMovieLoadState(_self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+static PyObject *MovieObj_NewMovieController(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       MovieController _rv;
+       Rect movieRect;
+       long someFlags;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             PyMac_GetRect, &movieRect,
+                             &someFlags))
+               return NULL;
+       _rv = NewMovieController(_self->ob_itself,
+                                &movieRect,
+                                someFlags);
+       _res = Py_BuildValue("O&",
+                            MovieCtlObj_New, _rv);
+       return _res;
+}
+
+static PyObject *MovieObj_PutMovieOnScrap(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       long movieScrapFlags;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &movieScrapFlags))
+               return NULL;
+       _err = PutMovieOnScrap(_self->ob_itself,
+                              movieScrapFlags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_SetMoviePlayHints(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long flags;
+       long flagsMask;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &flags,
+                             &flagsMask))
+               return NULL;
+       SetMoviePlayHints(_self->ob_itself,
+                         flags,
+                         flagsMask);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *MovieObj_GetMaxLoadedTimeInMovie(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       TimeValue time;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMaxLoadedTimeInMovie(_self->ob_itself,
+                                      &time);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            time);
+       return _res;
+}
+
+static PyObject *MovieObj_QTMovieNeedsTimeTable(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Boolean needsTimeTable;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = QTMovieNeedsTimeTable(_self->ob_itself,
+                                    &needsTimeTable);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("b",
+                            needsTimeTable);
+       return _res;
+}
+
+static PyObject *MovieObj_QTGetDataRefMaxFileOffset(MovieObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType dataRefType;
+       Handle dataRef;
+       long offset;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetOSType, &dataRefType,
+                             ResObj_Convert, &dataRef))
+               return NULL;
+       _err = QTGetDataRefMaxFileOffset(_self->ob_itself,
+                                        dataRefType,
+                                        dataRef,
+                                        &offset);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("l",
+                            offset);
+       return _res;
+}
+
+static PyMethodDef MovieObj_methods[] = {
+       {"MoviesTask", (PyCFunction)MovieObj_MoviesTask, 1,
+        "(long maxMilliSecToUse) -> None"},
+       {"PrerollMovie", (PyCFunction)MovieObj_PrerollMovie, 1,
+        "(TimeValue time, Fixed Rate) -> None"},
+       {"AbortPrePrerollMovie", (PyCFunction)MovieObj_AbortPrePrerollMovie, 1,
+        "(OSErr err) -> None"},
+       {"LoadMovieIntoRam", (PyCFunction)MovieObj_LoadMovieIntoRam, 1,
+        "(TimeValue time, TimeValue duration, long flags) -> None"},
+       {"SetMovieActive", (PyCFunction)MovieObj_SetMovieActive, 1,
+        "(Boolean active) -> None"},
+       {"GetMovieActive", (PyCFunction)MovieObj_GetMovieActive, 1,
+        "() -> (Boolean _rv)"},
+       {"StartMovie", (PyCFunction)MovieObj_StartMovie, 1,
+        "() -> None"},
+       {"StopMovie", (PyCFunction)MovieObj_StopMovie, 1,
+        "() -> None"},
+       {"GoToBeginningOfMovie", (PyCFunction)MovieObj_GoToBeginningOfMovie, 1,
+        "() -> None"},
+       {"GoToEndOfMovie", (PyCFunction)MovieObj_GoToEndOfMovie, 1,
+        "() -> None"},
+       {"IsMovieDone", (PyCFunction)MovieObj_IsMovieDone, 1,
+        "() -> (Boolean _rv)"},
+       {"GetMoviePreviewMode", (PyCFunction)MovieObj_GetMoviePreviewMode, 1,
+        "() -> (Boolean _rv)"},
+       {"SetMoviePreviewMode", (PyCFunction)MovieObj_SetMoviePreviewMode, 1,
+        "(Boolean usePreview) -> None"},
+       {"ShowMoviePoster", (PyCFunction)MovieObj_ShowMoviePoster, 1,
+        "() -> None"},
+       {"GetMovieTimeBase", (PyCFunction)MovieObj_GetMovieTimeBase, 1,
+        "() -> (TimeBase _rv)"},
+       {"SetMovieMasterTimeBase", (PyCFunction)MovieObj_SetMovieMasterTimeBase, 1,
+        "(TimeBase tb, TimeRecord slaveZero) -> None"},
+       {"SetMovieMasterClock", (PyCFunction)MovieObj_SetMovieMasterClock, 1,
+        "(Component clockMeister, TimeRecord slaveZero) -> None"},
+       {"GetMovieGWorld", (PyCFunction)MovieObj_GetMovieGWorld, 1,
+        "() -> (CGrafPtr port, GDHandle gdh)"},
+       {"SetMovieGWorld", (PyCFunction)MovieObj_SetMovieGWorld, 1,
+        "(CGrafPtr port, GDHandle gdh) -> None"},
+       {"GetMovieNaturalBoundsRect", (PyCFunction)MovieObj_GetMovieNaturalBoundsRect, 1,
+        "() -> (Rect naturalBounds)"},
+       {"GetNextTrackForCompositing", (PyCFunction)MovieObj_GetNextTrackForCompositing, 1,
+        "(Track theTrack) -> (Track _rv)"},
+       {"GetPrevTrackForCompositing", (PyCFunction)MovieObj_GetPrevTrackForCompositing, 1,
+        "(Track theTrack) -> (Track _rv)"},
+       {"GetMoviePict", (PyCFunction)MovieObj_GetMoviePict, 1,
+        "(TimeValue time) -> (PicHandle _rv)"},
+       {"GetMoviePosterPict", (PyCFunction)MovieObj_GetMoviePosterPict, 1,
+        "() -> (PicHandle _rv)"},
+       {"UpdateMovie", (PyCFunction)MovieObj_UpdateMovie, 1,
+        "() -> None"},
+       {"InvalidateMovieRegion", (PyCFunction)MovieObj_InvalidateMovieRegion, 1,
+        "(RgnHandle invalidRgn) -> None"},
+       {"GetMovieBox", (PyCFunction)MovieObj_GetMovieBox, 1,
+        "() -> (Rect boxRect)"},
+       {"SetMovieBox", (PyCFunction)MovieObj_SetMovieBox, 1,
+        "(Rect boxRect) -> None"},
+       {"GetMovieDisplayClipRgn", (PyCFunction)MovieObj_GetMovieDisplayClipRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"SetMovieDisplayClipRgn", (PyCFunction)MovieObj_SetMovieDisplayClipRgn, 1,
+        "(RgnHandle theClip) -> None"},
+       {"GetMovieClipRgn", (PyCFunction)MovieObj_GetMovieClipRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"SetMovieClipRgn", (PyCFunction)MovieObj_SetMovieClipRgn, 1,
+        "(RgnHandle theClip) -> None"},
+       {"GetMovieDisplayBoundsRgn", (PyCFunction)MovieObj_GetMovieDisplayBoundsRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"GetMovieBoundsRgn", (PyCFunction)MovieObj_GetMovieBoundsRgn, 1,
+        "() -> (RgnHandle _rv)"},
+       {"PutMovieIntoHandle", (PyCFunction)MovieObj_PutMovieIntoHandle, 1,
+        "(Handle publicMovie) -> None"},
+       {"PutMovieIntoDataFork", (PyCFunction)MovieObj_PutMovieIntoDataFork, 1,
+        "(short fRefNum, long offset, long maxSize) -> None"},
+       {"PutMovieIntoDataFork64", (PyCFunction)MovieObj_PutMovieIntoDataFork64, 1,
+        "(long fRefNum, wide offset, unsigned long maxSize) -> None"},
+       {"GetMovieCreationTime", (PyCFunction)MovieObj_GetMovieCreationTime, 1,
+        "() -> (unsigned long _rv)"},
+       {"GetMovieModificationTime", (PyCFunction)MovieObj_GetMovieModificationTime, 1,
+        "() -> (unsigned long _rv)"},
+       {"GetMovieTimeScale", (PyCFunction)MovieObj_GetMovieTimeScale, 1,
+        "() -> (TimeScale _rv)"},
+       {"SetMovieTimeScale", (PyCFunction)MovieObj_SetMovieTimeScale, 1,
+        "(TimeScale timeScale) -> None"},
+       {"GetMovieDuration", (PyCFunction)MovieObj_GetMovieDuration, 1,
+        "() -> (TimeValue _rv)"},
+       {"GetMovieRate", (PyCFunction)MovieObj_GetMovieRate, 1,
+        "() -> (Fixed _rv)"},
+       {"SetMovieRate", (PyCFunction)MovieObj_SetMovieRate, 1,
+        "(Fixed rate) -> None"},
+       {"GetMoviePreferredRate", (PyCFunction)MovieObj_GetMoviePreferredRate, 1,
+        "() -> (Fixed _rv)"},
+       {"SetMoviePreferredRate", (PyCFunction)MovieObj_SetMoviePreferredRate, 1,
+        "(Fixed rate) -> None"},
+       {"GetMoviePreferredVolume", (PyCFunction)MovieObj_GetMoviePreferredVolume, 1,
+        "() -> (short _rv)"},
+       {"SetMoviePreferredVolume", (PyCFunction)MovieObj_SetMoviePreferredVolume, 1,
+        "(short volume) -> None"},
+       {"GetMovieVolume", (PyCFunction)MovieObj_GetMovieVolume, 1,
+        "() -> (short _rv)"},
+       {"SetMovieVolume", (PyCFunction)MovieObj_SetMovieVolume, 1,
+        "(short volume) -> None"},
+       {"GetMoviePreviewTime", (PyCFunction)MovieObj_GetMoviePreviewTime, 1,
+        "() -> (TimeValue previewTime, TimeValue previewDuration)"},
+       {"SetMoviePreviewTime", (PyCFunction)MovieObj_SetMoviePreviewTime, 1,
+        "(TimeValue previewTime, TimeValue previewDuration) -> None"},
+       {"GetMoviePosterTime", (PyCFunction)MovieObj_GetMoviePosterTime, 1,
+        "() -> (TimeValue _rv)"},
+       {"SetMoviePosterTime", (PyCFunction)MovieObj_SetMoviePosterTime, 1,
+        "(TimeValue posterTime) -> None"},
+       {"GetMovieSelection", (PyCFunction)MovieObj_GetMovieSelection, 1,
+        "() -> (TimeValue selectionTime, TimeValue selectionDuration)"},
+       {"SetMovieSelection", (PyCFunction)MovieObj_SetMovieSelection, 1,
+        "(TimeValue selectionTime, TimeValue selectionDuration) -> None"},
+       {"SetMovieActiveSegment", (PyCFunction)MovieObj_SetMovieActiveSegment, 1,
+        "(TimeValue startTime, TimeValue duration) -> None"},
+       {"GetMovieActiveSegment", (PyCFunction)MovieObj_GetMovieActiveSegment, 1,
+        "() -> (TimeValue startTime, TimeValue duration)"},
+       {"GetMovieTime", (PyCFunction)MovieObj_GetMovieTime, 1,
+        "() -> (TimeValue _rv, TimeRecord currentTime)"},
+       {"SetMovieTime", (PyCFunction)MovieObj_SetMovieTime, 1,
+        "(TimeRecord newtime) -> None"},
+       {"SetMovieTimeValue", (PyCFunction)MovieObj_SetMovieTimeValue, 1,
+        "(TimeValue newtime) -> None"},
+       {"GetMovieUserData", (PyCFunction)MovieObj_GetMovieUserData, 1,
+        "() -> (UserData _rv)"},
+       {"GetMovieTrackCount", (PyCFunction)MovieObj_GetMovieTrackCount, 1,
+        "() -> (long _rv)"},
+       {"GetMovieTrack", (PyCFunction)MovieObj_GetMovieTrack, 1,
+        "(long trackID) -> (Track _rv)"},
+       {"GetMovieIndTrack", (PyCFunction)MovieObj_GetMovieIndTrack, 1,
+        "(long index) -> (Track _rv)"},
+       {"GetMovieIndTrackType", (PyCFunction)MovieObj_GetMovieIndTrackType, 1,
+        "(long index, OSType trackType, long flags) -> (Track _rv)"},
+       {"NewMovieTrack", (PyCFunction)MovieObj_NewMovieTrack, 1,
+        "(Fixed width, Fixed height, short trackVolume) -> (Track _rv)"},
+       {"SetAutoTrackAlternatesEnabled", (PyCFunction)MovieObj_SetAutoTrackAlternatesEnabled, 1,
+        "(Boolean enable) -> None"},
+       {"SelectMovieAlternates", (PyCFunction)MovieObj_SelectMovieAlternates, 1,
+        "() -> None"},
+       {"InsertMovieSegment", (PyCFunction)MovieObj_InsertMovieSegment, 1,
+        "(Movie dstMovie, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn) -> None"},
+       {"InsertEmptyMovieSegment", (PyCFunction)MovieObj_InsertEmptyMovieSegment, 1,
+        "(TimeValue dstIn, TimeValue dstDuration) -> None"},
+       {"DeleteMovieSegment", (PyCFunction)MovieObj_DeleteMovieSegment, 1,
+        "(TimeValue startTime, TimeValue duration) -> None"},
+       {"ScaleMovieSegment", (PyCFunction)MovieObj_ScaleMovieSegment, 1,
+        "(TimeValue startTime, TimeValue oldDuration, TimeValue newDuration) -> None"},
+       {"CutMovieSelection", (PyCFunction)MovieObj_CutMovieSelection, 1,
+        "() -> (Movie _rv)"},
+       {"CopyMovieSelection", (PyCFunction)MovieObj_CopyMovieSelection, 1,
+        "() -> (Movie _rv)"},
+       {"PasteMovieSelection", (PyCFunction)MovieObj_PasteMovieSelection, 1,
+        "(Movie src) -> None"},
+       {"AddMovieSelection", (PyCFunction)MovieObj_AddMovieSelection, 1,
+        "(Movie src) -> None"},
+       {"ClearMovieSelection", (PyCFunction)MovieObj_ClearMovieSelection, 1,
+        "() -> None"},
+       {"PutMovieIntoTypedHandle", (PyCFunction)MovieObj_PutMovieIntoTypedHandle, 1,
+        "(Track targetTrack, OSType handleType, Handle publicMovie, TimeValue start, TimeValue dur, long flags, ComponentInstance userComp) -> None"},
+       {"CopyMovieSettings", (PyCFunction)MovieObj_CopyMovieSettings, 1,
+        "(Movie dstMovie) -> None"},
+       {"ConvertMovieToFile", (PyCFunction)MovieObj_ConvertMovieToFile, 1,
+        "(Track onlyTrack, FSSpec outputFile, OSType fileType, OSType creator, ScriptCode scriptTag, long flags, ComponentInstance userComp) -> (short resID)"},
+       {"GetMovieDataSize", (PyCFunction)MovieObj_GetMovieDataSize, 1,
+        "(TimeValue startTime, TimeValue duration) -> (long _rv)"},
+       {"GetMovieDataSize64", (PyCFunction)MovieObj_GetMovieDataSize64, 1,
+        "(TimeValue startTime, TimeValue duration) -> (wide dataSize)"},
+       {"PtInMovie", (PyCFunction)MovieObj_PtInMovie, 1,
+        "(Point pt) -> (Boolean _rv)"},
+       {"SetMovieLanguage", (PyCFunction)MovieObj_SetMovieLanguage, 1,
+        "(long language) -> None"},
+       {"GetMovieNextInterestingTime", (PyCFunction)MovieObj_GetMovieNextInterestingTime, 1,
+        "(short interestingTimeFlags, short numMediaTypes, OSType whichMediaTypes, TimeValue time, Fixed rate) -> (TimeValue interestingTime, TimeValue interestingDuration)"},
+       {"AddMovieResource", (PyCFunction)MovieObj_AddMovieResource, 1,
+        "(short resRefNum, Str255 resName) -> (short resId)"},
+       {"UpdateMovieResource", (PyCFunction)MovieObj_UpdateMovieResource, 1,
+        "(short resRefNum, short resId, Str255 resName) -> None"},
+       {"HasMovieChanged", (PyCFunction)MovieObj_HasMovieChanged, 1,
+        "() -> (Boolean _rv)"},
+       {"ClearMovieChanged", (PyCFunction)MovieObj_ClearMovieChanged, 1,
+        "() -> None"},
+       {"SetMovieDefaultDataRef", (PyCFunction)MovieObj_SetMovieDefaultDataRef, 1,
+        "(Handle dataRef, OSType dataRefType) -> None"},
+       {"GetMovieDefaultDataRef", (PyCFunction)MovieObj_GetMovieDefaultDataRef, 1,
+        "() -> (Handle dataRef, OSType dataRefType)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"SetMovieAnchorDataRef", (PyCFunction)MovieObj_SetMovieAnchorDataRef, 1,
+        "(Handle dataRef, OSType dataRefType) -> None"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"GetMovieAnchorDataRef", (PyCFunction)MovieObj_GetMovieAnchorDataRef, 1,
+        "() -> (Handle dataRef, OSType dataRefType, long outFlags)"},
+#endif
+       {"SetMovieColorTable", (PyCFunction)MovieObj_SetMovieColorTable, 1,
+        "(CTabHandle ctab) -> None"},
+       {"GetMovieColorTable", (PyCFunction)MovieObj_GetMovieColorTable, 1,
+        "() -> (CTabHandle ctab)"},
+       {"FlattenMovie", (PyCFunction)MovieObj_FlattenMovie, 1,
+        "(long movieFlattenFlags, FSSpec theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, Str255 resName) -> (short resId)"},
+       {"FlattenMovieData", (PyCFunction)MovieObj_FlattenMovieData, 1,
+        "(long movieFlattenFlags, FSSpec theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags) -> (Movie _rv)"},
+       {"MovieSearchText", (PyCFunction)MovieObj_MovieSearchText, 1,
+        "(Ptr text, long size, long searchFlags) -> (Track searchTrack, TimeValue searchTime, long searchOffset)"},
+       {"GetPosterBox", (PyCFunction)MovieObj_GetPosterBox, 1,
+        "() -> (Rect boxRect)"},
+       {"SetPosterBox", (PyCFunction)MovieObj_SetPosterBox, 1,
+        "(Rect boxRect) -> None"},
+       {"GetMovieSegmentDisplayBoundsRgn", (PyCFunction)MovieObj_GetMovieSegmentDisplayBoundsRgn, 1,
+        "(TimeValue time, TimeValue duration) -> (RgnHandle _rv)"},
+       {"GetMovieStatus", (PyCFunction)MovieObj_GetMovieStatus, 1,
+        "() -> (ComponentResult _rv, Track firstProblemTrack)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"GetMovieLoadState", (PyCFunction)MovieObj_GetMovieLoadState, 1,
+        "() -> (long _rv)"},
+#endif
+       {"NewMovieController", (PyCFunction)MovieObj_NewMovieController, 1,
+        "(Rect movieRect, long someFlags) -> (MovieController _rv)"},
+       {"PutMovieOnScrap", (PyCFunction)MovieObj_PutMovieOnScrap, 1,
+        "(long movieScrapFlags) -> None"},
+       {"SetMoviePlayHints", (PyCFunction)MovieObj_SetMoviePlayHints, 1,
+        "(long flags, long flagsMask) -> None"},
+       {"GetMaxLoadedTimeInMovie", (PyCFunction)MovieObj_GetMaxLoadedTimeInMovie, 1,
+        "() -> (TimeValue time)"},
+       {"QTMovieNeedsTimeTable", (PyCFunction)MovieObj_QTMovieNeedsTimeTable, 1,
+        "() -> (Boolean needsTimeTable)"},
+       {"QTGetDataRefMaxFileOffset", (PyCFunction)MovieObj_QTGetDataRefMaxFileOffset, 1,
+        "(OSType dataRefType, Handle dataRef) -> (long offset)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain MovieObj_chain = { MovieObj_methods, NULL };
+
+static PyObject *MovieObj_getattr(MovieObject *self, char *name)
+{
+       return Py_FindMethodInChain(&MovieObj_chain, (PyObject *)self, name);
+}
+
+#define MovieObj_setattr NULL
+
+#define MovieObj_compare NULL
+
+#define MovieObj_repr NULL
+
+#define MovieObj_hash NULL
+
+PyTypeObject Movie_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "Movie", /*tp_name*/
+       sizeof(MovieObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) MovieObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) MovieObj_getattr, /*tp_getattr*/
+       (setattrfunc) MovieObj_setattr, /*tp_setattr*/
+       (cmpfunc) MovieObj_compare, /*tp_compare*/
+       (reprfunc) MovieObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) MovieObj_hash, /*tp_hash*/
+};
+
+/* --------------------- End object type Movie ---------------------- */
+
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_CheckQuickTimeRegistration(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       void * registrationKey;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "sl",
+                             &registrationKey,
+                             &flags))
+               return NULL;
+       CheckQuickTimeRegistration(registrationKey,
+                                  flags);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Qt_EnterMovies(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = EnterMovies();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_ExitMovies(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ExitMovies();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_GetMoviesError(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMoviesError();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_ClearMoviesStickyError(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ClearMoviesStickyError();
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_GetMoviesStickyError(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = GetMoviesStickyError();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_DisposeMatte(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       PixMapHandle theMatte;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theMatte))
+               return NULL;
+       DisposeMatte(theMatte);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_NewMovie(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &flags))
+               return NULL;
+       _rv = NewMovie(flags);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Qt_GetDataHandler(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Component _rv;
+       Handle dataRef;
+       OSType dataHandlerSubType;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "O&O&l",
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataHandlerSubType,
+                             &flags))
+               return NULL;
+       _rv = GetDataHandler(dataRef,
+                            dataHandlerSubType,
+                            flags);
+       _res = Py_BuildValue("O&",
+                            CmpObj_New, _rv);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_OpenADataHandler(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle dataRef;
+       OSType dataHandlerSubType;
+       Handle anchorDataRef;
+       OSType anchorDataRefType;
+       TimeBase tb;
+       long flags;
+       ComponentInstance dh;
+       if (!PyArg_ParseTuple(_args, "O&O&O&O&O&l",
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataHandlerSubType,
+                             ResObj_Convert, &anchorDataRef,
+                             PyMac_GetOSType, &anchorDataRefType,
+                             TimeBaseObj_Convert, &tb,
+                             &flags))
+               return NULL;
+       _err = OpenADataHandler(dataRef,
+                               dataHandlerSubType,
+                               anchorDataRef,
+                               anchorDataRefType,
+                               tb,
+                               flags,
+                               &dh);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            CmpInstObj_New, dh);
+       return _res;
+}
+#endif
+
+static PyObject *Qt_PasteHandleIntoMovie(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle h;
+       OSType handleType;
+       Movie theMovie;
+       long flags;
+       ComponentInstance userComp;
+       if (!PyArg_ParseTuple(_args, "O&O&O&lO&",
+                             ResObj_Convert, &h,
+                             PyMac_GetOSType, &handleType,
+                             MovieObj_Convert, &theMovie,
+                             &flags,
+                             CmpInstObj_Convert, &userComp))
+               return NULL;
+       _err = PasteHandleIntoMovie(h,
+                                   handleType,
+                                   theMovie,
+                                   flags,
+                                   userComp);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_GetMovieImporterForDataRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       OSType dataRefType;
+       Handle dataRef;
+       long flags;
+       Component importer;
+       if (!PyArg_ParseTuple(_args, "O&O&l",
+                             PyMac_GetOSType, &dataRefType,
+                             ResObj_Convert, &dataRef,
+                             &flags))
+               return NULL;
+       _err = GetMovieImporterForDataRef(dataRefType,
+                                         dataRef,
+                                         flags,
+                                         &importer);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            CmpObj_New, importer);
+       return _res;
+}
+
+static PyObject *Qt_TrackTimeToMediaTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeValue _rv;
+       TimeValue value;
+       Track theTrack;
+       if (!PyArg_ParseTuple(_args, "lO&",
+                             &value,
+                             TrackObj_Convert, &theTrack))
+               return NULL;
+       _rv = TrackTimeToMediaTime(value,
+                                  theTrack);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_NewUserData(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       UserData theUserData;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = NewUserData(&theUserData);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            UserDataObj_New, theUserData);
+       return _res;
+}
+
+static PyObject *Qt_NewUserDataFromHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle h;
+       UserData theUserData;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &h))
+               return NULL;
+       _err = NewUserDataFromHandle(h,
+                                    &theUserData);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            UserDataObj_New, theUserData);
+       return _res;
+}
+
+static PyObject *Qt_CreateMovieFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       FSSpec fileSpec;
+       OSType creator;
+       ScriptCode scriptTag;
+       long createMovieFileFlags;
+       short resRefNum;
+       Movie newmovie;
+       if (!PyArg_ParseTuple(_args, "O&O&hl",
+                             PyMac_GetFSSpec, &fileSpec,
+                             PyMac_GetOSType, &creator,
+                             &scriptTag,
+                             &createMovieFileFlags))
+               return NULL;
+       _err = CreateMovieFile(&fileSpec,
+                              creator,
+                              scriptTag,
+                              createMovieFileFlags,
+                              &resRefNum,
+                              &newmovie);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("hO&",
+                            resRefNum,
+                            MovieObj_New, newmovie);
+       return _res;
+}
+
+static PyObject *Qt_OpenMovieFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       FSSpec fileSpec;
+       short resRefNum;
+       SInt8 permission;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             PyMac_GetFSSpec, &fileSpec,
+                             &permission))
+               return NULL;
+       _err = OpenMovieFile(&fileSpec,
+                            &resRefNum,
+                            permission);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("h",
+                            resRefNum);
+       return _res;
+}
+
+static PyObject *Qt_CloseMovieFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short resRefNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &resRefNum))
+               return NULL;
+       _err = CloseMovieFile(resRefNum);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_DeleteMovieFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       FSSpec fileSpec;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetFSSpec, &fileSpec))
+               return NULL;
+       _err = DeleteMovieFile(&fileSpec);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_NewMovieFromFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Movie theMovie;
+       short resRefNum;
+       short resId;
+       short newMovieFlags;
+       Boolean dataRefWasChanged;
+       if (!PyArg_ParseTuple(_args, "hhh",
+                             &resRefNum,
+                             &resId,
+                             &newMovieFlags))
+               return NULL;
+       _err = NewMovieFromFile(&theMovie,
+                               resRefNum,
+                               &resId,
+                               (StringPtr)0,
+                               newMovieFlags,
+                               &dataRefWasChanged);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&hb",
+                            MovieObj_New, theMovie,
+                            resId,
+                            dataRefWasChanged);
+       return _res;
+}
+
+static PyObject *Qt_NewMovieFromHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Movie theMovie;
+       Handle h;
+       short newMovieFlags;
+       Boolean dataRefWasChanged;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             ResObj_Convert, &h,
+                             &newMovieFlags))
+               return NULL;
+       _err = NewMovieFromHandle(&theMovie,
+                                 h,
+                                 newMovieFlags,
+                                 &dataRefWasChanged);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&b",
+                            MovieObj_New, theMovie,
+                            dataRefWasChanged);
+       return _res;
+}
+
+static PyObject *Qt_NewMovieFromDataFork(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Movie theMovie;
+       short fRefNum;
+       long fileOffset;
+       short newMovieFlags;
+       Boolean dataRefWasChanged;
+       if (!PyArg_ParseTuple(_args, "hlh",
+                             &fRefNum,
+                             &fileOffset,
+                             &newMovieFlags))
+               return NULL;
+       _err = NewMovieFromDataFork(&theMovie,
+                                   fRefNum,
+                                   fileOffset,
+                                   newMovieFlags,
+                                   &dataRefWasChanged);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&b",
+                            MovieObj_New, theMovie,
+                            dataRefWasChanged);
+       return _res;
+}
+
+static PyObject *Qt_NewMovieFromDataFork64(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Movie theMovie;
+       long fRefNum;
+       wide fileOffset;
+       short newMovieFlags;
+       Boolean dataRefWasChanged;
+       if (!PyArg_ParseTuple(_args, "lO&h",
+                             &fRefNum,
+                             PyMac_Getwide, &fileOffset,
+                             &newMovieFlags))
+               return NULL;
+       _err = NewMovieFromDataFork64(&theMovie,
+                                     fRefNum,
+                                     &fileOffset,
+                                     newMovieFlags,
+                                     &dataRefWasChanged);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&b",
+                            MovieObj_New, theMovie,
+                            dataRefWasChanged);
+       return _res;
+}
+
+static PyObject *Qt_NewMovieFromDataRef(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Movie m;
+       short flags;
+       short id;
+       Handle dataRef;
+       OSType dataRefType;
+       if (!PyArg_ParseTuple(_args, "hO&O&",
+                             &flags,
+                             ResObj_Convert, &dataRef,
+                             PyMac_GetOSType, &dataRefType))
+               return NULL;
+       _err = NewMovieFromDataRef(&m,
+                                  flags,
+                                  &id,
+                                  dataRef,
+                                  dataRefType);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&h",
+                            MovieObj_New, m,
+                            id);
+       return _res;
+}
+
+static PyObject *Qt_RemoveMovieResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       short resRefNum;
+       short resId;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &resRefNum,
+                             &resId))
+               return NULL;
+       _err = RemoveMovieResource(resRefNum,
+                                  resId);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_CreateShortcutMovieFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       FSSpec fileSpec;
+       OSType creator;
+       ScriptCode scriptTag;
+       long createMovieFileFlags;
+       Handle targetDataRef;
+       OSType targetDataRefType;
+       if (!PyArg_ParseTuple(_args, "O&O&hlO&O&",
+                             PyMac_GetFSSpec, &fileSpec,
+                             PyMac_GetOSType, &creator,
+                             &scriptTag,
+                             &createMovieFileFlags,
+                             ResObj_Convert, &targetDataRef,
+                             PyMac_GetOSType, &targetDataRefType))
+               return NULL;
+       _err = CreateShortcutMovieFile(&fileSpec,
+                                      creator,
+                                      scriptTag,
+                                      createMovieFileFlags,
+                                      targetDataRef,
+                                      targetDataRefType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_NewMovieFromScrap(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Movie _rv;
+       long newMovieFlags;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &newMovieFlags))
+               return NULL;
+       _rv = NewMovieFromScrap(newMovieFlags);
+       _res = Py_BuildValue("O&",
+                            MovieObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Qt_QTNewAlias(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       FSSpec fss;
+       AliasHandle alias;
+       Boolean minimal;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             PyMac_GetFSSpec, &fss,
+                             &minimal))
+               return NULL;
+       _err = QTNewAlias(&fss,
+                         &alias,
+                         minimal);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, alias);
+       return _res;
+}
+
+static PyObject *Qt_EndFullScreen(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Ptr fullState;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "sl",
+                             &fullState,
+                             &flags))
+               return NULL;
+       _err = EndFullScreen(fullState,
+                            flags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_AddSoundDescriptionExtension(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SoundDescriptionHandle desc;
+       Handle extension;
+       OSType idType;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             ResObj_Convert, &desc,
+                             ResObj_Convert, &extension,
+                             PyMac_GetOSType, &idType))
+               return NULL;
+       _err = AddSoundDescriptionExtension(desc,
+                                           extension,
+                                           idType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_GetSoundDescriptionExtension(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SoundDescriptionHandle desc;
+       Handle extension;
+       OSType idType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &desc,
+                             PyMac_GetOSType, &idType))
+               return NULL;
+       _err = GetSoundDescriptionExtension(desc,
+                                           &extension,
+                                           idType);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, extension);
+       return _res;
+}
+
+static PyObject *Qt_RemoveSoundDescriptionExtension(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       SoundDescriptionHandle desc;
+       OSType idType;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             ResObj_Convert, &desc,
+                             PyMac_GetOSType, &idType))
+               return NULL;
+       _err = RemoveSoundDescriptionExtension(desc,
+                                              idType);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_QTIsStandardParameterDialogEvent(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       EventRecord pEvent;
+       QTParameterDialog createdDialog;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &createdDialog))
+               return NULL;
+       _err = QTIsStandardParameterDialogEvent(&pEvent,
+                                               createdDialog);
+       if (_err != noErr) return PyMac_Error(_err);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildEventRecord, &pEvent);
+       return _res;
+}
+
+static PyObject *Qt_QTDismissStandardParameterDialog(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       QTParameterDialog createdDialog;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &createdDialog))
+               return NULL;
+       _err = QTDismissStandardParameterDialog(createdDialog);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_QTStandardParameterDialogDoAction(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       QTParameterDialog createdDialog;
+       long action;
+       void * params;
+       if (!PyArg_ParseTuple(_args, "lls",
+                             &createdDialog,
+                             &action,
+                             &params))
+               return NULL;
+       _err = QTStandardParameterDialogDoAction(createdDialog,
+                                                action,
+                                                params);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_QTRegisterAccessKey(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Str255 accessKeyType;
+       long flags;
+       Handle accessKey;
+       if (!PyArg_ParseTuple(_args, "O&lO&",
+                             PyMac_GetStr255, accessKeyType,
+                             &flags,
+                             ResObj_Convert, &accessKey))
+               return NULL;
+       _err = QTRegisterAccessKey(accessKeyType,
+                                  flags,
+                                  accessKey);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_QTUnregisterAccessKey(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Str255 accessKeyType;
+       long flags;
+       Handle accessKey;
+       if (!PyArg_ParseTuple(_args, "O&lO&",
+                             PyMac_GetStr255, accessKeyType,
+                             &flags,
+                             ResObj_Convert, &accessKey))
+               return NULL;
+       _err = QTUnregisterAccessKey(accessKeyType,
+                                    flags,
+                                    accessKey);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_QTTextToNativeText(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       Handle theText;
+       long encoding;
+       long flags;
+       if (!PyArg_ParseTuple(_args, "O&ll",
+                             ResObj_Convert, &theText,
+                             &encoding,
+                             &flags))
+               return NULL;
+       _err = QTTextToNativeText(theText,
+                                 encoding,
+                                 flags);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_VideoMediaResetStatistics(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &mh))
+               return NULL;
+       _rv = VideoMediaResetStatistics(mh);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_VideoMediaGetStatistics(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &mh))
+               return NULL;
+       _rv = VideoMediaGetStatistics(mh);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_VideoMediaGetStallCount(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       unsigned long stalls;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &mh))
+               return NULL;
+       _rv = VideoMediaGetStallCount(mh,
+                                     &stalls);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            stalls);
+       return _res;
+}
+
+static PyObject *Qt_VideoMediaSetCodecParameter(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       CodecType cType;
+       OSType parameterID;
+       long parameterChangeSeed;
+       void * dataPtr;
+       long dataSize;
+       if (!PyArg_ParseTuple(_args, "O&O&O&lsl",
+                             CmpInstObj_Convert, &mh,
+                             PyMac_GetOSType, &cType,
+                             PyMac_GetOSType, &parameterID,
+                             &parameterChangeSeed,
+                             &dataPtr,
+                             &dataSize))
+               return NULL;
+       _rv = VideoMediaSetCodecParameter(mh,
+                                         cType,
+                                         parameterID,
+                                         parameterChangeSeed,
+                                         dataPtr,
+                                         dataSize);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_VideoMediaGetCodecParameter(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       CodecType cType;
+       OSType parameterID;
+       Handle outParameterData;
+       if (!PyArg_ParseTuple(_args, "O&O&O&O&",
+                             CmpInstObj_Convert, &mh,
+                             PyMac_GetOSType, &cType,
+                             PyMac_GetOSType, &parameterID,
+                             ResObj_Convert, &outParameterData))
+               return NULL;
+       _rv = VideoMediaGetCodecParameter(mh,
+                                         cType,
+                                         parameterID,
+                                         outParameterData);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaAddTextSample(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       Ptr text;
+       unsigned long size;
+       short fontNumber;
+       short fontSize;
+       Style textFace;
+       RGBColor textColor;
+       RGBColor backColor;
+       short textJustification;
+       Rect textBox;
+       long displayFlags;
+       TimeValue scrollDelay;
+       short hiliteStart;
+       short hiliteEnd;
+       RGBColor rgbHiliteColor;
+       TimeValue duration;
+       TimeValue sampleTime;
+       if (!PyArg_ParseTuple(_args, "O&slhhbhllhhl",
+                             CmpInstObj_Convert, &mh,
+                             &text,
+                             &size,
+                             &fontNumber,
+                             &fontSize,
+                             &textFace,
+                             &textJustification,
+                             &displayFlags,
+                             &scrollDelay,
+                             &hiliteStart,
+                             &hiliteEnd,
+                             &duration))
+               return NULL;
+       _rv = TextMediaAddTextSample(mh,
+                                    text,
+                                    size,
+                                    fontNumber,
+                                    fontSize,
+                                    textFace,
+                                    &textColor,
+                                    &backColor,
+                                    textJustification,
+                                    &textBox,
+                                    displayFlags,
+                                    scrollDelay,
+                                    hiliteStart,
+                                    hiliteEnd,
+                                    &rgbHiliteColor,
+                                    duration,
+                                    &sampleTime);
+       _res = Py_BuildValue("lO&O&O&O&l",
+                            _rv,
+                            QdRGB_New, &textColor,
+                            QdRGB_New, &backColor,
+                            PyMac_BuildRect, &textBox,
+                            QdRGB_New, &rgbHiliteColor,
+                            sampleTime);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaAddTESample(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       TEHandle hTE;
+       RGBColor backColor;
+       short textJustification;
+       Rect textBox;
+       long displayFlags;
+       TimeValue scrollDelay;
+       short hiliteStart;
+       short hiliteEnd;
+       RGBColor rgbHiliteColor;
+       TimeValue duration;
+       TimeValue sampleTime;
+       if (!PyArg_ParseTuple(_args, "O&O&hllhhl",
+                             CmpInstObj_Convert, &mh,
+                             ResObj_Convert, &hTE,
+                             &textJustification,
+                             &displayFlags,
+                             &scrollDelay,
+                             &hiliteStart,
+                             &hiliteEnd,
+                             &duration))
+               return NULL;
+       _rv = TextMediaAddTESample(mh,
+                                  hTE,
+                                  &backColor,
+                                  textJustification,
+                                  &textBox,
+                                  displayFlags,
+                                  scrollDelay,
+                                  hiliteStart,
+                                  hiliteEnd,
+                                  &rgbHiliteColor,
+                                  duration,
+                                  &sampleTime);
+       _res = Py_BuildValue("lO&O&O&l",
+                            _rv,
+                            QdRGB_New, &backColor,
+                            PyMac_BuildRect, &textBox,
+                            QdRGB_New, &rgbHiliteColor,
+                            sampleTime);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaAddHiliteSample(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short hiliteStart;
+       short hiliteEnd;
+       RGBColor rgbHiliteColor;
+       TimeValue duration;
+       TimeValue sampleTime;
+       if (!PyArg_ParseTuple(_args, "O&hhl",
+                             CmpInstObj_Convert, &mh,
+                             &hiliteStart,
+                             &hiliteEnd,
+                             &duration))
+               return NULL;
+       _rv = TextMediaAddHiliteSample(mh,
+                                      hiliteStart,
+                                      hiliteEnd,
+                                      &rgbHiliteColor,
+                                      duration,
+                                      &sampleTime);
+       _res = Py_BuildValue("lO&l",
+                            _rv,
+                            QdRGB_New, &rgbHiliteColor,
+                            sampleTime);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaDrawRaw(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       GWorldPtr gw;
+       GDHandle gd;
+       void * data;
+       long dataSize;
+       TextDescriptionHandle tdh;
+       if (!PyArg_ParseTuple(_args, "O&O&O&slO&",
+                             CmpInstObj_Convert, &mh,
+                             GWorldObj_Convert, &gw,
+                             OptResObj_Convert, &gd,
+                             &data,
+                             &dataSize,
+                             ResObj_Convert, &tdh))
+               return NULL;
+       _rv = TextMediaDrawRaw(mh,
+                              gw,
+                              gd,
+                              data,
+                              dataSize,
+                              tdh);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaSetTextProperty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       TimeValue atMediaTime;
+       long propertyType;
+       void * data;
+       long dataSize;
+       if (!PyArg_ParseTuple(_args, "O&llsl",
+                             CmpInstObj_Convert, &mh,
+                             &atMediaTime,
+                             &propertyType,
+                             &data,
+                             &dataSize))
+               return NULL;
+       _rv = TextMediaSetTextProperty(mh,
+                                      atMediaTime,
+                                      propertyType,
+                                      data,
+                                      dataSize);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaRawSetup(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       GWorldPtr gw;
+       GDHandle gd;
+       void * data;
+       long dataSize;
+       TextDescriptionHandle tdh;
+       TimeValue sampleDuration;
+       if (!PyArg_ParseTuple(_args, "O&O&O&slO&l",
+                             CmpInstObj_Convert, &mh,
+                             GWorldObj_Convert, &gw,
+                             OptResObj_Convert, &gd,
+                             &data,
+                             &dataSize,
+                             ResObj_Convert, &tdh,
+                             &sampleDuration))
+               return NULL;
+       _rv = TextMediaRawSetup(mh,
+                               gw,
+                               gd,
+                               data,
+                               dataSize,
+                               tdh,
+                               sampleDuration);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaRawIdle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       GWorldPtr gw;
+       GDHandle gd;
+       TimeValue sampleTime;
+       long flagsIn;
+       long flagsOut;
+       if (!PyArg_ParseTuple(_args, "O&O&O&ll",
+                             CmpInstObj_Convert, &mh,
+                             GWorldObj_Convert, &gw,
+                             OptResObj_Convert, &gd,
+                             &sampleTime,
+                             &flagsIn))
+               return NULL;
+       _rv = TextMediaRawIdle(mh,
+                              gw,
+                              gd,
+                              sampleTime,
+                              flagsIn,
+                              &flagsOut);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            flagsOut);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaFindNextText(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       Ptr text;
+       long size;
+       short findFlags;
+       TimeValue startTime;
+       TimeValue foundTime;
+       TimeValue foundDuration;
+       long offset;
+       if (!PyArg_ParseTuple(_args, "O&slhl",
+                             CmpInstObj_Convert, &mh,
+                             &text,
+                             &size,
+                             &findFlags,
+                             &startTime))
+               return NULL;
+       _rv = TextMediaFindNextText(mh,
+                                   text,
+                                   size,
+                                   findFlags,
+                                   startTime,
+                                   &foundTime,
+                                   &foundDuration,
+                                   &offset);
+       _res = Py_BuildValue("llll",
+                            _rv,
+                            foundTime,
+                            foundDuration,
+                            offset);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaHiliteTextSample(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       TimeValue sampleTime;
+       short hiliteStart;
+       short hiliteEnd;
+       RGBColor rgbHiliteColor;
+       if (!PyArg_ParseTuple(_args, "O&lhh",
+                             CmpInstObj_Convert, &mh,
+                             &sampleTime,
+                             &hiliteStart,
+                             &hiliteEnd))
+               return NULL;
+       _rv = TextMediaHiliteTextSample(mh,
+                                       sampleTime,
+                                       hiliteStart,
+                                       hiliteEnd,
+                                       &rgbHiliteColor);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            QdRGB_New, &rgbHiliteColor);
+       return _res;
+}
+
+static PyObject *Qt_TextMediaSetTextSampleData(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       void * data;
+       OSType dataType;
+       if (!PyArg_ParseTuple(_args, "O&sO&",
+                             CmpInstObj_Convert, &mh,
+                             &data,
+                             PyMac_GetOSType, &dataType))
+               return NULL;
+       _rv = TextMediaSetTextSampleData(mh,
+                                        data,
+                                        dataType);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaSetProperty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short spriteIndex;
+       long propertyType;
+       void * propertyValue;
+       if (!PyArg_ParseTuple(_args, "O&hls",
+                             CmpInstObj_Convert, &mh,
+                             &spriteIndex,
+                             &propertyType,
+                             &propertyValue))
+               return NULL;
+       _rv = SpriteMediaSetProperty(mh,
+                                    spriteIndex,
+                                    propertyType,
+                                    propertyValue);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaGetProperty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short spriteIndex;
+       long propertyType;
+       void * propertyValue;
+       if (!PyArg_ParseTuple(_args, "O&hls",
+                             CmpInstObj_Convert, &mh,
+                             &spriteIndex,
+                             &propertyType,
+                             &propertyValue))
+               return NULL;
+       _rv = SpriteMediaGetProperty(mh,
+                                    spriteIndex,
+                                    propertyType,
+                                    propertyValue);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaHitTestSprites(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long flags;
+       Point loc;
+       short spriteHitIndex;
+       if (!PyArg_ParseTuple(_args, "O&lO&",
+                             CmpInstObj_Convert, &mh,
+                             &flags,
+                             PyMac_GetPoint, &loc))
+               return NULL;
+       _rv = SpriteMediaHitTestSprites(mh,
+                                       flags,
+                                       loc,
+                                       &spriteHitIndex);
+       _res = Py_BuildValue("lh",
+                            _rv,
+                            spriteHitIndex);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaCountSprites(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short numSprites;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &mh))
+               return NULL;
+       _rv = SpriteMediaCountSprites(mh,
+                                     &numSprites);
+       _res = Py_BuildValue("lh",
+                            _rv,
+                            numSprites);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaCountImages(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short numImages;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &mh))
+               return NULL;
+       _rv = SpriteMediaCountImages(mh,
+                                    &numImages);
+       _res = Py_BuildValue("lh",
+                            _rv,
+                            numImages);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaGetIndImageDescription(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short imageIndex;
+       ImageDescriptionHandle imageDescription;
+       if (!PyArg_ParseTuple(_args, "O&hO&",
+                             CmpInstObj_Convert, &mh,
+                             &imageIndex,
+                             ResObj_Convert, &imageDescription))
+               return NULL;
+       _rv = SpriteMediaGetIndImageDescription(mh,
+                                               imageIndex,
+                                               imageDescription);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaGetDisplayedSampleNumber(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long sampleNum;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &mh))
+               return NULL;
+       _rv = SpriteMediaGetDisplayedSampleNumber(mh,
+                                                 &sampleNum);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            sampleNum);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaGetSpriteName(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID spriteID;
+       Str255 spriteName;
+       if (!PyArg_ParseTuple(_args, "O&lO&",
+                             CmpInstObj_Convert, &mh,
+                             &spriteID,
+                             PyMac_GetStr255, spriteName))
+               return NULL;
+       _rv = SpriteMediaGetSpriteName(mh,
+                                      spriteID,
+                                      spriteName);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaGetImageName(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short imageIndex;
+       Str255 imageName;
+       if (!PyArg_ParseTuple(_args, "O&hO&",
+                             CmpInstObj_Convert, &mh,
+                             &imageIndex,
+                             PyMac_GetStr255, imageName))
+               return NULL;
+       _rv = SpriteMediaGetImageName(mh,
+                                     imageIndex,
+                                     imageName);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaSetSpriteProperty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID spriteID;
+       long propertyType;
+       void * propertyValue;
+       if (!PyArg_ParseTuple(_args, "O&lls",
+                             CmpInstObj_Convert, &mh,
+                             &spriteID,
+                             &propertyType,
+                             &propertyValue))
+               return NULL;
+       _rv = SpriteMediaSetSpriteProperty(mh,
+                                          spriteID,
+                                          propertyType,
+                                          propertyValue);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaGetSpriteProperty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID spriteID;
+       long propertyType;
+       void * propertyValue;
+       if (!PyArg_ParseTuple(_args, "O&lls",
+                             CmpInstObj_Convert, &mh,
+                             &spriteID,
+                             &propertyType,
+                             &propertyValue))
+               return NULL;
+       _rv = SpriteMediaGetSpriteProperty(mh,
+                                          spriteID,
+                                          propertyType,
+                                          propertyValue);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaHitTestAllSprites(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long flags;
+       Point loc;
+       QTAtomID spriteHitID;
+       if (!PyArg_ParseTuple(_args, "O&lO&",
+                             CmpInstObj_Convert, &mh,
+                             &flags,
+                             PyMac_GetPoint, &loc))
+               return NULL;
+       _rv = SpriteMediaHitTestAllSprites(mh,
+                                          flags,
+                                          loc,
+                                          &spriteHitID);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            spriteHitID);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaHitTestOneSprite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID spriteID;
+       long flags;
+       Point loc;
+       Boolean wasHit;
+       if (!PyArg_ParseTuple(_args, "O&llO&",
+                             CmpInstObj_Convert, &mh,
+                             &spriteID,
+                             &flags,
+                             PyMac_GetPoint, &loc))
+               return NULL;
+       _rv = SpriteMediaHitTestOneSprite(mh,
+                                         spriteID,
+                                         flags,
+                                         loc,
+                                         &wasHit);
+       _res = Py_BuildValue("lb",
+                            _rv,
+                            wasHit);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaSpriteIndexToID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short spriteIndex;
+       QTAtomID spriteID;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             CmpInstObj_Convert, &mh,
+                             &spriteIndex))
+               return NULL;
+       _rv = SpriteMediaSpriteIndexToID(mh,
+                                        spriteIndex,
+                                        &spriteID);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            spriteID);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaSpriteIDToIndex(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID spriteID;
+       short spriteIndex;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &spriteID))
+               return NULL;
+       _rv = SpriteMediaSpriteIDToIndex(mh,
+                                        spriteID,
+                                        &spriteIndex);
+       _res = Py_BuildValue("lh",
+                            _rv,
+                            spriteIndex);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaSetActionVariable(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID variableID;
+       float value;
+       if (!PyArg_ParseTuple(_args, "O&lf",
+                             CmpInstObj_Convert, &mh,
+                             &variableID,
+                             &value))
+               return NULL;
+       _rv = SpriteMediaSetActionVariable(mh,
+                                          variableID,
+                                          &value);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaGetActionVariable(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID variableID;
+       float value;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &variableID))
+               return NULL;
+       _rv = SpriteMediaGetActionVariable(mh,
+                                          variableID,
+                                          &value);
+       _res = Py_BuildValue("lf",
+                            _rv,
+                            value);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_SpriteMediaGetIndImageProperty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short imageIndex;
+       long imagePropertyType;
+       void * imagePropertyValue;
+       if (!PyArg_ParseTuple(_args, "O&hls",
+                             CmpInstObj_Convert, &mh,
+                             &imageIndex,
+                             &imagePropertyType,
+                             &imagePropertyValue))
+               return NULL;
+       _rv = SpriteMediaGetIndImageProperty(mh,
+                                            imageIndex,
+                                            imagePropertyType,
+                                            imagePropertyValue);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+static PyObject *Qt_SpriteMediaDisposeSprite(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID spriteID;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &spriteID))
+               return NULL;
+       _rv = SpriteMediaDisposeSprite(mh,
+                                      spriteID);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaSetActionVariableToString(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID variableID;
+       Ptr theCString;
+       if (!PyArg_ParseTuple(_args, "O&ls",
+                             CmpInstObj_Convert, &mh,
+                             &variableID,
+                             &theCString))
+               return NULL;
+       _rv = SpriteMediaSetActionVariableToString(mh,
+                                                  variableID,
+                                                  theCString);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_SpriteMediaGetActionVariableAsString(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID variableID;
+       Handle theCString;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &variableID))
+               return NULL;
+       _rv = SpriteMediaGetActionVariableAsString(mh,
+                                                  variableID,
+                                                  &theCString);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            ResObj_New, theCString);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaSetPan(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short xPercent;
+       short yPercent;
+       if (!PyArg_ParseTuple(_args, "O&hh",
+                             CmpInstObj_Convert, &mh,
+                             &xPercent,
+                             &yPercent))
+               return NULL;
+       _rv = FlashMediaSetPan(mh,
+                              xPercent,
+                              yPercent);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaSetZoom(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       short factor;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             CmpInstObj_Convert, &mh,
+                             &factor))
+               return NULL;
+       _rv = FlashMediaSetZoom(mh,
+                               factor);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaSetZoomRect(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long left;
+       long top;
+       long right;
+       long bottom;
+       if (!PyArg_ParseTuple(_args, "O&llll",
+                             CmpInstObj_Convert, &mh,
+                             &left,
+                             &top,
+                             &right,
+                             &bottom))
+               return NULL;
+       _rv = FlashMediaSetZoomRect(mh,
+                                   left,
+                                   top,
+                                   right,
+                                   bottom);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaGetRefConBounds(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long refCon;
+       long left;
+       long top;
+       long right;
+       long bottom;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &refCon))
+               return NULL;
+       _rv = FlashMediaGetRefConBounds(mh,
+                                       refCon,
+                                       &left,
+                                       &top,
+                                       &right,
+                                       &bottom);
+       _res = Py_BuildValue("lllll",
+                            _rv,
+                            left,
+                            top,
+                            right,
+                            bottom);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaGetRefConID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long refCon;
+       long refConID;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &refCon))
+               return NULL;
+       _rv = FlashMediaGetRefConID(mh,
+                                   refCon,
+                                   &refConID);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            refConID);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaIDToRefCon(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long refConID;
+       long refCon;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &refConID))
+               return NULL;
+       _rv = FlashMediaIDToRefCon(mh,
+                                  refConID,
+                                  &refCon);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            refCon);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaGetDisplayedFrameNumber(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long flashFrameNumber;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &mh))
+               return NULL;
+       _rv = FlashMediaGetDisplayedFrameNumber(mh,
+                                               &flashFrameNumber);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            flashFrameNumber);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaFrameNumberToMovieTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long flashFrameNumber;
+       TimeValue movieTime;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &flashFrameNumber))
+               return NULL;
+       _rv = FlashMediaFrameNumberToMovieTime(mh,
+                                              flashFrameNumber,
+                                              &movieTime);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            movieTime);
+       return _res;
+}
+
+static PyObject *Qt_FlashMediaFrameLabelToMovieTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       Ptr theLabel;
+       TimeValue movieTime;
+       if (!PyArg_ParseTuple(_args, "O&s",
+                             CmpInstObj_Convert, &mh,
+                             &theLabel))
+               return NULL;
+       _rv = FlashMediaFrameLabelToMovieTime(mh,
+                                             theLabel,
+                                             &movieTime);
+       _res = Py_BuildValue("ll",
+                            _rv,
+                            movieTime);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_MovieMediaGetCurrentMovieProperty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       OSType whichProperty;
+       void * value;
+       if (!PyArg_ParseTuple(_args, "O&O&s",
+                             CmpInstObj_Convert, &mh,
+                             PyMac_GetOSType, &whichProperty,
+                             &value))
+               return NULL;
+       _rv = MovieMediaGetCurrentMovieProperty(mh,
+                                               whichProperty,
+                                               value);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_MovieMediaGetCurrentTrackProperty(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       long trackID;
+       OSType whichProperty;
+       void * value;
+       if (!PyArg_ParseTuple(_args, "O&lO&s",
+                             CmpInstObj_Convert, &mh,
+                             &trackID,
+                             PyMac_GetOSType, &whichProperty,
+                             &value))
+               return NULL;
+       _rv = MovieMediaGetCurrentTrackProperty(mh,
+                                               trackID,
+                                               whichProperty,
+                                               value);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_MovieMediaGetChildMovieDataReference(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID dataRefID;
+       short dataRefIndex;
+       OSType dataRefType;
+       Handle dataRef;
+       QTAtomID dataRefIDOut;
+       short dataRefIndexOut;
+       if (!PyArg_ParseTuple(_args, "O&lh",
+                             CmpInstObj_Convert, &mh,
+                             &dataRefID,
+                             &dataRefIndex))
+               return NULL;
+       _rv = MovieMediaGetChildMovieDataReference(mh,
+                                                  dataRefID,
+                                                  dataRefIndex,
+                                                  &dataRefType,
+                                                  &dataRef,
+                                                  &dataRefIDOut,
+                                                  &dataRefIndexOut);
+       _res = Py_BuildValue("lO&O&lh",
+                            _rv,
+                            PyMac_BuildOSType, dataRefType,
+                            ResObj_New, dataRef,
+                            dataRefIDOut,
+                            dataRefIndexOut);
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_MovieMediaSetChildMovieDataReference(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID dataRefID;
+       OSType dataRefType;
+       Handle dataRef;
+       if (!PyArg_ParseTuple(_args, "O&lO&O&",
+                             CmpInstObj_Convert, &mh,
+                             &dataRefID,
+                             PyMac_GetOSType, &dataRefType,
+                             ResObj_Convert, &dataRef))
+               return NULL;
+       _rv = MovieMediaSetChildMovieDataReference(mh,
+                                                  dataRefID,
+                                                  dataRefType,
+                                                  dataRef);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_MovieMediaLoadChildMovieFromDataReference(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTAtomID dataRefID;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &mh,
+                             &dataRefID))
+               return NULL;
+       _rv = MovieMediaLoadChildMovieFromDataReference(mh,
+                                                       dataRefID);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+static PyObject *Qt_Media3DGetCurrentGroup(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       void * group;
+       if (!PyArg_ParseTuple(_args, "O&s",
+                             CmpInstObj_Convert, &mh,
+                             &group))
+               return NULL;
+       _rv = Media3DGetCurrentGroup(mh,
+                                    group);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_Media3DTranslateNamedObjectTo(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       char objectName;
+       Fixed x;
+       Fixed y;
+       Fixed z;
+       if (!PyArg_ParseTuple(_args, "O&O&O&O&",
+                             CmpInstObj_Convert, &mh,
+                             PyMac_GetFixed, &x,
+                             PyMac_GetFixed, &y,
+                             PyMac_GetFixed, &z))
+               return NULL;
+       _rv = Media3DTranslateNamedObjectTo(mh,
+                                           &objectName,
+                                           x,
+                                           y,
+                                           z);
+       _res = Py_BuildValue("lc",
+                            _rv,
+                            objectName);
+       return _res;
+}
+
+static PyObject *Qt_Media3DScaleNamedObjectTo(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       char objectName;
+       Fixed xScale;
+       Fixed yScale;
+       Fixed zScale;
+       if (!PyArg_ParseTuple(_args, "O&O&O&O&",
+                             CmpInstObj_Convert, &mh,
+                             PyMac_GetFixed, &xScale,
+                             PyMac_GetFixed, &yScale,
+                             PyMac_GetFixed, &zScale))
+               return NULL;
+       _rv = Media3DScaleNamedObjectTo(mh,
+                                       &objectName,
+                                       xScale,
+                                       yScale,
+                                       zScale);
+       _res = Py_BuildValue("lc",
+                            _rv,
+                            objectName);
+       return _res;
+}
+
+static PyObject *Qt_Media3DRotateNamedObjectTo(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       char objectName;
+       Fixed xDegrees;
+       Fixed yDegrees;
+       Fixed zDegrees;
+       if (!PyArg_ParseTuple(_args, "O&O&O&O&",
+                             CmpInstObj_Convert, &mh,
+                             PyMac_GetFixed, &xDegrees,
+                             PyMac_GetFixed, &yDegrees,
+                             PyMac_GetFixed, &zDegrees))
+               return NULL;
+       _rv = Media3DRotateNamedObjectTo(mh,
+                                        &objectName,
+                                        xDegrees,
+                                        yDegrees,
+                                        zDegrees);
+       _res = Py_BuildValue("lc",
+                            _rv,
+                            objectName);
+       return _res;
+}
+
+static PyObject *Qt_Media3DSetCameraData(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       void * cameraData;
+       if (!PyArg_ParseTuple(_args, "O&s",
+                             CmpInstObj_Convert, &mh,
+                             &cameraData))
+               return NULL;
+       _rv = Media3DSetCameraData(mh,
+                                  cameraData);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_Media3DGetCameraData(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       void * cameraData;
+       if (!PyArg_ParseTuple(_args, "O&s",
+                             CmpInstObj_Convert, &mh,
+                             &cameraData))
+               return NULL;
+       _rv = Media3DGetCameraData(mh,
+                                  cameraData);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_Media3DSetCameraAngleAspect(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTFloatSingle fov;
+       QTFloatSingle aspectRatioXToY;
+       if (!PyArg_ParseTuple(_args, "O&ff",
+                             CmpInstObj_Convert, &mh,
+                             &fov,
+                             &aspectRatioXToY))
+               return NULL;
+       _rv = Media3DSetCameraAngleAspect(mh,
+                                         fov,
+                                         aspectRatioXToY);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_Media3DGetCameraAngleAspect(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       QTFloatSingle fov;
+       QTFloatSingle aspectRatioXToY;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             CmpInstObj_Convert, &mh))
+               return NULL;
+       _rv = Media3DGetCameraAngleAspect(mh,
+                                         &fov,
+                                         &aspectRatioXToY);
+       _res = Py_BuildValue("lff",
+                            _rv,
+                            fov,
+                            aspectRatioXToY);
+       return _res;
+}
+
+static PyObject *Qt_Media3DSetCameraRange(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       void * tQ3CameraRange;
+       if (!PyArg_ParseTuple(_args, "O&s",
+                             CmpInstObj_Convert, &mh,
+                             &tQ3CameraRange))
+               return NULL;
+       _rv = Media3DSetCameraRange(mh,
+                                   tQ3CameraRange);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Qt_Media3DGetCameraRange(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       void * tQ3CameraRange;
+       if (!PyArg_ParseTuple(_args, "O&s",
+                             CmpInstObj_Convert, &mh,
+                             &tQ3CameraRange))
+               return NULL;
+       _rv = Media3DGetCameraRange(mh,
+                                   tQ3CameraRange);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+#if !TARGET_API_MAC_CARBON
+
+static PyObject *Qt_Media3DGetViewObject(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       MediaHandler mh;
+       void * tq3viewObject;
+       if (!PyArg_ParseTuple(_args, "O&s",
+                             CmpInstObj_Convert, &mh,
+                             &tq3viewObject))
+               return NULL;
+       _rv = Media3DGetViewObject(mh,
+                                  tq3viewObject);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+static PyObject *Qt_NewTimeBase(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeBase _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = NewTimeBase();
+       _res = Py_BuildValue("O&",
+                            TimeBaseObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Qt_ConvertTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord inout;
+       TimeBase newBase;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             QtTimeRecord_Convert, &inout,
+                             TimeBaseObj_Convert, &newBase))
+               return NULL;
+       ConvertTime(&inout,
+                   newBase);
+       _res = Py_BuildValue("O&",
+                            QtTimeRecord_New, &inout);
+       return _res;
+}
+
+static PyObject *Qt_ConvertTimeScale(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord inout;
+       TimeScale newScale;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             QtTimeRecord_Convert, &inout,
+                             &newScale))
+               return NULL;
+       ConvertTimeScale(&inout,
+                        newScale);
+       _res = Py_BuildValue("O&",
+                            QtTimeRecord_New, &inout);
+       return _res;
+}
+
+static PyObject *Qt_AddTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord dst;
+       TimeRecord src;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             QtTimeRecord_Convert, &dst,
+                             QtTimeRecord_Convert, &src))
+               return NULL;
+       AddTime(&dst,
+               &src);
+       _res = Py_BuildValue("O&",
+                            QtTimeRecord_New, &dst);
+       return _res;
+}
+
+static PyObject *Qt_SubtractTime(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TimeRecord dst;
+       TimeRecord src;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             QtTimeRecord_Convert, &dst,
+                             QtTimeRecord_Convert, &src))
+               return NULL;
+       SubtractTime(&dst,
+                    &src);
+       _res = Py_BuildValue("O&",
+                            QtTimeRecord_New, &dst);
+       return _res;
+}
+
+static PyObject *Qt_MusicMediaGetIndexedTunePlayer(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ComponentResult _rv;
+       ComponentInstance ti;
+       long sampleDescIndex;
+       ComponentInstance tp;
+       if (!PyArg_ParseTuple(_args, "O&l",
+                             CmpInstObj_Convert, &ti,
+                             &sampleDescIndex))
+               return NULL;
+       _rv = MusicMediaGetIndexedTunePlayer(ti,
+                                            sampleDescIndex,
+                                            &tp);
+       _res = Py_BuildValue("lO&",
+                            _rv,
+                            CmpInstObj_New, tp);
+       return _res;
+}
+
+static PyObject *Qt_AlignWindow(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       WindowPtr wp;
+       Boolean front;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             WinObj_Convert, &wp,
+                             &front))
+               return NULL;
+       AlignWindow(wp,
+                   front,
+                   (Rect *)0,
+                   (ICMAlignmentProcRecordPtr)0);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_DragAlignedWindow(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       WindowPtr wp;
+       Point startPt;
+       Rect boundsRect;
+       if (!PyArg_ParseTuple(_args, "O&O&O&",
+                             WinObj_Convert, &wp,
+                             PyMac_GetPoint, &startPt,
+                             PyMac_GetRect, &boundsRect))
+               return NULL;
+       DragAlignedWindow(wp,
+                         startPt,
+                         &boundsRect,
+                         (Rect *)0,
+                         (ICMAlignmentProcRecordPtr)0);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Qt_MoviesTask(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long maxMilliSecToUse;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &maxMilliSecToUse))
+               return NULL;
+       MoviesTask((Movie)0,
+                  maxMilliSecToUse);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyMethodDef Qt_methods[] = {
+
+#if !TARGET_API_MAC_CARBON
+       {"CheckQuickTimeRegistration", (PyCFunction)Qt_CheckQuickTimeRegistration, 1,
+        "(void * registrationKey, long flags) -> None"},
+#endif
+       {"EnterMovies", (PyCFunction)Qt_EnterMovies, 1,
+        "() -> None"},
+       {"ExitMovies", (PyCFunction)Qt_ExitMovies, 1,
+        "() -> None"},
+       {"GetMoviesError", (PyCFunction)Qt_GetMoviesError, 1,
+        "() -> None"},
+       {"ClearMoviesStickyError", (PyCFunction)Qt_ClearMoviesStickyError, 1,
+        "() -> None"},
+       {"GetMoviesStickyError", (PyCFunction)Qt_GetMoviesStickyError, 1,
+        "() -> None"},
+       {"DisposeMatte", (PyCFunction)Qt_DisposeMatte, 1,
+        "(PixMapHandle theMatte) -> None"},
+       {"NewMovie", (PyCFunction)Qt_NewMovie, 1,
+        "(long flags) -> (Movie _rv)"},
+       {"GetDataHandler", (PyCFunction)Qt_GetDataHandler, 1,
+        "(Handle dataRef, OSType dataHandlerSubType, long flags) -> (Component _rv)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"OpenADataHandler", (PyCFunction)Qt_OpenADataHandler, 1,
+        "(Handle dataRef, OSType dataHandlerSubType, Handle anchorDataRef, OSType anchorDataRefType, TimeBase tb, long flags) -> (ComponentInstance dh)"},
+#endif
+       {"PasteHandleIntoMovie", (PyCFunction)Qt_PasteHandleIntoMovie, 1,
+        "(Handle h, OSType handleType, Movie theMovie, long flags, ComponentInstance userComp) -> None"},
+       {"GetMovieImporterForDataRef", (PyCFunction)Qt_GetMovieImporterForDataRef, 1,
+        "(OSType dataRefType, Handle dataRef, long flags) -> (Component importer)"},
+       {"TrackTimeToMediaTime", (PyCFunction)Qt_TrackTimeToMediaTime, 1,
+        "(TimeValue value, Track theTrack) -> (TimeValue _rv)"},
+       {"NewUserData", (PyCFunction)Qt_NewUserData, 1,
+        "() -> (UserData theUserData)"},
+       {"NewUserDataFromHandle", (PyCFunction)Qt_NewUserDataFromHandle, 1,
+        "(Handle h) -> (UserData theUserData)"},
+       {"CreateMovieFile", (PyCFunction)Qt_CreateMovieFile, 1,
+        "(FSSpec fileSpec, OSType creator, ScriptCode scriptTag, long createMovieFileFlags) -> (short resRefNum, Movie newmovie)"},
+       {"OpenMovieFile", (PyCFunction)Qt_OpenMovieFile, 1,
+        "(FSSpec fileSpec, SInt8 permission) -> (short resRefNum)"},
+       {"CloseMovieFile", (PyCFunction)Qt_CloseMovieFile, 1,
+        "(short resRefNum) -> None"},
+       {"DeleteMovieFile", (PyCFunction)Qt_DeleteMovieFile, 1,
+        "(FSSpec fileSpec) -> None"},
+       {"NewMovieFromFile", (PyCFunction)Qt_NewMovieFromFile, 1,
+        "(short resRefNum, short resId, short newMovieFlags) -> (Movie theMovie, short resId, Boolean dataRefWasChanged)"},
+       {"NewMovieFromHandle", (PyCFunction)Qt_NewMovieFromHandle, 1,
+        "(Handle h, short newMovieFlags) -> (Movie theMovie, Boolean dataRefWasChanged)"},
+       {"NewMovieFromDataFork", (PyCFunction)Qt_NewMovieFromDataFork, 1,
+        "(short fRefNum, long fileOffset, short newMovieFlags) -> (Movie theMovie, Boolean dataRefWasChanged)"},
+       {"NewMovieFromDataFork64", (PyCFunction)Qt_NewMovieFromDataFork64, 1,
+        "(long fRefNum, wide fileOffset, short newMovieFlags) -> (Movie theMovie, Boolean dataRefWasChanged)"},
+       {"NewMovieFromDataRef", (PyCFunction)Qt_NewMovieFromDataRef, 1,
+        "(short flags, Handle dataRef, OSType dataRefType) -> (Movie m, short id)"},
+       {"RemoveMovieResource", (PyCFunction)Qt_RemoveMovieResource, 1,
+        "(short resRefNum, short resId) -> None"},
+       {"CreateShortcutMovieFile", (PyCFunction)Qt_CreateShortcutMovieFile, 1,
+        "(FSSpec fileSpec, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, Handle targetDataRef, OSType targetDataRefType) -> None"},
+       {"NewMovieFromScrap", (PyCFunction)Qt_NewMovieFromScrap, 1,
+        "(long newMovieFlags) -> (Movie _rv)"},
+       {"QTNewAlias", (PyCFunction)Qt_QTNewAlias, 1,
+        "(FSSpec fss, Boolean minimal) -> (AliasHandle alias)"},
+       {"EndFullScreen", (PyCFunction)Qt_EndFullScreen, 1,
+        "(Ptr fullState, long flags) -> None"},
+       {"AddSoundDescriptionExtension", (PyCFunction)Qt_AddSoundDescriptionExtension, 1,
+        "(SoundDescriptionHandle desc, Handle extension, OSType idType) -> None"},
+       {"GetSoundDescriptionExtension", (PyCFunction)Qt_GetSoundDescriptionExtension, 1,
+        "(SoundDescriptionHandle desc, OSType idType) -> (Handle extension)"},
+       {"RemoveSoundDescriptionExtension", (PyCFunction)Qt_RemoveSoundDescriptionExtension, 1,
+        "(SoundDescriptionHandle desc, OSType idType) -> None"},
+       {"QTIsStandardParameterDialogEvent", (PyCFunction)Qt_QTIsStandardParameterDialogEvent, 1,
+        "(QTParameterDialog createdDialog) -> (EventRecord pEvent)"},
+       {"QTDismissStandardParameterDialog", (PyCFunction)Qt_QTDismissStandardParameterDialog, 1,
+        "(QTParameterDialog createdDialog) -> None"},
+       {"QTStandardParameterDialogDoAction", (PyCFunction)Qt_QTStandardParameterDialogDoAction, 1,
+        "(QTParameterDialog createdDialog, long action, void * params) -> None"},
+       {"QTRegisterAccessKey", (PyCFunction)Qt_QTRegisterAccessKey, 1,
+        "(Str255 accessKeyType, long flags, Handle accessKey) -> None"},
+       {"QTUnregisterAccessKey", (PyCFunction)Qt_QTUnregisterAccessKey, 1,
+        "(Str255 accessKeyType, long flags, Handle accessKey) -> None"},
+       {"QTTextToNativeText", (PyCFunction)Qt_QTTextToNativeText, 1,
+        "(Handle theText, long encoding, long flags) -> None"},
+       {"VideoMediaResetStatistics", (PyCFunction)Qt_VideoMediaResetStatistics, 1,
+        "(MediaHandler mh) -> (ComponentResult _rv)"},
+       {"VideoMediaGetStatistics", (PyCFunction)Qt_VideoMediaGetStatistics, 1,
+        "(MediaHandler mh) -> (ComponentResult _rv)"},
+       {"VideoMediaGetStallCount", (PyCFunction)Qt_VideoMediaGetStallCount, 1,
+        "(MediaHandler mh) -> (ComponentResult _rv, unsigned long stalls)"},
+       {"VideoMediaSetCodecParameter", (PyCFunction)Qt_VideoMediaSetCodecParameter, 1,
+        "(MediaHandler mh, CodecType cType, OSType parameterID, long parameterChangeSeed, void * dataPtr, long dataSize) -> (ComponentResult _rv)"},
+       {"VideoMediaGetCodecParameter", (PyCFunction)Qt_VideoMediaGetCodecParameter, 1,
+        "(MediaHandler mh, CodecType cType, OSType parameterID, Handle outParameterData) -> (ComponentResult _rv)"},
+       {"TextMediaAddTextSample", (PyCFunction)Qt_TextMediaAddTextSample, 1,
+        "(MediaHandler mh, Ptr text, unsigned long size, short fontNumber, short fontSize, Style textFace, short textJustification, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, TimeValue duration) -> (ComponentResult _rv, RGBColor textColor, RGBColor backColor, Rect textBox, RGBColor rgbHiliteColor, TimeValue sampleTime)"},
+       {"TextMediaAddTESample", (PyCFunction)Qt_TextMediaAddTESample, 1,
+        "(MediaHandler mh, TEHandle hTE, short textJustification, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, TimeValue duration) -> (ComponentResult _rv, RGBColor backColor, Rect textBox, RGBColor rgbHiliteColor, TimeValue sampleTime)"},
+       {"TextMediaAddHiliteSample", (PyCFunction)Qt_TextMediaAddHiliteSample, 1,
+        "(MediaHandler mh, short hiliteStart, short hiliteEnd, TimeValue duration) -> (ComponentResult _rv, RGBColor rgbHiliteColor, TimeValue sampleTime)"},
+       {"TextMediaDrawRaw", (PyCFunction)Qt_TextMediaDrawRaw, 1,
+        "(MediaHandler mh, GWorldPtr gw, GDHandle gd, void * data, long dataSize, TextDescriptionHandle tdh) -> (ComponentResult _rv)"},
+       {"TextMediaSetTextProperty", (PyCFunction)Qt_TextMediaSetTextProperty, 1,
+        "(MediaHandler mh, TimeValue atMediaTime, long propertyType, void * data, long dataSize) -> (ComponentResult _rv)"},
+       {"TextMediaRawSetup", (PyCFunction)Qt_TextMediaRawSetup, 1,
+        "(MediaHandler mh, GWorldPtr gw, GDHandle gd, void * data, long dataSize, TextDescriptionHandle tdh, TimeValue sampleDuration) -> (ComponentResult _rv)"},
+       {"TextMediaRawIdle", (PyCFunction)Qt_TextMediaRawIdle, 1,
+        "(MediaHandler mh, GWorldPtr gw, GDHandle gd, TimeValue sampleTime, long flagsIn) -> (ComponentResult _rv, long flagsOut)"},
+       {"TextMediaFindNextText", (PyCFunction)Qt_TextMediaFindNextText, 1,
+        "(MediaHandler mh, Ptr text, long size, short findFlags, TimeValue startTime) -> (ComponentResult _rv, TimeValue foundTime, TimeValue foundDuration, long offset)"},
+       {"TextMediaHiliteTextSample", (PyCFunction)Qt_TextMediaHiliteTextSample, 1,
+        "(MediaHandler mh, TimeValue sampleTime, short hiliteStart, short hiliteEnd) -> (ComponentResult _rv, RGBColor rgbHiliteColor)"},
+       {"TextMediaSetTextSampleData", (PyCFunction)Qt_TextMediaSetTextSampleData, 1,
+        "(MediaHandler mh, void * data, OSType dataType) -> (ComponentResult _rv)"},
+       {"SpriteMediaSetProperty", (PyCFunction)Qt_SpriteMediaSetProperty, 1,
+        "(MediaHandler mh, short spriteIndex, long propertyType, void * propertyValue) -> (ComponentResult _rv)"},
+       {"SpriteMediaGetProperty", (PyCFunction)Qt_SpriteMediaGetProperty, 1,
+        "(MediaHandler mh, short spriteIndex, long propertyType, void * propertyValue) -> (ComponentResult _rv)"},
+       {"SpriteMediaHitTestSprites", (PyCFunction)Qt_SpriteMediaHitTestSprites, 1,
+        "(MediaHandler mh, long flags, Point loc) -> (ComponentResult _rv, short spriteHitIndex)"},
+       {"SpriteMediaCountSprites", (PyCFunction)Qt_SpriteMediaCountSprites, 1,
+        "(MediaHandler mh) -> (ComponentResult _rv, short numSprites)"},
+       {"SpriteMediaCountImages", (PyCFunction)Qt_SpriteMediaCountImages, 1,
+        "(MediaHandler mh) -> (ComponentResult _rv, short numImages)"},
+       {"SpriteMediaGetIndImageDescription", (PyCFunction)Qt_SpriteMediaGetIndImageDescription, 1,
+        "(MediaHandler mh, short imageIndex, ImageDescriptionHandle imageDescription) -> (ComponentResult _rv)"},
+       {"SpriteMediaGetDisplayedSampleNumber", (PyCFunction)Qt_SpriteMediaGetDisplayedSampleNumber, 1,
+        "(MediaHandler mh) -> (ComponentResult _rv, long sampleNum)"},
+       {"SpriteMediaGetSpriteName", (PyCFunction)Qt_SpriteMediaGetSpriteName, 1,
+        "(MediaHandler mh, QTAtomID spriteID, Str255 spriteName) -> (ComponentResult _rv)"},
+       {"SpriteMediaGetImageName", (PyCFunction)Qt_SpriteMediaGetImageName, 1,
+        "(MediaHandler mh, short imageIndex, Str255 imageName) -> (ComponentResult _rv)"},
+       {"SpriteMediaSetSpriteProperty", (PyCFunction)Qt_SpriteMediaSetSpriteProperty, 1,
+        "(MediaHandler mh, QTAtomID spriteID, long propertyType, void * propertyValue) -> (ComponentResult _rv)"},
+       {"SpriteMediaGetSpriteProperty", (PyCFunction)Qt_SpriteMediaGetSpriteProperty, 1,
+        "(MediaHandler mh, QTAtomID spriteID, long propertyType, void * propertyValue) -> (ComponentResult _rv)"},
+       {"SpriteMediaHitTestAllSprites", (PyCFunction)Qt_SpriteMediaHitTestAllSprites, 1,
+        "(MediaHandler mh, long flags, Point loc) -> (ComponentResult _rv, QTAtomID spriteHitID)"},
+       {"SpriteMediaHitTestOneSprite", (PyCFunction)Qt_SpriteMediaHitTestOneSprite, 1,
+        "(MediaHandler mh, QTAtomID spriteID, long flags, Point loc) -> (ComponentResult _rv, Boolean wasHit)"},
+       {"SpriteMediaSpriteIndexToID", (PyCFunction)Qt_SpriteMediaSpriteIndexToID, 1,
+        "(MediaHandler mh, short spriteIndex) -> (ComponentResult _rv, QTAtomID spriteID)"},
+       {"SpriteMediaSpriteIDToIndex", (PyCFunction)Qt_SpriteMediaSpriteIDToIndex, 1,
+        "(MediaHandler mh, QTAtomID spriteID) -> (ComponentResult _rv, short spriteIndex)"},
+       {"SpriteMediaSetActionVariable", (PyCFunction)Qt_SpriteMediaSetActionVariable, 1,
+        "(MediaHandler mh, QTAtomID variableID, float value) -> (ComponentResult _rv)"},
+       {"SpriteMediaGetActionVariable", (PyCFunction)Qt_SpriteMediaGetActionVariable, 1,
+        "(MediaHandler mh, QTAtomID variableID) -> (ComponentResult _rv, float value)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"SpriteMediaGetIndImageProperty", (PyCFunction)Qt_SpriteMediaGetIndImageProperty, 1,
+        "(MediaHandler mh, short imageIndex, long imagePropertyType, void * imagePropertyValue) -> (ComponentResult _rv)"},
+#endif
+       {"SpriteMediaDisposeSprite", (PyCFunction)Qt_SpriteMediaDisposeSprite, 1,
+        "(MediaHandler mh, QTAtomID spriteID) -> (ComponentResult _rv)"},
+       {"SpriteMediaSetActionVariableToString", (PyCFunction)Qt_SpriteMediaSetActionVariableToString, 1,
+        "(MediaHandler mh, QTAtomID variableID, Ptr theCString) -> (ComponentResult _rv)"},
+       {"SpriteMediaGetActionVariableAsString", (PyCFunction)Qt_SpriteMediaGetActionVariableAsString, 1,
+        "(MediaHandler mh, QTAtomID variableID) -> (ComponentResult _rv, Handle theCString)"},
+       {"FlashMediaSetPan", (PyCFunction)Qt_FlashMediaSetPan, 1,
+        "(MediaHandler mh, short xPercent, short yPercent) -> (ComponentResult _rv)"},
+       {"FlashMediaSetZoom", (PyCFunction)Qt_FlashMediaSetZoom, 1,
+        "(MediaHandler mh, short factor) -> (ComponentResult _rv)"},
+       {"FlashMediaSetZoomRect", (PyCFunction)Qt_FlashMediaSetZoomRect, 1,
+        "(MediaHandler mh, long left, long top, long right, long bottom) -> (ComponentResult _rv)"},
+       {"FlashMediaGetRefConBounds", (PyCFunction)Qt_FlashMediaGetRefConBounds, 1,
+        "(MediaHandler mh, long refCon) -> (ComponentResult _rv, long left, long top, long right, long bottom)"},
+       {"FlashMediaGetRefConID", (PyCFunction)Qt_FlashMediaGetRefConID, 1,
+        "(MediaHandler mh, long refCon) -> (ComponentResult _rv, long refConID)"},
+       {"FlashMediaIDToRefCon", (PyCFunction)Qt_FlashMediaIDToRefCon, 1,
+        "(MediaHandler mh, long refConID) -> (ComponentResult _rv, long refCon)"},
+       {"FlashMediaGetDisplayedFrameNumber", (PyCFunction)Qt_FlashMediaGetDisplayedFrameNumber, 1,
+        "(MediaHandler mh) -> (ComponentResult _rv, long flashFrameNumber)"},
+       {"FlashMediaFrameNumberToMovieTime", (PyCFunction)Qt_FlashMediaFrameNumberToMovieTime, 1,
+        "(MediaHandler mh, long flashFrameNumber) -> (ComponentResult _rv, TimeValue movieTime)"},
+       {"FlashMediaFrameLabelToMovieTime", (PyCFunction)Qt_FlashMediaFrameLabelToMovieTime, 1,
+        "(MediaHandler mh, Ptr theLabel) -> (ComponentResult _rv, TimeValue movieTime)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"MovieMediaGetCurrentMovieProperty", (PyCFunction)Qt_MovieMediaGetCurrentMovieProperty, 1,
+        "(MediaHandler mh, OSType whichProperty, void * value) -> (ComponentResult _rv)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"MovieMediaGetCurrentTrackProperty", (PyCFunction)Qt_MovieMediaGetCurrentTrackProperty, 1,
+        "(MediaHandler mh, long trackID, OSType whichProperty, void * value) -> (ComponentResult _rv)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"MovieMediaGetChildMovieDataReference", (PyCFunction)Qt_MovieMediaGetChildMovieDataReference, 1,
+        "(MediaHandler mh, QTAtomID dataRefID, short dataRefIndex) -> (ComponentResult _rv, OSType dataRefType, Handle dataRef, QTAtomID dataRefIDOut, short dataRefIndexOut)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"MovieMediaSetChildMovieDataReference", (PyCFunction)Qt_MovieMediaSetChildMovieDataReference, 1,
+        "(MediaHandler mh, QTAtomID dataRefID, OSType dataRefType, Handle dataRef) -> (ComponentResult _rv)"},
+#endif
+
+#if !TARGET_API_MAC_CARBON
+       {"MovieMediaLoadChildMovieFromDataReference", (PyCFunction)Qt_MovieMediaLoadChildMovieFromDataReference, 1,
+        "(MediaHandler mh, QTAtomID dataRefID) -> (ComponentResult _rv)"},
+#endif
+       {"Media3DGetCurrentGroup", (PyCFunction)Qt_Media3DGetCurrentGroup, 1,
+        "(MediaHandler mh, void * group) -> (ComponentResult _rv)"},
+       {"Media3DTranslateNamedObjectTo", (PyCFunction)Qt_Media3DTranslateNamedObjectTo, 1,
+        "(MediaHandler mh, Fixed x, Fixed y, Fixed z) -> (ComponentResult _rv, char objectName)"},
+       {"Media3DScaleNamedObjectTo", (PyCFunction)Qt_Media3DScaleNamedObjectTo, 1,
+        "(MediaHandler mh, Fixed xScale, Fixed yScale, Fixed zScale) -> (ComponentResult _rv, char objectName)"},
+       {"Media3DRotateNamedObjectTo", (PyCFunction)Qt_Media3DRotateNamedObjectTo, 1,
+        "(MediaHandler mh, Fixed xDegrees, Fixed yDegrees, Fixed zDegrees) -> (ComponentResult _rv, char objectName)"},
+       {"Media3DSetCameraData", (PyCFunction)Qt_Media3DSetCameraData, 1,
+        "(MediaHandler mh, void * cameraData) -> (ComponentResult _rv)"},
+       {"Media3DGetCameraData", (PyCFunction)Qt_Media3DGetCameraData, 1,
+        "(MediaHandler mh, void * cameraData) -> (ComponentResult _rv)"},
+       {"Media3DSetCameraAngleAspect", (PyCFunction)Qt_Media3DSetCameraAngleAspect, 1,
+        "(MediaHandler mh, QTFloatSingle fov, QTFloatSingle aspectRatioXToY) -> (ComponentResult _rv)"},
+       {"Media3DGetCameraAngleAspect", (PyCFunction)Qt_Media3DGetCameraAngleAspect, 1,
+        "(MediaHandler mh) -> (ComponentResult _rv, QTFloatSingle fov, QTFloatSingle aspectRatioXToY)"},
+       {"Media3DSetCameraRange", (PyCFunction)Qt_Media3DSetCameraRange, 1,
+        "(MediaHandler mh, void * tQ3CameraRange) -> (ComponentResult _rv)"},
+       {"Media3DGetCameraRange", (PyCFunction)Qt_Media3DGetCameraRange, 1,
+        "(MediaHandler mh, void * tQ3CameraRange) -> (ComponentResult _rv)"},
+
+#if !TARGET_API_MAC_CARBON
+       {"Media3DGetViewObject", (PyCFunction)Qt_Media3DGetViewObject, 1,
+        "(MediaHandler mh, void * tq3viewObject) -> (ComponentResult _rv)"},
+#endif
+       {"NewTimeBase", (PyCFunction)Qt_NewTimeBase, 1,
+        "() -> (TimeBase _rv)"},
+       {"ConvertTime", (PyCFunction)Qt_ConvertTime, 1,
+        "(TimeRecord inout, TimeBase newBase) -> (TimeRecord inout)"},
+       {"ConvertTimeScale", (PyCFunction)Qt_ConvertTimeScale, 1,
+        "(TimeRecord inout, TimeScale newScale) -> (TimeRecord inout)"},
+       {"AddTime", (PyCFunction)Qt_AddTime, 1,
+        "(TimeRecord dst, TimeRecord src) -> (TimeRecord dst)"},
+       {"SubtractTime", (PyCFunction)Qt_SubtractTime, 1,
+        "(TimeRecord dst, TimeRecord src) -> (TimeRecord dst)"},
+       {"MusicMediaGetIndexedTunePlayer", (PyCFunction)Qt_MusicMediaGetIndexedTunePlayer, 1,
+        "(ComponentInstance ti, long sampleDescIndex) -> (ComponentResult _rv, ComponentInstance tp)"},
+       {"AlignWindow", (PyCFunction)Qt_AlignWindow, 1,
+        "(WindowPtr wp, Boolean front) -> None"},
+       {"DragAlignedWindow", (PyCFunction)Qt_DragAlignedWindow, 1,
+        "(WindowPtr wp, Point startPt, Rect boundsRect) -> None"},
+       {"MoviesTask", (PyCFunction)Qt_MoviesTask, 1,
+        "(long maxMilliSecToUse) -> None"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initQt(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(Track, TrackObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Track, TrackObj_Convert);
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(Movie, MovieObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Movie, MovieObj_Convert);
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(MovieController, MovieCtlObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MovieController, MovieCtlObj_Convert);
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(TimeBase, TimeBaseObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TimeBase, TimeBaseObj_Convert);
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(UserData, UserDataObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(UserData, UserDataObj_Convert);
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(Media, MediaObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Media, MediaObj_Convert);
+
+
+       m = Py_InitModule("Qt", Qt_methods);
+       d = PyModule_GetDict(m);
+       Qt_Error = PyMac_GetOSErrException();
+       if (Qt_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Qt_Error) != 0)
+               return;
+       MovieController_Type.ob_type = &PyType_Type;
+       Py_INCREF(&MovieController_Type);
+       if (PyDict_SetItemString(d, "MovieControllerType", (PyObject *)&MovieController_Type) != 0)
+               Py_FatalError("can't initialize MovieControllerType");
+       TimeBase_Type.ob_type = &PyType_Type;
+       Py_INCREF(&TimeBase_Type);
+       if (PyDict_SetItemString(d, "TimeBaseType", (PyObject *)&TimeBase_Type) != 0)
+               Py_FatalError("can't initialize TimeBaseType");
+       UserData_Type.ob_type = &PyType_Type;
+       Py_INCREF(&UserData_Type);
+       if (PyDict_SetItemString(d, "UserDataType", (PyObject *)&UserData_Type) != 0)
+               Py_FatalError("can't initialize UserDataType");
+       Media_Type.ob_type = &PyType_Type;
+       Py_INCREF(&Media_Type);
+       if (PyDict_SetItemString(d, "MediaType", (PyObject *)&Media_Type) != 0)
+               Py_FatalError("can't initialize MediaType");
+       Track_Type.ob_type = &PyType_Type;
+       Py_INCREF(&Track_Type);
+       if (PyDict_SetItemString(d, "TrackType", (PyObject *)&Track_Type) != 0)
+               Py_FatalError("can't initialize TrackType");
+       Movie_Type.ob_type = &PyType_Type;
+       Py_INCREF(&Movie_Type);
+       if (PyDict_SetItemString(d, "MovieType", (PyObject *)&Movie_Type) != 0)
+               Py_FatalError("can't initialize MovieType");
+}
+
+/* ========================= End module Qt ========================== */
+
diff --git a/Mac/Modules/qt/qtsupport.py b/Mac/Modules/qt/qtsupport.py
new file mode 100644 (file)
index 0000000..e1b7374
--- /dev/null
@@ -0,0 +1,322 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+#error missing SetActionFilter
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Movies.h'             # The Apple header file
+MODNAME = 'Qt'                         # The name of the module
+OBJECTNAME = 'Movie'                   # The basic name of the objects used here
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = "Movie"           # The C type used to represent them
+OBJECTPREFIX = MODPREFIX + 'Obj'       # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Movies.h>
+#else
+/* #include <Carbon/Carbon.h> */
+#include <QuickTime/QuickTime.h>
+#endif
+
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_TrackObj_New(Track);
+extern int _TrackObj_Convert(PyObject *, Track *);
+extern PyObject *_MovieObj_New(Movie);
+extern int _MovieObj_Convert(PyObject *, Movie *);
+extern PyObject *_MovieCtlObj_New(MovieController);
+extern int _MovieCtlObj_Convert(PyObject *, MovieController *);
+extern PyObject *_TimeBaseObj_New(TimeBase);
+extern int _TimeBaseObj_Convert(PyObject *, TimeBase *);
+extern PyObject *_UserDataObj_New(UserData);
+extern int _UserDataObj_Convert(PyObject *, UserData *);
+extern PyObject *_MediaObj_New(Media);
+extern int _MediaObj_Convert(PyObject *, Media *);
+
+#define TrackObj_New _TrackObj_New
+#define TrackObj_Convert _TrackObj_Convert
+#define MovieObj_New _MovieObj_New
+#define MovieObj_Convert _MovieObj_Convert
+#define MovieCtlObj_New _MovieCtlObj_New
+#define MovieCtlObj_Convert _MovieCtlObj_Convert
+#define TimeBaseObj_New _TimeBaseObj_New
+#define TimeBaseObj_Convert _TimeBaseObj_Convert
+#define UserDataObj_New _UserDataObj_New
+#define UserDataObj_Convert _UserDataObj_Convert
+#define MediaObj_New _MediaObj_New
+#define MediaObj_Convert _MediaObj_Convert
+#endif
+
+/* Macro to allow us to GetNextInterestingTime without duration */
+#define GetMediaNextInterestingTimeOnly(media, flags, time, rate, rv) \
+                       GetMediaNextInterestingTime(media, flags, time, rate, rv, NULL)
+                       
+/*
+** Parse/generate time records
+*/
+static PyObject *
+QtTimeRecord_New(TimeRecord *itself)
+{
+       if (itself->base)
+               return Py_BuildValue("O&lO&", PyMac_Buildwide, &itself->value, itself->scale, 
+                       TimeBaseObj_New, itself->base);
+       else
+               return  Py_BuildValue("O&lO", PyMac_Buildwide, &itself->value, itself->scale, 
+                       Py_None);
+}
+
+static int
+QtTimeRecord_Convert(PyObject *v, TimeRecord *p_itself)
+{
+       PyObject *base = NULL;
+       if( !PyArg_ParseTuple(v, "O&l|O", PyMac_Getwide, &p_itself->value, &p_itself->scale,
+                       &base) )
+               return 0;
+       if ( base == NULL || base == Py_None )
+               p_itself->base = NULL;
+       else
+               if ( !TimeBaseObj_Convert(base, &p_itself->base) )
+                       return 0;
+       return 1;
+}
+
+
+
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(Track, TrackObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Track, TrackObj_Convert);
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(Movie, MovieObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Movie, MovieObj_Convert);
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(MovieController, MovieCtlObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MovieController, MovieCtlObj_Convert);
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(TimeBase, TimeBaseObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TimeBase, TimeBaseObj_Convert);
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(UserData, UserDataObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(UserData, UserDataObj_Convert);
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(Media, MediaObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Media, MediaObj_Convert);
+"""
+
+# Our (opaque) objects
+Movie = OpaqueByValueType('Movie', 'MovieObj')
+NullMovie = FakeType("(Movie)0")
+Track = OpaqueByValueType('Track', 'TrackObj')
+Media = OpaqueByValueType('Media', 'MediaObj')
+UserData = OpaqueByValueType('UserData', 'UserDataObj')
+TimeBase = OpaqueByValueType('TimeBase', 'TimeBaseObj')
+MovieController = OpaqueByValueType('MovieController', 'MovieCtlObj')
+
+# Other opaque objects
+Component = OpaqueByValueType('Component', 'CmpObj')
+MediaHandlerComponent = OpaqueByValueType('MediaHandlerComponent', 'CmpObj')
+DataHandlerComponent = OpaqueByValueType('DataHandlerComponent', 'CmpObj')
+
+ComponentInstance = OpaqueByValueType('ComponentInstance', 'CmpInstObj')
+MediaHandler = OpaqueByValueType('MediaHandler', 'CmpInstObj')
+DataHandler = OpaqueByValueType('DataHandler', 'CmpInstObj')
+
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+PicHandle = OpaqueByValueType("PicHandle", "ResObj")
+CTabHandle = OpaqueByValueType("CTabHandle", "ResObj")
+PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj")
+SampleDescriptionHandle = OpaqueByValueType("SampleDescriptionHandle", "ResObj")
+ImageDescriptionHandle = OpaqueByValueType("ImageDescriptionHandle", "ResObj")
+TextDescriptionHandle = OpaqueByValueType("TextDescriptionHandle", "ResObj")
+TEHandle = OpaqueByValueType("TEHandle", "ResObj")
+CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
+GDHandle = OpaqueByValueType("GDHandle", "OptResObj")
+AliasHandle = OpaqueByValueType("AliasHandle", "ResObj")
+SoundDescriptionHandle = OpaqueByValueType("SoundDescriptionHandle", "ResObj")
+# Silly Apple, passing an OStype by reference...
+OSType_ptr = OpaqueType("OSType", "PyMac_BuildOSType", "PyMac_GetOSType")
+# And even sillier: passing floats by address
+float_ptr = ByAddressType("float", "f")
+
+RGBColor = OpaqueType("RGBColor", "QdRGB")
+RGBColor_ptr = RGBColor
+TimeRecord = OpaqueType("TimeRecord", "QtTimeRecord")
+TimeRecord_ptr = TimeRecord
+
+# Non-opaque types, mostly integer-ish
+TimeValue = Type("TimeValue", "l")
+TimeScale = Type("TimeScale", "l")
+TimeBaseFlags = Type("TimeBaseFlags", "l")
+QTCallBackFlags = Type("QTCallBackFlags", "H")
+TimeBaseStatus = Type("TimeBaseStatus", "l")
+QTCallBackType = Type("QTCallBackType", "H")
+nextTimeFlagsEnum = Type("nextTimeFlagsEnum", "H")
+createMovieFileFlagsEnum = Type("createMovieFileFlagsEnum", "l")
+movieFlattenFlagsEnum = Type("movieFlattenFlagsEnum", "l")
+dataRefAttributesFlags = Type("dataRefAttributesFlags", "l")
+playHintsEnum = Type("playHintsEnum", "l")
+mediaHandlerFlagsEnum = Type("mediaHandlerFlagsEnum", "l")
+ComponentResult = Type("ComponentResult", "l")
+HandlerError = Type("HandlerError", "l")
+Ptr = InputOnlyType("Ptr", "s")
+StringPtr = Type("StringPtr", "s")
+mcactionparams = InputOnlyType("void *", "s")
+QTParameterDialog = Type("QTParameterDialog", "l")
+QTAtomID = Type("QTAtomID", "l")
+MCInterfaceElement = Type("MCInterfaceElement", "l")
+CodecType = OSTypeType("CodecType")
+GWorldPtr = OpaqueByValueType("GWorldPtr", "GWorldObj")
+QTFloatSingle = Type("QTFloatSingle", "f")
+
+# Could-not-be-bothered-types (NewMovieFromFile)
+dummyshortptr = FakeType('(short *)0')
+dummyStringPtr = FakeType('(StringPtr)0')
+
+class MovieObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(Qt_Error,"Cannot create null Movie");
+                                       return NULL;
+                               }""")
+       def outputFreeIt(self, itselfname):
+               Output("DisposeMovie(%s);", itselfname)
+
+class TrackObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(Qt_Error,"Cannot create null Track");
+                                       return NULL;
+                               }""")
+       def outputFreeIt(self, itselfname):
+               Output("DisposeMovieTrack(%s);", itselfname)
+
+class MediaObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(Qt_Error,"Cannot create null Media");
+                                       return NULL;
+                               }""")
+       def outputFreeIt(self, itselfname):
+               Output("DisposeTrackMedia(%s);", itselfname)
+
+class UserDataObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(Qt_Error,"Cannot create null UserData");
+                                       return NULL;
+                               }""")
+       def outputFreeIt(self, itselfname):
+               Output("DisposeUserData(%s);", itselfname)
+
+class TimeBaseObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(Qt_Error,"Cannot create null TimeBase");
+                                       return NULL;
+                               }""")
+##     def outputFreeIt(self, itselfname):
+##             Output("DisposeTimeBase(%s);", itselfname)
+
+class MovieCtlObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(Qt_Error,"Cannot create null MovieController");
+                                       return NULL;
+                               }""")
+       def outputFreeIt(self, itselfname):
+               Output("DisposeMovieController(%s);", itselfname)
+
+# From here on it's basically all boiler plate...
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+Movie_object = MovieObjectDefinition('Movie', 'MovieObj', 'Movie')
+Track_object = TrackObjectDefinition('Track', 'TrackObj', 'Track')
+Media_object = MediaObjectDefinition('Media', 'MediaObj', 'Media')
+UserData_object = UserDataObjectDefinition('UserData', 'UserDataObj', 'UserData')
+TimeBase_object = TimeBaseObjectDefinition('TimeBase', 'TimeBaseObj', 'TimeBase')
+MovieController_object = MovieCtlObjectDefinition('MovieController', 'MovieCtlObj', 'MovieController')
+
+module.addobject(MovieController_object)
+module.addobject(TimeBase_object)
+module.addobject(UserData_object)
+module.addobject(Media_object)
+module.addobject(Track_object)
+module.addobject(Movie_object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+Method = OSErrMethodGenerator
+
+# Create and populate the lists
+functions = []
+MovieController_methods = []
+TimeBase_methods = []
+UserData_methods = []
+Media_methods = []
+Track_methods = []
+Movie_methods = []
+execfile(INPUTFILE)
+
+#
+# Some functions from ImageCompression.h that we need:
+ICMAlignmentProcRecordPtr = FakeType('(ICMAlignmentProcRecordPtr)0')
+dummyRect = FakeType('(Rect *)0')
+
+f = Function(void, 'AlignWindow',
+       (WindowPtr, 'wp', InMode),
+       (Boolean, 'front', InMode),
+       (dummyRect, 'alignmentRect', InMode),
+       (ICMAlignmentProcRecordPtr, 'alignmentProc', InMode),
+)
+functions.append(f)
+
+f = Function(void, 'DragAlignedWindow',
+       (WindowPtr, 'wp', InMode),
+       (Point, 'startPt', InMode),
+       (Rect_ptr, 'boundsRect', InMode),
+       (dummyRect, 'alignmentRect', InMode),
+       (ICMAlignmentProcRecordPtr, 'alignmentProc', InMode),
+)
+functions.append(f)
+
+# And we want the version of MoviesTask without a movie argument
+f = Function(void, 'MoviesTask',
+    (NullMovie, 'theMovie', InMode),
+    (long, 'maxMilliSecToUse', InMode),
+)
+functions.append(f)
+
+# And we want a GetMediaNextInterestingTime without duration
+f = Method(void, 'GetMediaNextInterestingTimeOnly',
+    (Media, 'theMedia', InMode),
+    (short, 'interestingTimeFlags', InMode),
+    (TimeValue, 'time', InMode),
+    (Fixed, 'rate', InMode),
+    (TimeValue, 'interestingTime', OutMode),
+)
+Media_methods.append(f)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+for f in MovieController_methods: MovieController_object.add(f)
+for f in TimeBase_methods: TimeBase_object.add(f)
+for f in UserData_methods: UserData_object.add(f)
+for f in Media_methods: Media_object.add(f)
+for f in Track_methods: Track_object.add(f)
+for f in Movie_methods: Movie_object.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Modules/res/Resmodule.c b/Mac/Modules/res/Resmodule.c
new file mode 100644 (file)
index 0000000..8790080
--- /dev/null
@@ -0,0 +1,1579 @@
+
+/* =========================== Module Res =========================== */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Resources.h>
+#include <string.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_ResObj_New(Handle);
+extern int _ResObj_Convert(PyObject *, Handle *);
+extern PyObject *_OptResObj_New(Handle);
+extern int _OptResObj_Convert(PyObject *, Handle *);
+#define ResObj_New _ResObj_New
+#define ResObj_Convert _ResObj_Convert
+#define OptResObj_New _OptResObj_New
+#define OptResObj_Convert _OptResObj_Convert
+#endif
+
+/* Function to dispose a resource, with a "normal" calling sequence */
+static void
+PyMac_AutoDisposeHandle(Handle h)
+{
+       DisposeHandle(h);
+}
+
+static PyObject *Res_Error;
+
+/* ---------------------- Object type Resource ---------------------- */
+
+PyTypeObject Resource_Type;
+
+#define ResObj_Check(x) ((x)->ob_type == &Resource_Type)
+
+typedef struct ResourceObject {
+       PyObject_HEAD
+       Handle ob_itself;
+       void (*ob_freeit)(Handle ptr);
+} ResourceObject;
+
+PyObject *ResObj_New(Handle itself)
+{
+       ResourceObject *it;
+       if (itself == NULL) return PyMac_Error(resNotFound);
+       it = PyObject_NEW(ResourceObject, &Resource_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       it->ob_freeit = NULL;
+       return (PyObject *)it;
+}
+ResObj_Convert(PyObject *v, Handle *p_itself)
+{
+       if (!ResObj_Check(v))
+       {
+               PyObject *tmp;
+               if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) )
+               {
+                       *p_itself = ((ResourceObject *)tmp)->ob_itself;
+                       Py_DECREF(tmp);
+                       return 1;
+               }
+               PyErr_Clear();
+       }
+       if (!ResObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "Resource required");
+               return 0;
+       }
+       *p_itself = ((ResourceObject *)v)->ob_itself;
+       return 1;
+}
+
+static void ResObj_dealloc(ResourceObject *self)
+{
+       if (self->ob_freeit && self->ob_itself)
+       {
+               self->ob_freeit(self->ob_itself);
+       }
+       self->ob_itself = NULL;
+       PyMem_DEL(self);
+}
+
+static PyObject *ResObj_HomeResFile(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = HomeResFile(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *ResObj_MacLoadResource(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       MacLoadResource(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_ReleaseResource(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ReleaseResource(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_DetachResource(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       DetachResource(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_GetResAttrs(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetResAttrs(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *ResObj_GetResInfo(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short theID;
+       ResType theType;
+       Str255 name;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       GetResInfo(_self->ob_itself,
+                  &theID,
+                  &theType,
+                  name);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("hO&O&",
+                            theID,
+                            PyMac_BuildOSType, theType,
+                            PyMac_BuildStr255, name);
+       return _res;
+}
+
+static PyObject *ResObj_SetResInfo(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short theID;
+       Str255 name;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &theID,
+                             PyMac_GetStr255, name))
+               return NULL;
+       SetResInfo(_self->ob_itself,
+                  theID,
+                  name);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_AddResource(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ResType theType;
+       short theID;
+       Str255 name;
+       if (!PyArg_ParseTuple(_args, "O&hO&",
+                             PyMac_GetOSType, &theType,
+                             &theID,
+                             PyMac_GetStr255, name))
+               return NULL;
+       AddResource(_self->ob_itself,
+                   theType,
+                   theID,
+                   name);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_GetResourceSizeOnDisk(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetResourceSizeOnDisk(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *ResObj_GetMaxResourceSize(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetMaxResourceSize(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+#if TARGET_API_MAC_OS8
+
+static PyObject *ResObj_RsrcMapEntry(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = RsrcMapEntry(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+#endif
+
+static PyObject *ResObj_SetResAttrs(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short attrs;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &attrs))
+               return NULL;
+       SetResAttrs(_self->ob_itself,
+                   attrs);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_ChangedResource(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       ChangedResource(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_RemoveResource(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       RemoveResource(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_WriteResource(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       WriteResource(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_SetResourceSize(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long newSize;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &newSize))
+               return NULL;
+       SetResourceSize(_self->ob_itself,
+                       newSize);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_GetNextFOND(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetNextFOND(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *ResObj_as_Control(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       return CtlObj_New((ControlHandle)_self->ob_itself);
+
+}
+
+static PyObject *ResObj_as_Menu(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       return MenuObj_New((MenuHandle)_self->ob_itself);
+
+}
+
+static PyObject *ResObj_LoadResource(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       LoadResource(_self->ob_itself);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *ResObj_AutoDispose(ResourceObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       int onoff, old = 0;
+       if (!PyArg_ParseTuple(_args, "i", &onoff))
+               return NULL;
+       if ( _self->ob_freeit )
+               old = 1;
+       if ( onoff )
+               _self->ob_freeit = PyMac_AutoDisposeHandle;
+       else
+               _self->ob_freeit = NULL;
+       return Py_BuildValue("i", old);
+
+}
+
+static PyMethodDef ResObj_methods[] = {
+       {"HomeResFile", (PyCFunction)ResObj_HomeResFile, 1,
+        "() -> (short _rv)"},
+       {"MacLoadResource", (PyCFunction)ResObj_MacLoadResource, 1,
+        "() -> None"},
+       {"ReleaseResource", (PyCFunction)ResObj_ReleaseResource, 1,
+        "() -> None"},
+       {"DetachResource", (PyCFunction)ResObj_DetachResource, 1,
+        "() -> None"},
+       {"GetResAttrs", (PyCFunction)ResObj_GetResAttrs, 1,
+        "() -> (short _rv)"},
+       {"GetResInfo", (PyCFunction)ResObj_GetResInfo, 1,
+        "() -> (short theID, ResType theType, Str255 name)"},
+       {"SetResInfo", (PyCFunction)ResObj_SetResInfo, 1,
+        "(short theID, Str255 name) -> None"},
+       {"AddResource", (PyCFunction)ResObj_AddResource, 1,
+        "(ResType theType, short theID, Str255 name) -> None"},
+       {"GetResourceSizeOnDisk", (PyCFunction)ResObj_GetResourceSizeOnDisk, 1,
+        "() -> (long _rv)"},
+       {"GetMaxResourceSize", (PyCFunction)ResObj_GetMaxResourceSize, 1,
+        "() -> (long _rv)"},
+
+#if TARGET_API_MAC_OS8
+       {"RsrcMapEntry", (PyCFunction)ResObj_RsrcMapEntry, 1,
+        "() -> (long _rv)"},
+#endif
+       {"SetResAttrs", (PyCFunction)ResObj_SetResAttrs, 1,
+        "(short attrs) -> None"},
+       {"ChangedResource", (PyCFunction)ResObj_ChangedResource, 1,
+        "() -> None"},
+       {"RemoveResource", (PyCFunction)ResObj_RemoveResource, 1,
+        "() -> None"},
+       {"WriteResource", (PyCFunction)ResObj_WriteResource, 1,
+        "() -> None"},
+       {"SetResourceSize", (PyCFunction)ResObj_SetResourceSize, 1,
+        "(long newSize) -> None"},
+       {"GetNextFOND", (PyCFunction)ResObj_GetNextFOND, 1,
+        "() -> (Handle _rv)"},
+       {"as_Control", (PyCFunction)ResObj_as_Control, 1,
+        "Return this resource/handle as a Control"},
+       {"as_Menu", (PyCFunction)ResObj_as_Menu, 1,
+        "Return this resource/handle as a Menu"},
+       {"LoadResource", (PyCFunction)ResObj_LoadResource, 1,
+        "() -> None"},
+       {"AutoDispose", (PyCFunction)ResObj_AutoDispose, 1,
+        "(int)->int. Automatically DisposeHandle the object on Python object cleanup"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain ResObj_chain = { ResObj_methods, NULL };
+
+static PyObject *ResObj_getattr(ResourceObject *self, char *name)
+{
+
+       if (strcmp(name, "size") == 0)
+               return PyInt_FromLong(GetHandleSize(self->ob_itself));
+       if (strcmp(name, "data") == 0) {
+               PyObject *res;
+               char state;
+               state = HGetState(self->ob_itself);
+               HLock(self->ob_itself);
+               res = PyString_FromStringAndSize(
+                       *self->ob_itself,
+                       GetHandleSize(self->ob_itself));
+               HUnlock(self->ob_itself);
+               HSetState(self->ob_itself, state);
+               return res;
+       }
+       if (strcmp(name, "__members__") == 0)
+               return Py_BuildValue("[ss]", "data", "size");
+
+       return Py_FindMethodInChain(&ResObj_chain, (PyObject *)self, name);
+}
+
+static int
+ResObj_setattr(ResourceObject *self, char *name, PyObject *value)
+{
+       char *data;
+       long size;
+       
+       if (strcmp(name, "data") != 0 || value == NULL )
+               return -1;
+       if ( !PyString_Check(value) )
+               return -1;
+       size = PyString_Size(value);
+       data = PyString_AsString(value);
+       /* XXXX Do I need the GetState/SetState calls? */
+       SetHandleSize(self->ob_itself, size);
+       if ( MemError())
+               return -1;
+       HLock(self->ob_itself);
+       memcpy((char *)*self->ob_itself, data, size);
+       HUnlock(self->ob_itself);
+       /* XXXX Should I do the Changed call immedeately? */
+       return 0;
+}
+
+
+#define ResObj_compare NULL
+
+#define ResObj_repr NULL
+
+#define ResObj_hash NULL
+
+PyTypeObject Resource_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "Resource", /*tp_name*/
+       sizeof(ResourceObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) ResObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) ResObj_getattr, /*tp_getattr*/
+       (setattrfunc) ResObj_setattr, /*tp_setattr*/
+       (cmpfunc) ResObj_compare, /*tp_compare*/
+       (reprfunc) ResObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) ResObj_hash, /*tp_hash*/
+};
+
+/* -------------------- End object type Resource -------------------- */
+
+
+#if TARGET_API_MAC_OS8
+
+static PyObject *Res_InitResources(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = InitResources();
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_OS8
+
+static PyObject *Res_RsrcZoneInit(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       RsrcZoneInit();
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *Res_CloseResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short refNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &refNum))
+               return NULL;
+       CloseResFile(refNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Res_ResError(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = ResError();
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_CurResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CurResFile();
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+#if TARGET_API_MAC_OS8
+
+static PyObject *Res_CreateResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Str255 fileName;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetStr255, fileName))
+               return NULL;
+       CreateResFile(fileName);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_OS8
+
+static PyObject *Res_OpenResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       Str255 fileName;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetStr255, fileName))
+               return NULL;
+       _rv = OpenResFile(fileName);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+#endif
+
+static PyObject *Res_UseResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short refNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &refNum))
+               return NULL;
+       UseResFile(refNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Res_CountTypes(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = CountTypes();
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_Count1Types(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = Count1Types();
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_GetIndType(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ResType theType;
+       short index;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &index))
+               return NULL;
+       GetIndType(&theType,
+                  index);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildOSType, theType);
+       return _res;
+}
+
+static PyObject *Res_Get1IndType(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       ResType theType;
+       short index;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &index))
+               return NULL;
+       Get1IndType(&theType,
+                   index);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildOSType, theType);
+       return _res;
+}
+
+static PyObject *Res_SetResLoad(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean load;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &load))
+               return NULL;
+       SetResLoad(load);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Res_CountResources(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       ResType theType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       _rv = CountResources(theType);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_Count1Resources(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       ResType theType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       _rv = Count1Resources(theType);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_GetIndResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ResType theType;
+       short index;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetOSType, &theType,
+                             &index))
+               return NULL;
+       _rv = GetIndResource(theType,
+                            index);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Res_Get1IndResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ResType theType;
+       short index;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetOSType, &theType,
+                             &index))
+               return NULL;
+       _rv = Get1IndResource(theType,
+                             index);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Res_GetResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ResType theType;
+       short theID;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetOSType, &theType,
+                             &theID))
+               return NULL;
+       _rv = GetResource(theType,
+                         theID);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Res_Get1Resource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ResType theType;
+       short theID;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetOSType, &theType,
+                             &theID))
+               return NULL;
+       _rv = Get1Resource(theType,
+                          theID);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Res_GetNamedResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ResType theType;
+       Str255 name;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetOSType, &theType,
+                             PyMac_GetStr255, name))
+               return NULL;
+       _rv = GetNamedResource(theType,
+                              name);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Res_Get1NamedResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ResType theType;
+       Str255 name;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetOSType, &theType,
+                             PyMac_GetStr255, name))
+               return NULL;
+       _rv = Get1NamedResource(theType,
+                               name);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *Res_UniqueID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       ResType theType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       _rv = UniqueID(theType);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_Unique1ID(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       ResType theType;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetOSType, &theType))
+               return NULL;
+       _rv = Unique1ID(theType);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_UpdateResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short refNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &refNum))
+               return NULL;
+       UpdateResFile(refNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Res_SetResPurge(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean install;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &install))
+               return NULL;
+       SetResPurge(install);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Res_GetResFileAttrs(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       short refNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &refNum))
+               return NULL;
+       _rv = GetResFileAttrs(refNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_SetResFileAttrs(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short refNum;
+       short attrs;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &refNum,
+                             &attrs))
+               return NULL;
+       SetResFileAttrs(refNum,
+                       attrs);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Res_OpenRFPerm(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       Str255 fileName;
+       short vRefNum;
+       SignedByte permission;
+       if (!PyArg_ParseTuple(_args, "O&hb",
+                             PyMac_GetStr255, fileName,
+                             &vRefNum,
+                             &permission))
+               return NULL;
+       _rv = OpenRFPerm(fileName,
+                        vRefNum,
+                        permission);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+#if TARGET_API_MAC_OS8
+
+static PyObject *Res_RGetResource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       ResType theType;
+       short theID;
+       if (!PyArg_ParseTuple(_args, "O&h",
+                             PyMac_GetOSType, &theType,
+                             &theID))
+               return NULL;
+       _rv = RGetResource(theType,
+                          theID);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+#endif
+
+static PyObject *Res_HOpenResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       short vRefNum;
+       long dirID;
+       Str255 fileName;
+       SignedByte permission;
+       if (!PyArg_ParseTuple(_args, "hlO&b",
+                             &vRefNum,
+                             &dirID,
+                             PyMac_GetStr255, fileName,
+                             &permission))
+               return NULL;
+       _rv = HOpenResFile(vRefNum,
+                          dirID,
+                          fileName,
+                          permission);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_HCreateResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short vRefNum;
+       long dirID;
+       Str255 fileName;
+       if (!PyArg_ParseTuple(_args, "hlO&",
+                             &vRefNum,
+                             &dirID,
+                             PyMac_GetStr255, fileName))
+               return NULL;
+       HCreateResFile(vRefNum,
+                      dirID,
+                      fileName);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *Res_FSpOpenResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       FSSpec spec;
+       SignedByte permission;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             PyMac_GetFSSpec, &spec,
+                             &permission))
+               return NULL;
+       _rv = FSpOpenResFile(&spec,
+                            permission);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *Res_FSpCreateResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       FSSpec spec;
+       OSType creator;
+       OSType fileType;
+       ScriptCode scriptTag;
+       if (!PyArg_ParseTuple(_args, "O&O&O&h",
+                             PyMac_GetFSSpec, &spec,
+                             PyMac_GetOSType, &creator,
+                             PyMac_GetOSType, &fileType,
+                             &scriptTag))
+               return NULL;
+       FSpCreateResFile(&spec,
+                        creator,
+                        fileType,
+                        scriptTag);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Res_InsertResourceFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _rv;
+       SInt16 refNum;
+       RsrcChainLocation where;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &refNum,
+                             &where))
+               return NULL;
+       _rv = InsertResourceFile(refNum,
+                                where);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Res_DetachResourceFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _rv;
+       SInt16 refNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &refNum))
+               return NULL;
+       _rv = DetachResourceFile(refNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Res_FSpResourceFileAlreadyOpen(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       FSSpec resourceFile;
+       Boolean inChain;
+       SInt16 refNum;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetFSSpec, &resourceFile))
+               return NULL;
+       _rv = FSpResourceFileAlreadyOpen(&resourceFile,
+                                        &inChain,
+                                        &refNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("bbh",
+                            _rv,
+                            inChain,
+                            refNum);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Res_FSpOpenOrphanResFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _rv;
+       FSSpec spec;
+       SignedByte permission;
+       SInt16 refNum;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             PyMac_GetFSSpec, &spec,
+                             &permission))
+               return NULL;
+       _rv = FSpOpenOrphanResFile(&spec,
+                                  permission,
+                                  &refNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("hh",
+                            _rv,
+                            refNum);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Res_GetTopResourceFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _rv;
+       SInt16 refNum;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = GetTopResourceFile(&refNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("hh",
+                            _rv,
+                            refNum);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *Res_GetNextResourceFile(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _rv;
+       SInt16 curRefNum;
+       SInt16 nextRefNum;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &curRefNum))
+               return NULL;
+       _rv = GetNextResourceFile(curRefNum,
+                                 &nextRefNum);
+       {
+               OSErr _err = ResError();
+               if (_err != noErr) return PyMac_Error(_err);
+       }
+       _res = Py_BuildValue("hh",
+                            _rv,
+                            nextRefNum);
+       return _res;
+}
+#endif
+
+static PyObject *Res_Resource(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       char *buf;
+       int len;
+       Handle h;
+
+       if (!PyArg_ParseTuple(_args, "s#", &buf, &len))
+               return NULL;
+       h = NewHandle(len);
+       if ( h == NULL ) {
+               PyErr_NoMemory();
+               return NULL;
+       }
+       HLock(h);
+       memcpy(*h, buf, len);
+       HUnlock(h);
+       return ResObj_New(h);
+
+}
+
+static PyObject *Res_Handle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+
+       char *buf;
+       int len;
+       Handle h;
+       ResourceObject *rv;
+
+       if (!PyArg_ParseTuple(_args, "s#", &buf, &len))
+               return NULL;
+       h = NewHandle(len);
+       if ( h == NULL ) {
+               PyErr_NoMemory();
+               return NULL;
+       }
+       HLock(h);
+       memcpy(*h, buf, len);
+       HUnlock(h);
+       rv = (ResourceObject *)ResObj_New(h);
+       rv->ob_freeit = PyMac_AutoDisposeHandle;
+       return (PyObject *)rv;
+
+}
+
+static PyMethodDef Res_methods[] = {
+
+#if TARGET_API_MAC_OS8
+       {"InitResources", (PyCFunction)Res_InitResources, 1,
+        "() -> (short _rv)"},
+#endif
+
+#if TARGET_API_MAC_OS8
+       {"RsrcZoneInit", (PyCFunction)Res_RsrcZoneInit, 1,
+        "() -> None"},
+#endif
+       {"CloseResFile", (PyCFunction)Res_CloseResFile, 1,
+        "(short refNum) -> None"},
+       {"ResError", (PyCFunction)Res_ResError, 1,
+        "() -> (OSErr _rv)"},
+       {"CurResFile", (PyCFunction)Res_CurResFile, 1,
+        "() -> (short _rv)"},
+
+#if TARGET_API_MAC_OS8
+       {"CreateResFile", (PyCFunction)Res_CreateResFile, 1,
+        "(Str255 fileName) -> None"},
+#endif
+
+#if TARGET_API_MAC_OS8
+       {"OpenResFile", (PyCFunction)Res_OpenResFile, 1,
+        "(Str255 fileName) -> (short _rv)"},
+#endif
+       {"UseResFile", (PyCFunction)Res_UseResFile, 1,
+        "(short refNum) -> None"},
+       {"CountTypes", (PyCFunction)Res_CountTypes, 1,
+        "() -> (short _rv)"},
+       {"Count1Types", (PyCFunction)Res_Count1Types, 1,
+        "() -> (short _rv)"},
+       {"GetIndType", (PyCFunction)Res_GetIndType, 1,
+        "(short index) -> (ResType theType)"},
+       {"Get1IndType", (PyCFunction)Res_Get1IndType, 1,
+        "(short index) -> (ResType theType)"},
+       {"SetResLoad", (PyCFunction)Res_SetResLoad, 1,
+        "(Boolean load) -> None"},
+       {"CountResources", (PyCFunction)Res_CountResources, 1,
+        "(ResType theType) -> (short _rv)"},
+       {"Count1Resources", (PyCFunction)Res_Count1Resources, 1,
+        "(ResType theType) -> (short _rv)"},
+       {"GetIndResource", (PyCFunction)Res_GetIndResource, 1,
+        "(ResType theType, short index) -> (Handle _rv)"},
+       {"Get1IndResource", (PyCFunction)Res_Get1IndResource, 1,
+        "(ResType theType, short index) -> (Handle _rv)"},
+       {"GetResource", (PyCFunction)Res_GetResource, 1,
+        "(ResType theType, short theID) -> (Handle _rv)"},
+       {"Get1Resource", (PyCFunction)Res_Get1Resource, 1,
+        "(ResType theType, short theID) -> (Handle _rv)"},
+       {"GetNamedResource", (PyCFunction)Res_GetNamedResource, 1,
+        "(ResType theType, Str255 name) -> (Handle _rv)"},
+       {"Get1NamedResource", (PyCFunction)Res_Get1NamedResource, 1,
+        "(ResType theType, Str255 name) -> (Handle _rv)"},
+       {"UniqueID", (PyCFunction)Res_UniqueID, 1,
+        "(ResType theType) -> (short _rv)"},
+       {"Unique1ID", (PyCFunction)Res_Unique1ID, 1,
+        "(ResType theType) -> (short _rv)"},
+       {"UpdateResFile", (PyCFunction)Res_UpdateResFile, 1,
+        "(short refNum) -> None"},
+       {"SetResPurge", (PyCFunction)Res_SetResPurge, 1,
+        "(Boolean install) -> None"},
+       {"GetResFileAttrs", (PyCFunction)Res_GetResFileAttrs, 1,
+        "(short refNum) -> (short _rv)"},
+       {"SetResFileAttrs", (PyCFunction)Res_SetResFileAttrs, 1,
+        "(short refNum, short attrs) -> None"},
+       {"OpenRFPerm", (PyCFunction)Res_OpenRFPerm, 1,
+        "(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)"},
+
+#if TARGET_API_MAC_OS8
+       {"RGetResource", (PyCFunction)Res_RGetResource, 1,
+        "(ResType theType, short theID) -> (Handle _rv)"},
+#endif
+       {"HOpenResFile", (PyCFunction)Res_HOpenResFile, 1,
+        "(short vRefNum, long dirID, Str255 fileName, SignedByte permission) -> (short _rv)"},
+       {"HCreateResFile", (PyCFunction)Res_HCreateResFile, 1,
+        "(short vRefNum, long dirID, Str255 fileName) -> None"},
+       {"FSpOpenResFile", (PyCFunction)Res_FSpOpenResFile, 1,
+        "(FSSpec spec, SignedByte permission) -> (short _rv)"},
+       {"FSpCreateResFile", (PyCFunction)Res_FSpCreateResFile, 1,
+        "(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None"},
+
+#if TARGET_API_MAC_CARBON
+       {"InsertResourceFile", (PyCFunction)Res_InsertResourceFile, 1,
+        "(SInt16 refNum, RsrcChainLocation where) -> (OSErr _rv)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"DetachResourceFile", (PyCFunction)Res_DetachResourceFile, 1,
+        "(SInt16 refNum) -> (OSErr _rv)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"FSpResourceFileAlreadyOpen", (PyCFunction)Res_FSpResourceFileAlreadyOpen, 1,
+        "(FSSpec resourceFile) -> (Boolean _rv, Boolean inChain, SInt16 refNum)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"FSpOpenOrphanResFile", (PyCFunction)Res_FSpOpenOrphanResFile, 1,
+        "(FSSpec spec, SignedByte permission) -> (OSErr _rv, SInt16 refNum)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetTopResourceFile", (PyCFunction)Res_GetTopResourceFile, 1,
+        "() -> (OSErr _rv, SInt16 refNum)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"GetNextResourceFile", (PyCFunction)Res_GetNextResourceFile, 1,
+        "(SInt16 curRefNum) -> (OSErr _rv, SInt16 nextRefNum)"},
+#endif
+       {"Resource", (PyCFunction)Res_Resource, 1,
+        "Convert a string to a resource object.\n\nThe created resource object is actually just a handle,\napply AddResource() to write it to a resource file.\nSee also the Handle() docstring.\n"},
+       {"Handle", (PyCFunction)Res_Handle, 1,
+        "Convert a string to a Handle object.\n\nResource() and Handle() are very similar, but objects created with Handle() are\nby default automatically DisposeHandle()d upon object cleanup. Use AutoDispose()\nto change this.\n"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+/* Alternative version of ResObj_New, which returns None for null argument */
+PyObject *OptResObj_New(Handle itself)
+{
+       if (itself == NULL) {
+               Py_INCREF(Py_None);
+               return Py_None;
+       }
+       return ResObj_New(itself);
+}
+
+OptResObj_Convert(PyObject *v, Handle *p_itself)
+{
+       PyObject *tmp;
+       
+       if ( v == Py_None ) {
+               *p_itself = NULL;
+               return 1;
+       }
+       if (ResObj_Check(v))
+       {
+               *p_itself = ((ResourceObject *)v)->ob_itself;
+               return 1;
+       }
+       /* If it isn't a resource yet see whether it is convertible */
+       if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) ) {
+               *p_itself = ((ResourceObject *)tmp)->ob_itself;
+               Py_DECREF(tmp);
+               return 1;
+       }
+       PyErr_Clear();
+       PyErr_SetString(PyExc_TypeError, "Resource required");
+       return 0;
+}
+
+
+void initRes(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, ResObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, ResObj_Convert);
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, OptResObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, OptResObj_Convert);
+
+
+       m = Py_InitModule("Res", Res_methods);
+       d = PyModule_GetDict(m);
+       Res_Error = PyMac_GetOSErrException();
+       if (Res_Error == NULL ||
+           PyDict_SetItemString(d, "Error", Res_Error) != 0)
+               return;
+       Resource_Type.ob_type = &PyType_Type;
+       Py_INCREF(&Resource_Type);
+       if (PyDict_SetItemString(d, "ResourceType", (PyObject *)&Resource_Type) != 0)
+               Py_FatalError("can't initialize ResourceType");
+}
+
+/* ========================= End module Res ========================= */
+
diff --git a/Mac/Modules/res/resscan.py b/Mac/Modules/res/resscan.py
new file mode 100644 (file)
index 0000000..5b68623
--- /dev/null
@@ -0,0 +1,89 @@
+# Scan Resources.h header file, generate resgen.py and Resources.py files.
+# Then run ressupport to generate Resmodule.c.
+# (Should learn how to tell the compiler to compile it as well.)
+
+import sys
+import os
+import string
+import regsub
+import MacOS
+
+BGENDIR=os.path.join(sys.prefix, ':Tools:bgen:bgen')
+sys.path.append(BGENDIR)
+from bgenlocations import TOOLBOXDIR
+
+from scantools import Scanner
+
+def main():
+       input = "Resources.h"
+       output = "resgen.py"
+       defsoutput = TOOLBOXDIR + "Resources.py"
+       scanner = ResourcesScanner(input, output, defsoutput)
+       scanner.scan()
+       scanner.close()
+       print "=== Done scanning and generating, now doing 'import ressupport' ==="
+       import ressupport
+       print "=== Done 'import ressupport'.  It's up to you to compile Resmodule.c ==="
+
+class ResourcesScanner(Scanner):
+
+       def destination(self, type, name, arglist):
+               classname = "ResFunction"
+               listname = "functions"
+               if arglist:
+                       t, n, m = arglist[0]
+                       if t == "Handle" and m == "InMode":
+                               classname = "ResMethod"
+                               listname = "resmethods"
+               return classname, listname
+
+       def makeblacklistnames(self):
+               return [
+                       "ReadPartialResource",
+                       "WritePartialResource",
+                       "TempInsertROMMap",
+##                     "RmveResource",         # RemoveResource
+##                     "SizeResource",         # GetResourceSizeOnDisk
+##                     "MaxSizeRsrc",          # GetMaxResourceSize
+                       ]
+                       
+       def makegreylist(self):
+               return [
+                       ('#if TARGET_API_MAC_OS8', [
+                               'RGetResource',
+                               'OpenResFile',
+                               'CreateResFile',
+                               'RsrcZoneInit',
+                               'InitResources',
+                               'RsrcMapEntry',
+                       ]),
+                       ('#if TARGET_API_MAC_CARBON', [
+                               'GetNextResourceFile',
+                               'GetTopResourceFile',
+                               'FSpOpenOrphanResFile',
+                               'DetachResourceFile',
+                               'InsertResourceFile',
+                               'FSpResourceFileAlreadyOpen',
+                       ])]
+
+       def makerepairinstructions(self):
+               return [
+                       ([("Str255", "*", "InMode")],
+                        [("*", "*", "OutMode")]),
+                       
+                       ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
+                        [("InBuffer", "*", "*")]),
+                       
+                       ([("void", "*", "OutMode"), ("long", "*", "InMode")],
+                        [("InOutBuffer", "*", "*")]),
+                       
+                       ([("void", "*", "OutMode"), ("long", "*", "InMode"),
+                                                   ("long", "*", "OutMode")],
+                        [("OutBuffer", "*", "InOutMode")]),
+                        
+                       ([("SInt8", "*", "*")],
+                        [("SignedByte", "*", "*")])
+                       ]
+
+if __name__ == "__main__":
+       main()
diff --git a/Mac/Modules/res/ressupport.py b/Mac/Modules/res/ressupport.py
new file mode 100644 (file)
index 0000000..8be1b94
--- /dev/null
@@ -0,0 +1,196 @@
+# This script will generate the Resources interface for Python.
+# It uses the "bgen" package to generate C code.
+# It execs the file resgen.py which contain the function definitions
+# (resgen.py was generated by resscan.py, scanning the <Resources.h> header file).
+
+from macsupport import *
+
+
+class ResMixIn:
+
+       def checkit(self):
+               OutLbrace()
+               Output("OSErr _err = ResError();")
+               Output("if (_err != noErr) return PyMac_Error(_err);")
+               OutRbrace()
+               FunctionGenerator.checkit(self) # XXX
+
+class ResFunction(ResMixIn, FunctionGenerator): pass
+class ResMethod(ResMixIn, MethodGenerator): pass
+
+RsrcChainLocation = Type("RsrcChainLocation", "h")
+
+# includestuff etc. are imported from macsupport
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Resources.h>
+#include <string.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_ResObj_New(Handle);
+extern int _ResObj_Convert(PyObject *, Handle *);
+extern PyObject *_OptResObj_New(Handle);
+extern int _OptResObj_Convert(PyObject *, Handle *);
+#define ResObj_New _ResObj_New
+#define ResObj_Convert _ResObj_Convert
+#define OptResObj_New _OptResObj_New
+#define OptResObj_Convert _OptResObj_Convert
+#endif
+
+/* Function to dispose a resource, with a "normal" calling sequence */
+static void
+PyMac_AutoDisposeHandle(Handle h)
+{
+       DisposeHandle(h);
+}
+"""
+
+finalstuff = finalstuff + """
+
+/* Alternative version of ResObj_New, which returns None for null argument */
+PyObject *OptResObj_New(Handle itself)
+{
+       if (itself == NULL) {
+               Py_INCREF(Py_None);
+               return Py_None;
+       }
+       return ResObj_New(itself);
+}
+
+OptResObj_Convert(PyObject *v, Handle *p_itself)
+{
+       PyObject *tmp;
+       
+       if ( v == Py_None ) {
+               *p_itself = NULL;
+               return 1;
+       }
+       if (ResObj_Check(v))
+       {
+               *p_itself = ((ResourceObject *)v)->ob_itself;
+               return 1;
+       }
+       /* If it isn't a resource yet see whether it is convertible */
+       if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) ) {
+               *p_itself = ((ResourceObject *)tmp)->ob_itself;
+               Py_DECREF(tmp);
+               return 1;
+       }
+       PyErr_Clear();
+       PyErr_SetString(PyExc_TypeError, "Resource required");
+       return 0;
+}
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, ResObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, ResObj_Convert);
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, OptResObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, OptResObj_Convert);
+"""
+
+module = MacModule('Res', 'Res', includestuff, finalstuff, initstuff)
+
+getattrHookCode = """
+if (strcmp(name, "size") == 0)
+       return PyInt_FromLong(GetHandleSize(self->ob_itself));
+if (strcmp(name, "data") == 0) {
+       PyObject *res;
+       char state;
+       state = HGetState(self->ob_itself);
+       HLock(self->ob_itself);
+       res = PyString_FromStringAndSize(
+               *self->ob_itself,
+               GetHandleSize(self->ob_itself));
+       HUnlock(self->ob_itself);
+       HSetState(self->ob_itself, state);
+       return res;
+}
+if (strcmp(name, "__members__") == 0)
+       return Py_BuildValue("[ss]", "data", "size");
+"""
+
+setattrCode = """
+static int
+ResObj_setattr(ResourceObject *self, char *name, PyObject *value)
+{
+       char *data;
+       long size;
+       
+       if (strcmp(name, "data") != 0 || value == NULL )
+               return -1;
+       if ( !PyString_Check(value) )
+               return -1;
+       size = PyString_Size(value);
+       data = PyString_AsString(value);
+       /* XXXX Do I need the GetState/SetState calls? */
+       SetHandleSize(self->ob_itself, size);
+       if ( MemError())
+               return -1;
+       HLock(self->ob_itself);
+       memcpy((char *)*self->ob_itself, data, size);
+       HUnlock(self->ob_itself);
+       /* XXXX Should I do the Changed call immedeately? */
+       return 0;
+}
+"""
+
+class ResDefinition(GlobalObjectDefinition):
+
+       def outputCheckNewArg(self):
+               Output("if (itself == NULL) return PyMac_Error(resNotFound);")
+               
+       def outputCheckConvertArg(self):
+               # if it isn't a resource we may be able to coerce it
+               Output("if (!%s_Check(v))", self.prefix)
+               OutLbrace()
+               Output("PyObject *tmp;")
+               Output('if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) )')
+               OutLbrace()
+               Output("*p_itself = ((ResourceObject *)tmp)->ob_itself;")
+               Output("Py_DECREF(tmp);")
+               Output("return 1;")
+               OutRbrace()
+               Output("PyErr_Clear();")
+               OutRbrace()
+
+       def outputGetattrHook(self):
+               Output(getattrHookCode)
+               
+       def outputSetattr(self):
+               Output(setattrCode)
+
+       def outputStructMembers(self):
+               GlobalObjectDefinition.outputStructMembers(self)
+               Output("void (*ob_freeit)(%s ptr);", self.itselftype)
+               
+       def outputInitStructMembers(self):
+               GlobalObjectDefinition.outputInitStructMembers(self)
+               Output("it->ob_freeit = NULL;")
+               
+       def outputCleanupStructMembers(self):
+               Output("if (self->ob_freeit && self->ob_itself)")
+               OutLbrace()
+               Output("self->ob_freeit(self->ob_itself);")
+               OutRbrace()
+               Output("self->ob_itself = NULL;")
+
+
+resobject = ResDefinition('Resource', 'ResObj', 'Handle')
+module.addobject(resobject)
+
+functions = []
+resmethods = []
+
+execfile('resgen.py')
+execfile('resedit.py')
+
+for f in functions: module.add(f)
+for f in resmethods: resobject.add(f)
+
+SetOutputFileName('Resmodule.c')
+module.generate()
diff --git a/Mac/Modules/scrap/scrapsupport.py b/Mac/Modules/scrap/scrapsupport.py
new file mode 100644 (file)
index 0000000..44dee33
--- /dev/null
@@ -0,0 +1,66 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+# NOTE: the scrap include file is so bad that the bgen output has to be
+# massaged by hand.
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'Scrap.h'              # The Apple header file
+MODNAME = 'Scrap'                              # The name of the module
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = '@' + MODNAME + "module.c"        # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <Scrap.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+/*
+** Generate ScrapInfo records
+*/
+static PyObject *
+SCRRec_New(itself)
+       ScrapStuff *itself;
+{
+
+       return Py_BuildValue("lO&hhO&", itself->scrapSize,
+               ResObj_New, itself->scrapHandle, itself->scrapCount, itself->scrapState,
+               PyMac_BuildStr255, itself->scrapName);
+}
+"""
+
+ScrapStuffPtr = OpaqueByValueType('ScrapStuffPtr', 'SCRRec')
+ScrapFlavorType = OSTypeType('ScrapFlavorType')
+putscrapbuffer = FixedInputBufferType('void *')
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+
+# Create and populate the lists
+functions = []
+execfile(INPUTFILE)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Modules/te/TEmodule.c b/Mac/Modules/te/TEmodule.c
new file mode 100644 (file)
index 0000000..d37908b
--- /dev/null
@@ -0,0 +1,1032 @@
+
+/* =========================== Module TE ============================ */
+
+#include "Python.h"
+
+
+
+#include "macglue.h"
+#include "pymactoolbox.h"
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <TextEdit.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_TEObj_New(TEHandle);
+extern int _TEObj_Convert(PyObject *, TEHandle *);
+
+#define TEObj_New _TEObj_New
+#define TEObj_Convert _TEObj_Convert
+#endif
+
+#define as_TE(h) ((TEHandle)h)
+#define as_Resource(teh) ((Handle)teh)
+
+/*
+** Parse/generate TextStyle records
+*/
+static PyObject *
+TextStyle_New(TextStylePtr itself)
+{
+
+       return Py_BuildValue("lllO&", (long)itself->tsFont, (long)itself->tsFace, (long)itself->tsSize, QdRGB_New,
+                               &itself->tsColor);
+}
+
+static int
+TextStyle_Convert(PyObject *v, TextStylePtr p_itself)
+{
+       long font, face, size;
+       
+       if( !PyArg_ParseTuple(v, "lllO&", &font, &face, &size, QdRGB_Convert, &p_itself->tsColor) )
+               return 0;
+       p_itself->tsFont = (short)font;
+       p_itself->tsFace = (Style)face;
+       p_itself->tsSize = (short)size;
+       return 1;
+}
+
+static PyObject *TE_Error;
+
+/* ------------------------- Object type TE ------------------------- */
+
+PyTypeObject TE_Type;
+
+#define TEObj_Check(x) ((x)->ob_type == &TE_Type)
+
+typedef struct TEObject {
+       PyObject_HEAD
+       TEHandle ob_itself;
+} TEObject;
+
+PyObject *TEObj_New(TEHandle itself)
+{
+       TEObject *it;
+       if (itself == NULL) {
+                                               PyErr_SetString(TE_Error,"Cannot create null TE");
+                                               return NULL;
+                                       }
+       it = PyObject_NEW(TEObject, &TE_Type);
+       if (it == NULL) return NULL;
+       it->ob_itself = itself;
+       return (PyObject *)it;
+}
+TEObj_Convert(PyObject *v, TEHandle *p_itself)
+{
+       if (!TEObj_Check(v))
+       {
+               PyErr_SetString(PyExc_TypeError, "TE required");
+               return 0;
+       }
+       *p_itself = ((TEObject *)v)->ob_itself;
+       return 1;
+}
+
+static void TEObj_dealloc(TEObject *self)
+{
+       TEDispose(self->ob_itself);
+       PyMem_DEL(self);
+}
+
+static PyObject *TEObj_TESetText(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       char *text__in__;
+       long text__len__;
+       int text__in_len__;
+       if (!PyArg_ParseTuple(_args, "s#",
+                             &text__in__, &text__in_len__))
+               return NULL;
+       text__len__ = text__in_len__;
+       TESetText(text__in__, text__len__,
+                 _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+ text__error__: ;
+       return _res;
+}
+
+static PyObject *TEObj_TEGetText(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CharsHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = TEGetText(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TEObj_TEIdle(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TEIdle(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TESetSelect(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long selStart;
+       long selEnd;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &selStart,
+                             &selEnd))
+               return NULL;
+       TESetSelect(selStart,
+                   selEnd,
+                   _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEActivate(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TEActivate(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEDeactivate(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TEDeactivate(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEKey(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       CharParameter key;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &key))
+               return NULL;
+       TEKey(key,
+             _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TECut(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TECut(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TECopy(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TECopy(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEPaste(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TEPaste(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEDelete(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TEDelete(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEInsert(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       char *text__in__;
+       long text__len__;
+       int text__in_len__;
+       if (!PyArg_ParseTuple(_args, "s#",
+                             &text__in__, &text__in_len__))
+               return NULL;
+       text__len__ = text__in_len__;
+       TEInsert(text__in__, text__len__,
+                _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+ text__error__: ;
+       return _res;
+}
+
+static PyObject *TEObj_TESetAlignment(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short just;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &just))
+               return NULL;
+       TESetAlignment(just,
+                      _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEUpdate(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Rect rUpdate;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetRect, &rUpdate))
+               return NULL;
+       TEUpdate(&rUpdate,
+                _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEScroll(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short dh;
+       short dv;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &dh,
+                             &dv))
+               return NULL;
+       TEScroll(dh,
+                dv,
+                _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TESelView(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TESelView(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEPinScroll(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short dh;
+       short dv;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &dh,
+                             &dv))
+               return NULL;
+       TEPinScroll(dh,
+                   dv,
+                   _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEAutoView(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean fAuto;
+       if (!PyArg_ParseTuple(_args, "b",
+                             &fAuto))
+               return NULL;
+       TEAutoView(fAuto,
+                  _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TECalText(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TECalText(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEGetOffset(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       Point pt;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             PyMac_GetPoint, &pt))
+               return NULL;
+       _rv = TEGetOffset(pt,
+                         _self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TEObj_TEGetPoint(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Point _rv;
+       short offset;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &offset))
+               return NULL;
+       _rv = TEGetPoint(offset,
+                        _self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            PyMac_BuildPoint, _rv);
+       return _res;
+}
+
+static PyObject *TEObj_TEClick(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Point pt;
+       Boolean fExtend;
+       if (!PyArg_ParseTuple(_args, "O&b",
+                             PyMac_GetPoint, &pt,
+                             &fExtend))
+               return NULL;
+       TEClick(pt,
+               fExtend,
+               _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TESetStyleHandle(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TEStyleHandle theHandle;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &theHandle))
+               return NULL;
+       TESetStyleHandle(theHandle,
+                        _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEGetStyleHandle(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TEStyleHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = TEGetStyleHandle(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TEObj_TEGetStyle(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short offset;
+       TextStyle theStyle;
+       short lineHeight;
+       short fontAscent;
+       if (!PyArg_ParseTuple(_args, "h",
+                             &offset))
+               return NULL;
+       TEGetStyle(offset,
+                  &theStyle,
+                  &lineHeight,
+                  &fontAscent,
+                  _self->ob_itself);
+       _res = Py_BuildValue("O&hh",
+                            TextStyle_New, &theStyle,
+                            lineHeight,
+                            fontAscent);
+       return _res;
+}
+
+static PyObject *TEObj_TEStylePaste(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       TEStylePaste(_self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TESetStyle(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short mode;
+       TextStyle newStyle;
+       Boolean fRedraw;
+       if (!PyArg_ParseTuple(_args, "hO&b",
+                             &mode,
+                             TextStyle_Convert, &newStyle,
+                             &fRedraw))
+               return NULL;
+       TESetStyle(mode,
+                  &newStyle,
+                  fRedraw,
+                  _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEReplaceStyle(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short mode;
+       TextStyle oldStyle;
+       TextStyle newStyle;
+       Boolean fRedraw;
+       if (!PyArg_ParseTuple(_args, "hO&O&b",
+                             &mode,
+                             TextStyle_Convert, &oldStyle,
+                             TextStyle_Convert, &newStyle,
+                             &fRedraw))
+               return NULL;
+       TEReplaceStyle(mode,
+                      &oldStyle,
+                      &newStyle,
+                      fRedraw,
+                      _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TEGetStyleScrapHandle(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       StScrpHandle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = TEGetStyleScrapHandle(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TEObj_TEStyleInsert(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       char *text__in__;
+       long text__len__;
+       int text__in_len__;
+       StScrpHandle hST;
+       if (!PyArg_ParseTuple(_args, "s#O&",
+                             &text__in__, &text__in_len__,
+                             ResObj_Convert, &hST))
+               return NULL;
+       text__len__ = text__in_len__;
+       TEStyleInsert(text__in__, text__len__,
+                     hST,
+                     _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+ text__error__: ;
+       return _res;
+}
+
+static PyObject *TEObj_TEGetHeight(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       long endLine;
+       long startLine;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &endLine,
+                             &startLine))
+               return NULL;
+       _rv = TEGetHeight(endLine,
+                         startLine,
+                         _self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TEObj_TEContinuousStyle(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Boolean _rv;
+       short mode;
+       TextStyle aStyle;
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &mode,
+                             TextStyle_Convert, &aStyle))
+               return NULL;
+       _rv = TEContinuousStyle(&mode,
+                               &aStyle,
+                               _self->ob_itself);
+       _res = Py_BuildValue("bhO&",
+                            _rv,
+                            mode,
+                            TextStyle_New, &aStyle);
+       return _res;
+}
+
+static PyObject *TEObj_TEUseStyleScrap(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long rangeStart;
+       long rangeEnd;
+       StScrpHandle newStyles;
+       Boolean fRedraw;
+       if (!PyArg_ParseTuple(_args, "llO&b",
+                             &rangeStart,
+                             &rangeEnd,
+                             ResObj_Convert, &newStyles,
+                             &fRedraw))
+               return NULL;
+       TEUseStyleScrap(rangeStart,
+                       rangeEnd,
+                       newStyles,
+                       fRedraw,
+                       _self->ob_itself);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_TENumStyles(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       long rangeStart;
+       long rangeEnd;
+       if (!PyArg_ParseTuple(_args, "ll",
+                             &rangeStart,
+                             &rangeEnd))
+               return NULL;
+       _rv = TENumStyles(rangeStart,
+                         rangeEnd,
+                         _self->ob_itself);
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TEObj_TEFeatureFlag(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       short _rv;
+       short feature;
+       short action;
+       if (!PyArg_ParseTuple(_args, "hh",
+                             &feature,
+                             &action))
+               return NULL;
+       _rv = TEFeatureFlag(feature,
+                           action,
+                           _self->ob_itself);
+       _res = Py_BuildValue("h",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TEObj_TEGetHiliteRgn(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       RgnHandle region;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &region))
+               return NULL;
+       _err = TEGetHiliteRgn(region,
+                             _self->ob_itself);
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TEObj_as_Resource(TEObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = as_Resource(_self->ob_itself);
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyMethodDef TEObj_methods[] = {
+       {"TESetText", (PyCFunction)TEObj_TESetText, 1,
+        "(Buffer text) -> None"},
+       {"TEGetText", (PyCFunction)TEObj_TEGetText, 1,
+        "() -> (CharsHandle _rv)"},
+       {"TEIdle", (PyCFunction)TEObj_TEIdle, 1,
+        "() -> None"},
+       {"TESetSelect", (PyCFunction)TEObj_TESetSelect, 1,
+        "(long selStart, long selEnd) -> None"},
+       {"TEActivate", (PyCFunction)TEObj_TEActivate, 1,
+        "() -> None"},
+       {"TEDeactivate", (PyCFunction)TEObj_TEDeactivate, 1,
+        "() -> None"},
+       {"TEKey", (PyCFunction)TEObj_TEKey, 1,
+        "(CharParameter key) -> None"},
+       {"TECut", (PyCFunction)TEObj_TECut, 1,
+        "() -> None"},
+       {"TECopy", (PyCFunction)TEObj_TECopy, 1,
+        "() -> None"},
+       {"TEPaste", (PyCFunction)TEObj_TEPaste, 1,
+        "() -> None"},
+       {"TEDelete", (PyCFunction)TEObj_TEDelete, 1,
+        "() -> None"},
+       {"TEInsert", (PyCFunction)TEObj_TEInsert, 1,
+        "(Buffer text) -> None"},
+       {"TESetAlignment", (PyCFunction)TEObj_TESetAlignment, 1,
+        "(short just) -> None"},
+       {"TEUpdate", (PyCFunction)TEObj_TEUpdate, 1,
+        "(Rect rUpdate) -> None"},
+       {"TEScroll", (PyCFunction)TEObj_TEScroll, 1,
+        "(short dh, short dv) -> None"},
+       {"TESelView", (PyCFunction)TEObj_TESelView, 1,
+        "() -> None"},
+       {"TEPinScroll", (PyCFunction)TEObj_TEPinScroll, 1,
+        "(short dh, short dv) -> None"},
+       {"TEAutoView", (PyCFunction)TEObj_TEAutoView, 1,
+        "(Boolean fAuto) -> None"},
+       {"TECalText", (PyCFunction)TEObj_TECalText, 1,
+        "() -> None"},
+       {"TEGetOffset", (PyCFunction)TEObj_TEGetOffset, 1,
+        "(Point pt) -> (short _rv)"},
+       {"TEGetPoint", (PyCFunction)TEObj_TEGetPoint, 1,
+        "(short offset) -> (Point _rv)"},
+       {"TEClick", (PyCFunction)TEObj_TEClick, 1,
+        "(Point pt, Boolean fExtend) -> None"},
+       {"TESetStyleHandle", (PyCFunction)TEObj_TESetStyleHandle, 1,
+        "(TEStyleHandle theHandle) -> None"},
+       {"TEGetStyleHandle", (PyCFunction)TEObj_TEGetStyleHandle, 1,
+        "() -> (TEStyleHandle _rv)"},
+       {"TEGetStyle", (PyCFunction)TEObj_TEGetStyle, 1,
+        "(short offset) -> (TextStyle theStyle, short lineHeight, short fontAscent)"},
+       {"TEStylePaste", (PyCFunction)TEObj_TEStylePaste, 1,
+        "() -> None"},
+       {"TESetStyle", (PyCFunction)TEObj_TESetStyle, 1,
+        "(short mode, TextStyle newStyle, Boolean fRedraw) -> None"},
+       {"TEReplaceStyle", (PyCFunction)TEObj_TEReplaceStyle, 1,
+        "(short mode, TextStyle oldStyle, TextStyle newStyle, Boolean fRedraw) -> None"},
+       {"TEGetStyleScrapHandle", (PyCFunction)TEObj_TEGetStyleScrapHandle, 1,
+        "() -> (StScrpHandle _rv)"},
+       {"TEStyleInsert", (PyCFunction)TEObj_TEStyleInsert, 1,
+        "(Buffer text, StScrpHandle hST) -> None"},
+       {"TEGetHeight", (PyCFunction)TEObj_TEGetHeight, 1,
+        "(long endLine, long startLine) -> (long _rv)"},
+       {"TEContinuousStyle", (PyCFunction)TEObj_TEContinuousStyle, 1,
+        "(short mode, TextStyle aStyle) -> (Boolean _rv, short mode, TextStyle aStyle)"},
+       {"TEUseStyleScrap", (PyCFunction)TEObj_TEUseStyleScrap, 1,
+        "(long rangeStart, long rangeEnd, StScrpHandle newStyles, Boolean fRedraw) -> None"},
+       {"TENumStyles", (PyCFunction)TEObj_TENumStyles, 1,
+        "(long rangeStart, long rangeEnd) -> (long _rv)"},
+       {"TEFeatureFlag", (PyCFunction)TEObj_TEFeatureFlag, 1,
+        "(short feature, short action) -> (short _rv)"},
+       {"TEGetHiliteRgn", (PyCFunction)TEObj_TEGetHiliteRgn, 1,
+        "(RgnHandle region) -> None"},
+       {"as_Resource", (PyCFunction)TEObj_as_Resource, 1,
+        "() -> (Handle _rv)"},
+       {NULL, NULL, 0}
+};
+
+PyMethodChain TEObj_chain = { TEObj_methods, NULL };
+
+static PyObject *TEObj_getattr(TEObject *self, char *name)
+{
+
+                               if( strcmp(name, "destRect") == 0 )
+                                       return Py_BuildValue("O&", PyMac_BuildRect,
+                                                       &(*self->ob_itself)->destRect);
+                               if( strcmp(name, "viewRect") == 0 )
+                                       return Py_BuildValue("O&", PyMac_BuildRect,
+                                                       &(*self->ob_itself)->viewRect);
+                               if( strcmp(name, "selRect") == 0 )
+                                       return Py_BuildValue("O&", PyMac_BuildRect,
+                                                       &(*self->ob_itself)->selRect);
+                               if( strcmp(name, "lineHeight") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->lineHeight);
+                               if( strcmp(name, "fontAscent") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->fontAscent);
+                               if( strcmp(name, "selPoint") == 0 )
+                                       return Py_BuildValue("O&", PyMac_BuildPoint,
+                                                       (*self->ob_itself)->selPoint);
+                               if( strcmp(name, "selStart") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->selStart);
+                               if( strcmp(name, "selEnd") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->selEnd);
+                               if( strcmp(name, "active") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->active);
+                               if( strcmp(name, "just") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->just);
+                               if( strcmp(name, "teLength") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->teLength);
+                               if( strcmp(name, "txFont") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->txFont);
+                               if( strcmp(name, "txFace") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->txFace);
+                               if( strcmp(name, "txMode") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->txMode);
+                               if( strcmp(name, "txSize") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->txSize);
+                               if( strcmp(name, "nLines") == 0 )
+                                       return Py_BuildValue("h", (*self->ob_itself)->nLines);
+                       
+       return Py_FindMethodInChain(&TEObj_chain, (PyObject *)self, name);
+}
+
+#define TEObj_setattr NULL
+
+#define TEObj_compare NULL
+
+#define TEObj_repr NULL
+
+#define TEObj_hash NULL
+
+PyTypeObject TE_Type = {
+       PyObject_HEAD_INIT(&PyType_Type)
+       0, /*ob_size*/
+       "TE", /*tp_name*/
+       sizeof(TEObject), /*tp_basicsize*/
+       0, /*tp_itemsize*/
+       /* methods */
+       (destructor) TEObj_dealloc, /*tp_dealloc*/
+       0, /*tp_print*/
+       (getattrfunc) TEObj_getattr, /*tp_getattr*/
+       (setattrfunc) TEObj_setattr, /*tp_setattr*/
+       (cmpfunc) TEObj_compare, /*tp_compare*/
+       (reprfunc) TEObj_repr, /*tp_repr*/
+       (PyNumberMethods *)0, /* tp_as_number */
+       (PySequenceMethods *)0, /* tp_as_sequence */
+       (PyMappingMethods *)0, /* tp_as_mapping */
+       (hashfunc) TEObj_hash, /*tp_hash*/
+};
+
+/* ----------------------- End object type TE ----------------------- */
+
+
+static PyObject *TE_TEScrapHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = TEScrapHandle();
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TE_TEGetScrapLength(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = TEGetScrapLength();
+       _res = Py_BuildValue("l",
+                            _rv);
+       return _res;
+}
+
+static PyObject *TE_TENew(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TEHandle _rv;
+       Rect destRect;
+       Rect viewRect;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetRect, &destRect,
+                             PyMac_GetRect, &viewRect))
+               return NULL;
+       _rv = TENew(&destRect,
+                   &viewRect);
+       _res = Py_BuildValue("O&",
+                            TEObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TE_TETextBox(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       char *text__in__;
+       long text__len__;
+       int text__in_len__;
+       Rect box;
+       short just;
+       if (!PyArg_ParseTuple(_args, "s#O&h",
+                             &text__in__, &text__in_len__,
+                             PyMac_GetRect, &box,
+                             &just))
+               return NULL;
+       text__len__ = text__in_len__;
+       TETextBox(text__in__, text__len__,
+                 &box,
+                 just);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+ text__error__: ;
+       return _res;
+}
+
+static PyObject *TE_TEStyleNew(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TEHandle _rv;
+       Rect destRect;
+       Rect viewRect;
+       if (!PyArg_ParseTuple(_args, "O&O&",
+                             PyMac_GetRect, &destRect,
+                             PyMac_GetRect, &viewRect))
+               return NULL;
+       _rv = TEStyleNew(&destRect,
+                        &viewRect);
+       _res = Py_BuildValue("O&",
+                            TEObj_New, _rv);
+       return _res;
+}
+
+static PyObject *TE_TESetScrapLength(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       long length;
+       if (!PyArg_ParseTuple(_args, "l",
+                             &length))
+               return NULL;
+       TESetScrapLength(length);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TE_TEFromScrap(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = TEFromScrap();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+static PyObject *TE_TEToScrap(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       OSErr _err;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _err = TEToScrap();
+       if (_err != noErr) return PyMac_Error(_err);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *TE_TEGetScrapHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle _rv;
+       if (!PyArg_ParseTuple(_args, ""))
+               return NULL;
+       _rv = TEGetScrapHandle();
+       _res = Py_BuildValue("O&",
+                            ResObj_New, _rv);
+       return _res;
+}
+#endif
+
+#if TARGET_API_MAC_CARBON
+
+static PyObject *TE_TESetScrapHandle(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       Handle value;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &value))
+               return NULL;
+       TESetScrapHandle(value);
+       Py_INCREF(Py_None);
+       _res = Py_None;
+       return _res;
+}
+#endif
+
+static PyObject *TE_as_TE(PyObject *_self, PyObject *_args)
+{
+       PyObject *_res = NULL;
+       TEHandle _rv;
+       Handle h;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             ResObj_Convert, &h))
+               return NULL;
+       _rv = as_TE(h);
+       _res = Py_BuildValue("O&",
+                            TEObj_New, _rv);
+       return _res;
+}
+
+static PyMethodDef TE_methods[] = {
+       {"TEScrapHandle", (PyCFunction)TE_TEScrapHandle, 1,
+        "() -> (Handle _rv)"},
+       {"TEGetScrapLength", (PyCFunction)TE_TEGetScrapLength, 1,
+        "() -> (long _rv)"},
+       {"TENew", (PyCFunction)TE_TENew, 1,
+        "(Rect destRect, Rect viewRect) -> (TEHandle _rv)"},
+       {"TETextBox", (PyCFunction)TE_TETextBox, 1,
+        "(Buffer text, Rect box, short just) -> None"},
+       {"TEStyleNew", (PyCFunction)TE_TEStyleNew, 1,
+        "(Rect destRect, Rect viewRect) -> (TEHandle _rv)"},
+       {"TESetScrapLength", (PyCFunction)TE_TESetScrapLength, 1,
+        "(long length) -> None"},
+       {"TEFromScrap", (PyCFunction)TE_TEFromScrap, 1,
+        "() -> None"},
+       {"TEToScrap", (PyCFunction)TE_TEToScrap, 1,
+        "() -> None"},
+
+#if TARGET_API_MAC_CARBON
+       {"TEGetScrapHandle", (PyCFunction)TE_TEGetScrapHandle, 1,
+        "() -> (Handle _rv)"},
+#endif
+
+#if TARGET_API_MAC_CARBON
+       {"TESetScrapHandle", (PyCFunction)TE_TESetScrapHandle, 1,
+        "(Handle value) -> None"},
+#endif
+       {"as_TE", (PyCFunction)TE_as_TE, 1,
+        "(Handle h) -> (TEHandle _rv)"},
+       {NULL, NULL, 0}
+};
+
+
+
+
+void initTE(void)
+{
+       PyObject *m;
+       PyObject *d;
+
+
+
+               PyMac_INIT_TOOLBOX_OBJECT_NEW(TEHandle, TEObj_New);
+               PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEHandle, TEObj_Convert);
+
+
+       m = Py_InitModule("TE", TE_methods);
+       d = PyModule_GetDict(m);
+       TE_Error = PyMac_GetOSErrException();
+       if (TE_Error == NULL ||
+           PyDict_SetItemString(d, "Error", TE_Error) != 0)
+               return;
+       TE_Type.ob_type = &PyType_Type;
+       Py_INCREF(&TE_Type);
+       if (PyDict_SetItemString(d, "TEType", (PyObject *)&TE_Type) != 0)
+               Py_FatalError("can't initialize TEType");
+}
+
+/* ========================= End module TE ========================== */
+
diff --git a/Mac/Modules/te/tesupport.py b/Mac/Modules/te/tesupport.py
new file mode 100644 (file)
index 0000000..6cb96e2
--- /dev/null
@@ -0,0 +1,175 @@
+# This script generates a Python interface for an Apple Macintosh Manager.
+# It uses the "bgen" package to generate C code.
+# The function specifications are generated by scanning the mamager's header file,
+# using the "scantools" package (customized for this particular manager).
+
+import string
+
+# Declarations that change for each manager
+MACHEADERFILE = 'TextEdit.h'           # The Apple header file
+MODNAME = 'TE'                         # The name of the module
+OBJECTNAME = 'TE'                      # The basic name of the objects used here
+KIND = 'Handle'                                # Usually 'Ptr' or 'Handle'
+
+# The following is *usually* unchanged but may still require tuning
+MODPREFIX = MODNAME                    # The prefix for module-wide routines
+OBJECTTYPE = "TEHandle"                # The C type used to represent them
+OBJECTPREFIX = MODPREFIX + 'Obj'       # The prefix for object methods
+INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
+OUTPUTFILE = MODNAME + "module.c"      # The file generated by this program
+
+from macsupport import *
+
+# Create the type objects
+TEHandle = OpaqueByValueType("TEHandle", "TEObj")
+CharsHandle = OpaqueByValueType("CharsHandle", "ResObj")
+Handle = OpaqueByValueType("Handle", "ResObj")
+StScrpHandle = OpaqueByValueType("StScrpHandle", "ResObj")
+TEStyleHandle = OpaqueByValueType("TEStyleHandle", "ResObj")
+RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
+
+TextStyle = OpaqueType("TextStyle", "TextStyle")
+TextStyle_ptr = TextStyle
+
+includestuff = includestuff + """
+#ifdef WITHOUT_FRAMEWORKS
+#include <TextEdit.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+
+#ifdef USE_TOOLBOX_OBJECT_GLUE
+extern PyObject *_TEObj_New(TEHandle);
+extern int _TEObj_Convert(PyObject *, TEHandle *);
+
+#define TEObj_New _TEObj_New
+#define TEObj_Convert _TEObj_Convert
+#endif
+
+#define as_TE(h) ((TEHandle)h)
+#define as_Resource(teh) ((Handle)teh)
+
+/*
+** Parse/generate TextStyle records
+*/
+static PyObject *
+TextStyle_New(TextStylePtr itself)
+{
+
+       return Py_BuildValue("lllO&", (long)itself->tsFont, (long)itself->tsFace, (long)itself->tsSize, QdRGB_New,
+                               &itself->tsColor);
+}
+
+static int
+TextStyle_Convert(PyObject *v, TextStylePtr p_itself)
+{
+       long font, face, size;
+       
+       if( !PyArg_ParseTuple(v, "lllO&", &font, &face, &size, QdRGB_Convert, &p_itself->tsColor) )
+               return 0;
+       p_itself->tsFont = (short)font;
+       p_itself->tsFace = (Style)face;
+       p_itself->tsSize = (short)size;
+       return 1;
+}
+"""
+
+initstuff = initstuff + """
+       PyMac_INIT_TOOLBOX_OBJECT_NEW(TEHandle, TEObj_New);
+       PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEHandle, TEObj_Convert);
+"""
+
+class TEMethodGenerator(OSErrMethodGenerator):
+       """Similar to MethodGenerator, but has self as last argument"""
+
+       def parseArgumentList(self, args):
+               args, a0 = args[:-1], args[-1]
+               t0, n0, m0 = a0
+               if m0 != InMode:
+                       raise ValueError, "method's 'self' must be 'InMode'"
+               self.itself = Variable(t0, "_self->ob_itself", SelfMode)
+               FunctionGenerator.parseArgumentList(self, args)
+               self.argumentList.append(self.itself)
+
+
+
+class MyObjectDefinition(GlobalObjectDefinition):
+       def outputCheckNewArg(self):
+               Output("""if (itself == NULL) {
+                                       PyErr_SetString(TE_Error,"Cannot create null TE");
+                                       return NULL;
+                               }""")
+       def outputFreeIt(self, itselfname):
+               Output("TEDispose(%s);", itselfname)
+               
+       def outputGetattrHook(self):
+               Output("""
+                       if( strcmp(name, "destRect") == 0 )
+                               return Py_BuildValue("O&", PyMac_BuildRect,
+                                               &(*self->ob_itself)->destRect);
+                       if( strcmp(name, "viewRect") == 0 )
+                               return Py_BuildValue("O&", PyMac_BuildRect,
+                                               &(*self->ob_itself)->viewRect);
+                       if( strcmp(name, "selRect") == 0 )
+                               return Py_BuildValue("O&", PyMac_BuildRect,
+                                               &(*self->ob_itself)->selRect);
+                       if( strcmp(name, "lineHeight") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->lineHeight);
+                       if( strcmp(name, "fontAscent") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->fontAscent);
+                       if( strcmp(name, "selPoint") == 0 )
+                               return Py_BuildValue("O&", PyMac_BuildPoint,
+                                               (*self->ob_itself)->selPoint);
+                       if( strcmp(name, "selStart") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->selStart);
+                       if( strcmp(name, "selEnd") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->selEnd);
+                       if( strcmp(name, "active") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->active);
+                       if( strcmp(name, "just") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->just);
+                       if( strcmp(name, "teLength") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->teLength);
+                       if( strcmp(name, "txFont") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->txFont);
+                       if( strcmp(name, "txFace") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->txFace);
+                       if( strcmp(name, "txMode") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->txMode);
+                       if( strcmp(name, "txSize") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->txSize);
+                       if( strcmp(name, "nLines") == 0 )
+                               return Py_BuildValue("h", (*self->ob_itself)->nLines);
+               """)
+
+# From here on it's basically all boiler plate...
+
+# Create the generator groups and link them
+module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
+object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)
+module.addobject(object)
+
+# Create the generator classes used to populate the lists
+Function = OSErrFunctionGenerator
+Method = TEMethodGenerator
+
+# Create and populate the lists
+functions = []
+methods = []
+execfile(INPUTFILE)
+
+# Converter from/to handle
+f = Function(TEHandle, 'as_TE', (Handle, 'h', InMode))
+functions.append(f)
+f = Method(Handle, 'as_Resource', (TEHandle, 'teh', InMode))
+methods.append(f)
+
+# add the populated lists to the generator groups
+# (in a different wordl the scan program would generate this)
+for f in functions: module.add(f)
+for f in methods: object.add(f)
+
+# generate output (open the output file as late as possible)
+SetOutputFileName(OUTPUTFILE)
+module.generate()
+
diff --git a/Mac/Python/getapplbycreator.c b/Mac/Python/getapplbycreator.c
new file mode 100644 (file)
index 0000000..8c0b00f
--- /dev/null
@@ -0,0 +1,163 @@
+/***********************************************************
+Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI or Corporation for National Research Initiatives or
+CNRI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+While CWI is the initial source for this software, a modified version
+is made available by the Corporation for National Research Initiatives
+(CNRI) at the Internet address ftp://ftp.python.org.
+
+STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
+CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/*
+** FindApplicationFromCreator uses the Desktop Database to
+** locate the creator application for the given document
+**
+** this routine will check the desktop database of all local
+** disks, then the desktop databases of all server volumes
+** (so up to two passes will be made)
+**
+** This code was created from FindApplicationFromDocument
+** routine, origin unknown.
+*/
+
+#ifdef WITHOUT_FRAMEWORKS
+#include <Types.h>
+#include <Files.h>
+#include <Errors.h>
+#else
+#include <Carbon/Carbon.h>
+#endif
+#include "getapplbycreator.h"
+
+
+OSErr FindApplicationFromCreator(OSType creator,
+        FSSpecPtr applicationFSSpecPtr)
+{
+        enum { localPass, remotePass, donePass } volumePass;
+        DTPBRec desktopParams;
+        HParamBlockRec hfsParams;
+        short volumeIndex;
+        Boolean foundFlag;
+        GetVolParmsInfoBuffer volumeInfoBuffer;
+        OSErr retCode;
+
+/* dkj 12/94 initialize flag to false (thanks to Peter Baral for pointing out this bug) */
+        foundFlag = false;
+
+        volumePass = localPass;
+        volumeIndex = 0;
+
+        do {
+                               /*
+                ** first, find the vRefNum of the volume whose Desktop Database
+                ** we're checking this time
+                               */
+
+                               volumeIndex++;
+
+                               /*      convert the volumeIndex into a vRefNum */
+
+                               hfsParams.volumeParam.ioNamePtr = nil;
+                               hfsParams.volumeParam.ioVRefNum = 0;
+                               hfsParams.volumeParam.ioVolIndex = volumeIndex;
+                               retCode = PBHGetVInfoSync(&hfsParams);
+
+                               /* a nsvErr indicates that the current pass is over */
+                               if (retCode == nsvErr) goto SkipThisVolume;
+                               if (retCode != noErr) goto Bail;
+
+                               /*
+                               ** call GetVolParms to determine if this volume is a server
+                               ** (a remote volume)
+                               */
+                               
+                               hfsParams.ioParam.ioBuffer = (Ptr) &volumeInfoBuffer;
+                               hfsParams.ioParam.ioReqCount = sizeof(GetVolParmsInfoBuffer);
+                               retCode = PBHGetVolParmsSync(&hfsParams);
+                               if (retCode != noErr) goto Bail;
+                               
+                               /*
+                               ** if the vMServerAdr field of the volume information buffer
+                               ** is zero, this is a local volume; skip this volume
+                               ** if it's local on a remote pass or remote on a local pass
+                               */
+                               
+                               if ((volumeInfoBuffer.vMServerAdr != 0) !=
+                                               (volumePass == remotePass)) goto SkipThisVolume;
+
+                               /* okay, now we've found the vRefNum for our desktop database call */
+
+                               desktopParams.ioVRefNum = hfsParams.volumeParam.ioVRefNum;
+
+                               /*
+                ** find the path refNum for the desktop database for
+                ** the volume we're interested in
+                */
+
+                desktopParams.ioNamePtr = nil;
+
+                retCode = PBDTGetPath(&desktopParams);
+                if (retCode == noErr && desktopParams.ioDTRefNum != 0) {
+
+                                               /*
+                        ** use the GetAPPL call to find the preferred application
+                        ** for opening any document with this one's creator
+                        */
+
+                        desktopParams.ioIndex = 0;
+                        desktopParams.ioFileCreator = creator;
+                        desktopParams.ioNamePtr = applicationFSSpecPtr->name;
+                        retCode = PBDTGetAPPLSync(&desktopParams);
+
+                        if (retCode == noErr) {
+                                                               /*
+                                ** okay, found it; fill in the application file spec
+                                ** and set the flag indicating we're done
+                                */
+
+                                applicationFSSpecPtr->parID = desktopParams.ioAPPLParID;
+                                applicationFSSpecPtr->vRefNum = desktopParams.ioVRefNum;
+                                foundFlag = true;
+
+                        }
+                }
+
+        SkipThisVolume:
+                               /*
+                ** if retCode indicates a no such volume error or if this
+                ** was the first pass, it's time to move on to the next pass
+                */
+
+                if (retCode == nsvErr) {
+                        volumePass++;
+                        volumeIndex = 0;
+                }
+
+        } while (foundFlag == false && volumePass != donePass);
+
+Bail:
+               if (retCode == nsvErr)
+                       return fnfErr;          /* More logical than "No such volume" */
+        return retCode;
+}
diff --git a/Mac/Python/pyGUSISIOUX.cp b/Mac/Python/pyGUSISIOUX.cp
new file mode 100644 (file)
index 0000000..f26216b
--- /dev/null
@@ -0,0 +1,211 @@
+/*
+** Modified version of GUSISIOUX.cp especially for Python.
+** Changes (by Jack):
+** - Optionally delay the console window until something is written to it.
+** - Tell the upper layers whether the last command was a read or a write.
+** - Tell SIOUX not to use WaitNextEvent (both Python and SIOUX trying to be
+**   nice to background apps means we're yielding almost 100% of the time).
+** - Make sure signals are processed when returning from read/write.
+*/
+#define GUSI_SOURCE
+#include "GUSIInternal.h"
+#include "GUSISIOUX.h"
+#include "GUSIDevice.h"
+#include "GUSIDescriptor.h"
+#include "GUSIBasics.h"
+#include "GUSIDiag.h"
+//#ifndef WITHOUT_JACK_MODS
+//#include "GUSIConfig.h"
+//#endif
+
+#include <LowMem.h>
+
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <console.h>
+
+#include "Python.h"
+#include "macglue.h"
+extern Boolean SIOUXUseWaitNextEvent;
+
+class GUSISIOUXSocket : public GUSISocket {
+public:
+       ~GUSISIOUXSocket();
+       
+       
+ssize_t        read(const GUSIScatterer & buffer);
+ssize_t write(const GUSIGatherer & buffer);
+virtual int    ioctl(unsigned int request, va_list arg);
+virtual int    fstat(struct stat * buf);
+virtual int    isatty();
+bool select(bool * canRead, bool * canWrite, bool *);
+
+       static GUSISIOUXSocket *        Instance();
+private:
+       static GUSISIOUXSocket *        sInstance;
+       
+       GUSISIOUXSocket();
+       bool initialized;
+       void Initialize();
+       bool fDelayConsole;
+};
+class GUSISIOUXDevice : public GUSIDevice {
+public:
+       static GUSISIOUXDevice *        Instance();
+
+       
+virtual bool Want(GUSIFileToken & file);
+virtual GUSISocket * open(GUSIFileToken &, int flags);
+private:
+       GUSISIOUXDevice()                                                               {}
+       
+       static GUSISIOUXDevice *        sInstance;
+};
+GUSISIOUXSocket * GUSISIOUXSocket::sInstance;
+
+GUSISIOUXSocket * GUSISIOUXSocket::Instance()
+{
+       if (!sInstance)
+               if (sInstance = new GUSISIOUXSocket)
+                       sInstance->AddReference();
+
+       return sInstance;
+}
+// This declaration lies about the return type
+extern "C" void SIOUXHandleOneEvent(EventRecord *userevent);
+
+GUSISIOUXSocket::GUSISIOUXSocket() 
+{
+       if (PyMac_GetDelayConsoleFlag())
+               fDelayConsole = true;
+       else
+               fDelayConsole = false;
+       if ( fDelayConsole )
+               initialized = 0;
+       else
+               Initialize();
+       /* Tell the upper layers there's no unseen output */
+       PyMac_OutputSeen();
+}
+
+void
+GUSISIOUXSocket::Initialize()
+{
+       initialized = 1;
+       InstallConsole(0);
+       GUSISetHook(GUSI_EventHook+nullEvent,   (GUSIHook)SIOUXHandleOneEvent);
+       GUSISetHook(GUSI_EventHook+mouseDown,   (GUSIHook)SIOUXHandleOneEvent);
+       GUSISetHook(GUSI_EventHook+mouseUp,     (GUSIHook)SIOUXHandleOneEvent);
+       GUSISetHook(GUSI_EventHook+updateEvt,   (GUSIHook)SIOUXHandleOneEvent);
+       GUSISetHook(GUSI_EventHook+diskEvt,     (GUSIHook)SIOUXHandleOneEvent);
+       GUSISetHook(GUSI_EventHook+activateEvt, (GUSIHook)SIOUXHandleOneEvent);
+       GUSISetHook(GUSI_EventHook+osEvt,               (GUSIHook)SIOUXHandleOneEvent);
+       PyMac_InitMenuBar();
+}
+GUSISIOUXSocket::~GUSISIOUXSocket()
+{
+       if ( !initialized ) return;
+       RemoveConsole();
+}
+ssize_t GUSISIOUXSocket::read(const GUSIScatterer & buffer)
+{
+       if ( !initialized ) Initialize();
+       GUSIStdioFlush();
+       PyMac_OutputSeen();
+       PyMac_RaiseConsoleWindow();
+       return buffer.SetLength(
+               ReadCharsFromConsole((char *) buffer.Buffer(), (int)buffer.Length()));
+       GUSIContext::Yield(kGUSIPoll);
+}
+ssize_t GUSISIOUXSocket::write(const GUSIGatherer & buffer)
+{
+       ssize_t rv;
+                       
+       if ( !initialized ) Initialize();
+       PyMac_OutputNotSeen();
+       SIOUXUseWaitNextEvent = false;
+       rv = WriteCharsToConsole((char *) buffer.Buffer(), (int)buffer.Length());
+       GUSIContext::Yield(kGUSIPoll);
+       return rv;
+}
+int GUSISIOUXSocket::ioctl(unsigned int request, va_list)
+{
+       switch (request)        {
+       case FIOINTERACTIVE:
+               return 0;
+       default:
+               return GUSISetPosixError(EOPNOTSUPP);
+       }
+}
+int    GUSISIOUXSocket::fstat(struct stat * buf)
+{
+       GUSISocket::fstat(buf);
+       buf->st_mode =  S_IFCHR | 0666;
+       
+       return 0;
+}
+int GUSISIOUXSocket::isatty()
+{ 
+       return 1;
+}
+static bool input_pending()
+{
+#if !TARGET_API_MAC_CARBON
+       // Jack thinks that completely removing this code is a bit
+       // too much...
+       QHdrPtr eventQueue = LMGetEventQueue();
+       EvQElPtr element = (EvQElPtr)eventQueue->qHead;
+       
+       // now, count the number of pending keyDown events.
+       while (element != nil) {
+               if (element->evtQWhat == keyDown || element->evtQWhat == autoKey)
+                       return true;
+               element = (EvQElPtr)element->qLink;
+       }
+#endif
+       return false;
+}
+
+bool GUSISIOUXSocket::select(bool * canRead, bool * canWrite, bool *)
+{
+       if ( !initialized ) Initialize();
+       bool cond = false;
+       if (canRead)
+               if (*canRead = input_pending())
+                       cond = true;
+       if (canWrite)
+               cond = *canWrite = true;
+               
+       return cond;
+}
+GUSISIOUXDevice * GUSISIOUXDevice::sInstance;
+GUSISIOUXDevice * GUSISIOUXDevice::Instance()
+{
+       if (!sInstance)
+               sInstance = new GUSISIOUXDevice();
+       return sInstance;
+}
+bool GUSISIOUXDevice::Want(GUSIFileToken & file)
+{
+       switch (file.WhichRequest()) {
+       case GUSIFileToken::kWillOpen:
+               return file.IsDevice() && (file.StrStdStream(file.Path()) > -1);
+       default:
+               return false;
+       }
+}
+GUSISocket * GUSISIOUXDevice::open(GUSIFileToken &, int)
+{
+       return GUSISIOUXSocket::Instance();
+}
+void GUSISetupConsoleDescriptors()
+{
+       GUSIDescriptorTable * table = GUSIDescriptorTable::Instance();
+       GUSISIOUXSocket *     SIOUX = GUSISIOUXSocket::Instance();
+       
+       table->InstallSocket(SIOUX);
+       table->InstallSocket(SIOUX);
+       table->InstallSocket(SIOUX);
+}
diff --git a/Mac/ReadMe b/Mac/ReadMe
new file mode 100644 (file)
index 0000000..adf6214
--- /dev/null
@@ -0,0 +1,218 @@
+How to install Python 2.1 on your Macintosh
+-------------------------------------------
+
+This is a MacPython that can run on classic MacOS (from 8.1
+onwards) and natively on MacOSX. The installer tries to work out whether you can
+use the Carbon version or not. This is also the first MacPython distribution
+to be packaged as an active installer, which only downloads the parts you actually
+need. Let me hear about problems in these areas.
+
+You should definitely read the Relnotes file too.
+
+A special note about the active installer: do not background it, it may hang
+your machine. This is a general problem with Vise active installers, MindVision
+are working on it.
+
+If you installed a 2.1 beta on MacOSX you MUST read the uninstall section below.
+
+------
+
+If this is your first encounter with Python: you definitely need the
+common user documentation (common to all platforms). You can find this
+(in various forms) on www.pythonlabs.com, www.python.org and
+ftp.python.org. Through there, or via
+http://www.cwi.nl/~jack/macpython.html you can also find the most recent
+MacPython distribution.
+
+Mac-specific documentation is included in this distribution in folder
+Mac:Demo. The documentation is sparse, but it will have to serve for
+now. The documentation is in HTML format, start with index.html.
+
+Caveats
+-------
+Aside from the general new Python 2.1 features compared to 2.0 the main
+feature of this release is Carbon support.
+
+This installer installs MacPython for classic PPC MacOS, MacPython for Carbon
+(OS X, OS 9 or OS8 with CarbonLib installed) or both, depending on your
+configuration. By selecting custom install you can bypass these tests and
+install what you want.
+
+If you want 68k support you will have to stay with MacPython 1.5.2.
+
+What to install
+---------------
+
+The optional parts in this distribution are
+- TK+PIL: Tkinter and support modules, plus Imaging, the Python image manipulation 
+  package (allows you to read, write and display images and do lots of operations on them).
+  For Carbon MacPython you only get PIL: there is no Tcl/Tk for Carbon yet.
+  This is the reason Classic MacPython is also installed on MacOSX: it allows you
+  to run Tkinter applications, albeit in the MacOS9 box.
+- img: another imaging package. Has more file format support and is faster
+  than imaging, but has only limited operations on images. There is a bridge
+  between the packages.
+- Numeric: the LLNL Numeric Python extension. All sorts of nifty operations
+  on matrices and such. This is the most recent version from the sourceforge archive.
+  Numeric has moved from Extensions to :Lib:site-python, by the way, see the release
+  notes.
+- Developers kit: all header files and some tools and sample projects to get you started on
+  writing Python extensions if you have CodeWarrior.
+All these except the DevKit are installed with Easy Install.
+
+After the installer finishes it automatically launches the appropriate
+ConfigurePython applet, to finish configuration of your Python. If you run MacOS9 or later
+(or 8 with CarbonLib installed) you can switch back and forth between the classic and
+Carbon versions of Python by running either ConfigurePythonClassic or ConfigurePythonCarbon.
+
+Moving your Python installation after installing is generally not a good idea.
+If you have to do this anyway you should remove your preference file, run
+ConfigurePython and remove all .pyc files. (there's a script zappyc.py that does
+the latter).
+
+If you don't have enough memory: the sizes choosen are somewhat
+arbitrary, and they are as high as they are so that test.autotest runs with fewer
+problems. An average Python program can make do with much less memory.
+Try lowering the application sizes in the finder "get info"
+window, and seeing whether the resulting python is still usable.
+
+After installing
+----------------
+
+It is probably a good idea to run the automatic tests. Start
+Python and "import test.autotest". 
+
+Two tests will fail on MacOS9, both with MemoryErrors:
+test_longexp and test_zlib (on MacOSX nothing should fail).
+
+If you increase the PythonInterpreter memory
+partition size they will pass (but for longexp you have to increase it by an
+incredible amount, 400MB is rumoured). It will, however, print some messages
+about optional features not supported. You should not worry about these,
+they are modules that are supported by Python on other platforms. Also,
+if you didn't run compileall before autotesting you may run out of
+memory the first time you run the tests. test_socket may also fail if
+you have no internet connection. Please also read the Relnotes file for
+other minor problems with this distribution.
+
+Using Python is most easily done from the IDE, which has a builtin editor,
+debugger and other goodies. The alternative is to use PythonInterpreter,
+which is the lowlevel interpreter with a console-window only (similar to Unix
+Python).
+
+If your program uses Tkinter you MUST run it under PythonInterpreter, Tkinter
+and IDE are incompatible and your program will fail in strange ways.
+
+Uninstalling
+------------
+
+Two items are installed in the system folder: the interpreter shared
+libraries PythonCore and PythonCoreCarbon lives in the Extensions folder and the
+"Python 2.1 Preferences" file in the Python subfolder in the
+Preferences folder. All the rest of Python lives in the folder you
+installed in.
+
+On OSX the libraries are installed in /Library/CFMSupport. There is a nasty bug
+in OSX that is triggered by Python: if any orphaned aliases are left in
+/Library/CFMSupport your machine will start to behave very badly. 2.1
+beta installers triggered this problem if you simply threw away your Python folder,
+so if you installed a 2.1beta you should clean out the aliases in /Library/CFMSupport
+too. This final 2.1 installer always copies the shared libraries on OSX, so it does
+not have the problem anymore.
+
+Things to see
+-------------
+
+Start off at Mac:Demo:index.html. Read at least the first few sections.
+
+There are also some interesting files in the "Relnotes" folder that may
+contain useful information. There is also a first stab at documentation
+(plus examples) in the Mac:Demo folder. The toplevel Demo folder has
+machine-independent demos. 
+The Mac:Lib:test folder also has some programs that show simple
+capabilities of various modules.
+
+The ":Mac:scripts" folder has some sample scripts. Some are useful, some are
+just interesting to look at to see how various things work. The MkDistr,
+mkapplet and fullbuild scripts (plus the ones mentioned above) may help
+you to understand how to use AppleEvents and various other toolboxes
+from python.
+
+Other mac-specific goodies can be found in :Mac:Tools, of which the IDE sources
+and a CGI framework deserve special mention.
+
+The 'img' group of modules, which handles I/O of many different image
+formats is included, but without documentation.  You can find docs at
+ftp://ftp.cwi.nl/pub/jack/python/img (or somewhere around there).
+
+Finally there is a Mac:Contrib folder which contains some contributed
+software.
+
+Upgrading from older Python releases
+------------------------------------
+
+Python releases are independent of each other, with
+separate Preferences files, shared library names, etc. The good news is
+that this means you can keep your older version around if you are unsure
+whether to upgrade. The bad news is that your old preference settings
+are lost and you have to set them again.
+
+After you are satisfied that 2.1 works as expected you can trash
+anything in the system folder that has "python" in the name and not
+"2.1".
+
+As of 2.1 the ConfigurePython applets will try to detect incompatible preferences
+files and offer to remove them. This means that re-running ConfigurePython after
+a second install of the same MacPython version (or after moving the Python folder)
+should fix things up correctly.
+
+The installer
+-------------
+
+The installer for this product was created using Installer VISE
+from MindVision Software. For more information on Installer VISE,
+contact:
+MindVision Software
+7201 North 7th Street
+Lincoln, NE 68521-8913
+Voice: 402-477-3269
+Fax: 402-477-1395
+Internet: mindvision@mindvision.com
+http://www.mindvision.com
+
+Just van Rossum <just@letterror.nl> created the initial version of the
+installer (with Installer Vise Lite), and Jack worked from there.
+
+Thanks!
+-------
+
+Thanks go to the whole Python community with Guido in the lead, of
+course. Mac-specific thanks go to the pythonmac-sig, Just van Rossum,
+Corran Webster, Tony Ingraldi, Erik van Blokland, Bill Bedford, Chris
+Stern, Gordon Worley, Oliver Steele, M. Papillon, Steven Majewski, David
+Goodger, Chris Barker, Luc Lefebvre, Tattoo Mabonzo K., Russell Finn,
+Tom Bridgman Russel Owen and all the other people who provided feedback,
+code or both!
+
+MacPython includes waste, a TextEdit replacement which is (c) 1998 Marco Piovanelli.
+
+A special mention is deserved by Matthias Neeracher, who has written the brilliant
+unix-compatible GUSI I/O library, without which MacPython would not have sockets
+or select, and to Alexandre Parenteau, who has ported this library to Carbon.
+
+Feedback
+--------
+
+Send bug reports, suggestions, contributions and fanmail to
+<jack@cwi.nl>. However, a better way to discuss MacPython is to join the
+<pythonmac-sig@python.org> mailing list, which is explicitly meant for
+this purpose.
+
+
+Jack Jansen
+Oratrix Development BV
+Valeriusplein 30
+Amsterdam
+the Netherlands
+
+<jack@cwi.nl>, http://www.cwi.nl/~jack
diff --git a/Mac/Relnotes b/Mac/Relnotes
new file mode 100644 (file)
index 0000000..772ea56
--- /dev/null
@@ -0,0 +1,104 @@
+Changes in 2.1 since 2.0
+--------------------------
+
+These release notes refer to Mac-specific changes only. See NEWS (in the Misc folder)
+for machine-independent changes. Changes since 2.1b2 are
+marked with [*] and at the bottom of the list.
+
+- This release is optionally Carbon-based, so it runs natively on MacOS 8.1 or
+  later and MacOSX. (Note that on MacOSX MacPython will run as a normal Mac application,
+  if you want to run Python from the BSD commandline get a unix-Python distribution
+  from www.python.org). 
+- Alternatively there is a classic PPC interpreter as well. There are two reasons you
+  might want to use this: (a) you have a pre-MacOS9 system and don't want to install
+  CarbonLib, or (b) you need Tkinter, for which no Carbon version is available yet.
+- Distutils is included and seems to work. On 8.1 you may want to get Apple's
+  CarbonLib installer even if you plan to run classic, it contains the newer Appearance 
+  Mgr which Python needs (according to rumour).
+- There's a new module (package, actually) mkcwproject which builds CodeWarrior
+  projects from simple templates. See Distutils or :Mac:scripts:genpluginprojects.py
+  for examples of use.
+- The Numerical extension has moved to :Lib:site-python from :Extensions. As Numerical
+  is now distutils-based you can easily install newer versions when they become
+  available.
+- The Help and ctb modules are not available under Carbon because that functionality is
+  not in Carbon.
+- Windows and Dialogs can now be different beasts, so you may have to call
+  dlg.GetDialogWindow() where you used to be able to call window methods straight
+  on the dialog. This also has consequences for code using FrameWork.DialogWindow.
+  THIS IS AN INCOMPATIBLE CHANGE.
+- ctl.GetControlDataHandle() has been renamed to GetControlData_Handle(), and similarly
+  for the other variants of GetControlData and SetControlData. This was needed
+  because Carbon defines a completely different routine with the name GetControlDataHandle.
+  THIS IS AN INCOMPATIBLE CHANGE.
+- Method mac.xstat() has disappeared. THIS IS AN INCOMPATIBLE CHANGE.
+- Menu.SetPopupData() and GetPopupData() are gone. Use SetPopupMenuHandle() and
+  SetPopupMenuID() (and the getters) in stead. THIS IS AN INCOMPATIBLE CHANGE.
+- Various methods have disappeared when running under Carbon. The script
+  :Mac:scripts:missingcarbonmethods.py can check your sources, but you need unix to run
+  it. Or use it as documentation and search by hand. THIS IS AN INCOMPATIBLE CHANGE.
+- The good news is that "direct access to toolbox structs" still works from Python,
+  so Python programmers have a lot less to fix than C programmers.
+  That's because the lowlevel code simply uses the accessors internally. The accessors
+  are available both in Carbon and Classic MacPython.
+- Scrap under Carbon is, you guessed it, the Carbon Scrap Manager. Some workarounds are
+  provided, though. THIS IS AN INCOMPATIBLE CHANGE.
+- The Internet Config routines that are missing from Carbon have been removed. This
+  is no problem if you use the "ic" module, but may be if you use "icglue" directly.
+  THIS IS AN INCOMPATIBLE CHANGE.
+- Various old toolbox names (CountMItems, EnableItem, etc) have disappeared. Use the
+  new forms (CountMenuItems, EnableMenuItem, etc). THIS IS AN INCOMPATIBLE CHANGE.
+- Waste now uses Waste 2.0.
+- The default memory size for the interpreter has been upped again.
+- The MacOS error messages have been updated to reflect the current state of
+  things. This was long overdue.
+- The crash in BuildApplication has been fixed.
+- struct.pack related problems (in Audio_Mac, for example) have been fixed.
+- (src/dev/cvs only): The project files now use the .mcp extension in stead of .prj.
+  Projects for almost all plugins and the img modules are automatically generated
+  with :Mac:scripts:genpluginprojects.py (also called by fullbuild). The .mcp files
+  are not in the repository, if you don't want to use genpluginprojects you can import
+  the .mcp.xml files in CodeWarrior.
+- ConfigurePython has been replace by two applets: ConfigurePythonClassic and
+  ConfigurePythonCarbon. These will select either execution model for machines
+  supporting both, and it will also build all the standard applets.
+- PythonInterpreterCarbon and PythonInterpreterClassic are now files of type "Atmp", not
+  "APPL", so there should not be any confusion as to what the real application is
+  (PythonInterpreter).
+- A BBEdit language module by Chris Stern is included in the :Mac:Contrib folder.
+- The ConfigurePython applets will now detect if the preference file refers to a different
+  folder than where they live. They offer to remove the preference file in this case.
+- Import case-check was broken in 2.1b1, this is fixed.
+- A side-effect of the previous fix is that getpass works again.
+- BuildApplication was broken under Carbon. Fixed.
+- Morefindertools functionality integrated into findertools. [*]
+- ped.py from Mac:Demo crashed, this has been fixed by making Win.WhichWindow more robust. [*]
+- Tkinter mainloop is now a little less aggressive in eating events. [*]
+- The Python console window is raised to the front when input is read. This fixes a hang
+  (for Carbon only) when crashing with a modal dialog open. [*]
+- The menu bar is (again) restored when Python is terminating. [*]
+
+
+What is not in this distribution
+--------------------------------
+
+- The garbage collection mods have not been enabled, mainly due to lack of test-time.
+- Stackless Python/microthreads hasn't been ported to 2.1 yet. If/when it becomes available
+  Just will undoubtedly announce it on pythonmac-sig and the MacPython homepage.
+
+Known problems
+--------------
+
+This list is probably incomplete, more problems may be listed on the MacPython homepage,
+http://www.cwi.nl/~jack/macpython.html.
+
+- Tkinter does not work under Carbon.
+- The IDE and Tkinter do not work together. Run tkinter programs under PythonInterpreter.
+- Tkinter file events do not work, unless you have opened the file through Tcl (but then
+  you cannot access it from Python).
+- Aliases may not work in sys.path entries.
+- Under Carbon on OS9 only you may occasionally see a spurious KeyboardInterrupt. I have absolutely
+  no clue as to what is causing this.
+- PythonInterpreter used interactively will eat a lot of processor cycles. You should use
+  PythonIDE for interactive work and PythonInterpreter for scripts only. This is especially
+  true under OSX.
diff --git a/Mac/Resources/version.r b/Mac/Resources/version.r
new file mode 100644 (file)
index 0000000..85d7466
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+** Create the 'vers' version resource from information in the
+** Python include files.
+*/
+
+#include "Types.r"
+
+#include "patchlevel.h"
+
+/* Invent the Mac version from the Python version */
+#if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_ALPHA
+#define V_RELEASE alpha
+#endif
+#if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_BETA
+#define V_RELEASE beta
+#endif
+#ifndef V_RELEASE
+#define V_RELEASE final
+#endif
+
+resource 'vers' (1) {
+       PY_MAJOR_VERSION,
+       (PY_MINOR_VERSION<<4) | (PY_MICRO_VERSION),
+       V_RELEASE,
+       PY_RELEASE_SERIAL,
+       0,
+       PY_VERSION,
+       $$Format("%s, Â© Python Software Foundation %s",
+                       PY_VERSION, $$Date)
+};
diff --git a/Mac/_checkversion.py b/Mac/_checkversion.py
new file mode 100644 (file)
index 0000000..6efe92d
--- /dev/null
@@ -0,0 +1,16 @@
+"""This file (which is sourced, not imported) checks the version of the
+"versioncheck" package. It is also an example of how to format your own
+_checkversion.py file"""
+
+import pyversioncheck
+
+_PACKAGE="MacPython"
+_VERSION="2.1"
+_URL="http://www.cwi.nl/~jack/macpythonversion.txt"
+
+try:
+       _myverbose=VERBOSE
+except NameError:
+       _myverbose=1
+       
+pyversioncheck.versioncheck(_PACKAGE, _URL, _VERSION, verbose=_myverbose)
diff --git a/Mac/mwerks/mwerks_applet_config.h b/Mac/mwerks/mwerks_applet_config.h
new file mode 100644 (file)
index 0000000..b3fe7cd
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+** Configuration file for standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+
+#define USE_GUSI               /* Stdio implemented with GUSI */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+#define USE_WASTE              /* Include waste module in core Python */
+#define USE_MACSPEECH          /* Include macspeech module in core Python */
+#define USE_IMG                        /* Include img modules in core Python */
+#define USE_MACCTB             /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+#define USE_TK                 /* Include _tkinter module in core Python */
+#define MAC_TCL                        /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+#define USE_MAC_APPLET_SUPPORT /* Enable code to run a PYC resource */
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#define USE_GDBM               /* Include the gdbm module */
+#define USE_ZLIB               /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
diff --git a/Mac/mwerks/mwerks_carbonNOGUSI_config.h b/Mac/mwerks/mwerks_carbonNOGUSI_config.h
new file mode 100644 (file)
index 0000000..3961535
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+** Configuration file for small standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+#define ACCESSOR_CALLS_ARE_FUNCTIONS 1
+#define OPAQUE_TOOLBOX_STRUCTS 1
+#define TARGET_API_MAC_CARBON 1
+#define TARGET_API_MAC_CARBON_NOTYET 1 /* Things we should do eventually, but not now */
+
+#define USE_ARGV0_CHDIR                /* Workaround for OSXDP4: change dir to argv[0] dir */
+/* #define USE_GUSI2           /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+/* #define USE_CORE_TOOLBOX            /* Include minimal set of toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+/* #define USE_MACSPEECH               /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+/* #define USE_MACCTB          /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK                      /* Include _tkinter module in core Python */
+/* #define MAC_TCL                     /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
diff --git a/Mac/mwerks/mwerks_carbon_config.h b/Mac/mwerks/mwerks_carbon_config.h
new file mode 100644 (file)
index 0000000..fe18963
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+** Configuration file for small standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+#define ACCESSOR_CALLS_ARE_FUNCTIONS 1
+#define OPAQUE_TOOLBOX_STRUCTS 1
+#define TARGET_API_MAC_CARBON 1
+#define TARGET_API_MAC_CARBON_NOTYET 1 /* Things we should do eventually, but not now */
+
+#define USE_ARGV0_CHDIR                /* Workaround for OSXDP4: change dir to argv[0] dir */
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+/* #define USE_CORE_TOOLBOX            /* Include minimal set of toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+/* #define USE_MACSPEECH               /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+/* #define USE_MACCTB          /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK                      /* Include _tkinter module in core Python */
+/* #define MAC_TCL                     /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
diff --git a/Mac/mwerks/mwerks_carbongusi_config.h b/Mac/mwerks/mwerks_carbongusi_config.h
new file mode 100644 (file)
index 0000000..9a4e5b6
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+** Configuration file for small standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+#define ACCESSOR_CALLS_ARE_FUNCTIONS 1
+#define OPAQUE_TOOLBOX_STRUCTS 1
+#define TARGET_API_MAC_CARBON 1
+#define TARGET_API_MAC_CARBON_NOTYET 1 /* Things we should do eventually, but not now */
+
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+/* #define USE_CORE_TOOLBOX            /* Include minimal set of toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+/* #define USE_MACSPEECH               /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+/* #define USE_MACCTB          /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK                      /* Include _tkinter module in core Python */
+/* #define MAC_TCL                     /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
diff --git a/Mac/mwerks/mwerks_carbonplugin_config.h b/Mac/mwerks/mwerks_carbonplugin_config.h
new file mode 100644 (file)
index 0000000..0d2fc7c
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+** Config file for dynamically-loaded ppc/cfm68k plugin modules.
+*/
+#define ACCESSOR_CALLS_ARE_FUNCTIONS 1
+#define OPAQUE_TOOLBOX_STRUCTS 1
+#define TARGET_API_MAC_CARBON 1
+#define TARGET_API_MAC_CARBON_NOTYET 1 /* Things we should do eventually, but not now */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+#define USE_TOOLBOX_OBJECT_GLUE        /* Use glue routines for accessing PyArg_Parse/Py_BuildValue helpers */
+
+/* #define USE_GUSI1           /* Stdio implemented with GUSI */
+#define USE_GUSI2              /* Stdio implemented with GUSI */
+#if defined(USE_GUSI1) || defined(USE_GUSI2)
+#define USE_GUSI
+#endif
+#define WITH_THREAD            /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define USE_MSL                        /* Use MSL libraries */
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
diff --git a/Mac/mwerks/mwerks_nonshared_config.h b/Mac/mwerks/mwerks_nonshared_config.h
new file mode 100644 (file)
index 0000000..abf205f
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+** Configuration file for standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+
+/* #define USE_GUSI1           /* Stdio implemented with GUSI */
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+#if defined(USE_GUSI1) || defined(USE_GUSI2)
+#define USE_GUSI
+#endif
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+#define USE_WASTE              /* Include waste module in core Python */
+#define USE_MACSPEECH          /* Include macspeech module in core Python */
+#define USE_IMG                        /* Include img modules in core Python */
+#define USE_MACCTB             /* Include ctb module in core Python */
+#define USE_TK                 /* Include _tkinter module in core Python */
+#define MAC_TCL                        /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+#define USE_GDBM               /* Include the gdbm module */
+#define USE_ZLIB               /* Include the zlib module */
+#define USE_IC                 /* Include Internet Config module */
+#define USE_PYEXPAT            /* Include Pyexpat module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
+/* Missing declarations. Should these go to pyport.h? */
+#ifdef USE_GUSI2
+#include <stdio.h>
+extern int fileno(FILE *);
+#endif
diff --git a/Mac/mwerks/mwerks_nscarbon_config.h b/Mac/mwerks/mwerks_nscarbon_config.h
new file mode 100644 (file)
index 0000000..fa6d3ea
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+** Configuration file for standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+#define ACCESSOR_CALLS_ARE_FUNCTIONS 1
+#define OPAQUE_TOOLBOX_STRUCTS 1
+#define TARGET_API_MAC_CARBON 1
+#define TARGET_API_MAC_CARBON_NOTYET 1 /* Things we should do eventually, but not now */
+
+#define USE_ARGV0_CHDIR                /* Workaround for OSXDP4: change dir to argv[0] dir */
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+#if defined(USE_GUSI1) || defined(USE_GUSI2)
+#define USE_GUSI
+#endif
+/* #define WITH_THREAD         /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+#define USE_WASTE              /* Include waste module in core Python */
+/* #define USE_MACSPEECH               /* Include macspeech module in core Python */
+#define USE_IMG                        /* Include img modules in core Python */
+/* #define USE_MACCTB          /* Include ctb module in core Python */
+/* #define USE_TK                      /* Include _tkinter module in core Python */
+/* #define MAC_TCL                     /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+#define USE_GDBM               /* Include the gdbm module */
+#define USE_ZLIB               /* Include the zlib module */
+#define USE_IC                 /* Include Internet Config module */
+#define USE_PYEXPAT            /* Include Pyexpat module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
+/* Missing declarations. Should these go to pyport.h? */
+#ifdef USE_GUSI2
+#include <stdio.h>
+extern int fileno(FILE *);
+#endif
diff --git a/Mac/mwerks/mwerks_plugin_config.h b/Mac/mwerks/mwerks_plugin_config.h
new file mode 100644 (file)
index 0000000..9aa4941
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+** Config file for dynamically-loaded ppc/cfm68k plugin modules.
+*/
+
+/* #define USE_GUSI1           /* Stdio implemented with GUSI */
+#define USE_GUSI2              /* Stdio implemented with GUSI */
+#if defined(USE_GUSI1) || defined(USE_GUSI2)
+#define USE_GUSI
+#endif
+#define WITH_THREAD            /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define WITHOUT_FRAMEWORKS     /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+#define USE_TOOLBOX_OBJECT_GLUE        /* Use glue routines for accessing PyArg_Parse/Py_BuildValue helpers */
+#define USE_MSL                        /* Use MSL libraries */
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
diff --git a/Mac/mwerks/mwerks_shared_config.h b/Mac/mwerks/mwerks_shared_config.h
new file mode 100644 (file)
index 0000000..05e9293
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+** Configuration file for dynamically loaded cfm68k/ppc PythonCore,
+** interpreter and Applet.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+
+/* #define USE_GUSI1           /* Stdio implemented with GUSI */
+#define USE_GUSI2              /* Stdio implemented with GUSI */
+#define WITH_THREAD            /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_CORE_TOOLBOX       /* Include core toolbox modules (Dlg,Ctl,Menu,Win,Res,Qd) */
+/* #define USE_TOOLBOX         /* Include all toolbox modules in core Python */
+/* #define USE_QT              /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+/* #define USE_MACSPEECH       /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+/* #define USE_MACCTB          /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK              /* Include _tkinter module in core Python */
+/* #define MAC_TCL             /* This *must* be on if USE_TK is on */
+#define USE_MAC_SHARED_LIBRARY         /* Enable code to add shared-library resources */
+#define USE_MAC_APPLET_SUPPORT         /* Enable code to run a PYC resource */
+#define HAVE_DYNAMIC_LOADING           /* Enable dynamically loaded modules */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+#define USE_TOOLBOX_OBJECT_GLUE /* Call toolbox object converters indirectly */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
+/* Missing declarations. Should these go to pyport.h? */
+#ifdef USE_GUSI2
+#include <stdio.h>
+extern int fileno(FILE *);
+#endif
diff --git a/Mac/mwerks/mwerks_shcarbon_config.h b/Mac/mwerks/mwerks_shcarbon_config.h
new file mode 100644 (file)
index 0000000..26a9b14
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+** Configuration file for dynamically loaded cfm68k/ppc PythonCore,
+** interpreter and Applet.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+#define ACCESSOR_CALLS_ARE_FUNCTIONS 1
+#define OPAQUE_TOOLBOX_STRUCTS 1
+#define TARGET_API_MAC_CARBON 1
+#define TARGET_API_MAC_CARBON_NOTYET 1 /* Things we should do eventually, but not now */
+
+#define USE_ARGV0_CHDIR                /* Workaround for OSXDP4: change dir to argv[0] dir */
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
+#define WITH_THREAD            /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_CORE_TOOLBOX       /* Include core toolbox modules (Dlg,Ctl,Menu,Win,Res,Qd) */
+/* #define USE_TOOLBOX         /* Include all toolbox modules in core Python */
+/* #define USE_QT              /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+/* #define USE_MACSPEECH       /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+/* #define USE_MACCTB          /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK              /* Include _tkinter module in core Python */
+/* #define MAC_TCL             /* This *must* be on if USE_TK is on */
+#define USE_MAC_SHARED_LIBRARY         /* Enable code to add shared-library resources */
+#define USE_MAC_APPLET_SUPPORT         /* Enable code to run a PYC resource */
+#define HAVE_DYNAMIC_LOADING           /* Enable dynamically loaded modules */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+#define USE_TOOLBOX_OBJECT_GLUE /* Call toolbox object converters indirectly */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
+/* Missing declarations. Should these go to pyport.h? */
+#ifdef USE_GUSI2
+#include <stdio.h>
+extern int fileno(FILE *);
+#endif
diff --git a/Mac/mwerks/mwerks_small_config.h b/Mac/mwerks/mwerks_small_config.h
new file mode 100644 (file)
index 0000000..573aba5
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+** Configuration file for small standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+#define USE_MACSPEECH          /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+#define USE_MACCTB             /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK                      /* Include _tkinter module in core Python */
+/* #define MAC_TCL                     /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
+/* Missing declarations. Should these go to pyport.h? */
+#ifdef USE_GUSI2
+#include <stdio.h>
+extern int fileno(FILE *);
+#endif
diff --git a/Mac/mwerks/mwerks_thrcarbonsm_config.h b/Mac/mwerks/mwerks_thrcarbonsm_config.h
new file mode 100644 (file)
index 0000000..6ea97e4
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+** Configuration file for small standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+#define ACCESSOR_CALLS_ARE_FUNCTIONS 1
+#define OPAQUE_TOOLBOX_STRUCTS 1
+#define TARGET_API_MAC_CARBON 1
+#define TARGET_API_MAC_CARBON_NOTYET 1 /* Things we should do eventually, but not now */
+
+#define USE_ARGV0_CHDIR                /* Workaround for OSXDP4: change dir to argv[0] dir */
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
+#define WITH_THREAD            /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+/* #define USE_CORE_TOOLBOX            /* Include minimal set of toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+/* #define USE_MACSPEECH               /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+/* #define USE_MACCTB          /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK                      /* Include _tkinter module in core Python */
+/* #define MAC_TCL                     /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
diff --git a/Mac/mwerks/mwerks_threadsmall_config.h b/Mac/mwerks/mwerks_threadsmall_config.h
new file mode 100644 (file)
index 0000000..f4199ef
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+** Configuration file for small standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
+#define WITH_THREAD            /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+#define USE_MACSPEECH          /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+#define USE_MACCTB             /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK                      /* Include _tkinter module in core Python */
+/* #define MAC_TCL                     /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#define WITHOUT_FRAMEWORKS /* Use old-style Universal Header includes, not Carbon/Carbon.h */
+
+#define USE_MSL_MALLOC /* Disable private malloc. Also disables next two defines */
+#ifndef USE_MSL_MALLOC
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#endif
+
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
diff --git a/Mac/mwerks/mwerks_tkplugin_config.h b/Mac/mwerks/mwerks_tkplugin_config.h
new file mode 100644 (file)
index 0000000..d0fb811
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+** Special config-file for _tkinter plugin.
+*/
+
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* #define USE_GUSI1   /* Stdio implemented with GUSI 1.X */
+#if defined(USE_GUSI1) || defined(USE_GUSI2)
+#define USE_GUSI
+#endif
+#define WITH_THREAD            /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define USE_TK                 /* Include _tkinter module in core Python */
+#define MAC_TCL                        /* This *must* be on if USE_TK is on */
+#define WITHOUT_FRAMEWORKS     /* Use old-style Universal Header includes, not Carbon/Carbon.h */
diff --git a/Mac/scripts/bgenall.py b/Mac/scripts/bgenall.py
new file mode 100644 (file)
index 0000000..bb5ddcc
--- /dev/null
@@ -0,0 +1,38 @@
+# bgenall - Generate all bgen-generated modules
+#
+import sys
+import os
+import string
+
+def bgenone(dirname, shortname):
+       os.chdir(dirname)
+       m = __import__(shortname+'scan')
+       try:
+               m.main()
+       except:
+               return 0
+       return 1
+       
+def main():
+       success = []
+       failure = []
+       sys.path.insert(0, ':')
+       srcdir = os.path.join(os.path.join(sys.prefix, 'Mac'), 'Modules')
+       contents = os.listdir(srcdir)
+       for name in contents:
+               moduledir = os.path.join(srcdir, name)
+               scanmodule = os.path.join(moduledir, name +'scan.py')
+               if os.path.exists(scanmodule):
+                       if bgenone(moduledir, name):
+                               success.append(name)
+                       else:
+                               failure.append(name)
+       print 'Done:', string.join(success, ' ')
+       if failure:
+               print 'Failed:', string.join(failure, ' ')
+               return 0
+       return 1
+       
+if __name__ == '__main__':
+       rv = main()
+       sys.exit(not rv)
\ No newline at end of file
diff --git a/Mac/scripts/errors.txt b/Mac/scripts/errors.txt
new file mode 100644 (file)
index 0000000..d3f8247
--- /dev/null
@@ -0,0 +1,1789 @@
+-32768 svTempDisable   svTempDisable
+-32640 svDisabled      Reserve range -32640 to -32768 for Apple temp disables.
+-32615 fontNotOutlineErr       bitmap font passed to routine that does outlines only
+-30788 kURL68kNotSupportedError        kURL68kNotSupportedError
+-30787 kURLAccessNotAvailableError     kURLAccessNotAvailableError
+-30786 kURLInvalidConfigurationError   kURLInvalidConfigurationError
+-30785 kURLExtensionFailureError       kURLExtensionFailureError
+-30783 kURLFileEmptyError      kURLFileEmptyError
+-30781 kURLInvalidCallError    kURLInvalidCallError
+-30780 kURLUnsettablePropertyError     kURLUnsettablePropertyError
+-30779 kURLPropertyBufferTooSmallError kURLPropertyBufferTooSmallError
+-30778 kURLUnknownPropertyError        kURLUnknownPropertyError
+-30777 kURLPropertyNotYetKnownError    kURLPropertyNotYetKnownError
+-30776 kURLAuthenticationError kURLAuthenticationError
+-30775 kURLServerBusyError     kURLServerBusyError
+-30774 kURLUnsupportedSchemeError      kURLUnsupportedSchemeError
+-30773 kURLInvalidURLError     kURLInvalidURLError
+-30772 kURLDestinationExistsError      kURLDestinationExistsError
+-30771 kURLProgressAlreadyDisplayedError       kURLProgressAlreadyDisplayedError
+-30770 kURLInvalidURLReferenceError    kURLInvalidURLReferenceError
+-30599 controlHandleInvalidErr controlHandleInvalidErr
+-30597 controlInvalidDataVersionErr    controlInvalidDataVersionErr
+-30596 errItemNotControl       errItemNotControl
+-30595 errCantEmbedRoot        errCantEmbedRoot
+-30594 errCantEmbedIntoSelf    errCantEmbedIntoSelf
+-30593 errWindowRegionCodeInvalid      errWindowRegionCodeInvalid
+-30592 errControlHiddenOrDisabled      errControlHiddenOrDisabled
+-30591 errDataSizeMismatch     errDataSizeMismatch
+-30590 errControlIsNotEmbedder errControlIsNotEmbedder
+-30589 errControlsAlreadyExist errControlsAlreadyExist
+-30588 errInvalidPartCode      errInvalidPartCode
+-30587 errRootAlreadyExists    errRootAlreadyExists
+-30586 errNoRootControl        errNoRootControl
+-30585 errCouldntSetFocus      errCouldntSetFocus
+-30584 errUnknownControl       errUnknownControl
+-30583 errWindowDoesntSupportFocus     errWindowDoesntSupportFocus
+-30582 errControlDoesntSupportFocus    errControlDoesntSupportFocus
+-30581 errDataNotSupported     errDataNotSupported
+-30580 errMessageNotSupported  errMessageNotSupported
+-30567 themeMonitorDepthNotSupportedErr        theme not supported at monitor depth
+-30566 themeScriptFontNotFoundErr      theme font requested for uninstalled script system
+-30565 themeBadCursorIndexErr  themeBadCursorIndexErr
+-30564 themeHasNoAccentsErr    themeHasNoAccentsErr
+-30563 themeBadTextColorErr    themeBadTextColorErr
+-30562 themeProcessNotRegisteredErr    themeProcessNotRegisteredErr
+-30561 themeProcessRegisteredErr       themeProcessRegisteredErr
+-30560 themeInvalidBrushErr    pattern index invalid
+-30555 qtvrUninitialized       qtvrUninitialized
+-30554 qtvrLibraryLoadErr      qtvrLibraryLoadErr
+-30553 streamingNodeNotReadyErr        streamingNodeNotReadyErr
+-30552 noMemoryNodeFailedInitialize    noMemoryNodeFailedInitialize
+-30551 invalidHotSpotIDErr     invalidHotSpotIDErr
+-30550 invalidNodeFormatErr    invalidNodeFormatErr
+-30549 limitReachedErr limitReachedErr
+-30548 settingNotSupportedByNodeErr    settingNotSupportedByNodeErr
+-30547 propertyNotSupportedByNodeErr   propertyNotSupportedByNodeErr
+-30546 timeNotInViewErr        timeNotInViewErr
+-30545 invalidViewStateErr     invalidViewStateErr
+-30544 invalidNodeIDErr        invalidNodeIDErr
+-30543 selectorNotSupportedByNodeErr   selectorNotSupportedByNodeErr
+-30542 callNotSupportedByNodeErr       callNotSupportedByNodeErr
+-30541 constraintReachedErr    constraintReachedErr
+-30540 notAQTVRMovieErr        notAQTVRMovieErr
+-30532 kFBCnoSuchHit   kFBCnoSuchHit
+-30531 kFBCbadSearchSession    kFBCbadSearchSession
+-30530 kFBCindexDiskIOFailed   kFBCindexDiskIOFailed
+-30529 kFBCsummarizationCanceled       kFBCsummarizationCanceled
+-30528 kFBCbadIndexFileVersion kFBCbadIndexFileVersion
+-30527 kFBCanalysisNotAvailable        kFBCanalysisNotAvailable
+-30526 kFBCillegalSessionChange        tried to add/remove vols to a session
+-30525 kFBCsomeFilesNotIndexed kFBCsomeFilesNotIndexed
+-30524 kFBCsearchFailed        kFBCsearchFailed
+-30523 kFBCindexNotAvailable   kFBCindexNotAvailable
+-30522 kFBCindexFileDestroyed  kFBCindexFileDestroyed
+-30521 kFBCaccessCanceled      kFBCaccessCanceled
+-30520 kFBCindexingCanceled    kFBCindexingCanceled
+-30519 kFBCnoSearchSession     kFBCnoSearchSession
+-30518 kFBCindexNotFound       kFBCindexNotFound
+-30517 kFBCflushFailed kFBCflushFailed
+-30516 kFBCaddDocFailed        kFBCaddDocFailed
+-30515 kFBCaccessorStoreFailed kFBCaccessorStoreFailed
+-30514 kFBCindexCreationFailed couldn't create index
+-30513 kFBCmergingFailed       couldn't merge index files
+-30512 kFBCtokenizationFailed  couldn't read from document or query
+-30511 kFBCmoveFailed  V-Twin exception caught
+-30510 kFBCdeletionFailed      V-Twin exception caught
+-30509 kFBCcommitFailed        V-Twin exception caught
+-30508 kFBCindexingFailed      V-Twin exception caught
+-30507 kFBCvalidationFailed    V-Twin exception caught
+-30506 kFBCcompactionFailed    V-Twin exception caught
+-30505 kFBCbadIndexFile        bad FSSpec, or bad data in file
+-30504 kFBCfileNotIndexed      kFBCfileNotIndexed
+-30503 kFBCbadParam    kFBCbadParam
+-30502 kFBCallocFailed probably low memory
+-30501 kFBCnoIndexesFound      kFBCnoIndexesFound
+-30500 kFBCvTwinExceptionErr   no telling what it was
+-30450 kDSpStereoContextErr    kDSpStereoContextErr
+-30449 kDSpInternalErr kDSpInternalErr
+-30448 kDSpConfirmSwitchWarning        kDSpConfirmSwitchWarning
+-30447 kDSpFrameRateNotReadyErr        kDSpFrameRateNotReadyErr
+-30446 kDSpContextNotFoundErr  kDSpContextNotFoundErr
+-30445 kDSpContextNotReservedErr       kDSpContextNotReservedErr
+-30444 kDSpContextAlreadyReservedErr   kDSpContextAlreadyReservedErr
+-30443 kDSpInvalidAttributesErr        kDSpInvalidAttributesErr
+-30442 kDSpInvalidContextErr   kDSpInvalidContextErr
+-30441 kDSpSystemSWTooOldErr   kDSpSystemSWTooOldErr
+-30440 kDSpNotInitializedErr   kDSpNotInitializedErr
+-30429 kISpListBusyErr kISpListBusyErr
+-30428 kISpDeviceActiveErr     kISpDeviceActiveErr
+-30427 kISpSystemActiveErr     kISpSystemActiveErr
+-30426 kISpDeviceInactiveErr   kISpDeviceInactiveErr
+-30425 kISpSystemInactiveErr   kISpSystemInactiveErr
+-30424 kISpElementNotInListErr kISpElementNotInListErr
+-30423 kISpElementInListErr    kISpElementInListErr
+-30422 kISpBufferToSmallErr    kISpBufferToSmallErr
+-30421 kISpSystemListErr       kISpSystemListErr
+-30420 kISpInternalErr kISpInternalErr
+-30399 kNSpJoinFailedErr       kNSpJoinFailedErr
+-30398 kNSpCantBlockErr        kNSpCantBlockErr
+-30397 kNSpMessageTooBigErr    kNSpMessageTooBigErr
+-30396 kNSpSendFailedErr       kNSpSendFailedErr
+-30395 kNSpConnectFailedErr    kNSpConnectFailedErr
+-30394 kNSpGameTerminatedErr   kNSpGameTerminatedErr
+-30393 kNSpTimeoutErr  kNSpTimeoutErr
+-30392 kNSpInvalidProtocolListErr      kNSpInvalidProtocolListErr
+-30391 kNSpInvalidProtocolRefErr       kNSpInvalidProtocolRefErr
+-30390 kNSpInvalidDefinitionErr        kNSpInvalidDefinitionErr
+-30389 kNSpAddPlayerFailedErr  kNSpAddPlayerFailedErr
+-30388 kNSpCreateGroupFailedErr        kNSpCreateGroupFailedErr
+-30387 kNSpNoHostVolunteersErr kNSpNoHostVolunteersErr
+-30386 kNSpNoGroupsErr kNSpNoGroupsErr
+-30385 kNSpNoPlayersErr        kNSpNoPlayersErr
+-30384 kNSpInvalidGroupIDErr   kNSpInvalidGroupIDErr
+-30383 kNSpInvalidPlayerIDErr  kNSpInvalidPlayerIDErr
+-30382 kNSpNameRequiredErr     kNSpNameRequiredErr
+-30381 kNSpFeatureNotImplementedErr    kNSpFeatureNotImplementedErr
+-30380 kNSpAddressInUseErr     kNSpAddressInUseErr
+-30379 kNSpRemovePlayerFailedErr       kNSpRemovePlayerFailedErr
+-30378 kNSpFreeQExhaustedErr   kNSpFreeQExhaustedErr
+-30377 kNSpInvalidAddressErr   kNSpInvalidAddressErr
+-30376 kNSpNotAdvertisingErr   kNSpNotAdvertisingErr
+-30374 kNSpAlreadyAdvertisingErr       kNSpAlreadyAdvertisingErr
+-30373 kNSpMemAllocationErr    kNSpMemAllocationErr
+-30371 kNSpOTVersionTooOldErr  kNSpOTVersionTooOldErr
+-30370 kNSpOTNotPresentErr     kNSpOTNotPresentErr
+-30369 kNSpInvalidParameterErr kNSpInvalidParameterErr
+-30367 kNSpInvalidGameRefErr   kNSpInvalidGameRefErr
+-30366 kNSpProtocolNotAvailableErr     kNSpProtocolNotAvailableErr
+-30365 kNSpHostFailedErr       kNSpHostFailedErr
+-30364 kNSpPipeFullErr kNSpPipeFullErr
+-30362 kNSpTopologyNotSupportedErr     kNSpTopologyNotSupportedErr
+-30361 kNSpAlreadyInitializedErr       kNSpAlreadyInitializedErr
+-30360 kNSpInitializationFailedErr     kNSpInitializationFailedErr
+-30344 kSSpScaleToZeroErr      kSSpScaleToZeroErr
+-30343 kSSpParallelUpVectorErr kSSpParallelUpVectorErr
+-30342 kSSpCantInstallErr      kSSpCantInstallErr
+-30341 kSSpVersionErr  kSSpVersionErr
+-30340 kSSpInternalErr kSSpInternalErr
+-30049 kALMInternalErr kALMInternalErr
+-30048 kALMGroupNotFoundErr    kALMGroupNotFoundErr
+-30047 kALMNoSuchModuleErr     kALMNoSuchModuleErr
+-30046 kALMModuleCommunicationErr      kALMModuleCommunicationErr
+-30045 kALMDuplicateModuleErr  kALMDuplicateModuleErr
+-30044 kALMInstallationErr     kALMInstallationErr
+-30043 kALMDeferSwitchErr      kALMDeferSwitchErr
+-30042 kALMRebootFlagsLevelErr kALMRebootFlagsLevelErr
+-30029 kLocalesDefaultDisplayStatus    Requested display locale unavailable, used default
+-30002 kLocalesTableFormatErr  kLocalesTableFormatErr
+-30001 kLocalesBufferTooSmallErr       kLocalesBufferTooSmallErr
+-29589 kFNSNameNotFoundErr     The name with the requested paramters was not found
+-29587 kFNSBadFlattenedSizeErr flattened size didn't match input or was too small
+-29586 kFNSInsufficientDataErr insufficient data for the operation
+-29585 kFNSMismatchErr reference didn't match or wasn't found in profile
+-29584 kFNSDuplicateReferenceErr       the ref. being added is already in the profile
+-29583 kFNSBadProfileVersionErr        profile version is out of known range
+-29582 kFNSInvalidProfileErr   profile is NULL or otherwise bad
+-29581 kFNSBadReferenceVersionErr      ref. version is out of known range
+-29580 kFNSInvalidReferenceErr ref. was NULL or otherwise bad
+-29507 kCollateInvalidCollationRef     kCollateInvalidCollationRef
+-29506 kCollateBufferTooSmall  kCollateBufferTooSmall
+-29505 kCollateInvalidChar     kCollateInvalidChar
+-29504 kCollatePatternNotFoundErr      kCollatePatternNotFoundErr
+-29503 kCollateUnicodeConvertFailedErr kCollateUnicodeConvertFailedErr
+-29502 kCollateMissingUnicodeTableErr  kCollateMissingUnicodeTableErr
+-29501 kCollateInvalidOptions  kCollateInvalidOptions
+-29500 kCollateAttributesNotFoundErr   kCollateAttributesNotFoundErr
+-29299 kMPInvalidIDErr kMPInvalidIDErr
+-29298 kMPInsufficientResourcesErr     kMPInsufficientResourcesErr
+-29297 kMPTaskAbortedErr       kMPTaskAbortedErr
+-29296 kMPTimeoutErr   kMPTimeoutErr
+-29295 kMPDeletedErr   kMPDeletedErr
+-29293 kMPBlueBlockingErr      kMPBlueBlockingErr
+-29292 kMPTaskStoppedErr       A convention used with MPThrowException.
+-29291 kMPTaskBlockedErr       kMPTaskBlockedErr
+-29290 kMPTaskCreatedErr       kMPTaskCreatedErr
+-29289 kMPProcessTerminatedErr kMPProcessTerminatedErr
+-29288 kMPProcessCreatedErr    kMPProcessCreatedErr
+-29276 kMPPrivilegedErr        kMPPrivilegedErr
+-29275 kMPIterationEndErr      kMPIterationEndErr
+-25341 kUCTextBreakLocatorMissingType  Unicode text break error
+-25340 kUCOutputBufferTooSmall Output buffer too small for Unicode string result
+-25318 errKCCreateChainFailed  errKCCreateChainFailed
+-25317 errKCDataNotModifiable  errKCDataNotModifiable
+-25316 errKCDataNotAvailable   errKCDataNotAvailable
+-25315 errKCInteractionRequired        errKCInteractionRequired
+-25314 errKCNoPolicyModule     errKCNoPolicyModule
+-25313 errKCNoCertificateModule        errKCNoCertificateModule
+-25312 errKCNoStorageModule    errKCNoStorageModule
+-25311 errKCKeySizeNotAllowed  errKCKeySizeNotAllowed
+-25310 errKCWrongKCVersion     errKCWrongKCVersion
+-25309 errKCReadOnlyAttr       errKCReadOnlyAttr
+-25308 errKCInteractionNotAllowed      errKCInteractionNotAllowed
+-25307 errKCNoDefaultKeychain  errKCNoDefaultKeychain
+-25306 errKCNoSuchClass        errKCNoSuchClass
+-25305 errKCInvalidSearchRef   errKCInvalidSearchRef
+-25304 errKCInvalidItemRef     errKCInvalidItemRef
+-25303 errKCNoSuchAttr errKCNoSuchAttr
+-25302 errKCDataTooLarge       errKCDataTooLarge
+-25301 errKCBufferTooSmall     errKCBufferTooSmall
+-25300 errKCItemNotFound       errKCItemNotFound
+-25299 errKCDuplicateItem      errKCDuplicateItem
+-25298 errKCInvalidCallback    errKCInvalidCallback
+-25297 errKCDuplicateCallback  errKCDuplicateCallback
+-25296 errKCDuplicateKeychain  errKCDuplicateKeychain
+-25295 errKCInvalidKeychain    errKCInvalidKeychain
+-25294 errKCNoSuchKeychain     errKCNoSuchKeychain
+-25293 errKCAuthFailed errKCAuthFailed
+-25292 errKCReadOnly   errKCReadOnly
+-25291 errKCNotAvailable       errKCNotAvailable
+-25280 printerStatusOpCodeNotSupportedErr      printerStatusOpCodeNotSupportedErr
+-22016 kTXNATSUIIsNotInstalledErr      kTXNATSUIIsNotInstalledErr
+-22015 kTXNDataTypeNotAllowedErr       kTXNDataTypeNotAllowedErr
+-22014 kTXNCopyNotAllowedInEchoModeErr kTXNCopyNotAllowedInEchoModeErr
+-22013 kTXNCannotTurnTSMOffWhenUsingUnicodeErr kTXNCannotTurnTSMOffWhenUsingUnicodeErr
+-22012 kTXNAlreadyInitializedErr       kTXNAlreadyInitializedErr
+-22011 kTXNInvalidRunIndex     kTXNInvalidRunIndex
+-22010 kTXNSomeOrAllTagsInvalidForRunErr       kTXNSomeOrAllTagsInvalidForRunErr
+-22009 kTXNAttributeTagInvalidForRunErr        dataValue is set to this per invalid tag
+-22008 kTXNNoMatchErr  kTXNNoMatchErr
+-22007 kTXNRunIndexOutofBoundsErr      kTXNRunIndexOutofBoundsErr
+-22006 kTXNCannotSetAutoIndentErr      kTXNCannotSetAutoIndentErr
+-22005 kTXNBadDefaultFileTypeWarning   kTXNBadDefaultFileTypeWarning
+-22004 kTXNUserCanceledOperationErr    kTXNUserCanceledOperationErr
+-22003 kTXNIllegalToCrossDataBoundariesErr     kTXNIllegalToCrossDataBoundariesErr
+-22002 kTXNInvalidFrameIDErr   kTXNInvalidFrameIDErr
+-22001 kTXNCannotAddFrameErr   kTXNCannotAddFrameErr
+-22000 kTXNEndIterationErr     kTXNEndIterationErr
+-20002 invalidIndexErr The recordIndex parameter is not valid.
+-20001 recordDataTooBigErr     The record data is bigger than buffer size (1024 bytes).
+-20000 unknownInsertModeErr    There is no such an insert mode.
+-13950 kHIDBaseError   kHIDBaseError
+-13949 kHIDNullStateErr        kHIDNullStateErr
+-13948 kHIDBufferTooSmallErr   kHIDBufferTooSmallErr
+-13947 kHIDValueOutOfRangeErr  kHIDValueOutOfRangeErr
+-13946 kHIDUsageNotFoundErr    kHIDUsageNotFoundErr
+-13945 kHIDNotValueArrayErr    kHIDNotValueArrayErr
+-13944 kHIDInvalidPreparsedDataErr     kHIDInvalidPreparsedDataErr
+-13943 kHIDIncompatibleReportErr       kHIDIncompatibleReportErr
+-13942 kHIDBadLogPhysValuesErr kHIDBadLogPhysValuesErr
+-13941 kHIDInvalidReportTypeErr        kHIDInvalidReportTypeErr
+-13940 kHIDInvalidReportLengthErr      kHIDInvalidReportLengthErr
+-13939 kHIDNullPointerErr      kHIDNullPointerErr
+-13938 kHIDBadParameterErr     kHIDBadParameterErr
+-13937 kHIDNotEnoughMemoryErr  kHIDNotEnoughMemoryErr
+-13936 kHIDEndOfDescriptorErr  kHIDEndOfDescriptorErr
+-13935 kHIDUsagePageZeroErr    kHIDUsagePageZeroErr
+-13934 kHIDBadLogicalMinimumErr        kHIDBadLogicalMinimumErr
+-13933 kHIDBadLogicalMaximumErr        kHIDBadLogicalMaximumErr
+-13932 kHIDInvertedLogicalRangeErr     kHIDInvertedLogicalRangeErr
+-13931 kHIDInvertedPhysicalRangeErr    kHIDInvertedPhysicalRangeErr
+-13930 kHIDUnmatchedUsageRangeErr      kHIDUnmatchedUsageRangeErr
+-13929 kHIDInvertedUsageRangeErr       kHIDInvertedUsageRangeErr
+-13928 kHIDUnmatchedStringRangeErr     kHIDUnmatchedStringRangeErr
+-13927 kHIDUnmatchedDesignatorRangeErr kHIDUnmatchedDesignatorRangeErr
+-13926 kHIDReportSizeZeroErr   kHIDReportSizeZeroErr
+-13925 kHIDReportCountZeroErr  kHIDReportCountZeroErr
+-13924 kHIDReportIDZeroErr     kHIDReportIDZeroErr
+-13923 kHIDInvalidRangePageErr kHIDInvalidRangePageErr
+-13910 kHIDDeviceNotReady      The device is still initializing, try again later
+-13909 kHIDVersionIncompatibleErr      kHIDVersionIncompatibleErr
+-13887 debuggingNoMatchErr     debugging component or option not found at this index
+-13886 debuggingNoCallbackErr  debugging component has no callback
+-13885 debuggingInvalidNameErr componentName or optionName is invalid (NULL)
+-13884 debuggingInvalidOptionErr       optionSelectorNum is not registered
+-13883 debuggingInvalidSignatureErr    componentSignature not registered
+-13882 debuggingDuplicateOptionErr     optionSelectorNum already registered
+-13881 debuggingDuplicateSignatureErr  componentSignature already registered
+-13880 debuggingExecutionContextErr    routine cannot be called at this time
+-13020 kNoSuchPowerSource      kNoSuchPowerSource
+-13014 kProcessorTempRoutineRequiresMPLib2     kProcessorTempRoutineRequiresMPLib2
+-13013 kCantReportProcessorTemperatureErr      kCantReportProcessorTemperatureErr
+-13010 kPowerMgtRequestDenied  kPowerMgtRequestDenied
+-13009 kPowerMgtMessageNotHandled      kPowerMgtMessageNotHandled
+-13008 kPowerHandlerNotFoundForProcErr kPowerHandlerNotFoundForProcErr
+-13007 kPowerHandlerNotFoundForDeviceErr       kPowerHandlerNotFoundForDeviceErr
+-13006 kPowerHandlerExistsForDeviceErr kPowerHandlerExistsForDeviceErr
+-13005 pmRecvEndErr    during receive, pmgr did not finish hs configured for this connection
+-13004 pmRecvStartErr  during receive, pmgr did not start hs
+-13003 pmSendEndErr    during send, pmgr did not finish hs
+-13002 pmSendStartErr  during send, pmgr did not start hs
+-13001 pmReplyTOErr    Timed out waiting for reply
+-13000 pmBusyErr       Power Mgr never ready to start handshake
+-11005 pictureDataErr  the picture data was invalid
+-11004 colorsRequestedErr      the number of colors requested was illegal
+-11003 cantLoadPickMethodErr   unable to load the custom pick proc
+-11002 pictInfoVerbErr the passed verb was invalid
+-11001 pictInfoIDErr   the internal consistancy check for the PictInfoID is wrong
+-11000 pictInfoVersionErr      wrong version of the PictInfo structure
+-10116 telNotEnoughdspBW       not enough real-time for allocation
+-10115 telBadSampleRate        incompatible sample rate
+-10114 telBadSWErr     Software not installed properly
+-10113 telDetAlreadyOn detection is already turned on
+-10112 telAutoAnsNotOn autoAnswer in not turned on
+-10111 telValidateFailed       telValidate failed
+-10110 telBadProcID    invalid procID
+-10109 telDeviceNotFound       device not found
+-10108 telBadCodeResource      code resource not found
+-10107 telInitFailed   initialization failed
+-10106 telNoCommFolder Communications/Extensions \80 not found
+-10103 telUnknownErr   unable to set config
+-10102 telNoSuchTool   unable to find tool with name specified
+-10091 telBadFunction  bad msgCode specified
+-10090 telPBErr        parameter block error, bad format
+-10082 telCANotDeflectable     CA not "deflectable"
+-10081 telCANotRejectable      CA not "rejectable"
+-10080 telCANotAcceptable      CA not "acceptable"
+-10072 telTermNotOpen  terminal not opened via TELOpenTerm
+-10071 telStillNeeded  terminal driver still needed by someone else
+-10070 telAlreadyOpen  terminal already open
+-10064 telNoCallbackRef        no call back reference was specified, but is required
+-10063 telDisplayModeNotSupp   display mode not supported by tool
+-10062 telBadDisplayMode       bad display mode specified
+-10061 telFwdTypeNotSupp       forward type not supported by tool
+-10060 telDNTypeNotSupp        DN type not supported by tool
+-10059 telBadRate      bad rate specified
+-10058 telBadBearerType        bad bearerType specified
+-10057 telBadSelect    unable to select or deselect DN
+-10056 telBadParkID    bad park id specified
+-10055 telBadPickupGroupID     bad pickup group ID specified
+-10054 telBadFwdType   bad fwdType specified
+-10053 telBadFeatureID bad feature ID specified
+-10052 telBadIntercomID        bad intercom ID specified
+-10051 telBadPageID    bad page ID specified
+-10050 telBadDNType    DN type invalid
+-10047 telConfLimitExceeded    attempt to exceed switch conference limits
+-10046 telCBErr        call back feature not set previously
+-10045 telTransferRej  transfer request rejected
+-10044 telTransferErr  transfer not prepared
+-10043 telConfRej      conference request was rejected
+-10042 telConfErr      conference was not prepared
+-10041 telConfNoLimit  no limit was specified but required
+-10040 telConfLimitErr limit specified is too high for this configuration
+-10033 telFeatNotSupp  feature program call not supported by this tool
+-10032 telFeatActive   feature already active
+-10031 telFeatNotAvail feature subscribed but not available
+-10030 telFeatNotSub   feature not subscribed
+-10025 errAEPropertiesClash    illegal combination of properties settings for Set Data, make new, or duplicate
+-10024 errAECantPutThatThere   in make new, duplicate, etc. class can't be an element of container
+-10023 errAENotAnEnumMember    enumerated value in SetData is not allowed for this property
+-10022 telIntExtNotSupp        internal external type not supported by this tool
+-10021 telBadIntExt    bad internal external error
+-10020 telStateNotSupp device state not supported by tool
+-10019 telBadStateErr  bad device state specified
+-10018 telIndexNotSupp index not supported by this tool
+-10017 telBadIndex     bad index specified
+-10016 telAPattNotSupp alerting pattern not supported by tool
+-10015 telBadAPattErr  bad alerting pattern specified
+-10014 telVTypeNotSupp volume type not supported by this tool
+-10013 telBadVTypeErr  bad volume type error
+-10012 telBadLevelErr  bad volume level setting
+-10011 telHTypeNotSupp hook type not supported by this tool
+-10010 telBadHTypeErr  bad hook type specified
+-10009 errAECantSupplyType     errAECantSupplyType
+-10008 telNoOpenErr    unable to open terminal
+-10007 telNoMemErr     no memory to allocate handle
+-10006 errOSACantAssign        Signaled when an object cannot be set in a container.
+-10005 telBadProcErr   bad msgProc specified
+-10004 telBadHandErr   bad handle specified
+-10003 OSAIllegalAssign        Signaled when an object can never be set in a container
+-10002 telBadDNErr     TELDNHandle not found or invalid
+-10001 telBadTermErr   invalid TELHandle or handle not found
+-10000 errAEEventFailed        errAEEventFailed
+-9999  cannotMoveAttachedController    cannotMoveAttachedController
+-9998  controllerHasFixedHeight        controllerHasFixedHeight
+-9997  cannotSetWidthOfAttachedController      cannotSetWidthOfAttachedController
+-9996  controllerBoundsNotExact        controllerBoundsNotExact
+-9995  editingNotAllowed       editingNotAllowed
+-9994  badControllerHeight     badControllerHeight
+-9408  deviceCantMeetRequest   deviceCantMeetRequest
+-9407  seqGrabInfoNotAvailable seqGrabInfoNotAvailable
+-9406  badSGChannel    badSGChannel
+-9405  couldntGetRequiredComponent     couldntGetRequiredComponent
+-9404  notEnoughDiskSpaceToGrab        notEnoughDiskSpaceToGrab
+-9403  notEnoughMemoryToGrab   notEnoughMemoryToGrab
+-9402  cantDoThatInCurrentMode cantDoThatInCurrentMode
+-9401  grabTimeComplete        grabTimeComplete
+-9400  noDeviceForChannel      noDeviceForChannel
+-9109  kNoCardBusCISErr        No valid CIS exists for this CardBus card
+-9108  kNotZVCapableErr        This socket does not support Zoomed Video
+-9107  kCardPowerOffErr        Power to the card has been turned off
+-9106  kAttemptDupCardEntryErr The Enabler was asked to create a duplicate card entry
+-9105  kAlreadySavedStateErr   The state has been saved on previous call
+-9104  kTooManyIOWindowsErr    device requested more than one I/O window
+-9103  kNotReadyErr    PC Card failed to go ready
+-9102  kClientRequestDenied    CS Clients should return this code inorder to
+-9101  kNoCompatibleNameErr    There is no compatible driver name for this device
+-9100  kNoEnablerForCardErr    No Enablers were found that can support the card
+-9099  kNoCardEnablersFoundErr No Enablers were found
+-9098  kUnsupportedCardErr     Card not supported by generic enabler
+-9097  kNoClientTableErr       The client table has not be initialized yet
+-9096  kNoMoreInterruptSlotsErr        All internal Interrupt slots are in use
+-9095  kNoMoreTimerClientsErr  All timer callbacks are in use
+-9094  kNoIOWindowRequestedErr Request I/O window before calling configuration
+-9093  kBadCustomIFIDErr       Custom interface ID is invalid
+-9092  kBadTupleDataErr        Data in tuple is invalid
+-9091  kInvalidCSClientErr     Card Services ClientID is not registered
+-9090  kUnsupportedVsErr       Unsupported Voltage Sense
+-9089  kInvalidDeviceNumber    kInvalidDeviceNumber
+-9088  kPostCardEventErr       _PCCSLPostCardEvent failed and dropped an event
+-9087  kCantConfigureCardErr   kCantConfigureCardErr
+-9086  kPassCallToChainErr     kPassCallToChainErr
+-9085  kCardBusCardErr kCardBusCardErr
+-9084  k16BitCardErr   k16BitCardErr
+-9083  kBadDeviceErr   kBadDeviceErr
+-9082  kBadLinkErr     kBadLinkErr
+-9081  kInvalidRegEntryErr     kInvalidRegEntryErr
+-9080  kNoCardSevicesSocketsErr        kNoCardSevicesSocketsErr
+-9079  kOutOfResourceErr       Card Services has exhausted the resource
+-9078  kNoMoreItemsErr there are no more of the requested item
+-9077  kInUseErr       requested resource is being used by a client
+-9076  kConfigurationLockedErr a configuration has already been locked
+-9075  kWriteProtectedErr      media is write-protected
+-9074  kBusyErr        unable to process request at this time - try later
+-9073  kUnsupportedModeErr     mode is not supported
+-9072  kUnsupportedFunctionErr function is not supported by this implementation
+-9071  kNoCardErr      no PC card in the socket
+-9070  kGeneralFailureErr      an undefined error has occurred
+-9069  kWriteFailureErr        unable to complete write request
+-9068  kReadFailureErr unable to complete read request
+-9067  kBadSpeedErr    specified speed is unavailable
+-9066  kBadCISErr      CIS on card is invalid
+-9065  kBadHandleErr   clientHandle is invalid
+-9064  kBadArgsErr     values in argument packet are invalid
+-9063  kBadArgLengthErr        ArgLength argument is invalid
+-9062  kBadWindowErr   specified window is invalid
+-9061  kBadVppErr      specified Vpp1 or Vpp2 power level index is invalid
+-9060  kBadVccErr      specified Vcc power level index is invalid
+-9059  kBadTypeErr     specified window or interface type is invalid
+-9058  kBadSocketErr   specified logical or physical socket number is invalid
+-9057  kBadSizeErr     specified size is invalid
+-9056  kBadPageErr     specified page is invalid
+-9055  kBadOffsetErr   specified PC card memory array offset is invalid
+-9054  kBadIRQErr      specified IRQ level is invalid
+-9053  kBadEDCErr      specified EDC generator specified is invalid
+-9052  kBadBaseErr     specified base system memory address is invalid
+-9051  kBadAttributeErr        specified attributes field value is invalid
+-9050  kBadAdapterErr  invalid adapter number
+-8992  codecOffscreenFailedPleaseRetryErr      codecOffscreenFailedPleaseRetryErr
+-8991  lockPortBitsWrongGDeviceErr     lockPortBitsWrongGDeviceErr
+-8990  directXObjectAlreadyExists      directXObjectAlreadyExists
+-8989  codecDroppedFrameErr    returned from ImageCodecDrawBand
+-8988  codecOffscreenFailedErr codecOffscreenFailedErr
+-8987  codecNeedAccessKeyErr   codec needs password in order to decompress
+-8986  codecParameterDialogConfirm     codecParameterDialogConfirm
+-8985  lockPortBitsSurfaceLostErr      lockPortBitsSurfaceLostErr
+-8984  lockPortBitsBadPortErr  lockPortBitsBadPortErr
+-8983  lockPortBitsWindowClippedErr    lockPortBitsWindowClippedErr
+-8982  lockPortBitsWindowResizedErr    lockPortBitsWindowResizedErr
+-8981  lockPortBitsWindowMovedErr      lockPortBitsWindowMovedErr
+-8980  lockPortBitsBadSurfaceErr       lockPortBitsBadSurfaceErr
+-8979  codecNeedToFlushChainErr        codecNeedToFlushChainErr
+-8978  codecDisabledErr        codec disabled itself -- pass codecFlagReenable to reset
+-8977  codecNoMemoryPleaseWaitErr      codecNoMemoryPleaseWaitErr
+-8976  codecNothingToBlitErr   codecNothingToBlitErr
+-8975  codecCantQueueErr       codecCantQueueErr
+-8974  codecCantWhenErr        codecCantWhenErr
+-8973  codecOpenErr    codecOpenErr
+-8972  codecConditionErr       codecConditionErr
+-8971  codecExtensionNotFoundErr       codecExtensionNotFoundErr
+-8970  codecDataVersErr        codecDataVersErr
+-8969  codecBadDataErr codecBadDataErr
+-8968  codecWouldOffscreenErr  codecWouldOffscreenErr
+-8967  codecAbortErr   codecAbortErr
+-8966  codecSpoolErr   codecSpoolErr
+-8965  codecImageBufErr        codecImageBufErr
+-8964  codecScreenBufErr       codecScreenBufErr
+-8963  codecSizeErr    codecSizeErr
+-8962  codecUnimpErr   codecUnimpErr
+-8961  noCodecErr      noCodecErr
+-8960  codecErr        codecErr
+-8852  kIllegalClockValueErr   kIllegalClockValueErr
+-8851  kUTCOverflowErr kUTCOverflowErr
+-8850  kUTCUnderflowErr        kUTCUnderflowErr
+-8809  kATSULastErr    The last ATSUI error code.
+-8808  kATSULineBreakInWord    This is not an error code but is returned by ATSUBreakLine to
+-8807  kATSUCoordinateOverflowErr      Used to indicate the coordinates provided to an ATSUI routine caused
+-8806  kATSUNoFontScalerAvailableErr   Used when no font scaler is available for the font passed
+-8805  kATSUNoFontCmapAvailableErr     Used when no CMAP table can be accessed or synthesized for the
+-8804  kATSULowLevelErr        Used when an error was encountered within the low level ATS
+-8803  kATSUQuickDrawTextErr   Used when QuickDraw Text encounters an error rendering or measuring
+-8802  kATSUNoStyleRunsAssignedErr     Used when an attempt was made to measure, highlight or draw
+-8801  kATSUNotSetErr  Used when the client attempts to retrieve an attribute,
+-8800  kATSUInvalidCacheErr    Used when an attempt was made to read in style data
+-8799  kATSUInvalidAttributeTagErr     Used when an attempt was made to use a tag value that
+-8798  kATSUInvalidAttributeSizeErr    Used when an attempt was made to use an attribute with a
+-8797  kATSUInvalidAttributeValueErr   Used when an attempt was made to use an attribute with
+-8796  kATSUInvalidFontErr     Used when an attempt was made to use an invalid font ID.
+-8795  kATSUNoCorrespondingFontErr     This value is retrned by font ID conversion
+-8794  kATSUFontsNotMatched    This value is returned by ATSUMatchFontsToText()
+-8793  kATSUFontsMatched       This is not an error code but is returned by
+-8792  kATSUInvalidTextRangeErr        An attempt was made to extract information
+-8791  kATSUInvalidStyleErr    An attempt was made to use a ATSUStyle which
+-8790  kATSUInvalidTextLayoutErr       An attempt was made to use a ATSUTextLayout
+-8785  kTECOutputBufferFullStatus      output buffer has no room for conversion of next input text element (partial conversion)
+-8784  kTECNeedFlushStatus     kTECNeedFlushStatus
+-8783  kTECUsedFallbacksStatus kTECUsedFallbacksStatus
+-8771  kTECItemUnavailableErr  item (e.g. name) not available for specified region (& encoding if relevant)
+-8770  kTECGlobalsUnavailableErr       globals have already been deallocated (premature TERM)
+-8769  unicodeChecksumErr      unicodeChecksumErr
+-8768  unicodeNoTableErr       unicodeNoTableErr
+-8767  unicodeVariantErr       unicodeVariantErr
+-8766  unicodeFallbacksErr     unicodeFallbacksErr
+-8765  unicodePartConvertErr   unicodePartConvertErr
+-8764  unicodeBufErr   unicodeBufErr
+-8763  unicodeCharErr  unicodeCharErr
+-8762  unicodeElementErr       unicodeElementErr
+-8761  unicodeNotFoundErr      unicodeNotFoundErr
+-8760  unicodeTableFormatErr   unicodeTableFormatErr
+-8759  unicodeDirectionErr     unicodeDirectionErr
+-8758  unicodeContextualErr    unicodeContextualErr
+-8757  unicodeTextEncodingDataErr      unicodeTextEncodingDataErr
+-8756  kTECDirectionErr        direction stack overflow, etc.
+-8755  kTECIncompleteElementErr        text element may be incomplete or is too long for internal buffers
+-8754  kTECUnmappableElementErr        kTECUnmappableElementErr
+-8753  kTECPartialCharErr      input buffer ends in the middle of a multibyte character, conversion stopped
+-8752  kTECBadTextRunErr       kTECBadTextRunErr
+-8751  kTECArrayFullErr        supplied name buffer or TextRun, TextEncoding, or UnicodeMapping array is too small
+-8750  kTECBufferBelowMinimumSizeErr   output buffer too small to allow processing of first input text element
+-8749  kTECNoConversionPathErr kTECNoConversionPathErr
+-8748  kTECCorruptConverterErr invalid converter object reference
+-8747  kTECTableFormatErr      kTECTableFormatErr
+-8746  kTECTableChecksumErr    kTECTableChecksumErr
+-8745  kTECMissingTableErr     kTECMissingTableErr
+-8740  kTextUndefinedElementErr        text conversion errors
+-8739  kTextMalformedInputErr  in DBCS, for example, high byte followed by invalid low byte
+-8738  kTextUnsupportedEncodingErr     specified encoding not supported for this operation
+-7127  dcmBufferOverflowErr    data is larger than buffer size
+-7126  dcmIterationCompleteErr no more item in iterator
+-7124  dcmBadFeatureErr        invalid AccessMethod feature
+-7122  dcmNoAccessMethodErr    no such AccessMethod
+-7121  dcmProtectedErr need keyword to use dictionary
+-7119  dcmBadPropertyErr       no such property exist
+-7118  dcmBadFindMethodErr     no such find method supported
+-7117  dcmBadDataSizeErr       too big data size
+-7116  dcmTooManyKeyErr        too many key field
+-7115  dcmBadKeyErr    bad key information
+-7113  dcmNoFieldErr   no such field exist
+-7112  dcmBadFieldTypeErr      no such field type supported
+-7111  dcmBadFieldInfoErr      incomplete information
+-7110  dcmNecessaryFieldErr    lack required/identify field
+-7109  dcmDupRecordErr same record already exist
+-7108  dcmNoRecordErr  no such record
+-7107  dcmBlockFullErr dictionary block full
+-7105  dcmDictionaryBusyErr    dictionary is busy
+-7104  dcmDictionaryNotOpenErr dictionary not opened
+-7103  dcmPermissionErr        invalid permission
+-7102  dcmBadDictionaryErr     invalid dictionary
+-7101  dcmNotDictionaryErr     not dictionary
+-7100  dcmParamErr     bad parameter
+-7000  laEngineNotFoundErr     can't find the engine
+-6999  laPropertyErr   Error in properties
+-6998  kUSBUnknownDeviceErr    device ref not recognised
+-6997  laPropertyIsReadOnlyErr the property is read only
+-6996  laPropertyUnknownErr    the property is unknown to this environment
+-6995  laPropertyValueErr      Invalid property value
+-6994  laDictionaryTooManyErr  too many dictionaries
+-6993  laDictionaryUnknownErr  can't use this dictionary with this environment
+-6992  laDictionaryNotOpenedErr        the dictionary is not opened
+-6991  laTextOverFlowErr       text is too long
+-6990  laFailAnalysisErr       analysis failed
+-6989  laNoMoreMorphemeErr     nothing to read
+-6988  laInvalidPathErr        path is not correct
+-6987  kUSBNotHandled  Notification was not handled   (same as NotFound)
+-6986  laEnvironmentNotFoundErr        can't fint the specified environment
+-6985  laEnvironmentBusyErr    specified environment is used
+-6984  laTooSmallBufferErr     output buffer is too small to store any result
+-6983  kUSBFlagsError  Unused flags not zeroed
+-6982  kUSBAbortedError        Pipe aborted
+-6981  kUSBNoBandwidthError    Not enough bandwidth available
+-6980  kUSBPipeIdleError       Pipe is Idle, it will not accept transactions
+-6979  kUSBPipeStalledError    Pipe has stalled, error needs to be cleared
+-6978  kUSBUnknownInterfaceErr Interface ref not recognised
+-6977  kUSBDeviceBusy  Device is already being configured
+-6976  kUSBDevicePowerProblem  Device has a power problem
+-6975  kUSBInvalidBuffer       bad buffer, usually nil
+-6974  kUSBDeviceSuspended     Device is suspended
+-6973  kUSBDeviceNotSuspended  device is not suspended for resume
+-6972  kUSBDeviceDisconnected  Disconnected during suspend or reset
+-6971  kUSBTimedOut    Transaction timed out.
+-6970  kUSBQueueAborted        Pipe zero stall cleared.
+-6969  kUSBPortDisabled        The port you are attached to is disabled, use USBDeviceReset.
+-6950  kUSBBadDispatchTable    Improper driver dispatch table
+-6949  kUSBUnknownNotification Notification type not defined
+-6948  kUSBQueueFull   Internal queue maxxed
+-6916  kUSBLinkErr     kUSBLinkErr
+-6915  kUSBCRCErr      Pipe stall, bad CRC
+-6914  kUSBBitstufErr  Pipe stall, bitstuffing
+-6913  kUSBDataToggleErr       Pipe stall, Bad data toggle
+-6912  kUSBEndpointStallErr    Device didn't understand
+-6911  kUSBNotRespondingErr    Pipe stall, No device, device hung
+-6910  kUSBPIDCheckErr Pipe stall, PID CRC error
+-6909  kUSBWrongPIDErr Pipe stall, Bad or wrong PID
+-6908  kUSBOverRunErr  Packet too large or more data than buffer
+-6907  kUSBUnderRunErr Less data than buffer
+-6906  kUSBRes1Err     kUSBRes1Err
+-6905  kUSBRes2Err     kUSBRes2Err
+-6904  kUSBBufOvrRunErr        Host hardware failure on data in, PCI busy?
+-6903  kUSBBufUnderRunErr      Host hardware failure on data out, PCI busy?
+-6902  kUSBNotSent1Err Transaction not sent
+-6901  kUSBNotSent2Err Transaction not sent
+-6232  kDMFoundErr     Did not proceed because we found an item
+-6231  kDMMainDisplayCannotMoveErr     Trying to move main display (or a display mirrored to it)
+-6230  kDMDisplayAlreadyInstalledErr   Attempt to add an already installed display.
+-6229  kDMDisplayNotFoundErr   Could not find item (will someday remove).
+-6228  kDMDriverNotDisplayMgrAwareErr  Video Driver does not support display manager.
+-6227  kDMSWNotInitializedErr  Required software not initialized (eg windowmanager or display mgr).
+-6226  kSysSWTooOld    Missing critical pieces of System Software.
+-6225  kDMMirroringNotOn       Returned by all calls that need mirroring to be on to do their thing.
+-6224  kDMCantBlock    Mirroring is already on, canÕt Block now (call DMUnMirror() first).
+-6223  kDMMirroringBlocked     DMBlockMirroring() has been called.
+-6222  kDMWrongNumberOfDisplays        Can only handle 2 displays for now.
+-6221  kDMMirroringOnAlready   Returned by all calls that need mirroring to be off to do their thing.
+-6220  kDMGenErr       Unexpected Error
+-6150  kQTSSUnknownErr kQTSSUnknownErr
+-5753  collectionVersionErr    collectionVersionErr
+-5752  collectionIndexRangeErr collectionIndexRangeErr
+-5751  collectionItemNotFoundErr       collectionItemNotFoundErr
+-5750  collectionItemLockedErr collectionItemLockedErr
+-5699  kNavMissingKindStringErr        kNavMissingKindStringErr
+-5698  kNavInvalidCustomControlMessageErr      kNavInvalidCustomControlMessageErr
+-5697  kNavCustomControlMessageFailedErr       kNavCustomControlMessageFailedErr
+-5696  kNavInvalidSystemConfigErr      kNavInvalidSystemConfigErr
+-5640  dialogNoTimeoutErr      dialogNoTimeoutErr
+-5623  menuInvalidErr  menu is invalid
+-5622  menuItemNotFoundErr     specified menu item wasn't found
+-5621  menuUsesSystemDefErr    GetMenuDefinition failed because the menu uses the system MDEF
+-5620  menuNotFoundErr specified menu or menu ID wasn't found
+-5610  errWindowNotFound       returned from FindWindowOfClass
+-5609  errFloatingWindowsNotInitialized        called HideFloatingWindows or ShowFloatingWindows without calling InitFloatingWindows
+-5608  errWindowsAlreadyInitialized    tried to call InitFloatingWindows twice, or called InitWindows and then floating windows
+-5607  errUserWantsToDragWindow        if returned from TrackWindowProxyDrag, you should call DragWindow on the window
+-5606  errCorruptWindowDescription     tried to load a corrupt window description (size or version fields incorrect)
+-5605  errUnrecognizedWindowClass      tried to create a window with a bad WindowClass
+-5604  errWindowPropertyNotFound       tried to get a nonexistent property
+-5603  errInvalidWindowProperty        tried to access a property tag with private creator
+-5602  errWindowDoesNotHaveProxy       tried to do something requiring a proxy to a window which doesnÕt have a proxy
+-5601  errUnsupportedWindowAttributesForClass  tried to create a window with WindowAttributes not supported by the WindowClass
+-5600  errInvalidWindowPtr     tried to pass a bad WindowRef argument
+-5553  gestaltLocationErr      gestalt function ptr wasn't in sysheap
+-5552  gestaltDupSelectorErr   tried to add an entry that already existed
+-5551  gestaltUndefSelectorErr undefined selector was passed to Gestalt
+-5550  gestaltUnknownErr       value returned if Gestalt doesn't know the answer
+-5502  envVersTooBig   Version bigger than call can handle
+-5501  envBadVers      Version non-positive
+-5500  envNotPresent   returned by glue.
+-5421  qtsAddressBusyErr       qtsAddressBusyErr
+-5420  qtsConnectionFailedErr  qtsConnectionFailedErr
+-5408  qtsTimeoutErr   qtsTimeoutErr
+-5407  qtsUnknownValueErr      qtsUnknownValueErr
+-5406  qtsTooMuchDataErr       qtsTooMuchDataErr
+-5405  qtsUnsupportedFeatureErr        qtsUnsupportedFeatureErr
+-5404  qtsUnsupportedRateErr   qtsUnsupportedRateErr
+-5403  qtsUnsupportedDataTypeErr       qtsUnsupportedDataTypeErr
+-5402  qtsBadDataErr   something is wrong with the data
+-5401  qtsBadStateErr  qtsBadStateErr
+-5400  qtsBadSelectorErr       qtsBadSelectorErr
+-5388  errIAEndOfTextRun       errIAEndOfTextRun
+-5387  errIATextExtractionErr  errIATextExtractionErr
+-5386  errIAInvalidDocument    errIAInvalidDocument
+-5385  errIACanceled   errIACanceled
+-5384  errIABufferTooSmall     errIABufferTooSmall
+-5383  errIANoMoreItems        errIANoMoreItems
+-5382  errIAParamErr   errIAParamErr
+-5381  errIAAllocationErr      errIAAllocationErr
+-5380  errIAUnknownErr errIAUnknownErr
+-5362  hrUnableToResizeHandleErr       hrUnableToResizeHandleErr
+-5361  hrMiscellaneousExceptionErr     hrMiscellaneousExceptionErr
+-5360  hrHTMLRenderingLibNotInstalledErr       hrHTMLRenderingLibNotInstalledErr
+-5253  errCannotUndo   errCannotUndo
+-5252  errNonContiuousAttribute        errNonContiuousAttribute
+-5251  errUnknownElement       errUnknownElement
+-5250  errReadOnlyText errReadOnlyText
+-5249  errEmptyScrap   errEmptyScrap
+-5248  errNoHiliteText errNoHiliteText
+-5247  errOffsetNotOnElementBounday    errOffsetNotOnElementBounday
+-5246  errInvalidRange errInvalidRange
+-5245  errIteratorReachedEnd   errIteratorReachedEnd
+-5244  errEngineNotFound       errEngineNotFound
+-5243  errAlreadyInImagingMode errAlreadyInImagingMode
+-5242  errNotInImagingMode     errNotInImagingMode
+-5241  errMarginWilllNotFit    errMarginWilllNotFit
+-5240  errUnknownAttributeTag  errUnknownAttributeTag
+-5063  afpSameNodeErr  An Attempt was made to connect to a file server running on the same machine
+-5062  afpAlreadyMounted       The volume is already mounted
+-5061  afpCantMountMoreSrvre   The Maximum number of server connections has been reached
+-5060  afpBadDirIDType afpBadDirIDType
+-5048  afpCallNotAllowed       The server knows what you wanted to do, but won't let you do it just now
+-5047  afpAlreadyLoggedInErr   User has been authenticated but is already logged in from another machine (and that's not allowed on this server)
+-5046  afpPwdPolicyErr Password does not conform to servers password policy
+-5045  afpPwdNeedsChangeErr    The password needs to be changed
+-5044  afpInsideTrashErr       The folder being shared is inside the trash folder OR the shared folder is being moved into the trash folder
+-5043  afpInsideSharedErr      The folder being shared is inside a shared folder OR the folder contains a shared folder and is being moved into a shared folder
+-5042  afpPwdExpiredErr        The password being used is too old: this requires the user to change the password before log-in can continue
+-5041  afpPwdTooShortErr       The password being set is too short: there is a minimum length that must be met or exceeded
+-5040  afpPwdSameErr   Someone tried to change their password to the same password on a mantadory password change
+-5039  afpBadIDErr     afpBadIDErr
+-5038  afpSameObjectErr        afpSameObjectErr
+-5037  afpCatalogChanged       afpCatalogChanged
+-5036  afpDiffVolErr   afpDiffVolErr
+-5035  afpIDExists     afpIDExists
+-5034  afpIDNotFound   afpIDNotFound
+-5033  afpContainsSharedErr    the folder being shared contains a shared folder
+-5032  afpObjectLocked Object is M/R/D/W inhibited
+-5031  afpVolLocked    Volume is Read-Only
+-5030  afpIconTypeError        Icon size specified different from existing icon size
+-5029  afpDirNotFound  Unknown directory specified
+-5028  afpCantRename   AFPRename cannot rename volume
+-5027  afpServerGoingDown      Server is shutting down
+-5026  afpTooManyFilesOpen     Maximum open file count reached
+-5025  afpObjectTypeErr        File/Directory specified where Directory/File expected
+-5024  afpCallNotSupported     Unsupported AFP call was made
+-5023  afpUserNotAuth  No AFPLogin call has successfully been made for this session
+-5022  afpSessClosed   Session closed
+-5021  afpRangeOverlap Some or all of range already locked by same user
+-5020  afpRangeNotLocked       Tried to unlock range that was not locked by user
+-5019  afpParmErr      A specified parameter was out of allowable range
+-5018  afpObjectNotFound       Specified file or directory does not exist
+-5017  afpObjectExists Specified destination file or directory already exists
+-5016  afpNoServer     Server not responding
+-5015  afpNoMoreLocks  Maximum lock limit reached
+-5014  afpMiscErr      Unexpected error encountered during execution
+-5013  afpLockErr      Some or all of requested range is locked by another user
+-5012  afpItemNotFound Unknown UserName/UserID or missing comment/APPL entry
+-5011  afpFlatVol      Cannot create directory on specified volume
+-5010  afpFileBusy     Cannot delete an open file
+-5009  afpEofError     Read beyond logical end-of-file
+-5008  afpDiskFull     Insufficient free space on volume for operation
+-5007  afpDirNotEmpty  Cannot delete non-empty directory
+-5006  afpDenyConflict Specified open/deny modes conflict with current open modes
+-5005  afpCantMove     Move destination is offspring of source, or root was specified
+-5004  afpBitmapErr    Bitmap contained bits undefined for call
+-5003  afpBadVersNum   Unknown AFP protocol version number specified
+-5002  afpBadUAM       Unknown user authentication method specified
+-5001  afpAuthContinue Further information required to complete AFPLogin call
+-5000  afpAccessDenied Insufficient access privileges for operation
+-4999  illegalScrapFlavorSizeErr       illegalScrapFlavorSizeErr
+-4998  illegalScrapFlavorTypeErr       illegalScrapFlavorTypeErr
+-4997  illegalScrapFlavorFlagsErr      illegalScrapFlavorFlagsErr
+-4996  scrapFlavorSizeMismatchErr      scrapFlavorSizeMismatchErr
+-4995  scrapFlavorFlagsMismatchErr     scrapFlavorFlagsMismatchErr
+-4994  nilScrapFlavorDataErr   nilScrapFlavorDataErr
+-4993  noScrapPromiseKeeperErr noScrapPromiseKeeperErr
+-4992  scrapPromiseNotKeptErr  scrapPromiseNotKeptErr
+-4991  processStateIncorrectErr        processStateIncorrectErr
+-4990  badScrapRefErr  badScrapRefErr
+-4989  duplicateScrapFlavorErr duplicateScrapFlavorErr
+-4988  internalScrapErr        internalScrapErr
+-4960  coreFoundationUnknownErr        coreFoundationUnknownErr
+-4276  badRoutingSizeErr       badRoutingSizeErr
+-4275  routingNotFoundErr      routingNotFoundErr
+-4274  duplicateRoutingErr     duplicateRoutingErr
+-4273  invalidFolderTypeErr    invalidFolderTypeErr
+-4272  noMoreFolderDescErr     noMoreFolderDescErr
+-4271  duplicateFolderDescErr  duplicateFolderDescErr
+-4270  badFolderDescErr        badFolderDescErr
+-4217  cmCantGamutCheckError   Gammut checking not supported by this ColorWorld
+-4216  cmNamedColorNotFound    NamedColor not found
+-4215  cmCantCopyModifiedV1Profile     Illegal to copy version 1 profiles that have been modified
+-4214  cmRangeOverFlow Color conversion warning that some output color values over/underflowed and were clipped
+-4213  cmInvalidProfileComment Bad Profile comment during drawpicture
+-4212  cmNoGDevicesError       Begin/End Matching -- no gdevices available
+-4211  cmInvalidDstMap Destination pix/bit map was invalid
+-4210  cmInvalidSrcMap Source pix/bit map was invalid
+-4209  cmInvalidColorSpace     Profile colorspace does not match bitmap type
+-4208  cmErrIncompatibleProfile        Other ColorSync Errors
+-4207  cmSearchError   cmSearchError
+-4206  cmInvalidSearch Bad Search Handle
+-4205  cmInvalidProfileLocation        Operation not supported for this profile location
+-4204  cmInvalidProfile        A Profile must contain a 'cs1 ' tag to be valid
+-4203  cmFatalProfileErr       cmFatalProfileErr
+-4202  cmCantDeleteElement     cmCantDeleteElement
+-4201  cmIndexRangeErr Tag index out of range
+-4200  kNSLInitializationFailed        UNABLE TO INITIALIZE THE MANAGER!!!!! DO NOT CONTINUE!!!!
+-4199  kNSLNotInitialized      kNSLNotInitialized
+-4198  kNSLInsufficientSysVer  kNSLInsufficientSysVer
+-4197  kNSLInsufficientOTVer   kNSLInsufficientOTVer
+-4196  kNSLNoElementsInList    kNSLNoElementsInList
+-4195  kNSLBadReferenceErr     kNSLBadReferenceErr
+-4194  kNSLBadServiceTypeErr   kNSLBadServiceTypeErr
+-4193  kNSLBadDataTypeErr      kNSLBadDataTypeErr
+-4192  kNSLBadNetConnection    kNSLBadNetConnection
+-4191  kNSLNoSupportForService kNSLNoSupportForService
+-4190  kNSLInvalidPluginSpec   kNSLInvalidPluginSpec
+-4189  kNSLRequestBufferAlreadyInList  kNSLRequestBufferAlreadyInList
+-4188  kNSLNoContextAvailable  (ContinueLookup function ptr invalid)
+-4187  kNSLBufferTooSmallForData       (Client buffer too small for data from plugin)
+-4186  kNSLCannotContinueLookup        (Can't continue lookup; error or bad state)
+-4185  kNSLBadClientInfoPtr    (nil ClientAsyncInfoPtr; no reference available)
+-4184  kNSLNullListPtr (client is trying to add items to a nil list)
+-4183  kNSLBadProtocolTypeErr  (client is trying to add a null protocol type)
+-4182  kNSLPluginLoadFailed    (manager unable to load one of the plugins)
+-4181  kNSLNoPluginsFound      (manager didn't find any valid plugins to load)
+-4180  kNSLSearchAlreadyInProgress     (you can only have one ongoing search per clientRef)
+-4179  kNSLNoPluginsForSearch  (no plugins will respond to search request; bad protocol(s)?)
+-4178  kNSLNullNeighborhoodPtr (client passed a null neighborhood ptr)
+-4177  kNSLSomePluginsFailedToLoad     (one or more plugins failed to load, but at least one did load; this error isn't fatal)
+-4176  kNSLErrNullPtrError     kNSLErrNullPtrError
+-4175  kNSLNotImplementedYet   kNSLNotImplementedYet
+-4174  kNSLUILibraryNotAvailable       The NSL UI Library needs to be in the Extensions Folder
+-4173  kNSLNoCarbonLib kNSLNoCarbonLib
+-4172  kNSLBadURLSyntax        URL contains illegal characters
+-4171  kNSLSchedulerError      A custom thread routine encountered an error
+-4170  kNSL68kContextNotSupported      no 68k allowed
+-4009  noHelpForItem   noHelpForItem
+-4008  badProfileError badProfileError
+-4007  colorSyncNotInstalled   colorSyncNotInstalled
+-4006  pickerCantLive  pickerCantLive
+-4005  cantLoadPackage cantLoadPackage
+-4004  cantCreatePickerWindow  cantCreatePickerWindow
+-4003  cantLoadPicker  cantLoadPicker
+-4002  pickerResourceError     pickerResourceError
+-4001  requiredFlagsDontMatch  requiredFlagsDontMatch
+-4000  firstPickerError        firstPickerError
+-3285  kOTPortLostConnection   
+-3284  kOTUserRequestedErr     
+-3283  kOTConfigurationChangedErr      
+-3282  kOTBadConfigurationErr  
+-3281  kOTPortWasEjectedErr    
+-3280  kOTPortHasDiedErr       
+-3279  kOTClientNotInittedErr  
+-3278  kENOMSGErr      
+-3277  kESRCHErr       
+-3276  kEINPROGRESSErr 
+-3275  kENODATAErr     
+-3274  kENOSTRErr      
+-3273  kECANCELErr     
+-3272  kEBADMSGErr     
+-3271  kENOSRErr       
+-3270  kETIMEErr       
+-3269  kEPROTOErr      \82\82\82 fill out missing codes \82\82\82
+-3264  kEHOSTUNREACHErr        No route to host
+-3263  kEHOSTDOWNErr   Host is down
+-3260  kECONNREFUSEDErr        Connection refused
+-3259  kETIMEDOUTErr   Connection timed out
+-3258  kETOOMANYREFSErr        Too many references: can't splice
+-3257  kESHUTDOWNErr   Can't send after socket shutdown
+-3256  kENOTCONNErr    Socket is not connected
+-3255  kEISCONNErr     Socket is already connected
+-3254  kENOBUFSErr     No buffer space available
+-3253  kECONNRESETErr  Connection reset by peer
+-3252  kECONNABORTEDErr        Software caused connection abort
+-3251  kENETRESETErr   Network dropped connection on reset
+-3250  kENETUNREACHErr Network is unreachable
+-3249  kENETDOWNErr    Network is down
+-3248  kEADDRNOTAVAILErr       Can't assign requested address
+-3247  kEADDRINUSEErr  Address already in use
+-3244  kEOPNOTSUPPErr  Operation not supported on socket
+-3243  kESOCKTNOSUPPORTErr     Socket type not supported
+-3242  kEPROTONOSUPPORTErr     Protocol not supported
+-3241  kENOPROTOOPTErr Protocol not available
+-3240  kEPROTOTYPEErr  Protocol wrong type for socket
+-3239  kEMSGSIZEErr    Message too long
+-3238  kEDESTADDRREQErr        Destination address required
+-3237  kENOTSOCKErr    Socket operation on non-socket
+-3236  kEALREADYErr    
+-3234  kEWOULDBLOCKErr Call would block, so was aborted
+-3233  kERANGEErr      Message size too large for STREAM
+-3231  kEPIPEErr       Broken pipe
+-3224  kENOTTYErr      Not a character device
+-3221  kEINVALErr      Invalid argument
+-3218  kENODEVErr      No such device
+-3216  kOTDuplicateFoundErr    OT generic duplicate found error
+-3215  kEBUSYErr       Device or resource busy
+-3213  kEFAULTErr      Bad address
+-3212  kEACCESErr      Permission denied
+-3211  kOTOutOfMemoryErr       OT ran out of memory, may be a temporary
+-3210  kEAGAINErr      Try operation again later
+-3208  kEBADFErr       Bad file number
+-3205  kENXIOErr       No such device or address
+-3204  kEIOErr I/O error
+-3203  kEINTRErr       Interrupted system service
+-3202  kENORSRCErr     No such resource
+-3201  kOTNotFoundErr  OT generic not found error
+-3200  kEPERMErr       Permission denied
+-3180  kOTCanceledErr  XTI2OSStatus(TCANCELED) The command was cancelled
+-3179  kOTBadSyncErr   XTI2OSStatus(TBADSYNC) A synchronous call at interrupt time
+-3178  kOTProtocolErr  XTI2OSStatus(TPROTO) An unspecified provider error occurred
+-3177  kOTQFullErr     XTI2OSStatus(TQFULL)
+-3176  kOTResAddressErr        XTI2OSStatus(TRESADDR)
+-3175  kOTResQLenErr   XTI2OSStatus(TRESQLEN)
+-3174  kOTProviderMismatchErr  XTI2OSStatus(TPROVMISMATCH) Tried to accept on incompatible endpoint
+-3173  kOTIndOutErr    XTI2OSStatus(TINDOUT) Accept failed because of pending listen
+-3172  kOTAddressBusyErr       XTI2OSStatus(TADDRBUSY) Address requested is already in use
+-3171  kOTBadQLenErr   XTI2OSStatus(TBADQLEN) A Bind to an in-use addr with qlen > 0
+-3170  kOTBadNameErr   XTI2OSStatus(TBADNAME) A bad endpoint name was supplied
+-3169  kOTNoStructureTypeErr   XTI2OSStatus(TNOSTRUCTYPE) Bad structure type requested for OTAlloc
+-3168  kOTStateChangeErr       XTI2OSStatus(TSTATECHNG) State is changing - try again later
+-3167  kOTNotSupportedErr      XTI2OSStatus(TNOTSUPPORT) Command is not supported
+-3166  kOTNoReleaseErr XTI2OSStatus(TNOREL) No orderly release indication available
+-3165  kOTBadFlagErr   XTI2OSStatus(TBADFLAG) A Bad flag value was supplied
+-3164  kOTNoUDErrErr   XTI2OSStatus(TNOUDERR) No Unit Data Error indication available
+-3163  kOTNoDisconnectErr      XTI2OSStatus(TNODIS) No disconnect indication available
+-3162  kOTNoDataErr    XTI2OSStatus(TNODATA) No data available for reading
+-3161  kOTFlowErr      XTI2OSStatus(TFLOW) Provider is flow-controlled
+-3160  kOTBufferOverflowErr    XTI2OSStatus(TBUFOVFLW) Passed buffer not big enough
+-3159  kOTBadDataErr   XTI2OSStatus(TBADDATA) An illegal amount of data was specified
+-3158  kOTLookErr      XTI2OSStatus(TLOOK) An event occurred - call Look()
+-3157  kOTSysErrorErr  XTI2OSStatus(TSYSERR) A system error occurred
+-3156  kOTBadSequenceErr       XTI2OSStatus(TBADSEQ) Sequence specified does not exist
+-3155  kOTOutStateErr  XTI2OSStatus(TOUTSTATE) Call issued in wrong state
+-3154  kOTNoAddressErr XTI2OSStatus(TNOADDR) No address was specified
+-3153  kOTBadReferenceErr      XTI2OSStatus(TBADF) Bad provider reference
+-3152  kOTAccessErr    XTI2OSStatus(TACCES) Missing access permission
+-3151  kOTBadOptionErr XTI2OSStatus(TBADOPT) A Bad option was specified
+-3150  kOTBadAddressErr        XTI2OSStatus(TBADADDR) A Bad address was specified
+-3109  sktClosedErr    sktClosedErr
+-3108  recNotFnd       recNotFnd
+-3107  atpBadRsp       atpBadRsp
+-3106  atpLenErr       atpLenErr
+-3105  readQErr        readQErr
+-3104  extractErr      extractErr
+-3103  ckSumErr        ckSumErr
+-3102  noMPPErr        noMPPErr
+-3101  buf2SmallErr    buf2SmallErr
+-3032  noPrefAppErr    noPrefAppErr
+-3031  badTranslationSpecErr   badTranslationSpecErr
+-3030  noTranslationPathErr    noTranslationPathErr
+-3026  couldNotParseSourceFileErr      Source document does not contain source type
+-3025  invalidTranslationPathErr       Source type to destination type not a valid path
+-3004  unresolvedComponentDLLErr       unresolvedComponentDLLErr
+-3003  componentDontRegister   componentDontRegister
+-3002  componentNotCaptured    componentNotCaptured
+-3001  validInstancesExist     validInstancesExist
+-3000  invalidComponentID      invalidComponentID
+-2899  cfragLastErrCode        The last value in the range of CFM errors.
+-2831  cfragOutputLengthErr    An output parameter is too small to hold the value.
+-2830  cfragAbortClosureErr    Used by notification handlers to abort a closure.
+-2829  cfragClosureIDErr       The closure ID was not valid.
+-2828  cfragContainerIDErr     The fragment container ID was not valid.
+-2827  cfragNoRegistrationErr  The registration name was not found.
+-2826  cfragNotClosureErr      The closure ID was actually a connection ID.
+-2825  cfragFileSizeErr        A file was too large to be mapped.
+-2824  cfragFragmentUsageErr   A semantic error in usage of the fragment.
+-2823  cfragArchitectureErr    A fragment has an unacceptable architecture.
+-2822  cfragNoApplicationErr   No application member found in the cfrg resource.
+-2821  cfragInitFunctionErr    A fragment's initialization routine returned an error.
+-2820  cfragFragmentCorruptErr A fragment's container was corrupt (known format).
+-2819  cfragCFMInternalErr     An internal inconstistancy has been detected.
+-2818  cfragCFMStartupErr      Internal error during CFM initialization.
+-2817  cfragLibConnErr 
+-2816  cfragInitAtBootErr      A boot library has an initialization function.  (System 7 only)
+-2815  cfragInitLoopErr        Circularity in required initialization order.
+-2814  cfragImportTooNewErr    An import library was too new for a client.
+-2813  cfragImportTooOldErr    An import library was too old for a client.
+-2812  cfragInitOrderErr       
+-2811  cfragNoIDsErr   No more CFM IDs for contexts, connections, etc.
+-2810  cfragNoClientMemErr     Out of memory for fragment mapping or section instances.
+-2809  cfragNoPrivateMemErr    Out of memory for internal bookkeeping.
+-2808  cfragNoPositionErr      The registration insertion point was not found.
+-2807  cfragUnresolvedErr      A fragment had "hard" unresolved imports.
+-2806  cfragFragmentFormatErr  A fragment's container format is unknown.
+-2805  cfragDupRegistrationErr The registration name was already in use.
+-2804  cfragNoLibraryErr       The named library was not found.
+-2803  cfragNoSectionErr       The specified section was not found.
+-2802  cfragNoSymbolErr        The specified symbol was not found.
+-2801  cfragConnectionIDErr    The connection ID was not valid.
+-2800  cfragFirstErrCode       The first value in the range of CFM errors.
+-2780  errASInconsistentNames  English errors:
+-2763  errASNoResultReturned   The range -2780 thru -2799 is reserved for dialect specific error codes. (Error codes from different dialects may overlap.)
+-2762  errASParameterNotForEvent       errASParameterNotForEvent
+-2761  errASIllegalFormalParameter     errASIllegalFormalParameter
+-2760  errASTerminologyNestingTooDeep  errASTerminologyNestingTooDeep
+-2755  OSAControlFlowError     Signaled when illegal control flow occurs in an application (no catcher for throw, non-lexical loop exit, etc.)
+-2754  OSAInconsistentDeclarations     Signaled when a variable is declared inconsistently in the same scope, such as both local and global
+-2753  OSAUndefinedVariable    Signaled when a variable is accessed that has no value
+-2752  OSADuplicateHandler     Signaled when more than one handler is defined with the same name in a scope where the language doesn't allow it
+-2751  OSADuplicateProperty    Signaled when a formal parameter, local variable, or instance variable is specified more than once.
+-2750  OSADuplicateParameter   Signaled when a formal parameter, local variable, or instance variable is specified more than once
+-2742  OSATokenTooLong Signaled when a name or number is too long to be parsed
+-2741  OSASyntaxTypeError      Signaled when another form of syntax was expected. (e.g. "expected a <type> but found <this>")
+-2740  OSASyntaxError  Signaled when a syntax error occurs. (e.g. "Syntax error" or "<this> can't go after <that>")
+-2721  errASCantCompareMoreThan32k     Parser/Compiler errors:
+-2720  errASCantConsiderAndIgnore      errASCantConsiderAndIgnore
+-2710  errOSACantCreate        errOSACantCreate
+-2709  errOSACantGetTerminology        errOSACantGetTerminology
+-2708  errOSADataBlockTooLarge Signaled when an intrinsic limitation is exceeded for the size of a value or data structure.
+-2707  errOSAInternalTableOverflow     Signaled when a runtime internal data structure overflows
+-2706  errOSAStackOverflow     Signaled when the runtime stack overflows
+-2705  errOSACorruptTerminology        Signaled when an application's terminology resource is not readable
+-2704  errOSAAppNotHighLevelEventAware Signaled when an application can't respond to AppleEvents
+-2703  errOSACantLaunch        Signaled when application can't be launched or when it is remote and program linking is not enabled
+-2702  errOSANumericOverflow   Signaled when integer or real value is too large to be represented
+-2701  errOSADivideByZero      Signaled when there is an attempt to divide by zero
+-2700  errOSAGeneralError      Signaled by user scripts or applications when no actual error code is to be returned.
+-2582  noIconDataAvailableErr  The necessary icon data is not available
+-2581  noSuchIconErr   The requested icon could not be found
+-2580  invalidIconRefErr       The icon ref is not valid
+-2557  nrCallNotSupported      This call is not available or supported on this machine
+-2556  nrTransactionAborted    transaction was aborted
+-2555  nrExitedIteratorScope   outer scope of iterator was exited
+-2554  nrIterationDone iteration operation is done
+-2553  nrPropertyAlreadyExists property already exists
+-2552  nrInvalidEntryIterationOp       invalid entry iteration operation
+-2551  nrPathBufferTooSmall    buffer for path is too small
+-2550  nrPathNotFound  a path component lookup failed
+-2549  nrResultCodeBase        nrResultCodeBase
+-2548  nrOverrunErr    nrOverrunErr
+-2547  nrNotModifiedErr        nrNotModifiedErr
+-2546  nrTypeMismatchErr       nrTypeMismatchErr
+-2545  nrPowerSwitchAbortErr   nrPowerSwitchAbortErr
+-2544  nrPowerErr      nrPowerErr
+-2543  nrDataTruncatedErr      nrDataTruncatedErr
+-2542  nrNotSlotDeviceErr      nrNotSlotDeviceErr
+-2541  nrNameErr       nrNameErr
+-2540  nrNotCreatedErr nrNotCreatedErr
+-2539  nrNotFoundErr   nrNotFoundErr
+-2538  nrInvalidNodeErr        nrInvalidNodeErr
+-2537  nrNotEnoughMemoryErr    nrNotEnoughMemoryErr
+-2536  nrLockedErr     nrLockedErr
+-2526  mmInternalError mmInternalError
+-2524  tsmDefaultIsNotInputMethodErr   Current Input source is KCHR or uchr, not Input Method  (GetDefaultInputMethod)
+-2523  tsmNoStem       No stem exists for the token
+-2522  tsmNoMoreTokens No more tokens are available for the source text
+-2521  tsmNoHandler    No Callback Handler exists for callback
+-2520  tsmInvalidContext       Invalid TSMContext specified in call
+-2519  tsmUnknownErr   any other errors
+-2518  tsmUnsupportedTypeErr   unSupported interface type error
+-2517  tsmScriptHasNoIMErr     script has no imput method or is using old IM
+-2516  tsmInputMethodIsOldErr  returned by GetDefaultInputMethod
+-2515  tsmComponentAlreadyOpenErr      text service already opened for the document
+-2514  tsmTSNotOpenErr text service is not open
+-2513  tsmTSHasNoMenuErr       the text service has no menu
+-2512  tsmUseInputWindowErr    not TSM aware because we are using input window
+-2511  tsmDocumentOpenErr      there are open documents
+-2510  tsmTextServiceNotFoundErr       no text service found
+-2509  tsmCantOpenComponentErr canÕt open the component
+-2508  tsmNoOpenTSErr  no open text service
+-2507  tsmDocNotActiveErr      document is NOT active
+-2506  tsmTSMDocBusyErr        document is still active
+-2505  tsmInvalidDocIDErr      invalid TSM documentation id
+-2504  tsmNeverRegisteredErr   app never registered error (not TSM aware)
+-2503  tsmAlreadyRegisteredErr want to register again error
+-2502  tsmNotAnAppErr  not an application error
+-2501  tsmInputMethodNotFoundErr       tsmInputMethodNotFoundErr
+-2500  tsmUnsupScriptLanguageErr       tsmUnsupScriptLanguageErr
+-2499  kernelUnrecoverableErr  kernelUnrecoverableErr
+-2422  kernelReturnValueErr    kernelReturnValueErr
+-2421  kernelAlreadyFreeErr    kernelAlreadyFreeErr
+-2419  kernelIDErr     kernelIDErr
+-2418  kernelExceptionErr      kernelExceptionErr
+-2417  kernelTerminatedErr     kernelTerminatedErr
+-2416  kernelInUseErr  kernelInUseErr
+-2415  kernelTimeoutErr        kernelTimeoutErr
+-2414  kernelAsyncReceiveLimitErr      kernelAsyncReceiveLimitErr
+-2413  kernelAsyncSendLimitErr kernelAsyncSendLimitErr
+-2412  kernelAttributeErr      kernelAttributeErr
+-2411  kernelExecutionLevelErr kernelExecutionLevelErr
+-2410  kernelDeletePermissionErr       kernelDeletePermissionErr
+-2409  kernelExecutePermissionErr      kernelExecutePermissionErr
+-2408  kernelReadPermissionErr kernelReadPermissionErr
+-2407  kernelWritePermissionErr        kernelWritePermissionErr
+-2406  kernelObjectExistsErr   kernelObjectExistsErr
+-2405  kernelUnsupportedErr    kernelUnsupportedErr
+-2404  kernelPrivilegeErr      kernelPrivilegeErr
+-2403  kernelOptionsErr        kernelOptionsErr
+-2402  kernelCanceledErr       kernelCanceledErr
+-2401  kernelIncompleteErr     kernelIncompleteErr
+-2209  badCallOrderErr Usually due to a status call being called prior to being setup first
+-2208  noDMAErr        CanÕt do DMA digitizing (i.e. can't go to requested dest
+-2207  badDepthErr     CanÕt digitize into this depth
+-2206  notExactSizeErr CanÕt do exact size requested
+-2205  noMoreKeyColorsErr      all key indexes in use
+-2204  notExactMatrixErr       warning of bad matrix, digitizer did its best
+-2203  matrixErr       bad matrix, digitizer did nothing
+-2202  qtParamErr      bad input parameter (out of range, etc)
+-2201  digiUnimpErr    feature unimplemented
+-2157  qtActionNotHandledErr   qtActionNotHandledErr
+-2149  notEnoughDataErr        notEnoughDataErr
+-2148  urlDataHFTPURLErr       urlDataHFTPURLErr
+-2147  urlDataHFTPServerDisconnectedErr        urlDataHFTPServerDisconnectedErr
+-2146  urlDataHFTPNoPasswordErr        urlDataHFTPNoPasswordErr
+-2145  urlDataHFTPNeedPasswordErr      urlDataHFTPNeedPasswordErr
+-2144  urlDataHFTPBadNameListErr       urlDataHFTPBadNameListErr
+-2143  urlDataHFTPNoNetDriverErr       urlDataHFTPNoNetDriverErr
+-2142  urlDataHFTPFilenameErr  urlDataHFTPFilenameErr
+-2141  urlDataHFTPPermissionsErr       urlDataHFTPPermissionsErr
+-2140  urlDataHFTPQuotaErr     urlDataHFTPQuotaErr
+-2139  urlDataHFTPNoDirectoryErr       urlDataHFTPNoDirectoryErr
+-2138  urlDataHFTPDataConnectionErr    urlDataHFTPDataConnectionErr
+-2137  urlDataHFTPServerErr    urlDataHFTPServerErr
+-2136  urlDataHFTPBadPasswordErr       urlDataHFTPBadPasswordErr
+-2135  urlDataHFTPBadUserErr   urlDataHFTPBadUserErr
+-2134  urlDataHFTPShutdownErr  urlDataHFTPShutdownErr
+-2133  urlDataHFTPProtocolErr  urlDataHFTPProtocolErr
+-2132  urlDataHHTTPRedirectErr urlDataHHTTPRedirectErr
+-2131  urlDataHHTTPURLErr      urlDataHHTTPURLErr
+-2130  urlDataHHTTPNoNetDriverErr      urlDataHHTTPNoNetDriverErr
+-2129  urlDataHHTTPProtocolErr urlDataHHTTPProtocolErr
+-2127  qtNetworkAlreadyAllocatedErr    qtNetworkAlreadyAllocatedErr
+-2126  notAllowedToSaveMovieErr        notAllowedToSaveMovieErr
+-2125  fileOffsetTooBigErr     fileOffsetTooBigErr
+-2124  ASDEntryNotFoundErr     ASDEntryNotFoundErr
+-2123  ASDBadForkErr   ASDBadForkErr
+-2122  ASDBadHeaderErr ASDBadHeaderErr
+-2121  AAPNotFoundErr  AAPNotFoundErr
+-2120  AAPNotCreatedErr        AAPNotCreatedErr
+-2119  qfcbNotCreatedErr       qfcbNotCreatedErr
+-2118  qfcbNotFoundErr qfcbNotFoundErr
+-2117  wackBadMetaDataErr      wackBadMetaDataErr
+-2116  wackForkNotFoundErr     wackForkNotFoundErr
+-2115  wackBadFileErr  wackBadFileErr
+-2114  unknownFormatErr        unknownFormatErr
+-2113  pathNotVerifiedErr      pathNotVerifiedErr
+-2112  noPathMappingErr        noPathMappingErr
+-2111  emptyPathErr    emptyPathErr
+-2110  pathTooLongErr  pathTooLongErr
+-2109  cannotBeLeafAtomErr     cannotBeLeafAtomErr
+-2108  invalidAtomTypeErr      invalidAtomTypeErr
+-2107  invalidAtomContainerErr invalidAtomContainerErr
+-2106  invalidAtomErr  invalidAtomErr
+-2105  duplicateAtomTypeAndIDErr       duplicateAtomTypeAndIDErr
+-2104  atomIndexInvalidErr     atomIndexInvalidErr
+-2103  atomsNotOfSameTypeErr   atomsNotOfSameTypeErr
+-2102  notLeafAtomErr  notLeafAtomErr
+-2101  cannotFindAtomErr       cannotFindAtomErr
+-2097  unsupportedProcessorErr unsupportedProcessorErr
+-2096  unsupportedOSErr        unsupportedOSErr
+-2095  qtmlUninitialized       qtmlUninitialized
+-2094  qtmlDllEntryNotFoundErr Windows specific errors (when qtml is loading)
+-2093  qtmlDllLoadErr  Windows specific errors (when qtml is loading)
+-2092  componentDllEntryNotFoundErr    Windows specific errors (when component is loading)
+-2091  componentDllLoadErr     Windows specific errors (when component is loading)
+-2090  videoOutputInUseErr     videoOutputInUseErr
+-2089  noExportProcAvailableErr        noExportProcAvailableErr
+-2087  tuneParseOSErr  tuneParseOSErr
+-2086  tunePlayerFullOSErr     tunePlayerFullOSErr
+-2085  noteChannelNotAllocatedOSErr    noteChannelNotAllocatedOSErr
+-2084  illegalNoteChannelOSErr illegalNoteChannelOSErr
+-2083  synthesizerOSErr        synthesizerOSErr
+-2082  synthesizerNotRespondingOSErr   synthesizerNotRespondingOSErr
+-2081  midiManagerAbsentOSErr  midiManagerAbsentOSErr
+-2080  illegalControllerOSErr  illegalControllerOSErr
+-2079  illegalInstrumentOSErr  illegalInstrumentOSErr
+-2078  illegalKnobValueOSErr   illegalKnobValueOSErr
+-2077  illegalKnobOSErr        illegalKnobOSErr
+-2076  illegalChannelOSErr     illegalChannelOSErr
+-2075  illegalPartOSErr        illegalPartOSErr
+-2074  illegalVoiceAllocationOSErr     illegalVoiceAllocationOSErr
+-2073  cantReceiveFromSynthesizerOSErr cantReceiveFromSynthesizerOSErr
+-2072  cantSendToSynthesizerOSErr      cantSendToSynthesizerOSErr
+-2071  notImplementedMusicOSErr        notImplementedMusicOSErr
+-2070  internalComponentErr    internalComponentErr
+-2069  invalidSpriteIDErr      invalidSpriteIDErr
+-2068  invalidImageIndexErr    invalidImageIndexErr
+-2067  invalidSpriteIndexErr   invalidSpriteIndexErr
+-2066  gWorldsNotSameDepthAndSizeErr   gWorldsNotSameDepthAndSizeErr
+-2065  invalidSpritePropertyErr        invalidSpritePropertyErr
+-2064  invalidSpriteWorldPropertyErr   invalidSpriteWorldPropertyErr
+-2063  missingRequiredParameterErr     missingRequiredParameterErr
+-2062  movieTextNotFoundErr    movieTextNotFoundErr
+-2061  sourceNotFoundErr       sourceNotFoundErr
+-2060  noSourceTreeFoundErr    noSourceTreeFoundErr
+-2059  samplesAlreadyInMediaErr        samplesAlreadyInMediaErr
+-2058  auxiliaryExportDataUnavailable  auxiliaryExportDataUnavailable
+-2057  unsupportedAuxiliaryImportData  unsupportedAuxiliaryImportData
+-2056  soundSupportNotAvailableErr     QT for Windows error
+-2055  noSoundTrackInMovieErr  QT for Windows error
+-2054  noVideoTrackInMovieErr  QT for Windows error
+-2053  featureUnsupported      featureUnsupported
+-2052  couldNotUseAnExistingSample     couldNotUseAnExistingSample
+-2051  noDefaultDataRef        noDefaultDataRef
+-2050  badDataRefIndex badDataRefIndex
+-2049  invalidDataRefContainer invalidDataRefContainer
+-2048  noMovieFound    noMovieFound
+-2047  dataNoDataRef   dataNoDataRef
+-2046  endOfDataReached        endOfDataReached
+-2045  dataAlreadyClosed       dataAlreadyClosed
+-2044  dataAlreadyOpenForWrite dataAlreadyOpenForWrite
+-2043  dataNotOpenForWrite     dataNotOpenForWrite
+-2042  dataNotOpenForRead      dataNotOpenForRead
+-2041  invalidSampleDescription        invalidSampleDescription
+-2040  invalidChunkCache       invalidChunkCache
+-2039  invalidSampleDescIndex  invalidSampleDescIndex
+-2038  invalidChunkNum invalidChunkNum
+-2037  invalidSampleNum        invalidSampleNum
+-2036  invalidRect     invalidRect
+-2035  cantEnableTrack cantEnableTrack
+-2034  internalQuickTimeError  internalQuickTimeError
+-2033  badEditIndex    badEditIndex
+-2032  timeNotInMedia  timeNotInMedia
+-2031  timeNotInTrack  timeNotInTrack
+-2030  trackNotInMovie trackNotInMovie
+-2029  trackIDNotFound trackIDNotFound
+-2028  badTrackIndex   badTrackIndex
+-2027  maxSizeToGrowTooSmall   maxSizeToGrowTooSmall
+-2026  userDataItemNotFound    userDataItemNotFound
+-2025  staleEditState  staleEditState
+-2024  nonMatchingEditState    nonMatchingEditState
+-2023  invalidEditState        invalidEditState
+-2022  cantCreateSingleForkFile        happens when file already exists
+-2021  wfFileNotFound  wfFileNotFound
+-2020  movieToolboxUninitialized       movieToolboxUninitialized
+-2019  progressProcAborted     progressProcAborted
+-2018  mediaTypesDontMatch     mediaTypesDontMatch
+-2017  badEditList     badEditList
+-2016  cantPutPublicMovieAtom  cantPutPublicMovieAtom
+-2015  invalidTime     invalidTime
+-2014  invalidDuration invalidDuration
+-2013  invalidHandler  invalidHandler
+-2012  invalidDataRef  invalidDataRef
+-2011  invalidSampleTable      invalidSampleTable
+-2010  invalidMovie    invalidMovie
+-2009  invalidTrack    invalidTrack
+-2008  invalidMedia    invalidMedia
+-2007  noDataHandler   noDataHandler
+-2006  noMediaHandler  noMediaHandler
+-2005  badComponentType        badComponentType
+-2004  cantOpenHandler cantOpenHandler
+-2003  cantFindHandler cantFindHandler
+-2002  badPublicMovieAtom      badPublicMovieAtom
+-2001  badImageDescription     badImageDescription
+-2000  couldNotResolveDataRef  couldNotResolveDataRef
+-1861  badImageErr     bad translucent image PixMap
+-1860  badImageRgnErr  bad translucent image region
+-1859  noSuitableDisplaysErr   no displays support translucency
+-1858  unsupportedForPlatformErr       call is for PowerPC only
+-1857  dragNotAcceptedErr      drag was not accepted by receiver
+-1856  handlerNotFoundErr      handler not found
+-1855  duplicateHandlerErr     handler already exists
+-1854  cantGetFlavorErr        error while trying to get flavor data
+-1853  duplicateFlavorErr      flavor type already exists
+-1852  badDragFlavorErr        unknown flavor type
+-1851  badDragItemErr  unknown drag item reference
+-1850  badDragRefErr   unknown drag reference
+-1813  errEndOfBody    errEndOfBody
+-1812  errEndOfDocument        errEndOfDocument
+-1811  errTopOfBody    errTopOfBody
+-1810  errTopOfDocument        errTopOfDocument
+-1801  errOffsetIsOutsideOfView        errOffsetIsOutsideOfView
+-1800  errOffsetInvalid        errOffsetInvalid
+-1762  errOSACantOpenComponent Can't connect to scripting system with that ID
+-1761  errOSAComponentMismatch Parameters are from 2 different components
+-1759  errOSADataFormatTooNew  errOSADataFormatTooNew
+-1758  errOSADataFormatObsolete        errOSADataFormatObsolete
+-1757  errOSANoSuchDialect     errOSANoSuchDialect
+-1756  errOSASourceNotAvailable        errOSASourceNotAvailable
+-1754  errOSABadSelector       errOSABadSelector
+-1753  errOSAScriptError       errOSAScriptError
+-1752  errOSABadStorageType    errOSABadStorageType
+-1751  errOSAInvalidID errOSAInvalidID
+-1750  errOSASystemError       errOSASystemError
+-1739  errAEDescIsNull attempting to perform an invalid operation on a null descriptor
+-1738  errAEStreamAlreadyConverted     attempt to convert a stream that has already been converted
+-1737  errAEStreamBadNesting   nesting violation while streaming
+-1736  errAEDuplicateHandler   attempt to install handler in table for identical class and id (1.1 or greater)
+-1735  errAEEventFiltered      event has been filtered, and should not be propogated (1.1 or greater)
+-1734  errAEReceiveEscapeCurrent       break out of only lowest level of AEReceive (1.1 or greater)
+-1733  errAEReceiveTerminate   break out of all levels of AEReceive to the topmost (1.1 or greater)
+-1732  errAERecordingIsAlreadyOn       available only in version 1.0.1 or greater
+-1731  errAEUnknownObjectType  available only in version 1.0.1 or greater
+-1730  errAEEmptyListContainer Attempt to pass empty list as container to accessor
+-1729  errAENegativeCount      CountProc returned negative value
+-1728  errAENoSuchObject       e.g.,: specifier asked for the 3rd, but there are only 2. Basically, this indicates a run-time resolution error.
+-1727  errAENotAnObjSpec       Param to AEResolve not of type 'obj '
+-1726  errAEBadTestKey Test is neither typeLogicalDescriptor nor typeCompDescriptor
+-1725  errAENoSuchLogical      Something other than AND, OR, or NOT
+-1723  errAEAccessorNotFound   Accessor proc matching wantClass and containerType or wildcards not found
+-1721  errAEWrongNumberArgs    Logical op kAENOT used with other than 1 term
+-1720  errAEImpossibleRange    A range like 3rd to 2nd, or 1st to all.
+-1719  errAEIllegalIndex       index is out of range in a put operation
+-1718  errAEReplyNotArrived    the contents of the reply you are accessing have not arrived yet
+-1717  errAEHandlerNotFound    no handler in the dispatch tables fits the parameters to AEGetEventHandler or AEGetCoercionHandler
+-1716  errAEUnknownAddressType the target address type is not known
+-1715  errAEParamMissed        a required parameter was not accessed
+-1714  errAENotASpecialFunction        there is no special function for/with this keyword
+-1713  errAENoUserInteraction  no user interaction is allowed
+-1712  errAETimeout    the AppleEvent timed out
+-1711  errAEWaitCanceled       in AESend, the user cancelled out of wait loop for reply or receipt
+-1710  errAEUnknownSendMode    mode wasn't NoReply, WaitReply, or QueueReply or Interaction level is unknown
+-1709  errAEReplyNotValid      AEResetTimer was passed an invalid reply parameter
+-1708  errAEEventNotHandled    the AppleEvent was not handled by any handler
+-1707  errAENotAppleEvent      the event is not in AppleEvent format
+-1706  errAENewerVersion       need newer version of the AppleEvent manager
+-1705  errAEBadListItem        the specified list item does not exist
+-1704  errAENotAEDesc  errAENotAEDesc
+-1703  errAEWrongDataType      errAEWrongDataType
+-1702  errAECorruptData        errAECorruptData
+-1701  errAEDescNotFound       errAEDescNotFound
+-1700  errAECoercionFail       bad parameter data or unable to coerce the data supplied
+-1424  errFSIteratorNotSupported       The iterator's flags or container are not supported by this call
+-1423  errFSIteratorNotFound   Passed FSIterator is not an open iterator
+-1422  errFSBadIteratorFlags   Flags passed to FSOpenIterator are bad
+-1421  errFSForkExists Named fork already exists.
+-1420  errFSRefsDifferent      FSCompareFSRefs; refs are for different objects
+-1419  errFSBadSearchParams    Something wrong with CatalogSearch searchParams
+-1418  errFSBadItemCount       maximumItems was zero
+-1417  errFSNoMoreItems        Iteration ran out of items to return
+-1413  errFSBadAllocFlags      Invalid bits set in allocationFlags
+-1412  errFSBadPosMode Newline bits set in positionMode
+-1411  errFSMissingName        A Unicode name parameter was NULL or nameLength parameter was zero
+-1410  errFSNameTooLong        File/fork name is too long to create/rename
+-1409  errFSForkNotFound       Named fork does not exist
+-1407  errFSNotAFolder Expected a folder, got a file
+-1406  errFSMissingCatInfo     A CatalogInfo parameter was NULL
+-1405  errFSBadInfoBitmap      A CatalogInfoBitmap or VolumeInfoBitmap has reserved or invalid bits set
+-1404  errFSBadForkRef A ForkRefNum parameter was bad
+-1403  errFSBadBuffer  A buffer parameter was bad
+-1402  errFSBadForkName        Fork name parameter is bad
+-1401  errFSBadFSRef   FSRef parameter is bad
+-1400  errFSUnknownCall        selector is not recognized by this filesystem
+-1327  badFCBErr       FCBRecPtr is not valid
+-1311  volVMBusyErr    can't eject because volume is in use by VM
+-1310  fsDataTooBigErr file or volume is too big for system
+-1309  fileBoundsErr   file's EOF, offset, mark or size is too big
+-1308  notARemountErr  when _Mount allows only remounts and doesn't get one
+-1307  badFidErr       file id is dangling or doesn't match with the file number
+-1306  sameFileErr     can't exchange a file with itself
+-1305  desktopDamagedErr       desktop database files are corrupted
+-1304  catChangedErr   the catalog has been modified
+-1303  diffVolErr      files on different volumes
+-1302  notAFileErr     directory specified
+-1301  fidExists       file id already exists
+-1300  fidNotFound     no file thread exists.
+-1280  errRefNum       bad connection refNum
+-1279  errAborted      control call was aborted
+-1278  errState        bad connection state for this operation
+-1277  errOpening      open connection request failed
+-1276  errAttention    attention message too long
+-1275  errFwdReset     read terminated by forward reset
+-1274  errDSPQueueSize DSP Read/Write Queue Too small
+-1273  errOpenDenied   open connection request was denied
+-1105  reqAborted      reqAborted
+-1104  noDataArea      noDataArea
+-1103  noSendResp      noSendResp
+-1102  cbNotFound      cbNotFound
+-1101  noRelErr        noRelErr
+-1100  badBuffNum      badBuffNum
+-1099  badATPSkt       badATPSkt
+-1098  tooManySkts     tooManySkts
+-1097  tooManyReqs     tooManyReqs
+-1096  reqFailed       reqFailed
+-1075  aspNoAck        No ack on attention request (server err)
+-1074  aspTooMany      Too many clients (server error)
+-1073  aspSizeErr      Command block too big
+-1072  aspSessClosed   Session closed
+-1071  aspServerBusy   Server cannot open another session
+-1070  aspParamErr     Parameter error
+-1069  aspNoServers    No servers at that address
+-1068  aspNoMoreSess   No more sessions on server
+-1067  aspBufTooSmall  Buffer too small
+-1066  aspBadVersNum   Server cannot support this ASP version
+-1029  nbpNISErr       Error trying to open the NIS
+-1028  nbpNotFound     Name not found on remove
+-1027  nbpDuplicate    Duplicate name exists already
+-1026  nbpConfDiff     Name confirmed at different socket
+-1025  nbpNoConfirm    nbpNoConfirm
+-1024  nbpBuffOvr      Buffer overflow in LookupName
+-1000  noMaskFoundErr  Icon Utilties Error
+-985   kFMFontContainerAccessErr       kFMFontContainerAccessErr
+-984   kFMFontTableAccessErr   kFMFontTableAccessErr
+-983   kFMIterationScopeModifiedErr    kFMIterationScopeModifiedErr
+-982   kFMInvalidFontErr       kFMInvalidFontErr
+-981   kFMInvalidFontFamilyErr kFMInvalidFontFamilyErr
+-980   kFMIterationCompleted   kFMIterationCompleted
+-932   guestNotAllowedErr      destination port requires authentication
+-931   badLocNameErr   location name malformed
+-930   badServiceMethodErr     illegal service type, or not supported
+-928   noUserRecErr    Invalid user reference number
+-927   authFailErr     unable to authenticate user at destination
+-926   noInformErr     PPCStart failed because destination did not have inform pending
+-925   networkErr      An error has occurred in the network, not too likely
+-924   noUserRefErr    unable to create a new userRefNum
+-923   notLoggedInErr  The default userRefNum does not yet exist
+-922   noDefaultUserErr        user hasn't typed in owners name in Network Setup Control Pannel
+-919   badPortNameErr  PPCPortRec malformed
+-917   sessClosedErr   session was closed
+-916   portClosedErr   port was closed
+-915   noResponseErr   unable to contact destination
+-914   noToolboxNameErr        A system resource is missing, not too likely
+-913   noMachineNameErr        user hasn't named his Macintosh in the Network Setup Control Panel
+-912   userRejectErr   Destination rejected the session request
+-911   noUserNameErr   user name unknown on destination machine
+-910   portNameExistsErr       port is already open (perhaps in another app)
+-909   badReqErr       bad parameter or invalid state for operation
+-908   noSessionErr    Invalid session reference number
+-907   sessTableErr    Out of session tables, try again later
+-906   destPortErr     Port does not exist at destination
+-905   localOnlyErr    Network activity is currently disabled
+-904   noGlobalsErr    The system is hosed, better re-boot
+-903   noPortErr       Unable to open port or bad portRefNum.  If you're calling
+-902   nameTypeErr     Invalid or inappropriate locationKindSelector in locationName
+-900   notInitErr      PPCToolBox not initialized
+-876   appVersionTooOld        The application's creator and version are incompatible with the current version of Mac OS.
+-875   wrongApplicationPlatform        The application could not launch because the required platform is not available
+-863   hmCloseViewActive       Returned from HMRemoveBalloon if CloseView was active
+-862   hmNoBalloonUp   Returned from HMRemoveBalloon if no balloon was visible when call was made
+-861   hmOperationUnsupported  Returned from HMShowBalloon call if bad method passed to routine
+-859   hmUnknownHelpType       Returned if help msg record contained a bad type
+-858   hmWrongVersion  Returned if help mgr resource was the wrong version
+-857   hmSkippedBalloon        Returned from calls if helpmsg specified a skip balloon
+-855   hmHelpManagerNotInited  Returned from HMGetHelpMenuHandle if help menu not setup
+-854   hmSameAsLastBalloon     Returned from HMShowMenuBalloon if menu & item is same as last time
+-853   hmBalloonAborted        Returned if mouse was moving or mouse wasn't in window port rect
+-850   hmHelpDisabled  Show Balloons mode was off, call to routine ignored
+-813   rcDBPackNotInited       attempt to call other routine before InitDBPack
+-812   rcDBWrongVersion        incompatible versions
+-811   rcDBNoHandler   no app handler for specified data type
+-810   rcDBBadAsyncPB  tried to kill a bad pb
+-809   rcDBAsyncNotSupp        ddev does not support async calls
+-808   rcDBBadDDEV     bad ddev specified on DBInit
+-807   rcDBBadSessNum  bad session number for DBGetConnInfo
+-806   rcDBBadSessID   rcDBBadSessID
+-805   rcDBExec        rcDBExec
+-804   rcDBBreak       rcDBBreak
+-803   rcDBBadType     rcDBBadType
+-802   rcDBError       rcDBError
+-801   rcDBValue       rcDBValue
+-800   rcDBNull        rcDBNull
+-626   noMMUErr        no MMU present
+-625   cannotDeferErr  unable to defer additional functions
+-624   interruptsMaskedErr     donÕt call with interrupts masked
+-623   notLockedErr    specified range of memory is not locked
+-622   cannotMakeContiguousErr cannot make specified range contiguous
+-621   notHeldErr      specified range of memory is not held
+-620   notEnoughMemoryErr      insufficient physical memory
+-619   threadProtocolErr       threadProtocolErr
+-618   threadNotFoundErr       threadNotFoundErr
+-617   threadTooManyReqsErr    threadTooManyReqsErr
+-610   noUserInteractionAllowed        no user interaction allowed
+-609   connectionInvalid       connectionInvalid
+-608   noOutstandingHLE        noOutstandingHLE
+-607   bufferIsSmall   error returns from Post and Accept
+-606   appIsDaemon     app is BG-only, and launch flags disallow this
+-605   appMemFullErr   application SIZE not big enough for launch
+-604   hardwareConfigErr       hardware configuration not correct for call
+-603   protocolErr     app made module calls in improper order
+-602   appModeErr      memory mode is 32-bit, but app not 32-bit clean
+-601   memFragErr      not enough room to launch app w/special requirements
+-600   procNotFound    no eligible process with specified descriptor
+-503   driverHardwareGoneErr   disk driver's hardware was disconnected
+-502   hwParamErr      bad selector for _HWPriv
+-501   teScrapSizeErr  scrap item too big for text edit record
+-500   rgnTooBigErr    rgnTooBigErr
+-492   exUserBreak     user debugger break; execute debugger commands on stack
+-491   strUserBreak    user debugger break; display string on stack
+-490   userBreak       user debugger break
+-463   notThePublisherWrn      not the first registered publisher for that container
+-462   containerAlreadyOpenWrn container already opened by this section
+-461   containerNotFoundWrn    could not find editionContainer at this time
+-460   multiplePublisherWrn    A Publisher is already registered for that container
+-454   badSubPartErr   can not use sub parts in this release
+-453   badEditionFileErr       edition file is corrupt
+-452   notRegisteredSectionErr not a registered SectionRecord
+-451   badSectionErr   not a valid SectionRecord
+-450   editionMgrInitErr       edition manager not inited by this app
+-438   fsmUnknownFSMMessageErr unknown message passed to FSM
+-437   fsmNoAlternateStackErr  no alternate stack for HFS CI
+-436   fsmBadFSDVersionErr     FSM version incompatible with FSD
+-435   fsmDuplicateFSIDErr     FSID already exists on InstallFS
+-434   fsmBadFSDLenErr FSD size incompatible with current FSM vers
+-433   fsmBadFFSNameErr        Name length not 1 <= length <= 31
+-432   fsmBusyFFSErr   File system is busy, cannot be removed
+-431   fsmFFSNotFoundErr       Foreign File system does not exist - new Pack2 could return this error too
+-417   btKeyAttrErr    There is no such a key attribute.
+-416   btKeyLenErr     Maximum key length is too long or equal to zero.
+-415   btRecNotFnd     Record cannot be found.
+-414   btDupRecErr     Record already exists.
+-413   btNoSpace       Can't allocate disk space.
+-410   notBTree        The file is not a dictionary.
+-400   gcrOnMFMErr     gcr format on high density media error
+-360   slotNumErr      invalid slot # error
+-351   smRecNotFnd     Record not found in the SRT.
+-350   smSRTOvrFlErr   SRT over flow.
+-349   smNoGoodOpens   No opens were successfull in the loop.
+-348   smOffsetErr     Offset was too big (temporary error
+-347   smByteLanesErr  NumByteLanes was determined to be zero.
+-346   smBadsPtrErr    Bad pointer was passed to sCalcsPointer
+-345   smsGetDrvrErr   Error occurred during _sGetDriver.
+-344   smNoMoresRsrcs  No more sResources
+-343   smDisDrvrNamErr Error occurred during _sDisDrvrName.
+-342   smGetDrvrNamErr Error occurred during _sGetDrvrName.
+-341   smCkStatusErr   Status of slot = fail.
+-340   smBlkMoveErr    _BlockMove error
+-339   smNewPErr       _NewPtr error
+-338   smSelOOBErr     Selector out of bounds error
+-337   smSlotOOBErr    Slot out of bounds error
+-336   smNilsBlockErr  Nil sBlock error (Dont allocate and try to use a nil sBlock)
+-335   smsPointerNil   LPointer is nil From sOffsetData. If this error occurs; check sInfo rec for more information.
+-334   smCPUErr        Code revision is wrong
+-333   smCodeRevErr    Code revision is wrong
+-332   smReservedErr   Reserved field not zero
+-331   smBadsList      Bad sList: Id1 < Id2 < Id3 ...format is not followed.
+-330   smBadRefId      Reference Id not found in List
+-320   smBusErrTO      BusError time out.
+-319   smBadBoardId    BoardId was wrong; re-init the PRAM record.
+-318   smReservedSlot  slot is reserved, VM should not use this address space.
+-317   smInitTblVErr   An error occurred while trying to initialize the Slot Resource Table.
+-316   smInitStatVErr  The InitStatusV field was negative after primary or secondary init.
+-315   smNoBoardId     No Board Id.
+-314   smGetPRErr      Error occurred during _sGetPRAMRec (See SIMStatus).
+-313   smNoBoardSRsrc  No Board sResource.
+-312   smDisposePErr   _DisposePointer error
+-311   smFHBlkDispErr  Error occurred during _sDisposePtr (Dispose of FHeader block).
+-310   smFHBlockRdErr  Error occurred during _sGetFHeader.
+-309   smBLFieldBad    ByteLanes field was bad.
+-308   smUnExBusErr    Unexpected BusError
+-307   smResrvErr      Fatal reserved error. Resreved field <> 0.
+-306   smNosInfoArray  No sInfoArray. Memory Mgr error.
+-305   smDisabledSlot  This slot is disabled (-305 use to be smLWTstBad)
+-304   smNoDir Directory offset is Nil
+-303   smRevisionErr   Wrong revison level
+-302   smFormatErr     FHeader Format is not Apple's
+-301   smCRCFail       CRC check failed for declaration data
+-300   smEmptySlot     No card in slot
+-299   nmTypErr        Notification Manager:wrong queue type
+-293   smPriInitErr    Error; Cards could not be initialized.
+-292   smPRAMInitErr   Error; Slot Resource Table could not be initialized.
+-291   smSRTInitErr    Error; Slot Resource Table could not be initialized.
+-290   smSDMInitErr    Error; SDM could not be initialized.
+-261   midiInvalidCmdErr       command not supported for port type
+-260   midiDupIDErr    duplicate client ID
+-259   midiNameLenErr  name supplied is longer than 31 characters
+-258   midiWriteErr    MIDIWritePacket couldn't write to all connected ports
+-257   midiNoConErr    no connection exists between specified ports
+-256   midiVConnectRmvd        pending virtual connection removed
+-255   midiVConnectMade        pending virtual connection resolved
+-254   midiVConnectErr pending virtual connection created
+-253   midiTooManyConsErr      too many connections made
+-252   midiTooManyPortsErr     too many ports already installed in the system
+-251   midiNoPortErr   no port with that ID found
+-250   midiNoClientErr no client with that ID found
+-247   badInputText    badInputText
+-246   badDictFormat   badDictFormat
+-245   incompatibleVoice       incompatibleVoice
+-244   voiceNotFound   voiceNotFound
+-243   bufTooSmall     bufTooSmall
+-242   synthNotReady   synthNotReady
+-241   synthOpenFailed synthOpenFailed
+-240   noSynthFound    noSynthFound
+-232   siUnknownQuality        invalid quality selector (returned by driver)
+-231   siUnknownInfoType       invalid info type selector (returned by driver)
+-230   siInputDeviceErr        input device hardware failure
+-229   siBadRefNum     invalid input device reference number
+-228   siBadDeviceName input device could not be opened
+-227   siDeviceBusyErr input device already in use
+-226   siInvalidSampleSize     invalid sample size
+-225   siInvalidSampleRate     invalid sample rate
+-224   siHardDriveTooSlow      hard drive too slow to record to disk
+-223   siInvalidCompression    invalid compression type
+-222   siNoBufferSpecified     returned by synchronous SPBRecord if nil buffer passed
+-221   siBadSoundInDevice      invalid index passed to SoundInGetIndexedDevice
+-220   siNoSoundInHardware     no Sound Input hardware
+-213   siVBRCompressionNotSupported    vbr audio compression not supported for this operation
+-212   noMoreRealTime  not enough CPU cycles left to add another task
+-211   channelNotBusy  channelNotBusy
+-210   buffersTooSmall can not operate in the memory allowed
+-209   channelBusy     the Channel is being used for a PFD already
+-208   badFileFormat   was not type AIFF or was of bad format,corrupt
+-207   notEnoughBufferSpace    could not allocate enough memory
+-206   badFormat       Sound Manager Error Returns
+-205   badChannel      Sound Manager Error Returns
+-204   resProblem      Sound Manager Error Returns
+-203   queueFull       Sound Manager Error Returns
+-201   notEnoughHardwareErr    Sound Manager Error Returns
+-200   noHardwareErr   Sound Manager Error Returns
+-199   mapReadErr      map inconsistent with operation
+-198   resAttrErr      attribute inconsistent with operation
+-197   rmvRefFailed    RmveReference failed
+-196   rmvResFailed    RmveResource failed
+-195   addRefFailed    AddReference failed
+-194   addResFailed    AddResource failed
+-193   resFNotFound    Resource file not found
+-192   resNotFound     Resource not found
+-190   inputOutOfBounds        Offset of Count out of bounds
+-189   writingPastEnd  Writing past end of file
+-188   resourceInMemory        Resource already in memory
+-186   CantDecompress  resource bent ("the bends") - can't decompress a compressed resource
+-185   badExtResource  extended resource has a bad format.
+-182   cmNoCurrentProfile      Responder error
+-181   cmUnsupportedDataType   Responder error
+-180   cmCantDeleteProfile     Responder error
+-179   cmCantXYZ       CMM cant handle XYZ space
+-178   cmCantConcatenateError  Profile can't be concatenated
+-177   cmProfilesIdentical     Profiles the same
+-176   cmProfileNotFound       Responder error
+-175   cmMethodNotFound        CMM not present
+-171   cmMethodError   cmMethodError
+-170   cmProfileError  cmProfileError
+-157   cDepthErr       invalid pixel depth
+-156   cResErr invalid resolution for MakeITable
+-155   cDevErr invalid type of graphics device
+-154   cProtectErr     colorTable entry protection violation
+-153   cRangeErr       range error on colorTable request
+-152   cNoMemErr       failed to allocate memory for structure
+-151   cTempMemErr     failed to allocate memory for temporary structures
+-150   cMatchErr       Color2Index failed to find an index
+-149   insufficientStackErr    insufficientStackErr
+-148   pixMapTooDeepErr        pixMapTooDeepErr
+-147   rgnOverflowErr  rgnOverflowErr
+-145   noMemForPictPlaybackErr noMemForPictPlaybackErr
+-128   userCanceledErr userCanceledErr
+-127   hMenuFindErr    could not find HMenu's parent in MenuKey (wrong error code - obsolete)
+-126   mBarNFnd        system error code for MBDF not found
+-125   updPixMemErr    insufficient memory to update a pixmap
+-124   volGoneErr      Server volume has been disconnected.
+-123   wrgVolTypErr    Wrong volume type error [operation not supported for MFS]
+-122   badMovErr       Move into offspring error
+-121   tmwdoErr        No free WDCB available
+-120   dirNFErr        Directory not found
+-117   memLockedErr    trying to move a locked block (MoveHHi)
+-116   memSCErr        Size Check failed
+-115   memBCErr        Block Check failed
+-114   memPCErr        Pointer Check failed
+-113   memAZErr        Address in zone check failed
+-112   memPurErr       trying to purge a locked or non-purgeable block
+-111   memWZErr        WhichZone failed (applied to free block)
+-110   memAdrErr       address was odd; or out of range
+-109   nilHandleErr    Master Pointer was NIL in HandleZone or other
+-108   memFullErr      Not enough room in heap zone
+-102   noTypeErr       No object of that type in scrap
+-100   noScrapErr      No scrap exists error
+-99    memROZWarn      soft error in ROZ
+-98    portNotCf       driver Open error code (parameter RAM not configured for this connection)
+-97    portInUse       driver Open error code (port is in use)
+-96    portNotPwr      serial port not currently powered
+-95    excessCollsns   excessive collisions on write
+-94    lapProtErr      error in attaching/detaching protocol
+-93    noBridgeErr     no network bridge for non-local send
+-92    eLenErr Length error ddpLenErr
+-91    eMultiErr       Multicast address error ddpSktErr
+-90    breakRecd       Break received (SCC)
+-89    rcvrErr SCC receiver error (framing; parity; OR)
+-88    prInitErr       InitUtil found the parameter ram uninitialized
+-87    prWrErr parameter ram written didn't read-verify
+-86    clkWrErr        time written did not verify
+-85    clkRdErr        unable to read same clock value twice
+-84    verErr  track failed to verify
+-83    fmt2Err can't get enough sync
+-82    fmt1Err can't find sector 0 after track format
+-81    sectNFErr       sector number never found on a track
+-80    seekErr track number wrong on address mark
+-79    spdAdjErr       unable to correctly adjust disk speed
+-78    twoSideErr      tried to read 2nd side on a 1-sided drive
+-77    initIWMErr      unable to initialize IWM
+-76    tk0BadErr       track 0 detect doesn't change
+-75    cantStepErr     step handshake failed
+-74    wrUnderrun      write underrun occurred
+-73    badDBtSlp       bad data mark bit slip nibbles
+-72    badDCksum       bad data mark checksum
+-71    noDtaMkErr      couldn't find a data mark header
+-70    badBtSlpErr     bad addr mark bit slip nibbles
+-69    badCksmErr      addr mark checksum didn't check
+-68    dataVerErr      read verify compare failed
+-67    noAdrMkErr      couldn't find valid addr mark
+-66    noNybErr        couldn't find 5 nybbles in 200 tries
+-65    offLinErr       r/w requested for an off-line drive
+-64    fontDecError    error during font declaration
+-61    wrPermErr       write permissions error
+-60    badMDBErr       bad master directory block
+-59    fsRnErr file system internal error:during rename the old entry was deleted but could not be restored.
+-58    extFSErr        volume in question belongs to an external fs
+-57    noMacDskErr     not a mac diskette (sig bytes are wrong)
+-56    nsDrvErr        no such drive (tried to mount a bad drive num)
+-55    volOnLinErr     drive volume already on-line at MountVol
+-54    permErr permissions error (on file open)
+-53    volOffLinErr    volume not on line error (was Ejected)
+-52    gfpErr  get file position error
+-51    rfNumErr        refnum error
+-50    paramErr        error in user parameter list
+-49    opWrErr file already open with with write permission
+-48    dupFNErr        duplicate filename (rename)
+-47    fBsyErr File is busy (delete)
+-46    vLckdErr        volume is locked
+-45    fLckdErr        file is locked
+-44    wPrErr  diskette is write protected.
+-43    fnfErr  File not found
+-42    tmfoErr too many files open
+-41    mFulErr memory full (open) or file won't fit (load)
+-40    posErr  tried to position to before start of file (r/w)
+-39    eofErr  End of file
+-38    fnOpnErr        File not open
+-37    bdNamErr        there may be no bad names in the final system!
+-36    ioErr   I/O error (bummers)
+-35    nsvErr  no such volume
+-34    dskFulErr       disk full
+-33    dirFulErr       Directory full
+-30    dceExtErr       dce extension error
+-29    unitTblFullErr  unit table has no more entries
+-28    notOpenErr      Couldn't rd/wr/ctl/sts cause driver not opened
+-27    iIOAbortErr     IO abort error (Printing Manager)
+-26    dInstErr        DrvrInstall couldn't find driver in resources
+-25    dRemovErr       tried to remove an open driver
+-24    closErr I/O System Errors
+-23    openErr I/O System Errors
+-22    unitEmptyErr    I/O System Errors
+-21    badUnitErr      I/O System Errors
+-20    writErr I/O System Errors
+-19    readErr I/O System Errors
+-18    statusErr       I/O System Errors
+-17    controlErr      I/O System Errors
+-13    dsExtensionsDisabled    say \96Extensions Disabled\94
+-12    dsHD20Installed say \96HD20 Startup\94
+-11    dsDisassemblerInstalled say \96Disassembler Installed\94
+-10    dsMacsBugInstalled      say \96MacsBug Installed\94
+-8     seNoDB  no debugger installed to handle debugger command
+-5     SlpTypeErr      invalid queue element
+-4     unimpErr        unimplemented core routine
+-3     corErr  core routine number out of range
+-2     dsNoExtsDisassembler    not a SysErr, just a placeholder
+-1     qErr    queue element not found during deletion
+0      tsmComponentNoErr       component result = no error
+1      EPERM   Operation not permitted
+2      ENOENT  No such file or directory
+3      ESRCH   No such process
+4      EINTR   Interrupted system call
+5      EIO     Input/output error
+6      ENXIO   Device not configured
+7      E2BIG   Argument list too long
+8      ENOEXEC Exec format error
+9      EBADF   Bad file descriptor
+10     ECHILD  No child processes
+11     EDEADLK Resource deadlock avoided
+12     ENOMEM  Cannot allocate memory
+13     EACCES  Permission denied
+14     EFAULT  Bad address
+15     ECANCELED       Operation cancelled
+16     EBUSY   Device busy
+17     EEXIST  File exists
+18     EXDEV   Cross-device link
+19     ENODEV  Operation not supported by device
+20     ENOTDIR Not a directory
+21     EISDIR  Is a directory
+22     EINVAL  Invalid argument
+23     ENFILE  Too many open files in system
+24     EMFILE  Too many open files
+25     ENOTTY  Inappropriate ioctl for device
+27     EFBIG   File too large
+28     ENOSPC  No space left on device
+29     ESPIPE  Illegal seek
+30     EROFS   Read-only file system
+31     EMLINK  Too many links
+32     EPIPE   Broken pipe
+33     EDOM    Numerical argument out of domain
+34     ERANGE  Result too large
+35     EAGAIN  Resource temporarily unavailable
+36     EINPROGRESS     Operation now in progress
+37     EALREADY        Operation already in progress
+38     ENOTSOCK        Socket operation on non-socket
+39     EDESTADDRREQ    Destination address required
+40     EMSGSIZE        Message too long
+41     EPROTOTYPE      Protocol wrong type for socket
+42     ENOPROTOOPT     Protocol not available
+43     EPROTONOSUPPORT Protocol not supported
+44     ESOCKTNOSUPPORT Socket type not supported
+45     EOPNOTSUPP      Operation not supported
+46     EPFNOSUPPORT    Protocol family not supported
+47     EAFNOSUPPORT    Address family not supported by protocol family
+48     EADDRINUSE      Address already in use
+49     EADDRNOTAVAIL   Can't assign requested address
+50     ENETDOWN        Network is down
+51     ENETUNREACH     Network is unreachable
+52     ENETRESET       Network dropped connection on reset
+53     ECONNABORTED    Software caused connection abort
+54     ECONNRESET      Connection reset by peer
+55     ENOBUFS No buffer space available
+56     EISCONN Socket is already connected
+57     ENOTCONN        Socket is not connected
+58     ESHUTDOWN       Can't send after socket shutdown
+59     ETOOMANYREFS    Too many references: can't splice
+60     ETIMEDOUT       Operation timed out
+61     ECONNREFUSED    Connection refused
+62     ELOOP   Too many levels of symbolic links
+63     ENAMETOOLONG    File name too long
+64     EHOSTDOWN       Host is down
+65     EHOSTUNREACH    No route to host
+66     ENOTEMPTY       Directory not empty
+67     ELOOK   Internal mapping for kOTLookErr, don't return to client
+77     ENOLCK  No locks available
+78     ENOSYS  Function not implemented
diff --git a/Mac/tclmods/tclMacNotify.c b/Mac/tclmods/tclMacNotify.c
new file mode 100644 (file)
index 0000000..8fc313a
--- /dev/null
@@ -0,0 +1,429 @@
+/* 
+ * tclMacNotify.c --
+ *
+ *     This file contains Macintosh-specific procedures for the notifier,
+ *     which is the lowest-level part of the Tcl event loop.  This file
+ *     works together with ../generic/tclNotify.c.
+ *
+ * Copyright (c) 1995-1996 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * SCCS: @(#) tclMacNotify.c 1.36 97/05/07 19:09:29
+ */
+
+#ifdef USE_GUSI
+/* Move this include up otherwise tclPort.h tried to redefine signals */
+#include <sys/signal.h>
+#endif
+#include "tclInt.h"
+#include "tclPort.h"
+#include "tclMac.h"
+#include "tclMacInt.h"
+#include <signal.h>
+#include <Events.h>
+#include <LowMem.h>
+#include <Processes.h>
+#include <Timer.h>
+
+
+/* 
+ * This is necessary to work around a bug in Apple's Universal header files
+ * for the CFM68K libraries.
+ */
+
+#ifdef __CFM68K__
+#undef GetEventQueue
+extern pascal QHdrPtr GetEventQueue(void)
+ THREEWORDINLINE(0x2EBC, 0x0000, 0x014A);
+#pragma import list GetEventQueue
+#define GetEvQHdr() GetEventQueue()
+#endif
+
+/*
+ * The follwing static indicates whether this module has been initialized.
+ */
+
+static int initialized = 0;
+
+/*
+ * The following structure contains the state information for the
+ * notifier module.
+ */
+
+static struct {
+    int timerActive;           /* 1 if timer is running. */
+    Tcl_Time timer;            /* Time when next timer event is expected. */
+    int flags;                 /* OR'ed set of flags defined below. */
+    Point lastMousePosition;   /* Last known mouse location. */
+    RgnHandle utilityRgn;      /* Region used as the mouse region for
+                                * WaitNextEvent and the update region when
+                                * checking for events. */   
+    Tcl_MacConvertEventPtr eventProcPtr;
+                               /* This pointer holds the address of the
+                                * function that will handle all incoming
+                                * Macintosh events. */
+} notifier;
+
+/*
+ * The following defines are used in the flags field of the notifier struct.
+ */
+
+#define NOTIFY_IDLE    (1<<1)  /* Tcl_ServiceIdle should be called. */
+#define NOTIFY_TIMER   (1<<2)  /* Tcl_ServiceTimer should be called. */
+
+/*
+ * Prototypes for procedures that are referenced only in this file:
+ */
+
+static int             HandleMacEvents _ANSI_ARGS_((void));
+static void            InitNotifier _ANSI_ARGS_((void));
+static void            NotifierExitHandler _ANSI_ARGS_((
+                           ClientData clientData));
+\f
+/*
+ *----------------------------------------------------------------------
+ *
+ * InitNotifier --
+ *
+ *     Initializes the notifier structure.
+ *
+ * Results:
+ *     None.
+ *
+ * Side effects:
+ *     Creates a new exit handler.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+InitNotifier(void)
+{
+    initialized = 1;
+    memset(&notifier, 0, sizeof(notifier));
+    Tcl_CreateExitHandler(NotifierExitHandler, NULL);
+}
+\f
+/*
+ *----------------------------------------------------------------------
+ *
+ * NotifierExitHandler --
+ *
+ *     This function is called to cleanup the notifier state before
+ *     Tcl is unloaded.
+ *
+ * Results:
+ *     None.
+ *
+ * Side effects:
+ *     None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+NotifierExitHandler(
+    ClientData clientData)     /* Not used. */
+{
+    initialized = 0;
+}
+\f
+/*
+ *----------------------------------------------------------------------
+ *
+ * HandleMacEvents --
+ *
+ *     This function checks for events from the Macintosh event queue.
+ *
+ * Results:
+ *     Returns 1 if event found, 0 otherwise.
+ *
+ * Side effects:
+ *     Pulls events off of the Mac event queue and then calls
+ *     convertEventProc.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+HandleMacEvents(void)
+{
+    EventRecord theEvent;
+    int eventFound = 0, needsUpdate = 0;
+    Point currentMouse;
+    WindowRef windowRef;
+    Rect mouseRect;
+
+    /*
+     * Check for mouse moved events.  These events aren't placed on the
+     * system event queue unless we call WaitNextEvent.
+     */
+
+    GetGlobalMouse(&currentMouse);
+    if ((notifier.eventProcPtr != NULL) &&
+           !EqualPt(currentMouse, notifier.lastMousePosition)) {
+       notifier.lastMousePosition = currentMouse;
+       theEvent.what = nullEvent;
+       if ((*notifier.eventProcPtr)(&theEvent) == true) {
+           eventFound = 1;
+       }
+    }
+
+    /*
+     * Check for update events.  Since update events aren't generated
+     * until we call GetNextEvent, we may need to force a call to
+     * GetNextEvent, even if the queue is empty.
+     */
+
+    for (windowRef = FrontWindow(); windowRef != NULL;
+           windowRef = GetNextWindow(windowRef)) {
+       GetWindowUpdateRgn(windowRef, notifier.utilityRgn);
+       if (!EmptyRgn(notifier.utilityRgn)) {
+           needsUpdate = 1;
+           break;
+       }
+    }
+    
+    /*
+     * Process events from the OS event queue.
+     */
+
+    while (needsUpdate || (GetEvQHdr()->qHead != NULL)) {
+       GetGlobalMouse(&currentMouse);
+       SetRect(&mouseRect, currentMouse.h, currentMouse.v,
+               currentMouse.h + 1, currentMouse.v + 1);
+       RectRgn(notifier.utilityRgn, &mouseRect);
+       
+       WaitNextEvent(everyEvent, &theEvent, 5, notifier.utilityRgn);
+       needsUpdate = 0;
+       if ((notifier.eventProcPtr != NULL)
+               && ((*notifier.eventProcPtr)(&theEvent) == true)) {
+           eventFound = 1;
+       }
+    }
+    
+    return eventFound;
+}
+\f
+/*
+ *----------------------------------------------------------------------
+ *
+ * Tcl_SetTimer --
+ *
+ *     This procedure sets the current notifier timer value.  The
+ *     notifier will ensure that Tcl_ServiceAll() is called after
+ *     the specified interval, even if no events have occurred.
+ *
+ * Results:
+ *     None.
+ *
+ * Side effects:
+ *     Replaces any previous timer.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+Tcl_SetTimer(
+    Tcl_Time *timePtr)         /* New value for interval timer. */
+{
+    if (!timePtr) {
+       notifier.timerActive = 0;
+    } else {
+       /*
+        * Compute when the timer should fire.
+        */
+       
+       TclpGetTime(&notifier.timer);
+       notifier.timer.sec += timePtr->sec;
+       notifier.timer.usec += timePtr->usec;
+       if (notifier.timer.usec >= 1000000) {
+           notifier.timer.usec -= 1000000;
+           notifier.timer.sec += 1;
+       }
+       notifier.timerActive = 1;
+    }
+}
+\f
+/*
+ *----------------------------------------------------------------------
+ *
+ * Tcl_WaitForEvent --
+ *
+ *     This function is called by Tcl_DoOneEvent to wait for new
+ *     events on the message queue.  If the block time is 0, then
+ *     Tcl_WaitForEvent just polls the event queue without blocking.
+ *
+ * Results:
+ *     Always returns 0.
+ *
+ * Side effects:
+ *     None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+Tcl_WaitForEvent(
+    Tcl_Time *timePtr)         /* Maximum block time. */
+{
+    int found;
+    EventRecord macEvent;
+    long sleepTime = 5;
+    long ms;
+    Point currentMouse;
+    void * timerToken;
+    Rect mouseRect;
+
+    /*
+     * Compute the next timeout value.
+     */
+
+    if (!timePtr) {
+       ms = INT_MAX;
+    } else {
+       ms = (timePtr->sec * 1000) + (timePtr->usec / 1000);
+    }
+    timerToken = TclMacStartTimer((long) ms);
+   
+    /*
+     * Poll the Mac event sources.  This loop repeats until something
+     * happens: a timeout, a socket event, mouse motion, or some other
+     * window event.  Note that we don't call WaitNextEvent if another
+     * event is found to avoid context switches.  This effectively gives
+     * events coming in via WaitNextEvent a slightly lower priority.
+     */
+
+    found = 0;
+    if (notifier.utilityRgn == NULL) {
+       notifier.utilityRgn = NewRgn();
+    }
+
+    while (!found) {
+       /*
+        * Check for generated and queued events.
+        */
+
+       if (HandleMacEvents()) {
+           found = 1;
+       }
+
+       /*
+        * Check for time out.
+        */
+
+       if (!found && TclMacTimerExpired(timerToken)) {
+           found = 1;
+       }
+       
+       /*
+        * Mod by Jack: poll for select() events. Code is in TclSelectNotify.c
+        */
+       {
+           int Tcl_PollSelectEvent(void);
+           if (!found && Tcl_PollSelectEvent())
+               found = 1;
+       }
+
+       /*
+        * Check for window events.  We may receive a NULL event for
+        * various reasons. 1) the timer has expired, 2) a mouse moved
+        * event is occuring or 3) the os is giving us time for idle
+        * events.  Note that we aren't sharing the processor very
+        * well here.  We really ought to do a better job of calling
+        * WaitNextEvent for time slicing purposes.
+        */
+
+       if (!found) {
+           /*
+            * Set up mouse region so we will wake if the mouse is moved.
+            * We do this by defining the smallest possible region around
+            * the current mouse position.
+            */
+
+           GetGlobalMouse(&currentMouse);
+           SetRect(&mouseRect, currentMouse.h, currentMouse.v,
+                   currentMouse.h + 1, currentMouse.v + 1);
+           RectRgn(notifier.utilityRgn, &mouseRect);
+       
+           WaitNextEvent(everyEvent, &macEvent, sleepTime,
+                   notifier.utilityRgn);
+
+           if (notifier.eventProcPtr != NULL) {
+               if ((*notifier.eventProcPtr)(&macEvent) == true) {
+                   found = 1;
+               }
+           }
+       }
+    }
+    TclMacRemoveTimer(timerToken);
+    return 0;
+}
+\f
+/*
+ *----------------------------------------------------------------------
+ *
+ * Tcl_Sleep --
+ *
+ *     Delay execution for the specified number of milliseconds.  This
+ *     is not a very good call to make.  It will block the system -
+ *     you will not even be able to switch applications.
+ *
+ * Results:
+ *     None.
+ *
+ * Side effects:
+ *     Time passes.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+Tcl_Sleep(
+    int ms)                    /* Number of milliseconds to sleep. */
+{
+    EventRecord dummy;
+    void *timerToken;
+    
+    if (ms <= 0) {
+       return;
+    }
+    
+    timerToken = TclMacStartTimer((long) ms);
+    while (1) {
+       WaitNextEvent(0, &dummy, (ms / 16.66) + 1, NULL);
+       
+       if (TclMacTimerExpired(timerToken)) {
+           break;
+       }
+    }
+    TclMacRemoveTimer(timerToken);
+}
+\f
+/*
+ *----------------------------------------------------------------------
+ *
+ * Tcl_MacSetEventProc --
+ *
+ *     This function sets the event handling procedure for the 
+ *     application.  This function will be passed all incoming Mac
+ *     events.  This function usually controls the console or some
+ *     other entity like Tk.
+ *
+ * Results:
+ *     None.
+ *
+ * Side effects:
+ *     Changes the event handling function.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+Tcl_MacSetEventProc(
+    Tcl_MacConvertEventPtr procPtr)
+{
+    notifier.eventProcPtr = procPtr;
+}