From 36e23e056f181c6f07779139c4f3f22603c402bf Mon Sep 17 00:00:00 2001 From: cvs2svn Date: Wed, 23 May 2001 14:52:45 +0000 Subject: This commit was manufactured by cvs2svn to create branch 'release21-maint'. --- Lib/test/test_mutants.py | 153 + Mac/Build/PythonCore.exp | 2669 +++++++ Mac/Build/PythonCoreCarbon.exp | 2325 ++++++ Mac/Build/PythonInterpreter.mcp | Bin 0 -> 122174 bytes Mac/Build/PythonStandSmall.mcp | Bin 0 -> 262235 bytes Mac/Build/PythonStandalone.mcp | Bin 0 -> 149425 bytes Mac/Build/_dummy_tkinter.mcp | Bin 0 -> 50203 bytes Mac/Contrib/AECaptureParser/AECaptureParser.py | 362 + Mac/Contrib/BBPy.lm/BBPy.c | 456 ++ Mac/Contrib/BBPy.lm/PythonBBLM.txt | 12 + Mac/Contrib/BBPy/PythonSlave.py | 129 + Mac/Contrib/PythonScript/ReadMe.txt | 86 + Mac/Demo/applescript/Disk_Copy/Special_Events.py | 424 + Mac/Demo/applescript/Disk_Copy/Standard_Suite.py | 477 ++ Mac/Demo/building.html | 514 ++ Mac/Demo/calldll/readme | 48 + Mac/Demo/textedit/ped.py | 348 + Mac/Distributions/(vise)/Python 2.1.vct | 1 + Mac/IDE scripts/Hack/Toolbox Assistant... | 45 + Mac/Include/getapplbycreator.h | 32 + Mac/Include/macbuildno.h | 1 + Mac/Include/pymactoolbox.h | 120 + Mac/Lib/MACFS.py | 106 + Mac/Lib/cfmfile.py | 186 + Mac/Lib/findertools.py | 833 ++ Mac/Lib/lib-scripting/AppleScript_Suite.py | 1600 ++++ .../lib-scripting/CodeWarrior_Standard_Suite.py | 423 + Mac/Lib/lib-scripting/Finder_Suite.py | 1632 ++++ Mac/Lib/lib-scripting/Metrowerks_Shell_Suite.py | 1820 +++++ Mac/Lib/lib-scripting/Standard_Suite.py | 713 ++ Mac/Lib/lib-scripting/Standard_URL_suite.py | 62 + Mac/Lib/lib-scripting/WWW_Suite.py | 426 + .../CodeWarrior/CodeWarrior_suite.py | 687 ++ .../CodeWarrior/Metrowerks_Shell_Suite.py | 2355 ++++++ .../CodeWarrior/Standard_Suite.py | 410 + .../Finder/Containers_and_folders.py | 484 ++ Mac/Lib/lib-scriptpackages/Finder/Earlier_terms.py | 728 ++ .../Finder/Files_and_suitcases.py | 283 + Mac/Lib/lib-scriptpackages/Finder/Finder_Basics.py | 370 + Mac/Lib/lib-scriptpackages/Finder/Finder_items.py | 332 + .../lib-scriptpackages/Finder/Obsolete_terms.py | 209 + .../lib-scriptpackages/Finder/Type_Definitions.py | 270 + .../lib-scriptpackages/Finder/Window_classes.py | 391 + .../lib-scriptpackages/Netscape/Mozilla_suite.py | 269 + Mac/Lib/lib-scriptpackages/Netscape/PowerPlant.py | 86 + .../lib-scriptpackages/Netscape/Required_suite.py | 108 + .../lib-scriptpackages/Netscape/Standard_Suite.py | 238 + .../Netscape/Standard_URL_suite.py | 62 + Mac/Lib/lib-scriptpackages/Netscape/Text.py | 120 + .../Netscape/WorldWideWeb_suite.py | 426 + Mac/Lib/lib-scriptpackages/Netscape/__init__.py | 55 + .../StdSuites/AppleScript_Suite.py | 2074 +++++ .../lib-scriptpackages/StdSuites/Standard_Suite.py | 703 ++ .../lib-scriptpackages/StdSuites/Table_Suite.py | 100 + Mac/Lib/lib-scriptpackages/StdSuites/Text_Suite.py | 215 + Mac/Lib/lib-toolbox/AppleEvents.py | 952 +++ Mac/Lib/lib-toolbox/Dialogs.py | 72 + Mac/Lib/lib-toolbox/Icons.py | 359 + Mac/Lib/macerrors.py | 1789 +++++ Mac/Lib/test/tlist_dialog.rsrc | 1 + Mac/Modules/Nav.c | 977 +++ Mac/Modules/app/Appmodule.c | 1168 +++ Mac/Modules/app/appsupport.py | 117 + Mac/Modules/cm/Cmmodule.c | 790 ++ Mac/Modules/cm/cmsupport.py | 130 + Mac/Modules/dlg/Dlgmodule.c | 1426 ++++ Mac/Modules/dlg/dlgsupport.py | 304 + Mac/Modules/drag/Dragmodule.c | 1004 +++ Mac/Modules/drag/dragsupport.py | 290 + Mac/Modules/evt/Evtmodule.c | 451 ++ Mac/Modules/evt/evtsupport.py | 108 + Mac/Modules/fm/fmsupport.py | 79 + Mac/Modules/gestaltmodule.c | 69 + Mac/Modules/help/Helpmodule.c | 292 + Mac/Modules/icgluemodule.c | 620 ++ Mac/Modules/icn/Icnmodule.c | 1409 ++++ Mac/Modules/icn/icnsupport.py | 94 + Mac/Modules/list/Listmodule.c | 1001 +++ Mac/Modules/list/listsupport.py | 196 + Mac/Modules/macmodule.c | 652 ++ Mac/Modules/macosmodule.c | 788 ++ Mac/Modules/menu/Menumodule.c | 2558 ++++++ Mac/Modules/menu/menusupport.py | 99 + Mac/Modules/qdoffs/Qdoffsmodule.c | 596 ++ Mac/Modules/qdoffs/qdoffssupport.py | 140 + Mac/Modules/qt/Qtmodule.c | 8418 ++++++++++++++++++++ Mac/Modules/qt/qtsupport.py | 322 + Mac/Modules/res/Resmodule.c | 1579 ++++ Mac/Modules/res/resscan.py | 89 + Mac/Modules/res/ressupport.py | 196 + Mac/Modules/scrap/scrapsupport.py | 66 + Mac/Modules/te/TEmodule.c | 1032 +++ Mac/Modules/te/tesupport.py | 175 + Mac/Python/getapplbycreator.c | 163 + Mac/Python/pyGUSISIOUX.cp | 211 + Mac/ReadMe | 218 + Mac/Relnotes | 104 + Mac/Resources/version.r | 30 + Mac/_checkversion.py | 16 + Mac/mwerks/mwerks_applet_config.h | 39 + Mac/mwerks/mwerks_carbonNOGUSI_config.h | 46 + Mac/mwerks/mwerks_carbon_config.h | 46 + Mac/mwerks/mwerks_carbongusi_config.h | 45 + Mac/mwerks/mwerks_carbonplugin_config.h | 21 + Mac/mwerks/mwerks_nonshared_config.h | 47 + Mac/mwerks/mwerks_nscarbon_config.h | 52 + Mac/mwerks/mwerks_plugin_config.h | 17 + Mac/mwerks/mwerks_shared_config.h | 49 + Mac/mwerks/mwerks_shcarbon_config.h | 54 + Mac/mwerks/mwerks_small_config.h | 45 + Mac/mwerks/mwerks_thrcarbonsm_config.h | 47 + Mac/mwerks/mwerks_threadsmall_config.h | 41 + Mac/mwerks/mwerks_tkplugin_config.h | 13 + Mac/scripts/bgenall.py | 38 + Mac/scripts/errors.txt | 1789 +++++ Mac/tclmods/tclMacNotify.c | 429 + 116 files changed, 60946 insertions(+) create mode 100644 Lib/test/test_mutants.py create mode 100644 Mac/Build/PythonCore.exp create mode 100644 Mac/Build/PythonCoreCarbon.exp create mode 100644 Mac/Build/PythonInterpreter.mcp create mode 100644 Mac/Build/PythonStandSmall.mcp create mode 100644 Mac/Build/PythonStandalone.mcp create mode 100644 Mac/Build/_dummy_tkinter.mcp create mode 100644 Mac/Contrib/AECaptureParser/AECaptureParser.py create mode 100644 Mac/Contrib/BBPy.lm/BBPy.c create mode 100644 Mac/Contrib/BBPy.lm/PythonBBLM.txt create mode 100644 Mac/Contrib/BBPy/PythonSlave.py create mode 100644 Mac/Contrib/PythonScript/ReadMe.txt create mode 100644 Mac/Demo/applescript/Disk_Copy/Special_Events.py create mode 100644 Mac/Demo/applescript/Disk_Copy/Standard_Suite.py create mode 100644 Mac/Demo/building.html create mode 100644 Mac/Demo/calldll/readme create mode 100644 Mac/Demo/textedit/ped.py create mode 100644 Mac/Distributions/(vise)/Python 2.1.vct create mode 100644 Mac/IDE scripts/Hack/Toolbox Assistant... create mode 100644 Mac/Include/getapplbycreator.h create mode 100644 Mac/Include/macbuildno.h create mode 100644 Mac/Include/pymactoolbox.h create mode 100644 Mac/Lib/MACFS.py create mode 100644 Mac/Lib/cfmfile.py create mode 100644 Mac/Lib/findertools.py create mode 100644 Mac/Lib/lib-scripting/AppleScript_Suite.py create mode 100644 Mac/Lib/lib-scripting/CodeWarrior_Standard_Suite.py create mode 100644 Mac/Lib/lib-scripting/Finder_Suite.py create mode 100644 Mac/Lib/lib-scripting/Metrowerks_Shell_Suite.py create mode 100644 Mac/Lib/lib-scripting/Standard_Suite.py create mode 100644 Mac/Lib/lib-scripting/Standard_URL_suite.py create mode 100644 Mac/Lib/lib-scripting/WWW_Suite.py create mode 100644 Mac/Lib/lib-scriptpackages/CodeWarrior/CodeWarrior_suite.py create mode 100644 Mac/Lib/lib-scriptpackages/CodeWarrior/Metrowerks_Shell_Suite.py create mode 100644 Mac/Lib/lib-scriptpackages/CodeWarrior/Standard_Suite.py create mode 100644 Mac/Lib/lib-scriptpackages/Finder/Containers_and_folders.py create mode 100644 Mac/Lib/lib-scriptpackages/Finder/Earlier_terms.py create mode 100644 Mac/Lib/lib-scriptpackages/Finder/Files_and_suitcases.py create mode 100644 Mac/Lib/lib-scriptpackages/Finder/Finder_Basics.py create mode 100644 Mac/Lib/lib-scriptpackages/Finder/Finder_items.py create mode 100644 Mac/Lib/lib-scriptpackages/Finder/Obsolete_terms.py create mode 100644 Mac/Lib/lib-scriptpackages/Finder/Type_Definitions.py create mode 100644 Mac/Lib/lib-scriptpackages/Finder/Window_classes.py create mode 100644 Mac/Lib/lib-scriptpackages/Netscape/Mozilla_suite.py create mode 100644 Mac/Lib/lib-scriptpackages/Netscape/PowerPlant.py create mode 100644 Mac/Lib/lib-scriptpackages/Netscape/Required_suite.py create mode 100644 Mac/Lib/lib-scriptpackages/Netscape/Standard_Suite.py create mode 100644 Mac/Lib/lib-scriptpackages/Netscape/Standard_URL_suite.py create mode 100644 Mac/Lib/lib-scriptpackages/Netscape/Text.py create mode 100644 Mac/Lib/lib-scriptpackages/Netscape/WorldWideWeb_suite.py create mode 100644 Mac/Lib/lib-scriptpackages/Netscape/__init__.py create mode 100644 Mac/Lib/lib-scriptpackages/StdSuites/AppleScript_Suite.py create mode 100644 Mac/Lib/lib-scriptpackages/StdSuites/Standard_Suite.py create mode 100644 Mac/Lib/lib-scriptpackages/StdSuites/Table_Suite.py create mode 100644 Mac/Lib/lib-scriptpackages/StdSuites/Text_Suite.py create mode 100644 Mac/Lib/lib-toolbox/AppleEvents.py create mode 100644 Mac/Lib/lib-toolbox/Dialogs.py create mode 100644 Mac/Lib/lib-toolbox/Icons.py create mode 100644 Mac/Lib/macerrors.py create mode 100644 Mac/Lib/test/tlist_dialog.rsrc create mode 100644 Mac/Modules/Nav.c create mode 100644 Mac/Modules/app/Appmodule.c create mode 100644 Mac/Modules/app/appsupport.py create mode 100644 Mac/Modules/cm/Cmmodule.c create mode 100644 Mac/Modules/cm/cmsupport.py create mode 100644 Mac/Modules/dlg/Dlgmodule.c create mode 100644 Mac/Modules/dlg/dlgsupport.py create mode 100644 Mac/Modules/drag/Dragmodule.c create mode 100644 Mac/Modules/drag/dragsupport.py create mode 100644 Mac/Modules/evt/Evtmodule.c create mode 100644 Mac/Modules/evt/evtsupport.py create mode 100644 Mac/Modules/fm/fmsupport.py create mode 100644 Mac/Modules/gestaltmodule.c create mode 100644 Mac/Modules/help/Helpmodule.c create mode 100644 Mac/Modules/icgluemodule.c create mode 100644 Mac/Modules/icn/Icnmodule.c create mode 100644 Mac/Modules/icn/icnsupport.py create mode 100644 Mac/Modules/list/Listmodule.c create mode 100644 Mac/Modules/list/listsupport.py create mode 100644 Mac/Modules/macmodule.c create mode 100644 Mac/Modules/macosmodule.c create mode 100644 Mac/Modules/menu/Menumodule.c create mode 100644 Mac/Modules/menu/menusupport.py create mode 100644 Mac/Modules/qdoffs/Qdoffsmodule.c create mode 100644 Mac/Modules/qdoffs/qdoffssupport.py create mode 100644 Mac/Modules/qt/Qtmodule.c create mode 100644 Mac/Modules/qt/qtsupport.py create mode 100644 Mac/Modules/res/Resmodule.c create mode 100644 Mac/Modules/res/resscan.py create mode 100644 Mac/Modules/res/ressupport.py create mode 100644 Mac/Modules/scrap/scrapsupport.py create mode 100644 Mac/Modules/te/TEmodule.c create mode 100644 Mac/Modules/te/tesupport.py create mode 100644 Mac/Python/getapplbycreator.c create mode 100644 Mac/Python/pyGUSISIOUX.cp create mode 100644 Mac/ReadMe create mode 100644 Mac/Relnotes create mode 100644 Mac/Resources/version.r create mode 100644 Mac/_checkversion.py create mode 100644 Mac/mwerks/mwerks_applet_config.h create mode 100644 Mac/mwerks/mwerks_carbonNOGUSI_config.h create mode 100644 Mac/mwerks/mwerks_carbon_config.h create mode 100644 Mac/mwerks/mwerks_carbongusi_config.h create mode 100644 Mac/mwerks/mwerks_carbonplugin_config.h create mode 100644 Mac/mwerks/mwerks_nonshared_config.h create mode 100644 Mac/mwerks/mwerks_nscarbon_config.h create mode 100644 Mac/mwerks/mwerks_plugin_config.h create mode 100644 Mac/mwerks/mwerks_shared_config.h create mode 100644 Mac/mwerks/mwerks_shcarbon_config.h create mode 100644 Mac/mwerks/mwerks_small_config.h create mode 100644 Mac/mwerks/mwerks_thrcarbonsm_config.h create mode 100644 Mac/mwerks/mwerks_threadsmall_config.h create mode 100644 Mac/mwerks/mwerks_tkplugin_config.h create mode 100644 Mac/scripts/bgenall.py create mode 100644 Mac/scripts/errors.txt create mode 100644 Mac/tclmods/tclMacNotify.c diff --git a/Lib/test/test_mutants.py b/Lib/test/test_mutants.py new file mode 100644 index 0000000..3cd35d1 --- /dev/null +++ b/Lib/test/test_mutants.py @@ -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 ). +# +# 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 . 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 index 0000000..ee15d8b --- /dev/null +++ b/Mac/Build/PythonCore.exp @@ -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>::~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>::~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*) +GUSIFSOpenRF +GUSIFSOpenDF +GUSIFSSetFInfo +GUSIFSGetFInfo +GUSIFSHSetFInfo__FP33GUSIIOPBWrapper<14HParamBlockRec> # GUSIFSHSetFInfo(GUSIIOPBWrapper*) +GUSIFSHGetFInfo__FP33GUSIIOPBWrapper<14HParamBlockRec> # GUSIFSHGetFInfo(GUSIIOPBWrapper*) +GUSIFSOpenDriver +GUSIFSOpen__FP32GUSIIOPBWrapper<13ParamBlockRec> # GUSIFSOpen(GUSIIOPBWrapper*) +GUSIFSHGetVInfo__FP33GUSIIOPBWrapper<14HParamBlockRec> # GUSIFSHGetVInfo(GUSIIOPBWrapper*) +GUSIFSGetVInfo__FP32GUSIIOPBWrapper<13ParamBlockRec> # GUSIFSGetVInfo(GUSIIOPBWrapper*) +GUSIFSGetFCBInfo__FP26GUSIIOPBWrapper<8FCBPBRec> # GUSIFSGetFCBInfo(GUSIIOPBWrapper*) +GUSIFSSetCatInfo__FP30GUSIIOPBWrapper<11GUSICatInfo> # GUSIFSSetCatInfo(GUSIIOPBWrapper*) +GUSIFSGetCatInfo__FP30GUSIIOPBWrapper<11GUSICatInfo> # GUSIFSGetCatInfo(GUSIIOPBWrapper*) +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>::~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::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::~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__64GUSISpecificDataFv # GUSISpecificData::~GUSISpecificData() +__dt__80GUSISpecificDataFv # GUSISpecificData::~GUSISpecificData() +get__64GUSISpecificDataFP17GUSISpecificTable # GUSISpecificData::get(GUSISpecificTable*) +get__80GUSISpecificDataFP17GUSISpecificTable # GUSISpecificData::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, std::_Single>>::~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*) +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__40GUSISpecificDataFP17GUSISpecificTable # GUSISpecificData::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__40GUSISpecificDataFv # GUSISpecificData::~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__53GUSISpecificDataFv # GUSISpecificData::~GUSISpecificData() +get__53GUSISpecificDataFP17GUSISpecificTable # GUSISpecificData::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>::~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>::~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 index 0000000..4d33682 --- /dev/null +++ b/Mac/Build/PythonCoreCarbon.exp @@ -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>::~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>::~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*) +GUSIFSOpenRF +GUSIFSOpenDF +GUSIFSSetFInfo +GUSIFSGetFInfo +GUSIFSHSetFInfo__FP33GUSIIOPBWrapper<14HParamBlockRec> # GUSIFSHSetFInfo(GUSIIOPBWrapper*) +GUSIFSHGetFInfo__FP33GUSIIOPBWrapper<14HParamBlockRec> # GUSIFSHGetFInfo(GUSIIOPBWrapper*) +GUSIFSHGetVInfo__FP33GUSIIOPBWrapper<14HParamBlockRec> # GUSIFSHGetVInfo(GUSIIOPBWrapper*) +GUSIFSGetFCBInfo__FP26GUSIIOPBWrapper<8FCBPBRec> # GUSIFSGetFCBInfo(GUSIIOPBWrapper*) +GUSIFSSetCatInfo__FP30GUSIIOPBWrapper<11GUSICatInfo> # GUSIFSSetCatInfo(GUSIIOPBWrapper*) +GUSIFSGetCatInfo__FP30GUSIIOPBWrapper<11GUSICatInfo> # GUSIFSGetCatInfo(GUSIIOPBWrapper*) +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>::~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__64GUSISpecificDataFv # GUSISpecificData::~GUSISpecificData() +__dt__80GUSISpecificDataFv # GUSISpecificData::~GUSISpecificData() +get__64GUSISpecificDataFP17GUSISpecificTable # GUSISpecificData::get(GUSISpecificTable*) +get__80GUSISpecificDataFP17GUSISpecificTable # GUSISpecificData::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__40GUSISpecificDataFP17GUSISpecificTable # GUSISpecificData::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__40GUSISpecificDataFv # GUSISpecificData::~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__53GUSISpecificDataFv # GUSISpecificData::~GUSISpecificData() +get__53GUSISpecificDataFP17GUSISpecificTable # GUSISpecificData::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>::~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>::~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, std::_Single>>::~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*) +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::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::~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 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 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 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 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 index 0000000..3d74f64 --- /dev/null +++ b/Mac/Contrib/AECaptureParser/AECaptureParser.py @@ -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', ")], + '–': [('–', '"')], + '”': [('”', '"')], + '[': [('[', '('), (', ', ',')], + ']': [(']', ')')], + '«': [('«', "«")], + '»': [('»', "»")], + + } + 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:–MoPar:Data:DevDev:Python:Python 1.5.2c1:Extensions”, 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 index 0000000..bcb8d4e --- /dev/null +++ b/Mac/Contrib/BBPy.lm/BBPy.c @@ -0,0 +1,456 @@ +#include + +#define DEBUG 0 + +#define kComponentSignatureString "BBPy.LM" +#include + + +#include +#include +//#include + +#include +#include +#include +#include + +#include + +#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 ¶ms, + 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= 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 ¶ms, + 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 index 0000000..540060a --- /dev/null +++ b/Mac/Contrib/BBPy.lm/PythonBBLM.txt @@ -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 '€' 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 index 0000000..3014f7a --- /dev/null +++ b/Mac/Contrib/BBPy/PythonSlave.py @@ -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ƒ" + + 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 "" ---' + 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 index 0000000..455f12a --- /dev/null +++ b/Mac/Contrib/PythonScript/ReadMe.txt @@ -0,0 +1,86 @@ + +PythonScript +------------ +v0.5 beta 1 24/04/98 + +author: Bill Bedford, + +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)ƒ.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 index 0000000..a98eb8a --- /dev/null +++ b/Mac/Demo/applescript/Disk_Copy/Special_Events.py @@ -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Ž 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Ž 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Ž signature for a Disk Copy document + Required argument: the disk image to be verified + Keyword argument _attributes: AppleEvent attribute dictionary + Returns: Is the DigiSignŽ 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Ž 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Ž 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Ž, 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Ž 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 index 0000000..931246e --- /dev/null +++ b/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py @@ -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Ž 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Ž 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 index 0000000..556eddd --- /dev/null +++ b/Mac/Demo/building.html @@ -0,0 +1,514 @@ + + +Building Mac Python from source + + +

Building Mac Python from source

+
+ +Note: This document is mostly still for Python 2.0, so +it is not correct. See the +MacPython homepage for an updated version, and if none is available +complain bitterly to me and work on it should progress faster. +

+ +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.

+ +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:-).

+ +

+First a warning: this information may become outdated if a new CodeWarrior is +released after MacPython. The +MacPython homepage will +hopefully have updated instructions in that case. +
+ +I am very interested in feedback on this document, send your +comments to the Mac Python Special +Interest Group. + +

What you need.

+ +The following things you definitely need: + +
    + +
  • You need a MacPython source distribution, of course. You can +obtain one from +ftp://ftp.cwi.nl/pub/jack/python/mac or from the companion webpage +at +http://www.cwi.nl/~jack/macpython.html (which has up-to-date links +to the other packages needed too) and possibly also from the standard +python.org ftp +site.
    + +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 CVS +repository use below. + +
  • You need MetroWerks CodeWarrior. The current distribution has +been built with CodeWarrior Pro 6.1. Ordering information is +available on the MetroWerks +homepage. Building Python with MPW or Think/Symantec C is +probably impossible without major surgery. + +
  • You need GUSI version 2, the Grand Unified Socket Interface, by +Matthias Neeracher. The original GUSI is obtainable from +ftp://gusi.sourceforge.net/pub/gusi/. At +the moment Python is built with a slightly modified version of GUSI +2.1.1, so it may be better to check the MacPython homepage +for a GUSI that is most easily used for building Python. +
    + +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:-). +
+ +The MacPython project files are configured to +include a plethora of optional modules, 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: + +
    + +
  • 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 building Tcl/Tk Python +below. + +
  • Waste, a TextEdit replacement written by Marco Piovanelli, <piovanel@kagi.com>. Python +was built using version 2.0, which is included in the CodeWarrior +package. You can also obtain it from <http://www.boingo.com/waste> +and various other places. + +
  • Gdbm library for the Mac. Available from Jack's Mac software page at + +http://www.cwi.nl/~jack/macsoftware.html and +ftp://ftp.cwi.nl/pub/jack/mac. Also in the MacPython cvs repository at +lib-src/gdbm. + +
  • 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 ftp://ftp.uu.net/graphics/jpeg/. Again, +also in the MacPython cvs repository at lib-src/jpeg. + +
  • 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 lib-src/netpbm, etc. The only gotcha is that libtiff lives in +lib-src/netpbm/libtiff, for historical reasons. + +
+ +

Setting Up

+ +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: + +
+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
+
+ +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 buildlibs.prj in the +:Mac:Build folder to build all needed libraries in one +fell swoop, otherwise you will have to build the libraries one by +one.

+ +First build GUSI, both the norla one and the Carbon variant. +

+ +Next, in +libjpeg, pbmplus, +zlib, libpng, gdbm, +andlibtiff 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. + +

Building Tcl/Tk

+ +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 +ftp://ftp.cwi.nl/pub/jack/python/mac/tcltk830src-for-python.sit. Only the +libraries needed to build _tkinter for PPC have been fixed.

+ +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 tkresources.rsrc file. +This is easiest done by building SimpleTk and copying the TEXT, ICON +and CRSR resources from it to tkresources.rsrc. This allows +the _tkinter module to work without an installed Tk/Tcl on your +machine.

+ +Also note that the _tkinter.ppc.slb that is normally distributed +in the PlugIns folder is the one from the Imaging extension, +which has some extra features needed by PIL (and which features should not +hinder normal operation). + + + +Build first the Tcl library, then +SimpleTcl (test it by typing ls -l in the window you get) +then the Tk library, then SimpleTk (which can again be tested with +ls -l). If this all worked you are all set to try +building Python. + +

Building Waste

+ +You do not need to build the Waste libraries, as Python includes the +source modules themselves. + +

The organization of the Python source tree

+ +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: + +
+
Demo +
Demo programs that are not Mac-specific. Some of these may not +work. + +
Extensions +
Extensions to the interpreter that are not Mac-specific. Contains +the img, Imaging and Numerical extensions +in this distribution. + +
Grammar +
The Python grammar. Included for reference only, you cannot build +the parser on a Mac. + +
Include +
Machine-independent header files. + +
Modules +
Machine-independent optional modules. Not all of these will work +on the Mac. + +
Objects +
Machine-independent code for various object types. Most of these are +not really optional: the interpreter will not function without them. + +
Parser +
The Python parser (machine-independent). + +
Python +
The core interpreter. Most files are machine-independent, some +are unix-specific and not used on the Mac. + +
Tools +
Tools for python developers. Contains modulator which +builds skeleton C extension modules, bgen which generates +complete interface modules from information in C header files and +freeze 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. + +
+ +All the mac-specific stuff lives in the Mac folder: +
+
Build +
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). + +
Compat +
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. + +
Demo +
Mac-specific demo programs, some of them annotated. + +
Include +
Mac-specific but compiler-independent include files. + +
Lib +
Mac-specific standard modules. The toolbox folder +contains modules specifically needed with various MacOS toolbox +interface modules. + +
Modules +
Mac-specific builtin modules. Theoretically these are all +optional, but some are rather essential (like +macmodule). A lot of these modules are generated with +bgen, in which case the bgen input files are included so +you can attempt to regenerate them or extend them. + +
MPW +
MPW-specific files. These have not been used or kept up-to-date +for a long time, so use at your own risk. + +
mwerks +
Mwerks-specific sources and headers. Contains glue code for +Pythons shared-library architecture, a replacement for +malloc and a directory with various projects for building +variations on the Python interpreter. The mwerks_*.h +files here are the option-setting files for the various interpreters +and such, comparable to the unix command-line -D 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). + +
PlugIns +
This is where the Classic and Carbon dynamically-loaded plugin modules live. + +
Python +
Mac-specific parts of the core interpreter. + +
Resources +
Resource files needed to build the interpreter. + +
Scripts +
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. + +
Tools +
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. + + +
Unsupported +
Modules that are not supported any longer but may still work with a little effort. +
+ +

Building the 68K interpreter

+ +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.

+ +

Building the PPC interpreter

+This is different under 2.1. You are best off using the fullbuild.py +script.

+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 PythonEngine.prj +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: + +

+ +
PythonCore (with subproject PythonCorePPC) +
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 Extensions folder of your system +folder. Do exactly that: put an alias 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.
+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. + +
PythonInterpeter +
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).

+ +

Plugin projects +
Each plugin module has a separate project. The Plugins.prj +project tries to build them all, but is known to be flakey. See fullbuild +below for a better way to build everything. +
+ +After creating the alias to PythonCore you remove any old +Python 2.0b1 Preferences file from the Preferences folder +(if you had python installed on your system before) and run the interpreter once +to create the correct preferences file.

+ +Next, you have to build the extension modules. +The PlugIns.ppc project has all the +other projects as subprojects and builds everything (but see the gotcha above). +

+ +Finally, you must build the standard applets: +EditPythonPrefs, BuildApplet, etc. This is +easiest done with the fullbuild script from +Mac:scripts.

+ +

+Actually, the fullbuild 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 PythonStandSmall.prj +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).

+ +

+ +You are all set now, and should read the release notes and +ReadMe file from the Mac folder. + +

Rebuilding .exp files

+ +Occasionally it may be necessary to rebuild your PythonCore .exp +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.

+ +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 __initialize, __terminate, setjmp, +longjmp, vec_longjmp, main and (for PPC) __ptmf_null or (for +CFM68K) __start and dummy_init_routine. +Next, add the .exp file to the project +again and rebuild PythonCore.

+ +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. + +

Using the CVS source archive

+ +Please check the MacPython homepage to see whether this information is +still current: MacPython should move to sourceforge shortly.

+ +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.

+ +The CVS client of choice is Alexandre Parenteau's MacCVS. It can be +obtained through the WinCVS +homepage. 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".

+ +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, .bmp +is not a Windows bitmap file.

+ +The machine-independent Python sources are checked out from the main +Python CVS archive on sourceforge.net, see the Source access via +CVS page for details. When you check the sources out you will get +something like Python:dist:src, and under that the +Modules, Lib, etc hierarchy. The +src folder should be renamed to Python, and +is what this document refers to as the "toplevel Python folder".

+ +Next, in a separate folder, you check out the +mac-specific sources. You then move the Mac 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 MacPython +homepage. 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.

+ + +You should end up with a folder structure as described at the top of this +document.

+ +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.

+ +

Odds and ends

+ +Some remarks that I could not fit in elsewhere: + +
    + +
  • It may be possible to use the PythonCore 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). + +
  • 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 +xx.prj. + +
  • 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 MSL AppRuntime.Lib runtime library (with properly set CFM +initialization and termination routines). PythonCore uses MSL Runtime.Lib, +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 +MSL ShlibRuntime.Lib (not the dropin runtime: modules are never unloaded) +and obtain the rest from PythonCore. PythonCore uses a +non-standard initialization entry point, __initialize_with_resources, to +be able to obtain resources from the library file later on. Plugins can do the same +(_tkinter does) or use the standard __initialize entry point. + + +
+ + diff --git a/Mac/Demo/calldll/readme b/Mac/Demo/calldll/readme new file mode 100644 index 0000000..1e64dfe --- /dev/null +++ b/Mac/Demo/calldll/readme @@ -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 index 0000000..9b222a3 --- /dev/null +++ b/Mac/Demo/textedit/ped.py @@ -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 index 0000000..d86b1be --- /dev/null +++ b/Mac/Distributions/(vise)/Python 2.1.vct @@ -0,0 +1 @@ +(This file must be converted with BinHex 4.0) :!!"@59-a9NPc03!!!!D8p`!#1hU!Ve0@3e3!N!8'P2Hh$4A4J!%$#`!!!!%!N!8 'P2F!N!FXJ!%$#d0@3e3!"Nj"!*!'!TF)'J!!8%&$5d*#FQ4$6d4&3N4*8P"56dT *6N414'C*6!#3$3C1d3!'@cN!"Pb2!!CFP3!'A3%!"T(*!!D4m!#3$%4@3e3!,`! 0!H8"Q!2Jrj!%!3He1jp2Y6ZI6`!!!(3!!!!#!J!!!3#3'IRrfa!P!*!&!J#3"!S !!!!)"!F!N"(J!*!(rrrrr[["!*!L8(PdD'pZ)$)Z-84@3e3!N!J$i!)J!,)""lF ,a0@h#m6Q!!!!GJ!!!(3!!#!"!*!F%#S!!!!"!!)!N!3%!!!!#!3(!*!E!BZL!3# 3)N4PE@p%9N08!*!3YV",+3#3"hF!!!"f!!!J!3#3("!V!!!!!J!#!*!%"`!!!!J %"`#3'`'-SJ#3)f0XBA0cCA0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aEr,0A"lX!!!PH!!!KB`#3#+'&p!F!!!"h!!(X*`!$!!$rrrrq!*!)%#`!!!! #!*!%#CB!N"S"MD)!N"m%!*!&BQPdGQ9M,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& A4%*1690A4!#3#,8QTK'e*UB4!!!%f!!!$2B!N!Mk'Ip@!!!!G`!"l#J!!`!!rrr rrJ#3#"!Y!!!!!J#3"!Q@!*!D!BfL!*!I"!#3"@0XBA0c,Q4[BdC@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&[fX[aEp`!!#GB!!"k)!*!)EhRR4!!!!(F !!H`T!!-!!2rrrri!N!J3,J!!!!)!N!3+PJ#3'J'0SJ#3(`3!N!9$Efe`E'9i,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,m@rHbr&[h!!!+qJ!!(M! !N!J@'LF(!!!!G`!"l#S!!`!!rrrrrJ#3#"![!!!!!J#3"!L@!*!D!BfL!*!I"!# 3"84KG'9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,m@rLbr&[ i!!!#6!!!"1%!N!KNq$Ee!!!!G`!"l#X!!`!!rrrrrJ#3#"!`!!!!!J#3"!D@!*! D!BfL!*!I"!#3"84LE5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&[kX[aEqJ!!![i!!!D8!*!)k$&0S!!!!(F!!H`X!!-!!2rrrri!N!J3-3!!!!) !N!3)PJ#3'J'0SJ#3(`3!N!95B@jRC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&[kX[aEqJ!!#0B!!"ba!*!)r#m1,!!!!(F!!H`Y!!-!!2rrrri !N!J3-J!!!!)!N!3'PJ#3'J'0SJ#3(`3!N!95BA3ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&45+Q0S!*!)X[aEqE,m@rN!!!&U!!!#93#3#(j4UGX!!!"h!!(X,J! $!!$rrrrq!*!)%$-!!!!#!*!%"TB!N"S"MD)!N"m%!*!&8N9"4%e&4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,m@rZbr&[l!!!$KJ!!"rF!N!Ji)iCp!!! !G`!"l#m!!`!!rrrrrJ#3#"!d!!!!!J#3"!D@!*!D!BfL!*!I"!#3"9*PGLj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&[lX[aEq`!!!B)!!!1R!*! )Pb2dkJ!!!(F!!H``!!-!!2rrrri!N!J303!!!!)!N!3'PJ#3'J'0SJ#3(`3!N!9 @C@-ZF(P%9N08!*!3YV",-!#3"hJ!!!"f!!!!!3#3("!f!!!!!J!#!*!%#`!!!!J %"`#3'`'-SJ#3)f0[EA"KFQPcEfjc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG *43#3#,,mA!+br&`#!!!!*J!!!"i!N!KT66RD!!!!H!!"l$)!!`!!rrrrrJ#3#"! h!!!!!J#3"!L@!*!D!BkL!*!I"!#3"A"KG(4PFQjc4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88LTMD!#3#,,mA!'br&`"!!!%qJ!!#5!!N!L(F!X$!!!!H!!"l$-!!`! !rrrrrJ#3#"!i!!!!!J#3"!D@!*!D!BkL!*!I"!#3"9*&384048C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`$X[aF!`!!!c3!!!A&!*!)HDmU2`!!!(J !!H`d!!-!!2rrrri!N!J313!!!!)!N!3-PJ#3'J'1SJ#3(`3!N!9bC@GPH(4PFh3 ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF"E,mA!8!!!+i!!! %l3#3#"q@LB!!!!"i!!(X03!$!!$rrrrq!*!)%$S!!!!#!*!%$TB!N"S"MU)!N"m %!*!&FfpbG'PZCh4PFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aF"V,mA!B!!!0b!!!(S3#3#!DAZ9`!!!"i!!(X0J!$!!$rrrrq!*!)%$X!!!! #!*!%$CB!N"S"MU)!N"m%!*!&FhPcG'9YG'9cG#j`H84@3e3!N"#fX%Xj!*!(HJ! !!(B!!!!"!*!F%%%!!!!#!!)!N!3$!!!!#!3(!*!E!BbL!*!MC'jc4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA!kbr&`1!!!"QJ!!!e!!N!MPV6"B!!! !HJ!"l$d!!`!!rrrrrJ#3#""#!!!!!J#3"!b@!*!D!C!!SJ#3(`3!N!9KFfGPG'K [Fh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF$l,mA!m!!!% `!!!"k`#3#"FT4EN!!!"k!!(X2J!$!!$rrrrq!*!)%%-!!!!#!*!%#jB!N"S"N!# L!*!I"!#3"@4ZFf0XBA0c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA!qdkcLF!!!5+J!!1h-!N!JYCQ8'!!!!HJ!"l$m!!`!!rrrrrJ#3#""%!!! !!J#3"!Q@!*!D!C!!SJ#3(`3!N!9NER0XD@)ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aF%E,mA"%!!!$B!!!"5J#3#2h4`"!!!!"k!!(X3!!$!!$ rrrrq!*!)%%8!!!!#!*!%$*B!N"S"N!#L!*!I"!#3"@4ZFfp`BfpNC5j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`4X[aF%3!!!S!!!!6$!*!)P6e @iJ!!!(S!!Ha"!!-!!2rrrri!N!J34J!!!!)!N!3+PJ#3'J'3!+)!N"m%!*!&C'j cG(P`C5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&`0X[aF$3! !!C)!!!+!!*!)0aEpa`!!!(S!!Ha#!!-!!2rrrri!N!J34`!!!!)!N!3'PJ#3'J' 3!+)!N"m%!*!&8N9"4%e&4&C$9!#3%,AI-Rkehc,V!!!!H`!!!(B!!!!"!*!F%%J !!!!#!!)!N!3&!!!!#!8(!*!CrrrrrJ!"!*!LC@eLC@4'9N08!*!(##!!!!%!N!J (!*!5!94&@&4$9dP&!*!)X[aF%lDkSpX!!!*X!!!%J!#3#"GPra)!!!%!!!'UI3! $!!$rrrrq!*!)&f!!!!!#!*!%#*B!N"S#(!!"!*!H"3#3"8eKDf9QD@aP4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mA"@fMRUE!!!"iJ!!!cB!N!J4(Dl S!!!"!!!"URi!!`!!rrrrrJ#3#"GK!!!!!J#3"!D@!*!D!K`!!3#3(J8!N!9548& %689'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aF&VD1HTX!!!-%!!! '0`#3##2dlJ!!!!%!!!'UI!!$!!$rrrrq!*!)&em!!!!#!*!%"TB!N"S#(!!"!*! H"3#3"@4PE@mZBd4@3e3!N"#fXf+c!*!'!3%!!!$r!!!!!3#3("GL!!!!!J!#!*! %"J!!!!J&"`#3'`)E!!%!N#*PH(4PEQ4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 $9dP&!*!)X[aF'V,mA"S!!!"H!!!!D3#3##Va$X-!!!%"!!'UJ!!$!!$rrrrq!*! )&f-!!!!#!*!%#TB!N"S#(3!"!*!H"3#3"@eKDf9IBfaPB@j'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)X[aF'l,mA"X!!!$H!!!"G3#3#'GD1AF!!!%"!!' UJ3!$!!$rrrrq!*!)&f3!!!!#!*!%#jB!N"S#(3!"!*!H"3#3"@eKDf9IFfKKFQ9 N4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA"bbr&`F!!!!fJ!!!@J !N!ME*2(k!!!"!3!"US)!!`!!rrrrrJ#3#"GP!!!!!J#3"!Z@!*!D!Kd!!3#3(J8 !N!9YB@YPAh0dBA4TBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&` CX[aF'3!!!9B!!!*e!*!)(biI13!!!3%!!DU$!!-!!2rrrri!N!JACJ!!!!)!N!3 'PJ#3'J)G!!%!N"i&!*!&8N9"4%e&4&C$9!#3%,D`5ci!N!Gq!!!!GJ!!!!%!N"` 3@!!!!!)!!J#3"!F!!!!)"!F!N"X"M+)!N#0YC$9dCA0d4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,,mA#Qbr&`T!!!!$!!!!!-!N!Je*%(#!!!!IJ!"l&3 !!`!!rrrrrJ#3#""C!!!!!J#3"!1@!*!D!C5L!*!I"!#3"@C[EdC@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`UX[aF+J!!!hB!!!L'!*!)4Ef#0`!!!(i !!Ha9!!-!!2rrrri!N!J3@J!!!!)!N!3-PJ#3'J'8SJ#3(`3!N!9YC$9NFQPfCA) ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aF+,,mA#J!!!%H!!! "Y3#3#$!a%3X!!!"q!!(X9J!$!!$rrrrq!*!)%&X!!!!#!*!%"TB!N"S"P+)!N"m %!*!&8N9"4%e&4&C$9!#3%,Db'F3!N!Gr!!!!GJ!!!!%!N"`3A!!!!!)!!J#3"!X !!!!)"!F!N"X"M+)!N#0YCA4KBfaKFh0PFdC@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&`XX[aF,!!!"3J!!!f9!*!)@j9Y*3!!!(m!!HaB!!-!!2rrrri !N!J3A3!!!!)!N!3*PJ#3'J'9SJ#3(`3!N!9&D@CQC@`ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)X[aF,E,mA#d!!!AN!!!453#3#+BRK&-!!!"r!!( X@3!$!!$rrrrq!*!)%&i!!!!#!*!%"jB!N"S"PD)!N"m%!*!&4@jeE5j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9%e6588!N!Lbr&`cY-AUDJ!!(C`!!&"M!*!)I5# 0f3!!!(m!!HaD!!-!!2rrrri!N!J3A`!!!!)!N!3+PJ#3'J'9SJ#3(`3!N!9TEQ4 PH#jSG'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,,mA$@br&`e!!! -S!!!,3F!N!M)fd@j!!!!I`!"l&X!!`!!rrrrrJ#3#""J!!!!!J#3""'@!*!D!C@ L!*!I"!#3"@ePG'%YGQaKC'PYDA)ZG(Kd4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,,mA#qfMRUE!!!$N!!!!!Yp!*!)C[ea8J!!!(m!!HaF!!-!!2rrrri !N!J3B3!!!!)!N!3(PJ#3'J'9SJ#3(`3!N!90CA4K,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mA$#br&``!!!"V!!!"+J!N!Lq2F`c!!!!I`!"l&d !!`!!rrrrrJ#3#""L!!!!!J#3"!Q@!*!D!C@L!*!I"!#3"90TEA"XC5j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`aX[aF-3!!#6B!!"m'!*!)2S% N%3!!!(m!!HaH!!-!!2rrrri!N!J3B`!!!!)!N!3)PJ#3'J'9SJ#3(`3!N!96H@j MD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`bX[aF-J!!"0i !!"!P!*!)-G0+5!!!!(m!!HaI!!-!!2rrrri!N!J3C!!!!!)!N!3)PJ#3'J'9SJ# 3(`3!N!98FQ&MC5j`H84@3e3!N"#fX%Y4!*!(J!!!!(B!!!!"!*!F%'8!!!!#!!) !N!3'!!!!#!3(!*!E!BbL!*!MF'&bFf9b4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,,mA$Zbr&`l!!!!*!!!!"X!N!MRM3ia!!!!J!!"l'%!!`!!rrrrrJ# 3#""Q!!!!!J#3"!b@!*!D!CDL!*!I"!#3"@4[Bh0dFQPZCbj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&`mY)[hI3!!"a)!!"CD!*!)8Nde*J!!!)! !!HaL!!-!!2rrrri!N!J3C`!!!!)!N!3+PJ#3'J'@SJ#3(`3!N!9PH'&YF'aP,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA$Lbr&`j!!!!6!!!!&X !N!J,R6"@!!!!J!!"l'-!!`!!rrrrrJ#3#""S!!!!!J#3"!@@!*!D!CDL!*!I"!# 3"8C*6%964PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mA$Uf)P%e!!! "H!!!!Z3!N!JK,Tf,!!!!J!!"l'B!!`!!rrrrrJ#3#""U!!!!!J#3"!D@!*!D!CD L!*!I"!#3"9*&384048C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&` pX[aF23!!!#B!!!!G!*!)-k[NS`!!!)!!!HaR!!-!!2rrrri!N!J3D`!!!!)!N!3 *PJ#3'J'@SJ#3(`3!N!9cD@e`E'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)X[aF2V,mA$i!!!&1!!!#j3#3#*1EBed!!!#!!!(XD!!$!!$rrrrq!*! )%'`!!!!#!*!%#CB!N"S"PU)!N"m%!*!&FfpeFQ0P,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mA$kebdmV!!!#$!!!"+N!N!LLD$Te!!!!J!!"l'N !!`!!rrrrrJ#3#""Y!!!!!J#3"!k@!*!D!CDL!*!I"!#3"A4PFh4IF'&bFf9b,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA$qbr&`r!!!&'J!!%2` !N!JSeKiM!!!!J!!"l'S!!`!!rrrrrJ#3#""Z!!!!!J#3"!Z@!*!D!CDL!*!I"!# 3"A4PH'P`FQ8ZC'&d4&C$9!#3%,D`5e`!N!H"!!!!GJ!!!!%!N"`3E`!!!!)!!J# 3"!8!!!!)"!F!N"X"M+)!N#0`C'PcG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&a%X[aF4!!!"Ai!!!qY!*!)55Mm&!!!!)%!!HaX!!-!!2rrrri!N!J 3F!!!!!)!N!3*PJ#3'J'ASJ#3(`3!N!9ME'PPER3ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aF4E,mA%8!!!Ad!!!1P`#3#,[Cpq)!!!#"!!(XE3! $!!$rrrrq!*!)%(%!!!!#!*!%#*B!N"S"Pk)!N"m%!*!&BfeNCRFZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF4V,mA%B!!!CU!!!5Q3#3#&9kC(m !!!#"!!(XEJ!$!!$rrrrq!*!)%()!!!!#!*!%#TB!N"S"Pk)!N"m%!*!&Bfe`G(* PC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a'X[aF4J!!#fB !!#%6!*!)B&MVD`!!!)%!!Ha[!!-!!2rrrri!N!J3F`!!!!)!N!3*PJ#3'J'ASJ# 3(`3!N!9MGR0XD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a F4l,mA%F!!!IX!!!9mJ#3#%id*,N!!!#"!!(XF!!$!!$rrrrq!*!)%(3!!!!#!*! %#TB!N"S"Pk)!N"m%!*!&BhCcE'pMDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&a!X[aF33!!"rJ!!"Z+!*!)`HjR-`!!!)%!!Haa!!-!!2rrrri !N!J3G3!!!!)!N!3+PJ#3'J'ASJ#3(`3!N!9'8e"bEhKj,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mA%Lbr&a)!!!!XJ!!!3m!N!K5fCCk!!!!J3! "l()!!`!!rrrrrJ#3#""f!!!!!J#3"!D@!*!D!CHL!*!I"!#3"@eKBbj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a)X[aF5!!!"'!!!!['!*!)pA0 I3J!!!)%!!Hac!!-!!2rrrri!N!J3G`!!!!)!N!33PJ#3'J'ASJ#3(`3!N!9YB@Y PBfKKEQGPE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA%Q c(9SE!!!"T!!!!Zm!N!JV9k-0!!!!J3!"l(3!!`!!rrrrrJ#3#""i!!!!!J#3"!H @!*!D!CHL!*!I"!#3"A*MFf*eEA"'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aF5V,mA%S!!!,F!!!&l`#3#'63X"!!!!#"!!(XG3!$!!$rrrrq!*!)%(N !!!!#!*!%$*B!N"S"Pk)!N"m%!*!&FQ0cBfaTC@jd,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mA%UeJ#Pj!!!-I!!!+4J!N!Ldkk4B!!!!J3!"l(B !!`!!rrrrrJ#3#""k!!!!!J#3"!Q@!*!D!CHL!*!I"!#3"A*MFfaTBLj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a#X[aF3J!!"GJ!!"*`!*!)r62 [4!!!!)%!!Hah!!-!!2rrrri!N!J3H`!!!!)!N!3,PJ#3'J'ASJ#3(`3!N!953e0 3FQpiH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&a-XaeD(!! !!&`!!!"e!*!)%c+B``!!!)%!!Hai!!-!!2rrrri!N!J3I!!!!!)!N!3%PJ#3'J' ASJ#3(`3!N!9bBhCc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA%b br&a-!!!0BJ!!+HN!N!M!IL,+!!!!J3!"l(N!!`!!rrrrrJ#3#""p!!!!!J#3"!H @!*!D!CHL!*!I"!#3"A*MGR-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0 S!*!)X[aF3V,mA%)!!!Fk!!!3U!#3#"kSFLd!!!#"!!(XHJ!$!!$rrrrq!*!)%(i !!!!#!*!%"TB!N"S"Pk)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K83eG*43#3#,,mA%fc(9SF!!!!A!!!!(8!N!La4(M5!!!!J3!"l(X!!`!!rrr rrJ#3#""r!!!!!J#3"!5@!*!D!CHL!*!I"!#3"A*bBh0'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aF6V,mA%i!!!9B!!!0N!!!N!K5r'*5!!!!J3!"l(` !!`!!rrrrrJ#3#"#!!!!!!J#3"!H@!*!D!CHL!*!I"!#3"A*bBh-ZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF6V,mA%i!!!'1!!!$@J#3#-Peq08 !!!#"!!(XI3!$!!$rrrrq!*!)%)%!!!!#!*!%#jB!N"S"Pk)!N"m%!*!&Ff9MGA* TG(NZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF6l,mA%m!!!9 f!!!1jJ#3#0)UF8J!!!#"!!(XIJ!$!!$rrrrq!*!)%))!!!!#!*!%#CB!N"S"Pk) !N"m%!*!&Ff9bGQ9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, mA&#br&a3!!!"!!!!!Fd!N!MXff0`!!!!J3!"l(m!!`!!rrrrrJ#3#"#$!!!!!J# 3"!U@!*!D!CHL!*!I"!#3"A0eEA4bC@8ZF(P%9N08!*!3YGmbJ,AI-Zd!!!##!!! !GJ!!!!%!N"`3K!!!!!)!!J#3"!8!!!!)"3F!N"Rrrrrq!!%!N#*`HA0fFNC@3e3 !N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&a8YN#aK!!!#P!!!"b"!*!)j!X -(3!!!3)!!DU'!!-!!2rrrri!N!JAD3!!!!)!N!3(PJ#3'J)H!!%!N"i&!*!&F(P cGR)ZBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&a5YN#aK!!!!X! !!!9!!*!)EVThm`!!!3)!!DU&!!-!!2rrrri!N!JAD!!!!!)!N!3)PJ#3'J)H!!% !N"i&!*!&6@&VC@CTE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[a EpEEIZr`!!!0q!!!($!#3#'`$Jp-!!!"f!!(X*3!#!!$rrrrq!*!)%)F!!!!#!*! %"TB!N"S"M+)!N"m%!*!&8N9"4%e&4&C$9!#3%,D`5h8!N!H$!!!!GJ!!!!%!N"` 3L!!!!!)!!J#3"!-!!!!)"!F!N"X"M+)!N#0bF'0'9N08!*!(##!!!!%!N!J(!*! 5!94&@&4$9dP&!*!)X[aF9l,mA&F!!!#'!!!"D3#3#!%eRC-!!!#$!!(XK!!$!!$ rrrrq!*!)%)N!!!!#!*!%#*B!N"S"QD)!N"m%!*!&68&158C&8e4'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF@E,mA&N!!!M#!!!ACJ#3#$94MKJ!!!# $!!(XK3!$!!$rrrrq!*!)%)S!!!!#!*!%$TB!N"S"QD)!N"m%!*!&E@peER4ME'P PER3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF@V,mA&S!!!@ U!!!43J#3#1HXCMF!!!#$!!(XKJ!$!!$rrrrq!*!)%)X!!!!#!*!%$*B!N"S"QD) !N"m%!*!&EQCcBfaTC@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!# 3#,,mA&Hbr&aA!!!#4J!!"!3!N!MT%%$,!!!!J`!"l)F!!`!!rrrrrJ#3#"#-!!! !!J#3"!D@!*!D!CQL!*!I"!#3"9*&384048C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&aDX[aF@J!!!ZB!!!M`!*!)3EJ&h!!!!)-!!Hb)!!-!!2rrrri !N!J3M3!!!!)!N!33PJ#3'J'CSJ#3(`3!N!9bER9cCA*cBfaTC@jd,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA&Zbr&aE!!!BaJ!!@NN!N!L+[p3 e!!!!J`!"l)N!!`!!rrrrrJ#3#"#1!!!!!J#3"!D@!*!D!CQL!*!I"!#3"A*`Bbj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&aBX[aF@!!!!5J!!!) F!*!)hB+@!*!%J`!"l)S!!`!!rrrrrJ#3#"#2!!!!!J#3"!5@!*!D!CQL!*!I"!# 3"93ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aFA,,mA&`!!!$ B!!!#Z3#3#+(XAmi!!!#$!!(XL`!$!!$rrrrq!*!)%*!!!!!!!J#3"!5@!*!D!CQ L!*!I"!#3"A4PFh4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFAE, mA&d!!!5i!!!3,J#3#2cSAJB!!!#$!!(XM!!$!!$rrrrq!*!)%*%!!!!#!*!%"TB !N"S"QD)!N"m%!*!&H'4b,R"j4&C$9!#3%,E"dTi!N!H%!!!!GJ!!!!%!N"`3NJ! !!!)!!J#3"!F!!!!)"!F!N"X"M+)!N#0cBh*TF(4c4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mA''br&aK!!!!p!!!!F%!N!L1k-I&!!!!K!!"l)i!!`! !rrrrrJ#3#"#6!!!!!J#3"!H@!*!D!CUL!*!I"!#3"@*PCA)ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFBV,mA')!!!M8!!!9+!#3##H#bdN!!!# %!!(XM`!$!!$rrrrq!*!)%*3!!!!#!*!%#*B!N"S"QU)!N"m%!*!&CA&QDAJZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFBl,mA'-!!!(k!!!$Q!# 3#&!(!r3!!!#%!!(XN!!!!`!!rrrrrJ#3#"#9!!!!!J#3"!H@!*!D!CUL!*!I"!# 3"@CKBh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFC,DkSp` !!!'b!!!$CJ#3#2#h5ci!!!#%!!(XN3!$!!$rrrrq!*!)%*B!!!!#!*!%"jB!N"S "QU)!N"m%!*!&CR*[E5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&aPX[aFC3!!"GS!!!l$!*!)5IcJkJ!!!)3!!Hb5!!-!!2rrrri!N!J3P`!!!!) !N!3,PJ#3'J'DSJ#3(`3!N!9QG("cG'&dFbj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&aQX[aFCJ!!""3!!!RA!*!)+2(S93!!!)3!!Hb6!!-!!2r rrri!N!J3Q!!!!!)!N!3+PJ#3'J'DSJ#3(`3!N!9XF(GKG'0S,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA'HcPTDY!!!"(!!!!F%!N!K9T3ZV!!! !K!!"l*3!!`!!rrrrrJ#3#"#C!!!!!J#3"!U@!*!D!CUL!*!I"!#3"@eKDf9NDA) ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFD,,mA'J!!!8!!!! ,h3#3#!)N"A8!!!#%!!(XP3!$!!$rrrrq!*!)%*S!!!!#!*!%#CB!N"S"QU)!N"m %!*!&E@&bDfpf,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA'Q br&aT!!!%@!!!#JF!N!Jp%+NZ!!!!K!!"l*B!!`!!rrrrrJ#3#"#E!!!!!J#3"!k @!*!D!CUL!*!I"!#3"@eLEhKMEfjfCA*d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mA'Ubr&aU!!!#MJ!!"J`!N!L6%YX)!!!!K!!"l*F!!`!!rrr rrJ#3#"#F!!!!!J#3"!L@!*!D!CUL!*!I"!#3"@eVFQ0c,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mA'Zbr&aV!!!&4!!!$0S!N!JFcJKA!!!!K!! "l*J!!`!!rrrrrJ#3#"#G!!!!!J#3"!L@!*!D!CUL!*!I"!#3"@e[FR0P,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA'bbr&aX!!!#'J!!!kd!N!M adIeL!!!!K!!"l*N!!`!!rrrrrJ#3#"#H!!!!!J#3"!L@!*!D!CUL!*!I"!#3"@e `HR"T,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&A4%*1690A4!#3#,8QTL1e*UBM!!! %F!!!#A)!N!Lh%4Yb!!!!K!!"l*S!!`!!rrrrrJ#3#"#I!!!!!J#3"!b@!*!D!CU L!*!I"!#3"@jPGh0XDA0d,Q4[BdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbr&aYX[aFEJ!!$k!!!#YK!*!)[HaY(J!!!)3!!HbE!!-!!2rrrri!N!J3S!! !!!)!N!3,PJ#3'J'DSJ#3(`3!N!9ZCAGcE'PcG#j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr&a[YVUMh!!!!I!!!!0p!*!)NQ25e`!!!)3!!HbF!!- !!2rrrri!N!J3S3!!!!)!N!3&PJ#3'J'DSJ#3(`3!N!9`D5j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a[X[aFE`!!"F)!!!iT!*!)#S'#`!!!!)3 !!HbG!!-!!2rrrri!N!J3SJ!!!!)!N!3&PJ#3'J'DSJ#3(`3!N!9`F#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&a`X[aFF!!!!2`!!!'m!*!)ZK0 UA3!!!)3!!HbH!!-!!2rrrri!N!J3S`!!!!)!N!3*PJ#3'J'DSJ#3(`3!N!9`FQP YCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aFAl,mA'!!!!( #!!!$$`#3#"(1[B!!!!#%!!(XR`!$!!$rrrrq!*!)%+3!!!!#!*!%"TB!N"S"QU) !N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA(' br&aa!!!"H!!!!ZF!N!JBEUNa!!!!K!!"l+!!!`!!rrrrrJ#3#"#P!!!!!J#3"!Q @!*!D!CUL!*!I"!#3"A0MFQP`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&abYVUMh!!!"1!!!!c5!*!)`N%df3!!!)3!!HbK!!-!!2rrrri!N!J 3TJ!!!!)!N!30PJ#3'J'DSJ#3(`3!N!9eEQ*TFR4SC'&j,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mA(+br&ab!!!$H!!!#,)!N!JHFU#0!!!!K!! "l+)!!`!!rrrrrJ#3#"#R!!!!!J#3"!Q@!*!D!CUL!*!I"!#3"A9`C'&dC5j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&acX[aFF`!!!&)!!!"E!*! )EKhVp`!!!)3!!HbM!!-!!2rrrri!N!J3U!!!!!)!N!3&PJ#3'J'DSJ#3(`3!N!9 hD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf3,'&YN#aK3!!!b! !!!Lq!*!)FM@3!18!!Lmb!!)[4!!$!!$rrrrq!*!)'k!!!!!#!*!%#CB!N"S"QU) !N"m%!*!&FA9PC@jc,R"j4&C$9!#3%,D`5m)!N!H&!!!!GJ!!!!%!N"`3U3!!!!) !!J#3"!-!!!!)"!F!N"X"M+)!N#0cCfP%9N08!*!3YV",``#3"iB!!!#&!!!!!3# 3("#U!!!!!`!#!*!%!J!!!!J%"`#3'`'ESJ#3)f&X4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,83%H'e%"(K!!!"F!!!!`X!N!L,`p&G!!!!KJ!"l+F!"!! !rrrrrJ#3#"#V!!!!!J#3"!U@!*!D!CbL!*!I"!#3"@&XGf&dBfJZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4iE83%H%!!!(D!!!#j3#3#'TAEr8 !!!#'!!(XU!!%!!$rrrrq!*!)%+`!!!!#!*!%$*B!N"S"R+)!N"m%!*!&BR*[B@4 MBA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H+e%"(L!!! #`!!!"T-!N!KBhjJM!!!!KJ!"l+N!"!!!rrrrrJ#3#"#Y!!!!!J#3"!L@!*!D!Cb L!*!I"!#3"@0YF'&Q,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,8 3%H+e%"(L!!!"DJ!!"4F!N!JpZTTN!!!!KJ!"l+S!"!!!rrrrrJ#3#"#Z!!!!!J# 3"!f@!*!D!CbL!*!I"!#3"@0YF'&QAfC[FQdZCQ4'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)Y4!4iV83%H)!!!NF!!!8P!#3#"#r'm3!!!#'!!(XU`!%!!$ rrrrq!*!)%+m!!!!#!*!%#jB!N"S"R+)!N"m%!*!&D@jdCA*MEfdZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4iV83%H)!!!(1!!!$)!#3#*D5)0` !!!#'!!(XV!!%!!$rrrrq!*!)%,!!!!!#!*!%#CB!N"S"R+)!N"m%!*!&E'PcG'9 Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H+e%"(L!!!!hJ! !!8F!N!KZk6mG!!!!KJ!"l+d!"!!!rrrrrJ#3#"#a!!!!!J#3"!L@!*!D!CbL!*! I"!#3"@jKE@9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H+ e%"(L!!!#4!!!"6`!N!Mf[e%S!!!!KJ!"l+i!"!!!rrrrrJ#3#"#b!!!!!J#3"!Z @!*!D!CbL!*!I"!#3"A"XBAPKD@CQ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,83%H+e%"(L!!!",!!!!EN!N!LAD`p!!!!!KJ!"l+m!"!!!rrrrrJ# 3#"#c!!!!!J#3"!Z@!*!D!CbL!*!I"!#3"A"XBAPLB@0V,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,83%H+e%"(L!!!#%J!!!pF!N!JU(39[!!!!KJ! "l,!!"!!!rrrrrJ#3#"#d!!!!!J#3"!U@!*!D!CbL!*!I"!#3"A"XBAP[E'3ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4iV83%H)!!!%Q!!!"SJ# 3#*CMRa`!!!#'!!(XX3!%!!$rrrrq!*!)%,8!!!!#!*!%#*B!N"S"R+)!N"m%!*! &FQ&ND@mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)Y4!4iE83%H% !!!'L!!!#k!#3#*68"Hd!!!#'!!(XXJ!%!!$rrrrq!*!)%,B!!!!#!*!%"TB!N"S "R+)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8 3%H+e%"(L!!!!lJ!!!E)!N!J"BUP6!!!!KJ!"l,-!"!!!rrrrrJ#3#"#h!!!!!J# 3"!Z@!*!D!CbL!*!I"!#3"A*PBep`E'&j,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,83%H+e%"(L!!!",J!!!Ed!N!LrC,""!!!!KJ!"l,3!"!!!rrr rrJ#3#"#i!!!!!J#3"!Q@!*!D!CbL!*!I"!#3"A*PBfpbC#j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(LY4!4iJ!!!B)!!!*6!*!)5%%JG3!!!)B !!Hbe!!3!!2rrrri!N!J3Z3!!!!)!N!3+PJ#3'J'FSJ#3(`3!N!9eEQPMBA0d,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H+e%"(L!!!!aJ!!!68 !N!M82Vd&!!!!KJ!"l,B!"!!!rrrrrJ#3#"#k!!!!!J#3"!5@!*!D!CbL!*!I"!# 3"AJZF(P%9N08!*!3YV",a3#3"iF!!!#&!!!!!3#3("#l!!!!!`!#!*!%"3!!!!J %"`#3'`'ESJ#3)f&eC'P[4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8 3%H+e%"(L!!!#&!!!"4-!N!J#)#48!!!!K`!"l,J!"!!!rrrrrJ#3#"#m!!!!!J# 3"!H@!*!D!CfL!*!I"!#3"A"XBANZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 5+Q0S!*!)Y4!4iV83%H)!!!$Q!!!"63#3#+`PTA-!!!#(!!(XZ3!%!!$rrrrq!*! )%,d!!!!#!*!%"TB!N"S"RD)!N"m%!*!&8N9"4%e&4&C$9!#3%,D`5m8!N!H*!!! !K3!!!!%!N"`3``!!!!-!!J#3"!)!!!!)"!F!N"X"Qk)!N#0MC%C@3e3!N!F))!! !!3#3#!F!N")"9d4#6Ne69d3!N!Le%"(MY4!4i`!!!k!!!!K2!*!)'`2%!J!!!)N !!Hc!!!3!!2rrrri!N!J3a!!!!!)!N!3'PJ#3'J'ISJ#3(`3!N!9$4#jNEf0'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4il83%H-!!!&D!!!#63#3#)* Q$qm!!!#*!!(X`3!%!!$rrrrq!*!)%-8!!!!#!*!%#CB!N"S"Rk)!N"m%!*!&Bf4 KD@CQ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H1e%"(M!!! "#J!!!D`!N!K"KQJf!!!!L3!"l--!"!!!rrrrrJ#3#"$(!!!!!J#3"!Q@!*!D!Cq L!*!I"!#3"@aTFh4MC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L e%"(MY4!4i`!!"'S!!!T`!*!)2R*G"3!!!)N!!Hc%!!3!!2rrrri!N!J3b!!!!!) !N!3*PJ#3'J'ISJ#3(`3!N!9`E'&jBf3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&45+Q0S!*!)Y4!4il83%H-!!!)d!!!%)!#3#'D6M2!!!!#*!!(Xa3!%!!$rrrr q!*!)%-N!!!!#!*!%"TB!N"S"Rk)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,83%H1e%"(M!!!"`J!!![d!N!M-"*CS!!!!L3!"l-B !"!!!rrrrrJ#3#"$+!!!!!J#3"!Q@!*!D!CqL!*!I"!#3"A*PBhCMC#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(MY4!4i`!!"HJ!!!kq!*!)fXq Jc!!!!)N!!Hc(!!3!!2rrrri!N!J3b`!!!!)!N!3*PJ#3'J'ISJ#3(`3!N!9cC@j NBf3ZF(P%9N08!*!3YV",aJ#3"iS!!!#&!!!!!3#3("$-!!!!!`!#!*!%!`!!!!J %"`#3'`'ESJ#3)fCXF%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Le%"( MY4!4i`!!!3S!!!,H!*!)"1)Gh3!!!)S!!Hc*!!3!!2rrrri!N!J3c3!!!!)!N!3 *PJ#3'J'JSJ#3(`3!N!9dBf&MD'8ZCQ4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)Y4!4il83%H-!!!%8!!!"j`#3#+f3!"bm!!!!LJ!"l-S!"!!!rrrrrJ# 3#"$1!!!!!J#3"!Q@!*!D!D#L!*!I"!#3"A4MB@0SC5j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9%0A588!N!Le%"(MY4!4i`!!!8!!!!4+!*!)k#rr"3!!!)S!!Hc ,!!3!!2rrrri!N!J3c`!!!!)!N!3+PJ#3'J'JSJ#3(`3!N!9dCA0dAf0L,QCN4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H1e%"(M!!!#aJ!!"HX!N!K bj&+C!!!!LJ!"l-`!"!!!rrrrrJ#3#"$3!!!!!J#3"!U@!*!D!D#L!*!I"!#3"A4 PFh4IBf)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y4!4il83%H- !!!%b!!!%+3#3#16K@p3!!!#+!!(Xc3!%!!$rrrrq!*!)%0%!!!!#!*!%$*B!N"S "S+)!N"m%!*!&G'9cG&pZEf0L,QCN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,83%H5e%"(N!!!#"!!!"$J!N!M*634f!!!!LJ!"l-i!"!!!rrrrrJ#3#"$ 5!!!!!J#3"!b@!*!D!D#L!*!I"!#3"A4PFh4IEQpMBLj`H84@3e3!N"#fX%[(!*! (L`!!!)8!!!!"!*!F%0-!!!!$!!)!N!3#!!!!#!3(!*!E!CZL!*!MCfa'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4j,83%H3!!!-#!!!)e!#3#&@EAYd !!!#,!!(Xd!!%!!$rrrrq!*!)%03!!!!#!*!%#jB!N"S"SD)!N"m%!*!&BQ&MDfC KBf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4j,83%H3!!!$ k!!!"QJ#3#-$f*c`!!!#,!!(Xd3!%!!$rrrrq!*!)%08!!!!#!*!%#CB!N"S"SD) !N"m%!*!&CfaTEQC[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8 3%H5ePp[F!!!'[!!!$f3!N!Ke`Nph!!!!L`!"l0)!"!!!rrrrrJ#3#"$J!!!!!J# 3"!L@!*!D!D'L!*!I"!#3"@YTG'9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,83%H5e%"(N!!!,kJ!!-3%!N!Lj,VQ(!!!!L`!"l0-!"!!!rrrrrJ# 3#"$K!!!!!J#3"!L@!*!D!D'L!*!I"!#3"@YeER0d,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&A4%*1690A4!#3#,83%H5e%"(N!!!%[J!!#9J!N!LN`')1!!!!L`!"l03 !"!!!rrrrrJ#3#"$L!!!!!J#3"!U@!*!D!D'L!*!I"!#3"@eME'pMDbjNEf0'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4j,83%H3!!"Gk!!"*k3#3#*[ bpI3!!!#,!!(Xe3!%!!$rrrrq!*!)%1-!!!!#!*!%#CB!N"S"SD)!N"m%!*!&E@0 XEf0V,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H5e%"(N!!! $mJ!!#'N!N!Lf#[h9!!!!L`!"l0B!"!!!rrrrrJ#3#"$N!!!!!J#3"!Q@!*!D!D' L!*!I"!#3"@eTH'PZCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L e%"(NY4!4j!!!"13!!!bb!*!)(H!j)!!!!)X!!HcA!!3!!2rrrri!N!J3j3!!!!) !N!3)PJ#3'J'KSJ#3(`3!N!9ZGA*LFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&)UBfJ!N!Le%"(NY4!4j!!!![3!!!9J!*!)l"DjP`!!!)X!!HcB!!3!!2rrrri !N!J3jJ!!!!)!N!3'PJ#3'J'KSJ#3(`3!N!9548&%689'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)Y4!4j,83%H3!!!5J!!!,I3#3#)-+%@J!!!#,!!(Xf3! %!!$rrrrq!*!)%1F!!!!#!*!%"jB!N"S"SD)!N"m%!*!&HR*RBLj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Le%"(KY4!4i3!!!@S!!!,p!*!)6Q`#5J! !!)8!!HbP!!-!!2rrrri!N!J3k!!!!!)!N!3'PJ#3'J'ESJ#3(`3!N!9548&%689 %9N08!*!3YV",b!#3"id!!!#&!!!!!3#3("$T!!!!!`!#!*!%!J!!!!J%"`#3'`' ESJ#3)h0f4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H@e%"(P!!! #L!!!"0F!N!MR"FrF!!!!M3!"l18!"!!!rrrrrJ#3#"$U!!!!!J#3"!b@!*!D!D1 L!*!I"!#3"@*eFR0dBf&`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Le%"(PY4!4j3!!"%S!!!Sr!*!)CC6J-!!!!)d!!HcQ!!3!!2rrrri!N!J3k`! !!!)!N!3,PJ#3'J'MSJ#3(`3!N!9MEfjdBf&`G#j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&)UBfJ!N!Le%"(PY4!4j3!!!L!!!!2(!*!)"Q-hfJ!!!)d!!HcR!!3 !!2rrrri!N!J3l!!!!!)!N!3'PJ#3'J'MSJ#3(`3!N!9548&%689'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4jE83%H8!!!-B!!!([!#3#,ACa(`!!!# 0!!(Xk!!%!!$rrrrq!*!)%1d!!!!#!*!%#TB!N"S"Sk)!N"m%!*!&FQGLCh*KBLj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(PY4!4j3!!!5i!!!( d!*!)m48h0J!!!)d!!HcT!!3!!2rrrri!N!J3lJ!!!!)!N!31PJ#3'J'MSJ#3(`3 !N!9cD@e`E'9TER"eG#j`H84@3e3!N"#fX%[)!*!(MJ!!!)8!!!!"!*!F%1m!!!! $!!)!N!3&!!!!#!3(!*!E!CZL!*!MGQPNC@p'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y4!4kE83%HN!!!@'!!!26J#3#&+[+K3!!!#1!!(Xk`!%!!$rrrr q!*!)%2!!!!!#!*!%#*B!N"S"T+)!N"m%!*!&BA"XBANZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)Y4!4kV83%HS!!!Y!!!!G2`#3#&1N'6N!!!#1!!( Xl!!%!!$rrrrq!*!)%2%!!!!#!*!%$*B!N"S"T+)!N"m%!*!&BfeTCLeQD@aY,Qe c4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H@e%"(P!!!$Z!!!#QF !N!J5p4Zk!!!!MJ!"l1d!"!!!rrrrrJ#3#"$b!!!!!J#3""'@!*!D!D5L!*!I"!# 3"84TFh"XBAP@D@4PEdPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,83%H@e%"(P!!!'b!!!%BN!N!LpEbea!!!!MJ!"l1i!"!!!rrrrrJ#3#"$c!!! !!J#3"!L@!*!D!D5L!*!I"!#3"84cC@jN,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,83%HZe%"(V!!!%TJ!!$Hi!N!KDAZ1j!!!!MJ!"l1m!"!!!rrr rrJ#3#"$d!!!!!J#3"!U@!*!D!D5L!*!I"!#3"@PYCf0[ERBZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4jE83%H8!!!BQ!!!3-3#3#2fj3*!!!!! !MJ!"l2!!"!!!rrrrrJ#3#"$e!!!!!J#3"!k@!*!D!D5L!*!I"!#3"8aTGQ9@D@4 PEdPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%H@e%"(P!!! &%!!!$EN!N!MQqK!D!!!!MJ!"l2%!"!!!rrrrrJ#3#"$f!!!!!J#3"!q@!*!D!D5 L!*!I"!#3"8aTGQ9@D@4PEdpeG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Le%"(PYCIEh!!!"*)!!!`4!*!)lMjqP3!!!)i!!Hcb!!3!!2rrrri!N!J 3p`!!!!)!N!3,PJ#3'J'NSJ#3(`3!N!92E'4@Bfp`H5j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&)UBfJ!N!Le%"(PY4!4jJ!!"Z)!!!la!*!)mA#3!"N!!!#1!!( Xm`!%!!$rrrrq!*!)%2J!!!!#!*!%"TB!N"S"T+)!N"m%!*!&8N9"4%e&4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HZe%"(V!!!#cJ!!"QX!N!Lr4-c B!!!!MJ!"l23!"!!!rrrrrJ#3#"$j!!!!!J#3"!b@!*!D!D5L!*!I"!#3"A*RBM* fD@4PEbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(VY4!4k`! !!)i!!!#k!*!)JXqTC`!!!)i!!Hce!!3!!2rrrri!N!J3qJ!!!!)!N!3,PJ#3'J' NSJ#3(`3!N!9cC@jNC'9QFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Le%"(QY4!4jJ!!!P3!!!6[!*!)K&(`6!!!!)i!!Hcf!!3!!2rrrri!N!J3q`! !!!)!N!3-PJ#3'J'NSJ#3(`3!N!9@B@4NBf&MD'8ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)Y4!4jV83%HB!!"ZZ!!"F!*!*e9&@p`!!!)i!!Hch!!3 !!2rrrri!N!J3r!!!!!)!N!3&PJ#3'J'NSJ#3(`3!N!9@BLj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9%0A588!N!Le%"(QY4!4jJ!!"!!!!#(%!*!)%b'Aj`!!!)i !!Hci!!3!!2rrrri!N!J3r3!!!!)!N!3*PJ#3'J'NSJ#3(`3!N!9@BNC[FQdZCQ4 '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4jV@!+AS!!!N'!!!CdJ# 3#%B$rM-!!!#1!!(Xq3!%!!$rrrrq!*!)%2i!!!!#!*!%#*B!N"S"T+)!N"m%!*! &9Q0[F(NZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4jV83%HB !!!e'!!!YEJ#3#+0(VUm!!!#1!!(XqJ!%!!$rrrrq!*!)%2m!!!!#!*!%"TB!N"S "T+)!N"m%!*!&9N05,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8 3%HDe%"(Q!!!'bJ!!(63!N!LMB4bq!!!!MJ!"l2X!"!!!rrrrrJ#3#"%!N!3#!*! %#jB!N"S"T+)!N"m%!*!&9Q0b5@jNCAJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y4!4jl83%HF!!!Fi!!!C@J#3#*39BCi!!!#1!!(Xr!!%!!$rrrr q!*!)%3%!!!!#!*!%#*B!N"S"T+)!N"m%!*!&9Q9NDA3ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)Y4!4jl83%HF!!!,D!!!Af`#3#,M%5hX!!!#1!!( Xr3!%!!$rrrrq!*!)%3)!!!!#!*!%$*B!N"S"T+)!N"m%!*!&9Q9NDA4'Eh*Y,QC N4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HDe%"(Q!!!K9J!!GMi !N!MEibUj!!!!MJ!"l2i!"!!!rrrrrJ#3#"%$!!!!!J#3"!L@!*!D!D5L!*!I"!# 3"9C'D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HHe%"( R!!!$&J!!"h)!N!K"l+8*!!!!MJ!"l2m!"!!!rrrrrJ#3#"%%!!!!!J#3"!H@!*! D!D5L!*!I"!#3"9CQDAJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )Y4!4jl83%HF!!!"+!!!!6`#3#*0Q$`F!!!#1!!(Y!!!%!!$rrrrq!*!)%38!!!! #!*!%#jB!N"S"T+)!N"m%!*!&9QGPEQ9bD@-ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)Y4!4jV83%HB!!!18!!!)r3#3#,B5YC3!!!#1!!(Y!3!%!!$ rrrrq!*!)%3B!!!!#!*!%#jB!N"S"T+)!N"m%!*!&9NGbB@*LCA)ZF(P'9N08!*! (##!!!!%!N!J(!*!5!9G%3Nj08eG%!*!)Y4!4kl83%HX!!!MD!!!6BJ#3#$eS``S !!!#1!!(Y!J!%!!$rrrrq!*!)%3F!!!!#!*!%#CB!N"S"T+)!N"m%!*!&GQPNC@m ZC'pM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%Hbe%"(X!!!&+J! !$(F!N!MpV(*H!!!!MJ!"l3-!"!!!rrrrrJ#3#"%)!!!!!J#3"!b@!*!D!D5L!*! I"!#3"ACTC'9[-R*RBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L e%"(SY4!4k!!!",`!!"0b!*!)mSX"A`!!!)i!!Hd%!!3!!2rrrri!N!J4#3!!!!) !N!3*PJ#3'J'NSJ#3(`3!N!9@D@9hCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y4!4k,83%HJ!!!9N!!!0[`#3#2!&&#J!!!#1!!(Y"3!%!!$rrrr q!*!)%3S!!!!#!*!%#*B!N"S"T+)!N"m%!*!&9QPZCQmZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y4!4k,83%HJ!!!,X!!!(43#3#,lSCVS!!!#1!!( Y"J!%!!$rrrrq!*!)%3X!!!!#!*!%#TB!N"S"T+)!N"m%!*!&9QeVDR"PCbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(SY4!4k!!!$!J!!#"3!*! )b[p5pJ!!!)i!!Hd(!!3!!2rrrri!N!J4$!!!!!)!N!3)PJ#3'J'NSJ#3(`3!N!9 @F'aKH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(SYCIEh!! !$V`!!#G#!*!)U`pZ,J!!!)i!!Hd)!!3!!2rrrri!N!J4$3!!!!)!N!3(PJ#3'J' NSJ#3(`3!N!9@FQ9M,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8 3%HQePp[F!!!2+J!!+Ai!N!Lp(mDJ!!!!MJ!"l3N!"!!!rrrrrJ#3#"%1!!!!!J# 3"!L@!*!D!D5L!*!I"!#3"9CbC@0L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,83%HQe%"(T!!!&LJ!!#hX!N!LpUKSd!!!!MJ!"l3S!"!!!rrrrrJ# 3#"%2!!!!!J#3"!Z@!*!D!D5L!*!I"!#3"9CbC@0PDACP,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,83%HQe%"(T!!!&T!!!$Ed!N!Mj"8T9!!!!MJ! "l3X!"!!!rrrrrJ#3#"%3!!!!!J#3"!L@!*!D!D5L!*!I"!#3"9CcC@jN,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HQe%"(T!!!!lJ!!!A-!N!J 6QkaH!!!!MJ!"l3`!"!!!rrrrrJ#3#"%4!!!!!J#3"!L@!*!D!D5L!*!I"!#3"9C cG'&d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%HQeJ#Pk!!! $f!!!#3X!N!K!`LXa!!!!MJ!"l3d!"!!!rrrrrJ#3#"%5!!!!!J#3"!L@!*!D!D5 L!*!I"!#3"9CdD@eP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8 3%HQe%"(T!!!$)!!!"lS!N!LJlb,L!!!!MJ!"l3i!"!!!rrrrrJ#3#"%6!!!!!J# 3"!U@!*!D!D5L!*!I"!#3"9CeEQT`C@FZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y4!4l,83%H`!!!&b!!!$$3#3#2'S5#J!!!#1!!(Y$`!%!!$rrrr q!*!)%43!!!!#!*!%$TB!N"S"T+)!N"m%!*!&Gf&dBfKMGA*cEh)ZF(P%9N08!*! 3YV",cJ#3"im!!!"f!!!!!3#3("%9!!!!!J!#!*!%"`!!!!J%"`#3'`'-SJ#3)h0 [BfYPG(0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF`,,mA-!!!!$ 8!!!"%3#3#2-JJ@d!!!#2!!(Y%3!$!!$rrrrq!*!)%4B!!!!#!*!%$*B!N"S"TD) !N"m%!*!&BR*[B@4MBA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA-#efc8m!!!"V!!!!U3!N!M-d,DY!!!!M`!"l4)!!`!!rrrrrJ#3#"%A!!! !!J#3"!U@!*!D!D@L!*!I"!#3"@9MD'pcGR)ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aF`,AE06`!!!*X!!!%F3#3#+"B"HX!!!#2!!(Y%`!$!!$ rrrrq!*!)%4J!!!!#!*!%#CB!N"S"TD)!N"m%!*!&CQPZCf9b,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-#efc8m!!!'B!!!$LN!N!K9MIfB!!! !M`!"l43!!`!!rrrrrJ#3#"%C!!!!!J#3"!D@!*!D!D@L!*!I"!#3"@CdF#j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c!X[aF`!!!#Y!!!#"(!*! )BmJUU3!!!)m!!Hd9!!-!!2rrrri!N!J4'J!!!!)!N!3*PJ#3'J'PSJ#3(`3!N!9 REh"SCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF`,3DEJN !!!4-!!!)EJ#3#"G[Yp3!!!#2!!(Y&J!$!!$rrrrq!*!)%4X!!!!#!*!%#*B!N"S "TD)!N"m%!*!&E@0KFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aF`E,mA-%!!!$8!!!"%J#3#*,&cUJ!!!#2!!(Y&`!$!!$rrrrq!*!)%4`!!!! #!*!%#*B!N"S"TD)!N"m%!*!&FQ&ND@mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&45+Q0S!*!)X[aF[l,mA,m!!!(!!!!$E3#3#"9BN!!!N!52!!(Y'!!$!!$rrrr q!*!)%4d!!!!#!*!%"TB!N"S"TD)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mA-'br&c"!!!"K!!!!RN!N!MZ#$iG!!!!M`!"l4N !!`!!rrrrrJ#3#"%H!!!!!J#3"!U@!*!D!D@L!*!I"!#3"A*`HA4SEfiZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF`EAE06`!!!)U!!!%#J#3#)` FJX8!!!#2!!(Y'J!$!!$rrrrq!*!)%4m!!!!#!*!%#jB!N"S"TD)!N"m%!*!&FR" jG'K[EQ3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aF`EAE06` !!!35!!!*%`#3#$(0FR-!!!#2!!(Y'`!$!!$rrrrq!*!)%5!!!!!#!*!%#CB!N"S "TD)!N"m%!*!&G'9XEQ9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA-'efc8m!!!$2!!!"aB!N!KqSl*%!!!!M`!"l4`!!`!!rrrrrJ#3#"%K!!! !!J#3"!f@!*!D!D@L!*!I"!#3"A4SFQpeCfK`GA3ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aF`EAE06d!!!)@!!!&"!#3#0"4&#)!!!#2!!(Y(3! $!!$rrrrq!*!)%5)!!!!#!*!%#TB!N"S"TD)!N"m%!*!&G@4`C@0SEbj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c"X[aF`J!!!,3!!!$F!*!)XVU M)`!!!)m!!HdH!!-!!2rrrri!N!J4)`!!!!)!N!3+PJ#3'J'PSJ#3(`3!N!9eEQP MBA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-+br&c#!!! !YJ!!!0d!N!MbD@!,!!!!M`!"l4m!!`!!rrrrrJ#3#"%N!!!!!J#3"!f@!*!D!D@ L!*!I"!#3"A9ZDAKME'PPER3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aF`V,mA-)!!!%1!!!"IJ#3#1#*0GF!!!#2!!(Y)!!$!!$rrrrq!*!)%58 !!!!#!*!%$CB!N"S"TD)!N"m%!*!&G@jTH(0PFRCPFLj`H84@3e3!N"#fjUpUYZD [DJ!!!*)!!!"f!!!!!3#3("&!!!!!!J!#!*!%"`!!!!J%"`#3'`'-SJ#3)h4SFQ9 KC(0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!4mVD6T3!!!!4m!!! )X!#3#$MPSh8!!!#5!!(Y2!!$!!$rrrrq!*!)%8%!!!!#!*!%"TB!N"S"U+)!N"m %!*!&BR9R,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%I+fNk8 !!!!'*!!!%%3!N!LF'@Nf!!!!NJ!"l6d!!`!!rrrrrJ#3#"&#!!!!!J#3"!H@!*! D!DLL!*!I"!#3"@CTEQ3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )Y4!4mE83%I%!!!-+!!!(q`#3#$@T44N!!!#5!!(Y2J!$!!$rrrrq!*!)%8-!!!! #!*!%$*B!N"S"U+)!N"m%!*!&4f9ZCA*KG'pb,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88LTMD!#3#,83%I'f3,'&!!!"@J!!!R!!N!MJ#rkS!!!!NJ!"l6m!!`! !rrrrrJ#3#"&%!!!!!J#3"!D@!*!D!DLL!*!I"!#3"9*&384048C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Le%"(bY4!4mJ!!'0S!!&56!*!)HIL6L!!!!*) !!He!!!-!!2rrrri!N!J443!!!!)!N!3(PJ#3'J'SSJ#3(`3!N!9cH@jM,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%I+fNk8"!!!%@J!!$!%!N!K *5khr!!!!NJ!"l8%!!`!!rrrrrJ#3#"&'!!!!!J#3"!Q@!*!D!DLL!*!I"!#3"A4 PE'jPG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf3,'&YN#aK3! !"ki!!"@c!*!)m)BP+`!#,lS!!Lqm!!-!!2rrrri!N!JER`!!!!)!N!3-PJ#3'J' SSJ#3(`3!N!9$Eh*[GA4TEQ8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)YN#aN!#fiCJ9!!!#IJ!!"Yd!N!LhASG$!!)[ZJ!#,ld!!`!!rrrrrJ#3#"Z H!!!!!J#3"!H@!*!D!DLL!*!I"!#3"@CMEA!ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YN#aN!#fiCJ9!!!%G!!!#pi!N!Mr40,L!!)[ZJ!#,m%!!`! !rrrrrJ#3#"ZG!!!!!J#3"!Z@!*!D!DLL!*!I"!#3"A0aG@&cD'9b,R"j4&C$9!# 3%,D`5p!!N!H6!!!!GJ!!!!%!N"`45!!!!!)!!J#3"!F!!!!)"!F!N"X"M+)!N#0 dDfPZG'9b4&C$9!#3%,D`5p!!N!H8!!!!N`!!!!%!N"`453!!!!-!!J#3"!8!!!! )"!F!N"X"UD)!N#0RG@PNEdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&c0X[aFc3!!#rB!!#VK!*!)CQUk#`!!!*3!!He'!!3!!2rrrri!N!J45J!!!!) !N!30PJ#3'J'USJ#3(`3!N!9"G(4b4'PKE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mA-fbr&c0!!!#(!!!"%-!N!KZqU5#!!!!P!!"l8F!"!! !rrrrrJ#3#"&,!!!!!J#3"!Z@!*!D!DUL!*!I"!#3"@*bEhGZD@&Z,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-fbr&c0!!!(F!!!&LN!N!K5cZP V!!!!P!!"l8J!"!!!rrrrrJ#3#"&-!!!!!J#3"!q@!*!D!DUL!*!I"!#3"@0KERC KFf9fC@jdFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c1X[a FcJ!!"63!!!Yi!*!)rjem)J!!!*3!!He*!!3!!2rrrri!N!J463!!!!)!N!3*PJ# 3'J'USJ#3(`3!N!9ND@&XEfFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aFcV,mA-i!!!1U!!!(RJ#3#(!XA*3!!!#8!!(Y5J!%!!$rrrrq!*!)%8i !!!!#!*!%$*B!N"S"UU)!N"m%!*!&C@aPBh4bEfjc,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mA-kbr&c1!!!&m!!!$dF!N!K5`P,K!!!!P!!"l8X !"!!!rrrrrJ#3#"&2!!!!!J#3"!L@!*!D!DUL!*!I"!#3"@KKEQpT,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-kbr&c1!!!!b!!!!6!!N!J`X9+ B!!!!P!!"l8`!"!!!rrrrrJ#3#"&3!!!!!J#3"!L@!*!D!DUL!*!I"!#3"@KPE'a [,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-kbr&c1!!!"-!! !!Id!N!L8`&R9!!!!P!!"l8d!"!!!rrrrrJ#3#"&4!!!!!J#3"!b@!*!D!DUL!*! I"!#3"@PYB@GPC(*KGbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&c1X[aFcJ!!!)i!!!$0!*!)A*1Q'J!!!*3!!He1!!3!!2rrrri!N!J48J!!!!) !N!3-PJ#3'J'USJ#3(`3!N!9TE@&RCACTCAFZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aFcV,mA-i!!!5N!!!-L!#3#"mVYE3!!!#8!!(Y6`!%!!$ rrrrq!*!)%9-!!!!#!*!%"jB!N"S"UU)!N"m%!*!&DfPXE#j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c2X[aFc`!!!F`!!!1'!*!)$`d@N`!!!*3 !!He3!!3!!2rrrri!N!J49!!!!!)!N!3,PJ#3'J'USJ#3(`3!N!9XDA0dG(*PC5j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c0X[aFc3!!#,i!!"C -!*!)JBXPM3!!!*3!!He4!!3!!2rrrri!N!J493!!!!)!N!3+PJ#3'J'USJ#3(`3 !N!90B@j3B@GP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA-q br&c2!!!)$!!!'C%!N!MLR,XK!!!!P!!"l9)!"!!!rrrrrJ#3#"&@!!!!!J#3"!H @!*!D!DUL!*!I"!#3"@eLEhJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aFcE,mA-d!!!5d!!!0&`#3#%TQG4F!!!#8!!(Y8`!%!!$rrrrq!*!)%9F !!!!#!*!%$CB!N"S"UU)!N"m%!*!&6@PYC9CTCAGPFLj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&c2X[aFc`!!!D`!!!4N!*!)r686TJ!!!*3!!He 8!!3!!2rrrri!N!J4@!!!!!)!N!34PJ#3'J'USJ#3(`3!N!9ZCAGYC@jeBQ&bC'9 YEbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c2X[aFc`!!!4B !!!'j!*!)#,0i)`!!!*3!!He9!!3!!2rrrri!N!J4@3!!!!)!N!30PJ#3'J'USJ# 3(`3!N!9[F(4TEfjYC@je,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA-qbr&c3!!!$A!!!"R%!N!Lc-)kT!!!!P!!"l9B!"!!!rrrrrJ#3#"&D!!! !!J#3"!L@!*!D!DUL!*!I"!#3"A"KD@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mA0#br&c3!!!(C!!!%+-!N!JUXrTq!!!!P!!"l9N!"!!!rrr rrJ#3#"&G!!!!!J#3"!D@!*!D!DUL!*!I"!#3"A*YG#j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&c0X[aFc3!!"5)!!!eZ!*!)N!#jS-i!!!#8!!( Y@J!%!!$rrrrq!*!)%9i!!!!#!*!%$TB!N"S"UU)!N"m%!*!&8fKPE'aAD@jNEhF ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFd,,mA0!!!"4`!!! m$`#3#!LPb8`!!!#8!!(Y@`!%!!$rrrrq!*!)%9m!!!!#!*!%$*B!N"S"UU)!N"m %!*!&FfpXDA4KDA*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, mA0'br&c4!!!3Z!!!2LF!N!LGTE'-!!!!P!!"l9`!"!!!rrrrrJ#3#"&J!!!!!J# 3"!Z@!*!D!DUL!*!I"!#3"A0[FR4fDA0e,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mA0'br&c4!!!&cJ!!$iS!N!Ml#QX@!!!!P!!"l9d!"!!!rrr rrJ#3#"&K!!!!!J#3"!Q@!*!D!DUL!*!I"!#3"A0fDfPXE#j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c4X[aFd3!!!L!!!!BA!*!)YSjN&J!!!*3 !!HeH!!3!!2rrrri!N!J4BJ!!!!)!N!3*PJ#3'J'USJ#3(`3!N!9cGfPdBfJZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFdE,mA0%!!!M)!!!ES`# 3#*`6T(%!!!#8!!(YA`!%!!$rrrrq!*!)%@-!!!!#!*!%#*B!N"S"UU)!N"m%!*! &G'YYB@iZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFdE,mA0% !!!&%!!!#'!#3#%TB,&B!!!#8!!(YB!!%!!$rrrrq!*!)%@3!!!!#!*!%"jB!N"S "UU)!N"m%!*!&GfPcD#j`H84@3e3!N"#fX%[8!*!(P3!!!*-!!!!"!*!F%@8!!!! $!!)!N!3%!!!!#!3(!*!E!DQL!*!ME@&dG%C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&c5X[aFdJ!!!9)!!!*`!*!)H%K6@!!!!*8!!HeL!!3!!2rrrri !N!J4CJ!!!!)!N!34PJ#3'J'VSJ#3(`3!N!8`-#e)48a-6beA6e*-4#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c5X[aFdJ!!!E`!!!-e!*!)rDd P4!!!!*8!!HeM!!3!!2rrrri!N!J4C`!!!!)!N!36PJ#3'J'VSJ#3(`3!N!9KEQP YBA4TEfiYFfPYF'aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, mA0+br&c5!!!#-!!!"#!!N!K*Umf5!!!!P3!"l@3!"!!!rrrrrJ#3#"&S!!!!!J# 3""b@!*!D!DZL!*!I"!#3"@&ZD@eKG'P[ELeh,ACPE'pMDA4j,@0dFQ`ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFdV,mA0)!!!,'!!!&T!#3#!J 1d`X!!!#9!!(YC3!%!!$rrrrq!*!)%@N!!!!#!*!%'jB!N"S"Uk)!N"m%!*!&BQP ZC#eh,@eeE(3YBf&XE(-YF#edHA"P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,,mA0+br&c5!!!"IJ!!!T)!N!J9#kLP!!!!P3!"l@B!"!!!rrrrrJ# 3#"&U!!!!!J#3""@@!*!D!DZL!*!I"!#3"@0KERCKFbeNC@e[,A0TEA"XC5j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c6X[aFd`!!!`B!!!HM!*! )%U2jXJ!!!*8!!HeR!!3!!2rrrri!N!J4D`!!!!)!N!35PJ#3'J'VSJ#3(`3!N!9 MB@jfBA-YCh*TC'4TEQFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aFdl,mA0-!!!-b!!!)I`#3#)3khj3!!!#9!!(YD!!%!!$rrrrq!*!)%@`!!!! #!*!%(*B!N"S"Uk)!N"m%!*!&Bf&ZGQ&c,@e[GQPZCbe[FLeMFQ9KG'PZCbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c6X[aFd`!!!VJ!!!Gh!*! )b(XkN3!!!*8!!HeT!!3!!2rrrri!N!J4E3!!!!)!N!3BPJ#3'J'VSJ#3(`3!N!9 MB@jfBA-YE@pfD@jR,AFYE@peFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)X[aFdl,mA0-!!!2+!!!*N3#3#2N!,9B!!!#9!!(YDJ!%!!$rrrrq!*! )%@i!!!!#!*!%&jB!N"S"Uk)!N"m%!*!&Bf&ZGQ&c,@eeE(3YDA4PE5ecC@`ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFdl,mA0-!!!+b!!!&V3# 3#18[bk)!!!#9!!(YD`!%!!$rrrrq!*!)%@m!!!!#!*!%'TB!N"S"Uk)!N"m%!*! &Bf&ZGQ&c,A*PB@4TEQFYG'&R,@PZCQmZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)X[aFdl,mA0-!!!)Q!!!%"J#3#&RElb-!!!#9!!(YE!!%!!$rrrr q!*!)%A!!!!!#!*!%'TB!N"S"Uk)!N"m%!*!&Bf&ZGQ&c,AFYGfPNCf9d,@4bBAF YC@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFe,,mA03!!!0 !!!!(-3#3#)jG3k)!!!#9!!(YE3!%!!$rrrrq!*!)%A%!!!!#!*!%'CB!N"S"Uk) !N"m%!*!&Bf&ZGQ&c,AGTG'JYFf0bEfaXBQ&bFbj`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr&c8X[aFe!!!!k)!!!I5!*!)&`SA@`!!!*8!!HeZ!!3 !!2rrrri!N!J4FJ!!!!)!N!30PJ#3'J'VSJ#3(`3!N!9ND@&XEfFYBQpi,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA05br&c8!!!"FJ!!!T`!N!L dNYTB!!!!P3!"l@m!"!!!rrrrrJ#3#"&c!!!!!J#3"!q@!*!D!DZL!*!I"!#3"@9 ZG(*j,A0TEA"XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c 8X[aFe!!!!YB!!!B6!*!)j2(l$!!!!*8!!He`!!3!!2rrrri!N!J4G!!!!!)!N!3 GPJ#3'J'VSJ#3(`3!N!9PER4bH5ehDA4S,A0SBA*PC#efBA*TB@*XC5j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c8X[aFe!!!!T)!!!5F!*!)a%F ,23!!!*8!!Hea!!3!!2rrrri!N!J4G3!!!!)!N!3@PJ#3'J'VSJ#3(`3!N!9VD@a XD@jR,AGTEQ4[Gbeh,AGY,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA05br&c8!!!*c!!!)Qd!N!LCr0hS!!!!P3!"lA)!"!!!rrrrrJ#3#"&f!!! !!J#3""b@!*!D!DZL!*!I"!#3"@ePER8YB@aX,A4jF'9c,@pQ,@9ZG(*TCA-ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFeE,mA08!!!4!!!!-M`# 3#*d1ka3!!!#9!!(YF`!%!!$rrrrq!*!)%AF!!!!#!*!%$TB!N"S"Uk)!N"m%!*! &E@9ZG5ecD@e`E'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a FeE,mA08!!!%N!!!#)!#3##12ppm!!!#9!!(YG!!%!!$rrrrq!*!)%AJ!!!!#!*! %(CB!N"S"Uk)!N"m%!*!&EQpd,AGSBA3YH@pe,@eTCfKd,A4SD@jV,6%ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFeE,mA08!!!&5!!!#G!#3#22 N,4F!!!#9!!(YG3!%!!$rrrrq!*!)%AN!!!!#!*!%(CB!N"S"Uk)!N"m%!*!&EQp d,AGSBA3YH@pe,@eTCfKd,A4SD@jV,6)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)X[aFeE,mA08!!!+)!!!%[`#3#"NUDGJ!!!#9!!(YGJ!%!!$rrrr q!*!)%AS!!!!#!*!%(CB!N"S"Uk)!N"m%!*!&F'&MDf9b,@&ZC#e`E'&MCA)YG'p RCA4SCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFeE,mA08 !!!&1!!!#U3#3#128-@8!!!#9!!(YG`!%!!$rrrrq!*!)%AX!!!!#!*!%%*B!N"S "Uk)!N"m%!*!&F'&MDf9b,A0TEA"XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&c9X[aFe3!!!MJ!!!3j!*!)rC!!($J!!!#9!!(YH!!%!!$rrrr q!*!)%A`!!!!#!*!%%*B!N"S"Uk)!N"m%!*!&F'aKBf9b,A0TEA"XC5j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c9X[aFeJ!!!Mi!!!8!N!RYfXR C!!!!P3!"lAN!"!!!rrrrrJ#3#"&p!!!!!J#3"!k@!*!D!DZL!*!I"!#3"A"[EQF YC'9YEbda,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA0Dbr&c @!!!$)J!!#')!N!KS4KYl!!!!P3!"lAS!"!!!rrrrrJ#3#"&q!!!!!J#3""Z@!*! D!DZL!*!I"!#3"A"bD@jdD@jR,@0[Eh*NFbe[CLeTG'9YFbj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c@X[aFeJ!!!X`!!!E`!*!)4SGLYJ!!!*8 !!Hel!!3!!2rrrri!N!J4I`!!!!)!N!39PJ#3'J'VSJ#3(`3!N!9bB@4TEf*eG(4 [ELecD@e`E'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aFdV, mA0)!!!&'!!!#!3#3#,IcZaJ!!!#9!!(YI!!%!!$rrrrq!*!)%B!!!!!#!*!%"TB !N"S"Uk)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA0Dbr&c@!!!#U!!!"`i!N!KJ`mNb!!!!P3!"lAd!"!!!rrrrrJ#3#"'"!!! !!J#3""Q@!*!D!DZL!*!I"!#3"A*eBQ*PFLeLB@jN,@*[H#eNC@e[,6%ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aFeV,mA0B!!!*k!!!'6!#3#,i 9UlX!!!#9!!(YIJ!%!!$rrrrq!*!)%B)!!!!#!*!%&CB!N"S"Uk)!N"m%!*!&FR9 LBQ9b,@aTEQ8YC'9YEbda,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA0Dbr&c@!!!"N!!!!!-N!*!)R%ImF!!!!*8!!Her!!3!!2rrrri!N!J4J`! !!!)!N!33PJ#3'J'VSJ#3(`3!N!9cE'PNCA)YC'9YEbda,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mA0Dbr&c@!!!"BJ!!!T`!N!K-qr`K!!!!P3! "lB!!"!!!rrrrrJ#3#"'%!!!!!J#3""b@!*!D!DZL!*!I"!#3"A0eBQ0XBA0c,@9 iDA0dD@jR,AGTC'GPG(-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aFel,mA0F!!!5N!!!-r!#3#)[rd0J!!!#9!!(YJ3!%!!$rrrrq!*!)%B8!!!! #!*!%%jB!N"S"Uk)!N"m%!*!&G(G[,A*KC'P[,@GbEh9`Fbj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&cAX[aFe`!!!C)!!!0+!*!),'VIe`!!!*8 !!Hf#!!3!!2rrrri!N!J4KJ!!!!)!N!3APJ#3'J'VSJ#3(`3!N!9hD@jNEhFYBh* PBA4TEfiYE@pbC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&c AX[aFe`!!!@J!!!+d!*!)9Bih5J!!!*8!!Hf$!!3!!2rrrri!N!J4K`!!!!)!N!3 CPJ#3'J'VSJ#3(`3!N!9hD@jNEhFYBh*PBA4TEfiYFfPYF'aP,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA0Hc0mI+!!!#(!!!"*S!N!JAE#-'!!! !P3!"lB3!"!!!rrrrrJ#3#"')!!!!!J#3""f@!*!D!DZL!*!I"!#3"AGTEQ4[Gbe MFQ9KG'P[ELeh,@a[Bf&dD@pZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LT MD!#3#,,mA-bbr&c-!!!""J!!!DF!N!LJK2r4!!!!N`!"l83!!`!!rrrrrJ#3#"' *!!!!!J#3"!D@!*!D!DQL!*!I"!#3"9*&3840484@3e3!N"#fX%[C!*!(P`!!!(B !!!!"!*!F%Cd!!!!#!!)!N!3%!!!!#!3(!*!E!BbL!*!MHQaTBNC@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&cEXaeD(3!!"5)!!!lq!*!)*IY0K3!!!*F !!HfC!!-!!2rrrri!N!J4RJ!!!!)!N!3,PJ#3'J'YSJ#3(`3!N!9YD@jTChTTF#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&cEXaeD(3!!!Ei!!!3 X!*!)G"%VF!!!!*F!!HfD!!-!!2rrrri!N!J4R`!!!!)!N!3,PJ#3'J'YSJ#3(`3 !N!9kE'PLC'9YEbj`H84@3e3!N"#fX%Xp!*!'!3)!!iBi!!!!!3#3("Q2!!!!!J! #!*!%"`!!!!J%"`#3'`'-SJ#3)fPYF(9dD@a'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)YB1L'E@LEMS!!!NN!!!HJ`#3#0A88#d!!iCC!!1'@J!$!!$rrrr q!*!)'Bi!!!!#!*!%$*B!N"S#8U)!N"m%!*!&D@e`Eh*dCA*c,R"j4&C$9!#3%,D `5pJ!N!B"!`!%KNF!!!!"!*!F'LB!!!!#!!)!N!3$!!!!#!3(!*!E!BbL!*!MH'e X4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B8Vpff&+rG!!!"GJ!!!qd !N!LGrB!a!!5(C3!%KfB!!`!!rrrrrJ#3#"SP!!!!!J#3"!f@!*!D!R5L!*!I"!# 3"@9XC@eIBfpeER3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YK5 [hEB8Vpd!!!)%!!!%`3#3#'PI+d!!")GP!!5(C`!$!!$rrrrq!*!)'L3!!!!#!*! %$*B!N"S#G+)!N"m%!*!&FQpeEQ4dFQP`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,B8Vpff&+rG!!!#XJ!!#")!N!J)4Je&!!5(C3!%KfJ!!`!!rrr rrJ#3#"SM!!!!!J#3"!Z@!*!D!R5L!*!I"!#3"A*cFc*SG'eX,R"j4&C$9!#3%,D b'F-!N!B""!!#,YF!!!!"!*!F'j`!!!!#!!)!N!3'!!!!#!3(!*!E!BbL!*!MBh9 bFf9c4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,CfXd'fGV0"!!!*pJ! !'N8!N!MM`BF'!!)ZkJ!#,ZX!!`!!rrrrrJ#3#"ZE!!!!!J#3"!H@!*!D!RLL!*! I"!#3"@aTCQ8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YRDc3EC fXd%!!!9f!!!D*J#3#$1JUFd!!LlU!!)Zl!!$!!$rrrrq!*!)'jS!!!!#!*!%#TB !N"S#H+)!N"m%!*!&EQ0eFR0PFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!LfGV0"YRDc33!!!`!!!!RN!*!)mHL-cJ!#,ZS!!LlY!!-!!2rrrri!N!J EQ3!!!!)!N!3(PJ#3'J*iSJ#3(`3!N!9bB@PZ,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88LTMD!#3#,CfXd'fMRUD!!!#8!!!"!#3#5iZJ[%!!LlU!!)ZlJ!$!!$ rrrrq!*!)'jJ!!!!#!*!%"TB!N"S#H+)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,D1HTUfMRUD!!!#bJ!!"HX!N!KI4rQI!!)ZkJ! #,Zm!!`!!rrrrrJ#3#"ZA!!!!!J#3"!Q@!*!D!RLL!*!I"!#3"A*PF'9KG#j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfGV0(YRDc4`!!"+i!!!dT!*! )Xa(iF3!#,ZS!!Ll`!!-!!2rrrri!N!JEPJ!!!!)!N!3*PJ#3'J*iSJ#3(`3!N!9 dBfa[BfXZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YRDc4lCfXdF !!"!#!!"K1`#3#&QC5V8!!LlU!!)Zm3!$!!$rrrrq!*!)'j8!!!!#!*!%"jB!N"S #H+)!N"m%!*!&H'eKFbj`H84@3e3!N"#fjUpUYZD[D`!!!38!#$Pc!!!!!3#3("b U!!!!!J!#!*!%!`!!!!J%"`#3'`'-SJ#3)h4TH%4@3e3!N"#fjUpUYZD[D`!!!38 !#$TG!!!!!3#3("bT!!!!!`!#!*!%"`!!!!J%"`#3'`+VSJ#3)f*TG'eKF(0'9N0 8!*!(##!!!!%!N!J(!*!5!9K365"(5dp1!*!)YYqlrVEIZri!!!%)!!!*"J#3#&, ZJh3!#$TL!!JkB`!%!!$rrrrq!*!)(+J!!!!#!*!%#CB!N"S#VD)!N"m%!*!&B@* [GA3ZH("Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,EIZrqfhl[r!!! !K!!!!4`!N!L5KNP)!!JkBJ!)1Q3!"!!!rrrrrJ#3#"bR!!!!!J#3"!L@!*!D!Uf L!*!I"!#3"@*[E'3ZH'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,E IZrqfhl[r!!!!JJ!!!58!N!LG9G*T!!JkBJ!)1Q8!"!!!rrrrrJ#3#"bQ!!!!!J# 3"!Z@!*!D!UfL!*!I"!#3"@0KF'PdB@`ZH'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J& B3NdJ4dY26J#3#,EIZrqfhl[r!!!!J!!!!58!N!LVD`8A!!JkBJ!)1QB!"!!!rrr rrJ#3#"bP!!!!!J#3"!Z@!*!D!UfL!*!I"!#3"@0PER4PFQSZH'*Y4PC$9!#3"`J J!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,EIZrqfhl[r!!!!Z!!!!i!!N!MTCLBc!!J kBJ!)1QF!"!!!rrrrrJ#3#"bN!!!!!J#3"!b@!*!D!UfL!*!I"!#3"@0[E@*[BQp i,RKLE8C@3e3!N!F))!!!!3#3#!F!N")"@&"0)%G,6di!N!Lfhl[rYYqlr`!!!9J !!!N1!*!)5Vd%LJ!)1Q)!#$TS!!3!!2rrrri!N!JFS`!!!!)!N!3-PJ#3'J+YSJ# 3(`3!N!9MEfeLEf*[H#jiF'e'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )YYqlrlEIZrm!!!#m!!!)l!#3#13I-a-!#$TL!!JkD3!%!!$rrrrq!*!)(+)!!!! #!*!%$TB!N"S#VD)!N"m%!*!&BfpYBQpLEhJZH("Y,M&'9N08!*!(##!!!!%!N!J (!*!5!9K#65"(5dp1!*!)YYqlrlEIZrm!!!#Z!!!$HJ#3##,14&)!#$TL!!JkDJ! %!!$rrrrq!*!)(+%!!!!#!*!%#TB!N"S#VD)!N"m%!*!&C(*TGQ9K,RKLE8C@3e3 !N!F))!!!!3#3#!F!N")"@&"0)%G,6di!N!Lfhl[rYYqlr`!!!0B!!!9E!*!)k2i d&J!)1Q)!#$TV!!3!!2rrrri!N!JFS!!!!!)!N!3+PJ#3'J+YSJ#3(`3!N!9NFQP fC@%ZH("Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&B8%dJ4dY26J#3#,EIZrqfhl[r!!! ![J!!#28!N!M2I+(i!!JkBJ!)1Q`!"!!!rrrrrJ#3#"bI!!!!!J#3"!L@!*!D!Uf L!*!I"!#3"@9iDA3ZH("Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,E IZrqfhl[r!!!!VJ!!!hd!N!K)+UYB!!JkBJ!)1Qd!"!!!rrrrrJ#3#"bH!!!!!J# 3"!Z@!*!D!UfL!*!I"!#3"@CTE'9LEhJZH'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J& B8%dJ4dY26J#3#,EIZrqfhl[r!!!!jJ!!#3B!N!LbBhT9!!JkBJ!)1Qi!"!!!rrr rrJ#3#"bG!!!!!J#3"!Z@!*!D!UfL!*!I"!#3"@CTE'9LEhJZH("Y4PC$9!#3"`J J!!!"!*!)"`#3%J&B3NdJ4dY26J#3#,EIZrqfhl[r!!!!IJ!!!5)!N!Mr#jT1!!J kBJ!)1Qm!"!!!rrrrrJ#3#"bF!!!!!J#3"!U@!*!D!UfL!*!I"!#3"@PdB@aTBbj iBQe'9N08!*!(##!!!!%!N!J(!*!5!9K#65"(5dp1!*!)YYqlrlEIZrm!!!"m!!! "*3#3#%bHGhd!#$TL!!JkF!!%!!$rrrrq!*!)(*X!!!!#!*!%#jB!N"S#VD)!N"m %!*!&DR9cG'PQH5jiBQe'9N08!*!(##!!!!%!N!J(!*!5!9K#65"(5dp1!*!)YYq m!,EI[!#3"(i!!!%I!*!)$I-kC!!)1Q)!#$Ta!!3!!2rrrri!N!JFQJ!!!!)!N!3 *PJ#3'J+YSJ#3(`3!N!9XC@CdDLjiBQe'9N08!*!(##!!!!%!N!J(!*!5!9K#65" (5dp1!*!)YYqm!,EI[!#3"0J!!!0d!*!)kMFBmJ!)1Q)!#$Tb!!3!!2rrrri!N!J FQ3!!!!)!N!3)PJ#3'J+YSJ#3(`3!N!9ZCA4h,RKLE8C@3e3!N!F))!!!!3#3#!F !N")"@&"0)%G,6di!N!Lfhl`!YYqm!!!!!6J!!!9U!*!)3QK2C!!)1Q)!#$Tc!!3 !!2rrrri!N!JFQ!!!!!)!N!3)PJ#3'J+YSJ#3(`3!N!9ZCA4h,RK`E8C@3e3!N!F ))!!!!3#3#!F!N")"@&"0)%G,6di!N!Lfhl`!YYqm!!!!!5!!!!Ma!*!)D8MJ[!! )1Q)!#$Td!!3!!2rrrri!N!JFP`!!!!)!N!3,PJ#3'J+YSJ#3(`3!N!9[F(4YC@j e,RK`E8C@3e3!N!F))!!!!3#3#!F!N")"@%*0)%G,6di!N!Lfhl`!YYqm!*!%GJ! !!5)!N!JAc1ch!!JkBJ!)1R8!"!!!rrrrrJ#3#"b@!!!!!J#3"!U@!*!D!UfL!*! I"!#3"A*TCfKdDLjiBQe'9N08!*!(##!!!!%!N!J(!*!5!9K365"(5dp1!*!)YYq m!,EI[!!!!!%q!!!*0!#3#)@!m`N!#$TL!!JkGJ!%!!$rrrrq!*!)(*8!!!!#!*! %#TB!N"S#VD)!N"m%!*!&Ff9XC@0d,RK`E8C@3e3!N!F))!!!!3#3#!F!N")"4dP 'CQpRE'8!N!Lfhl`!YYqm!!!!+bS!!#XL!*!)G(#Qf3!)1Q)!#$Th!!3!!2rrrri !N!JFP!!!!!)!N!3(PJ#3'J+YSJ#3(`3!N!9dDAJZCfPQ4PC$9!#3"`JJ!!!"!*! )"`#3%J&B3NdJ4dY26J#3#,EI[!#fhl`!N!4q!!!"+`#3##f-$X-!#$TL!!JkH!! %!!$rrrrq!*!)(*-!!!!#!*!%$CB!N"S#VD)!N"m%!*!&G@jNCA*XD@jP,RKLE8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!Lfhl[qYYqlrJ!!!4!!!!&h!*! ))NT"pJ!)1Pd!#$TH!!-!!2rrrri!N!JFNJ!!!!)!N!3)PJ#3'J+VSJ#3(`3!N!9 #98G6,R4iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!Lfhl[qYYqlrJ! !"DJ!!!d#!*!)+Dqk-!!)1Pd!#$TI!!-!!2rrrri!N!JFN3!!!!)!N!3,PJ#3'J+ VSJ#3(`3!N!9*6P0838a-,R4iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3 !N!Lfhl[qYYqlrJ!!!DB!!!,8!*!)ZQ@5h`!)1Pd!#$TJ!!-!!2rrrri!N!JFN!! !!!!#!*!%#TB!N"S#Uk)!N"m%!*!&8N9"4%e&,R4iG%4@3e3!N"#fjUpVYZD[D`! !!38!#$TG!!!!!3#3("b2!!!!!`!#!*!%"`!!!!J%"`#3'`+VSJ#3)h0KEA"XCA0 '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YYqm!,EI[!!!!!-H!!!'3J# 3#-M4JMB!#$Tj!!JkHJ!%!!$rrrrq!*!)()i!!!!#!*!%#TB!N"S#V+)!N"m%!*! &3Q&XE'p[ELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lfhl`!YYq m!!!!!a!!!!Aj!*!)%("ldJ!)1RN!#$Tl!!3!!2rrrri!N!JFM3!!!!)!N!3*PJ# 3'J+XSJ#3(`3!N!9#G'j#EhJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)YYqm!,EI[!%!!!Bm!!!EX`#3#(*r%Ai!#$Tj!!JkI!!%!!$rrrrq!*!)()` !!!!#!*!%#CB!N"S#V+)!N"m%!*!&3fe`5@eR,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,EI[!Lfhl`)!!!&*J!!$1-!N!JJBjX&!!JkH3!)1Rd!"!! !rrrrrJ#3#"b,!!!!!J#3"!Z@!*!D!UbL!*!I"!#3"80[E@*[3Qpi,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,EI[!Lfhl`)!!!&L!!!$9m!N!KLX+4 r!!JkH3!)1Ri!"!!!rrrrrJ#3#"b+!!!!!J#3"!U@!*!D!UbL!*!I"!#3"80[ER4 bEf`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YYqm#,EI[!J!!!8 )!!!283#3#!Mbi6)!#$Tj!!JkI`!%!!$rrrrq!*!)()N!!!!#!*!%#jB!N"S#V+) !N"m%!*!&6QpdC8*[EfXZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )YYqm#EEI[!N!!!33!!!)r3#3#(Ch4i!!#$Tj!!JkJ!!%!!$rrrrq!*!)()J!!!! #!*!%#TB!N"S#V+)!N"m%!*!&6h"d6@9ZG5j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lfhl`*YYqm#3!!!j`!!!Ir!*!)6!VaBJ!)1RN!#$U"!!3!!2r rrri!N!JFK`!!!!)!N!3+PJ#3'J+XSJ#3(`3!N!93Eh"0C@je,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,EI[!Qfhl`*!!!&U!!!#jX!N!JCTfU[!!J kH3!)1S)!"!!!rrrrrJ#3#"b'!!!!!J#3"!U@!*!D!UbL!*!I"!#3"90)6'PcG$% ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YYqm#EEI[!N!!!GN!!! 5E!#3#'3#eEi!#$Tj!!JkJ`!%!!$rrrrq!*!)()8!!!!#!*!%#TB!N"S#V+)!N"m %!*!&8dK-DA0d-Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lfhl` *YYqm#3!!"2S!!!Tf!*!)PE()Y`!)1RN!#$U%!!3!!2rrrri!N!JFK!!!!!)!N!3 (PJ#3'J+XSJ#3(`3!N!98FQ9P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,EIZrkfhl[q!!!GLJ!!GCB!N!KVVI0I!!JkA3!)1Q%!!`!!rrrrrJ#3#"b $!!!!!J#3"!f@!*!D!UZL!*!I"!#3"A4TH(GTC'GPG(-ZF(P%9N08!*!)!q!#@`" A!3Hh#m6UY`[%m!!!!*J!!!"d!!!J!3#3("'K!!!!!3!#!*!%#J!!!!J%"`#3%D! !N!N"LmM"!*!L4AKdC@jcD@pZFd4@3e3!N"#h#m6UY`[%l`!!!*N!!!#B!!!J!3# 3("'L!!!!!J!#!*!%"`!!!!J%"`#3%D!!N!N"VXJ"!*!L5@eKCfPZCdC@3e3!N!F ))!!!!3#3#!F!N")"9%9B9%0A588!N!LdUqPHYX4V$J!!-&`!!(q+!*!)%*Ujq3! !!*N!!HfG!!-!!2rrrri!N!J4S`!!!!)!N!3(PJ#3'J'[b!#3(`3!N!9$5%&14d9 64PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,)9FYbeCX))!!!$YJ!!%a- !N!Kc[('Y!!!!Q3!"lCi!!`!!rrrrrJ#3#"'N!!!!!J#3"!L@!*!D!Dr)!*!I"!# 3"8026P4&6P464PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,)9FYfeCX) )!!!'q!!!%$F!N!KFk1[#!!!!Q3!"lCm!!`!!rrrrrJ#3#"'P!!!!!J#3"!H@!*! D!Dr)!*!I"!#3"8C28Ne"9&0%9N08!*!3YV",h!#3"jS!!!#C!!!!!3#3("'Q!!! !!`!#!*!%"J!!!!J%"`#3'`'[b!#3)dPYB@GPFdC@3e3!N!F))!!!!3#3#!F!N") "4dP'CNT@9e)!N!Lb&A,cXK9bm`!!2PJ!!$r3!*!)C$4!#3!!!*S!!HfM!!3!!2r rrri!N!J4T`!!!!)!N!3)PJ#3'J'`b!#3(`3!N!9XC@jK,QGTCNC@3e3!N!F))!! !!3#3#!F!N")"5P"&4dT@9e)!N!Lb&A,eXK9bp3!!%Pi!!",N!*!)Z9fTM!!!!*S !!HfN!!3!!2rrrri!N!J4U!!!!!)!N!3)PJ#3'J'`b!#3(`3!N!9XC@jK,QT`CdC @3e3!N!F))!!!!3#3#!F!N")"8&"(68G,6di!N!Lb&A-)XK9c#`!!YN)!!-!2!*! )a$lbB3!!!*S!!HfP!!3!!2rrrri!N!J4U3!!!!)!N!3)PJ#3'J'`b!#3(`3!N!9 XC@jK,R"`E84@3e3!N"#h#m6VY`[%lJ!!!*`!!!#C!!!!!3#3("'[!!!!!`!#!*! %!`!!!!J%"`#3%D!!N!N"VmJ!N#0358a'9N08!*!(##!!!!%!N!J(!*!3"3!"FfK XBP"jG'J!N!LbmbpAY`ZYP`!#G1J!"AM&!!!!CJ!!!C,bIe,I!!!!R!!"lD`!"!! !rrrrrJ#3#"'`!!!!!J#3""#@!*!3J!#3#3'b`!#3(`B!N!9ID@eKCfPZCbj`F'- ZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,E%E0+h#kie!!* dk!!&H-8!!!"S!!!"P[`[U[`!"eQr!!GC`3!%!!$rrrrq!*!)(&i!!!!#!*!%%jB !N"!J!*!*!E+)!*!I"`#3"!&ID@eKCfPZCbjMBA*LEfiZFfaL4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,)9Fa'eCX)+!!!0dJ!!,LX!N!KKC3Y[!!!!R!! "lDi!"!!!rrrrrJ#3#"'b!!!!!J#3""'@!*!D!E,)!*!I"!#3"8&bCdPYB@GP8'a eCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fa5bi`PP!!! %SJ!!#dS!N!Lrpf8G!!!!R!!"lDm!"!!!rrrrrJ#3#"'c!!!!!J#3"!k@!*!D!E, )!*!I"!#3"8*NCNC[ER4'D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,)9FaLeCX)+!!!((!!!%Hm!N!Jap(Ih!!!!R!!"lE!!"!!!rrrrrJ#3#"' d!!!!!J#3""'@!*!D!E,)!*!I"!#3"8*YF%PYB@GP8'aeCfPZ,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FaUeCX)+!!!#Q!!!"J3!N!KM!H24!!! !R!!"lE%!"!!!rrrrrJ#3#"'e!!!!!J#3"!k@!*!D!E,)!*!I"!#3"80[ER4KD@j PFNP2,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FaZeCX)+!!! $,J!!"`m!N!JlIAG5!!!!R!!"lE)!"!!!rrrrrJ#3#"'f!!!!!J#3""'@!*!D!E, )!*!I"!#3"80eFNPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,)9FabeCX)+!!!$CJ!!"Q8!N!LBpkJA!!!!R!!"lE-!"!!!rrrrrJ# 3#"'h!!!!!J#3""'@!*!D!E,)!*!I"!#3"84MH%PYB@GP8'aeCfPZ,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FafeCX)+!!!+dJ!!'e3!N!J2l`I Q!!!!R!!"lE3!"!!!rrrrrJ#3#"'i!!!!!J#3""'@!*!D!E,)!*!I"!#3"89`FdP YB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fb' eCX)+!!!%iJ!!#bJ!N!J'62[#!!!!R!!"lE8!"!!!rrrrrJ#3#"'j!!!!!J#3""' @!*!D!E,)!*!I"!#3"8CXD8PYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,)9Fb@bi`PS!!!%h!!!$,S!N!MQ@%IK!!!!R!!"lEB!"!! !rrrrrJ#3#"'k!!!!!J#3"!Z@!*!D!E,)!*!I"!#3"8C[ER4'D@aP,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FbQeCX),!!!)S!!!&"%!N!M)9BA R!!!!R!!"lEF!"!!!rrrrrJ#3#"'l!!!!!J#3""'@!*!D!E,)!*!I"!#3"8C`H%P YB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FbZ eCX),!!!#b!!!"FX!N!L'c5V*!!!!R!!"lEJ!"!!!rrrrrJ#3#"'m!!!!!J#3""' @!*!D!E,)!*!I"!#3"8GLFNPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,)9FbqeCX),!!!$PJ!!"Pi!N!MdU'*'!!!!R!!"lEN!"!! !rrrrrJ#3#"'p!!!!!J#3"!k@!*!D!E,)!*!I"!#3"8GN5@eKCf9'D@aP,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fc'eCX),!!!,3J!!(JJ!N!K a#mM"!!!!R!!"lES!"!!!rrrrrJ#3#"'q!!!!!J#3""'@!*!D!E,)!*!I"!#3"8G TCNPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,) 9FcDb&A-f!!!%M!!!#e-!N!M!(Fep!!!!R!!"lEX!"!!!rrrrrJ#3#"'r!!!!!J# 3""1@!*!D!E,)!*!I"!#3"8GTEA"(FQ&ND@9ZG%CTE'8ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)XK9c0l)9FcF!!!*%!!!%X!#3#(5m3[!!!!#F!!( Y[!!%!!$rrrrq!*!)%F!!!!!#!*!%%TB!N"S"XXJ!N"m%!*!&4fPYF&"KE'9dG'9 'D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FcHeCX),!!! $)J!!"Z)!N!MaN9Cl!!!!R!!"lEd!"!!!rrrrrJ#3#"("!!!!!J#3""'@!*!D!E, )!*!I"!#3"8PMEdPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,)9FcLfa'X2!!!FYJ!!@q-!N!KGp#'j!!!!R!!"lEi!"!!!rrrrrJ# 3#"(#!!!!!J#3"!L@!*!D!E,)!*!I"!#3"8PYB@GP,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,)9FcLeCX)-!!!$)J!!$*%!N!JM(%6J!!!!R!!"lEm !"!!!rrrrrJ#3#"($!!!!!J#3"!f@!*!D!E,)!*!I"!#3"8PYB@GP3fK[F(-ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c1E9Q`J`!!!4H!!!2b`# 3#*JTE3-!!!#F!!(Y`!!%!!$rrrrq!*!)%F3!!!!#!*!%$*B!N"S"XXJ!N"m%!*! &5@eKCf9%FQ&h,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FcQ eCX)-!!!#B!!!"8i!N!MA2*P1!!!!R!!"lF%!"!!!rrrrrJ#3#"(&!!!!!J#3"!q @!*!D!E,)!*!I"!#3"8PYB@GP4@jSB@jMC5j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lb&A-jY@E#$!!!#hi!!#$)!*!)TP$$*!!!!*`!!Hh#!!3!!2r rrri!N!J4aJ!!!!)!N!3-PJ#3'J'bb!#3(`3!N!9*E@&RC8CTE'8ZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XZ-*JE9Q`J`!!!'5!!!#H`#3#13&0#8 !!!#F!!(Y``!%!!$rrrrq!*!)%FF!!!!#!*!%$TB!N"S"XXJ!N"m%!*!&5@eKCf9 'D@aP58mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c1V9Q`J` !!!)1!!!$Y3#3#(`b#R!!!!#F!!(Ya!!%!!$rrrrq!*!)%FJ!!!!#!*!%$TB!N"S "XXJ!N"m%!*!&5@eKCf9'D@adCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)XK9c1l9Q`J`!!!5)!!!*i3#3#$PRbFd!!!#F!!(Ya3!%!!$rrrrq!*! )%FN!!!!#!*!%$*B!N"S"XXJ!N"m%!*!&5@eKCf9'Efjd,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,)9FcZeCX)-!!!$a!!!#U%!N!Mf@#bS!!!!R!! "lFB!"!!!rrrrrJ#3#"(+!!!!!J#3"!q@!*!D!E,)!*!I"!#3"8PYB@GP8'&XCA4 dC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A-mY@E#$!!!!2B !!!&+!*!)3fF2D3!!!*`!!Hh(!!3!!2rrrri!N!J4b`!!!!)!N!3-PJ#3'J'bb!# 3(`3!N!9*E@&RC9"KG'JZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )XK9c2,)9Fc`!!!'J!!!#P!#3#!-FV5J!!!#F!!(Yb!!%!!$rrrrq!*!)%F`!!!! #!*!%%*B!N"S"XXJ!N"m%!*!&5@eKCf96CA&eC@jMC5j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lb&A-mY@E#$3!!"8i!!!k"!*!)PEc[e!!!!*`!!Hh *!!3!!2rrrri!N!J4c3!!!!)!N!3-PJ#3'J'bb!#3(`3!N!9*E@&RC90dBA3ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c2E9Q`Jd!!!G'!!!9-3# 3#$YAFDJ!!!#F!!(YbJ!%!!$rrrrq!*!)%Fi!!!!#!*!%#TB!N"S"XXJ!N"m%!*! &5@eKCf98Dbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A-pY@E #$3!!!XB!!!9I!*!)V!$eL`!!!*`!!Hh,!!3!!2rrrri!N!J4c`!!!!)!N!3,PJ# 3'J'bb!#3(`3!N!9*E@&RC9GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lb&A-hY@E##`!!#e`!!"mr!*!)R!*ek3!!!*`!!Hh-!!3!!2rrrri!N!J 4d!!!!!)!N!33PJ#3'J'bb!#3(`3!N!9*E8PYB@GP8'aeCfPZ,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FcfeCX)0!!!$E!!!"YF!N!LGeAD2!!! !R!!"lFd!"!!!rrrrrJ#3#"(4!!!!!J#3""'@!*!D!E,)!*!I"!#3"8PYG%PYB@G P8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FckeCX) 0!!!'E!!!$a8!N!KZCb%#!!!!R!!"lFi!"!!!rrrrrJ#3#"(5!!!!!J#3""+@!*! D!E,)!*!I"!#3"8P`G'0*E@&RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lb&A0!Y@E#$3!!$8!!!#@r!*!)l*!!#LN!!!#F!!(Yc`!%!!$ rrrrq!*!)%G-!!!!#!*!%%TB!N"S"XXJ!N"m%!*!&5R"PCdPYB@GP8'aeCfPZ,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fd1b&A0$!!!$+!!!"V3 !N!JT58+K!!!!R!!"lG!!"!!!rrrrrJ#3#"(8!!!!!J#3""5@!*!D!E,)!*!I"!# 3"8eM5@4KFdPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,)9Fd1eCX)0!!!$I!!!"jN!N!MZADH&!!!!R!!"lG%!"!!!rrrrrJ#3#"( 9!!!!!J#3""'@!*!D!E,)!*!I"!#3"8eTBdPYB@GP8'aeCfPZ,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fd1eCX)0!!!#U!!!"MN!N!Lb6p+E!!! !R!!"lG)!"!!!rrrrrJ#3#"(@!!!!!J#3""+@!*!D!E,)!*!I"!#3"8e`C@G*E@& RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0%Y@E #$3!!!mS!!!IH!*!)lmmZa!!!!*`!!Hh6!!3!!2rrrri!N!J4e`!!!!)!N!34PJ# 3'J'bb!#3(`3!N!90Fh"*E@&RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lb&A0%XZ-*K!!!%h!!!$,j!*!)5UYJGJ!!!*`!!Hh8!!3!!2r rrri!N!J4f!!!!!)!N!3-PJ#3'J'bb!#3(`3!N!92E'9'D@aP58mZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c4V)9FdB!!!)@!!!%*J#3#*JHbpF !!!#F!!(Ye3!%!!$rrrrq!*!)%GN!!!!#!*!%$TB!N"S"XXJ!N"m%!*!&8'&XCA4 dC8CTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c4l9Q`Ji !!!-)!!!&ZJ#3#0K!1h-!!!#F!!(YeJ!%!!$rrrrq!*!)%GS!!!!#!*!%%CB!N"S "XXJ!N"m%!*!&8'0N5@eKCf93E(9RD@iZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)XK9c5E9Q`Ji!!!F8!!!AB`#3#-+#-8`!!!#F!!(Ye`!%!!$rrrr q!*!)%GX!!!!#!*!%$TB!N"S"XXJ!N"m%!*!&8'0Q4QpZG%CTE'8ZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c5l9Q`Ji!!!DB!!!2$3#3##PVVbN !!!#F!!(Yf!!%!!$rrrrq!*!)%G`!!!!#!*!%%CB!N"S"XXJ!N"m%!*!&8'0i5@e KCf93E(9RD@iZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9c6,9 Q`Ji!!!B@!!!2[3#3#,KSqCd!!!#F!!(Yf3!%!!$rrrrq!*!)%Gd!!!!#!*!%%CB !N"S"XXJ!N"m%!*!&8'4Q5@eKCf93E(9RD@iZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)XK9c6E)9Fdd!!!0N!!!'F`#3#"Z&-!%!!!#F!!(YfJ!%!!$ rrrrq!*!)%Gi!!!!#!*!%%jB!N"S"XXJ!N"m%!*!&8'PiBA**E@&RC9"XG@GTELj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A01Y@E#$J!!$JJ!!#E H!*!)HI$p$!!!!*`!!HhE!!3!!2rrrri!N!J4h`!!!!)!N!34PJ#3'J'bb!#3(`3 !N!93EQG*E@&RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lb&A05Y@E#$J!!"()!!!Va!*!)UQ*Z(!!!!*`!!HhF!!3!!2rrrri!N!J4i!! !!!)!N!34PJ#3'J'bb!#3(`3!N!93F'e*E@&RC9"XG@GTELj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A06Y@E#$J!!"$S!!!Sd!*!)0Y+qU`!!!*` !!HhG!!3!!2rrrri!N!J4i3!!!!)!N!34PJ#3'J'bb!#3(`3!N!93Ff4*E@&RC9" XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0&Y@E#$J! !"k`!!"0j!*!)V3lU$3!!!*`!!HhH!!3!!2rrrri!N!J4iJ!!!!)!N!3*PJ#3'J' bb!#3(`3!N!938d4bBAFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )XK9c9V9Q`Ji!!!0q!!!(b`#3#%$N)9i!!!#F!!(Yh`!%!!$rrrrq!*!)%H-!!!! #!*!%%CB!N"S"XXJ!N"m%!*!&8fGT5@eKCf93E(9RD@iZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)XK9c@E9Q`Jm!!!0J!!!'jJ#3#-DHa1F!!!#F!!( Yi!!%!!$rrrrq!*!)%H3!!!!#!*!%%CB!N"S"XXJ!N"m%!*!&8h9Z5@eKCf93E(9 RD@iZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9cA,9Q`Jm!!!) J!!!$RJ#3#1'b4TN!!!#F!!(Yi3!%!!$rrrrq!*!)%H8!!!!#!*!%#*B!N"S"XXJ !N"m%!*!&9'&b58mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9 cA,9Q`Jm!!!5q!!!,8!#3#(Z6H@!!!!#F!!(YiJ!%!!$rrrrq!*!)%HB!!!!#!*! %%CB!N"S"XXJ!N"m%!*!&9'GK5@eKCf93E(9RD@iZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)XK9cB,E%D`m!!"6U!!!m13#3#&(6Qm)!!!#F!!(Yi`! %!!$rrrrq!*!)%HF!!!!#!*!%%TB!N"S"XXJ!N"m%!*!&9'PQCNPYB@GP8'aeCfP Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Ff'eCX)2!!!*B!! !'0B!N!JBJ#m6!!!!R!!"lH3!"!!!rrrrrJ#3#"(S!!!!!J#3""'@!*!D!E,)!*! I"!#3"9GYCNPYB@GP8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,)9Ff5eCX)2!!!$-!!!"Nm!N!Lb#k1R!!!!R!!"lH8!"!!!rrrrrJ#3#"( T!!!!!J#3""'@!*!D!E,)!*!I"!#3"9KLE8PYB@GP8'aeCfPZ,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,)9FfDeCX)2!!!%I!!!#ES!N!MKAY+N!!! !R!!"lHB!"!!!rrrrrJ#3#"(U!!!!!J#3""'@!*!D!E,)!*!I"!#3"9K`E8PYB@G P8'aeCfPZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,M#BQbi`Q *!!!$3J!!"J3!N!LYlS9r!!!!R!!"lHF!"!!!rrrrrJ#3#"(V!!!!!J#3""@@!*! D!E,)!*!I"!#3"9K@9'KeE@**E@&RC9"XG@GTELj`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!LeCX)2Y@E#$`!!!-B!!!$Y!*!)0T9Pr!!$KhB!!iGh!!3 !!2rrrri!N!JCM3!!!!)!N!3,PJ#3'J'bb!#3(`3!N!9IAfPZDA4IAbj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeCX)2Y@E#$`!!"6S!!!`f!*!)2pf RC`!$KhB!!iH`!!3!!2rrrri!N!JCM!!!!!)!N!3,PJ#3'J'bb!#3(`3!N!98D@C Q9'&RFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lb&A,PXK9bj3! !!!`!!!!%!*!)YhmD43!!!*N!!HfJ!!-!!2rrrri!N!J4l!!!!!)!N!3(PJ#3'J' [b!#3(`3!N!9358`ZF(4S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,) 9FZDfa'X2!!!1h!!!*@X!N!Kb-60!!!!!Q3!"lD%!!`!!rrrrrJ#3#"(Y!!!!!J# 3"!D@!*!D!Dr)!*!I"!#3"9*&3840484@3e3!N"#f`G+`!*!(R3!!!*N!!!!"!*! F%Hi!!!!$!!)!N!3%!!!!#!3(!*!E!Dr)!*!M8f&ZC8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lb&A0TXK9cD3!!!E!!!!,U!*!),rEAd!!!!*d!!HhT!!3 !!2rrrri!N!J4l`!!!!)!N!3(PJ#3'J'cb!#3(`3!N!9NC@e[,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88LTMD!#3#,,M#BUbi`Q+!!!!p!!!!@m!N!MI9Fap!!! !R3!"lHS!"!!!rrrrrJ#3#"(`!!!!!J#3"!D@!*!D!E2)!*!I"!#3"9*&384048C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0XY@E#%!!!"fJ!!"3!N!N "0e5@!!!!R3!"lHX!"!!!rrrrrJ#3#"(a!!!!!J#3"!H@!*!D!E2)!*!I"!#3"A0 KEQ8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)Y@E#%,9Q`K!!!!V i!!!CY3#3#(&J6p!!!iHe!!1(Z3!%!!$rrrrq!*!)'BX!!!!#!*!%#jB!N"S"XmJ !N"m%!*!&Ff&ZC@4[BbjdH(4%9N08!*!3YV",j`#3"ji!!!#C!!!!!3#3("(b!!! !!`!#!*!%"`!!!!J%"`#3'`'[b!#3)e0MFQP`G(0'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)XK9cEl)9Ffm!!!KH!!!9`!#3#-B5Sid!!!#H!!(Yl3!%!!$ rrrrq!*!)%I-!!!!#!*!%#TB!N"S"Y-J!N"m%!*!&BQ4Q-R"TE#j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0`XK9cF!!!!R!!!!6p!*!)iSJqC!! !!*i!!HhZ!!3!!2rrrri!N!J4p!!!!!)!N!3,PJ#3'J'db!#3(`3!N!9PEQKKEQ0 PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A0cXZ-*M!!!!rB !!!Pr!*!)CMF3SJ!!!*i!!Hh[!!3!!2rrrri!N!J4p3!!!!)!N!3+PJ#3'J'db!# 3(`3!N!9PH("XEf4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,) 9FhDb&A0f!!!%hJ!!#U)!N!La9*)1!!!!RJ!"lI!!"!!!rrrrrJ#3#"(f!!!!!J# 3"!Z@!*!D!E6)!*!I"!#3"@GTCQeKDf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,)9FhQb&A0j!!!%VJ!!#TX!N!K9p[X1!!!!RJ!"lI%!"!!!rrr rrJ#3#"(h!!!!!J#3"!Z@!*!D!E6)!*!I"!#3"@PYB@GP-R"j,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fi#b&A1!!!!$2!!!"Ud!N!LJmHl#!!! !RJ!"lI)!"!!!rrrrrJ#3#"(i!!!!!J#3"!U@!*!D!E6)!*!I"!#3"A"KD@jdCA) ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9cJ,9Q`K!!!!1U!!! )6J#3#*ZXbm8!!!#H!!(Ym`!%!!$rrrrq!*!)%IN!!!!#!*!%$CB!N"S"Y-J!N"m %!*!&F'PXBfpZGQ9bG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L bi`Q-XZ-*M!!!$M`!!$VF!*!)jcTRG`!!!*i!!Hhd!!3!!2rrrri!N!J4qJ!!!!) !N!3-PJ#3'J'db!#3(`3!N!9`D@aNFQPfCA)ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)XK9cJE)9Fi%!!!0%!!!'j!#3#%6[bAJ!!!#H!!(Yp3!%!!$ rrrrq!*!)%IX!!!!#!*!%#TB!N"S"Y-J!N"m%!*!&F'PXCQPXC5j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&A1#XK9cJJ!!!NS!!!5&!*!)TkVUEJ! !!*i!!Hhf!!3!!2rrrri!N!J4r!!!!!)!N!3+PJ#3'J'db!#3(`3!N!9`D@aQEfj d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9Fi1b&A1$!!!$d!! !#$F!N!Jr#i"S!!!!RJ!"lIF!"!!!rrrrrJ#3#"(p!!!!!J#3"!Z@!*!D!E6)!*! I"!#3"A"TE("bD@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,) 9Fi5b&A1%!!!$N!!!!!N+!*!)DemTMJ!!!*i!!Hhi!!3!!2rrrri!N!J4rJ!!!!) !N!3*PJ#3'J'db!#3(`3!N!9`E'&jCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&45+Q0S!*!)XK9cEl)9Ffm!!!23!!!*T3#3#1$behd!!!#H!!(Yq3!%!!$rrrr q!*!)%Im!!!!#!*!%"TB!N"S"Y-J!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,)9Fi@b&A1&!!!$)!!!"KB!N!M@kEeC!!!!RJ!"lIS !"!!!rrrrrJ#3#")!N!3#!*!%$TB!N"S"Y-J!N"m%!*!&G'KbCA0SEfaNCA)ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9cKV)9Fj)!!!'Z!!!$8`# 3#*Z,[f8!!!#H!!(Yq`!%!!$rrrrq!*!)%J%!!!!#!*!%#CB!N"S"Y-J!N"m%!*! &GQPPGf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,9Q`JHeCX) (!!!!LJ!!!,%!N!J+j6',!!1(CJ!$KfF!!`!!rrrrrJ#3#"Q*!!!!!J#3"!@@!*! D!Dq!!3#3(J3!N!9#98P-4%4@3e3!N"#h#m6`Y`[%mJ!!!+!!!!#B!!!!!3#3(") &!!!!!J!#!*!%!`!!!!J%"`#3%D!!N!N"VS$!!*!LD@eR4&C$9!#3%,D`5qS!N!H K!!!!S!!!!!%!N"`5"J!!!!-!!J#3"!-!!!!)"!F!N"X"YS$!!*!L6'PL4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,)9GRUb&ACk!!!$fJ!!#Fi!N!J-$p1 Y!!!!S3!"lJ)!"!!!rrrrrJ#3#")(!!!!!J#3"!D@!*!D!EH!`!#3(J3!N!9TE@F ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9fHl)9GRX!!!E%!!! 9a3#3#)G@')B!!!#K!!(Z!`!%!!$rrrrq!*!)%JJ!!!!#!*!%#CB!N"S"Yi$!!*! H"!#3"@PYCf*YF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&AC mY1)Gm!!!%Ui!!%)T!*!)+R%@A`!!!+%!!Hi%!!3!!2rrrri!N!J5#3!!!!)!N!3 0PJ#3'J'hJ-!!N"i%!*!&D@eRBfpZGQ9bG#j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lb&ACpXZmbSJ!!"GJ!!"(%!*!)rhLXlJ!!!+%!!Hi&!!3!!2r rrri!N!J5#J!!!!)!N!3+PJ#3'J'hJ-!!N"i%!*!&D@eRDR"PCbj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&ACpXK9fI3!!"*J!!!b5!*!)l'VEj!! !!+%!!Hi'!!3!!2rrrri!N!J5#`!!!!)!N!3+PJ#3'J'hJ-!!N"i%!*!&D@eRF'P MG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&ACqXK9fIJ!!!MJ !!!@-!*!)U[4hd`!!!+%!!Hi(!!3!!2rrrri!N!J5$!!!!!)!N!3+PJ#3'J'hJ-! !N"i%!*!&D@eRF(KiH#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L b&ACqXK9fIJ!!!l)!!!eq!*!)I9!XU!!!!+%!!Hi)!!3!!2rrrri!N!J5$3!!!!) !N!3*PJ#3'J'hJ-!!N"i%!*!&D@eRFfGT,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,)9GRkb&ACq!!!$JJ!!#-8!N!MK5lA9!!!!S3!"lJN!"!!!rrr rrJ#3#")1!!!!!J#3"!Q@!*!D!EH!`!#3(J3!N!9TE@GiBQdZF(P%9N08!*!3Y`[ %m,F,a2%!!!#L!!!!S!!!!!%!N"`5$`!!!!-!!J#3"!-!!!!)"!F!N"'J!*!*!ED !`!#3)NeKBdC@3e3!N!F))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,CdpkQh#kf J!!!F*!!!0ci!!!"S!!!"PQp2)cN!!!#L!!(Z#`!%!!$rrrrq!*!)%K!!!!!#!*! %%jB!N"#!!*!*!EL!J!#3(JB!N!9TE@GMEfa[FQeKF#j`F'-ZFfaL4PC$9!#3"`J J!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6aUlF,VD%!!!Yb!!!JiJ!!!'B!!!' 5k$ApB3!!!+)!!Hi-!!3!!2rrrri!N!J5%3!!!!)!N!34PJ#3%)!!N!N"Z)#!!*! H"J#3"@PYCfC[FQeKG#j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'* 3HA4S!*!)YR6hpVF,VDJ!!"d3!!!rh!!!!'B!!!'5DV"pP`!!!+)!!Hi0!!3!!2r rrri!N!J5%J!!!!)!N!31PJ#3%)!!N!N"Z)#!!*!H"J#3"@PYCfGTCLj`F'-ZFfa L4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YV)HPVF,VDX!!2rd!!) I43!!!'3!!!'55'MG83!!!+)!!Hi1!!3!!2rrrri!N!J5%`!!!!)!N!32PJ#3%)! !N!N"Z)#!!*!H"J#3"@PYCfT`C@FZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N"! &!!&cD'aL8(PdD!#3#,CdmF+h#kfL!!!0F!!!'bX!!!"N!!!"MRe5Mi3!!!#L!!( Z$`!%!!$rrrrq!*!)%K3!!!!#!*!%$CB!N"#!!*!*!EL!J!#3(JB!N!9TE@G[F#j `F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6h`VF,VD3 !!"K`!!!eB`!!!'3!!!'5b%-&UJ!!!+)!!Hi3!!3!!2rrrri!N!J5&3!!!!)!N!3 1PJ#3%)!!N!N"Z)#!!*!H"J#3"@PYCh"LE5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*! )"`#3%!8!!A0SE'*3HA4S!*!)YR6iU,F,VDB!!"Y+!!!kV3!!!'3!!!'51S+!f`! !!+)!!Hi4!!3!!2rrrri!N!J5&J!!!!)!N!31PJ#3%)!!N!N"Z)#!!*!H"J#3"@P YCh"RE5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6 i&lF,VDi!!+U-!!&m(`!!!'3!!!'5GeS-33!!!+)!!Hi5!!3!!2rrrri!N!J5&`! !!!)!N!31PJ#3%)!!N!N"Z)#!!*!H"J#3"@PYCh"ZCbj`F'-ZFfaL4PC$9!#3"`J J!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6iU,F,VDF!!"ei!!""*J!!!'3!!!' 5RmN1%3!!!+)!!Hi6!!3!!2rrrri!N!J5'!!!!!)!N!31PJ#3%)!!N!N"Z)#!!*! H"J#3"@PYCh"`E5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4 S!*!)YR6[qEF,VDm!!"N!!!!eP3!!!'3!!!'5S3GV$!!!!+)!!Hi8!!3!!2rrrri !N!J5'3!!!!)!N!31PJ#3%)!!N!N"Z)#!!*!H"J#3"@PYCh0RD5j`F'-ZFfaL4PC $9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)YR6iXVF,VDd!!*ZF!!-`%J! !!'J!!!'5900H@`!!!+)!!Hi9!!3!!2rrrri!N!J5'J!!!!)!N!32PJ#3%)!!N!N "Z)#!!*!H"J#3"@PYCh4TCQBZF("M,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3! "FfKXBP"jG'J!N!LfNmrIY`ZZ3!!!(#)!!$G1!!!!DJ!!!CTde[B$!!)`H3!#-(i !"!!!rrrrrJ#3#"Z-!!!!!J#3""D@!*!3)!#3#3'iJ%!!N"i(!*!%!@PYCf0[E'p bE@&`,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*! )YT236VF,VN%!!!Yk!!!JmJ!!!'`!!!'@aalZ%`!#-(N!!M#'!!3!!2rrrri!N!J EK3!!!!)!N!38PJ#3%#!!N!N"Z)"!!*!H"`#3"!&TE@GQEh*YBA3ZBf&bBQpZ,R0 XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!LfNp#5Y`ZZ6!!!(4B !!$rF!!!!CJ!!!C+Cc`lr!!)`H3!#-)i!"!!!rrrrrJ#3#"Yq!!!!!J#3""'@!*! 3)!#3#3'iJ%!!N"i(!*!%!@PYCfGTCLjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!# 3"`F!N"!&!!&cD'aL8(PdD!#3#,D6d+Lh#kj1!!$rrJ!#(e8!!!"Q!!!"PZr-YRi !!M"j!!)`PJ!%!!$rrrrq!*!)'hF!!!!#!*!%%TB!N"!J!*!*!EL!3!#3(JF!N!3 "D@eRDR"PCbjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(P dD!#3#,D6d&1h#kj"!!!0H!!!'bX!!!"S!!!"NKe3R"J!!M"j!!)`R`!%!!$rrrr q!*!)'fm!!!!#!*!%%*B!N"!J!*!*!EL!3!#3(JF!N!3"D@eREh!ZBf&bBQpZ,R0 XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!LfNp"RY`ZZ4!!!'(S !!$9c!!!!CJ!!!C,Q@[!R!!)`H3!#-+F!"!!!rrrrrJ#3#"YS!!!!!J#3""'@!*! 3)!#3#3'iJ%!!N"i(!*!%!@PYCh"LE5jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!# 3"`F!N"!&!!&cD'aL8(PdD!#3#,D6d(Dh#kj'!!!E6J!!1Vd!!!"Q!!!"NV2'2YB !!M"j!!)`V`!%!!$rrrrq!*!)'f%!!!!#!*!%%CB!N"!J!*!*!EL!3!#3(JF!N!3 "D@eRF'GY,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4 S!*!)YT23clF,VP%!!+U1!!&m(`!!!'J!!!'5+R,2#3!#-(N!!M#h!!3!!2rrrri !N!JE@J!!!!)!N!34PJ#3%#!!N!N"Z)"!!*!H"`#3"!&TE@G`EQFZBf&bBQpZ,R0 XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!LfNp#%Y`ZZ53!!(Ai !!%%f!!!!C!!!!C)9JFe!!!)`H3!#-,m!"!!!rrrrrJ#3#"Y6!!!!!J#3""'@!*! 3)!#3#3'iJ%!!N"i(!*!%!@PYCh"`E5jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!# 3"`F!N"!&!!&cD'aL8(PdD!#3#,D6bQHh#kj5!!!C#!!!0C8!!!"N!!!"NP+'l%B !!M"j!!)`a`!%!!$rrrrq!*!)'d`!!!!#!*!%%CB!N"!J!*!*!EL!3!#3(JF!N!3 "D@eRFfGT,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4 S!*!)YT259lF,VP!!!*ZQ!!-`)J!!!'J!!!'@!"Ekl!!#-(N!!M$2!!3!!2rrrri !N!JE43!!!!)!N!35PJ#3%#!!N!N"Z)"!!*!H"`#3"!&TE@GdD@CQ,Q0KFQ*[ELj cE'*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)XK9fE,)9GQ`!!!TF!!! 9YJ#3#,3F8fN!!!#J!!(Z!!!$!!$rrrrq!*!)%KX!!!!#!*!%#TB!N"S"YS$!!*! H"!#3"9*&384045jTE@G%9N08!*!3YV",rJ#3"k-!!!#J!!!!!3#3(")F!!!!!`! #!*!%"!!!!!J%"`#3'`'fJ-!!N#*dCA0d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,)9GS+b&AD#!!!#E!!!"@d!N!JH-h8`!!!!S`!"lKF!"!!!rrrrrJ# 3#")G!!!!!J#3"!f@!*!D!EQ!`!#3(J3!N!9RE(4PFh4fD@9h,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&38%G04dY26J#3#,)9GSDb&AD'!!!Y!J!!-LS!N!KSUcRr!!! !S`!"lKJ!"!!!rrrrrJ#3#")H!!!!!J#3"!q@!*!D!EQ!`!#3(J3!N!9TELeRFQ9 j,A3bBLj`Cfe'9N08!*!(##!!!!%!N!J(!*!5!9"34de(5dp1!*!)XK9fKV)9GSB !!!6)!!"253#3#*qNh2N!!!#M!!(Z'3!%!!$rrrrq!*!)%Km!!!!#!*!%#jB!N"S "ZB$!!*!H"!#3"@PZ,@PMEfiZF'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&(58CQ5PC A8J#3#,)9GSbb&AD0!!!cH!!!0*d!N!JBEcB*!!!!S`!"lKS!"!!!rrrrrJ#3#") J!!!!!J#3"!k@!*!D!EQ!`!#3(J3!N!9TELeYBA!YG$*L,QGTCNC@3e3!N!F))!! !!3#3#!F!N")"8&"(68G,6di!N!Lb&ADCXK9fQJ!!Jd!!!*Cp!*!)Y'8FiJ!!!+- !!HiE!!3!!2rrrri!N!J5)3!!!!)!N!31PJ#3'J'jJ-!!N"i%!*!&D@iYFQGL,A3 bBLj`F'e'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XK9fQV)e9ed!!!( d!!!$q`#3#1PD@aS!!!#M!!(Z-J!%!!$rrrrq!*!)%MJ!!!!#!*!%$TB!N"S"ZB$ !!*!H"!#3"A4PFh4MEfjfCA*d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,)9GTbblc+M!!!'fJ!!(aN!N!K@$YZ!!!!!S`!"lM-!"!!!rrrrrJ#3#") j!!!!!J#3"!U@!*!D!EQ!`!#3(J3!N!9dCA0dD@eR,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,)9GTfb&ADG!!!#E!!!"@d!N!JH-h8`!!!!S`!"lM3 !"!!!rrrrrJ#3#")k!!!!!J#3"!Z@!*!D!EQ!`!#3(J3!N!9dCA0dGQPPGbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lb&ADGY1Y)1J!!"ai!!"+&!*! ))Eh,J!!!!+-!!Hie!!3!!2rrrri!N!J51`!!!!)!N!3-PJ#3'J'jJ-!!N"i%!*! &H(4PFh4fD@9h,R"j4&C$9!#3#!2J!Kd!@3%(Y`[%pVF,a5F!!!#T!!!!G!!!!!% !N"`5@`!!!!%!!J#3"!-!!!!)"!F!N"(J!*!*!B[c!*!M6'PL4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,@43U#h#24d!!!05J!!,4J!N!MY8H(Y!!!!U3! $L13!!J!!rrrrrJ#3#"QB!!!!!J#3"!f@!*!D!EqL!*!I"!#3"AGPBQ*bEhGcCA) ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFLYXlF)p()!!!S@!!! Ga!#3#!DYRP-!!!#T!!1)`3!#!!$rrrrq!*!)'CF!!!!#!*!%#CB!N"S"[k)!N"m %!*!&FfpMDf9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@#PeH fhAY$!!!Ap!!!ALd!N!K[K5,`!!!!U3!$L+8!!J!!rrrrrJ#3#"Q@!!!!!J#3"!D @!*!D!EqL!*!I"!#3"A"bC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!LeJ#Q+Y`MdE`!!(L`!!''4!*!)EZ`Ve`!!!+N!!iL(!!)!!2rrrri!N!JCP3! !!!)!N!3+PJ#3'J'rSJ#3(`3!N!9TEA"eG'PX,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,AE08kfNk86!!!0`J!!*E%!!!"b!!!"QKfLqGF!!!#T!!1 )I3!#!!$rrrrq!*!)'C3!!!!#!*!%#TB!N"S"[k)!N"m%!*!&Cf9dG'9iG#j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+fbY`MdE!!!))i!!'&0!*! ))FI+$J!!!+N!!iKY!!)!!2rrrri!N!JCN`!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9 $EfpVD@8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB!TL,D6T3X !!!*'!!!&B!#3#!UH5!F!!!#T!!1)@3!#!!$rrrrq!*!)'C)!!!!#!*!%#CB!N"S "[k)!N"m%!*!&BA4PH'Pd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA@'fNk8,!!!Er!!!JP`!N!K-l-f5!!!!U3!"lPB!!J!!rrrrrJ#3#"*F!!! !!J#3"!H@!*!D!EqL!*!I"!#3"@&TCQ-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)X[aGBEDkSq-!!!4'!!!+FJ#3#1`,r28!!!#T!!(Z9`!#!!$rrrr q!*!)%Pd!!!!#!*!%#CB!N"S"[k)!N"m%!*!&B@jjC'*Y,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mA@+h#24Y!!!-k!!!+@`!N!LKPrGj!!!!U3! "lPJ!!J!!rrrrrJ#3#"*H!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"@&cH@jMD'&d,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@+h#2m6!!!5iJ!!3@% !N!L@VRYf!!!!U3!"lPN!!J!!rrrrrJ#3#"*I!!!!!J#3"!Z@!*!D!EqL!*!I"!# 3"@&cH@jMEh*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@+ fNk8,!!!'VJ!!(1`!N!J`@Y[Q!!!!U3!"lPS!!J!!rrrrrJ#3#"*J!!!!!J#3"!Z @!*!D!EqL!*!I"!#3"@&eC'P[C'9f,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,,mA@+fNk8,!!!$)!!!"pm!N!M[eqiL!!!!U3!"lPX!!J!!rrrrrJ# 3#"*K!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"@*KFf8f0#j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&eIYUpUS`!!&UB!!%!b!*!)QpM-pJ!!!+N!!Hj F!!)!!2rrrri!N!J5BJ!!!!)!N!34PJ#3'J'rSJ#3(`3!N!9#BA0P5&488&0PFRC PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eIYT1P"`!!##3 !!"@U!*!)CDUb6J!!!+N!!HjG!!)!!2rrrri!N!J5B`!!!!)!N!3+PJ#3'J'rSJ# 3(`3!N!9#BA0dD@pZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, mA@+h#24Y!!!4J!!!4ZX!N!KaV"bZ!!!!U3!"lPi!!J!!rrrrrJ#3#"*N!!!!!J# 3"!D@!*!D!EqL!*!I"!#3"@*NBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&eLYUpUTJ!!%&B!!$VM!*!)BJRE[!!!!+N!!HjI!!)!!2rrrri!N!J 5C3!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9LD@jSCAJZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aGBlDkSq-!!!(q!!!)IJ#3#'h+D6N!!!#T!!(ZB!! #!!$rrrrq!*!)%QB!!!!#!*!%#CB!N"S"[k)!N"m%!*!&BQPcC@0d,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@1fNk8-!!!*X!!!($F!N!LLX8P 6!!!!U3!"lQ%!!J!!rrrrrJ#3#"*R!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"@0KE'9 ZC'&b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@5fhAY#!!! LA!!!Ia8!N!L3!$Y093!!!+N!!HjL!!)!!2rrrri!N!J5D!!!!!)!N!3'PJ#3'J' rSJ#3(`3!N!9MCfNZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a GAlD[DU3!!!cF!!!RP`#3#+jlUkN!!!#T!!(ZB`!#!!$rrrrq!*!)%QN!!!!#!*! %%*B!N"S"[k)!N"m%!*!&3dG*5&488&0PFRCPFLj`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!LcPTD`Y`MdE3!!"QJ!!"6#!*!)QP9B&!!!!+N!!HjN!!) !!2rrrri!N!J5DJ!!!!)!N!3)PJ#3'J'rSJ#3(`3!N!9MD(9ZDbj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eNYZ'B+`!!#,!!!"Tb!*!)jN1Ga3! !!+N!!HjP!!)!!2rrrri!N!J5D`!!!!)!N!3'PJ#3'J'rSJ#3(`3!N!9ME@3ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGCED[DUB!!!ad!!!R+J# 3#"X%,MX!!!#T!!(ZCJ!#!!$rrrrq!*!)%Q`!!!!#!*!%"jB!N"S"[k)!N"m%!*! &BfpNC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%!pKYT1P$J! !%T!!!!"&E`#3#)TRmQJ!!!#T!!(ZC`!#!!$rrrrq!*!)%Qd!!!!#!*!%#CB!N"S "[k)!N"m%!*!&BfpNC@0c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA@@h#24Z!!!%SJ!!#`8!N!Kfm!Ye!!!!U3!"lQJ!!J!!rrrrrJ#3#"*Z!!! !!J#3"!Q@!*!D!EqL!*!I"!#3"@0[C'9[F#j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&ePYT1P$J!!",i!!!aa!*!)k1*,4J!!!+N!!HjT!!)!!2r rrri!N!J5E`!!!!)!N!3,PJ#3'J'rSJ#3(`3!N!9MEfa[FR0jFbj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ePYT1P$J!!!mJ!!!MR!*!)9U[2b!! !!+N!!HjU!!)!!2rrrri!N!J5F!!!!!)!N!3,PJ#3'J'rSJ#3(`3!N!9MEfeYB@j NFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ePY`Mr%`!!"EJ !!"$S!*!)#j0-#!!!!+N!!HjV!!)!!2rrrri!N!J5F3!!!!)!N!30PJ#3'J'rSJ# 3(`3!N!9MEfe`D@aPB@aX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA@#f`FL@!!!4N!!!!%-U!*!)SFQHD!!!!+N!!HjX!!)!!2rrrri!N!J5FJ! !!!)!N!32PJ#3'J'rSJ#3(`3!N!9$EfjQD@G3BA*cCA)ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)X[aGCED6T3m!!!QD!!!J53#3#'SCi3#3"+N!!Hj Y!!)!!2rrrri!N!J5F`!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9MEh"j,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@DfNk82!!!"`!!!!qJ!N!KP&H! F!!!!U3!"lQi!!J!!rrrrrJ#3#"*d!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"@0[F(P IFQ9R,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@DfQ,,Z!!! !q!!!!C!!!*!)eDHMNJ!!!+N!!Hj[!!)!!2rrrri!N!J5G3!!!!)!N!3*PJ#3'J' rSJ#3(`3!N!9NBQKKFfJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aGCVEGHd)!!!(N!!!%A!#3#'Ab*r)!!!#T!!(ZF!!#!!$rrrrq!*!)%RB!!!! #!*!%#jB!N"S"[k)!N"m%!*!&C'PbBf&MD'8ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aGClF)ra-!!!Xd!!!LS3#3#0b1N!!B!!!!U3!"lR%!!J! !rrrrrJ#3#"*h!!!!!J#3"!D@!*!D!EqL!*!I"!#3"@4TFbj`H84@3e3!N"#h#m8 $Y`[&"3!!!+S!!!#T!!!!!3#3("*i!!!!!J!#!*!%#3!!!!J%"`#3'`'rSJ#3)f4 TFh4eG'PXFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")EYYel43! !!-`!!!%4!*!)#Dj4X!!!!+S!!HlQ!!-!!2rrrri!N!J5H3!!!!)!N!3,PJ#3'J( !SJ#3(`3!N!9IAfPZDA4IAbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Le%")EY`MdG3!!#8!!!"Pp!*!)-CfFI3!!!+S!!HlR!!-!!2rrrri!N!J5HJ! !!!)!N!32PJ#3'J(!SJ#3(`3!N!9KFQ0SDACPAh9dD@`ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y4!5'lE"b*J!!#am!!#S'3#3#-L'q,8!!!#U!!( Zk!!$!!$rrrrq!*!)%RX!!!!#!*!%$*B!N"S"`+)!N"m%!*!&Bf0[EA"TE'9b,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%KZfhl`3!!!A4!!!5pB !N!J"d11T!!!!UJ!"lZN!!`!!rrrrrJ#3#"*m!!!!!J#3"!D@!*!D!F#L!*!I"!# 3"@0YC#j`H84@3e3!N"#h#m8&Y`[&"3!!!+X!!!#U!!!!!3#3("*p!!!!!`!#!*! %"`!!!!J%"`#3'`(!SJ#3)f0[E@eKEQ4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)Y4!5(,@!+C)!!!$`!!!#3J#3#)q!ba8!!!#V!!(ZqJ!%!!$rrrrq!*! )%Ri!!!!#!*!%#jB!N"S"`D)!N"m%!*!&AepTEQPdAemZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y4!5(,B8Vq8!!!Cm!!!63!#3#$%pE3X!!!#V!!( Zq`!%!!$rrrrq!*!)%Rm!!!!#!*!%#*B!N"S"`D)!N"m%!*!&BQ4TFh3ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,B*24N!!!3D!!!-#!#3#!j l`&J!!!#V!!(Zr!!%!!$rrrrq!*!)%S!!!!!#!*!%$CB!N"S"`D)!N"m%!*!&BQ4 TFh4IC(9YBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")FYK5 [jJ!!"53!!"$9!*!)VJGZ8`!!!+X!!Hlp!!3!!2rrrri!N!J5J3!!!!)!N!3)PJ# 3'J("SJ#3(`3!N!9LG@PXC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Le%")GYK5[jJ!!#D)!!"ql!*!)JaXk'!!!!+X!!Hlq!!3!!2rrrri!N!J5JJ! !!!)!N!30PJ#3'J("SJ#3(`3!N!9LG@PXC&pME'PL,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,83%KffhAY'!!!EHJ!!B0X!N!JNA`q#!!!!U`!"l[m !"!!!rrrrrJ#3#"+$!!!!!J#3"!b@!*!D!F'L!*!I"!#3"@*eD@aNAf9iG#j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")GYJNp)3!!%6S!!$X+!*! )5@HRL!!!!+X!!Hm!!!3!!2rrrri!N!J5K!!!!!)!N!3,PJ#3'J("SJ#3(`3!N!9 LG@PXC&p`H5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")GYK5 [jJ!!!i!!!!XJ!*!*%"Um!!!!U`!"l`%!"!!!rrrrrJ#3#"+&!!!!!J#3"!L@!*! D!F'L!*!I"!#3"@0XC@&Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,83%KffMRUi!!!A9J!!9aF!N!JKR8LF!!!!U`!"l`)!"!!!rrrrrJ#3#"+'!!! !!J#3"!U@!*!D!F'L!*!I"!#3"@PZFh4KE'`ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)Y4!5(EB*25)!!!N1!!!I!`#3#&+D(a`!!!#V!!([!`!%!!$ rrrrq!*!)%SF!!!!#!*!%$TB!N"S"`D)!N"m%!*!&D@jcG'&XE&pXD@)ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(EEI["%!!"4B!!"'e!#3#&, PP(!!!!#V!!(["!!%!!$rrrrq!*!)%SJ!!!!#!*!%#*B!N"S"`D)!N"m%!*!&Ff4 TFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y@-V)VB*24N!!"+ !!!"$-J#3#!NR+m`!!iN)!!1*$!!%!!$rrrrq!*!)'8m!!!!#!*!%$*B!N"S"`D) !N"m%!*!&BQ4TFh4IFR"Y,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,@!+C1h#24f!!"1a!!!K#`!N!LG8rlr!!1*#!!$L3d!"!!!rrrrrJ#3#"P1!!! !!J#3""#@!*!D!F'L!*!I"!#3"@*NDA0dAhGTEQPZFh3ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y@-V)lE&dIm!!!6Q!!!00!#3#*,`0f!!!iN)!!1 *%J!%!!$rrrrq!*!)'8d!!!!#!*!%%*B!N"S"`D)!N"m%!*!&BR9TE'4IFf0bDA" dFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeBbXMY@-V)`!!!9) !!!,2!*!)FmAD@!!$L3J!!iN8!!3!!2rrrri!N!JC6!!!!!)!N!33PJ#3'J("SJ# 3(`3!N!9MEfeYB@jNAh4PEA"XBA4P4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,9M+b1f&+rQ!!!1IJ!!-dN!N!K!1"-P!!1*#!!$L48!"!!!rrrrrJ#3#"P ,!!!!!J#3"!Q@!*!D!F'L!*!I"!#3"@0[EQCTCbj`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!LfS0(%YUB9i`!!!f!!!!Ri!*!)J5JI"!!$L3J!!iNA!!3 !!2rrrri!N!JC5J!!!!)!N!32PJ#3'J("SJ#3(`3!N!9TER0dB@aXAf4KG'%ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y@-V)lB*25)!!!)J!!!&Y3# 3#0NGrKB!!iN)!!1*'!!%!!$rrrrq!*!)'8N!!!!#!*!%%TB!N"S"`D)!N"m%!*! &D@jcG'&XE&pSC@&NCA*c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,9M+b5f#6dL!!!$&!!!#$J!N!MFQ1&l!!1*#!!$L4S!"!!!rrrrrJ#3#"P)!!! !!J#3""+@!*!D!F'L!*!I"!#3"@PZFh4KE'aIFf0bDA"dFbj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Le%")EYJNp$!!!#f!!!#!2!*!)SdGF@!!!!+S !!HlU!!-!!2rrrri!N!J5L3!!!!)!N!3(PJ#3'J(!SJ#3(`3!N!9MEh*P,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%KZf#6d-!!!'J!!!%2)!N!K M59KC!!!!UJ!"lZX!!`!!rrrrrJ#3#"++!!!!!J#3"!Z@!*!D!F#L!*!I"!#3"@4 PF&peG'PX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%KZf#6d -!!!+ZJ!!(YF!N!M"4mN@!!!!UJ!"lZ`!!`!!rrrrrJ#3#"+,!!!!!J#3"!Z@!*! D!F#L!*!I"!#3"@4TFPpeG'PX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,B8X%Qh#24e!!!Ve!!!T"i!N!Lqh@L4!!!!UJ!"lZd!!`!!rrrrrJ#3#"+ -!!!!!J#3"!H@!*!D!F#L!*!I"!#3"@4TFh3ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)Y4!5'l@VXF`!!!9Q!!!1'`#3#&Eb9$i!!!#U!!(ZlJ!$!!$ rrrrq!*!)%Sd!!!!#!*!%#CB!N"S"`+)!N"m%!*!&CA*bEh*c,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,83%Kbf#6dB!!!@$!!!4k`!N!JAj!9&!!! !UJ!"lZm!!`!!rrrrrJ#3#"+1!!!!!J#3"!q@!*!D!F#L!*!I"!#3"@CKEQ0jAfG PG'p`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")FYU$4$`! !#VJ!!#!G!*!)&8KKc3!!!+S!!Hl`!!-!!2rrrri!N!J5M`!!!!)!N!3-PJ#3'J( !SJ#3(`3!N!9QD@aPAh9dD@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)Y4!5(,B*24J!!",H!!"(&3#3#,$G&D`!!!#U!!(Zm3!$!!$rrrrq!*!)%T! !!!!!!J#3"!q@!*!D!F#L!*!I"!#3"@ecGQ0MEfe`D@aPFLj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&)UBfJ!N!Le*U8!Y5DP!!!!!Ei!!!-G!*!)#,Cbk!!!!+S !!Hlb!!-!!2rrrri!N!J5N3!!!!)!N!3'PJ#3'J(!SJ#3(`3!N!9548&%689'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,B*24J!!!Jq!!!@M3#3#,B ekVB!!!#U!!(Zm`!$!!$rrrrq!*!)%T)!!!!#!*!%#*B!N"S"`+)!N"m%!*!&Fh" KGfiZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,E&dIm!!!p 1!!!c&!#3#1X&rSN!!!#U!!(Zp!!$!!$rrrrq!*!)%T-!!!!#!*!%$*B!N"S"`+) !N"m%!*!&FhPcBfpZCQPR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,83%KbelBE3!!!4e!!!1jm!N!LFYJL1!!!!UJ!"l[8!!`!!rrrrrJ#3#"+8!!! !!J#3"!b@!*!D!F#L!*!I"!#3"A4PH(4ICQPXC5j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Le%")FY`MdG3!!$&i!!#L1!*!)3Z!,KJ!!!+S!!Hlf!!- !!2rrrri!N!J5P3!!!!)!N!33PJ#3'J(!SJ#3(`3!N!9eEQPiBf0[EA"TE'9b,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,DJdF5fiCJc!!!BJJ!!3dJ !N!JNc8'q!!!!UJ!"l[F!!`!!rrrrrJ#3#"+@!!!!!J#3"!H@!*!D!F#L!*!I"!# 3"A9dD@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5(,EI["% !!"!S!!!Y(J#3#(RehLB!!!#U!!(Zq!!$!!$rrrrq!*!)%TF!!!!#!*!%#TB!N"S "`+)!N"m%!*!&GQ9bFfP[ELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!LeJ#Q1YUpUY!!!%'J!!$Jf!*!)A)DUF!!$L2!!!iMc!!-!!2rrrri!N!JC4`! !!!)!N!32PJ#3'J(!SJ#3(`3!N!9LBh"`BfpYF'PXCA)ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)YB!TMlEI["!!!"81!!"%DJ#3##YCK5N!!iM`!!1 )p`!$!!$rrrrq!*!)'8B!!!!#!*!%%TB!N"S"`+)!N"m%!*!&BhPRGfPZBf0[EA" TE'9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,9M+b'fhl`4!!! ,eJ!!)iN!N!Jfr'0E!!1)m!!$L2`!!`!!rrrrrJ#3#"P&!!!!!J#3"!b@!*!D!F# L!*!I"!#3"@9iG'9ZFfP[ELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!LeUl(hYJNp'!!!$VS!!$1H!*!)A(*9q`!$L2!!!iMr!!-!!2rrrri!N!JC4!! !!!)!N!3,PJ#3'J(!SJ#3(`3!N!9QD@aPE'PcG#j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!LfMR`JYX4Q[!!!#Ki!!#&i!*!)QF"cq3!#-G!!!M(K!!- !!2rrrri!N!JE1!!!!!)!N!34PJ#3'J(!SJ#3(`3!N!9YGf9bDh0MEfe`D@aPFLj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eRYT1P%3!!$'3!!#9 R!*!)@BrY2!!!!+N!!Hjb!!)!!2rrrri!N!J5k3!!!!)!N!3+PJ#3'J'rSJ#3(`3 !N!9NEh0`BA4S,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@H faG(k!!!&*!!!%*J!N!Km9d)V!!!!U3!"lR-!!J!!rrrrrJ#3#",U!!!!!J#3"!U @!*!D!EqL!*!I"!#3"@4eE@*NBQdZF(P%9N08!*!3YV)CmJ#3"kd!!!#T!!!!!3# 3(",V!!!!!J!#!*!%#3!!!!J%"`#3'`'rSJ#3)f9ZBfpND@jRFdC@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Le%")MYPaNr3!!"!i!!!R3!!!!G!!!!CS"c0N a!!!!V3!"leF!!`!!rrrrrJ#3#",X!!!!!J#3"!Z@!*!D!F1L!*!I"!#3"9pID@j TG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L1eC(32!!! #U!!!"im!N!Lp46Q&!!!!V3!"leJ!!`!!rrrrrJ#3#",Y!!!!!J#3"!U@!*!D!F1 L!*!I"!#3"@&XD@&cCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )Y4!5)l83%L-!!!&N!!!#h`!!!()!!!'DTS-M83!!!+d!!HpC!!-!!2rrrri!N!J 5lJ!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9KFf0TD5j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Le%")MY4!5)`!!!J3!!!6U!*!)B*-`Z`!!!+d!!HpD!!- !!2rrrri!N!J5l`!!!!)!N!3+PJ#3'J($SJ#3(`3!N!9MD'&bE@&`,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L1fMRUj!!!+c!!!+%%!N!LrD9l l!!!!V3!"leX!!`!!rrrrrJ#3#",`!!!!!J#3"!L@!*!D!F1L!*!I"!#3"@0`-$- h,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L1fMRUj!!!&HJ! !&c-!N!M`9-eM!!!!V3!"le`!!`!!rrrrrJ#3#",a!!!!!J#3"!Q@!*!D!F1L!*! I"!#3"@0`-6!`0Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%") MYSjkZ3!!#ZJ!!#Jh!*!)DZJ3@3!!!+d!!HpG!!-!!2rrrri!N!J5mJ!!!!)!N!3 *PJ#3'J($SJ#3(`3!N!9MF$%`-MBZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)Y4!5)lD1HVN!!!8%!!!52J#3#*XPMTJ!!!#Y!!([AJ!$!!$rrrrq!*! )%[-!!!!#!*!%#CB!N"S"`k)!N"m%!*!&Bh!a-M8`,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,83%L1fMRUj!!!'&J!!&m%!N!LYZL)U!!!!V3!"lem !!`!!rrrrrJ#3#",d!!!!!J#3"!Q@!*!D!F1L!*!I"!#3"@0`-6)e-5j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")MYSjkZ3!!!iB!!!M(!*!)P4G IK`!!!+d!!HpJ!!-!!2rrrri!N!J5p3!!!!)!N!3*PJ#3'J($SJ#3(`3!N!9MF$% b06)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5)lD1HVN!!!@ k!!!9b`#3#,VBc4d!!!#Y!!([B3!$!!$rrrrq!*!)%[B!!!!#!*!%#CB!N"S"`k) !N"m%!*!&Bh!a-M8c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8 3%L1fMRUj!!!$b!!!#G)!N!L-,lTQ!!!!V3!"lf)!!`!!rrrrrJ#3#",h!!!!!J# 3"!Q@!*!D!F1L!*!I"!#3"@0`-6)e0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Le%")MYSjkZ3!!"F3!!")I!*!)&!F(m3!!!+d!!HpM!!-!!2rrrri !N!J5q!!!!!)!N!3*PJ#3'J($SJ#3(`3!N!9MF$%b068ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y4!5)lD1HVN!!!@b!!!3f3#3#*8a&8F!!!#Y!!( [C!!$!!$rrrrq!*!)%[N!!!!#!*!%#CB!N"S"`k)!N"m%!*!&Bh!a-M8f,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L5fMRUj!!!&(!!!%[8!N!N HKD!!!!#Y!!([C3!$!!$rrrrq!*!)%[S!!!!#!*!%#CB!N"S"`k)!N"m%!*!&Bh! a-M8h,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L5fMRUj!!! %%J!!#Z3!N!JQrU$h!!!!V3!"lfB!!`!!rrrrrJ#3#",l!!!!!J#3"!Q@!*!D!F1 L!*!I"!#3"@0`-6)e1#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L e%")NYSjkZ3!!#Z)!!#28!*!)+&E'+!!!!+d!!HpR!!-!!2rrrri!N!J5r!!!!!) !N!3)PJ#3'J($SJ#3(`3!N!9MF$3b0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Le%")NYSjkZJ!!"jS!!"[r!*!)VS@UX!!!!+d!!HpS!!-!!2rrrri !N!J5r3!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$3c0bj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!#Xi!!#K"!*!)`5F$33!!!+d!!Hp T!!-!!2rrrri!N!J5rJ!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$8`-#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!"`J!!"`Q!*!),$( Cf!!!!+d!!HpU!!-!!2rrrri!N!J5r`!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$F c0bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!"fB !!"[L!*!)B2m8b!!!!+d!!HpV!!-!!2rrrri!N!J6!*!%!J#3"!L@!*!D!F1L!*! I"!#3"@0`0cFe,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L5 fMRUk!!!(DJ!!'fJ!N!L&XfqB!!!!V3!"lf`!!`!!rrrrrJ#3#"-"!!!!!J#3"!L @!*!D!F1L!*!I"!#3"@0`1$8`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,83%L5fMRUk!!!("J!!(*-!N!KDa2-G!!!!V3!"lfd!!`!!rrrrrJ#3#"- #!!!!!J#3"!L@!*!D!F1L!*!I"!#3"@0`1$8b,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,83%L5fMRUk!!!'N!!!!"X6!*!)F+'p&J!!!+d!!HpZ!!- !!2rrrri!N!J6!`!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Je05j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!"PB!!"AY!*!)Ph#6m!! !!+d!!Hp[!!-!!2rrrri!N!J6"!!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Je0Lj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZJ!!"f3!!"X Q!*!)'IQBD`!!!+d!!Hp`!!-!!2rrrri!N!J6"3!!!!)!N!3)PJ#3'J($SJ#3(`3 !N!9MF$Je0bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSj kZJ!!"iB!!"`S!*!)qL[ib`!!!+d!!Hpa!!-!!2rrrri!N!J6"J!!!!)!N!3)PJ# 3'J($SJ#3(`3!N!9MF$Jf-#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Le%")NYSjkZ`!!"ii!!"`B!*!)hTk%ZJ!!!+d!!Hpb!!-!!2rrrri!N!J6"`! !!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf-5j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Le%")NYSjkZ`!!"j`!!"Tc!*!)P'6"R!!!!+d!!Hpc!!-!!2r rrri!N!J6#!!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf-Lj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZ`!!"jJ!!"ZC!*!)2Jh+D3!!!+d !!Hpd!!-!!2rrrri!N!J6#3!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf-bj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")NYSjkZ`!!"bi!!"VU!*! )SE1I0!!!!+d!!Hpe!!-!!2rrrri!N!J6#J!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9 MF$Jf0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")PYSjkZ`! !"k)!!"`6!*!)2HL+53!!!+d!!Hpf!!-!!2rrrri!N!J6#`!!!!)!N!3)PJ#3'J( $SJ#3(`3!N!9MF$Jf05j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L e%")PYSjkZ`!!"VS!!"[*!*!)GrDr&!!!!+d!!Hph!!-!!2rrrri!N!J6$!!!!!) !N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf0Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Le%")PYSjkZ`!!"[J!!"T*!*!)J%kQ4`!!!+d!!Hpi!!-!!2rrrri !N!J6$3!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jf15j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Le%")PYSjkZ`!!"N`!!"D"!*!)N9@#0`!!!+d!!Hp j!!-!!2rrrri!N!J6$J!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$Jh0#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")PYSjkZ`!!#Si!!#G@!*!)ZSR `5!!!!+d!!Hpk!!-!!2rrrri!N!J6$`!!!!)!N!3)PJ#3'J($SJ#3(`3!N!9MF$J h05j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")PYSjkZ`!!!F` !!!1b!*!)SXf-C!!!!+d!!Hpl!!-!!2rrrri!N!J6%!!!!!)!N!3-PJ#3'J($SJ# 3(`3!N!9TFfmi1$8jAc%ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )Y4!5*ED1HV`!!!1Z!!!013#3#-"fkpi!!!#Y!!([I!!$!!$rrrrq!*!)%a%!!!! #!*!%$CB!N"S"`k)!N"m%!*!&DA0[1$Je19ma-#j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Le%")PYSjk[!!!""J!!!pF!*!)q"6D%J!!!+d!!Hpp!!- !!2rrrri!N!J6%J!!!!)!N!30PJ#3'J($SJ#3(`3!N!9TFfmi1$8jAc%c,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L@fMRUm!!!$&J!!#SF!N!L AhQ,b!!!!V3!"lhi!!`!!rrrrrJ#3#"-6!!!!!J#3"!f@!*!D!F1L!*!I"!#3"@P cEcJi06PI-63ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*ED 1HV`!!!*@!!!&13#3#%@*XRm!!!#Y!!([I`!$!!$rrrrq!*!)%a3!!!!#!*!%$CB !N"S"`k)!N"m%!*!&DA0[1$Je19ma05j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Le%")PYSjk[!!!"!)!!!p*!*!)q13kA`!!!+d!!Hq!!!-!!2rrrri !N!J6&3!!!!)!N!3-PJ#3'J($SJ#3(`3!N!9TFfmi1$8jAc)ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*ED1HV`!!!-Q!!!+"J#3#,lP04X!!!# Y!!([J3!$!!$rrrrq!*!)%aB!!!!#!*!%$*B!N"S"`k)!N"m%!*!&DA0[1$Je19m c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L@fMRUm!!!$c!! !$GB!N!JIV"[q!!!!V3!"li)!!`!!rrrrrJ#3#"-A!!!!!J#3"!b@!*!D!F1L!*! I"!#3"@PcEcJi06PI0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L e%")PYSjk[!!!"3`!!"8*!*!)j)GrF!!!!+d!!Hq$!!-!!2rrrri!N!J6'!!!!!) !N!3-PJ#3'J($SJ#3(`3!N!9TFfmi1$8jAc8ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)Y4!5*ED1HV`!!!4B!!!0b3#3##0rc@N!!!#Y!!([K!!$!!$ rrrrq!*!)%aN!!!!#!*!%$*B!N"S"`k)!N"m%!*!&DA0[1$Je19mf,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%L@fMRUm!!!%cJ!!%LJ!N!JEp%h )!!!!V3!"li8!!`!!rrrrrJ#3#"-D!!!!!J#3"!b@!*!D!F1L!*!I"!#3"@PcEcJ i06PI0bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QYSjk[!! !!k)!!!Uk!*!)2MBJX`!!!+d!!Hq'!!-!!2rrrri!N!J6'`!!!!)!N!3-PJ#3'J( $SJ#3(`3!N!9TFfmi1$8jAcJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)Y4!5*VD1HV`!!!)q!!!%p3#3##m2['B!!!#Y!!([K`!$!!$rrrrq!*!)%a` !!!!#!*!%$*B!N"S"`k)!N"m%!*!&DA0[1$Je19mj,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,83%LDfMRUm!!!'h!!!(!N!N!Mq9[Uh!!!!V3!"liJ !!`!!rrrrrJ#3#"-G!!!!!J#3"!Q@!*!D!F1L!*!I"!#3"@Y[D6KIFLj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QY4!5*J!!!@J!!!,T!*!)SjG LB`!!!+d!!Hq*!!-!!2rrrri!N!J6(J!!!!)!N!3+PJ#3'J($SJ#3(`3!N!9XBA4 TEPma,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LDfMRUm!!! 'U!!!'2%!N!K()GLB!!!!V3!"liS!!`!!rrrrrJ#3#"-I!!!!!J#3"!q@!*!D!F1 L!*!I"!#3"@eKBepMHA*TE'aTBbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Le%")QYSjk[3!!"bS!!"T!!*!)QF!rG`!!!+d!!Hq,!!-!!2rrrri!N!J 6)!!!!!)!N!3-PJ#3'J($SJ#3(`3!N!9YB@0ICh*PC@XZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y4!5*VD1HVd!!!G+!!!C$`#3#,*iYCX!!!#Y!!( [M!!$!!$rrrrq!*!)%b%!!!!#!*!%$TB!N"S"`k)!N"m%!*!&E@&MAfPMC@aKEQ3 ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*VD1HVd!!!F#!!! F!*!*#P1TK`!!!+d!!Hq0!!-!!2rrrri!N!J6)J!!!!)!N!30PJ#3'J($SJ#3(`3 !N!9YB@0IE'&dD@ib,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8 3%LDfMRUp!!!(9J!!'5m!N!KIZM-#!!!!V3!"lii!!`!!rrrrrJ#3#"-M!!!!!J# 3"!b@!*!D!F1L!*!I"!#3"@eKBepbEfeKELj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Le%")QYSjk[3!!"d3!!"P&!*!)F"aPf`!!!+d!!Hq2!!-!!2r rrri!N!J6*!!!!!)!N!31PJ#3'J($SJ#3(`3!N!9YB@0IG(9bDfPcD#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QY4!5*J!!!C`!!!-b!*!)-MC X5J!!!+d!!Hq3!!!$!!$rrrrq!*!)%b8!!!!#!*!%"jB!N"S"`k)!N"m%!*!&E@* MFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QY4!5*J!!!9i !!!+3!!#3#%Sl2qX!!!#Y!!([N3!$!!$rrrrq!*!)%bB!!!!#!*!%&CB!N"S"`k) !N"m%!*!&FQ&hAh9ZD@0[C'9ICA0MBA"P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,83%LDe%")Q!!!"9J!!!S3!N!M[$h(R!!!!V3!"lj)!!`!!rrr rrJ#3#"-R!!!!!J#3""'@!*!D!F1L!*!I"!#3"A9ZD@0[C'9ICA0MBA"P,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LDe%")Q!!!"@J!!!SS!N!M D#jJZ!!!!V3!"lj-!!`!!rrrrrJ#3#"-S!!!!!J#3""1@!*!D!F1L!*!I"!#3"A9 ZD@0[C'9ID@jdCA*ZB@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )Y4!5*V83%LB!!!&8!!!#E3#3#&j`b2%!!!#Y!!([P!!$!!$rrrrq!*!)%bN!!!! #!*!%#CB!N"S"`k)!N"m%!*!&GA4QAc%f,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,83%LDe%")Q!!!"@J!!!RB!N!KL2JbB!!!!V3!"lj8!!`!!rrr rrJ#3#"-U!!!!!J#3"!b@!*!D!F1L!*!I"!#3"A9dCPma0PpLC5j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")QY4!5*J!!!9S!!!*f!*!)fHq'@`! !!+d!!Hq@!!-!!2rrrri!N!J6+`!!!!)!N!3-PJ#3'J($SJ#3(`3!N!9eG'CI-6C IE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*l83%LF!!!& 5!!!#DJ#3#0l"mNS!!!#Y!!([P`!$!!$rrrrq!*!)%b`!!!!#!*!%#*B!N"S"`k) !N"m%!*!&GA4QAcJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y@4 d$l9NG!m!!!'5!!!$)!#3#'@bM6S!!iQ+!!1*aJ!$!!$rrrrq!*!)'5-!!!!#!*! %$*B!N"S"`k)!N"m%!*!&G@jNC@CTEQ9N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,4$Bl1fNk84!!!,bJ!!+$m!N!Mc-CX#!!!!U3!"lR8!!J!!rrr rrJ#3#"-Z!!!!!J#3"!U@!*!D!EqL!*!I"!#3"@CTE'9MEA!ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGD,D6T4)!!!Y`!!!QU3#3#)A5Qmm!!!# T!!(ZGJ!#!!$rrrrq!*!)%bm!!!!#!*!%$*B!N"S"[k)!N"m%!*!&CQPXC@PZF(9 d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@Lfhl`2!!!$L!! !#@m!N!Mk*[-+!!!!U3!"lRF!!J!!rrrrrJ#3#"-`!!!!!J#3"!U@!*!D!EqL!*! I"!#3"@CZE@&dBfJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a GD,D[DUF!!!ak!!!fdJ#3#(l&m"B!!!#T!!(ZH!!#!!$rrrrq!*!)%c%!!!!#!*! %$*B!N"S"[k)!N"m%!*!&CQpbE@&dG'9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mA@QfNk85!!!&k!!!%GF!N!J)QLiX!!!!U3!"lRN!!J!!rrr rrJ#3#"-b!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"@C`CQpbE@&d,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@Qh#24Z!!!F)!!!AdB!N!LmL'3f!!! !U3!"lRS!!J!!rrrrrJ#3#"-c!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"@CdF'aTBLj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eTYT1P%`!!"h!!!"3 q!*!)F)KViJ!!!+N!!Hjl!!)!!2rrrri!N!J60!!!!!)!N!3*PJ#3'J'rSJ#3(`3 !N!9RCA4[F(3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGDEE &dIX!!!4Z!!!,8J#3#%0@X8X!!!#T!!(ZI!!#!!$rrrrq!*!)%c8!!!!#!*!%#TB !N"S"[k)!N"m%!*!&Cf9dF'&cFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&eTYT1P%`!!!H`!!!@U!*!),X*kjJ!!!+N!!Hjp!!)!!2rrrri!N!J 60J!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9RE'pL,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mA@QfVfUS!!!(H!!!&G-!N!K4SAUX!!!!U3!"lRi!!J! !rrrrrJ#3#"-h!!!!!J#3"!b@!*!D!EqL!*!I"!#3"@G[F'KPFQaTBLj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eUYYel3J!!$@!!!#lV!*!)bIa TAJ!!!+N!!Hjr!!)!!2rrrri!N!J61!!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9RHQP `,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@UfZU2N!!!5M!! !6'i!N!K8UPS@!!!!U3!"lS!!!J!!rrrrrJ#3#"-j!!!!!J#3""'@!*!D!EqL!*! I"!#3"@KdE@aPER4TG(PNC@Cc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mA@UfVfUS!!!)VJ!!+FJ!N!KIrJSb!!!!U3!"lS%!!J!!rrrrrJ#3#"- k!!!!!J#3"!U@!*!D!EqL!*!I"!#3"@KdE@aXD@)ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aGDVF)p'i!!"k%!!"Xj`#3#*6%G#3!!!#T!!(ZJJ! #!!$rrrrq!*!)%cX!!!!#!*!%#TB!N"S"[k)!N"m%!*!&D(4dF'aTBLj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eUYUpUU3!!%-`!!%,N!*!)6$E C%!!!!+N!!Hk$!!)!!2rrrri!N!J62!!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9TD'p [Dh-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGE,DmS(N!!#4 k!!#%f!#3#1Cd!4i!!!#T!!(ZK!!#!!$rrrrq!*!)%cd!!!!#!*!%#TB!N"S"[k) !N"m%!*!&D@eKF'aTBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&eXYT@rVJ!!"'S!!!e3!*!))T5iS3!!!+N!!Hk&!!)!!2rrrri!N!J62J!!!!) !N!3*PJ#3'J'rSJ#3(`3!N!9TE@GSC()ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)X[aGEED[DUN!!!0L!!!(pJ#3#!9Qc9d!!!#T!!(ZKJ!#!!$rrrr q!*!)%cm!!!!#!*!%#TB!N"S"[k)!N"m%!*!&Df9jGfpbC#j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eYYUpUU3!!"&B!!!fD!*!)'&!9p`!!!+N !!Hk(!!)!!2rrrri!N!J63!!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9VEQ9P,R"j4&C $9!#3%,Db'I8!N!HZ!!!!U3!!!!%!N"`633!!!!)!!J#3"!F!!!!)"!F!N"X"[k) !N#0XD@)YEfaN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LHe%") R!!!%-J!!#5S!N!Km0ITb!!!!VJ!"ljN!!`!!rrrrrJ#3#"0#!!!!!J#3"!U@!*! D!F5L!*!I"!#3"@&NC("KBfXZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)Y4!5*lCfXh8!!!0B!!!(Y`#3#&iBa!F!!!#Z!!([QJ!$!!$rrrrq!*!)%d- !!!!#!*!%"TB!N"S"a+)!N"m%!*!&Bfe`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,83%LHfGV0e!!!$TJ!!#"X!N!KrlLX9!!!!VJ!"ljX!!`!!rrr rrJ#3#"0%!!!!!J#3"!Z@!*!D!F5L!*!I"!#3"@0YF'0KBfKP,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LHfVfUi!!!%$!!!#AB!N!J'%p+L!!! !VJ!"lj`!!`!!rrrrrJ#3#"0&!!!!!J#3"!Z@!*!D!F5L!*!I"!#3"@0[C'9SB@0 V,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LHfGV0f!!!'[!! !&j8!N!K8bmCd!!!!VJ!"ljd!!`!!rrrrrJ#3#"0'!!!!!J#3"!Q@!*!D!F5L!*! I"!#3"@4TFQ0YF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%") RY4!5*`!!!Y`!!!C)!*!)ZD*qC!!!!+i!!HqH!!-!!2rrrri!N!J64`!!!!)!N!3 (PJ#3'J(%SJ#3(`3!N!9NG@e`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,83%LHe%")R!!!"%J!!!Ni!N!JZR08K!!!!VJ!"ljm!!`!!rrrrrJ#3#"0 )!!!!!J#3"!H@!*!D!F5L!*!I"!#3"@CTEQ3ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)Y4!5*lCfXhB!!"&!!!!l!3#3#%'R1c%!!!#Z!!([S!!$!!$ rrrrq!*!)%dN!!!!#!*!%"TB!N"S"a+)!N"m%!*!&CQed,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,83%LHfVfUi!!!#3J!!"bJ!N!JHA"V(!!!!VJ! "lk%!!`!!rrrrrJ#3#"0+!!!!!J#3"!H@!*!D!F5L!*!I"!#3"@GbCA!ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5*l83%LF!!!#J!!!")!#3#2d 3B2F!!!#Z!!([SJ!$!!$rrrrq!*!)%dX!!!!#!*!%#jB!N"S"a+)!N"m%!*!&E'p MDfCTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5+,83%LJ !!!*F!!!'%!#3#*RM!$)!!!#Z!!([S`!$!!$rrrrq!*!)%d`!!!!#!*!%#CB!N"S "a+)!N"m%!*!&EQ9hC'Pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,83%LLfVfUi!!!4ZJ!!1Pi!N!Mi%[pf!!!!VJ!"lk3!!`!!rrrrrJ#3#"00!!! !!J#3"!@@!*!D!F5L!*!I"!#3"@jT,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,83%LLfVfUj!!!$E!!!#Ni!N!KHS2[q!!!!VJ!"lk8!!`!!rrrrrJ# 3#"01!!!!!J#3"!Z@!*!D!F5L!*!I"!#3"A"KBfYYB@PX,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,83%LHfGV0e!!!-FJ!!*hJ!N!LIp[F*!!!!VJ! "lkB!!`!!rrrrrJ#3#"02!!!!!J#3"!H@!*!D!F5L!*!I"!#3"9"KFQ%ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!5+,83%LJ!!!*f!!!&"J#3#,4 deCX!!!#Z!!([T`!$!!$rrrrq!*!)%e!!!!!#!*!%"jB!N"S"a+)!N"m%!*!&F'p XH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%")SY4!5+!!!!,3 !!!%8!*!)!jG0lJ!!!+i!!HqS!!-!!2rrrri!N!J683!!!!)!N!3(PJ#3'J(%SJ# 3(`3!N!9bB@jN,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LL fVfUj!!!&UJ!!$qJ!N!ME36LF!!!!VJ!"lkN!!`!!rrrrrJ#3#"05!!!!!J#3"!@ @!*!D!F5L!*!I"!#3"A4L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,83%LLe%")S!!!"F!!!!SN!N!JFJe52!!!!VJ!"lkS!!`!!rrrrrJ#3#"06!!! !!J#3"!H@!*!D!F5L!*!I"!#3"A9dD@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y4!5+,83%LJ!!!!H!!!!&3#3#(R9cDS!!!#Z!!([U`!$!!$rrrr q!*!)%e3!!!!#!*!%$*B!N"S"a+)!N"m%!*!&GfKKG(0[G@jN,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,83%LLfGV0f!!!%!J!!#+!!N!JHY&aB!!! !VJ!"lk`!!`!!rrrrrJ#3#"09!!!!!J#3"!H@!*!D!F5L!*!I"!#3"ATYEf3ZF(P %9N08!*!3Y`[&#lF,a3X!!!#`!!!!U3!!!!%!N"`6H3!!!!)!!J#3"!B!!!!)#!F !N"&!!*!*!Er!!*!ME'PL,A4V4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mAK#h#24h!!!'BJ!!(,)!N!MG,ce!!!!!X!!"lp%!!`!!rrrrrJ#3#"0k!!! !!J#3"!Q@!*!33!#3#3('`!#3(`J!N!9$B@jfBA-ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aH%,BL88d!!!*X!!!'+3#3#%J#je-!!!#`!!([dJ! $!!$rrrrq!*!)%hX!!!!#!*!%#CB!N""!!*!*!FE!!*!I#!#3"84TB@a[Cbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i3YCIEk!!!#0S!!#)e!*! )h-%M8J!!!,!!!Hr6!!-!!2rrrri!N!J6I!!!!!)!N!30PJ#3%%!!N!N"aX!!N"m )!*!&4QPXC84TB@a[Cbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&i3YL*463!!!+B!!!$K!*!)6UrF53!!!,!!!Hr8!!-!!2rrrri!N!J6I3!!!!) !N!3)PJ#3%%!!N!N"aX!!N"m)!*!&4QPi9'XZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aH%,BL88d!!!+`!!!&m`#3#'E3fFJ!!!#`!!([e3!$!!$ rrrrq!*!)%hi!!!!#!*!%$jB!N""!!*!*!FE!!*!I#!#3"90MFQpXE'9N9'9iG#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i4X[aH%3!!"+`!!!j %!*!)F2!HKJ!!!,!!!Hr@!!-!!2rrrri!N!J6I`!!!!)!N!32PJ#3%%!!N!N"aX! !N"m)!*!&8fPYF'aP4'PKE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mAK'ePp[T!!!$'J!!"VX!N!M5MpVS!!!!X!!"lpF!!`!!rrrrrJ#3#"1 !!!!!!J#3""'@!*!33!#3#3('`!#3(`J!N!9dDd0[E'pb3fK[Eh0PFLj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i5YL*46J!!!Vi!!!Ac!*!)N3X 0+3!!!,!!!HrB!!-!!2rrrri!N!J6J3!!!!)!N!34PJ#3%%!!N!N"aX!!N"m)!*! &G'Y$EfeYEfj%D@&XEfFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aH%E@jTAS!!!0H!!!&9J#3#%-jdf-!!!#`!!([f3!$!!$rrrrq!*!)%i)!!!! #!*!%$TB!N""!!*!*!FE!!*!I#!#3"94VBfpZFh4KER4c,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mAK'f)P&0!!!0JJ!!,1!!N!JK8d6,!!!!X!! "lpS!!`!!rrrrrJ#3#"1$!!!!!J#3"!L@!*!33!#3#3('`!#3(`J!N!98Df4ZC#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i5X[aH%J!!!p)!!!R l!*!)9D-(XJ!!!,!!!HrE!!-!!2rrrri!N!J6K!!!!!)!N!32PJ#3%%!!N!N"aX! !N"m)!*!&G'Y'D@aP4'PKE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mAK+fVfUk!!!'S!!!%mN!N!MqU-@M!!!!X!!"lp`!!`!!rrrrrJ#3#"1 &!!!!!J#3"!Q@!*!33!#3#3('`!#3(`J!N!9dDdC[ER3ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)X[aH%ED[DVS!!'dF!!)(K!#3#%RA(4%!!!#`!!( [h3!$!!$rrrrq!*!)%iB!!!!#!*!%#TB!N""!!*!*!FE!!*!I#!#3"94VD@jdCA) ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH%V,mAK)!!!3B!!! -&J#3#(ei'B-!!!#`!!([hJ!$!!$rrrrq!*!)%iF!!!!#!*!%$jB!N""!!*!*!FE !!*!I#!#3"A4V6@9cFf&RC8*[H#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&i5YUpUZJ!!"ii!!"V!!*!)Ke[NG`!!!,!!!HrI!!-!!2rrrri!N!J 6L!!!!!)!N!34PJ#3%%!!N!N"aX!!N"m)!*!&G'Y6D@e`E'9%D@&XEfFZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Xh'lM,CfXhF!!!QU!!!V!3#3#1% 4"b3!!!#`!!([i!!$!!$rrrrq!*!)%iN!!!!#!*!%#CB!N""!!*!*!FE!!*!I#!# 3"A4eFR4XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lfhl`5YYq m%J!!)-B!!,-8!*!)9R5jH3!)2)8!#$b-!!-!!2rrrri!N!JFJJ!!!!)!N!3'PJ# 3%%!!N!N"aX!!N"m)!*!&9'Pi,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mA@ffPEq[!!!$HJ!!#@B!N!M(4-TG!!!!U3!"lSJ!!J!!rrrrrJ#3#"1 +!!!!!J#3"!b@!*!D!EqL!*!I"!#3"@aTEQ9MB@0SC5j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&eYY`MdE`!!'T)!!'hQ!!!!FJ!!!CUM$6*$!!! !U3!"lSN!!J!!rrrrrJ#3#"1,!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"@a[Bf&XC5j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eYYT@rV`!!#%B!!"H @!*!)c*P2ZJ!!!+N!!Hk+!!)!!2rrrri!N!J6M!!!!!)!N!3+PJ#3'J'rSJ#3(`3 !N!9YB@0`BA4S,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@f fVfUU!!!%-!!!$"X!N!J(fBHm!!!!U3!"lSX!!J!!rrrrrJ#3#"10!!!!!J#3"!k @!*!D!EqL!*!I"!#3"@eKBh9bE$*`BA4S,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mA@kh#24[!!!*rJ!!)cN!N!KLP)qU!!!!U3!"lS`!!J!!rrr rrJ#3#"11!!!!!J#3"!U@!*!D!EqL!*!I"!#3"@eKD@aLEhJZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGEVD[DUS!!!PF!!!G03#3#2X(i`S!!!# T!!(ZM3!#!!$rrrrq!*!)%im!!!!#!*!%#TB!N"S"[k)!N"m%!*!&E@&TE'0KF#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eZYUpUUJ!!(p`!!)( U!*!)2rAP)`!!!+N!!Hk1!!)!!2rrrri!N!J6N!!!!!!#!*!%#*B!N"S"[k)!N"m %!*!&E@KXD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGEVD mS(N!!!G`!!!CAJ#3#+iQh%`!!!#T!!(ZM`!#!!$rrrrq!*!)%j%!!!!#!*!%$*B !N"S"[k)!N"m%!*!&E@PYCA4[Efac,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,,mA@qfVfUV!!!*!!!!(,F!N!J(+M0f!!!!U3!"lT!!!!)!!2rrrri !N!J6NJ!!!!)!N!3-PJ#3'J'rSJ#3(`3!N!9YD@ePG(P`CA-ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGB,D[DU3!!!A+!!!1a3#3#+DGP&8!!!# T!!(ZN3!#!!$rrrrq!*!)%j-!!!!#!*!%$CB!N"S"[k)!N"m%!*!&6@PYC9GbDA4 PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&e[Y`MdE`!!$BB !!$Sj!*!)J%EQd3!!!+N!!Hk5!!)!!2rrrri!N!J6P!!!!!)!N!3*PJ#3'J'rSJ# 3(`3!N!9YD@eTCRNZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a GElEGHd)!!!AB!!!5SJ#3#)j1I)B!!!#T!!(ZN`!#!!$rrrrq!*!)%j8!!!!#!*! %$*B!N"S"[k)!N"m%!*!&EA9XG'PQD@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mA@qfZU2N!!!#M!!!"X%!N!M&R0r!!!!!U3!"lT3!!J!!rrr rrJ#3#"1@!!!!!J#3"!L@!*!D!EqL!*!I"!#3"@eeG'9i,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mA@qh#24`!!!%i!!!%$3!N!Ki83m,!!!!U3! "lT8!!J!!rrrrrJ#3#"1A!!!!!J#3"!L@!*!D!EqL!*!I"!#3"@jPG(*M,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@qfVfUX!!!4hJ!!4Ti!N!J Bb2V(!!!!U3!"lTB!!J!!rrrrrJ#3#"1B!!!!!J#3"!U@!*!D!EqL!*!I"!#3"@j ZG("XD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGF,DQ&H) !!""1!!!bI3#3#-9eN!"J!!!!U3!"lTF!!J!!rrrrrJ#3#"1C!!!!!J#3"!Q@!*! D!EqL!*!I"!#3"@jdF'&dD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbr&e`YVUMj3!!!U!!!!Ib!*!)fZB3q`!!!+N!!HkB!!)!!2rrrri!N!J6QJ! !!!)!N!30PJ#3'J'rSJ#3(`3!N!9ZG(9bE$*`BA4S,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,EGISZfhAk,!!!3i!!!3rN!N!JR#p-*!!!!U3!"lTN !!J!!rrrrrJ#3#"1E!!!!!J#3"!@@!*!D!EqL!*!I"!#3"@pc,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&A4%*1690A4!#3#,CFCNDfA'C'!!!,"!!!(6X!N!K(9dGL!!! !U3!"lTS!!J!!rrrrrJ#3#"1F!!!!!J#3"!H@!*!D!EqL!*!I"!#3"A"NBLjNEf0 '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGFED[DU`!!#$#!!"ei`# 3#!bi#$8!!!#T!!(ZQ`!#!!$rrrrq!*!)%jd!!!!#!*!%"TB!N"S"[k)!N"m%!*! &F'4L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAA+h#24`!!! BIJ!!Cm)!N!K[3mXj!!!!U3!"lT`!!J!!rrrrrJ#3#"1H!!!!!J#3"!Q@!*!D!Eq L!*!I"!#3"A"TBfYXC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&ebYUpUV3!!#l!!!#EB!*!)b!Blm3!!!+N!!HkG!!)!!2rrrri!N!J6R`!!!!) !N!3)PJ#3'J'rSJ#3(`3!N!9`DA"PFbj`H84@3e3!N"#fX%e#!*!(YJ!!!+N!!!! "!*!F%lS!!!!#!!)!N!3-!!!!#!3(!*!E!EqL!*!MF'aKG#eRC@jPFQPM4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAKLf#6d[!!!!I!!!!4`!N!L)dL* X!!!!YJ!"lr`!!`!!rrrrrJ#3#"1l!!!!!J#3"!@@!*!D!FbL!*!I"!#3"A*PCf9 Z4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAA+fVfUY!!!(#!!!'SN !N!K`C`,I!!!!U3!"lTi!!J!!rrrrrJ#3#"3H!!!!!J#3"!Q@!*!D!EqL!*!I"!# 3"A"[F'9Z-Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ecYUp UV3!!#qi!!#-*!*!)DjN2pJ!!!+N!!HkI!!)!!2rrrri!N!J8(`!!!!)!N!3*PJ# 3'J'rSJ#3(`3!N!9`Eh"XD@)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aGFlF)p(!!!!L3!!!!(GF!N!Lp,423!!!!U3!"lU!!!J!!rrrrrJ#3#"3 J!!!!!J#3"!b@!*!D!EqL!*!I"!#3"A"[FfPiCQPXC5j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&ecY`MdF!!!$VS!!#ZQ!*!)Z&3"hJ!!!+N!!Hk K!!)!!2rrrri!N!J8)3!!!!)!N!3-PJ#3'J'rSJ#3(`3!N!9`Eh0TH("KG'JZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGFlD[DUi!!!Mb!!!K9`# 3#*4KUpF!!!#T!!(ZSJ!#!!$rrrrq!*!)&#)!!!!#!*!%#CB!N"S"[k)!N"m%!*! &F("bD@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&A4%*1690A4!#3#,CFCPDfA'C @!!!R[J!!E[J!N!Lq@+eC!!!!U3!"lU-!!J!!rrrrrJ#3#"3M!!!!!J#3"!Z@!*! D!EqL!*!I"!#3"A"bEfCTE'8ZC'pM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mAA@fhAY$!!!C)J!!81-!N!LZ#"M!!!!!U3!"lU3!!J!!rrrrrJ#3#"3 N!!!!!J#3"!U@!*!D!EqL!*!I"!#3"A"bEfCTE'8ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aGH,F)p(!!!"Jb!!"BRJ#3#06H*!J!!!#T!!(ZT3! #!!$rrrrq!*!)!!!!#!*!%#CB!N"S"[k)!N"m%!*!&F(0dBA4c,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAALfVfU[!!!&e!!!%,8!N!J4QrD H!!!!U3!"lUB!!J!!rrrrrJ#3#"3Q!!!!!J#3"!D@!*!D!EqL!*!I"!#3"A"dH5j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eiYUpUV`!!"5`!!!Z b!*!)@G#21`!!!+N!!HkR!!)!!2rrrri!N!J8*`!!!!)!N!30PJ#3'J'rSJ#3(`3 !N!9`H9pMEfe`D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, mAALfVfU[!!!0cJ!!,4i!N!L-PYGU!!!!U3!"lUJ!!J!!rrrrrJ#3#"3S!!!!!J# 3"!Q@!*!D!EqL!*!I"!#3"A"jBfaLFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&eJYVUMi`!!!rB!!!mG!*!)leHf9`!!!+N!!HkT!!)!!2rrrri !N!J8+3!!!!)!N!3)PJ#3'J'rSJ#3(`3!N!94G@9eC5j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&eiYZ'B,J!!"Ci!!"#V!*!)2'H"j!!!!+N!!Hk U!!)!!2rrrri!N!J8+J!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9aG@p`FQNZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGHEDkSq8!!"[B!!"92`#3#$M -c"N!!!#T!!(ZU`!#!!$rrrrq!*!)&#X!!!!#!*!%#CB!N"S"[k)!N"m%!*!&FQ& ZC'pY,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAQfXK8#!!! "hJ!!!c%!N!Ml0IP"!!!!U3!"lU`!!J!!rrrrrJ#3#"3X!!!!!J#3"!@@!*!D!Eq L!*!I"!#3"A*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAQ fXK8$!!!)3J!!&'%!N!JrX#[Y!!!!U3!"lUd!!J!!rrrrrJ#3#"3Y!!!!!J#3"!b @!*!D!EqL!*!I"!#3"A*PBfpZGQ9bG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&ejYVUMj3!!!f)!!!GP!*!)0k1$iJ!!!+N!!HkZ!!)!!2rrrri !N!J8,J!!!!)!N!32PJ#3'J'rSJ#3(`3!N!9bC@GPH&pcH@jdBAJZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGHVDb&3-!!!K%!!!B03#3#%ViM,% !!!#T!!(ZV`!#!!$rrrrq!*!)&#m!!!!#!*!%#CB!N"S"[k)!N"m%!*!&FQ9RFh9 L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAUfXK8$!!!$@!! !$'X!N!LUeT[k!!!!U3!"lV!!!J!!rrrrrJ#3#"3`!!!!!J#3"!H@!*!D!EqL!*! I"!#3"A*PF()ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGHVD b&3-!!!kB!!!br`#3#!Zr()B!!!#T!!(ZX3!#!!$rrrrq!*!)&$%!!!!#!*!%#*B !N"S"[k)!N"m%!*!&FQ9iC@-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aGHVDb&3-!!#%q!!"k+3#3#16ima)!!!#T!!(ZXJ!#!!$rrrrq!*!)&$) !!!!#!*!%#CB!N"S"[k)!N"m%!*!&FQCM1$)b,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mAAUfXK8$!!!'D!!!%#m!N!JNjPX[!!!!U3!"lV-!!J! !rrrrrJ#3#"3c!!!!!J#3"!k@!*!D!EqL!*!I"!#3"A*XBfpYF'aPG'9b,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83$f+fZU2P!!!*lJ!!*1)!N!M (QJ4(!!!!U3!"lV3!!J!!rrrrrJ#3#"3d!!!!!J#3"!k@!*!D!EqL!*!I"!#3"A* [BQpdF'&bFf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAU fXK8$!!!'2!!!$p`!N!K'B'3M!!!!U3!"lV8!!J!!rrrrrJ#3#"3e!!!!!J#3"!L @!*!D!EqL!*!I"!#3"A0MD'9N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mAAZh#24a!!!3[!!!4!S!N!L5@H8S!!!!U3!"lVB!!J!!rrrrrJ#3#"3 f!!!!!J#3"!U@!*!D!EqL!*!I"!#3"A0RE@aXD@)ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aGHlDb&3-!!!9`!!!4KJ#3#$0@LIB!!!#T!!(ZY`! #!!$rrrrq!*!)&$F!!!!#!*!%#CB!N"S"[k)!N"m%!*!&FfKPE(CP,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAZh#2m8!!!(6!!!(NN!N!LC5-C '!!!!U3!"lVJ!!J!!rrrrrJ#3#"3i!!!!!J#3"!L@!*!D!EqL!*!I"!#3"A0SE'9 i,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAZfXK8%!!!&1J! !$f!!N!M2"mp'!!!!U3!"lVN!!J!!rrrrrJ#3#"3j!!!!!J#3"!Q@!*!D!EqL!*! I"!#3"A0SGA4TE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&e JYUpUT!!!#,J!!"LZ!*!)0,"")`!!!+N!!Hkk!!)!!2rrrri!N!J81J!!!!)!N!3 6PJ#3'J'rSJ#3(`3!N!96D@e`E'9)9&438f9bGQ9b,R"j4&C$9!#3%,F,a3fh#m8 3!!!!`!!!!+N!!!!"!*!F&$X!!!!#!!)!N!30!!!!#!3(!*!4S!#3#3'rX`#3)h0 TG'8YF'&MDf&RCA0'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)Y4!5-V8 3%M)!!!"L!!!!G`#3#!%M-S3!!!$!!!(`B!!$!!$rrrrq!*!)&$`!!!!#!*!%"TB !N"S"eU)!N"m%!*!&8N9"4%e&4&C$9!#3%,F,a3fh#m8-!!!""J!(@iX!!!!"!*! F(&d!!!!$!!)!N!3$!!!!#!3(!*!4S!#3#3(@N3#3)dC'9%C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!LebfBVY`Zh"3!!!1i!!!+@!*!)4F6JR`!(@ii!"eZ 2!!3!!2rrrri!N!JFA!!!!!)!N!3,PJ#3'J+SN3#3(`3!N!9IAfPZDA4IAbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LebfBVY`Zh"3!!#RB!!#Qm!*! )ZX`R6J!(@ii!"eZ3!!!%!!$rrrrq!*!)(&X!!!!#!*!%"TB!N"S#U*%!N"m%!*! &4NC8,R"j4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,F,Z[kh#lV q!!"00!!!Lri!!!"Q!!!"P[p$Sa%!"eZ1!!GEN3!%!!$rrrrq!*!)(&S!!!!#!*! %%TB!N"!J!*!*!UL"!*!I"`#3"!&QCR4`B@0V,Q0KFQ*[ELjcE'*'9N08!*!(##! !!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lh#lq1Y`ZrMJ!!653!!)[1!!!!CJ!!!C, 42@#G!!GEMJ!(@j)!"!!!rrrrrJ#3#"aC!!!!!J#3"!q@!*!3J!#3#3+SN!!!N"m '!*!&CQCdF'&MDbj`F'-ZFfaL4&C$9!#3%,F,a3kh#m80!!!""J!(@iX!!!!"!*! F(&J!!!!$!!)!N!3#!!!!#!3(!*!E!GD4!*!M68&'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YFYQ,EF,Y`B!!$'d!!$Y93#3#-[Hdj-!"eZ6!!GEP!!%!!$ rrrrq!*!)(&F!!!!#!*!%#jB!N"S#Tj%!N"m%!*!&AepTEQPdAemZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YMQKF,F,Y`F!!!G8!!!HI`#3#1(X65% !"eZ6!!GEP3!%!!$rrrrq!*!)(&B!!!!#!*!%$CB!N"S#Tj%!N"m%!*!&B@0dDAC PBA4dFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf1D&[Y`Zh"J! !!)B!!!$Q!*!)T`j0@`!(@j-!"eZ@!!3!!2rrrri!N!JF93!!!!)!N!30PJ#3'J+ RN3#3(`3!N!9039pfCA*cD@pZ,R"j4&C$9!#3%,F,a3kh#m82!!!""J!(@iX!!!! "!*!F(&3!!!!$!!)!N!3(!!!!#!3(!*!4S!#3#3(@N3#3)djeE@9bD@0'9N08!*! (##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)Y`ZjM,F,ZRB!!&L@!!$`(J!!!'B !!!'5baD-h3!(@jF!"eZB!!3!!2rrrri!N!JF8`!!!!)!N!34PJ#3%#!!N!N#TS% !N"m(!*!%!9pZG@e`H5jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0 SE'*3HA4S!*!)Y`ZqiVF,[Z)!!&L3!!!!m"i!!!"N!!!"N[Q+CiJ!"eZA!!GEQ3! %!!$rrrrq!*!)(&)!!!!#!*!%$TB!N"#!!*!*!UD3!!#3(`B!N!9IER9YF(NZF(" M,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!Lh#lRFY`ZkJ!! !)LB!!&$$!!!!D!!!!CEP%!J(!!GEP`!(@jS!"!!!rrrrrJ#3#"a4!!!!!J#3""1 @!*!D!UD"!*!I"`#3"!&KFR*KH@CZFbjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"!*! )"`#3%!8!!A0SE'*3HA4S!*!)Y`Zr*VF,[bB!!#)Q!!"3``!!!'J!!!'5%AQP4J! (@jF!"eZE!!3!!2rrrri!N!JF8!!!!!)!N!33PJ#3'J+QN!!!N"m'!*!&BA*bBAP QER-ZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LebfBNYFY Q*!!!#!S!!"lJ!*!)e(kZPJ!(@jF!"eZF!!3!!2rrrri!N!JF6`!!!!)!N!32PJ# 3'J+QN3#3(`3!N!9"FR*KH9"bD@jdCA)ZF(P'9N08!*!(##!!!!(!!*!("`#3%!8 !!A0SE'*3HA4S!*!)Y`Zk5,F,ZSJ!!eFB!!Lr'J!!!'S!!!'DE32&+`!(@jF!"eZ G!!3!!2rrrri!N!JF6J!!!!)!N!3@PJ#3%#!!N!N#TS%!N"m(!*!%!@aKF'&MDep XDA4P,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!L h#lp6Y`Zr8`!$9a)!#,m+!!!!D!!!!CB43Leh!!GEP`!(@ji!"!!!rrrrrJ#3#"a 0!!!!!J#3""1@!*!3J!#3#3+QN!!!N"m'!*!&E'&`B@0VAfaTG'8ZF("M,R0XBNC @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#lF%Y`Zh"!!!#bB!!#`A!*! )'Gfef!!(@jF!"eZI!!3!!2rrrri!N!JF6!!!!!)!N!33PJ#3'J+QN3#3(`3!N!9 -D@jPBA*"E'GPBR*K,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F ,Y`5h#lF%!!!#6J!!"LN!N!LVIVb,!!GEP`!(@k!!"!!!rrrrrJ#3#"a,!!!!!J# 3"!Q@!*!D!UD4!*!I"!#3"8eKG(*TH#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lh#lF%Y`Zh"!!!$5)!!#90!*!)V'JGNJ!(@jF!"eZK!!3!!2rrrri !N!JF5J!!!!)!N!3(PJ#3'J+QN3#3(`3!N!906'&L,R"j4PC$9!#3"`JJ!!!"`!# 3"`F!N"!&!!&cD'aL8(PdD!#3#,F,ZDZh#lTj!!!LDJ!!81N!!!"U!!!"PTTY0JB !"eZA!!GESJ!%!!$rrrrq!*!)(%N!!!!#!*!%&CB!N"!J!*!*!UD"!*!I"`#3"!& YG@adD@&bFQ&j,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP" jG'J!N!Lh#lljY`Zqq3!!)QJ!!&$T!!!!CJ!!!CBRdVjm!!GEP`!(@k-!"!!!rrr rrJ#3#"a)!!!!!J#3""+@!*!3J!#3#3+QN!!!N"m'!*!&EA9XG'PKFR*KH5j`F'- ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A,CLUh#lF%!!!CQ!! !@N%!N!J,UjDX!!GEP`!(@k3!"!!!rrrrrJ#3#"a(!!!!!J#3"!U@!*!D!UD4!*! I"!#3"8jeE@9bD@-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YMQ KEEF,Y`3!!!!F!!!!%`#3#-fRfLi!"eZA!!GET3!%!!$rrrrq!*!)(%B!!!!#!*! %%TB!N"S#TT%!N"m%!*!&ER9YCA*TBepfCA*cD@pZ,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,A,CLUebfBU!!!#a!!!#D3!N!LBHU8A!!GEP`!(@kB !"!!!rrrrrJ#3#"a&!!!!!J#3"!b@!*!D!UD4!*!I"!#3"9"bC@0TFfP[ELj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#lF%Y`Zh"!!!$JS!!$A8!*! )*ILBQ3!(@jF!"eZR!!3!!2rrrri!N!JF4!!!!!)!N!31PJ#3'J+QN3#3(`3!N!9 5B@jNEfe"FR*KH5j`H8C@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!L h#lRlY`ZkK!!!-"!!!&Uq!!!!CJ!!!C,C21k@!!GEP`!(@kJ!"!!!rrrrrJ#3#"a $!!!!!J#3""'@!*!3)!#3#3+QJ3#3(`F!N!3"FQ&ZE'PL,Q0KFQ*[ELjcE'*'9N0 8!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lh#lmpY`Zr23!!,r`!!&U1!!! !C!!!!C,ZiShK!!GEP`!(@kN!"!!!rrrrrJ#3#"a#!!!!!J#3"!k@!*!3J!#3#3+ QN!!!N"m'!*!&FQ&ZE'PL,R"`BbjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0 SE'*3HA4S!*!)Y`Zja,F,ZRd!!#Rk!!#Fk3!!!'J!!!'5"LSae3!(@jF!"eZU!!3 !!2rrrri!N!JF33!!!!)!N!33PJ#3%#!!N!N#TS%!N"m(!*!%!A9YBA4S,Q0KFQ* [ELjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lh#lm3Y`Zr%!! !+IJ!!*cC!!!!BJ!!!BliGjLM!!GEP`!(@kX!"!!!rrrrrJ#3#"a!!!!!!J#3"!f @!*!3J!#3#3+QN!!!N"m'!*!&G@eKG'JZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!LebfBVYV5jl`!!!p3!!!fl!*!)Ur9lM3!(@jF!"eZX!!3 !!2rrrri!N!JF2`!!!!)!N!3-PJ#3'J+QN3#3(`3!N!99Ff9b3A*bBANZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)Y`ZkP,F,[eB!!!!3!!!!#!#3#,5 -b1)!"eZ,!!GEM!!$!!$rrrrq!*!)($i!!!!#!*!%#jB!N"S"eT%!N"m%!*!&6R9 YCA*TBbj`G'K%9N08!*!3Y`[&%,F,a3m!!!%'!!GEL`!!!!%!N"`F23!!!!-!!J# 3"!-!!!!)"!F!N"X"eT%!N#056NG'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)YFYQ,VA,CLi!!!'1!!!$UJ#3##Vc`U)!"eZY!!GEVJ!%!!$rrrrq!*!)($` !!!!#!*!%#jB!N"S#TC%!N"m%!*!&AepTEQPdAemZF(P'9N08!*!(##!!!!(!!*! ("`#3%!8!!A0SE'*3HA4S!*!)Y`Zk`EF,ZX%!!"'m!!!PkJ!!!'3!!!'5$YL!p!! (@kd!"eZ[!!3!!2rrrri!N!JF1`!!!!)!N!31PJ#3'J+PJ3#3(`F!N!3"8Nj(,Q0 KFQ*[ELjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lh#lp[Y`Z rF!!!%FJ!!#B+!!!!C!!!!Bi!6dS9!!GEV3!(@l!!"!!!rrrrrJ#3#"`k!!!!!J# 3"!Z@!*!D!U@3!!#3(`B!N!956NFZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!LebfBZYFYQ,J!!!H`!!!6)!*!)QH4@'`!(@kd!"eZa!!3!!2r rrri!N!JF13!!!!)!N!30PJ#3'J+PN3#3(`3!N!96G'&dDA0dD@0c,R"j4&C$9!# 3%,F,a3fh#m80!!!""`!)SCd!!!!"!*!F(,X!!!!$!!)!N!3&!!!!#!3(!*!E!GD 4!*!MDfPZC(0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y`Zh#,F,Y`J !!!"%!!!!2!#3#"XNkAF!#+'P!!LKTJ!%!!$rrrrq!*!)(,S!!!!#!*!%#jB!N"S #VT%!N"m%!*!&AepTEQPdAemZF(P'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP" jG'J!N!Lh#lXVY`Zl+`!!"M!!!"*D!!!!CJ!!!C+DS-@C!!LKT3!)SDF!"!!!rrr rrJ#3#"bj!!!!!J#3""'@!*!D!Uk4!*!I"!#3"9pVD@jNFbjMBA*LEfiZFfaL4PC $9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)Y`ZrUEF,[kN!!!BX!!!5@J! !!'3!!!'53`IB'`!)SD8!#+'S!!3!!2rrrri!N!JFZ!!!!!)!N!31PJ#3'J+ZN3# 3(`3!N!9IDfPZC(-ZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lh#lF)Y`Zh#!!!"Ji!!"Vp!*!)H6%md3!)SD8!#+'T!!3!!2rrrri!N!JFY`! !!!)!N!3)PJ#3'J+ZN3#3(`3!N!9VD@jNFbj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lh#lF)Y`Zh#!!!!"J!!!!3!*!)'QaFDJ!)SD8!#+'U!!3!!2r rrri!N!JFYJ!!!!)!N!33PJ#3'J+ZN3#3(`3!N!9VD@jNFepfCA*cD@pZ,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAZfiCJ[!!!-[J!!)T`!!!# @!!!"QL4QfX%!!!#T!!(ZZ`!#!!$rrrrq!*!)&$d!!!!#!*!%"jB!N"S"[k)!N"m %!*!&FfPdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&emYV) 9"!!!&XS!!%L2!*!)ZdLa5`!!!+N!!Hkm!!)!!2rrrri!N!J82J!!!!)!N!3+PJ# 3'J'rSJ#3(`3!N!9cEA4`E'PL,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mAAbfXK8%!!!)'J!!&e)!N!K$clJB!!!!U3!"lVd!!J!!rrrrrJ#3#"3 r!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"A0ZC'KNFLj`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr&eJY`MdE3!!%d!!!%2A!*!)&d6JX`!!!+N!!Hkq!!) !!2rrrri!N!J83!!!!!)!N!32PJ#3'J'rSJ#3(`3!N!96Ef0VCA46CA*fCA)ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!2BVEKQ#m!!!S'!!!IcJ# 3#0iQXN`!!!#T!!(Z[`!#!!$rrrrq!*!)&%%!!!!#!*!%"TB!N"S"[k)!N"m%!*! &Fh*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83$f+fiCJ`!!! +m!!!,J`!N!L,Hkl!!!!!U3!"lX!!!J!!rrrrrJ#3#"4#!!!!!J#3"!k@!*!D!Eq L!*!I"!#3"A0bC9pMEfe`D@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,83$f+fiCJ`!!!)aJ!!'dX!N!M4TH(A!!!!U3!"lX%!!J!!rrrrrJ#3#"4 $!!!!!J#3""#@!*!D!EqL!*!I"!#3"A0bC9pMEfjcG'&ZG(-ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!2BVEKQ$%!!"9f!!"I1!#3#+#X8'3!!!# T!!(Z`J!#!!$rrrrq!*!)&%3!!!!#!*!%$*B!N"S"[k)!N"m%!*!&Fh*PAh"KFR0 P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAAbfZU2Q!!!#`J! !"S-!N!KJRhR$!!!!U3!"lX-!!J!!rrrrrJ#3#"4&!!!!!J#3"!H@!*!D!EqL!*! I"!#3"A0dBA3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGI,D b&33!!!2F!!!*$!#3#,#LiD%!!!#T!!(Za!!#!!$rrrrq!*!)&%B!!!!#!*!%$*B !N"S"[k)!N"m%!*!&Fh4KG'0KBfKP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,,mAAbfZU2Q!!!"@!!!!`X!N!LNC31Z!!!!U3!"lX8!!J!!rrrrrJ# 3#"4(!!!!!J#3"!U@!*!D!EqL!*!I"!#3"A0dBA4fCR-ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)X[aGI,DkSqB!!!dk!!!UaJ#3#!9#c@F!!!#T!!( ZaJ!#!!$rrrrq!*!)&%J!!!!#!*!%#CB!N"S"[k)!N"m%!*!&Fh4bD@jR,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA@#fVfUP!!!'`!!!&rN!N!M SC%fr!!!!U3!"lXF!!J!!rrrrrJ#3#"4*!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"90 dFQPZCdP2,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,1VSkZfVfU a!!!1DJ!!-%F!N!LDT%j)!!!!U3!"lXJ!!J!!rrrrrJ#3#"4+!!!!!J#3"!b@!*! D!EqL!*!I"!#3"A0dFQPZCfpXC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&epYSjkY3!!$QJ!!%#$!*!)BI3q%!!!!+N!!Hl*!!)!!2rrrri!N!J 85`!!!!)!N!3)PJ#3'J'rSJ#3(`3!N!9cG@jKG5j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr&epYSjkY3!!!I!!!!63!*!)+QDYE!!!!+N!!Hl+!!) !!2rrrri!N!J86!!!!!)!N!3,PJ#3'J'rSJ#3(`3!N!9cG@jKG@4TEbj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&epYFa693!!!bi!!!DB!*!)9dc 9k3!!!+N!!Hl,!!)!!2rrrri!N!J863!!!!)!N!3*PJ#3'J'rSJ#3(`3!N!9cH@e LEf`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y1XiTEF)p(-!!!h B!!!`jJ#3#,1465`!!!#T!!(Zc!!#!!$rrrrq!*!)&%i!!!!#!*!%#jB!N"S"[k) !N"m%!*!&G'&LEQ&ZERNZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aGIEE&dI`!!"%@!!!mA!!!!(!!!!'DP060&3!!!+N!!Hl0!!)!!2rrrri!N!J 86`!!!!)!N!3-PJ#3'J'rSJ#3(`3!N!9dC@aZCA4XD@)ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)X[aGIVE&dI`!!!NN!!!BbJ#3#%(Kh88!!!#T!!( ZcJ!#!!$rrrrq!*!)&&!!!!!#!*!%#jB!N"S"[k)!N"m%!*!&G'9YF'CTE'8ZF(P %9N08!*!3Y`[&%,F,a4d!!!$"!!!!U3!!!!%!N"`883!!!!)!!J#3"!3!!!!)"!F !N"X"[k)!N#0dCA0d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mALZ br&iV!!!!1!!!!#m!N!L42p!T!!!!`3!"m'-!!`!!rrrrrJ#3#"46!!!!!J#3"!Z @!*!D!GHL!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&96%& A9&C24!#3#,-PBM#c0mI2!!"#D!!!@m8!N!MCdPiq!!!!`3!"m'3!!`!!rrrrrJ# 3#"48!!!!!J#3"!b@!*!D!GHL!*!I"!#3"@&eC'P[G'9cG#jKG8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&iVYFY23J!!!)i!!!$*!*!)k,jb63!!!-% !!I"P!!-!!2rrrri!N!J893!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9KGA4[G'9cG#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&iaX[aH-3!!r6`!!AA p!*!)KD45E!!!!-%!!I"Q!!-!!2rrrri!N!J89J!!!!)!N!3,PJ#3'J(ASJ#3(`3 !N!9RFQ9jFQGL,R9eC84@3e3!N"#h#m8GY`[&*J!!!-)!!!$"!!!!!3#3("4A!!! !!`!#!*!%"J!!!!J%"`#3'`(ASJ#3)fpeG("eG%C@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!Lbr&j2X[aH6`!!!"!!!!!)!*!)H0$me!!!!-)!!I$!!!3!!2r rrri!N!J8@!!!!!)!N!3(PJ#3'J(BSJ#3(`3!N!9dCA0dAf&X4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K83eG*43#3#,,mANqbr&j2!!!!&!!!!!X!N!KZcVlI!!!!`J! "m-%!"!!!rrrrrJ#3#"4C!!!!!J#3"!U@!*!D!GLL!*!I"!#3"A4PFh4IBA*bBAP '9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH6l,mANm!!!!@!!!!$3# 3##4A[H8!!!$#!!(``J!%!!$rrrrq!*!)&&S!!!!#!*!%$*B!N"S"f+)!N"m%!*! &G'9cG&pKG@4TEfp`4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP# d3f1j!!!%$!!!"F3!N!L9m"jp!!!!`J!"m--!"!!!rrrrrJ#3#"4E!!!!!J#3"!f @!*!D!GLL!*!I"!#3"A4PFh4IBQPZBA0MD@P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&4$9dP&!*!)Y%0MZE4$BlN!!!!8!!!!$!#3#(dNQ+!!!!$#!!(`a!!%!!$rrrr q!*!)&&`!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pLD@jSCAK'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH8,,mAP!!!!!8!!!!#`#3#!qej2-!!!$ #!!(`a3!%!!$rrrrq!*!)&&d!!!!#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pLFf4 NBNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j3YSjka3!!!0i!!!& N!*!)694ZF3!!!-)!!I$'!!3!!2rrrri!N!J8AJ!!!!)!N!3-PJ#3'J(BSJ#3(`3 !N!9dCA0dAf*eD@adD@j'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[a H8,,mAP!!!!!3!!!!#!#3#,10SV)!!!$#!!(`a`!%!!$rrrrq!*!)&&m!!!!#!*! %"jB!N"S"f+)!N"m%!*!&G'9cG&pMC%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0 A588!N!Lbr&j3X[aH8!!!!"!!!!!)!*!)He3SZJ!!!-)!!I$)!!3!!2rrrri!N!J 8B!!!!!)!N!3(PJ#3'J(BSJ#3(`3!N!9dCA0dAf0X4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K83eG*43#3#,,mAP'br&j4!!!!&!!!!!X!N!M+,U9p!!!!`J!"m-N!"!! !rrrrrJ#3#"4K!!!!!J#3"!U@!*!D!GLL!*!I"!#3"A4PFh4IBfeKG'K'9N08!*! (##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y1XiU,6V1+J!!!!@!!!!$J#3#*NGSUX !!!$#!!(`bJ!%!!$rrrrq!*!)&')!!!!#!*!%$CB!N"S"f+)!N"m%!*!&G'9cG&p MEfjdB@PZFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lc*@&9YT1P)J! !!&3!!!"j!*!)`,iqcJ!!!-)!!I$,!!3!!2rrrri!N!J8B`!!!!)!N!3-PJ#3'J( BSJ#3(`3!N!9dCA0dAf0`D@0VE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP &!*!)X[aH8E,mAP%!!!!8!!!!#`#3#&a0,pm!!!$#!!(`c!!%!!$rrrrq!*!)&'3 !!!!#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pMFRP`G%C@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!Lbr&j4X[aH83!!!")!!!!*!*!)GFMMRJ!!!-)!!I$0!!3 !!2rrrri!N!J8C3!!!!)!N!3)PJ#3'J(BSJ#3(`3!N!9dCA0dAf4LE8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j4X[aH83!!!"!!!!!)!*!)IKXq2`! !!-)!!I$1!!3!!2rrrri!N!J8CJ!!!!)!N!3(PJ#3'J(BSJ#3(`3!N!9dCA0dAf4 X4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP'br&j4!!!!&!!!!!X !N!MLQ`iM!!!!`J!"m-m!"!!!rrrrrJ#3#"4R!!!!!J#3"!U@!*!D!GLL!*!I"!# 3"A4PFh4ICA*bEQp'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH8VD Jd4S!!!%5!!!#63#3#&K'D#B!!!$#!!(`d!!%!!$rrrrq!*!)&'J!!!!#!*!%$jB !N"S"f+)!N"m%!*!&G'9cG&pPH'0PF(4TEfjc4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K83eG*43#3#,83$f5h#24r!!!$[J!!(-F!N!J$HVP"!!!!`J!"m0%!"!!!rrr rrJ#3#"4T!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4PFh4ICAKdBf&XE%C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j5X[aH8J!!!"3!!!!,!*!)'GaIr3! !!-)!!I$5!!3!!2rrrri!N!J8DJ!!!!)!N!3+PJ#3'J(BSJ#3(`3!N!9dCA0dAfC MER4X4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,6V1+LdkcLS!!!!&!! !!!X!N!MHM*f2!!!!`J!"m0-!"!!!rrrrrJ#3#"4V!!!!!J#3"!U@!*!D!GLL!*! I"!#3"A4PFh4ICQpbDc&'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[a H8V,mAP)!!!!5!!!!#J#3#,FEl!B!!!$#!!(`e!!%!!$rrrrq!*!)&'`!!!!#!*! %#CB!N"S"f+)!N"m%!*!&G'9cG&pRC'*Y4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 83eG*43#3#,,mAP+br&j5!!!!%!!!!!J!N!KmAB"Q!!!!`J!"m08!"!!!rrrrrJ# 3#"4Y!!!!!J#3"!H@!*!D!GLL!*!I"!#3"A4PFh4ICfa'9N08!*!(##!!!!%!N!J (!*!5!94&@&4$9dP&!*!)X[aH8VEGHdN!!!)!!!!%h!#3#06KXj`!!!$#!!(`eJ! %!!$rrrrq!*!)&'i!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pRFQ&YE@&b4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP1br&j6!!!!%J!!!!N!N!L %0i-F!!!!`J!"m0F!"!!!rrrrrJ#3#"4[!!!!!J#3"!L@!*!D!GLL!*!I"!#3"A4 PFh4ICh*`4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,-hap#c0mI3!!! !%J!!!!S!N!Mdj%pA!!!!`J!"m0J!"!!!rrrrrJ#3#"4`!!!!!J#3"!Q@!*!D!GL L!*!I"!#3"A4PFh4IChTTF%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L br&j6X[aH8`!!!"B!!!!0!*!))m1l6`!!!-)!!I$C!!3!!2rrrri!N!J8F3!!!!) !N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAfPYB@GPEh"'9N08!*!(##!!!!%!N!J(!*! 5!94&@&4$9dP&!*!)X[aH8l,mAP-!!!!@!!!!$3#3#,IIPKF!!!$#!!(`fJ!%!!$ rrrrq!*!)&()!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pTE@GQD@aP4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP1eN8+M!!!!9!!!!'i!N!Kb[S& `!!!!`J!"m0X!"!!!rrrrrJ#3#"4c!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4 IE'pZCdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j6YK5[k3!!!(J !!!#V!*!)a$%JF`!!!-)!!I$F!!3!!2rrrri!N!J8G!!!!!)!N!3*PJ#3'J(BSJ# 3(`3!N!9dCA0dAfeKG'K'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[a H9,,mAP3!!!%X!!!#"`#3#-j3U5)!!!$#!!(`h3!%!!$rrrrq!*!)&(8!!!!#!*! %#*B!N"S"f+)!N"m%!*!&G'9cG&pYC$9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 $9dP&!*!)X[aH6l,mANm!!!2J!!!*Y`#3#$4iUKN!!!$#!!(`hJ!%!!$rrrrq!*! )&(B!!!!#!*!%$jB!N"S"f+)!N"m%!*!&G'9cG&p0D@eP9h*TG'9b4PC$9!#3"`J J!!!"!*!)"`#3%J&849K83eG*43#3#,83$f@fPErD!!!"$J!!!M3!N!JEl!99!!! !`J!"m0m!"!!!rrrrrJ#3#"4h!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4IE@e KF%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j8X[aH9!!!!%B!!!" M!*!)dpM)j!!!!-)!!I$J!!3!!2rrrri!N!J8H!!!!!)!N!3)PJ#3'J(BSJ#3(`3 !N!9dCA0dAfjPGdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j8X[a H9!!!!"`!!!!8!*!)%[$iB!!!!-)!!I$K!!3!!2rrrri!N!J8H3!!!!)!N!3)PJ# 3'J(BSJ#3(`3!N!9dCA0dAfjTFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588 !N!Lbr&j8X[aH9!!!!$J!!!!`!*!)A(eS2!!!!-)!!I$L!!3!!2rrrri!N!J8HJ! !!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAfjdF'&dD%C@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!Lbr&j8X[aH9!!!!'i!!!#)!*!)&E-[a3!!!-)!!I$M!!3 !!2rrrri!N!J8H`!!!!)!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAfp`BfpNCA0'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH9EAE0A%!!!##!!!!V3#3#$Z A8)3!!!$#!!(`j!!%!!$rrrrq!*!)&(`!!!!#!*!%$jB!N"S"f+)!N"m%!*!&G'9 cG&p[F'9bBA4TEfjc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAP@ br&j9!!!!Z!!!!U-!N!KAmdTr!!!!`J!"m18!"!!!rrrrrJ#3#"4p!!!!!J#3"!f @!*!D!GLL!*!I"!#3"A4PFh4IEh"PFQ&dEh*'9N08!*!(##!!!!%!N!J(!*!5!94 &@&4$9dP&!*!)Xb9K9VAYKY8!!!"8!!!!H!#3#)K'8DS!!!$#!!(`jJ!%!!$rrrr q!*!)&(i!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&p`D@0VE'9'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH9ED6T5)!!!%3!!!%AJ#3#$E#f!d!!!$ #!!(`j`!%!!$rrrrq!*!)&(m!!!!#!*!%#*B!N"S"f+)!N"m%!*!&G'9cG&p`DfG '9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)XaeD)EAE0A%!!!"+!!!!L3# 3#1c,'K%!!!$#!!(`k!!%!!$rrrrq!*!)&)!!!!!#!*!%#jB!N"S"f+)!N"m%!*! &G'9cG&p`Eh"PEM*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH9E, mAP8!!!#k!!!"b!#3#+"iHNd!!!$#!!(`k3!%!!$rrrrq!*!)&)%!!!!#!*!%#*B !N"S"f+)!N"m%!*!&G'9cG&p`EhG'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP &!*!)X[aH9V,mAPB!!!"-!!!!H`#3#%dKd#m!!!$#!!(`kJ!%!!$rrrrq!*!)&)) !!!!#!*!%#*B!N"S"f+)!N"m%!*!&G'9cG&p`Gf4'9N08!*!(##!!!!%!N!J(!*! 5!94&@&4$9dP&!*!)Y4!2CED9[pS!!!)k!!!+5J#3#28C@5d!!!$#!!(`k`!%!!$ rrrrq!*!)&)-!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&p`H@9iF'&d4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPDeZD@!!!!!-J!!!#N!N!Kf9iI B!!!!`J!"m1`!"!!!rrrrrJ#3#"5%!!!!!J#3"!H@!*!D!GLL!*!I"!#3"A4PFh4 IFQ9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH9V,mAPB!!!&U!!! 'F`#3#2KQR!N!!!$#!!(`l3!%!!$rrrrq!*!)&)8!!!!#!*!%#TB!N"S"f+)!N"m %!*!&G'9cG&pbC@GPH%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&j @X[aH9J!!!"3!!!!-!*!)Ze6L%J!!!-)!!I$Z!!3!!2rrrri!N!J8KJ!!!!)!N!3 ,PJ#3'J(BSJ#3(`3!N!9dCA0dAh*QBcJb-NC@3e3!N!F))!!!!3#3#!F!N")"9%9 B9%0A588!N!Lbr&j@X[aH9J!!!#J!!!!I!*!)A469`J!!!-)!!I$[!!3!!2rrrri !N!J8K`!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAh*RBQPYCdC@3e3!N!F))!! !!3#3#!F!N")"9%9B9%0A588!N!Lbr&jAYT@rf`!!!'S!!!"f!*!)'VPF2`!!!-) !!I$`!!3!!2rrrri!N!J8L!!!!!)!N!3+PJ#3'J(BSJ#3(`3!N!9dCA0dAh*[G'p b4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPHeN8+M!!!!&!!!!!` !N!MVhAHL!!!!`J!"m2%!"!!!rrrrrJ#3#"5*!!!!!J#3"!Z@!*!D!GLL!*!I"!# 3"A4PFh4IFf9XC@0d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,-PB9H c*@&A!!!!+!!!!#F!N!K*#5Ml!!!!`J!"m2)!"!!!rrrrrJ#3#"5+!!!!!J#3"!L @!*!D!GLL!*!I"!#3"A4PFh4IFfKK4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG *43#3#,,mAPHbr&jA!!!!,J!!!#8!N!L*h'a#!!!!`J!"m2-!"!!!rrrrrJ#3#"5 ,!!!!!J#3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IFfPREQ&X4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,,mAPHbr&jA!!!!*!!!!"`!N!K)l6-(!!!!`J!"m23 !"!!!rrrrrJ#3#"5-!!!!!J#3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IFfpMDf9d4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPHbr&jA!!!!&J!!!!i!N!K -XS[a!!!!`J!"m28!"!!!rrrrrJ#3#"50!!!!!J#3"!f@!*!D!GLL!*!I"!#3"A4 PFh4IFh4bCR4TE@9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)XjD@Y,1 @PV3!!!"`!!"1p!#3#1V$FA8!!!$#!!(`pJ!%!!$rrrrq!*!)&)i!!!!#!*!%#jB !N"S"f+)!N"m%!*!&G'9cG&pcG(*TEQG'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 $9dP&!*!)X[aH@,,mAPJ!!!"Z!!"1m`#3#-EM5EF!!!$#!!(`p`!%!!$rrrrq!*! )&)m!!!!#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pcG(*[F%C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9%0A588!N!Lbr&jBX[aH@!!!!"3!!!!-!*!)V*lBi!!!!-)!!I$ i!!3!!2rrrri!N!J8N!!!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pcG(*eBh4 '9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH@,,mAPJ!!!!D!!!!%3# 3#&fBU*!!!!!!`J!"m2N!"!!!rrrrrJ#3#"54!!!!!J#3""#@!*!D!GLL!*!I"!# 3"A4PFh4IFh9ZBA9ND@pNCAC'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )X[aH@,,mAPJ!!!"-!!!!BJ#3#2iZ3mm!!!$#!!(`qJ!%!!$rrrrq!*!)&*)!!!! #!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pdD(*PB@4'9N08!*!(##!!!!%!N!J(!*! 5!94&@&4$9dP&!*!)X[aH@,,mAPJ!!!!5!!!!#J#3#+'d&,`!!!$#!!(`q`!%!!$ rrrrq!*!)&*-!!!!#!*!%#CB!N"S"f+)!N"m%!*!&G'9cG&pdD@eP4PC$9!#3"`J J!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPQbr&jC!!!!&!!!!!`!N!K(1FfH!!! !`J!"m2`!"!!!rrrrrJ#3#"58!!!!!J#3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IG'P YD@jR4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAPQh#25!!!!5YJ! !2YS!N!Ja5Q6D!!!!`J!"m2d!"!!!rrrrrJ#3#"59!!!!!J#3"!f@!*!D!GLL!*! I"!#3"A4PFh4IG'pVC@jTHQ9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )X[aH@E,mAPN!!!$-!!!"3`#3#,%ldSm!!!$#!!(`rJ!%!!$rrrrq!*!)&*B!!!! #!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pdHA"PFdC@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!Le%!pPYEQPJ!!!!))!!!%5!*!)44Uj0!!!!-)!!I$r!!3!!2r rrri!N!J8P`!!!!)!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAh9ZD@0[C'9'9N08!*! (##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y4!2CEC!XCS!!!#%!!!!Q`#3#(SbH8N !!!$#!!(a!!!%!!$rrrrq!*!)&*J!!!!#!*!%%*B!N"S"f+)!N"m%!*!&G'9cG&p eEQPMEf4PC'&dB8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&jCX[a H@3!!!"3!!!!-!*!)"H*4%3!!!-)!!I%"!!3!!2rrrri!N!J8Q3!!!!)!N!3,PJ# 3'J(BSJ#3(`3!N!9dCA0dAh9ZF'&MDdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0 A588!N!Lc*@&AXb9K9`!!!"B!!!!1!*!)0[5!0`!!!-)!!I%#!!3!!2rrrri!N!J 8QJ!!!!)!N!30PJ#3'J(BSJ#3(`3!N!9dCA0dAh9cCA*ND@0d4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K83eG*43#3#,-PB9Hc*@&A!!!!&J!!!!i!N!JDSQL'!!!!`J! "m3-!"!!!rrrrrJ#3#"5E!!!!!J#3"!f@!*!D!GLL!*!I"!#3"A4PFh4IGA0PFQa TFh4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y4!2CE@43U3!!!!B!!! !%!#3#-!iFFi!!!$#!!(a"!!%!!$rrrrq!*!)&*`!!!!#!*!%$jB!N"S"f+)!N"m %!*!&G'9cG&peFf9bFh4bD@jR4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43# 3#,83$f@eUl)f!!!!B!!!!(X!N!Lfl@22!!!!`J!"m38!"!!!rrrrrJ#3#"5G!!! !!J#3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IGfPZFQ9R4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K83eG*43#3#,8QT3+e,4kr!!!!4!!!!%F!N!JZ8Z,F!!!!`J!"m3B!"!! !rrrrrJ#3#"5H!!!!!J#3"!f@!*!D!GLL!*!I"!#3"A4PFh4IGfPZFfpeEQ4'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH@E,mAPN!!!!8!!!!$!#3#'Q 1hVi!!!$#!!(a"`!%!!$rrrrq!*!)&*m!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9 cG&piE@aXD@*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y5DP!V8QT3) !!!!@!!!!$3#3#+phYZm!!!$#!!(a#!!%!!$rrrrq!*!)&+!!!!!#!*!%$*B!N"S "f+)!N"m%!*!&G'9cG&pkDA"QD@aP4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG *43#3#,,mAPUfZU2V!!!!UJ!!!@-!N!Mkq[1F!!!!`J!"m3N!"!!!rrrrrJ#3#"5 K!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4IHQaTBNC@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!LeJ#QHYB!TRJ!!!%!!!!"!!*!)42hE@!!$L[8!!iVi!!3 !!2rrrri!N!JC)J!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAf&dCAKTG%C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lebdp'YFY24J!!!*J!!!*T!*!)RZ) m4J!$L[8!!iVk!!3!!2rrrri!N!JC)3!!!!)!N!31PJ#3'J(BSJ#3(`3!N!9dCA0 dAf&eCf&cFfPRENC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeX+Q(YHf 'e!!!!6`!!!)&!*!)N!!NRTN!!iVe!!1,!!!%!!$rrrrq!*!)'5!!!!!#!*!%#*B !N"S"f+)!N"m%!*!&G'9cG&pMCfP'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP &!*!)YFLYZVA)VES!!!&S!!!(c3#3#0,*HAJ!!iVe!!1,!J!%!!$rrrrq!*!)'4m !!!!#!*!%#TB!N"S"f+)!N"m%!*!&G'9cG&pME'&cFdC@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!LeT4ffYVUMk`!!!$J!!!"!!*!)mi3@aJ!$L[8!!iX%!!3 !!2rrrri!N!JC(J!!!!)!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAf0[EA"TE'9'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YFLYZVF)p(m!!!&D!!!%'`#3#!8 ch#m!!iVe!!1,"J!%!!$rrrrq!*!)'4d!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9 cG&pMEfpVD@9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YFY24VA,6dB !!!!k!!!!-3#3#"#Y'X!!!iVe!!1,#`!%!!$rrrrq!*!)'4`!!!!#!*!%$*B!N"S "f+)!N"m%!*!&G'9cG&pNEh0`BA4S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG *43#3#,AE0A'efc9a!!!!%J!!!!S!N!Lk9VTT!!1+p3!$La!!"!!!rrrrrJ#3#"N E!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4ICQPXC8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!LeJRr!YB*r`!!!!"3!!!!-!*!)CN!bc`!$L[8!!iX5!!3 !!2rrrri!N!JC'J!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAfC[FQeKG%C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeJRr!YB+AA3!!!"!!!!!)!*!)qm@ FU3!$L[8!!iX6!!3!!2rrrri!N!JC'3!!!!)!N!3(PJ#3'J(BSJ#3(`3!N!9dCA0 dAfGM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,A)VEUeb+fk!!!!&!! !!!`!N!KC!Hja!!1+p3!$La8!"!!!rrrrrJ#3#"NB!!!!!J#3"!Z@!*!D!GLL!*! I"!#3"A4PFh4ICf9dEh"d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,A E0A'efc9a!!!!bJ!!!a`!N!L'lbLe!!1+p3!$LaB!"!!!rrrrrJ#3#"NA!!!!!J# 3"!b@!*!D!GLL!*!I"!#3"A4PFh4ICf9dG'9iG%C@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!LeJRr"YB*r`3!!!")!!!!+!*!)BJDfj`!$L[8!!iXE!!3!!2r rrri!N!JC&J!!!!)!N!3*PJ#3'J(BSJ#3(`3!N!9dCA0dAfKKFfK'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)YFLYZVA)VES!!!!B!!!!$`#3#*H02NB!!iV e!!1,(J!%!!$rrrrq!*!)'48!!!!#!*!%$TB!N"S"f+)!N"m%!*!&G'9cG&pXBA* RC@CTE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YA'r5lD1HXB!!!# F!!!"'`#3#"Mc+38!!iVe!!1,(`!%!!$rrrrq!*!)'43!!!!#!*!%%TB!N"S"f+) !N"m%!*!&G'9cG&pXD@jeH'&eC'P[C'9f4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 83eG*43#3#,@!+Cqebdp'!!!!(!!!!"-!N!MIHYF5!!1+p3!$Lb%!"!!!rrrrrJ# 3#"N6!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4PFh4IE'pZCf9iF%C@3e3!N!F))!! !!3#3#!F!N")"9%9B9%0A588!N!LeK$a"YRDcIJ!!!a!!!"Pp!*!)T23m*`!$L[8 !!iXP!!3!!2rrrri!N!JC%J!!!!)!N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAfeTEQP NEfe'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YB1L0l@$SMF!!!!F!!! !%`#3#!NdYBd!!iVe!!1,+`!%!!$rrrrq!*!)'4%!!!!#!*!%$*B!N"S"f+)!N"m %!*!&G'9cG&p[F'9ZF(4j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,A )VEUfMRV'!!!"kJ!!#+i!N!JK99[h!!1+p3!$Lbi!"!!!rrrrrJ#3#"N3!!!!!J# 3"!Z@!*!D!GLL!*!I"!#3"A4PFh4IF'&bFf9b4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K83eG*43#3#,A-8eHefc9a!!!!6!!!!5J!N!K2iZPG!!1+p3!$Lc%!"!!!rrr rrJ#3#"N2!!!!!J#3"!Q@!*!D!GLL!*!I"!#3"A4PFh4IF'pXE%C@3e3!N!F))!! !!3#3#!F!N")"9%9B9%0A588!N!LeNU[TYC+Vk3!!!$`!!!!c!*!)"0+d$3!$L[8 !!iXc!!3!!2rrrri!N!JC$J!!!!)!N!31PJ#3'J(BSJ#3(`3!N!9dCA0dAh"[FfP iF'&dD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeJk)hYB1L0`!!!%! !!!!q!*!)5JA#XJ!$L[8!!iXe!!3!!2rrrri!N!JC$3!!!!)!N!3)PJ#3'J(BSJ# 3(`3!N!9dCA0dAh"dH8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeJRr "YZ'B2`!!!")!!!!*!*!)E2QP`!!$L[8!!iY"!!3!!2rrrri!N!JC$!!!!!)!N!3 )PJ#3'J(BSJ#3(`3!N!9dCA0dAh0bC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0 A588!N!LeJRr"YSjkaJ!!!,`!!!&d!*!)I8TC'3!$L[8!!iY-!!3!!2rrrri!N!J C#`!!!!)!N!3)PJ#3'J(BSJ#3(`3!N!9dCA0dAh9MENC@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!Lefc9aYGXeF3!!!"3!!!!-!*!)qYN2-!!$L[8!!iY3!!3 !!2rrrri!N!JC#J!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAh9bE'aTBNC@3e3 !N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LeVk9cYSjkaJ!!!3S!!!6p!*!)S1P PCJ!$L[8!!iY4!!3!!2rrrri!N!JC#3!!!!)!N!30PJ#3'J(BSJ#3(`3!N!9dCA0 dAh9bE("KFR0P4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,AYKY5fVfV '!!!!SJ!!!AJ!N!JZ&DY`!!243J!%(*m!"!!!rrrrrJ#3#"Qj!!!!!J#3"!f@!*! D!GLL!*!I"!#3"A4PFh4I8h4bD@jR58p'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 $9dP&!*!)YJNp-lE"b*`!!!"`!!!!`J#3#!F-D[N!"$Q`!!3jZ`!%!!$rrrrq!*! )'IF!!!!#!*!%$TB!N"S"f+)!N"m%!*!&G'9cG&pMCQG`BA*cCA*'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)YJNp-lB*26-!!!!8!!!!$!#3#"0TCHm!"$Q `!!3jfJ!%!!$rrrrq!*!)'IB!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pTEA" [FR4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YJNp-lB*26-!!!"#!!! !43#3#1k#e"F!"$Q`!!3ji3!%!!$rrrrq!*!)'I8!!!!#!*!%$TB!N"S"f+)!N"m %!*!&G'9cG&pYD@ePG'p[E(0'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )YJNp-lBL89J!!!$Z!!!$Y`#3#,*#[VS!"$Q`!!3jq`!%!!$rrrrq!*!)'I3!!!! #!*!%#*B!N"S"f+)!N"m%!*!&G'9cG&pcBAK'9N08!*!(##!!!!%!N!J(!*!5!94 &@&4$9dP&!*!)YJNp-lB*26-!!!!5!!!!#J#3#$26#K)!"$Q`!!3k&3!%!!$rrrr q!*!)'I-!!!!#!*!%#CB!N"S"f+)!N"m%!*!&G'9cG&phBACP4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K83eG*43#3#,B8VqQf&+rT!!!!G!!!!0)!N!J5H-1(!!5++`! %LMi!"!!!rrrrrJ#3#"S*!!!!!J#3"!f@!*!D!GLL!*!I"!#3"A4PFh4IBfp`H9p bC@G'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YT1P)ED6T5%!!!!@!!! !$3#3#'-bpUJ!!M-4!!)c%J!%!!$rrrrq!*!)'cF!!!!#!*!%$*B!N"S"f+)!N"m %!*!&G'9cG&pIAf&XE&pI4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,D 1HX@fMRV&!!!!I!!!!48!N!M'XPmP!!)c%3!#-aJ!"!!!rrrrrJ#3#"Xf!!!!!J# 3"!b@!*!D!GLL!*!I"!#3"A4PFh4IBQ&cG'P[ENC@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!LfGV0pYRDcI3!!!"3!!!!-!*!)[`BJm!!#-a%!!M-E!!3!!2r rrri!N!JE03!!!!)!N!3,PJ#3'J(BSJ#3(`3!N!9dCA0dAf*TFf9MG%C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9%0A588!N!LfMRV&YSjka3!!!"3!!!!,!*!)PiSdaJ! #-a%!!M-G!!3!!2rrrri!N!JE0!!!!!)!N!3+PJ#3'J(BSJ#3(`3!N!9dCA0dAf* eCQP[4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,DJd4UfS0%D!!!!%J! !!!S!N!J1L`MZ!!)c%3!#-am!"!!!rrrrrJ#3#"Xc!!!!!J#3"!Q@!*!D!GLL!*! I"!#3"A4PFh4IBf&`D8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LfMRV &YSjka3!!!(i!!!&j!*!)X3rDj!!#-a%!!M-M!!3!!2rrrri!N!JE-J!!!!)!N!3 4PJ#3'J(BSJ#3(`3!N!9dCA0dAf0SBA*YBA"MEf4PBdC@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!LfMRV&YSjka3!!#pS!!)UH!*!)lmG"q3!#-a%!!M-R!!3 !!2rrrri!N!JE-3!!!!)!N!30PJ#3'J(BSJ#3(`3!N!9dCA0dAf0[CA*MD@pZ4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,D1HX@fMRV&!!!"6!!!"F%!N!K 1Y*cJ!!)c%3!#-bJ!"!!!rrrrrJ#3#"X`!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4 PFh4IBfpYF'&bC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LfVfV'YYq m&3!!"&J!!"[i!*!)G)@J$3!#-a%!!M-`!!3!!2rrrri!N!JE,`!!!!)!N!3-PJ# 3'J(BSJ#3(`3!N!9dCA0dAf4TCQCXD@*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 $9dP&!*!)YUpUalEI["8!!!B)!!!D,J#3#%NY5")!!M-4!!)c-J!%!!$rrrrq!*! )'bi!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pNEf0dCA0d4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K83eG*43#3#,D1HX@fMRV&!!!!&J!!!!d!N!JFhDX@!!)c%3! #-c3!"!!!rrrrrJ#3#"XY!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4PFh4IC(9YBQ4 LE8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LfMRV'YSjkaJ!!!"J!!!! 2!*!)KcU2RJ!#-a%!!M-m!!3!!2rrrri!N!JE,!!!!!)!N!31PJ#3'J(BSJ#3(`3 !N!9dCA0dAfCeEQ0KG(4bFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L f)P&BYL*4@!!!!$S!!!!h!*!)4q-UjJ!#-a%!!M00!!3!!2rrrri!N!JE+`!!!!) !N!3-PJ#3'J(BSJ#3(`3!N!9dCA0dAfeKD@aLEhK'9N08!*!(##!!!!%!N!J(!*! 5!94&@&4$9dP&!*!)YSjkaVD1HXB!!!'1!!!EN3#3#"XRrQd!!M-4!!)cD3!%!!$ rrrrq!*!)'bS!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pbD@0SBfe`4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,DBX[Lfhl`9!!!"%!!!!F%!N!LMSR2 )!!)c%3!#-f`!"!!!rrrrrJ#3#"XT!!!!!J#3"!U@!*!D!GLL!*!I"!#3"A4PFh4 IFf0[F'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YSjkaVD1HXB!!!! 8!!!!$!#3#))ppMB!!M-4!!)cH!!%!!$rrrrq!*!)'bJ!!!!#!*!%#jB!N"S"f+) !N"m%!*!&G'9cG&pcG@jNFRP'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )YU$4'lDJd4X!!!!@!!!!$J#3#(Em*&-!!M-4!!)cH3!%!!$rrrrq!*!)'bF!!!! #!*!%$CB!N"S"f+)!N"m%!*!&G'9cG&pcH@edB@*XC8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!LfMRV'YSjkaJ!!!%B!!!"(!*!)1LNHK`!#-a%!!M0l!!3 !!2rrrri!N!JE*J!!!!)!N!39PJ#3'J(BSJ#3(`3!N!9dCA0dAh4SFQ9KC'9NG'9 YF'CTE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YU$4'lEKQ$m!!!! @!!!!$3#3#'!XC"F!!M-4!!)cLJ!%!!$rrrrq!*!)'b8!!!!#!*!%$*B!N"S"f+) !N"m%!*!&G'9cG&phC@&VFQ9Q4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43# 3#,D1HXDfMRV(!!!!@!!!!(m!N!LUj@AA!!)c%3!#-ii!"!!!rrrrrJ#3#"XN!!! !!J#3"!k@!*!D!GLL!*!I"!#3"A4PFh4IH(*PB@4XD@jP4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,E"b*bf`FLF!!!!'!!!!"!!N!Ld14(3!!FSG`!(+(N !"!!!rrrrrJ#3#"`X!!!!!J#3"!q@!*!D!GLL!*!I"!#3"A4PFh4IAepQGA4eFQ9 IAdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lf`FLFYX()R!!!!"B!!!! 0!*!)ii0eX!!(+(F!"bL`!!3!!2rrrri!N!JF+`!!!!)!N!3-PJ#3'J(BSJ#3(`3 !N!9dCA0dAfPZFh"PBh4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YXA 5",F)raS!!!!m!!!!P`#3#$,P3SF!"hLa!!GihJ!%!!$rrrrq!*!)(()!!!!#!*! %#jB!N"S"f+)!N"m%!*!&G'9cG&pQGA4eFQ9'9N08!*!(##!!!!%!N!J(!*!5!94 &@&4$9dP&!*!)YXA5",E&dJ3!!!!m!!!!I!#3#%M-5JB!"hLa!!Gij!!%!!$rrrr q!*!)((%!!!!#!*!%#jB!N"S"f+)!N"m%!*!&G'9cG&pRE'pLB@a'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)YYel5EEGHdN!!!!@!!!!$3#3#$MBI4-!#$e h!!JpN3!%!!$rrrrq!*!)()%!!!!#!*!%$*B!N"S"f+)!N"m%!*!&G'9cG&pMEfe `E'9i4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,EI["@fhl`9!!!!&J! !!!d!N!K3,GGL!!JpG`!)2D)!"!!!rrrrrJ#3#"b!!!!!!J#3"!b@!*!D!GLL!*! I"!#3"A4PFh4ICQjYBA4MD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L fhl`9YYqm&3!!!"J!!!!2!*!)P5PhU3!)2AF!#$hV!!3!!2rrrri!N!JFI`!!!!) !N!31PJ#3'J(BSJ#3(`3!N!9dCA0dAh4bB@0PBQ&MDdC@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!Lh#24qY`MdIJ!!!$J!!!!`!*!)TB8'k`!)SR3!#+*j!!3 !!2rrrri!N!JFY3!!!!)!N!30PJ#3'J(BSJ#3(`3!N!9dCA0dAf&cH@jMD'&d4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,F)p(qh#24r!!!!C!!!!(8!N!M K5q)'!!LLG!!)SUm!"!!!rrrrrJ#3#"bd!!!!!J#3"!b@!*!D!GLL!*!I"!#3"A4 PFh4ID(4dF'aTBNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lh#24rY`M dI`!!!"3!!!!-!*!)MQIF5!!)SR3!#++f!!3!!2rrrri!N!JFX`!!!!)!N!3,PJ# 3'J(BSJ#3(`3!N!9dCA0dAfa[Bf&XC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&iaYL*48!!!#$`!!"U0!*!)0fNmD`!!!-%!!I"R!!-!!2rrrri!N!J 8SJ!!!!)!N!3+PJ#3'J(ASJ#3(`3!N!9`HA0dEfjP,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mAM'fiCJm!!!9kJ!!Gr3!N!KUij%S!!!!`3!"m'J !!`!!rrrrrJ#3#"5M!!!!!J#3"!Z@!*!D!GHL!*!I"!#3"A*PAh4PFh4c,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM'f)P&3!!!)S!!!)hN!N!K #5C+c!!!!`3!"m'N!!`!!rrrrrJ#3#"5N!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A* PCf9iAh4PFh4c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM+ h#2mB!!!1JJ!!+i8!N!LpAYU@!!!!`3!"m'S!!`!!rrrrrJ#3#"5P!!!!!J#3"!Z @!*!D!GHL!*!I"!#3"A*PCh*dCA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,,mAM+br&ib!!!"&J!!!JB!N!MaV,QN!!!!`3!"m'X!!`!!rrrrrJ# 3#"5Q!!!!!J#3"!Q@!*!D!GHL!*!I"!#3"A*PF'9bCLj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&ibYUpU[`!!"8!!!!hY!*!)mcEaP!!!!-%!!I" X!!-!!2rrrri!N!J8T`!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9cEh*dF'9bCLj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ibYSjk[`!!!A)!!!+U!*! )*K1M%!!!!-%!!I"Y!!-!!2rrrri!N!J8U!!!!!)!N!3+PJ#3'J(ASJ#3(`3!N!9 dCA0dAf&X,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM+fMRU r!!!&,!!!'J%!N!Jr2bGa!!!!`3!"m'i!!`!!rrrrrJ#3#"5T!!!!!J#3"!f@!*! D!GHL!*!I"!#3"A4PFh4IBA*bBANZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)X[aH-lD1HVm!!!8D!!!CZ`#3#'ffH3N!!!$"!!(`E`!$!!$rrrrq!*! )&+S!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&pKG@4TEfp`,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM1fNk8H!!!2Q!!!4J#3#6phU"!!!!$ "!!(`F!!$!!$rrrrq!*!)&+X!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG&pL-5j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&icYSjk[`!!#KJ!!#V E!*!)fm(aDJ!!!-%!!I"a!!-!!2rrrri!N!J8V!!!!!)!N!3+PJ#3'J(ASJ#3(`3 !N!9dCA0dAf)b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM1 fMRUr!!!%9J!!#[-!N!JT3eIk!!!!`3!"m()!!`!!rrrrrJ#3#"5Y!!!!!J#3""# @!*!D!GHL!*!I"!#3"A4PFh4IBQPZBA0MD@NZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)Y%0MYlD1HVm!!!'H!!!$b!!!!(!!!!'D#2@&+!!!!-%!!I" c!!-!!2rrrri!N!J8VJ!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAf*TEQKPH#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&icYYqm&!!!!X)!!!E 4!*!)TVK#i3!!!-%!!I"d!!-!!2rrrri!N!J8V`!!!!)!N!30PJ#3'J(ASJ#3(`3 !N!9dCA0dAf*cC'4L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, mAM5br&id!!!!GJ!!!-m!N!JFi&(Z!!!!`3!"m(8!!`!!rrrrrJ#3#"5`!!!!!J# 3"!q@!*!D!GHL!*!I"!#3"A4PFh4IBR9TE(4TELj`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr&idYSjk[`!!!H)!!!0B!*!)UXb,p3!!!-%!!I"f!!- !!2rrrri!N!J8X3!!!!)!N!3+PJ#3'J(ASJ#3(`3!N!9dCA0dAf0N,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM5fMRV!!!!'"J!!$e8!N!JQNjG a!!!!`3!"m(F!!`!!rrrrrJ#3#"5b!!!!!J#3"!U@!*!D!GHL!*!I"!#3"A4PFh4 IBf`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH0,D1HX!!!!% f!!!$+!#3#%"ah2F!!!$"!!(`H!!$!!$rrrrq!*!)&,-!!!!#!*!%$CB!N"S"ek) !N"m%!*!&G'9cG&pME@&dD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!LdkcLRYL*483!!!e!!!!dG!*!)K"C&X!!!!-%!!I"j!!-!!2rrrri!N!J8Y!! !!!)!N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAf0[ER4KD@jc,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,-PB9+fNk8I!!!!0!!!!%!!N!Mk!REI!!!!`3! "m(S!!`!!rrrrrJ#3#"5e!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4IBh"TBfY XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&idYSjk`!!!!+) !!!$H!*!)JI22M`!!!-%!!I"l!!-!!2rrrri!N!J8YJ!!!!)!N!30PJ#3'J(ASJ# 3(`3!N!9dCA0dAf0bHA"d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mAM5fhl`8!!!"PJ!!!hm!N!JB-CG'!!!!`3!"m(`!!`!!rrrrrJ#3#"5h!!! !!J#3"!Z@!*!D!GHL!*!I"!#3"A4PFh4IC'*Y,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mAM5faG)$!!!"CJ!!!Z3!N!K6e-d4!!!!`3!"m(d!!`! !rrrrrJ#3#"5i!!!!!J#3"!U@!*!D!GHL!*!I"!#3"A4PFh4IC'`ZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH0ED1HX!!!!1@!!!)8J#3#+1!LN3 !!!$"!!(`IJ!$!!$rrrrq!*!)&,N!!!!#!*!%$CB!N"S"ek)!N"m%!*!&G'9cG&p PFR*ZEbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ieYU$4&`! !"$J!!!UJ!*!)JPUDc`!!!-%!!I"r!!-!!2rrrri!N!J8ZJ!!!!)!N!35PJ#3'J( ASJ#3(`3!N!9dCA0dAf9iBf9`G'P[ER-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y4!2BlF)p(X!!!BS!!!9+J#3#-)Q+[%!!!$"!!(`J!!$!!$rrrr q!*!)&,X!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&pPH(4MB@aX,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAM@h#24l!!!"k!!!"$J!N!L+G*2 f!!!!`3!"m)%!!`!!rrrrrJ#3#"5m!!!!!J#3"!f@!*!D!GHL!*!I"!#3"A4PFh4 ICQ0ZG'`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y6N4alF)p(X !!!-5!!!'Q!#3#$V`AeJ!!!$"!!(`JJ!$!!$rrrrq!*!)&,d!!!!#!*!%$CB!N"S "ek)!N"m%!*!&G'9cG&pQEh*V-5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!LejqMSYYqm&!!!!Bi!!!06!*!)jeI#L`!!!-%!!I#$!!-!!2rrrri!N!J 8[J!!!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0dAfGNBQdZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)X[aH0ED1HX%!!!NB!!!Cm!#3#((G)Z`!!!$"!!( `K!!$!!$rrrrq!*!)&,m!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG&pRE#j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ieYYel53!!%e3!!$ZT!*! )&[6d3`!!!-%!!I#&!!-!!2rrrri!N!J8`!!!!!)!N!32PJ#3'J(ASJ#3(`3!N!9 dCA0dAfGbB@eYBA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a H0VD1HX%!!!%5!!!#6`#3#"9`#PX!!!$"!!(`KJ!$!!$rrrrq!*!)&-%!!!!#!*! %#jB!N"S"ek)!N"m%!*!&G'9cG&pRFR!ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Xb9K8lD1HX%!!!)@!!!%d!#3#"LeMNm!!!$"!!(`K`!$!!$rrrr q!*!)&-)!!!!#!*!%$*B!N"S"ek)!N"m%!*!&G'9cG&pRHQP`,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMDfMRV#!!!'5J!!&F8!N!Kjq*lm!!! !`3!"m)J!!`!!rrrrrJ#3#"6$!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4ID@e KCf9[F#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ifYUpU`J! !"JJ!!""a!*!)K@8C6!!!!-%!!I#*!!-!!2rrrri!N!J8a!!!!!)!N!32PJ#3'J( ASJ#3(`3!N!9dCA0dAfPYCfCTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)X[aH0VD1HX)!!!SQ!!!LC3#3#22Qc&N!!!$"!!(`LJ!$!!$rrrrq!*! )&-8!!!!#!*!%$*B!N"S"ek)!N"m%!*!&G'9cG&pXEfjR,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mAMDh#24m!!!'r!!!&i`!N!KUC$Nr!!!!`3! "m)X!!`!!rrrrrJ#3#"6'!!!!!J#3"!b@!*!D!GHL!*!I"!#3"A4PFh4IE@&dD#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ifYRDcH`!!!@`!!!- #!*!)9B#'fJ!!!-%!!I#-!!-!!2rrrri!N!J8a`!!!!)!N!3,PJ#3'J(ASJ#3(`3 !N!9dCA0dAfeN05j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i bYL*48!!!"NB!!"'d!*!)c68UcJ!!!-%!!I#0!!-!!2rrrri!N!J8b!!!!!)!N!3 5PJ#3'J(ASJ#3(`3!N!9dCA0dAdeTE@9AFQPdCA)ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)Y4!2C,D[DX-!!!4f!!!0&!#3#*V8'%8!!!$"!!(`MJ! $!!$rrrrq!*!)&-N!!!!#!*!%$*B!N"S"ek)!N"m%!*!&G'9cG&pYE@&`,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMHfiCJp!!!$HJ!!#)i!N!L CR34f!!!!`3!"m)m!!`!!rrrrrJ#3#"6+!!!!!J#3"!Z@!*!D!GHL!*!I"!#3"A4 PFh4IEQ9h,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMHfMRV #!!!"I!!!!dS!N!K393[N!!!!`3!"m*!!!!-!!2rrrri!N!J8b`!!!!)!N!3,PJ# 3'J(ASJ#3(`3!N!9dCA0dAfjTFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&ihYUpU``!!!G)!!!DL!*!)1Za@l!!!!-%!!I#4!!-!!2rrrri!N!J 8c!!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAfjdF'&dD#j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ihYU$4'3!!!M!!!!Hb!*!)rRP%%J!!!-% !!I#5!!-!!2rrrri!N!J8c3!!!!)!N!32PJ#3'J(ASJ#3(`3!N!9dCA0dAfp`Bfp NCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH0lBL893!!!' !!!!#K`#3#)53!#Ee!!!!`3!"m*-!!`!!rrrrrJ#3#"61!!!!!J#3""+@!*!D!GH L!*!I"!#3"A4PFh4IEh"PFQ&dD@pZFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&ihYRDcI!!!!U)!!!Ed!*!)SMSmL`!!!-%!!I#8!!-!!2rrrri !N!J8c`!!!!)!N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAfp`CA*KG'pb,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,-PB91fNk8J!!!!-!!!!$i!N!L"XJR 9!!!!`3!"m*8!!`!!rrrrrJ#3#"63!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4 IF'PMDfaP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMHfVfV $!!!'j!!!'@i!N!K%kAM5!!!!`3!"m*B!!`!!rrrrrJ#3#"64!!!!!J#3"!Z@!*! D!GHL!*!I"!#3"A4PFh4IF'YR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,-G@L'fS0%C!!!$N!!!!!JU!*!)5hAEY`!!!-%!!I#A!!-!!2rrrri!N!J 8dJ!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAh"[F'9Z-Lj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&iiYRDcI!!!"!`!!!q$!*!)Xk&F4!!!!-% !!I#B!!-!!2rrrri!N!J8d`!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9dCA0dAh"[Gbj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&iiYUpUa!!!!QB!!!C R!*!)BjNh2`!!!-%!!I#C!!-!!2rrrri!N!J8e!!!!!)!N!3,PJ#3'J(ASJ#3(`3 !N!9dCA0dAh"hC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%!p NYRDcI!!!"M!!!"@Y!*!)pG0AQ3!!!-%!!I#D!!-!!2rrrri!N!J8e3!!!!)!N!3 2PJ#3'J(ASJ#3(`3!N!9dCA0dAh"jCAK`BA3ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aH1,EKQ$d!!!YD!!!`V3#3#131Q5B!!!$"!!(`Q`!$!!$ rrrrq!*!)&0B!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG&pbC5j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&iiYSjk``!!"1J!!!k#!*!)S`+*&J! !!-%!!I#F!!-!!2rrrri!N!J8e`!!!!)!N!30PJ#3'J(ASJ#3(`3!N!9dCA0dAh* PCf9i,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMLfMRV$!!! %hJ!!$NB!N!MUKqdh!!!!`3!"m*d!!`!!rrrrrJ#3#"6B!!!!!J#3"!k@!*!D!GH L!*!I"!#3"A4PFh4IFQCM1$)b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mAMQfMRV$!!!#*!!!"GJ!N!JRh[e4!!!!`3!"m*i!!`!!rrrrrJ#3#"6 C!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IFQGLD@eR,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mAMQfGV0p!!!!iJ!!!DS!N!K(&6UQ!!!!`3! "m*m!!`!!rrrrrJ#3#"6D!!!!!J#3"!f@!*!D!GHL!*!I"!#3"A4PFh4IFQpdEh) ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH1ED1HX-!!!)@!!! &a`#3#)1RmNm!!!$"!!(`S!!$!!$rrrrq!*!)&0X!!!!#!*!%$TB!N"S"ek)!N"m %!*!&G'9cG&pcC@aPBh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )Xb9K9,-PB93!!!('!!!#j3#3##)()%F!!!$"!!(`S3!$!!$rrrrq!*!)&0`!!!! #!*!%#jB!N"S"ek)!N"m%!*!&G'9cG&pcD'%ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aH1ED1HX-!!!)f!!!&RJ#3#-lrBkN!!!$"!!(`SJ!$!!$ rrrrq!*!)&0d!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9cG&pcD@GZB@`ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH1EEKQ$i!!!95!!!3dJ#3##m 59kS!!!$"!!(`S`!$!!$rrrrq!*!)&0i!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9 cG&pcEf0VCA3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH1VE KQ$i!!!GJ!!!@13!!!(`!!!'DD'`8FJ!!!-%!!I#N!!-!!2rrrri!N!J8h`!!!!) !N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAh0dFQCdD@eP,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,1@PV5fMRV$!!!"L!!!!kX!N!Jq0EFp!!!!`3!"m+8 !!`!!rrrrrJ#3#"6J!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IFh4bD@jR,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAMUfMRV$!!!&(!!!$NS !N!K22e*m!!!!`3!"m+B!!`!!rrrrrJ#3#"6K!!!!!J#3"!f@!*!D!GHL!*!I"!# 3"A4PFh4IFh4bEh!ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a H1VCfXhd!!!8U!!!3m3#3#!dSTT!!!!!!`3!"m+F!!`!!rrrrrJ#3#"6L!!!!!J# 3"!k@!*!D!GHL!*!I"!#3"A4PFh4IFh4bG@0d,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mAMUh#24p!!!",J!!!NB!N!KY$LD*!!!!`3!"m+J!!`! !rrrrrJ#3#"6M!!!!!J#3""1@!*!D!GHL!*!I"!#3"A4PFh4IFh9ZBA9ND@pNCAB ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aH1VEKQ$i!!!88!!! -A!#3#(1&Sq)!!!$"!!(`U3!$!!$rrrrq!*!)&13!!!!#!*!%$jB!N"S"ek)!N"m %!*!&G'9cG&pcGA"`Eh*d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mAMUfMRV%!!!$0J!!#b3!N!K8'&TY!!!!`3!"m+S!!`!!rrrrrJ#3#"6P!!! !!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IG'KbC@&N,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mAMZfGV0p!!!"CJ!!!k!!N!K$a,Ba!!!!`3!"m+X !!`!!rrrrrJ#3#"6Q!!!!!J#3"!b@!*!D!GHL!*!I"!#3"A4PFh4IG'PYC5j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&ilYSjka!!!!+J!!!&L!*! )a*j-J!!!!-%!!I#X!!-!!2rrrri!N!J8j`!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9 dCA0dAh4TE@PZCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&i lYSjka!!!!)3!!!$@!*!)#1dT%J!!!-%!!I#Y!!-!!2rrrri!N!J8k!!!!!)!N!3 3PJ#3'J(ASJ#3(`3!N!9dCA0dAh4[Df9ZDATP,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mAMZh#2mC!!!,"!!!,3)!N!K)j![+!!!!`3!"m+i!!`! !rrrrrJ#3#"6T!!!!!J#3"!f@!*!D!GHL!*!I"!#3"A4PFh4IG(P`CA-ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YT1P2ED[DX8!!"&U!!",X!#3#0E DZd)!!!$"!!(`V`!$!!$rrrrq!*!)&1S!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9 cG&peEQPMEf4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,83$f5 fMRV%!!!$e!!!$aJ!N!KL"eTc!!!!`3!"m,!!!`!!rrrrrJ#3#"6V!!!!!J#3""1 @!*!D!GHL!*!I"!#3"A4PFh4IG@jTBfpNC@4KG'%ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aH1lCfXhd!!!+L!!!*ZJ#3##93hRm!!!$"!!(`X3! $!!$rrrrq!*!)&1`!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9cG&peER"KBfXZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Xb9K9EF)raS!!!*d!!!'B!# 3#0hRkCm!!!$"!!(`XJ!$!!$rrrrq!*!)&1d!!!!#!*!%%*B!N"S"ek)!N"m%!*! &G'9cG&peFf9bC'PMG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L c*@&9YSjka!!!"-!!!!m9!*!),N6&j!!!!-%!!I#c!!-!!2rrrri!N!J8lJ!!!!) !N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAh9cCA*XDA0d,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,83$f5fVfV&!!!"m!!!",m!N!K*62U6!!!!`3!"m,3 !!`!!rrrrrJ#3#"6[!!!!!J#3""+@!*!D!GHL!*!I"!#3"A4PFh4IGA0PFR0dFQP ZCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le%!pNYSjka!!!"ZS !!"9h!*!)M0`X!J!!!-%!!I#e!!-!!2rrrri!N!J8m!!!!!)!N!31PJ#3'J(ASJ# 3(`3!N!9dCA0dAhGTER*PCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Le*U8#YL*49`!!!*`!!!$+!*!)p*-DT3!!!-%!!I#f!!-!!2rrrri!N!J8m3! !!!)!N!33PJ#3'J(ASJ#3(`3!N!9dCA0dAhGTER0[G@jN,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mAMZfMRV%!!!"3J!!!K3!N!KG+p+(!!!!`3! "m,F!!`!!rrrrrJ#3#"6b!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IH'eXE'P L,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8QT3+h#24q!!!%5J! !#NN!N!JDC[Gi!!!!`3!"m,J!!`!!rrrrrJ#3#"6c!!!!!J#3"!q@!*!D!GHL!*! I"!#3"A4PFh4IHQP`CQPXC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbr&imYVUMk`!!#%S!!"2)!*!)jf09fJ!!!-%!!I#j!!-!!2rrrri!N!J8p!! !!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0dAhTXD@)ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aH2,,mAM`!!!"d!!!!L!#3#&jTKGd!!!$"!!(`ZJ! $!!$rrrrq!*!)&28!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG'&XE#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&j"X[aH33!!Y(`!!4UU!*!)[Lj @U3!!!-%!!I#l!!-!!2rrrri!N!J8pJ!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9dCA0 dD@eR,R9eC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&j,X[aH5`! !Y-3!!4UZ!*!)&AAI"!!!!-%!!I#m!!-!!2rrrri!N!J8p`!!!!)!N!3-PJ#3'J( ASJ#3(`3!N!9dCA0dD@eRFLjeG@9'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0 S!*!)X[aH6V,mANi!!+AF!!$UK3#3##SL)QX!!!$"!!(`[3!$!!$rrrrq!*!)&2J !!!!#!*!%#jB!N"S"ek)!N"m%!*!&G'9cG(*RBLjeG@9'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aH6VF)p(i!!!3!!!!*E3#3#%#`44d!!!$"!!(`[J! $!!$rrrrq!*!)&2N!!!!#!*!%%CB!N"S"ek)!N"m%!*!&G'pVC@jTHQ9IG'9cG(- ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YB*r`,BL89!!!!p1!!! P6J#3#0r8!RB!!iTl!!1+JJ!$!!$rrrrq!*!)'3J!!!!#!*!%"TB!N"S"ek)!N"m %!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@43U1fVfV !!!!)9J!!)E!!N!K`V08,!!1+H`!$LSF!!`!!rrrrrJ#3#"N(!!!!!J#3"!q@!*! D!GHL!*!I"!#3"A0dFQPZCepdCA0dFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9%0A588!N!LeK$`lYB3m1`!!!PJ!!!99!*!)6EDFR3!$LRX!!iU)!!-!!2rrrri !N!JC"J!!!!)!N!3)PJ#3'J(ASJ#3(`3!N!9dCA0d,RKYE%C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!LeJ#QEYSjk[`!!!3`!!!)q!*!)PKa9q3!$LRX!!iU ,!!-!!2rrrri!N!JC"3!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAf&dCAKTG#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lebdp$YL*483!!!TB!!!i @!*!)Mi@9V!!$LRX!!iU0!!-!!2rrrri!N!JC"!!!!!)!N!34PJ#3'J(ASJ#3(`3 !N!9dCA0dAf&eCf&cFfPRELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!LeX+Q(YSjk`!!!#!`!!"Np!*!)L+k"X`!$LRX!!iU9!!-!!2rrrri!N!JC!`! !!!)!N!3,PJ#3'J(ASJ#3(`3!N!9dCA0dAf0RD5j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Leb+fiYT1P(J!!"+i!!!j5!*!)S[jmP`!$LRX!!iUA!!- !!2rrrri!N!JC!J!!!!)!N!30PJ#3'J(ASJ#3(`3!N!9dCA0dAf0XBA0c,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@P(EDfZU2U!!!"2J!!!iX!N!J 0V!U`!!1+H`!$LTN!!`!!rrrrrJ#3#"N"!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4 PFh4IBfpYF'PXC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+f iY`MdH`!!!M3!!!9C!*!)+X6cJJ!$LRX!!iUE!!-!!2rrrri!N!JC!*!%!J#3"!k @!*!D!GHL!*!I"!#3"A4PFh4IBfp[DfPP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,A,6d1fVfV"!!!"aJ!!"I%!N!JFK*b9!!1+H`!$LU!!!`!!rrr rrJ#3#"Mr!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4IC'pcF'&dD#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lefc9`YSjk`3!!!63!!!1N!*!)&Ih Dh!!$LRX!!iUP!!-!!2rrrri!N!JBrJ!!!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0 dAfCTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB*r`,F*$+) !!!F+!!!M[!#3#*aA'R)!!iTl!!1+T`!$!!$rrrrq!*!)'2d!!!!#!*!%$TB!N"S "ek)!N"m%!*!&G'9cG&pQEh*YBA3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)YB*r`,D1HX%!!!4d!!!2L!#3#1iJ!PB!!iTl!!1+U!!$!!$rrrrq!*! )'2`!!!!#!*!%#TB!N"S"ek)!N"m%!*!&G'9cG&pRBbj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Leb+fiYSjk`3!!"!S!!!r$!*!)c3YMC3!$LRX!!iU U!!-!!2rrrri!N!JBq`!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAfGPG'p`G#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lefc9`YL*48J!!#-B!!"E m!!!!J!!!!CSV'YXq!!1+H`!$LUX!!`!!rrrrrJ#3#"Mk!!!!!J#3"!q@!*!D!GH L!*!I"!#3"A4PFh4ICf9dG'9iG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!LeJRr!YL*48`!!!4i!!!)4!*!)Mk"BjJ!$LRX!!iU`!!-!!2rrrri!N!J Bq3!!!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0dAfKKFfJZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)YFLYZEF)p(`!!!6S!!!1[`#3##51h(N!!iTl!!1 +X`!$!!$rrrrq!*!)'2J!!!!#!*!%%CB!N"S"ek)!N"m%!*!&G'9cG&pXBA*RC@C TE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YA'r5lB*26%!!!, '!!!(rJ#3##)`4"X!!iTl!!1+Y!!$!!$rrrrq!*!)'2F!!!!#!*!%&CB!N"S"ek) !N"m%!*!&G'9cG&pXD@jeH'&eC'P[C'9f,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,AE0kUf)P&8!!!!4J!!!$d!N!J2"bY8!!1+H`!$LVB!!`!!rrr rrJ#3#"Mf!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4IE'pZCf9iF#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeK$`lYVUMkJ!!$5J!!$e(!*!)1k, -[`!$LRX!!iUk!!-!!2rrrri!N!JBp3!!!!)!N!32PJ#3'J(ASJ#3(`3!N!9dCA0 dAfeTEQPNEfdZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L0lD 1HX)!!!%S!!!#B!#3#1I-M!N!!iTl!!1+`!!$!!$rrrrq!*!)'23!!!!#!*!%$jB !N"S"ek)!N"m%!*!&G'9cG&p[F'9ZF(4j,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,A)VEUfMRV#!!!%jJ!!%p)!N!L,'TZq!!1+H`!$LX-!!`!!rrr rrJ#3#"Mc!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IF'&bFf9b,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A-8eHfMRV#!!!&M!!!%2X!N!KHTp% J!!1+H`!$LXB!!`!!rrrrrJ#3#"Mb!!!!!J#3"!b@!*!D!GHL!*!I"!#3"A4PFh4 IF'pXE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeNU[TYUpU``! !!AB!!!5l!*!)haC*p!!$LRX!!iV)!!-!!2rrrri!N!JBm3!!!!)!N!34PJ#3'J( ASJ#3(`3!N!9dCA0dAh"[FfPiF'&dD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!LeJk)hY`MdI3!!"2i!!!`L!*!)Via"e`!$LRX!!iV+!!-!!2rrrri !N!JBm!!!!!)!N!3,PJ#3'J(ASJ#3(`3!N!9dCA0dAh"dH5j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!LeJRr!YZ'B2J!!$4)!!$Ae!!!!HJ!!!CT15h3 q!!1+H`!$LYB!!`!!rrrrrJ#3#"M[!!!!!J#3"!Z@!*!D!GHL!*!I"!#3"A4PFh4 IFh*P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@#Im#fPErC!!! %*!!!$+8!N!KMEYa)!!1+H`!$LZ)!!`!!rrrrrJ#3#"MZ!!!!!J#3"!Z@!*!D!GH L!*!I"!#3"A4PFh4IG@0Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,AE0A'fS0%D!!!%B!!!$4N!N!K1"MXH!!1+H`!$LZB!!`!!rrrrrJ#3#"MY!!! !!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4IGA*XE'PL,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,@[TA+fMRV%!!!#+!!!#"B!N!M0GM(b!!1+H`!$LZF !!`!!rrrrrJ#3#"MX!!!!!J#3""#@!*!D!GHL!*!I"!#3"A4PFh4IGA*XF'&bFf8 ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YJUYUED[DX!!!!&f!!! $Y!#3#"[A3jJ!!p$)!!3FRJ!$!!$rrrrq!*!)'EJ!!!!#!*!%%*B!N"S"ek)!N"m %!*!&G'9cG&p6G(*TEQG*6bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9'K%EA! !N!Lf*N-6YLC$%`!!!Q3!!!9U!*!)Zp-09J!%15m!"$Np!!-!!2rrrri!N!JCmJ! !!!)!N!3-PJ#3'J(ASJ#3(`3!N!9dCA0d,RKYE#j[GA4'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)YJNp-,E"b*X!!!CB!!!BI!#3#%lUc"%!"$N[!!3j5J! $!!$rrrrq!*!)'I%!!!!#!*!%%CB!N"S"ek)!N"m%!*!&G'9cG&pMCQG`BA*cCA) ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YJNp-EEI["3!!!)L!!! %k3#3#"ha3@%!"$N[!!3jD3!$!!$rrrrq!*!)'I!!!!!#!*!%$TB!N"S"ek)!N"m %!*!&G'9cG&pTEA"[FR3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )YJNp-EB*26%!!!$S!!!"m!#3#*M(PX8!"$N[!!3jF!!$!!$rrrrq!*!)'Hm!!!! #!*!%%CB!N"S"ek)!N"m%!*!&G'9cG&pYD@ePG'p[E(-ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)YT1P2ED6T6d!!!Zd!!"!9!#3#*Q"(6-!"$N[!!3 jLJ!$!!$rrrrq!*!)'Hi!!!!#!*!%#jB!N"S"ek)!N"m%!*!&G'9cG&pcBAJZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YJNp-VCfXhd!!!&!!!!#m`# 3#)!L+Gi!"$N[!!3jT3!$!!$rrrrq!*!)'Hd!!!!#!*!%$*B!N"S"ek)!N"m%!*! &G'9cG&phBACP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B8VqL f&+rT!!!!f!!!!Xd!N!MH24[G!!5*U3!%LF`!!`!!rrrrrJ#3#"S)!!!!!J#3""# @!*!D!GHL!*!I"!#3"A4PFh4IBfp`H9pbC@FZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YT1P(VF)p(S!!!Dk!!!6S`#3#*APqY%!!M*j!!)bIJ!$!!$ rrrrq!*!)'b-!!!!#!*!%$jB!N"S"ek)!N"m%!*!&F'PMDfaPG'9cG'9b,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D6T4kfb`i*!!!&%!!!$hm!N!M ibph4!!)bH3!#-SN!!`!!rrrrrJ#3#"XL!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4 PFh4IAepKE'aIAbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfMRU rYSjk[`!!!#J!!!!J!*!)B+R[e`!#-RN!!M+4!!-!!2rrrri!N!JE)3!!!!)!N!3 2PJ#3'J(ASJ#3(`3!N!9dCA0dAf*KFh4TEfiZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YRDcHlCfXhX!!!-N!!!9R3#3#+%2AP!!!M*j!!)bP!!$!!$ rrrrq!*!)'b!!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9cG&pLDA0PBh3ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YSjk[lD1HVm!!!13!!!!"li!N!M Q+b%@!!)bH3!#-TB!!`!!rrrrrJ#3#"XI!!!!!J#3"!f@!*!D!GHL!*!I"!#3"A4 PFh4IBR9QD@mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YU$4&lF )p(X!!!%'!!!"l3#3#"-F@I!!!M*j!!)bQ!!$!!$rrrrq!*!)'ai!!!!#!*!%$*B !N"S"ek)!N"m%!*!&G'9cG&pMBA"T,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,D1HX#fMRV!!!!"e!!!"0`!N!K0-'50!!)bH3!#-T`!!`!!rrrrrJ# 3#"XG!!!!!J#3""5@!*!D!GHL!*!I"!#3"A4PFh4IBfKKFQeKF'0[C'9M,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D1HX#fMRV!!!!#QJ!!#d`!N!K 1%hbl!!)bH3!#-U!!!`!!rrrrrJ#3#"XF!!!!!J#3""#@!*!D!GHL!*!I"!#3"A4 PFh4IBfpPFQ0TEfiZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YSj k`,D1HX!!!!&Z!!!%"J#3##'qU6F!!M*j!!)bS3!$!!$rrrrq!*!)'aX!!!!#!*! %$jB!N"S"ek)!N"m%!*!&G'9cG&pMEfe`BA*P,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,D[DX#fVfV!!!!!1!!!!$`!N!MAhA3`!!)bH3!#-UN!!`! !rrrrrJ#3#"XD!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4IC'PQCQaTBLj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfVfV!YUpU`3!!!$3!!!!c!*! )l"+eZ!!#-RN!!M+V!!-!!2rrrri!N!JE'3!!!!)!N!32PJ#3'J(ASJ#3(`3!N!9 dCA0dAf4[Bh4PFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YSj k`,D1HX!!!!'!!!!#cJ#3#+JTZ$%!!M*j!!)bV3!$!!$rrrrq!*!)'aJ!!!!#!*! %$jB!N"S"ek)!N"m%!*!&G'9cG&pNG@eLC'*Y,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,D1HX'f`FLE!!!%-!!!$d!!N!KS-PD!!!)bH3!#-V8!!`! !rrrrrJ#3#"XA!!!!!J#3""'@!*!D!GHL!*!I"!#3"A4PFh4ICR9ZBf&dG(*c,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,BL895h#24m!!!"L!!!!f` !N!L'`-Q[!!)bH3!#-XB!!`!!rrrrrJ#3#"X@!!!!!J#3"!q@!*!D!GHL!*!I"!# 3"A4PFh4IE@&TE'*[H#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L fMRV$YSjk``!!"DJ!!"Ja!*!)1hLaX3!#-RN!!M,L!!-!!2rrrri!N!JE&3!!!!) !N!32PJ#3'J(ASJ#3(`3!N!9dCA0dAh*TBfKMEA!ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)YSjka,F)p(d!!!+U!!!(#!#3#,lLE"8!!M*j!!)bm3! $!!$rrrrq!*!)'a-!!!!#!*!%$TB!N"S"ek)!N"m%!*!&G'9cG&pcG@jNFRNZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YU$4'EDkSqX!!!#8!!!!h`# 3#(-mTHX!!M*j!!)bm`!$!!$rrrrq!*!)'a)!!!!#!*!%%*B!N"S"ek)!N"m%!*! &G'9cG&pcH@edB@*XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L fMRV%Y`MdI3!!"!)!!!Nh!*!)!cq23!!#-RN!!M,e!!-!!2rrrri!N!JE%3!!!!) !N!3BPJ#3'J(ASJ#3(`3!N!9dCA0dAh4SFQ9KC'9NG'9YF'CTE'8ZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YU$4'VF)p(i!!!JJ!!!RMJ#3#0q%p"J !!M*j!!)c"!!$!!$rrrrq!*!)'a!!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&p hC@&VFQ9Q,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D1HX@fMRV &!!!"I!!!!mi!N!JaJq9b!!)bH3!#-`J!!`!!rrrrrJ#3#"X2!!!!!J#3""'@!*! D!GHL!*!I"!#3"A4PFh4IH(*PB@4XD@jP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,D1HX@fMRV&!!!"hJ!!""F!N!JAp+$0!!)bH3!#-``!!`!!rrr rrJ#3#"X1!!!!!J#3"!b@!*!D!GHL!*!I"!#3"A4PFh4MEf4PBbj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf`FLEYXA5!`!!!M)!!!G2!*!),p!Pd!! (*pi!"bI[!!-!!2rrrri!N!JF+J!!!!)!N!35PJ#3'J(ASJ#3(`3!N!9dCA0dAep ICR9dGA*PAemZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YX()QlE KQ$d!!!HS!!!DRJ#3#!qARFm!"bIH!!FS+!!$!!$rrrrq!*!)(#N!!!!#!*!%$jB !N"S"ek)!N"m%!*!&G'9cG&pTER0`C@0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,E&dJ1h#2mC!!!"+J!!!eS!N!J,Q9YJ!!Gi$J!(H%`!!`!!rrr rrJ#3#"a`!!!!!J#3"!k@!*!D!GHL!*!I"!#3"A4PFh4ICR9dGA*P,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,E&dJ1fhAY*!!!!R!!!!1)!N!Md,25 '!!Gi$J!(H%d!!`!!rrrrrJ#3#"a[!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4 ICR9dGA*P-5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfaG)$YXA 5!`!!!(!!!!#8!*!)iGTNm`!(H!i!"hK1!!-!!2rrrri!N!JFEJ!!!!)!N!32PJ# 3'J(ASJ#3(`3!N!9dCA0dAfCeG(9bC6)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y`Mr'EF)raN!!!"`!!!!U3#3#%Q4%JX!"hJ1!!Gi6`!$!!$rrrr q!*!)('d!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&pQGA4eFQ8c,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F)raQh#2mC!!!!E!!!!*B!N!Jq'45 m!!Gi$J!(H&!!!`!!rrrrrJ#3#"aX!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4 ICR9dGA*P0#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#2mCY`M r'3!!!(!!!!#e!*!)Tpkj"`!(H!i!"hK4!!-!!2rrrri!N!JFD`!!!!)!N!32PJ# 3'J(ASJ#3(`3!N!9dCA0dAfCeG(9bC68ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y`Mr'EF)raN!!!"f!!!!RJ#3#1%N)i!!"hJ1!!Gi8J!$!!$rrrr q!*!)('S!!!!#!*!%$jB!N"S"ek)!N"m%!*!&G'9cG&pQGA4eFQ8f,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F)raQh#2mC!!!!I!!!!-%!N!MEbbk K!!Gi$J!(H&-!!`!!rrrrrJ#3#"aT!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4 ICR9dGA*P0bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfaG)$YXA 5!`!!!A)!!!2L!*!)*Aq6(3!(H!i!"hKC!!-!!2rrrri!N!JFD!!!!!)!N!31PJ# 3'J(ASJ#3(`3!N!9dCA0dAfGXEf*KE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!LfaG)%Y`MdI3!!#!!!!"kV!*!)Q8+MN3!(H!i!"hL&!!-!!2rrrri !N!JFC`!!!!)!N!30PJ#3'J(ASJ#3(`3!N!9dCA0dAh0MEh"P,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,F)raLh#2mB!!!!+J!!!#%!N!MYJHNa!!J md!!)208!!`!!rrrrrJ#3#"aq!!!!!J#3"!U@!*!D!GHL!*!I"!#3"@j[Bf&bCA3 ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YYel5EEGHdN!!!,H!!! (-3#3#-5)lV-!#$c3!!Jmr!!$!!$rrrrq!*!)((d!!!!#!*!%$jB!N"S"ek)!N"m %!*!&G'9cG&pMEfe`E'9i,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,EI["5fhl`8!!!"K!!!",m!N!J%pEMT!!Jmd!!)23d!!`!!rrrrrJ#3#"am!!! !!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4ICQjYBA4MD#j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lfhl`9Y`Mr'3!!!J!!!!8i!*!)5UZk@!!)20!!#$e H!!-!!2rrrri!N!JFH`!!!!)!N!34PJ#3'J(ASJ#3(`3!N!9dCA0dAh4bB@0PBQ& MDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lh#24kY`MdHJ!!!PJ !!!A+!*!)hLrEF`!)SFS!#+(I!!-!!2rrrri!N!JFXJ!!!!)!N!33PJ#3'J(ASJ# 3(`3!N!9dCA0dAf&cH@jMD'&d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,F)p(bh#24m!!!"DJ!!!Y`!N!JVplb&!!LKbJ!)SKi!!`!!rrrrrJ#3#"b a!!!!!J#3"!q@!*!D!GHL!*!I"!#3"A4PFh4ID(4dF'aTBLj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lh#24mY`MdI!!!!E`!!!@,!*!)%Y#!U!!)SFS !#+)P!!-!!2rrrri!N!JFX!!!!!)!N!31PJ#3'J(ASJ#3(`3!N!9dCA0dAfa[Bf& XC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&eqY`MdF`!!$rJ !!%D2!*!)dj6mqJ!!!+N!!Hl2!!)!!2rrrri!N!J8qJ!!!!)!N!3-PJ#3'J'rSJ# 3(`3!N!9dD(*PB@4TEQFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aGIlE&dI`!!!48!!!,U!#3#+G'i*-!!!#T!!(Zd!!#!!$rrrrq!*!)&2X!!!! #!*!%#CB!N"S"[k)!N"m%!*!&G'pKD@CQ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mAAqfVfUb!!!&"J!!#dX!N!MdR#Ef!!!!U3!"lY%!!J!!rrr rrJ#3#"6m!!!!!J#3"!L@!*!D!EqL!*!I"!#3"A4[Df9Z,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mAB#fiCJa!!!-(!!!*pi!N!J6(2j1!!!!U3! "lY)!!J!!rrrrrJ#3#"6p!!!!!J#3"!Z@!*!D!EqL!*!I"!#3"A4[Df9ZDATP,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAB#h#24c!!!,*!!!+33 !N!K-&"p2!!!!U3!"lY-!!J!!rrrrrJ#3#"6q!!!!!J#3"!b@!*!D!EqL!*!I"!# 3"A4bB@0PBQ&MDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&f !YXA4r3!!!AJ!!!0[!*!)kDTAA!!!!+N!!Hl8!!)!!2rrrri!N!J8r`!!!!)!N!3 'PJ#3'J'rSJ#3(`3!N!9dG(NZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aGJ,83$f-!!!)m!!!&6`#3#1pJhLm!!!#T!!(Ze3!#!!$rrrrq!*!)&3# 3"!)!N!3)PJ#3'J'rSJ#3(`3!N!9dHA"PFbj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&f"YYel4!!!",`!!!fQ!*!))BCpYJ!!!+N!!Hl@!!)!!2r rrri!N!J9!3!!!!)!N!3+PJ#3'J'rSJ#3(`3!N!9dHR"KFR0P,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAB'h#24d!!!`UJ!!ZIF!N!Mc33A-!!! !U3!"lYF!!J!!rrrrrJ#3#"8#!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"A9bE'aTBLj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LdaHTkY`MdG!!!+5)!!** A!*!)Xle`l3!!!+N!!HlB!!)!!2rrrri!N!J9!`!!!!)!N!3+PJ#3'J'rSJ#3(`3 !N!9eFQaXD@)b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAB' faG(p!!!*bJ!!)G`!N!KJ&0LQ!!!!U3!"lYN!!J!!rrrrrJ#3#"8%!!!!!J#3"!Z @!*!D!EqL!*!I"!#3"A9bE("KFR0P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,,mAB'e%!pM!!!#a!!!"E`!N!K16,T,!!!!U3!"lYS!!J!!rrrrrJ# 3#"8&!!!!!J#3"!H@!*!D!EqL!*!I"!#3"A9cCA)ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)X[aGBEF)ra-!!!(-!!!'*3#3#,-(6j-!!!#T!!(Zf`! #!!$rrrrq!*!)&3B!!!!#!*!%#jB!N"S"[k)!N"m%!*!&9A0PFN4TBh3ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGBEDkSq-!!!,d!!!0aJ#3#0R ZrIm!!!#T!!(Zh!!#!!$rrrrq!*!)&3F!!!!#!*!%#jB!N"S"[k)!N"m%!*!&9A0 PFNaTFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!2BED6T3S !!!GH!!!GDJ#3##"6NcJ!!!#T!!(Zh3!#!!$rrrrq!*!)&3J!!!!#!*!%$CB!N"S "[k)!N"m%!*!&9A0PFP0dFQPZCbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&f#YXA4rJ!!#'i!!"AH!*!))PJIc`!!!+N!!HlH!!)!!2rrrri!N!J 9#3!!!!)!N!3&PJ#3'J'rSJ#3(`3!N!9eG5j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&f#YXA4rJ!!$fB!!%80!*!)3YEYQ3!!!+N!!HlI!!)!!2r rrri!N!J9#J!!!!)!N!3(PJ#3'J'rSJ#3(`3!N!9hBACP,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mAB+fhAY%!!!#fJ!!#$!!N!Lham(J!!!!U3! "lZ!!!J!!rrrrrJ#3#"8,!!!!!J#3"!U@!*!D!EqL!*!I"!#3"AGSD@0SC')ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGJVD1HVF!!!DX!!!5UJ# 3#*T3,DX!!!#T!!(Zi3!#!!$rrrrq!*!)&3`!!!!#!*!%#jB!N"S"[k)!N"m%!*! &GfKbB@jNEfdZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aGJVE &dIi!!!FF!!!F@`#3#2S$*Bi!!!#T!!(ZiJ!#!!$rrrrq!*!)&3d!!!!#!*!%#CB !N"S"[k)!N"m%!*!&H'4bE'PL,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mAB1fhAY&!!!GGJ!!L'J!N!Mfa6R4!!!!U3!"lZ-!!J!!rrrrrJ#3#"8 1!!!!!J#3"!Q@!*!D!EqL!*!I"!#3"AKYE'aTBLj`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Le%!pMY`MdG!!!&qB!!&eJ!*!)02V3j!!!!+N!!HlN!!) !!2rrrri!N!J9$`!!!!)!N!3+PJ#3'J'rSJ#3(`3!N!9kDA"QD@aP,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@!+BLfNk8,!!!#4J!!"@!!N!J+RNJ (!!1)9!!$L&N!!J!!rrrrrJ#3#"MV!!!!!J#3"!Q@!*!D!ErL!*!I"!#3"@&dCAK TG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+fbY`MdE!!!))i !!'&0!*!))FI+$J!$L&3!!iKY!!)!!2rrrri!N!JBkJ!!!!)!N!3*PJ#3'J'riJ# 3(`3!N!9$EfpVD@8ZF(P%9N08!*!3Y`[&!VF,a3)!!!%#!!1)9!!!!!%!N"`Bk3! !!!)!!J#3"!B!!!!)"!F!N"X"[k)!N#0MGA*cCA0'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YB1L0,F)p(8!!!,`!!!'D3#3#"9D"Ni!!iMU!!1)k`!$!!$ rrrrq!*!)'1J!!!!#!*!%#jB!N"S#4+)!N"m%!*!&AepTEQPdAemZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L0,CfXh)!!!0'!!!*C3#3#1%KL&m !!iMU!!1)l!!$!!$rrrrq!*!)'1F!!!!#!*!%#*B!N"S#4+)!N"m%!*!&BA0MD@N ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YDa5(E@X8Kd!!!A-!!! @B3#3#!rdp13!!iMU!!1)l3!$!!$rrrrq!*!)'1B!!!!#!*!%#TB!N"S#4+)!N"m %!*!&D'&cAfYPH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeJk) dYE#T9!!!"b!!!"IT!*!)l"T$S`!$L1S!!iMZ!!-!!2rrrri!N!JBj3!!!!)!N!3 +PJ#3'J*%SJ#3(`3!N!9dCAKdF'&N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,@$SM5eZD9k!!!$CJ!!"l`!N!J"`Z8@!!1)kJ!$L1m!!`!!rrrrrJ# 3#"MN!!!!!J#3"!U@!*!D!N5L!*!I"!#3"AGbBA"`CA)ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)YRDcFlCfXh-!!!#'!!!!SJ#3#(2T%XX!!M(*!!) ac3!$!!$rrrrq!*!)'`d!!!!#!*!%#*B!N"S#4+)!N"m%!*!&F'&ZC@`ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YGXe6VD6T4-!!!h#!!!PX3!!!() !!!'D(D,je`!$L&3!!iKp!!)!!2rrrri!N!JBi`!!!!)!N!3+PJ#3'J'riJ#3(`3 !N!9RCA4dCAKd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@!+BU h#24[!!!H,!!!BC%!N!KZl#[A!!1)9!!$L)F!!J!!rrrrrJ#3#"ML!!!!!J#3"!U @!*!D!ErL!*!I"!#3"@PYF(9dD@`ZF(P%9N08!*!3YV"033#3"J%#!!1)9!!!!!% !N"`Bi3!!!!)!!J#3"!d!!!!)"!F!N"X"[k)!N#0`E'&d,@CbC@9LFf3d4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AE0@kefc9Z!!!$,!!!#"m!N!J'MRE 3!!1+#`!$LJ`!!`!!rrrrrJ#3#"MJ!!!!!J#3"!L@!*!D!N1L!*!I"!#3"8C$6P4 -,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AE0@kefc9Z!!!)qJ! !(Q%!N!K-0(lf!!1+#`!$LJd!!`!!rrrrrJ#3#"MI!!!!!J#3"!@@!*!D!N1L!*! I"!#3"8P1,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,AE0@kefc9 Z!!!!G!!!!3`!N!KV![lK!!1+#`!$LJi!!`!!rrrrrJ#3#"MH!!!!!J#3"!@@!*! D!N1L!*!I"!#3"A*PCf9Z4&C$9!#3%,D`68)!N!B"!J!$L&3!!!!"!*!F'0X!!!! #!!)!N!30!!!!#!3(!*!E!EqL!*!MF'aKG#eQFQ9PBR0N08C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lefc9ZYGXeEJ!!!cB!!!Jf!*!)9)%*b`!$LK%!!iS 5!!-!!2rrrri!N!JBfJ!!!!)!N!3)PJ#3'J*#SJ#3(`3!N!9'3dj86#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lefc9ZYGXeEJ!!#2S!!"jK!*!)6$4 qpJ!$LK%!!iS6!!-!!2rrrri!N!JBf3!!!!)!N!3&PJ#3'J*#SJ#3(`3!N!9*6Lj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lefc9ZYGXeEJ!!!(3!!!% -!*!)D`,qi3!$LK%!!iS8!!-!!2rrrri!N!JBf!!!!!)!N!3&PJ#3'J*#SJ#3(`3 !N!9bC@GPENC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeJTGAYYel3`! !&r3!!&iY!*!)Ei8Lm!!$L&3!!iLP!!)!!2rrrri!N!JBe3!!!!)!N!3'PJ#3'J' riJ#3(`3!N!9`FQ8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFL YXlF)p()!!!S@!!!Ga!#3#!DYRP-!!iK8!!1)`3!#!!$rrrrq!*!)'03!!!!#!*! %#CB!N"S"[q)!N"m%!*!&FfpMDf9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,@43U#h#24d!!!05J!!,4J!N!MY8H(Y!!1)9!!$L13!!J!!rrrrrJ# 3#"M6!!!!!J#3"!f@!*!D!ErL!*!I"!#3"AGPBQ*bEhGcCA)ZF(P%9N08!*!3Y`[ &*lF,a5J!!!%#!!1)9!!!!!%!N"`BdJ!!!!)!!J#3"!-!!!!)"!F!N"X"[k)!N#0 iE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L0lF)p)!!!!)f!!! $m`#3#'Y#"0%!!iYD!!1,@`!$!!$rrrrq!*!)'0%!!!!#!*!%#jB!N"S#2k)!N"m %!*!&AepTEQPdAemZF(P%9N08!*!3Y`[&*lF,a5F!!!%#!!1,@J!!!!%!N"`Bd!! !!!-!!J#3"!-!!!!)"!F!N"X#2k)!N#0NEfe'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)YB1L0lDmS(d!!!6`!!!0NJ#3#*ViN!#9!!1,A!!$Led!"!!!rrr rrJ#3#"M2!!!!!J#3"!Z@!*!D!N'L!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,@$SMHh#25!!!!BIJ!!G`%!N!LfHd[F!!1 ,A!!$Lei!"!!!rrrrrJ#3#"M1!!!!!J#3"!U@!*!D!N'L!*!I"!#3"@eTEQPNEfd ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L0lEKQ%%!!!Lm!!! RR`#3#+UC+$%!!iYF!!1,A`!%!!$rrrrq!*!)'-d!!!!#!*!%#TB!N"S#3D)!N"m %!*!&F(9XE'4[E5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf[+" pYVbJI3!!"$)!!!X-!*!)!b'kH`!(+2X!"bMp!!3!!2rrrri!N!JF+!!!!!)!N!3 *PJ#3'J*"SJ#3(`3!N!9NEfebC@FZF(P%9N08!*!3YV"06J#3"J%#!!1,@J!!!!% !N"`Bc!!!!!-!!J#3"!F!!!!)"!F!N"X#2k)!N#0`BA*cCA*c4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,@ZCCDeVQ@@!!!!K!!!!+F!N!Kk!qQh!!1,B!! $Lf%!"!!!rrrrrJ#3#"M,!!!!!J#3"!Z@!*!D!N#L!*!I"!#3"9pID@jTG&pI,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B*265f#6dd!!!!DJ!!!(! !N!KCD%h0!!3k)3!%1L-!"!!!rrrrrJ#3#"RX!!!!!J#3"!L@!*!D!N#L!*!I"!# 3"@9iF'&d,R"j4&C$9!#3%,EQVk+fjUqL!!!"!J!$LeS!!!!"!*!F'-S!!!!$!!) !N!3$!!!!#!3(!*!E!MqL!*!MFf&i4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,@$SMLf)P&C!!!%iJ!!$D3!N!J(2'Ra!!1,BJ!$Lf-!"!!!rrrrrJ#3#"M *!!!!!J#3"!Z@!*!D!MkL!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,@$SMLfiCK#!!!'"J!!%MB!N!McUAkE!!1,BJ!$Lf3 !"!!!rrrrrJ#3#"M)!!!!!J#3"!k@!*!D!MkL!*!I"!#3"9pPH'0PF(4TEfjc,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@$SMLfQ,,j!!!)-J!!)%% !N!KD`p*r!!1,BJ!$Lf8!"!!!rrrrrJ#3#"M(!!!!!J#3"!k@!*!D!MkL!*!I"!# 3"@9iF'&dFQ9KC'9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@ $SMLf)P&C!!!14J!!-`)!N!MDV@"k!!1,BJ!$LfB!"!!!rrrrrJ#3#"M'!!!!!J# 3"!U@!*!D!MkL!*!I"!#3"@KKEQ4XCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)YB1L1,CfXhi!!!I3!!!G$!#3#%Pp1hB!!iYL!!1,C`!%!!$rrrr q!*!)'-8!!!!#!*!%#jB!N"S#2U)!N"m%!*!&Ff&iGA4TE(-ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)YB1L1,EGHdX!!!e#!!!a*!#3#&pdIrX!!iY L!!1,D!!%!!$rrrrq!*!)'-3!!!!#!*!%$*B!N"S#2U)!N"m%!*!&H'eXFQ9KC'9 b,R"j4&C$9!#3%,D`68%!N!B""!!%0qJ!!!!"!*!F'HX!!!!#!!)!N!3+!!!!#!3 (!*!E!EqL!*!MF'aKG#eLC@pc08C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lf#6dZYJNp,J!!!eS!!!Q%!*!)N!!@TQ!!"$NC!!3j'J!$!!$rrrrq!*!)'HS !!!!#!*!%#*B!N"S#D+)!N"m%!*!&4N019%`ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YJNp,lB*25m!!!Hb!!!Je3#3##"Nl*J!"$NC!!3j'`!$!!$ rrrrq!*!)'HN!!!!#!*!%"CB!N"S#D+)!N"m%!*!&58iZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)YJNp,lB*25m!!!#F!!!!q`#3#)1PUR)!"$NC!!3 j(!!$!!$rrrrq!*!)'HJ!!!!#!*!%"CB!N"S#D+)!N"m%!*!&FQ9RC@j'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YUpUTlDkSq3!!"h3!!"ai`#3#")-2S% !!M%J!!)a23!#!!$rrrrq!*!)'``!!!!#!*!%#TB!N"S"[q)!N"m%!*!&C'PQCQa TBLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfMRUZYYqm$`!!+pi !!)kG!*!)9Kj+'3!#-5!!!M&!!!)!!2rrrri!N!JE#`!!!!)!N!3+PJ#3'J'riJ# 3(`3!N!9NEf0dCA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D Jd3fh#24a!!!8XJ!!4(J!N!K,@bdD!!)a)!!#-CX!!J!!rrrrrJ#3#"X+!!!!!J# 3"!L@!*!D!ErL!*!I"!#3"A0YG("N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,CfXfkfaG(q!!!*PJ!!(fJ!N!KS5f'8!!)a)!!#-F!!!J!!rrrrrJ# 3#"X*!!!!!J#3"!Z@!*!D!ErL!*!I"!#3"AGKFQjTEQGc,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,DJd3kh#2m8!!!%5!!!%M3!N!L%S"BD!!)a)!! #-F)!!J!!rrrrrJ#3#"X)!!!!!J#3"!U@!*!D!ErL!*!I"!#3"AGPB@YbC@BZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YX()PVEGHd%!!!0!!!!)83# 3#,4MmPB!"bD3!!!(*T%!!J!!rrrrrJ#3#"`R!!!!!J#3"!f@!*!33!#3#3'riJ# 3(`3!N!9IAfCeG(9bC9pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,E"b*Dh#24[!!!E%!!!D(m!N!Le`H!S!!FQN!!!"bE(!!)!!2rrrri!N!JF*J! !!!)!N!3+PJ#3%%!!N!N"[q)!N"m%!*!&D@jcF'9MG#j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lf`FLAY`MdF3!!5[`!!5Ke!*!)MSAd!3!(*T!!!!F Ql!!#!!$rrrrq!*!)(#8!!!!#!*!%#*B!N""!!*!*!ErL!*!I"!#3"A"jC'pM,R" j4&C$9!#3%,F,a3fh#m8-!!!""`!(GTN!!!!"!*!F('B!!!!#!!)!N!3,!!!!#!3 (!*!E!EqL!*!MF'aKG#ebDA0MEh0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)YXA5!EEGHdJ!!!'X!!!&-J#3#&i%h2-!"hIM!!Ghj!!$!!$rrrrq!*!)('8 !!!!#!*!%%*B!N"S#UD)!N"m%!*!&FQPcBfpcC@jfDA*[ELj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!LfaG)"Y`MdH!!!$5!!!#&@!*!)ZG#&[!!(Gq- !"hIP!!-!!2rrrri!N!JFC!!!!!)!N!30PJ#3'J+TSJ#3(`3!N!9bDA0MEh0`BA4 S,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,E&dJ+faG)#!!!$[J! !#@d!N!L',2Mb!!Ghi`!(GqB!!`!!rrrrrJ#3#"aM!!!!!J#3"!f@!*!D!UQL!*! I"!#3"A*[GA*X-R"KG'JZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )YXA4qVE&dIS!!!%)!!!"S!#3#-,I0(X!"hDC!!Gh(J!#!!$rrrrq!*!)(')!!!! #!*!%#TB!N"$J!*!*!Erc!*!I"!#3"94&8Ne*6e-ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)YZ'B-EF)p()!!!IJ!!!H83#3#-I%Adi!#$YB!!JlfJ! #!!$rrrrq!*!)((S!!!!#!*!%#jB!N"$J!*!*!Erc!*!I"!#3"A0jEA4KBQaP,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,EI["#h#24c!!!E+!!!B3` !N!KZ'F$#!!Jl@!!)1qF!!J!!rrrrrJ#3#"aj!!!!!J#3"!Z@!*!3i!#3#3'rm`# 3(`3!N!9eEQPdG'9cG#j`H84@3e3!N!J$i!)J!3m""lF,a5Lh#m9)!!!!``!!!(3 !!!!"!*!F&4!!!!!"!!)!N!3$!!!!#!3(!*!4i!#3#3',iJ%!N#*0B@0'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%,,F,S0!!!!%)!!!"R`#3#+he2,i !!!$$!!(a#`!#!!$rrrrq!*!)&4%!!!!#!*!%%*B!N"S"fD)!N"m%!*!&Af0SC@0 VGQ9bFfP[ELj`H84@3e3!N"#h#m8TY`[&,!!!!-3!!!$$!!!!!3#3("85!!!!!J! #!*!%"`!!!!J%"`#3'`(CSJ#3)d0[ER4bD@*%9N08!*!3YV"08!#3"m8!!!$%!!! !!3#3("86!!!!!`!#!*!%$`!!!!J%"`#3'`(DSJ#3)d&&3f&`G(9bC9"KFR0PFNC @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le*r4VY5IdD`!!$dB!!#b6!*! )K@6E`J!!!-8!!I%4!!3!!2rrrri!N!J9&!!!!!)!N!35PJ#3'J(ESJ#3(`3!N!9 "480KF(4eFQ93BA*cCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*! )Y5Ie*E8Rp58!!!#U!!!!l3!!!43!!!@Z,8BhEJ!!!-8!!I%5!!3!!2rrrri!N!J 9&3!!!!)!N!3+PJ#3'J(ESJ#3(`3!N!9bC@&NE@8ZG(Kd4&C$9!#3%,E83pB!N!I '!!!!a!!!!!%!N"`9&J!!!!-!!J#3"!3!!!!)"!F!N"X"fU)!N#0#3P"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AM,bkeibmZ!!!&1!!!$0`!N!K@VUm ,!!!!aJ!"m43!"!!!rrrrrJ#3#"8A!!!!!J#3"!k@!*!D!GbL!*!I"!#3"9"jG'K [EP0XBACP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,A4%QfcqM K!!!#Z!!!"2N!N!Me#3*5!!!!aJ!"m48!"!!!rrrrrJ#3#"8B!!!!!J#3"!D@!*! D!GbL!*!I"!#3"9*&384048C@3e3!)b!!N!3))!!J!3#3#!F!N")"3N*B9&)UBfJ !N!LcfQ%MXpTK)`#3#J91!!!*24,ZN@3!!M1T!!)cV!!%!!$rrrrq!*!)'`F!!!! #!*!%$CB!N"S"h+)!N"m%!*!&8R9Z)'&c)&"jG'K[EN4@3e3!N"#fXKS*!*!(c3! !!-3!!!!"!*!F&5J!!!!$!!)!N!3%!!!!#!3(!*!E!GUL!*!MEh0KE8C@3e3!N!F ))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,,[@+UfPF!c!!!)aJ!!&-`!!!"S!!! "MYI"hUS!!!$0!!(a*J!%!!$rrrrq!*!)&5N!!!!#!*!%$*B!N"S"ik)!N"m%!*! &6e0"E5j`F'-ZFfaL4&C$9!#3%,F,a5Zh#m8U!!!!cJ!!!-3!!!!"!*!F&5S!!!! $!!)!N!31!!!!#!3(!*!E!GUL!*!M8(PdD'pZ4'9dC@0dEh*'9N08!*!(##!!!!% !N!J(!*!5!@PMEfj038063!#3"l0%+jbc4#ZF!*!,aJ!!!HDdp!&b!!E$)J!'`b- !"!!!rrrrrJ#3#"Zf!!!!!J#3"!@@!*!D!H5L!*!I"!#3"8PMEfi04PC$9!%"J!# 3"!JJ!#!"!*!)"`#3%J&[Ff&c9'pj8`#3#,EQe6#fjY8`!*!+(9i!!$03BB'Er!! !!-i!!I%T!!3!!2rrrri!N!J9,!!!!!)!N!30PJ#3'J(NSJ#3(`3!N!92F'9Z8(P dD'pZ6'PL4PC$9!%"J!#3"!JJ!#!"!*!)"`#3%J&[Ff&c9'pj8`#3#,EQe6#fjY8 `!*!+(I`!!$@lFXF&)!!!!-i!!I%U!!3!!2rrrri!N!J9,3!!!!)!N!39PJ#3'J( NSJ#3(`3!N!92F'9Z8(PdD'pZ6'PL)(GTG'JJ6P0'9N08!*!(##!!!!%!N!J(!*! 5!@4dC'*cG'3e!*!)YZE9-EEQe6%!N!SM,J!!Dd8$Q3*D!!!!cJ!"m5X!"!!!rrr rrJ#3#"8Z!!!!!J#3"!k@!*!D!H5L!*!I"!#3"9"jG'K[EN4PG'9MG'pb4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,0+0e+c5MG5!!!%0!!!#D8!!!&5!!! "I[L)%G!!!!$1!!(a,!!%!!$rrrrq!*!)&5m!!!!#!*!%#TB!N"S"j+)!N"m%!*! &FQ9KC'eP,R4iG%4@3e3!N"#fX%e3!*!(c`!!!-3!!!!"!*!F&6!!!!!$!!)!N!3 -!!!!#!3(!*!E!GUL!*!M8(PdD'pZ8f0bDA"d4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,A4&'fA%cI!!!0eJ!!+Ti!N!LG6kUZ!!!!c`!"m5i!"!!!rrr rrJ#3#"8a!!!!!J#3"!U@!*!D!H@L!*!I"!#3"@*KCA"KBfXZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%8E,A4&%!!!X'!!!GA!#3#02$H")!!!$ 2!!(a,`!%!!$rrrrq!*!)&6)!!!!#!*!%#jB!N"S"jD)!N"m%!*!&BQ&PG'p[E(- ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%8ECF6-S!!!i`!!! cpJ#3#!1B91d!!!$2!!(a-!!%!!$rrrrq!*!)&6-!!!!#!*!%#jB!N"S"jD)!N"m %!*!&BQ&PG(P`CA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG %8E,A4&%!!!eD!!!QK`#3#$L[hA-!!!$2!!(a-3!%!!$rrrrq!*!)&63!!!!#!*! %#TB!N"S"jD)!N"m%!*!&Cf9dB@9dC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbed44XYG%8J!!$)`!!#(P!*!)fDU&EJ!!!-m!!I%b!!3!!2rrrri !N!J903!!!!)!N!3-PJ#3'J(PSJ#3(`3!N!9`FQPZG'&PG'8ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%8,,A4&!!!!%`!!!#8`#3#12b(BJ!!!$ 2!!(a-`!%!!$rrrrq!*!)&6B!!!!#!*!%$jB!N"S"jD)!N"m%!*!&8(P6Bh*TF(4 8CA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&'bed44!!! +eJ!!(lm!N!K*--Ch!!!!c`!"m63!"!!!rrrrrJ#3#"8h!!!!!J#3"!q@!*!D!H@ L!*!I"!#3"9"jG'K[EP0MFQP`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4 dH(3!N!Lbr'kKX[aZS3!!"0S!!!Sb!*!)EEHGC`!!!-m!!I%e!!3!!2rrrri!N!J 91!!!!!)!N!3+PJ#3'J(PSJ#3(`3!N!95C@&N6@8ZG(Kd4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,A4&+bed45!!!#'J!!"'8!N!J$AHZ,!!!!c`!"m6B !"!!!rrrrrJ#3#"8j!!!!!J#3"!f@!*!D!H@L!*!I"!#3"A4PFh4PG@4[FQ%ZF(P %9N08!*!3Y`[&+lF,a5X!!!$5!!!!a!!!!!%!N"`92`!!!!-!!J#3"!J!!!!)"!F !N"X"fU)!N#06D'9bE'pMDdC@3e3!N!F))!!!!3#3#!F!N")"DA0cF'CZC'B!N!L fjY8bYZE9-J!!!9)!!!)d!!!#c!!!#QiFcX5!!!!!dJ!"m6d!"!!!rrrrrJ#3#"9 !!!!!!J#3"!q@!*!D!HLL!*!I"!#3"9"jG'K[ELeNEf0c,R0bBdC@3e3!N!F))!! !!3#3#!F!N")"DA0cF'CZC'B!N!LfjY8bYZE9-J!!!8J!!!)b!!!#fJ!!#Qk+0bb '!!!!dJ!"m6i!"!!!rrrrrJ#3#"9"!!!!!J#3"!k@!*!D!HLL!*!I"!#3"9"jG'K [ELe'39%ZFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&TFh0`CQjNCJ#3#,EQe6+fjY8 b!!!"AJ!!!RB!!!,@!!!+LJphcCJ!!!$5!!(a2`!%!!$rrrrq!*!)&8)!!!!#!*! %#TB!N"S"k+)!N"m%!*!&8(PdD'pZ,R0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9 B9(4dH(3!N!Lbed45XYG%8J!!!@i!!!**!*!),qNhD`!!!0)!!I&!!!3!!2rrrri !N!J93`!!!!)!N!3+PJ#3'J(SSJ#3(`3!N!9bC@&NE@8ZG(Kd4&C$9!#3%,Db'JN !N!B"!`!$dES!!!!"!*!F'EF!!!!$!!)!N!3-!!!!#!3(!*!E!GUL!*!M5@eKCf9 )C@a`CA*c4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,Aa0pbem6IF!!! #"!!!"&)!N!M[@5H4!!3FS!!%(+%!"!!!rrrrrJ#3#"Qf!!!!!J#3""1@!*!D!PZ L!*!I"!#3"89iG&"TH%eKF&GbBA"`CA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)YI%hh,Aa0p`!!!Y#!!!Ga`#3#&ZHk08!""bJ!!3FSJ!%!!$rrrr q!*!)'E8!!!!#!*!%#jB!N"S#@k)!N"m%!*!&5@eKCf90B@-ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)YI%hh,Aa0p`!!!L!!!!I3!#3#!blp6m!""b J!!3FS`!%!!$rrrrq!*!)'E3!!!!#!*!%$CB!N"S#@k)!N"m%!*!&6@pfD@99G'P XFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lem6IZYI%hlJ!!!Li !!!2@!*!)"c#Zj`!%(+!!""bN!!3!!2rrrri!N!JCX`!!!!)!N!3'PJ#3'J*ESJ# 3(`3!N!95C@&N6@9%9N08!*!3YV"083#3"J%&!!49D!!!!!%!N"`Cq3!!!!-!!J# 3"!J!!!!)"!F!N"X"fU)!N#0cG(*`G'PYC8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lf#r14YJ[cQ`!!#bJ!!"k1!*!)+QlIk`!%9Bm!"&@3!!!%!!$rrrr q!*!)'IJ!!!!#!*!%#jB!N"S#DD)!N"m%!*!&Fh4bF(4TE@8ZF(P%9N08!*!3YV) D#J#3"J%'!!)cT3!!!!%!N"`E"3!!!!-!!J#3"!S!!!!)"!F!N"X"fU)!N#08B@* ME'9KEQ9b4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,CfYJ+fGVB#!!! &V!!!$eX!N!J`8U16!!)cc`!#-p!!"!!!rrrrrJ#3#"X%!!!!!J#3"!f@!*!D!RH L!*!I"!#3"94KBQ0XC@&ZCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0 S!*!)YRDf!ECfYJ)!!!2f!!!(a`#3#01C2$-!!M22!!)cd3!%!!$rrrrq!*!)'`- !!!!#!*!%%CB!N"S#Gk)!N"m%!*!&9'&LBfaPB@jPFLj548&%689%9N08!*!3Y`[ &+VF,a5N!!!%)!!I%3`!!)!%!N"`FGJ!!!!-!!J#3"!F!!!!)"!F!N"X"fU)!N#0 #3P"j,QaY4PC$9!%!J!#3"!JJ!#!"!*!)"`#3%!8!!8*#6%e5+Q0S!*!)YXad`lE -IXm!!!Ni!!!8L`!!!9B!!!-(MMCCU!!(a%X!"m4-!!3!!2rrrri!N!JFG3!!!!) !N!3'PJ#3'J+USJ#3(`3!N!93HA4SEfj'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 dG(Kd!*!)YXESplEcrG`!!!(#!!!$%3!!!0!!!!@Zq!Nc(!!(a%X!"m41!!3!!2r rrri!N!JFG!!!!!)!N!31PJ#3'J+USJ#3(`3!N!93HA4SEfj#3Na0,R4iG%4@3e3 !N"#h#m8XY`[&-!!!!0-!!!$$!!!!!3#3("9%!!!!!J!#!*!%"!!!!!J%"`#3'`( CSJ%!N#*%C@e[4&C$9!#3#[q3"!%(Y`[%RlF,a*m!!!%1!!!"$!!!!!%!N"`B%`! !!!-!!J#3"!N!!!!)"3F!N"X#+!!"!*!LD@jdCA*cE'P`4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,,A4&Qbed4C!!!#1J!!"k8!N!MLp,eq!!!"$J!"Ubm !"!!!rrrrrJ#3#"J8!!!!!J#3"!k@!*!D!LS!!3#3(J8!N!9*ER4PFR0XDA"-D@) ZBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbed4CXYG%@3!!!3B!!!) L!*!)ZV"hFJ!!!3i!!DX`!!3!!2rrrri!N!JB&3!!!!)!N!31PJ#3'J)U!!%!N"i &!*!&5@jdCA*cE'P`6'PL,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )XYG%@E,A4&N!!!F@!!!@b`#3#$)IiV%!!!%1!!'V-3!%!!$rrrrq!*!)'"B!!!! #!*!%%CB!N"S#+J!"!*!H"3#3"@PZG'9bFfaTF'e[C(9XC5jM4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K89@f"0J#3#,,A4&5fiCf6!!!38!!!*ri!N!M1'q4!!!!!d`! "m8)!!`!!rrrrrJ#3#"9&!!!!!J#3""#@!*!D!HQL!*!I"!#3"@&`F'aPFf0bDA" d,QKdE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&49EB%f!*!)XYG%9,F,`l3!!"q )!!"8M`!!!,J!!!'D!+a+13!!!0-!!I&$!!-!!2rrrri!N!J94J!!!!)!N!30PJ# 3'J(TSJ#3(`3!N!9LG@PXC'PZCbjSG'eX4&C$9!#3%,D`69)!N!I8!!!!d`!!!!% !N"`94`!!!!-!!J#3"!F!!!!)"!F!N"X"kD)!N#0MB@aXC'aX4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88LTMD!#3#,-@`S'c&X+"!!!'+!!!$9J!N!J`5-@5!!!!e!! "m9%!"!!!rrrrrJ#3#"9)!!!!!J#3"!D@!*!D!HUL!*!I"!#3"A*PB@4YC8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lc&X+"XaE#J3!!!B3!!!,V!*!)0Yq eY`!!!03!!I&5!!3!!2rrrri!N!J953!!!!)!N!33PJ#3'J(USJ#3(`3!N!9cB@e `E'9MB@aXC'aX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,-@`S' c&X+"!!!$+!!!$5S!N!PpilF!!!$8!!(a8`!%!!$rrrrq!*!)&8S!!!!#!*!%$TB !N"S"kU)!N"m%!*!&G'9cG'0KE'aNE'`ZF(P%9N08!*!3Y`[&,EF,a5d!!!$9!!! !d`!!!!%!N"`95`!!!!-!!J#3"!-!!!!)"!F!N"X"kD)!N#0MCfP'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%9l,A4&F!!!!m!!!!0!#3#,@'GVd!!!$ 9!!(a9J!%!!$rrrrq!*!)&8d!!!!#!*!%$TB!N"S"kk)!N"m%!*!&BfGTG'9cG#j MCfNZF(P'9N08!*!(##!!!!%!N!J(!*!5!A*cFQ058d9%!*!)YZE9-VEQe6)!N!S ,9J!!(bBeSG`Z!!!!e3!"m9F!"!!!rrrrrJ#3#"91!!!!!J#3""#@!*!D!HZL!*! I"!#3"@0RDA4PFh3ZBfGT,R*cFQ0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)XYG%9l84HrN!!!+b!!!&Q3#3#$iZfMJ!!!$9!!(a@!!%!!$rrrrq!*!)&8m !!!!#!*!%$TB!N"S"kk)!N"m%!*!&FQ9KE'0RDA4PFh3ZF(P'9N08!9+!!*!%##! !)!%!N!J(!*!2`!F!!8&38%a3HA3i)!#3"l8"YJfe!EB0!!!$cJ!!"iJ!!"*)!!! UA9"kBjF!"X0@!!E$9`!%!!$rrrrq!*!)'l8!!!!#!*!%#jB!N"S"kk)!N"m%!*! &BfGTG'9cG#jMCfP'9N08!*!(##!!!!%!N!J(!*!5!94&@&408dP&!*!)XYG%9,8 4Hpd!!!LL!!!6'!#3#%*m%pJ!!!$6!!(a4!!$!!$rrrrq!*!)&9!!!!!#!*!%#*B !N"S"kD)!N"m%!*!&BfGT,QKdE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&49EB% f!*!)XYG%9,AJLIF!!!2U!!!(eJ#3#+VC5b%!!!$6!!(a43!$!!$rrrrq!*!)&9% !!!!#!*!%#TB!N"S"k3!"!*!H"3#3"@9YBQ9N,QKdE@a%9N08!*!+rj!%!3Hh#m5 IY`[%R`!!!3d!!!%-!!!!!3#3("J2!!!!!`!#!*!%"3!!!!J&"`#3'`)S!!%!N#* PE@*PC%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbed4AXYG%9`!!!Xi !!!@a!*!)H**5p!!!!3d!!DXX!!3!!2rrrri!N!JB%!!!!!)!N!3'PJ#3'J)T!!% !N"i&!*!&C'9YEbjM4PC$9!#3"`JJ!!!"!*!)"`#3%J&069"b3eG*43#3#,,A4&H bed4A!!!,@J!!BHm!N!Ke@Y-@!!!"$3!"Ubd!"!!!rrrrrJ#3#"J4!!!!!J#3"!f @!*!D!LN!!3#3(J8!N!9PE@*PC'4PE@mZF(*U4&C$9!#3%,8kFdDe1R0&!!!!eJ! !!0-!!!!"!*!F&9)!!!!$!!)!N!3)!!!!#!3(!*!E!HQL!*!MCAKKEA"XC6"'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%@,,A4&J!!!'k!!!%$J#3#'5 QDE-!!!$@!!(a@J!%!!$rrrrq!*!)&9-!!!!#!*!%$*B!N"S"l+)!N"m%!*!&BfK PBfYdCAKd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K89@f"0J#3#,,A4&5bed4 8!!!(BJ!!%,m!N!JH-3)!N!66!!(a4J!$!!$rrrrq!*!)&93!!!!#!*!%$CB!N"S "kD)!N"m%!*!&CAKKEA"XC6!ZD(4YE%4@3e3!N"#h#m8ZY`[&,3!!!0F!!!$6!!! !!3#3("99!!!!!`!#!*!%#!!!!!J%"`#3'`(TSJ#3)f9iB@e`E'8a4PC$9!#3"`J J!!!"!*!)"`#3%J&(58CQEfGXC3#3#,4ZiA@dEZ&f!!!*$!!!#JS!N!J8TrAT!!! !e`!"m9`!"!!!rrrrrJ#3#"9@!!!!!J#3"!q@!*!D!HfL!*!I"!#3"@4ZFfa[EfY eF#da,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LdEZ&fYA@[iJ! !!V`!!!Bq!*!)ZM6K1`!!!0F!!I&G!!3!!2rrrri!N!J99`!!!!)!N!31PJ#3'J( YSJ#3(`3!N!9NER0XEfpVGA!Y-5j`H8C@3e3!N!F))!!!!3#3#!F!N")"FR0bBe* 6483!N!LfjY8bYZE9-J#3#J'#!!!"qXkSbq8!!!$A!!(aAJ!%!!$rrrrq!*!)&9J !!!!#!*!%%*B!N"S"lD)!N"m%!*!&C'jcE'p[Dh9`,6%ZFR0bBdC@3e3!N!F))!! !!3#3#!F!N")"9%9B9%e28e-!N!Lbed48Y'lKA!!!%#)!!#B3!*!)@d*9'3!!!0- !!I&(!!-!!2rrrri!N!J9@3!!!!)!N!30PJ#3'J(TSJ#3(`3!N!9PH'&YF'aP-5j SG'eX4&C$9!#3%,F,a5kh#m8Y!!!!f!!!!0-!!!!"!*!F&9S!!!!$!!)!N!3)!!! !#!3(!*!E!HQL!*!MCAKKEA"XC6*'9N08!*!(##!!!!%!N!J(!*!5!8G*4QC[Cfa P!*!)Y'lKGl4ZiAF!!!Ud!!!,U!#3#2MVdiN!!!$B!!(aB!!%!!$rrrrq!*!)&9X !!!!#!*!%$jB!N"S"lU)!N"m%!*!&C'jcE'p[Dh9`,6)ZCfPQ4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,4ZiAHfX@FS!!!$dJ!!#MS!N!MUE&BC!!!!f!! "m@%!"!!!rrrrrJ#3#"9F!!!!!J#3"!k@!*!D!HkL!*!I"!#3"@4ZFfa[EfYeF#d b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&bFh*M8P0&4!#3#,EQe61fjY8c!*!+!FJ !!!*KBSQQ@`!!!0J!!I&L!!3!!2rrrri!N!J9A3!!!!)!N!33PJ#3'J(ZSJ#3(`3 !N!9NER0XEfpVGA!Y-LjbFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K868p68`# 3#,,A4&@dEZ&G!!!0Y!!!)1J!N!K[D-A&!!!!d`!"m8J!!`!!rrrrrJ#3#"9H!!! !!J#3"!f@!*!D!HQL!*!I"!#3"@9iB@e`E'8b,QKdE@a'9N08!*!(##!!!!%!N!J (!*!5!94&@&406e06!*!)XYG%9EAJLL-!!![%!!!FX`#3#0b,9UF!!!$6!!(a53! $!!$rrrrq!*!)&9m!!!!#!*!%$CB!N"S"kD)!N"m%!*!&CR*PCATTEQFZD(4YE%4 @3e3!N"#fX%e5!*!(f3!!!0-!!!!"!*!F&@!!!!!$!!)!N!3+!!!!#!3(!*!E!HQ L!*!MD(4YE#jTBfpZFdC@3e3!N!F))!!!!3#3#!F!N")"G(4bEh4dH(3!N!Le*qC aY5IQF3!!0[S!!$H%!*!)HM+F[`!!!0N!!I&N!!3!!2rrrri!N!J9B3!!!!)!N!3 1PJ#3'J([SJ#3(`3!N!9MFQ9KG'9YB@YP,R"ZCdC@3e3!N!F))!!!!3#3#!F!N") "4dP'CQpRE'8!N!Lc&X+#XaE#JJ!!!T`!!!2b!*!)U+TU0J!!!0N!!I&P!!3!!2r rrri!N!J9BJ!!!!)!N!3-PJ#3'J([SJ#3(`3!N!9YDf&`F'aPG#jRD@C'9N08!*! (##!!!!%!N!J(!*!5!8G*4QC[CfaP!*!)XaE#JV-@`S)!!"PB!!!C6`#3#2N-Ab! !!!$C!!(aCJ!%!!$rrrrq!*!)&@-!!!!#!*!%$CB!N"S"lk)!N"m%!*!&E@pNG@a KG'pb,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"4dP'CQpRE'8!N!Lc&X+#XaE#JJ! !$j`!!"#(!*!)+k4ZRJ!!!0N!!I&R!!3!!2rrrri!N!J9C!!!!!)!N!3,PJ#3'J( [SJ#3(`3!N!9[F(4TEfjc,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"4dP'CQpRE'8 !N!Lc&X+#XaE#JJ!!%ri!!"6J!*!)APKS5!!!!0N!!I&S!!3!!2rrrri!N!J9C3! !!!)!N!32PJ#3'J([SJ#3(`3!N!9`FQ9QCA*PEQ0PFbjRD@C'9N08!*!(##!!!!% !N!J(!*!5!8G*4QC[CfaP!*!)XaE#JV-@`S)!!!+3!!!!!q`!N!Ka#P,b!!!!f3! "m@N!"!!!rrrrrJ#3#"9Q!!!!!J#3"!U@!*!D!HqL!*!I"!#3"A"jG'K[ELjRD@C %9N08!*!3YV"08J#3"pS!!!$6!!!!!3#3("9R!!!!!`!#!*!%#3!!!!J%"`#3'`( TSJ#3)fPYCf*bEhGcC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4 CXYG%@3!!"*`!!!`D!*!)aC[dfJ!!!0S!!I&V!!3!!2rrrri!N!J9D!!!!!)!N!3 -PJ#3'J(`SJ#3(`3!N!9TE@GLFQphFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)XYG%@EBC#l3!!!+k!!!&dJ#3#12`Nm-!!!$D!!(aE!!%!!$rrrr q!*!)&@N!!!!#!*!%$*B!N"S"m+)!N"m%!*!&E@&MAfPYB@GP,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K868p68`#3#,,A4&@e*r8b!!!+QJ!!'4d!N!MHC9XE!!! !d`!"m8S!!`!!rrrrrJ#3#"9U!!!!!J#3"!U@!*!D!HQL!*!I"!#3"@PZC'9i,QK dE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&406e06!*!)Y5IQ8,8RkUd!!"JX!!" "BJ#3##)0HrX!!!$6!!(a5`!$!!$rrrrq!*!)&@X!!!!#!*!%%TB!N"S"kD)!N"m %!*!&EA"hCAKdC@jcD@pZFbjSG'eX4&C$9!#3%,F,a5qh#m8Z!!!!f`!!!0-!!!! "!*!F&@`!!!!$!!)!N!3+!!!!#!3(!*!E!HQL!*!M8%P$9'*bEhGcC8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4AYS%d+!!!"Ri!!"$)!*!)@5GdPJ! !!0X!!I&Z!!3!!2rrrri!N!J9E3!!!!)!N!30PJ#3'J(aSJ#3(`3!N!9MD@0ZBR* [Gh0P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&DfJ63`!!! 'HJ!!%-!!N!L#33k)!!!!f`!"m@m!"!!!rrrrrJ#3#"9Z!!!!!J#3"!f@!*!D!I' L!*!I"!#3"8P$6djLFQphFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)Y)P!d,D6TZ8!!!C5!!!2i`#3#&'eXk%!!!$E!!(aF!!%!!$rrrrq!*!)&@m !!!!#!*!%%*B!N"S"mD)!N"m%!*!&EfaN8%P$9'*bEhGcC5j`H8C@3e3!N!F))!! !!3#3#!F!N")"FR0bBe*6483!N!LfjY8bYZE9-J#3#rJ!!!'8N!$MdSX!!!$E!!( aF3!%!!$rrrrq!*!)&A!!!!!#!*!%%TB!N"S"mD)!N"m%!*!&EfaN8%P$9'*bEhG cC5jbFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&DfJ63e!!! &YJ!!$F!!N!LE2%9c!!!!f`!"mA)!"!!!rrrrrJ#3#"9a!!!!!J#3"!f@!*!D!I' L!*!I"!#3"9"*3e4LFQphFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!A*cFQ058d9 %!*!)YZE9-VEQe6)!N!S"B!!!!Updaqki!!!!f`!"mA-!"!!!rrrrrJ#3#"9b!!! !!J#3"!q@!*!D!I'L!*!I"!#3"9"*3e4LFQphFf8ZFR0bBdC@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbed4@YS%d13!!"TS!!"$i!*!))L31P!!!!0X!!I& d!!3!!2rrrri!N!J9F`!!!!)!N!31PJ#3'J(aSJ#3(`3!N!935808BR*[Gh0P-Lj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&9YJ6B!N!Lbed49XYG%93!!'e`!!%6 3!*!)JLTCY3!!!0-!!I&-!!-!!2rrrri!N!J9G!!!!!)!N!3-PJ#3'J(TSJ#3(`3 !N!9`E(9RD@jc,QKdE@a%9N08!*!3Y6Tc4V8kFdB!!!$F!!!!d`!!!!%!N"`9G3! !!!-!!J#3"!J!!!!)"!F!N"X"kD)!N#0`FQPZG'PZCdC@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbed4DXYG%@J!!"-B!!!Uj!*!)L`58I!!!!0`!!I&f!!3 !!2rrrri!N!J9GJ!!!!)!N!32PJ#3'J(bSJ#3(`3!N!93FQPZG'PZCd4PE@mZF(P %9N08!*!3Y6Tc4V8kFdB!!!$G!!!!d`!!!!%!N"`9G`!!!!-!!J#3"!N!!!!)"!F !N"X"kD)!N#0aG@PMDh4TE@9'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )XYG%@V,A4&S!!!,L!!!&hJ#3#-iUe+!!!!$G!!(aH!!%!!$rrrrq!*!)&AJ!!!! #!*!%%*B!N"S"mk)!N"m%!*!&6@pfD@9*EPGTEQ4[Gbj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbed4DXYG%@J!!"*i!!!S+!*!)&f*Z33!!!0d!!I& j!!3!!2rrrri!N!J9H3!!!!)!N!36PJ#3'J(cSJ#3(`3!N!9@CA*j8fPYF'aP8'a KH@9b,R"j4&C$9!#3%,8kFdHe1R0'!!!!hJ!!!0-!!!!"!*!F&AS!!!!$!!)!N!3 *!!!!#!3(!*!E!HQL!*!MFQ9cEh9bBf9c4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,86Fc+e%h-b!!!#G!!!"CS!N!J0a#!'!!!!hJ!"mAX!"!!!rrrrrJ# 3#"9l!!!!!J#3"!U@!*!D!I5L!*!I"!#3"@0[F(PbCA-ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)XYG%@V,A4&S!!!(D!!!&$`#3#1Ucm[-!!!$H!!( aI!!%!!$rrrrq!*!)&A`!!!!#!*!%#TB!N"S"p+)!N"m%!*!&E'PcG(*PFbj`H84 @3e3!N"#e1R0(Y6Tc4J!!!1!!!!$6!!!!!3#3("@"!!!!!`!#!*!%"3!!!!J%"`# 3'`(TSJ#3)h0[G@jN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&Z bed4E!!!'FJ!!$r)!N!MS#k6R!!!!i!!"mB)!"!!!rrrrrJ#3#"@#!!!!!J#3"!L @!*!D!IDL!*!I"!#3"@e[FR0P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,A4&Zbed4E!!!%d!!!$5S!N!Mq#mHG!!!!i!!"mB-!"!!!rrrrrJ#3#"@ $!!!!!J#3"!Z@!*!D!IDL!*!I"!#3"@e[FR0PE'PL,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,A4&bbed4F!!!"M!!!")`!N!K[@9r)!!!!i!!"mB3 !"!!!rrrrrJ#3#"@%!!!!!J#3"!Z@!*!D!IDL!*!I"!#3"A"XBAPKD@CQ,R"j4&C $9!#3%,D`69-!N!IK!!!!d`!!!!%!N"`9K3!!!!-!!J#3"!B!!!!)"!F!N"X"kD) !N#0cF'9PBfK'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%A,6V52i !!!G+!!!9FJ#3#&M"0Z3!!!$K!!(aKJ!%!!$rrrrq!*!)&BB!!!!#!*!%#*B!N"S "pk)!N"m%!*!&Ch*KD@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )XYG%A,,A4&`!!!'#!!!#DJ#3##KkY%m!!!$K!!(aK`!%!!$rrrrq!*!)&BF!!!! #!*!%"TB!N"S"pk)!N"m%!*!&D(9Y,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 83eG*43#3#,,A4&bbed4F!!!pm!!!X4!!N!K2b*G2!!!!i3!"mBJ!"!!!rrrrrJ# 3#"@)!!!!!J#3"!D@!*!D!IHL!*!I"!#3"90$8NP39%4@3e3!N"#h#m8`Y`[&,`! !!1)!!!$6!!!!!3#3("@*!!!!!`!#!*!%#!!!!!J%"`#3'`(TSJ#3)h4PH(4PC'P d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&ffpSqE!!!*j!!!(rB !N!LckLEK!!!!iJ!"mBS!"!!!rrrrrJ#3#"@+!!!!!J#3"!D@!*!D!ILL!*!I"!# 3"A"PC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&9YJ6B!N!Lbed49XYG%93! !$ZJ!!#8l!*!)R1+-Q!!!!0-!!I&0!!-!!2rrrri!N!J9L`!!!!)!N!30PJ#3'J( TSJ#3(`3!N!9dCAKdC@4TG#jSG'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K89@f "0J#3#,,A4&Dei)ZM!!!Gj!!!6@J!N!M2KY"m!!!!d`!"m8i!!`!!rrrrrJ#3#"@ -!!!!!J#3"!U@!*!D!HQL!*!I"!#3"A9cD@jR,QKdE@a%9N08!*!3YV)D$3#3"q- !!!$6!!!!!3#3("@0!!!!!`!#!*!%"3!!!!J%"`#3'`(TSJ#3)hGKFh4P4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&ffR0ZC!!!@HJ!!8N3!N!Ke6'X ,!!!!i`!"mB`!"!!!rrrrrJ#3#"@1!!!!!J#3"!Q@!*!D!IQL!*!I"!#3"@KdE@a PC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4GYTcEQ3!!%A) !!$k"!*!)lI*KY!!!!1-!!I'0!!3!!2rrrri!N!J9M`!!!!)!N!3(PJ#3'J(jSJ# 3(`3!N!9cGf9N,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4&f fNkEQ!!!-)!!!+'`!N!M!MGG+!!!!i`!"mBi!"!!!rrrrrJ#3#"@3!!!!!!)!N!3 'PJ#3'J(jSJ#3(`3!N!9hC@3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&49EB% f!*!)XYG%9V,A4&B!!!M)!!!6@3#3#$,NKa)!!!$6!!(a6`!$!!$rrrrq!*!)&C% !!!!#!*!%#TB!N"S"kD)!N"m%!*!&Gf&cG'8ZD(4YE%4@3e3!N"#fX%e4YV"083! !!3m!!iZJ!!!!!3#3("M$!!!!!`!#!*!%#`!!!!J%"`#3'`(TSJ#3)f&`F'aPFf0 bDA"d4&C$9!#3%,D`69%!N!B"$`!$Lkm!!!!"!*!F'-)!!!!%!!)!N!3*!!!!#!3 (!*!E!MbL!*!M4'PcDep$Eh"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,A'%*+eaKXp!!!"*J!!!Xm!N!L-Nkjp!!1,X3!$Ll)!"3!!rrrrrJ#3#"M"!!! !!J#3"!Z@!*!D!MfL!*!I"!#3"9pID@jTG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,A'%)QeaK#1!!!,N!!!!$U)!*!)$V)DM3!$Ll%!!iZc!!8 !!2rrrri!N!JB`!!!!!)!N!34PJ#3'J)pSJ#3(`3!N!96F'9MD@&XAd9fC@jdFbj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaK#%YFB3K!!!$Z)!!$V m!*!)-*&-j3!$Ll%!!iZd!!8!!2rrrri!N!JB[`!!!!)!N!34PJ#3'J)pSJ#3(`3 !N!96G'&ZC'&bC&p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!LeaK#1YFB3N!!!!!2i!!!D%J#3#&E)*(3!!iZa!!1,Y3!&!!$rrrrq!*!)',i !!!!#!*!%%CB!N"S#2D)!N"m%!*!&9A4TE'PdH9p&GQ9ZG(-ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)YFB2clA''fd!!!$Q!!!"HJ!!!4J!!!@Zr1" dCJ!$Lkm!!iZ`!!3!!2rrrri!N!JB[3!!!!)!N!3,PJ#3'J)mSJ#3(`3!N!9YB@Y PC'PcDbj`H84@3e3!N"#fXKS0!*!'!4!!"X-m!!!!!3#3("Zd!!!!!`!#!*!%"`! !!!J%"`#3'`(TSJ#3)e"XG@G*ER0'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP" jG'J!N!Lek[X(YHVl"`!!![)!!!A,!!!!DJ!!!CDkh'06!!E$G`!'`hJ!"!!!rrr rrJ#3#"Zc!!!!!J#3""5@!*!D!RbL!*!I"!#3"@0[ER4bEfacG(*TF#j`F'-ZFfa L4&C$9!#3%,F,a6#h#m8q!!!!j!!!!--!!!!"!*!F&C)!!!!#!!)!N!3$!!!!#!3 (!*!E!GQL!*!M6'PL4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'+ fUK()!!!%$J!!#YX!N!J2RCNj!!!!j!!"mC!!!!-!!2rrrri!N!J9N`!!!!)!N!3 -PJ#3'J(kSJ#3(`3!N!9"G@4TEepYB@-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)XYG%BlDdZpm!!!TD!!!G0J#3#!rXi*X!!!$N!!(aNJ!$!!$rrrr q!*!)&C8!!!!#!*!%$CB!N"S"qU)!N"m%!*!&BR9TE'4dEfpXFbj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'kPYA@`@3!!"RS!!")4!*!)SN'kPJ! !!13!!I'6!!-!!2rrrri!N!J9PJ!!!!)!N!3+PJ#3'J(kSJ#3(`3!N!9MCQeQD@a P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'5bed4N!!!%`J! !$A-!N!Jmq*%G!!!!j!!"mC3!!`!!rrrrrJ#3#"@A!!!!!J#3"!L@!*!D!IUL!*! I"!#3"@4LE@&M,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'1 fZ+EY!!!4`J!!2ji!!!%b!!!#(f)Xj-m!!!$N!!(aP3!$!!$rrrrq!*!)&CJ!!!! #!*!%$TB!N"S"qU)!N"m%!*!&4@&cH84TB@a[Ch-ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)Y[69UVEdfIi!!"8F!!"UN!!!N!KN(Jh(!!!!j!!"mCB !!`!!rrrrrJ#3#"@C!!!!!J#3"!k@!*!D!IUL!*!I"!#3"@CTEQ4PFR4[Efac,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'1fe'#q!!!I)!!!FS- !N!MNM,kF!!!!j!!"mCJ!!`!!rrrrrJ#3#"@E!!!!!J#3"!b@!*!D!IUL!*!I"!# 3"8CbB@eP9fpbDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4 NYTcER!!!#)i!!"UF!*!)IdShe3!!!13!!I'C!!-!!2rrrri!N!J9R!!!!!)!N!3 &PJ#3'J(kSJ#3(`3!N!9TBbj`H84@3e3!N"#fXKS2!*!(j3!!!13!!!!"!*!F&Cd !!!!$!!)!N!30!!!!#!3(!*!E!IUL!*!ME'PL,A0MFQP`G'PZCdC@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'kQX[aZTJ!!&[`!!*UJ!*!)9DJZ'J!!!18 !!I'R!!3!!2rrrri!N!J9RJ!!!!)!N!38PJ#3'J(lSJ#3(`3!N!9"F("XC90MFQP `G&p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeZDFKYEQ R)3!!#G!!!#eJ!*!)SFT,$3!!!18!!I'S!!3!!2rrrri!N!J9R`!!!!)!N!3GPJ# 3'J(lSJ#3(`3!N!9$Ef4P9f&bFQP[FPp6G'&ZC'&bC&p6G@PdC5j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4QXYG%CJ!!"5S!!#C!!*!)35prN!! !!!$P!!(aU3!%!!$rrrrq!*!)&D!!!!!#!*!%%jB!N"S"qk)!N"m%!*!&4QPZC'9 bAcGI-&p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'k QX[aZTJ!!)1J!!-T@!*!)dcrN6J!!!18!!I'U!!3!!2rrrri!N!J9S3!!!!)!N!3 2PJ#3'J(lSJ#3(`3!N!9'D@jNCA*I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YFB"GEA'!A8!!#D!!!$GFJ#3#'N+'[`!!!$P!!(aU`!%!!$ rrrrq!*!)&D)!!!!#!*!%'CB!N"S"qk)!N"m%!*!&6@9dFQphCA*VFep6D'9XE&p 6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4RXYG%C`! !#J3!!#FH!*!)PH#f6`!!!18!!I'X!!3!!2rrrri!N!J9S`!!!!)!N!3EPJ#3'J( lSJ#3(`3!N!94G@PMDd4bBAGI4h*KF'KTBh0I8h9TG'8ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)XYG%Cl,A4'F!!!*F!!!&k3#3#'ZS&mX!!!$P!!( aV3!%!!$rrrrq!*!)&D3!!!!#!*!%(jB!N"S"qk)!N"m%!*!&8A9TBfY%FQ&hAdG bBA"SD@0cAe0eF("XC@ePER4KE%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbed4RXYG%C`!!!VB!!!Z'!*!)X"QKk`!!!18!!I'Z!!3!!2rrrri!N!J9T3! !!!)!N!34PJ#3'J(lSJ#3(`3!N!95CA&eDA*PC&p6G@PdC5j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'kYX[aZV3!!$VJ!!%aQ!*!)rp(iQJ!!!18 !!I'[!!3!!2rrrri!N!J9TJ!!!!)!N!34PJ#3'J(lSJ#3(`3!N!96G'&ZC'&bC&p 6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr'kYX[aZV3! !!T!!!!!&1!#3#2plBR%!!!$P!!(aX!!%!!$rrrrq!*!)&DF!!!!#!*!%&CB!N"S "qk)!N"m%!*!&8h4KEQ4KFQ4I99*-Ah0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,A4'Hbed4R!!!#i!!!"c`!N!JMkr(P!!!!j3!"mE%!"!! !rrrrrJ#3#"@S!!!!!J#3"!k@!*!D!IZL!*!I"!#3"94KBQaPAe0eDA4P,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'Lbed4S!!!%pJ!!$Z-!N!J "0AG+!!!!j3!"mE)!"!!!rrrrrJ#3#"@T!!!!!J#3"!f@!*!D!IZL!*!I"!#3"94 PH(4I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%D,, A4'J!!!GU!!!KK`#3##$&GGF!!!$P!!(aX`!%!!$rrrrq!*!)&DS!!!!#!*!%%jB !N"S"qk)!N"m%!*!&9(P`C9p1B@ePFep6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr'kYX[aZV3!!#@i!!$E8!*!)qjJ8[3!!!18!!I'd!!3 !!2rrrri!N!J9U`!!!!)!N!3-PJ#3'J(lSJ#3(`3!N!9A9eGI8h9TG'8ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YEC"!,@f5M`!!!qk!!"6N!!!N!K )hG,p!!E$T`!'`kS!"!!!rrrrrJ#3#"Zb!!!!!J#3""5@!*!D!IZL!*!I"!#3"80 [C'9ABA*bD@pbAh0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,@f5P+eYNUP!!!*Z!!!+qS!N!KRGMiT!!E$T`!'`ki!"!!!rrrrrJ#3#"Za!!! !!J#3""b@!*!D!IZL!*!I"!#3"8ePG(*[Gf9bDh0I8h4KEQ4KFQ4I8h9TG'8ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YH,Fd,ALh0!!!!"-!!!!6`! !!4J!!!@ZJSjeIJ!'`kF!"X1a!!3!!2rrrri!N!JEX!!!!!)!N!3'PJ#3'J(lSJ# 3(`3!N!95C@&N6@9%9N08!*!3Y`[&1lF,a6`!!!$Q!!!!j!!!!!%!N"`9V!!!!!- !!J#3"!X!!!!)"!F!N"X"qU)!N#0XD@)YG'p[E'*[H%C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbed4VYPa-j!!!$!i!!#@%!*!)lSp!(3!!!1B!!I'i!!3 !!2rrrri!N!J9V`!!!!)!N!3*PJ#3'J(mSJ#3(`3!N!9KCA"KBfXZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%DlA'!#N!!!Y'!!!H#`#3#'9@Pe3 !!!$Q!!(aZJ!%!!$rrrrq!*!)&E%!!!!#!*!%#TB!N"S"r+)!N"m%!*!&B@9dEfp XFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4XYPa-d3!!$G` !!$2F!*!)l%A2l!!!!1B!!I'l!!3!!2rrrri!N!J9XJ!!!!)!N!3+PJ#3'J(mSJ# 3(`3!N!9KCA4jF'9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,- &U"1fVf1U!!!3EJ!!9kX!!!"k!!!"QL0qN@S!!!$Q!!(a[!!%!!$rrrrq!*!)&E- !!!!#!*!%$CB!N"S"r+)!N"m%!*!&3A"`C@&bB@jMC5j`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbed4TYUpMUJ!!)(`!!)QF!!!!I!!!!CU65A1`!!! !jJ!"mEd!"!!!rrrrrJ#3#"@d!!!!!J#3"!k@!*!D!IbL!*!I"!#3"8&`F'aP4AC PER4c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A-ZUffVf1U!!! #6J!!"T)!N!JFF%98!!!!jJ!"mEi!"!!!rrrrrJ#3#"@e!!!!!J#3"!Z@!*!D!Ib L!*!I"!#3"8*KE'a[Efjc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,A4'QfVf1U!!!#d!!!#4S!N!JLB#a)!!!!jJ!"mEm!"!!!rrrrrJ#3#"@f!!! !!J#3"!f@!*!D!IbL!*!I"!#3"80[EA"[EQ9ZG(-ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)Y(eE`,D6TZF!!!)5!!!'c`#3#-KK$)F!!!$Q!!(a`!! %!!$rrrrq!*!)&EF!!!!#!*!%%TB!N"S"r+)!N"m%!*!&3fpZG(*[E%&MBf9cFfp b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,D[CY@fVfE9!!!2Z!! !3DJ!N!L#cLqG!!!!jJ!"mF%!"!!!rrrrrJ#3#"@i!!!!!J#3"!Z@!*!D!IbL!*! I"!#3"80[ER4bEfac,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,, A4'QfZ+V3!!!#c!!!"qN!N!J8l)"!!!!!jJ!"mF)!"!!!rrrrrJ#3#"@j!!!!!J# 3"!U@!*!D!IbL!*!I"!#3"84TB@a[Ch-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)XkZNh,D[BlN!!!-#!!!,RJ#3#2"PKhd!!!$Q!!(a``!%!!$rrrr q!*!)&ES!!!!#!*!%$*B!N"S"r+)!N"m%!*!&4(*KCf0[ER0d,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,A-ZUffVf1j!!!#Z!!!"kX!N!K9cCeN!!! !jJ!"mF3!"!!!rrrrrJ#3#"@l!!!!!J#3"!Q@!*!D!IbL!*!I"!#3"89fC@jdFbj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4UYUpMZ3!!!Pi!!!A m!*!)AX"Gk3!!!1B!!I(&!!3!!2rrrri!N!J9[!!!!!)!N!3)PJ#3'J(mSJ#3(`3 !N!9'EfjdFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfVf1rYUp M[`!!$%S!!$Y,!*!)MfB+Z!!!!1B!!I('!!3!!2rrrri!N!J9[3!!!!)!N!3)PJ# 3'J(mSJ#3(`3!N!9*BfpZFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbed4UYUpMZ3!!!8)!!!+f!*!)R6,!*J!!!1B!!I((!!3!!2rrrri!N!J9[J! !!!)!N!3)PJ#3'J(mSJ#3(`3!N!9-DA0dFbj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Ldk*p,Y1LI5`!!!qi!!!Sk!*!)paA(Z3!!!1B!!I()!!3!!2r rrri!N!J9[`!!!!)!N!30PJ#3'J(mSJ#3(`3!N!90C@4TB84PFf0b,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,N2-1fVf1j!!!#F!!!"Pm!N!Mj$Ac Y!!!!jJ!"mFN!"!!!rrrrrJ#3#"A!!!!!!J#3"!L@!*!D!IbL!*!I"!#3"8ePER9 c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'UfR0ZG!!!(e!! !&%F!N!JJj['D!!!!jJ!"mFS!"!!!rrrrrJ#3#"A"!!!!!J#3"!k@!*!D!IbL!*! I"!#3"8eTEQP"48CbB@eP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,-*N[DfVf1k!!!"b!!!"2)!N!KfXCj3!!!!jJ!"mFX!"!!!rrrrrJ#3#"A#!!! !!J#3"!k@!*!D!IbL!*!I"!#3"9&%6fCQFf0bC@9Z,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,D[CY@fVfE9!!!'%J!!%ZB!N!Mq+-mr!!!!jJ!"mF` !"!!!rrrrrJ#3#"A$!!!!!J#3"!b@!*!D!IbL!*!I"!#3"9&eD@0V4(*KGbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LfJ8fNYUpMZJ!!*!3!!)RP!*! )!JEQV3!!!1B!!I(0!!3!!2rrrri!N!J9a!!!!!)!N!3-PJ#3'J(mSJ#3(`3!N!9 4G@PMDe4TE@8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XZ3m`lD [BlS!!!%+!!!#JJ#3#$L*,Ei!!!$Q!!(acJ!%!!$rrrrq!*!)&F8!!!!#!*!%$*B !N"S"r+)!N"m%!*!&8Q9cEh9bBf9c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 88(PdD!#3#,D[CYHfVfEA!!!1@J!!00N!N!KdI@-i!!!!jJ!"mFm!"!!!rrrrrJ# 3#"A'!!!!!J#3"!L@!*!D!IbL!*!I"!#3"90[G@jN,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,A4'ZfVf1k!!!"e!!!",`!N!LDAb+&!!!!jJ!"mG! !"!!!rrrrrJ#3#"A(!!!!!J#3"!Z@!*!D!IbL!*!I"!#3"94PH(4&C'Pd,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,@,T$bfVf1k!!!$UJ!!#+m!N!L TXmm$!!!!jJ!"mG%!"!!!rrrrrJ#3#"A)!!!!!J#3"!f@!*!D!IbL!*!I"!#3"9G "8e4&BfpZFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YUpQelE fPiF!!!G%!!!D$`#3#*A4#$3!!!$Q!!(adJ!%!!$rrrrq!*!)&FN!!!!#!*!%#TB !N"S"r+)!N"m%!*!&9fPZC'phFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0 A588!N!Le41NYY86[@3!!!13!!!&X!*!)KCF0T3!'`qJ!"X2f!!3!!2rrrri!N!J EV`!!!!)!N!33PJ#3'J(mSJ#3(`3!N!9)G'eX8Q9ZC'9bD@jR,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'5bed4N!!!"fJ!!!r!!N!MDbh@M!!! !j!!"mCS!!`!!rrrrrJ#3#"A+!!!!!J#3"!Z@!*!D!IUL!*!I"!#3"@eKBf0KBfK P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mEU@fGXIU!!#%+!! "NC%!N!MY@,4`!!!!j!!"mCX!!`!!rrrrrJ#3#"A,!!!!!J#3"!b@!*!D!IUL!*! I"!#3"@eKBf9bFQpbFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br'kPYXrZqJ!!"Li!!""B!*!)S8TaA3!!!13!!I'F!!-!!2rrrri!N!J9c!!!!!) !N!3)PJ#3'J(kSJ#3(`3!N!90380'8bj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!LdJ@CcY68D`3!!!rB!!!h@!!!"EJ!!"FU#RG,d!!!!j!!"mCd!!`! !rrrrrJ#3#"A0!!!!!J#3"!Q@!*!D!IUL!*!I"!#3"@eKBfCcELj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4PYXX@!J!!"2!!!!bM!*!)82lTj`! !!13!!I'H!!-!!2rrrri!N!J9cJ!!!!)!N!30PJ#3'J(kSJ#3(`3!N!9YB@0[Fh4 [Efac,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'@bed4P!!! $NJ!!#!`!N!MJB3I)!!!!j!!"mCm!!`!!rrrrrJ#3#"A2!!!!!J#3"!Q@!*!D!IU L!*!I"!#3"@eKBh4dH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L c5MCSYKN[`3!!#G`!!"U%!*!)mK)#LJ!!!13!!I'J!!-!!2rrrri!N!J9d!!!!!) !N!33PJ#3'J(kSJ#3(`3!N!93DAK0BA"AFQ&`F'9b,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,A4'@bi`2C!!!&4!!!&0S!N!KpHKVc!!!!j!!"mD% !!`!!rrrrrJ#3#"A4!!!!!J#3"!k@!*!D!IUL!*!I"!#3"A"bC@CPFQ9ZBf9c,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'@bed4P!!!%8!!!#E% !N!JpNPlp!!!!j!!"mD)!!`!!rrrrrJ#3#"A5!!!!!J#3"!k@!*!D!IUL!*!I"!# 3"A"jAh*PFfpeFQ0P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, A4'@fUk("!!!%[!!!$Ki!N!K0p[2U!!!!j!!"mD-!!`!!rrrrrJ#3#"A6!!!!!J# 3"!k@!*!D!IUL!*!I"!#3"A"jG'K[ER"bC@Cc,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,A4'@bed4P!!!#kJ!!#8m!N!K&PJ`r!!!!j!!"mD3!!`! !rrrrrJ#3#"A8!!!!!J#3"!q@!*!D!IUL!*!I"!#3"A&eD@9dBfpZFfpXC5j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4MXYG%B`!!!H`!!!3I!*! )FPm!m3!!!13!!I'P!!-!!2rrrri!N!J9e3!!!!)!N!3,PJ#3'J(kSJ#3(`3!N!9 6Eh9ZC%eRFLj`H84@3e3!N"#h#m8qY`[&2`!!!1F!!!$N!!!!!3#3("A@!!!!!`! #!*!%"!!!!!J%"`#3'`(kSJ#3)h4PFh4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)XYG%E,DFfjm!!!ID!!!6,!#3#)fSTQB!!!$R!!(ae!!%!!$rrrrq!*! )&GF!!!!#!*!%$jB!N"S"rD)!N"m%!*!&389cCA*fCA*dCA0d,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&bFh*M8P0&4!#3#,EQe65fjY8d!*!+(KS!!'2$@9+Nh`!!!1F !!I(9!!3!!2rrrri!N!J9f!!!!!)!N!34PJ#3'J(pSJ#3(`3!N!9"4A0PFRCPFR4 PFh3ZFR0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4XXYG%E!! !$J`!!#c'!*!)Bl)8*`!!!1F!!I(@!!3!!2rrrri!N!J9f3!!!!)!N!3(PJ#3'J( pSJ#3(`3!N!9KCA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, A4'fbed4Y!!!"jJ!!"&d!N!LfQ,)0!!!!j`!"mGF!"!!!rrrrrJ#3#"AD!!!!!J# 3"!Q@!*!D!IfL!*!I"!#3"@0YG'9cG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbed4YXYG%E3!!!RB!!!45!*!)+(q-+J!!!1F!!I(B!!3!!2rrrri !N!J9f`!!!!)!N!3+PJ#3'J(pSJ#3(`3!N!9MG'*dCA0d,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,1@PJUcPTB+!!!#+!!!"(d!N!LQY0U3!!!!!1F !!I(C!!3!!2rrrri!N!J9h!!!!!)!N!3,PJ#3'J(pSJ#3(`3!N!9NFQ&RG'9cG#j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4YYTcER`!!"U3!!!q $!*!)eQ9"K!!!!1F!!I(D!!3!!2rrrri!N!J9h3!!!!)!N!3(PJ#3'J(pSJ#3(`3 !N!9PBfK[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'fbed4 Y!!!!R!!!!48!N!M"Kp-Z!!!!j`!"mGX!"!!!rrrrrJ#3#"AH!!!!!J#3"!q@!*! D!IfL!*!I"!#3"@CRBQGdD@ePG'9cG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbed4YXYG%E3!!!5!!!!(A!*!)m49,dJ!!!1F!!I(F!!3!!2rrrri !N!J9h`!!!!)!N!30PJ#3'J(pSJ#3(`3!N!9TBfGXG@9dCA0d,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'fbed4Y!!!"&!!!!GB!N!MpJdcd!!! !j`!"mGd!"!!!rrrrrJ#3#"AJ!!!!!J#3"!k@!*!D!IfL!*!I"!#3"A"bEfGbCA0 cBQ&b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'fbed4Y!!! %p!!!$Hi!N!J2H`al!!!!j`!"mGi!"!!!rrrrrJ#3#"AK!!!!!J#3"!D@!*!D!If L!*!I"!#3"A4KC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4 ZXYG%EJ!!!2B!!!')!*!)d`6ZR3!!!1F!!I(I!!3!!2rrrri!N!J9iJ!!!!)!N!3 (PJ#3'J(pSJ#3(`3!N!9dBh4X,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,A4'kbed4Z!!!"Y!!!!VN!N!JV"c()!!!!j`!"mH!!"!!!rrrrrJ#3#"A M!!!!!J#3"!H@!*!D!IfL!*!I"!#3"A4NE'FZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)XYG%EV,A4'i!!!)5!!!$b!#3#0aBRM%!!!$R!!(ai3!%!!$ rrrrq!*!)&H3!!!!#!*!%%*B!N"S"rD)!N"m%!*!&G'4XCepYEf4PE'9cFbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4ZXYG%EJ!!!pi!!!L,!*! )KKHdN3!!!1F!!I(L!!3!!2rrrri!N!J9j3!!!!)!N!3(PJ#3'J(pSJ#3(`3!N!9 dC@aX,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4'kbed4Z!!! !8!!!!&X!N!JFJ6ZT!!!!j`!"mH-!"!!!rrrrrJ#3#"AQ!!!!!J#3"!k@!*!D!If L!*!I"!#3"A4PFh4ICQPZC'9bAf&P4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,4f`mHdGX2(!!!!P!!!!0i!N!K-VQ9)!!!!j`!"mH3!"!!!rrrrrJ#3#"A R!!!!!J#3""D@!*!D!IfL!*!I"!#3"A4PFh4IFf9dBfpZG(*[E'4KG'%ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%EV,A4'i!!!%`!!!#@3#3#2V L,P!!!!$R!!(aj3!%!!$rrrrq!*!)&HJ!!!!#!*!%$CB!N"S"rD)!N"m%!*!&G'9 cG&pcG@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed4ZXYG %EJ!!!C3!!!-!N!Pce*G-!!!!j`!"mHB!"!!!rrrrrJ#3#"AT!!!!!J#3""'@!*! D!IfL!*!I"!#3"A4PFh4QD@jNCA*[F'9Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,A4'qbed4[!!!%"!!!#1-!N!LG&BC1!!!!j`!"mHF!"!!!rrr rrJ#3#"AU!!!!!J#3"!L@!*!D!IfL!*!I"!#3"A4XDA0d,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,A4'qeGE"N!!!$@J!!"a%!N!KXpej@!!!!j`! "mHJ!"!!!rrrrrJ#3#"AV!!!!!J#3"!q@!*!D!IfL!*!I"!#3"A4XDA0dAf4TB@a [Cbj`H8C@3e3!N!F))!!!!3#3#!F!N")"FR0bBe*6483!N!Lf)P5!YL*8J!#3#q! !!!'IrQZ'X`!!!1F!!I(T!!3!!2rrrri!N!J9l!!!!!)!N!34PJ#3'J(pSJ#3(`3 !N!9dE'PcG&pND@&XEfFZFR0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbed4[XYG%E`!!!U3!!!A$!*!)4FHK,`!!!1F!!I(U!!3!!2rrrri!N!J9l3! !!!)!N!3)PJ#3'J(pSJ#3(`3!N!9dE@9ZG5j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbed4[YT1Qj`!!!cS!!!G4!*!))`FP0!!!!1F!!I(V!!3!!2r rrri!N!J9lJ!!!!)!N!30PJ#3'J(pSJ#3(`3!N!9dFf0bEfaXGfPZ,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'qbed4[!!!"%J!!!D8!N!JD)+[ Q!!!!j`!"mH`!"!!!rrrrrJ#3#"A[!!!!!J#3"!H@!*!D!IfL!*!I"!#3"A4cEQ3 ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%El,A4'm!!!$@!!! "03#3#!)!FYF!!!$R!!(al3!%!!$rrrrq!*!)&I!!!!!#!*!%"TB!N"S"rD)!N"m %!*!&G(4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4'qbed4 [!!!$1!!!"`B!N!K1lCPX!!!!j`!"mHi!"!!!rrrrrJ#3#"Aa!!!!!J#3"!Q@!*! D!IfL!*!I"!#3"A4dC@4TG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbed4[XYG%E`!!!j)!!!Ih!*!)lheaCJ!!!1F!!I([!!3!!2rrrri!N!J9mJ! !!!)!N!3*PJ#3'J(pSJ#3(`3!N!9dGf9NDA3ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)XYG%F,,A4(!!!!#!!!!!SJ#3#)+bSMS!!!$R!!(am!!%!!$ rrrrq!*!)&I-!!!!#!*!%"jB!N"S"rD)!N"m%!*!&G(GTELj`H84@3e3!N"#fXKS 9!*!'!4!!!p+T!!!!!3#3("QY!!!!"!!#!*!%#!!!!!J%"`#3'`(pSJ#3)feVBhG `FQpU4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AaYU#emEIZ!!!!LJ! !!1-!!!%D!!!&VX+9c-J!""be!!3FY`!&!!$rrrrq!*!)'DN!!!!#!*!%$jB!N"S #9k)!N"m%!*!&G'9cG'eVBhG`FQpU,R"j4&C$9!#3%,Db'KB!N!B"%3!'a$J!!!! "!*!F'ki!!!!&!!)!N!3$!!!!#!3(!*!E!PHL!*!ME'PL4PC$9!#3"`JJ!!!"!*! )"`#3%!8!!A0SE'*3HA4S!*!)YI'p8EAd3q`!!!@B!!!-)`!!!'J!!!'5hL"!A`! 'a$X!"X3m!!B!!2rrrri!N!JEV3!!!!)!N!33PJ#3'J*lSJ#3(`3!N!9YDf0hG'9 cG#j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,Ad3K5ep%2 F!!!3)!!!c!)!N!K'Z"$U!!E%1!!'a$N!"3!!rrrrrJ#3#"ZX!!!!!J#3""#@!*! D!PHL!*!I"!#3"@eVBhGdCA0d,R"bDLjiE@a'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y8'BFl9"Q(-!!!1J!!!(G`#3#)RVDKi!!i[a!!1,r3!$!!$rrrr q!*!)',J!!!!#!*!%#CB!N"S"qU)!N"m%!*!&D@0[F'9Z,R"j4&C$9!#3%,D`69@ fX%e@!!!"$`!$Lr%!!!!"!*!F',F!!!!$!!)!N!35!!!!#!3(!*!E!IUL!*!ME'P L,A0MFQP`G("KBfYKCf9c4&C$9!#3%,D`698!N!B"$`!$M"`!!!!"!*!F',B!!!! %!!)!N!3,!!!!#!3(!*!E!MHL!*!M3fpNC9GKFR*TEh*'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)YF)KGVA$-8%!!!&Q!!!$[J!!!%!!!!%k)Sf'p3!$M"d !!i`H!!8!!2rrrri!N!JBY3!!!!)!N!3,PJ#3'J)lSJ#3(`3!N!9IAfPZDA4IAbj `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le`L&MYF-a2`!!$lJ!!&1 +!*!)XN6&63!$M"d!!i`I!!8!!2rrrri!N!JBY!!!!!)!N!38PJ#3'J)lSJ#3(`3 !N!9$Ef4P9f&bFQP[FPpcG@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Le`L&dYF-a2`!!0q!!!5Ih!*!)TDmZbJ!$M"d!!i`J!!8!!2rrrri!N!J BX`!!!!)!N!3CPJ#3'J)lSJ#3(`3!N!90CA4bEhGPFQYcAe0SC@aXAe0eDA4P,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A#)1Le`c%r!!!#h!!!"G3 !!!"!!!!"1XVrcT3!!i`G!!1-)3!&!!$rrrrq!*!)',)!!!!#!*!%#jB!N"S#1k) !N"m%!*!&8Q9aG@PbC@3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )YF)Jk,A$-6m!!!Qm!!!VrJ#3#-ai9YJ!!i`G!!1-)J!&!!$rrrrq!*!)',%!!!! #!*!%%CB!N"S#1k)!N"m%!*!&8h4KEQ4KFQ4I8h9TG'8ZF(P%9N08!*!3YV"093# 3"J%2!!1-(!!!!!%!N"`BX!!!!!3!!J#3"!J!!!!)"!F!N"X#0k)!N#0&H("XEh* PFNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJKIYFB)A`!!!B3!!!4 T!*!)!Z89&!!$M#-!!i`N!!8!!2rrrri!N!JBV`!!!!)!N!3,PJ#3'J)kSJ#3(`3 !N!9IAfPZDA4IAbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJK GYFB)A3!!!a3!!!JS!*!)LhIH!3!$M#-!!i`P!!8!!2rrrri!N!JBVJ!!!!)!N!3 HPJ#3'J)kSJ#3(`3!N!90D@0bEh0[CR4I5@jdCA*ZCA4I4AK`E'pbCA)ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB)AEA'#&d!!!)q!!!%D3#3#0b 8kZJ!!i`M!!1-*J!&!!$rrrrq!*!)'+d!!!!#!*!%%CB!N"S#1U)!N"m%!*!&6Q9 dFf0KF'9I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB )AEA'#&d!!!+J!!!,Q`#3#&3Pa`%!!i`M!!1-*`!&!!$rrrrq!*!)'+`!!!!#!*! %%CB!N"S#1U)!N"m%!*!&8Q9aG@PbC@4I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)YFB)AEA'#&d!!!*B!!!%U3#3#*XUlC!!!!1-)`!$M#J !"3!!rrrrrJ#3#"LV!!!!!J#3"!b@!*!D!MUL!*!I"!#3"9956&p6G@PdC5j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJKGYFB)A3!!#eJ!!&1k!*! )2`[k)J!$M#-!!i`T!!8!!2rrrri!N!JBUJ!!!!)!N!38PJ#3'J)kSJ#3(`3!N!9 AC@*I3R*[Gh0PFPp6G@PdC5j`H84@3e3!N"#fX%e@!*!'!3m!!i`F!!!!!3#3("L T!!!!"!!#!*!%"J!!!!J%"`#3'`)hSJ#3)dCTEQ4PFNC@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!LeaJ$AYFL`)3!!!KB!!!II!*!)B5LTN`!$M#S!!i`V!!8 !!2rrrri!N!JBU!!!!!)!N!3,PJ#3'J)jSJ#3(`3!N!9IAfPZDA4IAbj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJ$8YFL`(J!!#IB!!%5Y!*!)4Kc @+!!$M#S!!i`X!!8!!2rrrri!N!JBT`!!!!)!N!3CPJ#3'J)jSJ#3(`3!N!9$Efj dB@PZCA*cAf&ZC&pQEfaNCA*c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,A'!05eb,!H!!!85J!!@D3!N!JV&NPY!!1-+J!$M#d!"3!!rrrrrJ#3#"L Q!!!!!J#3""#@!*!D!MQL!*!I"!#3"89KFQaTCA*IG'9bEA-ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)YFB!e,A)X"m!!!-m!!!)C3#3#2J*[r`!!i` U!!1-,J!&!!$rrrrq!*!)'+8!!!!#!*!%$jB!N"S#1D)!N"m%!*!&4@jeE@9bBA4 TEfjc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A'!05eb,!I!!! 'h!!!'qF!N!LUY%Zb!!1-+J!$M#m!"3!!rrrrrJ#3#"LN!!!!!J#3""D@!*!D!MQ L!*!I"!#3"8CTE'9cAf&ZC&pcG@PdBf&cCA-ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YFB!e,A)X"i!!!SX!!![[3#3#$l!H9B!!i`U!!1--!!&!!$ rrrrq!*!)'+-!!!!#!*!%%*B!N"S#1D)!N"m%!*!&4QPZC'9bAd*KFfPMFbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LeaJ$8YFL`(J!!#"J!!#B"!*! )jPSj5`!$M#S!!i`a!!8!!2rrrri!N!JBSJ!!!!)!N!32PJ#3'J)jSJ#3(`3!N!9 'D@jNCA*IDA4PEA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB !e,A)X"m!!!A'!!!A$!#3#$NrCq!!!i`U!!1--J!&!!$rrrrq!*!)'+%!!!!#!*! %%CB!N"S#1D)!N"m%!*!&6f*cEfaPG'9IG'9bEA-ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&43HA4S!*!)YFB!e,A)X"m!!!5Q!!!3f`#3#%Y@lAB!!i`U!!1--`! &!!$rrrrq!*!)'+!!!!!#!*!%%TB!N"S#1D)!N"m%!*!&8(*[Bf9cFepME'&cFf9 c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A'!-qeb,!H!!!'lJ! !+I)!N!MP'+Dm!!1-+J!$M$3!"3!!rrrrrJ#3#"LI!!!!!J#3""'@!*!D!MQL!*! I"!#3"90dB@jNBA*NAe0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,A'!05eb,!I!!!)(J!!)NF!N!JA#"+`!!1-+J!$M$8!"3!!rrrrrJ#3#"L H!!!!!J#3""1@!*!D!MQL!*!I"!#3"94jF'9I4'9QD@jTG'P[ER-ZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFB!e,A)X"m!!!Z-!!![83#3#1pd"1! !!i`U!!1-0J!&!!$rrrrq!*!)'*d!!!!#!*!%%CB!N"S#1D)!N"m%!*!&9fPZC'p hAf0XBA0cCA-ZF(P%9N08!*!3YV"09J#3"J%2!!1-(!!!!!%!N"`BR!!!!!3!!J# 3"!J!!!!)"!F!N"X#0k)!N#01CA4cBf&`C8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Le`LdcYF-aS3!!!FB!!!8p!!!!3!!!!6SD''Rf!!1-0`!$M$J!"3! !rrrrrJ#3#"LE!!!!!J#3"!Z@!*!D!MLL!*!I"!#3"9pID@jTG&pI,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A#,5qe`c'I!!!(&J!!)P8!N!M)0kG N!!1-0`!$M$N!"3!!rrrrrJ#3#"LD!!!!!J#3""#@!*!D!MLL!*!I"!#3"8e[HQP XE'&IFh9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YF)Y-,A $-Cm!!!0N!!!)q3#3#%(4#2m!!i`h!!1-1J!&!!$rrrrq!*!)'*N!!!!#!*!%$CB !N"S#1+)!N"m%!*!&8'phCA*3E'&ZG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Le`LdPYF-aR`!!!X3!!!Z`!!!!3!!!!6U5TpGF!!1-0`!$M$X!"3! !rrrrrJ#3#"LB!!!!!J#3""'@!*!D!MLL!*!I"!#3"9*PFA9TFQ9NAh0eDA4P,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A#,5De`c'I!!!(#!!!'@X !N!MSJ05E!!1-0`!$M$`!"3!!rrrrrJ#3#"LA!!!!!J#3""'@!*!D!MLL!*!I"!# 3"90dB@jNBA*NAe0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,A#,5He`c'I!!!#R!!!"9F!N!KSF06l!!1-0`!$M$d!"3!!rrrrrJ#3#"L@!!! !!J#3""@@!*!D!MLL!*!I"!#3"90dB@jNBA*NAe956&pcG@PdC5j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le`LdaYF-aR`!!!p!!!!T,!!!!3!!!!6V @XN",!!1-0`!$M$i!"3!!rrrrrJ#3#"L9!!!!!J#3"!H@!*!D!MLL!*!I"!#3"94 PH(3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YF)Y,EA$-Cm!!!P Q!!!fc`#3#1!fblJ!!i`h!!1-2`!&!!$rrrrq!*!)'*3!!!!#!*!%&CB!N"S#1+) !N"m%!*!&9fpbE'4AD@4P9f9LAh0eDA4P,R"j4&C$9!#3%,D`69B!N!B"$`!$M"` !!!!"!*!F'*-!!!!%!!)!N!3*!!!!#!3(!*!E!MHL!*!M8h4N8h9TG'9c4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A$,3Ze`bd,!!!#'!!!"fd!N!M0%q6 "!!1-3!!$M%%!"3!!rrrrrJ#3#"L5!!!!!J#3"!Z@!*!D!MDL!*!I"!#3"9pID@j TG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,A$,3Ue`bd+!!! J(!!!`N`!N!JI*drD!!1-3!!$M%)!"3!!rrrrrJ#3#"L4!!!!!J#3""5@!*!D!MD L!*!I"!#3"8&`F'aP8f0bDA"dAe0eDA4P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,A$,3Ue`bd+!!!*,J!!*aB!N!LLGSA3!!1-3!!$M%-!"3!!rrr rrJ#3#"L3!!!!!!)!N!3HPJ#3'J)fSJ#3(`3!N!90B@0TER4[FfKI3fpZEQ9MG'P fDA4jAd0XBA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YF-Y#VA $,3S!!!RQ!!!QbJ#3#$RSlT-!!ia!!!1-4!!&!!$rrrrq!*!)')m!!!!#!*!%'jB !N"S#0U)!N"m%!*!&8A9TBfY%FQ&hAdGbBA"SD@0cAe0eDA4P,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,A$,3Ue`bd+!!!#8J!!"Fi!N!K6diT[!!1 -3!!$M%8!"3!!rrrrrJ#3#"L1!!!!!J#3""k@!*!D!MDL!*!I"!#3"9&eD@0V4(* KGep(FQ&`D'PMFep6GA"`E'9YC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Le`bd+YF-Y#J!!!43!!!(!!*!)p$4!j`!$M%!!!ia'!!8!!2rrrri!N!J BM3!!!!)!N!34PJ#3'J)fSJ#3(`3!N!95CA&eDA*PC&p6G@PdC5j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le`bd+YF-Y#J!!$X)!!&$#!*!)d3qbV`! $M%!!!ia(!!8!!2rrrri!N!JBM!!!!!)!N!34PJ#3'J)fSJ#3(`3!N!96G'&ZC'& bC&p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le`bd+YF- Y#J!!!X!!!!Dm!*!)JE8K'`!$M%!!!ia)!!8!!2rrrri!N!JBL`!!!!)!N!31PJ# 3'J)fSJ#3(`3!N!98B@*XC9p6G@PdC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Le`bd+YF-Y#J!!"H`!!"3m!*!)GTFGcJ!$M%!!!ia*!!8!!2rrrri !N!JBLJ!!!!)!N!30PJ#3'J)fSJ#3(`3!N!98CAKdAe0eDA4P,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,A$,3Ue`bd+!!!'HJ!!(3B!N!KEJ21M!!1 -3!!$M%S!"3!!rrrrrJ#3#"L*!!!!!J#3""1@!*!D!MDL!*!I"!#3"94jF'9I6Q& YCA0I8h9TG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YEQR)EA '"QX!!!,S!!!'!`#3#2@C3Ti!!i[a!!1-"!!$!!$rrrrq!*!)')J!!!!#!*!%#jB !N"S"qU)!N"m%!*!&ER0bC@e[G'8ZF(P%9N08!*!3YV)D%`#3"J%3!!25-3!!!!% !N"`CU!!!!!-!!J#3"!X!!!!)"!F!N"X"qU)!N#0YDf0hF(*[DQ9MG%C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!LemE"cYT1m[`!!!m!!!!Uk!!!"2!!!"JE 2'ECj!!3FU`!%(+`!"!!!rrrrrJ#3#"QR!!!!!J#3"!Z@!*!D!PDL!*!I"!#3"9p ID@jTG&pI,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,AaXBHep%2 C!!!#*J!!"*%!!!%8!!!&VJ)U8e`!""bV!!3FV3!%!!$rrrrq!*!)'DB!!!!#!*! %#jB!N"S#9U)!N"m%!*!&BhGdB@aVCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)YH4[YVD9[UB!!!A)!!!3k3!!!6`!!!B'S',*I`!%(+X!""bZ!!3 !!2rrrri!N!JCT3!!!!)!N!3,PJ#3'J*@SJ#3(`3!N!9MGhKYE'GPELj`H84@3e3 !N"#fX%eB!*!'!4%!!M56!!!!!3#3("X#!!!!"!!#!*!%$`!!!!J%"`#3'`*@SJ# 3)h4PEA"XBA4P,@0KFQ*[ENC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"PF()!N!L f4dqbYNG2XJ!!!(J!!!%K!!!!MJ!!!GDr+aGV!!)dP`!#0*J!"3!!rrrrrJ#3#"X "!!!!!J#3""Q@!*!D!RDL!*!I"!#3"A4PEA"XBA4P,@&XE'aTBR*KFQPPFbjiE@a '9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YHKZSVASEU)!!!"`!!!"&`! !!53!!!B'!1dVl!!#0*F!!M5C!!8!!2rrrri!N!JE!*!%!J#3""H@!*!D!RDL!*! I"!#3"A4PEA"XBA4P,@&XE(0[GA*MCA-ZH'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88LTMD!#3#,ASF$#ek(!`!!!!H!!!!1X!!!%B!!!&VX58iZN!!M5A!!)dQJ! &!!$rrrrq!*!)'[m!!!!#!*!%&TB!N"S#GU)!N"m%!*!&G'9YF'aKG'8YCh*[GA" XDA0d,RKYE%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"PF()!N!Lf4e!lYNG31`! !!(`!!!$Y!!!!LJ!!!GCr*XU%!!)dP`!#0*X!"3!!rrrrrJ#3#"Vq!!!!!J#3""Q @!*!D!RDL!*!I"!#3"A4PEA"XBA4P,@GbEh9`E'PcG'aTBLjiE@a'9N08!*!(##! !!!%!N!J(!*!5!94&@&45+Q0S!*!)YHK[6,ASEd`!!!"F!!!!``!!!4B!!!@ZClD bi!!#0*F!!M5F!!8!!2rrrri!N!JDr3!!!!)!N!3@PJ#3'J*fSJ#3(`3!N!9dC@e `E'&dC5eXD@jVEh*NCA)ZH'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88'9`FJ# 3#,C(6rQf4e!'!!!!AJ!!!-8!!!#'!!!"eV&2TrB!!M5A!!)dR3!&!!$rrrrq!*! )'[`!!!!#!*!%'CB!N"S#GU)!N"m%!*!&G'9YF'aKG'8YE'PZDfpbC'9bE'PL,RK YE%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!LemDbPYP"k63!!!+)!!!* T!!!")!!!"JB&`r28!!)dP`!#0*i!"3!!rrrrrJ#3#"Vl!!!!!J#3""H@!*!D!RD L!*!I"!#3"A4PEA"XBA4P,A0PBA*MD'4TFR-ZH'eX4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K83eG*43#3#,D4*GDfNmhf!!!D6!!")%S!!!#5!!!"QS(Fe&`!!M5A!!) dR`!&!!$rrrrq!*!)'[S!!!!#!*!%%*B!N"S#GU)!N"m%!*!&G'9YF'aKG'8ZF(* U,RKYE%4@3e3!N"#fX%eB!*!'!4%!!M56!!!!!3#3("Vj!!!!"!!#!*!%$!!!!!J %"`#3'`*@SJ#3)h4PEA"XBA4P,A"`BdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" PF()!N!Lf4dqbYNG2XJ!!!(J!!!%K!!!!M!!!!GDr+aGV!!)dS!!#0+%!"3!!rrr rrJ#3#"Vi!!!!!J#3""Q@!*!D!R@L!*!I"!#3"A4PEA"XBA4P,@&XE'aTBR*KFQP PFbjiE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YHKZSVASEU)!!!" `!!!"&`!!!53!!!B'!1dVl!!#0+!!!M5L!!8!!2rrrri!N!JDp`!!!!)!N!3APJ# 3'J*eSJ#3(`3!N!9dC@e`E'&dC5eKE'acEh9bBf9c,RKYE%C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&)UBfJ!N!Lek(!`YHK`-!!!!(J!!!$V!!!"'!!!"Dl%P1,T!!) dS!!#0+-!"3!!rrrrrJ#3#"Vf!!!!!J#3""D@!*!D!R@L!*!I"!#3"A4PEA"XBA4 P,@GbEh9`E'PcG#jiE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&43CA"b!*!)YNG 31lC(8$X!!!"m!!!!l3!!!)S!!!(@IbE+K!!#0+!!!M5N!!8!!2rrrri!N!JDp3! !!!)!N!3CPJ#3'J*eSJ#3(`3!N!9dC@e`E'&dC5eRFQpeF'aTFh4XD@)ZH'eX4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,ASEdbek'p-!!!!A!!!!--!!!% @!!!&VQHfXZ!!!M5J!!)dT3!&!!$rrrrq!*!)'[3!!!!#!*!%&TB!N"S#GD)!N"m %!*!&G'9YF'aKG'8YE'PZDfpbC'9b,RKYE%C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"PF()!N!Lf4drjYNG3"J!!!&i!!!$&!!!!KJ!!!GDa6kIf!!)dS!!#0+B!"3! !rrrrrJ#3#"Vc!!!!!J#3""Q@!*!D!R@L!*!I"!#3"A4PEA"XBA4P,@aTEQY[FQ4 PFQaTBLjiE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YI'XTEC3HNd !!!#L!!!#D3!!!5!!!!B'"F2ce!!#0+!!!M5R!!8!!2rrrri!N!JDmJ!!!!)!N!3 APJ#3'J*eSJ#3(`3!N!9dC@e`E'&dC5ecC@&bBfKNDA*c,RKYE%C@3e3!N!F))!! !!3#3#!F!N")"9%9B9%0A588!N!LfNkT8YT1ZDJ!!%(B!!0(f!!!!JJ!!!CV4DL$ 3!!)dS!!#0+J!"3!!rrrrrJ#3#"Va!!!!!J#3""#@!*!D!R@L!*!I"!#3"A4PEA" XBA4P,R"bDLjiE@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YHIb&lA Rmli!!!TZ!!!K#J#3#2hVN!$r!!25-3!%(+S!!`!!rrrrrJ#3#"QH!!!!!J#3"!k @!*!D!IUL!*!I"!#3"ACTC'9[FQ9KC'9b,R"j4&C$9!#3%,F,a8#h#m9%!!!!k!! !!--!!!!"!*!F&I3!!!!#!!)!N!3(!!!!#!3(!*!4i!#3#3(CiJ#3)e"XG@G*ER0 '9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Le+6[[Y`ZY3`!*,pS!&8! e!!%FXJ!%A$@j"&Q9!!!!k!!"mI)!!`!!rrrrrJ#3#"Ae!!!!!J#3""#@!*!3`!# 3#3(q`!#3(`J!N!9IG'YTER4PFLj`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8 !!A0SE'*3HA4S!*!)X`@X!VF,V9-!!"%B!!"&2!!!!')!!!'11(mCj`!!!1J!!I( d!!-!!2rrrri!N!J9p`!!!!)!N!3,PJ#3%)!!N!N"rS)!N"m'!*!&3A"`,R"`Bbj cE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!LblH%NY`ZY'`!!%R! !!#Z#!!!!BJ!!!C)jkiU,!!!!k!!"mI8!!`!!rrrrrJ#3#"Ai!!!!!J#3"!q@!*! 3J!#3#3(qJJ#3(`B!N!9MB@aXC'aX,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*! 3"3!"FfKXBP"jG'J!N!Lbj+QRY`ZY@3!!$Q`!!#l8!!!!BJ!!!BkP4"K3!!!!k!! "mIB!!`!!rrrrrJ#3#"Aj!!!!!J#3"!U@!*!3J!#3#3(qJJ#3(`B!N!9ME5j`F'- ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZ5TS,F,V8N!!!- -!!!&8J!!!'J!!!'@pE4*M`!!!1J!!I(h!!-!!2rrrri!N!J9qJ!!!!)!N!36PJ# 3%)!!N!N"rS)!N"m'!*!&3fpXEh*3D@0VCA)ZF("M,R0XBNC@3e3!N!F))!!!!3# 3#!F!N"!&!!&cD'aL8(PdD!#3#,,Yi5Qh#kdJ!!!2)!!!*B-!!!"L!!!"MLF%!b- !!!$S!!(aq!!$!!$rrrrq!*!)&IX!!!!#!*!%#jB!N"#!!*!*!Ik#!*!I"J#3"@0 dBLj`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZhKNEF ,V@-!!!IN!!!A,J!!!'3!!!'12'%drJ!!!1J!!I(l!!-!!2rrrri!N!J9rJ!!!!) !N!3+PJ#3%)!!N!N"rS)!N"m'!*!&4QdZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F !N"!&!!&cD'aL8(PdD!#3#,,NUC!!Y`ZY*!!!,()!!&a5!!!!BJ!!!BkYVr%Q!!! !k!!"mI`!!`!!rrrrrJ#3#"Ar!!!!!J#3"!b@!*!3J!#3#3(qJJ#3(`B!N!9RC'* Y,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!LblH'9Y`Z YD3!!"S3!!"3I!!!!BJ!!!Bl$@@Gq!!!!k!!"mId!!`!!rrrrrJ#3#"B!N!3#!*! %$*B!N"#!!*!*!Ik#!*!I"J#3"8KPE(!ZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F !N"!&!!&cD'aL8(PdD!#3#,,NUC+h#kdS!!!1,!!!*LX!!!"N!!!"NR(4Aim!!!$ S!!(arJ!$!!$rrrrq!*!)&J%!!!!#!*!%$TB!N"#!!*!*!Ik#!*!I"J#3"@PMCfa eC5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZhKQVF ,V@i!!",k!!"1C3!!!')!!!'1`J-(j!!!!1J!!I(r!!-!!2rrrri!N!J@!J!!!!) !N!3,PJ#3%)!!N!N"rS)!N"m'!*!&5@0Z,R"`BbjcE'*'9N08!*!(##!!!!%!N!J (!*!3"3!"FfKXBP"jG'J!N!LblH'HY`ZYFJ!!%%`!!$6q!!!!CJ!!!BjIH$Ui!!! !k!!"mJ!!!`!!rrrrrJ#3#"B$!!!!!J#3"!b@!*!3J!#3#3(qJJ#3(`B!N!9-DA0 d,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lbj$3DY`Z Y,3!!#E)!!"QF!!!!C!!!!C*6,Hmq!!!!k!!"mJ%!!`!!rrrrrJ#3#"B%!!!!!J# 3""'@!*!3J!#3#3(qJJ#3(`B!N!9YB@0cF'9PBfJZF("M,R0XBNC@3e3!N!F))!! !!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,,NUD'h#ke1!!!([!!!&Zm!!!"S!!!"NZ# XRA3!!!$S!!(b!`!$!!$rrrrq!*!)&JB!!!!#!*!%%*B!N"#!!*!*!Ik#!*!I"J# 3"9"bD@jdD@jR,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J !N!Lc#DAkY`ZYG`!!$#3!!#3I!!!!BJ!!!C*@Qapa!!!!k!!"mJ3!!`!!rrrrrJ# 3#"B(!!!!!J#3"!k@!*!3J!#3#3(qJJ#3(`B!N!94C'pQCR-ZF("M,R0XBNC@3e3 !N!F))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,,YiE#h#kep!!"XC!!"k*d!!!" J!!!"MJ5C$Id!!!$S!!(b"3!$!!$rrrrq!*!)&JJ!!!!#!*!%#TB!N"#!!*!*!Ik #!*!I"J#3"9&d,R"`BbjcE'*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*! )YTcETVDFfkB!!!")!!!!63#3##*QIC8!!!$S!!(b"J!$!!$rrrrq!*!)&JN!!!! #!*!%#TB!N"#!!*!*!Ik#!*!I"!#3"A*PB@4YC5jdH(4'9N08!*!(##!!!!%!N!J (!*!3"3!"FfKXBP"jG'J!N!LblH'dY`ZYJ3!!"2!!!!Y+!!!!BJ!!!BjAKG,8!!! !k!!"mJF!!`!!rrrrrJ#3#"B+!!!!!J#3"!f@!*!3J!#3#3(qJJ#3(`B!N!96Bh* KF#j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZhKZ,F ,VBB!!"I@!!"-@3!!!'!!!!'1`1raT3!!!1J!!I))!!-!!2rrrri!N!J@#`!!!!) !N!3,PJ#3%)!!N!N"rS)!N"m'!*!&8fjN,R"`BbjcE'*'9N08!*!(##!!!!%!N!J (!*!3"3!"FfKXBP"jG'J!N!LblH'pY`ZYLJ!!#$i!!"A'!!!!CJ!!!C)Yc0lH!!! !k!!"mJN!!`!!rrrrrJ#3#"B-!!!!!J#3""'@!*!3J!#3#3(qJJ#3(`B!N!96EQ4 TD'p[Dh-ZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,, YiFfh#kf2!!!4AJ!!1M)!!!"L!!!"MU,mk)F!!!$S!!(b#J!$!!$rrrrq!*!)&Jd !!!!#!*!%#TB!N"#!!*!*!Ik#!*!I"J#3"94&,R"`BbjcE'*'9N08!*!(##!!!!% !N!J(!*!3"3!"FfKXBP"jG'J!N!Lbj+QAY`ZY03!!PBB!!A3"!!!!BJ!!!Bi'%6M -!!!!k!!"mJX!!`!!rrrrrJ#3#"B1!!!!!J#3"!f@!*!3J!#3#3(qJJ#3(`B!N!9 hBA0dC5j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*!)XZ5 TQEF,V6N!!&UF!!$0G3!!!'3!!!'1QQMalJ!!!1J!!I)0!!-!!2rrrri!N!J@%!! !!!)!N!3-PJ#3%)!!N!N"rS)!N"m'!*!&HQaTBLj`F'-ZFfaL4PC$9!#3"`JJ!!! "!*!)"`#3%!8!!A0SE'*3HA4S!*!)YE1V*VF,V48!!*eU!!(PI`!!!')!!!'5j45 L[3!$M)S!!ibE!!-!!2rrrri!N!JBK`!!!!)!N!32PJ#3%)!!N!N"rS)!N"m'!*! &F(PPH("KG#j`F'-ZFfaL4PC$9!#3"`JJ!!!"!*!)"`#3%!8!!A0SE'*3HA4S!*! )YV)GElF,V3d!!!5X!!!*!3!!!'B!!!'5Zi$cr`!#0-N!!M6,!!-!!2rrrri!N!J Dl`!!!!)!N!34PJ#3%)!!N!N"rS)!N"m'!*!&Ah0jEA4KBQaP,R"`BbjcE'*'9N0 8!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!LfXKeiY`ZY%3!!"8B!!!Vf!!! !C!!!!C+&J"Cm!!)db3!#0-d!!`!!rrrrrJ#3#"VY!!!!!J#3""'@!*!3J!#3#3( qJJ#3(`B!N!9IG'9cG'0KF'NZF("M,R0XBNC@3e3!N!F))!!!!3#3#!F!N"!&!!& cD'aL8(PdD!#3#,Db(@+h#kd+!!!4jJ!!-cX!!!"S!!!"NMji+[8!!M6*!!)dd!! $!!$rrrrq!*!)'ZX!!!!#!*!%%*B!N"#!!*!*!Ik#!*!I"J#3"9phC@&VFQ9Q,R" `BbjcE'*'9N08!*!(##!!!!%!N!J(!*!3"3!"FfKXBP"jG'J!N!Lbj+QRY`ZY@3! !$Q`!!#l8!!!!BJ!!!BkP4"K3!!)db3!#00F!!`!!rrrrrJ#3#"VQ!!!!!J#3"!U @!*!3J!#3#3(qJJ#3(`B!N!9$E5j`F'-ZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"! &!!&cD'aL8(PdD!#3#,Db(Xfh#kff!!!%X!!!#3%!!!"X!!!"PTYJQLX!!M6*!!) dbJ!$!!$rrrrq!*!)'[!!!!!#!*!%&*B!N"!J!*!*!IkJ!*!I"`#3"!&IFhPYG'& LE'8ZBf&bBQpZ,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!L fXKlGY`ZYZJ!!"8J!!!Vf!!!!E!!!!CCbjEU-!!)db3!#0-`!!`!!rrrrrJ#3#"V Z!!!!!J#3""5@!*!3)!#3#3(qS!#3(`F!N!3"Ah4PFh4MBA"T,Q0KFQ*[ELjcE'* '9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YV)HZlF,VE-!!"(`!!! c1`!!!'J!!!'@9[DMhJ!#0-N!!M62!!-!!2rrrri!N!JDl!!!!!)!N!36PJ#3%#! !N!N"rU!!N"m(!*!%!9phC@&VFQ9Q,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*! ("`#3%!8!!A0SE'*3HA4S!*!)YT2#BVF,VIi!!"&U!!"'G`!!!'B!!!'5ClJpbJ! #0-N!!M65!!-!!2rrrri!N!JDk3!!!!)!N!31PJ#3%#!!N!N"rU!!N"m(!*!%!8& `F#jMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,D 6`Kkh#kh%!!!5GJ!!+j)!!!"N!!!"P[VM4a8!!M6*!!)de!!$!!$rrrrq!*!)'ZJ !!!!#!*!%%TB!N"!J!*!*!IkJ!*!I"`#3"!&MB@aXC'aX,Q0KFQ*[ELjcE'*'9N0 8!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2#H,F,VJ-!!!iN!!!Y!3! !!'3!!!'14+pEi3!#0-N!!M6@!!-!!2rrrri!N!JDj`!!!!)!N!30PJ#3%#!!N!N "rU!!N"m(!*!%!80Y,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0 SE'*3HA4S!*!)YT2#9VF,VIN!!!-'!!!&8J!!!'J!!!'D-[fjc`!#0-N!!M6B!!- !!2rrrri!N!JDj3!!!!)!N!3@PJ#3%#!!N!N"rU!!N"m(!*!%!80[E'pb8'PMDf9 b,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2 #KEF,VJJ!!!G)!!!8[`!!!'3!!!'1fkpER3!#0-N!!M6G!!-!!2rrrri!N!JDj!! !!!)!N!30PJ#3%#!!N!N"rU!!N"m(!*!%!8CY,Q0KFQ*[ELjcE'*'9N08!*!(##! !!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2%!lF,VFJ!!#af!!"F8J!!!')!!!' 53%(K0J!#0-N!!M6I!!-!!2rrrri!N!JDi`!!!!)!N!32PJ#3%#!!N!N"rU!!N"m (!*!%!@GNBQdZBf&bBQpZ,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP" jG'J!N!LfR2ZjY`ZYd!!!#TS!!"S9!!!!CJ!!!C)N,2D*!!)db3!#01-!!`!!rrr rrJ#3#"VK!!!!!J#3""'@!*!3)!#3#3(qS!#3(`F!N!3"D@0RE(9P,Q0KFQ*[ELj cE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2#QlF,VJi!!"2 )!!"5X`!!!'B!!!'5PP#[[!!#0-N!!M6P!!-!!2rrrri!N!JDi!!!!!)!N!31PJ# 3%#!!N!N"rU!!N"m(!*!%!8PMELjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F !N"!&!!&cD'aL8(PdD!#3#,D6`ULh#ki8!!!3h!!!1,X!!!"N!!!"NXb9Yi-!!M6 *!!)dj`!$!!$rrrrq!*!)'Ym!!!!#!*!%$jB!N"!J!*!*!IkJ!*!I"`#3"!&-DA0 d,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2 $rVF,VEi!!*ei!!(PM`!!!'J!!!'@5,!IeJ!#0-N!!M6X!!-!!2rrrri!N!JDh3! !!!)!N!35PJ#3%#!!N!N"rU!!N"m(!*!%!A"jCAK`BA3ZBf&bBQpZ,R0XBNC@3e3 !N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J!N!LfNm+qY`ZZ'!!!$$!!!#3r!!! !C!!!!C+DN!"a%!!#0-N!!M6Z!!-!!2rrrri!N!JDh!!!!!)!N!34PJ#3%#!!N!N "rU!!N"m(!*!%!9&NEfCQFbjMBA*LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"! &!!&cD'aL8(PdD!#3#,D6a"5h#kiG!!"T,!!"ekF!!!"N!!!"ML2$kRd!!M6*!!) dm!!$!!$rrrrq!*!)'YX!!!!#!*!%$CB!N"!J!*!*!IkJ!*!I"`#3"!&4G#jMBA* LEfiZFfaL4PC$9!#3"`JJ!!!"`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,DFr#Uh#ki K!!!%E!!!#Y8!!!"S!!!"NQ`&#FB!!M6*!!)dm`!$!!$rrrrq!*!)'YS!!!!#!*! %%*B!N"!J!*!*!IkJ!*!I"`#3"!&6Bh*KF#jMBA*LEfiZFfaL4PC$9!#3"`JJ!!! "`!#3"`F!N"!&!!&cD'aL8(PdD!#3#,D6`Z1h#kiQ!!!8+J!!2H`!!!"Q!!!"NTC hfHB!!M6*!!)dp3!$!!$rrrrq!*!)'YN!!!!#!*!%$TB!N"!J!*!*!IkJ!*!I"`# 3"!&6EQ3ZBf&bBQpZ,R0XBNC@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J !N!LfNm,`Y`ZZ+J!!#$`!!"A'!!!!DJ!!!CBRYr"B!!)db3!#02F!!`!!rrrrrJ# 3#"VB!!!!!J#3""5@!*!3)!#3#3(qS!#3(`F!N!3"8fjND@K[EfYc,Q0KFQ*[ELj cE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT%PNEF,VLi!!"' U!!!m"3!!!'3!!!'1VDNJ+J!#0-N!!M6j!!-!!2rrrri!N!JDe`!!!!)!N!30PJ# 3%#!!N!N"rU!!N"m(!*!%!94&,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`# 3%!8!!A0SE'*3HA4S!*!)YTd"p,F,VGJ!!0aq!!),k!!!!'J!!!'5d5J6S!!#0-N !!M6p!!-!!2rrrri!N!JDe3!!!!)!N!33PJ#3%#!!N!N"rU!!N"m(!*!%!AGKFh4 P,Q0KFQ*[ELjcE'*'9N08!*!(##!!!!(!!*!("`#3%!8!!A0SE'*3HA4S!*!)YT2 %"EF,VGd!!&UL!!$0G3!!!'B!!!'5TmZ)bJ!#0-N!!M8!!!-!!2rrrri!N!JDe!! !!!)!N!32PJ#3%#!!N!N"rU!!N"m(!*!%!ATXD@)ZBf&bBQpZ,R0XBNC@3e3!N!F ))!!!!3#3#!F!N"!&!!&cD'aL8(PdD!#3#,EGRRZh#khb!!!"q!!!!f%!!!"U!!! "PN*La3S!#$p&!!Jr5J!$!!$rrrrq!*!)((J!!!!#!*!%%jB!N"$J!*!*!IlL!*! I"!#3"9pdDfPZG'9b,Q0KFQ*[ELjcE'*%9N08!*!3Y`[&4EF,a8B!!!$T!!!!``! !!!%!N"`@%3!!!!)!!J#3"!F!!!!)"!F!N"X"fD)!N#0cBh*TF(4c4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4*Zbed5E!!!#i!!!"P3!N!JM3*B3!!! !k3!"mK%!!`!!rrrrrJ#3#"B8!!!!!J#3"!k@!*!D!IqL!*!I"!#3"8*eD@aN3A" `E'9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&bFh*M8P0&4!#3#,84I,1f`HYD!*! +"!3!!!ZAhL&D&!!!!1N!!I)5!!-!!2rrrri!N!J@&3!!!!)!N!33PJ#3'J(rSJ# 3(`3!N!9#G@PXC%&`F'aPG#jbFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,A4*ZfAaB3!!!&MJ!!$&3!N!L6`)Zk!!!!k3!"mK-!!`!!rrrrrJ#3#"B @!!!!!J#3""1@!*!D!IqL!*!I"!#3"8*eD@aN3A"`E'PMBA4TEfiZF(P'9N08!*! (##!!!!%!N!J(!*!5!A*cFQ058d9%!*!)YL*6`lE"ke3!N!S&*J!!$N2[b35H!!! !k3!"mK3!!`!!rrrrrJ#3#"BA!!!!!J#3""@@!*!D!IqL!*!I"!#3"8*eD@aN3A" `E'PMBA4TEfiZFR0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed5 EYZN+FJ!!"ji!!"9H!*!)Kk&G"3!!!1N!!I)@!!-!!2rrrri!N!J@'3!!!!)!N!3 5PJ#3'J(rSJ#3(`3!N!9$EfjQD@GeFQ93HA4SEfiZF(P'9N08!*!(##!!!!%!N!J (!*!5!A*cFQ058d9%!*!)XdSi6lES+&F!N!S-JJ!!)RFIJN!I!!!!k3!"mKF!!`! !rrrrrJ#3#"BD!!!!!J#3""5@!*!D!IqL!*!I"!#3"80[EQCTCh9bC9"jG'K[ELj bFh*M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4*kbed5H!!!"9J! !!PX!N!MU$1NM!!!!k3!"mKJ!!`!!rrrrrJ#3#"BE!!!!!J#3"!H@!*!D!IqL!*! I"!#3"@0bE'BZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%R,D Ffk`!!!HF!!!9p`#3#%"R6ZF!!!$T!!(b'3!$!!$rrrrq!*!)&K`!!!!#!*!%%TB !N"S"rk)!N"m%!*!&4@4TG&"jG'K[EP"bC@Cc,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&bFh*M8P0&4!#3#,9"Q(5f`HY"!*!+$V3!!#5'EGCi9J!!!1N!!I)D!!-!!2r rrri!N!J@(3!!!!)!N!38PJ#3'J(rSJ#3(`3!N!9&C'Pd8(PdD'pZ8(*PCR-ZFR0 bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbed5FYK8aJ`!!"0!!!!b N!!!!G!!!!CSGYk2X!!!!k3!"mKX!!`!!rrrrrJ#3#"BH!!!!!J#3""5@!*!D!Iq L!*!I"!#3"89NDA43HA4SEfj3FQ9QFd*),Q*S4PC$9!#3"`JJ!!!"!*!)"`#3%J& 58e*$8P0&4!#3#,EQe6DfjY8f!*!+"Ai!!""8-1B@c3!!!1N!!I)F!!-!!2rrrri !N!J@(`!!!!)!N!3@PJ#3'J(rSJ#3(`3!N!9&C'Pd8(PdD'pZ8(*PCR0#5#jbFh* M4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,,mEV@fGXIa!!#!U!!"I*S !N!Kd85Rj!!!!k3!"mKd!!`!!rrrrrJ#3#"BJ!!!!!J#3"!U@!*!D!IqL!*!I"!# 3"@9bFQpbFbjdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XZ-$qV, M!rS!!!+!!!!%HJ#3#'hb5L!!!!$T!!(b(J!$!!$rrrrq!*!)&L%!!!!#!*!%$jB !N"S"rk)!N"m%!*!&CQPZC'GbC@eXD@jc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,A4*qbed5I!!!#FJ!!"0B!N!J4-H-@!!!!k3!"mL!!!`!!rrr rrJ#3#"BM!!!!!J#3"!q@!*!D!IqL!*!I"!#3"@CTH'CTE'9dHA"PFbj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed5JYYfMT3!!$1i!!#QJ!!!!U!! !!GEQh)N-!!!!k3!"mL)!!`!!rrrrrJ#3#"BP!!!!!J#3"!b@!*!D!IqL!*!I"!# 3"@CeE'aLG@PXC#j`H8C@3e3!N!F))!!!!3#3#!F!N")"FR0bBe*6483!N!LfVf1 lYUpMZ`#3#J,+!!!'NM!@4'8!!!$T!!(b)`!$!!$rrrrq!*!)&LB!!!!#!*!%$TB !N"S"rk)!N"m%!*!&CR9XE'*eD@aN,R*cFQ0'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)XYG%S,A)Vqm!!"Z-!!"IB3#3#032q+3!!!$T!!(b*!!$!!$rrrr q!*!)&LF!!!!#!*!%%CB!N"S"rk)!N"m%!*!&Cf9ZFh9TG'9YEf4eE'8ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XZhINE,Yhj%!!!)m!!!%I!#3#0- jq!m!!!$T!!(b*3!$!!$rrrrq!*!)&LJ!!!!#!*!%$*B!N"S"rk)!N"m%!*!&E@& VC@0XC@&Z,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,8T3M1fbaP G!!!*5!!!(-J!N!L0DTb+!!!!k3!"mLB!!`!!rrrrrJ#3#"BT!!!!!J#3"!U@!*! D!IqL!*!I"!#3"8eV4'PcG()ZF(P'9N08!*!(##!!!!%!N!J(!*!5!A*cFQ058d9 %!*!)YZE90VEQe6B!N!S#pJ!!"CQ"bIYV!!!!k3!"mLF!!`!!rrrrrJ#3#"BU!!! !!J#3"!b@!*!D!IqL!*!I"!#3"8eV4'PcG()ZFR0bBdC@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbed5GYV&R1`!!#e!!!#-*!*!)*`N$S3!!!1N!!I)S!!- !!2rrrri!N!J@+`!!!!)!N!30PJ#3'J(rSJ#3(`3!N!90Dd4TFh4bAh9T,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4+#fH!Z,!!!%D!!!$5J!N!J NMF6#!!!!k3!"mLN!!`!!rrrrrJ#3#"BX!!!!!J#3"!b@!*!D!IqL!*!I"!#3"@e VCA0dFR*PFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed5GXYG %R3!!!Q!!!!9#!*!)l@)$b!!!!1N!!I)V!!-!!2rrrri!N!J@,J!!!!)!N!30PJ# 3'J(rSJ#3(`3!N!93B@0V6'PL4'Pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&bFh* M8P0&4!#3#,EQe6DfjY8f!*!+!jB!!!X,!3*q[3!!!1N!!I)X!!-!!2rrrri!N!J @,`!!!!)!N!32PJ#3'J(rSJ#3(`3!N!93B@0V6'PL4'Pb,R*cFQ0'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%SE,A4+%!!!(J!!!$@J#3#&KG%Yd!!!$ T!!(b,3!$!!$rrrrq!*!)&M!!!!!#!*!%"TB!N"S"rk)!N"m%!*!&FR9Z,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4*feGE#H!!!$m!!!#Hd!N!L (Ii0M!!!!k3!"mLi!!`!!rrrrrJ#3#"Ba!!!!!J#3"!q@!*!D!IqL!*!I"!#3"9* eENaTBP0MFQP`G#j`H8C@3e3!N!F))!!!!3#3#!F!N")"FR0bBe*6483!N!LfjY8 fYZE90`#3#J@3!!!!$1A8E[qF!!!!k3!"mLm!!`!!rrrrrJ#3#"Bb!!!!!J#3""' @!*!D!IqL!*!I"!#3"9*eENaTBP0MFQP`G#jbFh*M4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,A4+'bed5K!!!$L!!!#&-!N!JKlhFr!!!!k3!"mM!!!`! !rrrrrJ#3#"Bc!!!!!J#3"!Q@!*!D!IqL!*!I"!#3"A9ZFfKKFLj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lf4dKHYUpMZ`!!"ri!!"Mq!!!"fJ!!"`6 "6c#q!!)e!J!#04-!!`!!rrrrrJ#3#"V6!!!!!J#3""5@!*!D!IqL!*!I"!#3"@G PER"XG@GTER"bEfTPBh4c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,D6TZbfR0ZY!!!%i!!!#`m!N!M%QNBd!!)e!J!#04B!!`!!rrrrrJ#3#"V5!!! !!J#3""H@!*!D!IqL!*!I"!#3"@eTFh0TEQGMBA*LEfjYCA4SEf4c,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,CGVAQfX-`Y!!!*P!!!($d!!!%F!!! &VYJJD@B!!M8#!!)e)3!$!!$rrrrq!*!)'Y%!!!!#!*!%#TB!N"S"rk)!N"m%!*! &G@jhC@&fC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld8dM1Y&0 *"J!!!8i!!!*P!!!"AJ!!"DjD-a0h!!)e!J!#05)!!`!!rrrrrJ#3#"V3!!!!!J# 3"!k@!*!D!IqL!*!I"!#3"ATKF("jBfCTE'9c,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88LTMD!#3#,D`[1bfX,cX!!!!CJ!!!(X!N!L"XU*h!!E%D!!'a)N!!`! !rrrrrJ#3#"ZT!!!!!J#3"!k@!*!D!IqL!*!I"!#3"A9ZGf9KGQ8ZBfpZCQPR4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,D`Yk@fX,HP!!!!CJ!!!(X!N!L "XU*h!!E%D!!'a)X!!`!!rrrrrJ#3#"ZS!!!!!J#3""'@!*!D!IqL!*!I"!#3"A9 ZGf9KGQ8ZF(NZBfpZCQPR4PC$9!)3B!)!!!!))!!J!3#3#!F!N"!&!!&"8&"-8(P dB5!!N!HfpU28Y[DMe3!!!DJ!!!-%!!!TjJ!!PZ[(1a'8!!LNG!!)T*-!!`!!rrr rrJ#3#"b[!!!!!J#3"!H@!*!D!IqL!*!I"!#3"A9ZGf9KGQ9%9N08!*!3Y`[&5,F ,a8S!!!$U!!!!``!!!!%!N"`@0!!!!!)!!J#3"!8!!!!)"!F!N"X"fD)!N#08Efp XFd4@3e3!N"#h#m9)Y`[&4`!!!1X!!!$U!!!!!3#3("Be!!!!!`!#!*!%!`!!!!J %"`#3'`)!SJ#3)d0(58C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Le&1i )YA@`U!!!!h`!!!HG!*!)qaHBQJ!!!1X!!I)d!!3!!2rrrri!N!J@0`!!!!)!N!3 4PJ#3'J)"SJ#3(`3!N!9#G@PXC%0(58&`F'aPG#j`H8C@3e3!N!F))!!!!3#3#!F !N")"FR0bBe*6483!N!Lf&+qAYX(Uh!#3#J%5!!!"E0A!Jkd!!!$V!!(b03!%!!$ rrrrq!*!)&MJ!!!!#!*!%%jB!N"S#!D)!N"m%!*!&3R9TE'4$4dP"F("XCA3ZFR0 bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!Le&1i)Y46Z#!!!"9S!!!Z [!*!))m*92`!!!1X!!I)f!!3!!2rrrri!N!J@13!!!!)!N!31PJ#3'J)"SJ#3(`3 !N!9$4dPI8N9"4%e&,R4iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L e&1i)Y46Z#!!!#HB!!"Gk!*!)j&RAj`!!!1X!!I)i!!3!!2rrrri!N!J@1`!!!!) !N!34PJ#3'J)"SJ#3(`3!N!93HA4SEfj$4dP6E'&fC5j`H8C@3e3!N!F))!!!!3# 3#!F!N")"FR0bBe*6483!N!Lf&+qAYX(Ui!#3#J%3!!!"E"C@E8)!!!$V!!(b13! %!!$rrrrq!*!)&M`!!!!#!*!%%jB!N"S#!D)!N"m%!*!&8(PdD'pZ3dG*8faKGQ8 ZFR0bBdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&0d6@`!N!LeVl+@YFc"93!!""3 !!!K&!!!!6!!!!6j!ELUL!!1-bJ!$M-i!"!!!rrrrrJ#3#"L&!!!!!J#3"!L@!*! D!J'L!*!I"!#3"@0RD5jSG'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!# 3#,@[XQUeVl*U!*!9!ic+!!1-d3!%!!$rrrrq!*!)')3!!!!#!*!%&CB!N"S#!D) !N"m%!*!&8(PdD'pZ3dG*8faKGQ8ZCA*bEh*c4PC$9!)3J!#3"!JJ!#!"!*!)"`# 3%!8!!8&38%a3HA4K)!#3"lF,a"5h#m3@!!!"TJ!!!`3!!"jb!!"i2+pJiL3!"hV 0!!GkcJ!%!!$rrrrq!*!)('%!!!!#!*!%$TB!N"S#!D)!N"m%!*!&3R9TE'4$4dP "F("XCA4'9N08!K#!!*!%##!!)!%!N!J(!*!3"3!"39"36&"jG'%J!*!(Y`[%%EF ,a"-!!!'Q!!!$"!!!*iB!!)b`pbEKD`!(HXd!"hV6!!3!!2rrrri!N!JFB!!!!!) !N!31PJ#3'J)"SJ#3(`3!N!93HA4SEfj$4dP6E'&fC84@3e3!N"#h#m9)Y`[&53! !!1`!!!$U!!!!!3#3("Bp!!!!!`!#!*!%!`!!!!J%"`#3'`)!SJ#3)dP%48C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HeNYA@`b3!!!M!!!!4k!*!)mqY AJ!!!!1`!!I)l!!3!!2rrrri!N!J@2J!!!!)!N!3,PJ#3'J)#SJ#3(`3!N!9#G@P XC%P%45j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HeNY%RYC!! !"c)!!"ID!*!)c+TGi`!!!1`!!I)m!!3!!2rrrri!N!J@2`!!!!)!N!32PJ#3'J) #SJ#3(`3!N!9'Efjd8f9dG'PZCh-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)Y%RYCEE8@@F!!!0%!!!+*`#3#-jR)Q`!!!$X!!(b23!%!!$rrrrq!*! )&N!!!!!#!*!%#jB!N"S#!U)!N"m%!*!&6@&M8(*PCR-ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y%RYCE4*l@8!!!AS!!!6[J#3#-ZfIMm!!!$X!!( b2J!%!!$rrrrq!*!)&N%!!!!#!*!%%*B!N"S#!U)!N"m%!*!&6@pNG@aP3R*[Gh0 PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HePY%RYC3!!"%! !!!Y-!*!)"fY3"J!!!1`!!I)r!!3!!2rrrri!N!J@3J!!!!)!N!34PJ#3'J)#SJ# 3(`3!N!93FQpQD@aP3R*[Gh0PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Ld5HePYX3KBJ!!$XS!!#jI!*!)9hXjrJ!!!1`!!I*!!!3!!2rrrri!N!J @3`!!!!)!N!3-PJ#3'J)#SJ#3(`3!N!93H8*bEhGcCA)ZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y%RYCVDFfkF!!!`k!!!X0`#3#&T$BJ3!!!$X!!( b33!%!!$rrrrq!*!)&N3!!!!#!*!%$*B!N"S#!U)!N"m%!*!&8(P$EfjcEfaP,R" j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,4*l@Dd5HeQ!!!BZJ!!BU3 !N!KFhdAh!!!!l!!"mN)!"!!!rrrrrJ#3#"C&!!!!!J#3"!f@!*!D!J+L!*!I"!# 3"9"j4'9LG@GRCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%R YCVDkSh`!!!V+!!!HmJ#3###615m!!!$X!!(b3`!%!!$rrrrq!*!)&NB!!!!#!*! %$TB!N"S#!U)!N"m%!*!&8(P%Ef06C@&bBfJZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)Y%RYCVDkSh`!!#E+!!#3!-X!!!$!!!!"rMRRi"8!!!$X!!( b4!!%!!$rrrrq!*!)&NF!!!!#!*!%#CB!N"S#!U)!N"m%!*!&8(P&C'Pd,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,4*l@HfZU0m!!!(MJ!!%,S!N!J ,DLkH!!!!l!!"mN8!"!!!rrrrrJ#3#"C)!!!!!J#3"!b@!*!D!J+L!*!I"!#3"9" j4QpZG'PQH5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HeRY%R YC`!!"")!!!Vk!*!)8e`-bJ!!!1`!!I*'!!3!!2rrrri!N!J@53!!!!)!N!33PJ# 3'J)#SJ#3(`3!N!93H8PZG'9bB@0dDACP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,4*l@Hd5HeR!!!"jJ!!"#S!N!J8Y`@$!!!!l!!"mNF!"!!!rrr rrJ#3#"C+!!!!!J#3"!b@!*!D!J+L!*!I"!#3"9"jG'K[ENP%45j`H8C@3e3"!)! !N!3))!!J!3#3#!F!N")"FR0bBe*6483!N!Ld5HeRYX(V*`#3#KIJ!!!eSYa'Na) !!!$X!!(b5!!%!!$rrrrq!*!)&NX!!!!#!*!%$TB!N"S#!U)!N"m%!*!&8(PdD'p Z584&,R*cFQ0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYClE0Z&` !!!R-!!!Ji`#3#,mljZ`!!!$X!!(b53!%!!$rrrrq!*!)&N`!!!!#!*!%%*B!N"S #!U)!N"m%!*!&8(PdD'pZ584&6@&TELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Ld5HeRYY4Bi3!!"LJ!!!pf!*!))3!Vf!!!!1`!!I*+!!3!!2rrrri !N!J@63!!!!)!N!3*PJ#3'J)#SJ#3(`3!N!96F'aKFfJZF(P'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)Y%RYCl4*l@F!!!'Z!!!$EJ#3#'UbPVm!!!$X!!( b5`!%!!$rrrrq!*!)&Ni!!!!#!*!%"*B!N"S#!U)!N"m%!*!&9bj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Ld5HeSYXfq%`!!$YB!!$#h!*!)XRBp8!! !!1`!!I*-!!3!!2rrrri!N!J@6`!!!!)!N!32PJ#3'J)#SJ#3(`3!N!9ABA"`E'P MBA4TEfiZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYD,D6TZN !!"2`!!"*p`#3#'+6ajm!!!$X!!(b63!%!!$rrrrq!*!)&P!!!!!#!*!%#*B!N"S #!U)!N"m%!*!&9f*KFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )Y%RYD,D6TZN!!!JJ!!!Re3#3#'+%UM%!!!$X!!(b6J!%!!$rrrrq!*!)&P%!!!! #!*!%$*B!N"S#!U)!N"m%!*!&9f0[ER4bEfac,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&bFh*M8P0&4!#3#,EQe6@fjY8e!*!+#Bi!!"0hbP+m9!!!!1`!!I*2!!3!!2r rrri!N!J@8J!!!!)!N!3-PJ#3'J)#SJ#3(`3!N!9AD@4RCA4c,R*cFQ0'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYD,@'lDB!!!&m!!!$LJ#3#"0Eadd !!!$X!!(b8!!%!!$rrrrq!*!)&P-!!!!#!*!%#*B!N"S#!U)!N"m%!*!&9fYPHA- ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYD,D6TZN!!!aF!!! Za`#3#%5KQ*B!!!$X!!(b83!%!!$rrrrq!*!)&P3!!!!#!*!%#CB!N"S#!U)!N"m %!*!&9faTFh4c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,4*l@Q fR0ZS!!!(%J!!'9-!N!KAH8K8!!!!l!!"mP)!"!!!rrrrrJ#3#"C9!!!!!J#3"!Q @!*!D!J+L!*!I"!#3"9GYC@jeFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Ld5HeTYT1Qk3!!!m!!!!Y$!*!)pMfT!J!!!1`!!I*6!!3!!2rrrri!N!J @9J!!!!)!N!30PJ#3'J)#SJ#3(`3!N!9AFA9TBfYdD@eP,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,4*l@Qd5HeT!!!-`J!!+3)!N!LjP9-"!!!!l!! "mP3!"!!!rrrrrJ#3#"CA!!!!!J#3"!U@!*!D!J+L!*!I"!#3"9GcEf0VCA3ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYDEDkSh`!!"QF!!"Y#`# 3#2LT9e%!!!$X!!(b93!%!!$rrrrq!*!)&PJ!!!!#!*!%#*B!N"S#!U)!N"m%!*! &9h4PH(3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y%RYDE8P2%B !!!B#!!!8Y3#3#%RKXM)!!!$X!!(b9J!%!!$rrrrq!*!)&PN!!!!#!*!%$CB!N"S #!U)!N"m%!*!&9h4bB@0PBQ&MDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Ld5HeTYT1QkJ!!%[S!!%$q!*!)dP+EK`!!!1`!!I*A!!3!!2rrrri!N!J @@J!!!!)!N!3,PJ#3'J)#SJ#3(`3!N!9AGfPZC'phFbj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!LeKZfRYBEYT`!!!2J!!!'G!*!)#d,%Z3!$M03!!ic Y!!3!!2rrrri!N!JBJ`!!!!)!N!3,PJ#3'J)#SJ#3(`3!N!9AE@PZD@&`F#j`H84 @3e3!N"#h#m9+Y`[&5J!!!1d!!!$U!!!!!3#3("CE!!!!!`!#!*!%#3!!!!J%"`# 3'`)!SJ#3)feKBfCbC@9kC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L bed5(YA6TG3!!!N)!!!9$!*!)4D6k#!!!!1d!!I*C!!3!!2rrrri!N!J@A!!!!!) !N!30PJ#3'J)$SJ#3(`3!N!9NDA*PBh4TGQ9c,R"j4&C$9!#3%,8kFe'e1R03!!! !lJ!!!1d!!!!"!*!F&Pd!!!!%!!)!N!3&!!!!#!3(!*!E!J1L!*!MD'9XE'p'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%L,,A4)J!!!"5!!!!A`#3#,K [3m8!!!$Z!!(bC!!&!!$rrrrq!*!)&Pi!!!!#!*!%#*B!N"S#"+)!N"m%!*!&D'9 XE'mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y"T[bE4*kMX!!!2 B!!!*13#3#(VKCY%!!!$Y!!(b@J!%!!$rrrrq!*!)&Pm!!!!#!*!%$*B!N"S#!k) !N"m%!*!&E@&MCR*PCATP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&bFh*M8P0&4!# 3#,EQe6@fjY8e!*!+!IJ!!!1-rR-jV`!!!1d!!I*E!!3!!2rrrri!N!J@B!!!!!) !N!31PJ#3'J)$SJ#3(`3!N!9YB@0QFQ9PHQ8ZFR0bBdC@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbed5(YA@`qJ!!"C)!!""e!*!)`jPTZ`!!!1d!!I*F!!3 !!2rrrri!N!J@B3!!!!)!N!32PJ#3'J)$SJ#3(`3!N!9YB@0QFQ9PHQ9RG@NZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%KlEGLTN!!!NX!!!B2!# 3#2h5$0N!!!$Y!!(bA3!%!!$rrrrq!*!)&Q)!!!!#!*!%$CB!N"S#!k)!N"m%!*! &E@&MCf9ZAf*TELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbed5 )XYG%L!!!!*`!!!$R!*!*Ur4Y!!!!l3!"mPi!"!!!rrrrrJ#3#"CM!!!!!J#3"!k @!*!D!J1L!*!I"!#3"@eKBfGPEPpTEQC[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,A4)Lbed5)!!!"e!!!!qB!N!M@PbT#!!!!l3!"mPm!"!!!rrr rrJ#3#"CN!!!!!J#3"!k@!*!D!J1L!*!I"!#3"@eKBfGPEPpbFh*M,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,A4)Ld3f6I!!!&cJ!!$i3!N!LpKG% L!!!!l3!"mQ!!"!!!rrrrrJ#3#"CP!!!!!J#3"!f@!*!D!J1L!*!I"!#3"@eKBfG PEPpcFQ-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XYG%L,,A8TJ !!!#F!!!!k3#3#,Z*KZ`!!!$Y!!(bB3!%!!$rrrrq!*!)&QB!!!!#!*!%$TB!N"S #!k)!N"m%!*!&E@&MCf9ZCA*KG'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)XYG%L,EGKjX!!!5D!!!+i!#3#&h@-AX!!!$Y!!(bBJ!%!!$rrrrq!*! )&QF!!!!#!*!%%TB!N"S#!k)!N"m%!*!&E@&ME@pNG@aPCQPZC'9b,R"j4&C$9!# 3#[q3"!%(Y`[%S,F,a+%!!!%3!!!""!!!!!%!N"`B(J!!!!)!!J#3"!B!!!!)"3F !N"X#)!!"!*!LEAGPFQYc4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,, A4)feT5pT!!!%!J!!#$F!!!#!!!!"QQQb(pd!!!%3!!'V1J!$!!$rrrrq!*!)'"m !!!!#!*!%$*B!N"S#,!!"!*!H"3#3"@9bFQj[Ah9ZDAJZD%C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9%0A588!N!Lbed50YFYER`!!!`3!!!F1!!!!IJ!!!CU@D(Nk!!! "%!!"UcX!!`!!rrrrrJ#3#"JJ!!!!!J#3""D@!*!D!L`!!3#3(J8!N!9YGf9bDh0 IBA"`E'9dAf0[EQCTCbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,, A4)ffPJ`,!!!$IJ!!"pi!!!#3!!!!!CSS9+$4!!!"%!!"Uc`!!`!!rrrrrJ#3#"J K!!!!!J#3""Q@!*!D!L`!!3#3(J8!N!9YGf9bDh0IEQpZFfKKFQ9NAf0[EQCTCbj S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4)feSQ2#!!!"*J!!!IS !!!"f!!!"QRA9@J!!!!%3!!'V23!$!!$rrrrq!*!)'#)!!!!#!*!%&TB!N"S#,!! "!*!H"3#3"@ehCA*VFep`E(9RD@jIBfpZCQPR,QK'9N08!*!(##!!!!%!N!J(!*! 5!94&@&4$9dP&!*!)XYG%MEA,@i-!!!1q!!!)P3!!!(J!!!'D654Z@J!!!4!!!DX q!!-!!2rrrri!N!JB)`!!!!)!N!3@PJ#3'J)X!!%!N"i&!*!&EAGPFQYcAh0SBA* PC&pMEfjQD@FZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbed50YTB ,M`!!!hi!!!IB!!!"CJ!!!CSQcEK#!!!"%!!"Ucm!!`!!rrrrrJ#3#"JN!!!!!J# 3""@@!*!D!L`!!3#3(J8!N!9YGf9bDh0IFfeKE'aIBfpZCQPR,QK'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)Y+UR)EA,@hF!!!0H!!!(SJ!!!(J!!!'Dd%H a43!!!4!!!DY!!!-!!2rrrri!N!JB*3!!!!)!N!3EPJ#3'J)X!!%!N"i&!*!&EAG PFQYcAh4SFQ9KC(0YB@aXAf0[EQCTCbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 83eG*43#3#,,A4)fe1QS$!!!!p!!!!DX!!!"i!!!"QNc@'Y`!!!%3!!'V33!$!!$ rrrrq!*!)'#B!!!!#!*!%'*B!N"S#,!!"!*!H"3#3"@ehCA*VFepdDh"XG@GTEPp MEfjQD@FZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Le2P81YTB,KJ! !!pS!!!M*!!!!J!!!!CT%$FL+!!0PE!!$C@m!!`!!rrrrrJ#3#"L#!!!!!J#3""D @!*!D!L`!!3#3(J8!N!9YGf9bDh0IBf&bBQpZAf0[EQCTCbjS4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K83eG*43#3#,9j3#UebeYM!!!$V!!!#(N!!!#!!!!"QN"%6r! !!f9X!!0PF!!$!!$rrrrq!*!)')%!!!!#!*!%'TB!N"S#,!!"!*!H"3#3"@ehCA* VFepMBA*LEfjRGA0TAf0[EQCTCbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG *43#3#,D4*2UfN56m!!!"P!!!!VX!!!"f!!!"QMCE3E-!!MGS!!)hE3!$!!$rrrr q!*!)'Xm!!!!#!*!%(*B!N"S#,!!"!*!H"3#3"@ehCA*VFepMBA*LEfj`E(9RD@j IBfpZCQPR,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YSdQXlDFfkN !!!3X!!!*$`!!!(J!!!'DmP+c)!!#0fJ!!MG[!!-!!2rrrri!N!JDcJ!!!!)!N!3 BPJ#3'J)X!!%!N"i&!*!&EAGPFQYcAfjcBf&bBQpZAf0[EQCTCbjS4PC$9!#3"`J J!!!"!*!)"`#3%J&849K83eG*43#3#,D'T@#fKU@q!!!%8J!!#DS!!!"f!!!"QS, !E+J!!MGS!!)hFJ!$!!$rrrrq!*!)'Xd!!!!#!*!%'*B!N"S#,!!"!*!H"3#3"@e hCA*VFepcD'0KFQ*[EPpMEfjQD@FZD%4@3e3!N!VrN!3""lF,a*kh#m5H!!!""3! !!33!!!!"!*!F&k`!!!!#!!)!N!3&!!!!#!8(!*!E!L!!!3#3)N*eD@aN4PC$9!# 3"`JJ!!!"!*!)"`#3%J&069"b3eG*43#3#,BhB9Df0f&@!!!4%!!!KKS!N!L[2D9 3!!!""3!"Ua!!!`!!rrrrrJ#3#"Ie!!!!!J#3"!D@!*!D!L%!!3#3(J8!N!9iH#j `FQT'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YMGK9VBhB9B!!!!3!!! !"`#3#!*f,$i!!!%&!!'V%3!$!!$rrrrq!*!)&rB!!!!#!*!%#TB!N"S#)3!"!*! H"3#3"AKi,R"bDLjPH("%9N08!*!+rj!%!3Hh#m5IY`[%R`!!!3m!!!%%!!!!!3# 3("JA!!!!!J!#!*!%"`!!!!J&"`#3'`)J!!%!N#**EQ0XG@4P4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K83eG*43#3#,4*kMUfVf1U!!!6bJ!!5[d!!!"q!!!"QSB5Jq% !!!%2!!'V-`!$!!$rrrrq!*!)'"J!!!!#!*!%#*B!N"S#+`!"!*!H"3#3"@0[EQC TCbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4'+bed4L!!!#XJ! !"5m!N!MRYS+%!!!"$`!"Uc3!!`!!rrrrrJ#3#"JC!!!!!J#3""+@!*!D!LX!!3# 3(J8!N!9RCA4KF("XBRPMFQ9KG'pb,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 $9dP&!*!)XYG%BVF,`mN!!!!D!!!!%3!!!(S!!!'D4(XLG`!!!3m!!DXe!!-!!2r rrri!N!JB'J!!!!)!N!3-PJ#3'J)V!!%!N"i&!*!&E@&MBR9TE'4ZEbjS4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4'+eP8LT!!!"X!!!!ZJ!!!"f!!! "QVEjHZ8!!!%2!!'V0J!$!!$rrrrq!*!)'"X!!!!#!*!%#CB!N"S#+`!"!*!H"3# 3"@eKBf4PCR-ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Ld'QSTY`Z UI`!!#Ei!!"Uq!!!!p!!!!CUrr#M"!!!"$`!"UcF!!`!!rrrrrJ#3#"JF!!!!!J# 3"!Q@!*!D!LX!!3#3(J8!N!9YB@0RE(9P,QK'9N08!*!(##!!!!%!N!J(!*!5!94 &@&4$9dP&!*!)XYG%BVDVPi!!!!P5!!!@a!!!!43!!!'DG$U4+J!!!3m!!DXi!!- !!2rrrri!N!JB(3!!!!)!N!34PJ#3'J)V!!%!N"i&!*!&F(PdD'pZFQ9cEh9bBf9 c,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YC9%bVDU%FJ!!!,i!!! ,[`!!!5B!!!A+&prA63!$C@3!!f9U!!-!!2rrrri!N!JBJ!!!!!)!N!31PJ#3'J) V!!%!N"i&!*!&F(PYB@0dEfpXBQpi,QK%9N08!*!)!q!#A!%4!3Hh#m9,Y`[&63! !!2!!!!"d!!!!!3#3("Cc!!!!!3!#!*!%"!!!!!J%"`#3'`',SJ#3)deTFf0'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH@VF)raX!!!f!!!!C'3#3#1% +rLX!!!$`!!(bF3!#!!$rrrrq!*!)&R3!!!!#!*!%"*B!N"S#"U)!N"m%!*!&380 ,8dC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&jEYL*4@J!!$!)!!"e G!*!)+MH[-`!!!2!!!I*b!!)!!2rrrri!N!J@G3!!!!)!N!3*PJ#3'J)'SJ#3(`3 !N!9"59JY6Np8490'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aH@l, mAPX!!!0L!!!'L`#3#'Ghe%!!!!$`!!(bF`!#!!$rrrrq!*!)&RB!!!!#!*!%"CB !N"S#"U)!N"m%!*!&3Na98N*'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )X[aH@l,mAPX!!!US!!!@GJ#3#'*a&#S!!!$`!!(bG!!#!!$rrrrq!*!)&RF!!!! #!*!%#TB!N"S#"U)!N"m%!*!&3Na98N)Z6&98@NC@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!Lbr&jEX[aH@`!!"a3!!!p*!*!)!IC5AJ!!!2!!!I*e!!)!!2r rrri!N!J@H!!!!!)!N!30PJ#3'J)'SJ#3(`3!N!9#6&953LjA58j%6eG64PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mARQbr&jj!!!KrJ!!9cN!N!J*%*' $!!!!m!!"mRJ!!J!!rrrrrJ#3#"Cl!!!!!J#3"!U@!*!D!JDL!*!I"!#3"@0SC@& dFfKPCA4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aHHE,mARN!!!Y m!!!DH3#3#-pP*aJ!!!$`!!(bH3!#!!$rrrrq!*!)&R`!!!!#!*!%#jB!N"S#"U) !N"m%!*!&BfpYF'&bDA0[ER0'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )X[aHHV,mARS!!!5F!!!*R`#3##L[I5-!!!$`!!(bH`!#!!$rrrrq!*!)&Ri!!!! #!*!%$*B!N"S#"U)!N"m%!*!&C@4TG'aTEQ8YCQPi4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mARUbr&jk!!!)pJ!!'Nd!N!Ja3pNT!!!!m!!"mR`!!J! !rrrrrJ#3#"Cr!!!!!J#3"!Z@!*!D!JDL!*!I"!#3"@CKF6*SG'eX,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mARUbr&jk!!!"XJ!!#18!N!M+mQB N!!!!m!!"mRi!!J!!rrrrrJ#3#"D"!!!!!J#3"!k@!*!D!JDL!*!I"!#3"@CTH'C eEQ0`G(*c,R0S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mAR1efc9 c!!'qG!!%a+d!N!M!Q5QK!!!!m!!"mRm!!J!!rrrrrJ#3#"D#!!!!!J#3"!H@!*! D!JDL!*!I"!#3"8K*8e428PP'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )X[aHFl,mAR-!!!*k!!!%+3#3#$(SF)-!!!$`!!(bJ!!#!!$rrrrq!*!)&S-!!!! #!*!%#TB!N"S#"U)!N"m%!*!&5&"9@#e16e4&8dC@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!Lbr&jdX[aHG!!!"UJ!!!b)!*!)A[*5pJ!!!2!!!I+"!!)!!2r rrri!N!J@K!!!!!)!N!3%PJ#3'J)'SJ#3(`3!N!9)@9"&4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,,mARUbr&jk!!!!3!!!!%)!N!MDI4qH!!!!m!!"mS) !!J!!rrrrrJ#3#"D&!!!!!J#3"!U@!*!D!JDL!*!I"!#3"@PZC'9ZG#j`FQp'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aHH,F)p)%!!'c`!!%CD!#3#1# 6*$%!!!$`!!(bK!!#!!$rrrrq!*!)&SF!!!!#!*!%"*B!N"S#"U)!N"m%!*!&6N9 A8dC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&jiX[aHH!!!"!S!!!M ,!*!)3N1d83!!!2!!!I+&!!)!!2rrrri!N!J@L!!!!!)!N!3+PJ#3'J)'SJ#3(`3 !N!9149K8,8j29%964PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mARL br&ji!!!$X!!!"jF!N!L3!1a)cJ!!!2!!!I+'!!)!!2rrrri!N!J@L3!!!!)!N!3 (PJ#3'J)'SJ#3(`3!N!93Eh*dD@jR4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LT MD!#3#,,mARLbr&ji!!!'f!!!$SS!N!MYj,!l!!!!m!!"mSF!!J!!rrrrrJ#3#"D +!!!!!J#3"!f@!*!D!JDL!*!I"!#3"9"98NP'@5j548&%689'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)X[aHJEF)p))!!)lX!!(JEJ#3#0YKFT)!!!$`!!( bL!!#!!$rrrrq!*!)&SX!!!!#!*!%$TB!N"S#"U)!N"m%!*!&F(PdD'pZ,@e[C'8 ZC@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aHJVF)p))!!""F!!! SX`#3#'9dXh)!!!$`!!(bL3!#!!$rrrrq!*!)&S`!!!!#!*!%#TB!N"S#"U)!N"m %!*!&F(PdD'pZ,QeKENC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&j jYGXeF`!!"!J!!!F`!*!)K)F"%!!!!2!!!I++!!)!!2rrrri!N!J@M3!!!!)!N!3 'PJ#3'J)'SJ#3(`3!N!9548&%689'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aHJV,mAS)!!!0m!!!+E3#3#(F6Vcm!!!$`!!(bM!!#!!$rrrrq!*!)&Sm !!!!#!*!%#jB!N"S#"U)!N"m%!*!&FQ9ZG@eLCA)ZF(P'9N08!*!(##!!!!%!N!J (!*!5!94&@&4$9dP&!*!)X[aHHE,mARN!!!FD!!!2J3#3#&AY',`!!!$`!!(bM3! #!!$rrrrq!*!)&T!!!!!!!J#3"!1@!*!D!JDL!*!I"!#3"9*'4%C@3e3!N!F))!! !!3#3#!F!N")"9%9B9(4dH(3!N!Le%!pPYJNp03!!-8J!!*I3!*!)%Q,Q&3!!!2! !!I+1!!)!!2rrrri!N!J@N3!!!!)!N!3,PJ#3'J)'SJ#3(`3!N!9eEQPMEf4P,R4 iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&k#X[aHJJ!!!8B!!!( b!*!)q2i9e!!!!2!!!I+2!!)!!2rrrri!N!J@NJ!!!!)!N!3*PJ#3'J)'SJ#3(`3 !N!9fCh*TEQ4PCR0'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YGXeFlA E0A-!!!0`!!!)[`#3#+'frq`!!id!!!10#J!#!!$rrrrq!*!)'(m!!!!#!*!%&TB !N"S#"U)!N"m%!*!&CQPZC&pbC@0eFR0TEfjXD@eTG#j`H84@3e3!N"#fX%eLYV" 0BJ!!!4%!")`r!!!!!3#3("S'!!!!!J!#!*!%!`!!!!J%"`#3'`)'SJ#3)e*368C @3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lf&+rUYK5[kJ!!"D!!!"31!*! )A(d$)J!%M&S!")aE!!-!!2rrrri!N!JD"3!!!!)!N!3CPJ#3'J*XSJ#3(`3!N!9 #C8p`C@iY8(PdD'pZ,90PG(9`,R"KG'0S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 83eG*43#3#,B8VqZf&+rV!!!(&J!!'ai!N!Ja1fIp!!5-@J!%M&`!!`!!rrrrrJ# 3#"S%!!!!!J#3""+@!*!D!QbL!*!I"!#3"@*PEh"PELe`HA4SEfiZFh"PBdC@3e3 !N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lf&+rVYK5[k`!!!1`!!!'L!*!)Z5@ PD3!%M&S!")aG!!-!!2rrrri!N!JD!`!!!!)!N!3-PJ#3'J*XSJ#3(`3!N!9YB@Y P,A0`C@-ZFfK'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)YK5[kVB8VqS !!!'Z!!!$5J#3#"NB5%m!")aD!!5-AJ!$!!$rrrrq!*!)'J)!!!!#!*!%"TB!N"S #E+)!N"m%!*!&8N9"4%e&4&C$9!#3%,D`6@)!N!B"%3!%M&S!!!!"!*!F'J%!!!! $!!)!N!3(!!!!#!3(!*!E!QbL!*!M9'YTER4PFNC@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!Lf&+rVYK5[k`!!!&`!!!"J!*!)4`6B,J!%M&m!")aJ!!3!!2r rrri!N!JD!*!%!J#3"!Q@!*!D!QZL!*!I"!#3"A0PG(9`,Q0QCdC@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lf&+rVYK5[k`!!!K!!!!41!*!)N5p)*3!%M&m !")aK!!3!!2rrrri!N!JCr`!!!!)!N!3)PJ#3'J*VSJ#3(`3!N!9cCA4eF#j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!LfNk8NYT@rhJ!!!E!!!!1#!*! )4YImMJ!#09S!!M9Q!!)!!2rrrri!N!JD03!!!!)!N!3(PJ#3'J)'SJ#3(`3!N!9 RC'*TEQPd4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,DkSqbh#25"!!! $'!!!"C`!N!J@`5#Y!!FUb3!(+X`!!J!!rrrrrJ#3#"`N!!!!!J#3"!U@!*!D!JD L!*!I"!#3"8*P6e-Y6Np8490'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )Y`MdJEF)p)%!!"af!!"L0`#3#,Y"ZmX!#+62!!LNd`!#!!$rrrrq!*!)(+i!!!! #!*!%$CB!N"S#"U)!N"m%!*!&3Q928becCA4eF#j`H8C@3e3!N!F))!!!!3#3#!F !N"!&!!&cD'aL8(PdD!%!!Si!d3!!YM1K)EF,`q3!$$K-!"db`J!!UVS!!CbAINh 6[J!!!(3!!H`K!!%!!2rrrri!N!J@P3!!!!)!N!3+PJ#3%)!!N!N"Li)!N"m'!*! &8(PdD'pZ3fpbC8C@3e3!N!F))!!!!F!!N!F(!*!3"3!"FfKXBP"jG'J"!!+2!#) !!,D(eZ1h#m2h!!ZRK!!FCQS!!+Uq!!'FQ`$DSUF!!!"d!!)Zd`!"!!$rrrrq!*! )'k%!!!!#!*!%%*B!N"!J!*!*!BZJ!*!I"`#3"!&3HA4SEfj$Eh*P3f&bBQpZ4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!%!!K[rr!!!XYG%,,F,X[`!!"!S!!! N[J#3#!X-cI!!!!"d!!(X)`!"!!$rrrrq!*!)&TF!!!!#!*!%"TB!N"S"Lk)!N"m %!*!&8N9"4%e&4&C$9!#3#!2J!PRrr3%(Y`[%dEF,a5J!!!$a!!!!G!!!!!%!N"` @Q!!!!!%!!J#3"!J!!!!)"!F!N"X"Lk)!N#05C@aZEh4PFdC@3e3!N!F))!!!!3# 3#!F!N")"9%9B9%0A588!N!Lbed3VXYG%+`!!,1J!!'c$!*!)$IH*m3!!!2%!!I% 0!!)!!2rrrri!N!J@Q3!!!!)!N!3(PJ#3'J)(SJ#3(`3!N!9)59086e*C4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,A4#bh#l%e!!!,&!!!'5X!!!#!!!! "Q[$B[LN!!!$a!!(a$J!#!!$rrrrq!*!)&TS!!!!#!*!%#*B!N"S#"k)!N"m%!*! &8Q9XEQpdCA0'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YDjPIlF)p%d !!!k!!!!``3#3#-dQDdi!!lpH!!1rA`!#!!$rrrrq!*!)'CN!!!!#!*!%"jB!N"S #"k)!N"m%!*!&6%P$48j6484@3e3!N!J$i!*F!,F""lF,a8kh#m9B!!!!mJ!!!(3 !!!!"!*!F&TX!!!!"!!)!N!3&!!!!#!3(!*!E!BZL!3#3)P4[Efac4&C$9!#3%,E QX#bfjV!Y!!!"&3!!!4)!!!!"!*!F'$d!!!!#!!)!N!3'!!!!#!8(!*!E!LkL!3# 3)QCbC@9kC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&leY6K-(`! !!CS!!!80!*!)Srap1!!!!48!!DYA!!-!!2rrrri!N!JB2`!!!!)!N!3*PJ#3'J) aSJ%!N"i&!*!&BQYQD@aP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA[@cUk1Y!!!$DJ!!#%-!N!L)9*qH!!!"&3!"UeJ!!`!!rrrrrJ#3#"K!!!! !!J#3""+@!*!D!M'L!3#3(J8!N!9MD'9MDf9iG'9ZFfP[ER-ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHpV@Afr!!!!N%!!!@)!#3#"DmJVF!!!% 9!!'V@3!$!!$rrrrq!*!)'%%!!!!#!*!%'*B!N"S#-D)"!*!H"3#3"@0SC@0VCAK dC@jcD@pZFephD@ic-Lj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!L br&lfYVbJJ`!!""i!!!pD!*!)kS8YZ`!!!48!!DYD!!-!!2rrrri!N!JB3J!!!!) !N!38PJ#3'J)aSJ%!N"i&!*!&CAKdC@jcD@pZFephD@ic-LjTEQP'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHpVEI["d!!"-b!!!q'`#3#-86,d!!!!% 9!!'V@`!$!!$rrrrq!*!)'%-!!!!#!*!%#CB!N"S#-D)"!*!H"3#3"@CbC@9kC5j `H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lfX[aHpJ!!!#!!!!! A!*!)8,V8T`!!!48!!DYF!!-!!2rrrri!N!JB4!!!!!)!N!3)PJ#3'J)aSJ%!N"i &!*!&D'9XE'mZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHplE I["d!!!*+!!!&1!#3#$[6(M-!!!%9!!'VA3!$!!$rrrrq!*!)'%8!!!!#!*!%$CB !N"S#-D)"!*!H"3#3"@eKDf9MEfjQD@FZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)X[aHpl@43V)!!!28!!!*D!#3#+'jNHm!!!%9!!'VAJ!$!!$rrrr q!*!)'%B!!!!#!*!%$CB!N"S#-D)"!*!H"3#3"@eKDf9QFQ9PHQ8ZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHpl,mA[F!!!'5!!!$I!#3#$q3!#J a!!!"&3!"Uem!!`!!rrrrrJ#3#"K(!!!!!J#3"!q@!*!D!M'L!3#3(J8!N!9YB@Y PE@&VC@CTE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHplE I["i!!!r#!!!p@`#3#!(UP*3!!!%9!!'VB!!$!!$rrrrq!*!)'%J!!!!#!*!%$jB !N"S#-D)"!*!H"3#3"@e[C(9XC@CTEQ4PFLj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&lhYYqm(J!!!j3!!!Q&!*!)QY@(G`!!!48!!DYK!!-!!2r rrri!N!JB53!!!!)!N!30PJ#3'J)aSJ%!N"i&!*!&F'&bFf9cCA4eF#j`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!Lbr&leYSjkhJ!!%eB!!$''!*!)Y5$ 4P!!!!48!!DYL!!-!!2rrrri!N!JB5J!!!!)!N!3'PJ#3'J)aSJ%!N"i&!*!&8N9 "4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8690*43#3#,,mA[HeSQjG!!!+[J! !(#B!N!KZ"$3r!!!"&3!"Uf-!!`!!rrrrrJ#3#"K,!!!!!J#3"!U@!*!D!M'L!3# 3(J8!N!9hD@ic-LjSG'eX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, mA[LeP812!!!(,!!!%[%!N!KXjJ5b!!!"&3!"Uf3!!`!!rrrrrJ#3#"K-!!!!!J# 3""+@!*!D!M'L!3#3(J8!N!9hD@jYB@YPE@&VC@CTE'8ZF(P%9N08!*!3YV"30,D `8$8!!!%@!!!"%J!!!!%!N"`B63!!!!)!!J#3"!N!!!!)"3F!N"X#,J!"!*!LE@p NG@aKG'pb4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA`1br&m$!!! #8J!!"8N!N!L4PLN'!!!"&J!"UfB!!`!!rrrrrJ#3#"K1!!!!!J#3"!U@!*!D!M) !!3#3(J8!N!9&@%&08%a&,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mA`5br&m%!!!&E!!!%`#3#8fNjUF!!!%@!!'VC`!$!!$rrrrq!*!)'%m!!!! #!*!%$*B!N"S#-J!"!*!H"3#3"@GPEQe[C(9XC5j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr&m%X[aI"!!!#I!!!$L'!*!)5Mhm+`!!!4B!!DYS!!- !!2rrrri!N!JB8!!!!!)!N!3-PJ#3'J)b!!%!N"i&!*!&E@pNG@aKG'pb,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mA`1br&m%!!!#0!!!!p3!N!M BD)%`!!!"&J!"UfN!!`!!rrrrrJ#3#"K4!!!!!J#3"!D@!*!D!M)!!3#3(J8!N!9 548&%689'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI",,mA`3!!!+ 5!!!&03#3#1R,aT)!!!%@!!'VDJ!$!!$rrrrq!*!)'&)!!!!#!*!%%TB!N"S#-J! "!*!H"3#3"90MFQpXE'9N6'PcG'*[H#j`H84@3e3!N"#fX&!e!*!'!4F!!!%@!!! !!3#3("K6!!!!!`!#!*!%#3!!!!J&"`#3'`)b!!%!N#*8C@e`E'&dCA0'9N08!*! (##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"EAE0B`!N"B"&`!"Ufi!"!!!rrr rrJ#3#"K8!!!!!J#3"!Q@!*!D!M-!!3#3(J8!N!9MEh"jFQPRD(4'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"E,mA`8!!!"'!!!!F3#3#"SR'Ai!!!% A!!'VE`!%!!$rrrrq!*!)'&8!!!!#!*!%#jB!N"S#-`!"!*!H"3#3"@e[C(9XC9p SC@&N4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA`@br&m&!!!!V!! !!1d!N!KTEk$"!!!"&`!"Uh!!"!!!rrrrrJ#3#"K@!!!!!J#3"!f@!*!D!M-!!3# 3(J8!N!9YEf4eE'9IE@9dD'pN4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43# 3#,,mA`@br&m&!!!"`J!!!bN!N!JAZ54i!!!"&`!"Uh%!"!!!rrrrrJ#3#"KA!!! !!J#3"!Z@!*!D!M-!!3#3(J8!N!9YEf4eE'9IG'&TE%C@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!Lbr&m&X[aI"3!!!*B!!!$k!*!))&ABRJ!!!4F!!DYb!!3 !!2rrrri!N!JB@!!!!!)!N!3,PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAfKPB@4'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"E,mA`B!!!#N!!!!j3#3#1S %Nk`!!!%A!!'VF`!%!!$rrrrq!*!)'&N!!!!#!*!%$CB!N"S#-`!"!*!H"3#3"@p LDQ9MG&pYCA4SEf4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"V, mA`B!!!"X!!!!G3#3#!LV(5)!!!%A!!'VG!!%!!$rrrrq!*!)'&S!!!!#!*!%$*B !N"S#-`!"!*!H"3#3"@pLDQ9MG&pYE'PcG%C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9%0A588!N!Lbr&m'X[aI"J!!!*J!!!$E!*!)rbqM,3!!!4F!!DYe!!3!!2rrrri !N!JB@`!!!!)!N!3+PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAfjPGdC@3e3!N!F))!! !!3#3#!F!N")"9%9B9%0A588!N!Lbr&m'X[aI"J!!!E`!!!1(!*!)IMT"R3!!!4F !!DYf!!3!!2rrrri!N!JBA!!!!!)!N!33PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh0 dFR9MG(9bC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&m'X[aI"J! !!BS!!!1&!*!)$1RL@`!!!4F!!DYh!!3!!2rrrri!N!JBA3!!!!)!N!3,PJ#3'J) c!!%!N"i&!*!&Ef*UC@0dAh4KD@a'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP &!*!)X[aI"V,mA`B!!!%U!!!#Y`#3#'k#4EN!!!%A!!'VH!!%!!$rrrrq!*!)'&i !!!!#!*!%&*B!N"S#-`!"!*!H"3#3"@pLDQ9MG&pdF&pKFepYBA"`D@jR4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA`Hbr&m(!!!#GJ!!$-X!N!J0,9[ $!!!"&`!"UhN!"!!!rrrrrJ#3#"KI!!!!!J#3""1@!*!D!M-!!3#3(J8!N!9[BQT PBh4IG("IBA0IER9YBQ9b4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,, mA`Hbr&m(!!!"`J!!"GN!N!Lm1!pK!!!"&`!"UhS!"!!!rrrrrJ#3#"KJ!!!!!J# 3""@@!*!D!M-!!3#3(J8!N!9[BQTPBh4IG("IBA0IFf9aG@9ZBf9'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI"l,mA`F!!!#%!!!!YJ#3#&'TS-8!!!% A!!'VH`!%!!$rrrrq!*!)''%!!!!#!*!%$TB!N"S#-`!"!*!H"3#3"@pLDQ9MG&p dF&pMB@aX4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA`Hbr&m(!!! !B!!!!(%!N!JK!Z(X!!!"&`!"Uh`!"!!!rrrrrJ#3#"KL!!!!!J#3""'@!*!D!M- !!3#3(J8!N!9[BQTPBh4IG("IBfpYF'&bC8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9%0A588!N!Lbr&m(X[aI"`!!!()!!!"m!*!)Ne#K$3!!!4F!!DYp!!3!!2rrrri !N!JBB`!!!!)!N!34PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh4`Af4PB@aXEf0'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aI#,,mA`J!!!#3!!!!!-3!N!K b9LIB!!!"&`!"Uhi!"!!!rrrrrJ#3#"KN!!!!!J#3""'@!*!D!M-!!3#3(J8!N!9 [BQTPBh4IG("ICf9dBA4dFNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L br&m)X[aI#!!!!&`!!!"Q!*!)0EXjf`!!!4F!!DYr!!3!!2rrrri!N!JBC3!!!!) !N!31PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh4`AfKKFfK'9N08!*!(##!!!!%!N!J (!*!5!94&@&4$9dP&!*!)X[aI#,,mA`J!!!"q!!!!P`#3#5[U"3!!!4F!!DZ!!!3 !!2rrrri!N!JBCJ!!!!)!N!32PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh4`Ah"bD@j d4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA`Qbr&m*!!!!F!!!!)N !N!J#r5Pc!!!"&`!"Ui%!"!!!rrrrrJ#3#"KR!!!!!J#3"!k@!*!D!M-!!3#3(J8 !N!9[BQTPBh4IG("IFQ9`FNC@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!L br&m*X[aI#3!!!+B!!!$D!*!)N[UZC`!!!4F!!DZ#!!3!!2rrrri!N!JBD!!!!!) !N!34PJ#3'J)c!!%!N"i&!*!&Ef*UC@0dAh4`Ah0PG'&dG(*'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)X[aI#E,mA`N!!!"`!!!!L3#3#0l[Qj3!!!%A!!' VJ`!%!!$rrrrq!*!)''N!!!!#!*!%$CB!N"S#-`!"!*!H"3#3"@pLDQ9MG&pdF&p cG(*'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI",,mA`3!!!E3!!! G@J#3#-%B%`J!!!%@!!'VD`!$!!$rrrrq!*!)''S!!!!#!*!%#TB!N"S#-J!"!*! H"3#3"94VCAKdFQ%ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a I",,mA`3!!!*m!!!'0J#3#'2D"Qm!!!%@!!'VE!!$!!$rrrrq!*!)''X!!!!#!*! %#jB!N"S#-J!"!*!H"3#3"ACKFR0eBR0d,R"j4&C$9!#3%,D`6@-!N!Ic!!!!mJ! !!!%!N"`@R!!!!!)!!J#3"!F!!!!)"!F!N"X##+)!N#0KG@4TEh"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K83eG*43#3#,,mAZDe%!q%!!!3L!!!36!!N!MkiR*&!!! !m`!"mT3!!`!!rrrrrJ#3#"DG!!!!!J#3"!H@!*!D!JQL!*!I"!#3"@&eC'P[F(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aHjV3DEKd!!!E'!!!2V3# 3#*Z0%Y!!!!$c!!(bP3!$!!$rrrrq!*!)&Ti!!!!#!*!%"TB!N"S##D)!N"m%!*! &8N9"4%e&4&C$9!#3%,D`6@3!N!Id!!!!mJ!!!!%!N"`@R`!!!!)!!J#3"!B!!!! )"!F!N"X##+)!N#0QBA&hDAT'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aHlE83$i3!!"6X!!!j[J#3#233)2%!!!$d!!(bP`!$!!$rrrrq!*!)&U!!!!! #!*!%#TB!N"S##U)!N"m%!*!&CQ&aBfpZCLj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&lZX[aHlJ!!!%J!!!",!*!)kFefa`!!!23!!I+B!!-!!2r rrri!N!J@S3!!!!)!N!3+PJ#3'J)+SJ#3(`3!N!9QBA&MGA0d,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAZkbr&lZ!!!#TJ!!"6F!N!P,F5`!!!$ d!!(bQ3!$!!$rrrrq!*!)&U)!!!!#!*!%"jB!N"S##U)!N"m%!*!&CQ&aGbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&l[Y4!2K!!!'8!!!'()!*! ))@(dJJ!!!23!!I+D!!-!!2rrrri!N!J@S`!!!!)!N!3*PJ#3'J)+SJ#3(`3!N!9 QBA&hDASZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aHl,,mAZ` !!!L%!!!5aJ#3#!)ZmZ!!!!$d!!(bQ`!$!!$rrrrq!*!)&U3!!!!#!*!%"TB!N"S ##U)!N"m%!*!&8N9"4%e&4&C$9!#3%,E,'J#3#2B!!!$b!!!!!3#3("Dd!!!!!J! #!*!%"!!!!!J%"`#3'`))SJ#3)fNa1'j'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)Y4!4UlE&dK)!!"98!!!r)J#3#1dXN3d!!!$f!!(bV!!$!!$rrrrq!*! )&V8!!!!#!*!%$*B!N"S#$+)!N"m%!*!&F(PRCA4dCAKd,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,AE0BbfaG)5!!!(m!!!&Ai!N!J55JAd!!1033! $M8)!!`!!rrrrrJ#3#"Kq!!!!!J#3"!Q@!*!D!JbL!*!I"!#3"@ecCfCYG#j`H84 @3e3!N"#h#m93Y`[&9!!!!2F!!!$b!!!!!3#3("Df!!!!!J!#!*!%"!!!!!J%"`# 3'`))SJ#3)fPNE'9'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)XeF(dE0 A"p%!!!!i!!!!,`#3#&f*%l8!!!$h!!(bVJ!$!!$rrrrq!*!)&VF!!!!#!*!%#jB !N"S#$D)!N"m%!*!&AepTEQPdAemZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)X[aHq,D1HYm!!!-%!!!+5!#3##i05A-!!!$h!!(bV`!$!!$rrrrq!*! )&VJ!!!!#!*!%$CB!N"S#$D)!N"m%!*!&3A9dEd9iF'&ZC#j`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&liXjD@Z!!!&&B!!&!a!*!)-NMYTJ!!!2F !!I+`!!-!!2rrrri!N!J@Z3!!!!)!N!30PJ#3'J)0SJ#3(`3!N!9"GA4[5@jNC@j d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[Ld'QiH!!!#e!! !"VB!N!McA5-J!!!!p`!"mV%!!`!!rrrrrJ#3#"Dk!!!!!J#3"!Z@!*!D!JfL!*! I"!#3"8*TEQ4TEQGc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,1 "JF+fMRVI!!!)5!!!'F3!N!MXQ"4[!!!!p`!"mV)!!`!!rrrrrJ#3#"Dl!!!!!J# 3"!Z@!*!D!JfL!*!I"!#3"80KE'a8DA"c,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,1"JF'fMRVI!!!#pJ!!"hm!N!MhphGS!!!!p`!"mV-!!`!!rrr rrJ#3#"Dm!!!!!J#3""#@!*!D!JfL!*!I"!#3"80KE'a8DA"AD@jNEhFZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aHqE6V1,N!!$Bb!!#6ZJ#3#"' 8Z0J!!!$h!!(bY!!$!!$rrrrq!*!)&Vd!!!!#!*!%#CB!N"S#$D)!N"m%!*!&3fK KEQGP6'pR4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[QfMRVI!!! ('!!!'-%!N!J,NrcA!!!!p`!"mV8!!`!!rrrrrJ#3#"Dq!!!!!J#3"!q@!*!D!Jf L!*!I"!#3"80XBA0c3R*[Gh0PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&ljYZ'B9`!!#5)!!#,f!*!)Q8j)f!!!!2F!!I+f!!-!!2rrrri!N!J @[`!!!!)!N!34PJ#3'J)0SJ#3(`3!N!9$Efa[FN4PE'9RBA4[FLj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9(4dH(3!N!LdkcLpY1Xi[3!!!$J!!!!`!*!)q1m%Q`! !!2F!!I+h!!-!!2rrrri!N!J@`!!!!!)!N!32PJ#3'J)0SJ#3(`3!N!9MEfjQD@F YG@jTH#jdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)Y1Xi[V6V1,i !!!!m!!!!0!#3#0Xkr2-!!!$h!!(bZ!!$!!$rrrrq!*!)&X%!!!!#!*!%$TB!N"S #$D)!N"m%!*!&BfpZCQPR,AGTELjdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 dG(Kd!*!)Y1Xi[V9GGT!!!!!$*!!!"[B!N!J&Ald"!!!!p`!"mVN!!`!!rrrrrJ# 3#"E#!!!!!J#3"!U@!*!D!JfL!*!I"!#3"@0[EQCTCbjdH(4'9N08!*!(##!!!!% !N!J(!*!5!94&@&43HA4S!*!)X[aHqED1HYm!!!Mi!!!Nf3#3#%S*&&`!!!$h!!( bZJ!$!!$rrrrq!*!)&X-!!!!#!*!%#jB!N"S#$D)!N"m%!*!&4'9LG@GRCA)ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHqVD1HYm!!!%b!!!$2`# 3#$HZ%fB!!!$h!!(bZ`!$!!$rrrrq!*!)&X3!!!!#!*!%$*B!N"S#$D)!N"m%!*! &4'9XC@GKG'pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[U h#2mU!!!CZJ!!@d%!N!MZZ''E!!!!p`!"mV`!!`!!rrrrrJ#3#"E&!!!!!J#3"!q @!*!D!JfL!*!I"!#3"89NDA4[FPGTEQ4[Gbj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&m!X[aI!3!!!h3!!!SM!*!)IK9Y5`!!!2F!!I+p!!-!!2r rrri!N!J@aJ!!!!)!N!30PJ#3'J)0SJ#3(`3!N!9PGQ9ZG("KFR0P,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,,mA`'c9`I5!!!(*!!!%@J!N!MrlDl S!!!!p`!"mVi!!`!!rrrrrJ#3#"E(!!!!!J#3"!U@!*!D!JfL!*!I"!#3"@9iG'9 ZC#jdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHqVD1HZ!!!!4 B!!!2M!#3#1Ub@,X!!!$h!!(b[`!$!!$rrrrq!*!)&XJ!!!!#!*!%#jB!N"S#$D) !N"m%!*!&4QPXC8aTFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aHqVD1HZ!!!!Fm!!!@BJ#3#*aL4%!!!!$h!!(b`!!$!!$rrrrq!*!)&XN!!!! #!*!%%TB!N"S#$D)!N"m%!*!&4QpbE@&d8'&bB@GbBA"S,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mA[Zbr&ll!!!"YJ!!"5%!N!JAB"Z8!!!!p`! "mX%!!`!!rrrrrJ#3#"E+!!!!!J#3"!k@!*!D!JfL!*!I"!#3"8CbB@eP9QPPGf9 b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[ZcJB($!!!&#!! !$hS!N!ME&1hE!!!!p`!"mX)!!`!!rrrrrJ#3#"E,!!!!!J#3"!f@!*!D!JfL!*! I"!#3"8GbCA"%D@&XEfFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*! )X[aI!ED1HZ-!!!N3!!!9#`#3#2F&LcX!!!$h!!(b``!$!!$rrrrq!*!)&X`!!!! #!*!%#*B!N"S#$D)!N"m%!*!&D'9XF#jdH(4%9N08!*!3YV)D*`#3"rJ!!!$h!!! !!3#3("E0!!!!!`!#!*!%"3!!!!J%"`#3'`)0SJ#3)dPMEfjc4PC$9!#3"`JJ!!! "!*!)"`#3%J&(58CQEfGXC3#3#,83%Dbe%"'X!!!!J!!!!(J!N!MK!Kel!!!!q!! "mZX!"!!!rrrrrJ#3#"E1!!!!!J#3"!U@!*!D!JkL!*!I"!#3"@C[E'4PFLjRD@C '9N08!*!(##!!!!%!N!J(!*!5!8G*4QC[CfaP!*!)YLC#eVCfXiF!!!"S!!!!B!# 3#-pQiS!!!!$i!!(bl!!%!!$rrrrq!*!)&Xm!!!!#!*!%$CB!N"S#$U)!N"m%!*! &E@PZGA0ZEf4P,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"4dP'CQpRE'8!N!Le%"' XY4!4V!!!!)B!!!"p!*!)d[J(L`!!!2J!!I,Y!!3!!2rrrri!N!J@d!!!!!)!N!3 1PJ#3'J)1SJ#3(`3!N!9[F'9ZCQpXC'9b,QGTCNC@3e3!N!F))!!!!3#3#!F!N") "4dP'CQpRE'8!N!Lf*N,@YLC#eJ!!!&J!!!"2!*!)5rBQF`!!!2J!!I,Z!!3!!2r rrri!N!J@d3!!!!)!N!3-PJ#3'J)1SJ#3(`3!N!9`E(9cEQpNC5jRD@C'9N08!*! (##!!!!%!N!J(!*!5!8G*4QC[CfaP!*!)Y4!4VVCfXiF!!!#'!!!!I3#3#"*$-Yd !!!$i!!(bl`!%!!$rrrrq!*!)&Y)!!!!#!*!%#TB!N"S#$U)!N"m%!*!&F(PdD'p Z,QGTCNC@3e3!N!F))!!!!3#3#!F!N")"4dP'CQpRE'8!N!Le%"'ZY4!4VJ!!!&i !!!"9!*!)#E81YJ!!!2J!!I,`!!3!!2rrrri!N!J@d`!!!!)!N!3'PJ#3'J)1SJ# 3(`3!N!9dDbjRD@C'9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)X[aI!EE GHe)!!!"!!!!!1!#3#)Y))rJ!!!$h!!(ba!!$!!$rrrrq!*!)&Y3!!!!#!*!%#*B !N"S#$D)!N"m%!*!&D@4XC5jLBA4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4 S!*!)X[aI!E8QT3`!!!#-!!!!eJ#3#"4EJ(J!!!$h!!(ba3!$!!$rrrrq!*!)&Y8 !!!!#!*!%"jB!N"S#$D)!N"m%!*!&D@4XC5j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!Lbr&m"Y1Xi[J!!!'B!!!#3!!#3#$k)S"`!!!$h!!(baJ!$!!$ rrrrq!*!)&YB!!!!#!*!%#*B!N"S#$D)!N"m%!*!&D@4XC5j`HAG'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)Y1XiZVD1HZ!!!!51!!!0cJ#3#%R9!(%!!!$ h!!(ba`!$!!$rrrrq!*!)&YF!!!!#!*!%#jB!N"S#$D)!N"m%!*!&5@4XC80[EQB ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Xh'lMVD1HZ!!!!-L!!! -(!#3#&md'13!!!$h!!(bb!!$!!$rrrrq!*!)&YJ!!!!#!*!%$TB!N"S#$D)!N"m %!*!&5@4XC8KTFh4[FRNZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aI!VEKQ&F!!!!H!!!!&3#3#(JdZhX!!!$h!!(bb3!$!!$rrrrq!*!)&YN!!!! #!*!%#TB!N"S#$D)!N"m%!*!&D@4XCACPFLj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&llYUB9lJ!!"NJ!!"ZE!*!)T4Jp,J!!!2F!!I,+!!-!!2r rrri!N!J@fJ!!!!)!N!3-PJ#3'J)0SJ#3(`3!N!9*6d*TEQ4TEQFZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI!V,mA`)!!!(Z!!!)Z`#3#$%I#[B !!!$h!!(bb`!$!!$rrrrq!*!)&YX!!!!#!*!%#TB!N"S#$D)!N"m%!*!&Df9jC'9 QFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lc(9STYSjki!!!"13 !!!m%!*!)QY2'JJ!!!2F!!I,-!!-!!2rrrri!N!J@h!!!!!)!N!39PJ#3'J)0SJ# 3(`3!N!90G@adD90MFQpXE'9N6'PcG(-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)Y1XiZVD1HZ%!!!&i!!!$(!#3#,5!IU`!!!$h!!(bc3!$!!$rrrr q!*!)&Yd!!!!#!*!%%CB!N"S#$D)!N"m%!*!&6A9XG'P6G'&dGA0#BA)ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)X[aHql6V1,X!!!G#!!!3!`#3#(a 1$-3!!!$h!!(bcJ!$!!$rrrrq!*!)&Yi!!!!#!*!%#*B!N"S#$D)!N"m%!*!&6N9 A8bjdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Xi'"`lD1HZ%!!!5 U!!!3+`#3#&!ZT08!!!$h!!(bc`!$!!$rrrrq!*!)&Ym!!!!#!*!%%*B!N"S#$D) !N"m%!*!&6f*UC@0d3R*[Gh0PFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!LdkcLlY1XiZ`!!#9i!!#+G!*!)b6bk0`!!!2F!!I,3!!-!!2rrrri!N!J @i!!!!!)!N!34PJ#3'J)0SJ#3(`3!N!92E'46G'&MDeCTCAGPFLj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lmYSjki3!!"CS!!!r1!*!)Z$YJd!! !!2F!!I,4!!-!!2rrrri!N!J@i3!!!!)!N!32PJ#3'J)0SJ#3(`3!N!92GA4`GA4 AD@jNEhFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y1XiZlD1HZ) !!!Nf!!!D`!#3#!G1"SS!!!$h!!(bdJ!$!!$rrrrq!*!)&Z)!!!!#!*!%$CB!N"S #$D)!N"m%!*!&8'&bC@j0BA4MD#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lc(9STYSjkiJ!!!`i!!!Sj!*!)#e'qDJ!!!2F!!I,6!!-!!2rrrri!N!J @i`!!!!)!N!31PJ#3'J)0SJ#3(`3!N!93BA4S3R*[Gh0PFLj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lpYUB9l`!!![S!!!Sd!*!)(,ccG!!!!2F !!I,8!!-!!2rrrri!N!J@j!!!!!)!N!30PJ#3'J)0SJ#3(`3!N!93CA*MEfaKG'p b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,1"JF5fZU2d!!!@'!! !5cd!N!M&JKkq!!!!p`!"mY8!!`!!rrrrrJ#3#"EP!!!!!J#3"!U@!*!D!JfL!*! I"!#3"9"j8'&bFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a HrEF)p*)!!"M@!!"I@3#3#-H4a98!!!$h!!(beJ!$!!$rrrrq!*!)&ZB!!!!#!*! %#TB!N"S#$D)!N"m%!*!&8(P6D'9XE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9(4dH(3!N!Lbr&lpY1Xi[!!!!ii!!!DT!*!)2*`Ll`!!!2F!!I,A!!-!!2rrrri !N!J@j`!!!!)!N!3+PJ#3'J)0SJ#3(`3!N!9548&%688ZG(Kd4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,83$i@fMRVL!!!+3J!!*#N!N!LeS,kr!!!!p`! "mYJ!!`!!rrrrrJ#3#"ES!!!!!J#3"!q@!*!D!JfL!*!I"!#3"9*PE@pdC8PZG'9 bF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lpYJNp9J!!"JJ !!"GC!*!)e'VIS!!!!2F!!I,C!!-!!2rrrri!N!J@k3!!!!)!N!33PJ#3'J)0SJ# 3(`3!N!95CA"XB@0P4'PKE'pR,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mA[kfMRVL!!!(G!!!&Q)!N!J1#Udl!!!!p`!"mYS!!`!!rrrrrJ#3#"E U!!!!!J#3""#@!*!D!JfL!*!I"!#3"90MFQP`G%*TEQ4TEQFZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHrVD1HZ)!!!43!!!2Q`#3#)N[I'8!!!$ h!!(bf`!$!!$rrrrq!*!)&ZX!!!!#!*!%$jB!N"S#$D)!N"m%!*!&8f0bEfaXC@4 -DA0d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[kbr&lq!!! #KJ!!#RF!N!K1+FaS!!!!p`!"mY`!!`!!rrrrrJ#3#"EX!!!!!J#3""#@!*!D!Jf L!*!I"!#3"90PBA*MD%*TEQ4TEQFZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)X[aHrV,mA[i!!!*H!!!(S!#3#"rGiTB!!!$h!!(bh3!$!!$rrrrq!*! )&Zd!!!!#!*!%$jB!N"S#$D)!N"m%!*!&8f9KFQ0S4'PKE'pR,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA[kbr&lq!!!$pJ!!$aF!N!KjL)@Q!!! !p`!"mYi!!`!!rrrrrJ#3#"EZ!!!!!J#3""1@!*!D!JfL!*!I"!#3"90PBA*MD%4 TB@a[Cd*KFf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHrV0 A"p!!!!HX!!!DD3#3#04N3Nm!!!$h!!(bh`!$!!$rrrrq!*!)&Zm!!!!#!*!%$jB !N"S#$D)!N"m%!*!&8f9KFQ0S4@jRD@jP,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mA[qfMRVL!!!$RJ!!$$d!N!Kq`P,&!!!!p`!"mZ!!!`!!rrr rrJ#3#"E`!!!!!J#3"!b@!*!D!JfL!*!I"!#3"90PF'&bBA4[FLj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lrYSjkiJ!!")3!!!kj!*!)+G9i1!! !!2F!!I,K!!-!!2rrrri!N!J@m3!!!!)!N!31PJ#3'J)0SJ#3(`3!N!96G'&MDeC TCAGPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m$X[aI!`! !!(S!!!$T!*!)!TV,D`!!!2F!!I,L!!-!!2rrrri!N!J@mJ!!!!)!N!3,PJ#3'J) 0SJ#3(`3!N!9dCA0dBfpNC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3 !N!Lbr&lrYL*4BJ!!$ZB!!##U!*!)HBKi[`!!!2F!!I,M!!-!!2rrrri!N!J@m`! !!!)!N!3)PJ#3'J)0SJ#3(`3!N!986d42,R4iG%C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!LcJB(&YSjki`!!!eJ!!!R9!*!)8hJmbJ!!!2F!!I,N!!-!!2r rrri!N!J@p!!!!!)!N!3+PJ#3'J)0SJ#3(`3!N!98EfpX9'P`,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,1"JFDd'QiI!!!3!!!!1SX!N!JD,A)[!!! !p`!"mZ8!!`!!rrrrrJ#3#"Ee!!!!!J#3"!f@!*!D!JfL!*!I"!#3"94bC@9AD@4 RCA3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI!,0A"p%!!!Q U!!!Rm3#3#14r!kB!!!$h!!(bjJ!$!!$rrrrq!*!)&[B!!!!#!*!%%*B!N"S#$D) !N"m%!*!&9@jNEd4PE'9RBA4[FLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&m!XkZMV`!!![B!!!Q+!*!)T$)cT`!!!2F!!I,R!!-!!2rrrri!N!J @p`!!!!)!N!36PJ#3'J)0SJ#3(`3!N!9AD@4RCA45C@4TFQ9MG'pb,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA`#fMRVM!!!#l!!!#1i!N!JPVp( $!!!!p`!"mZJ!!`!!rrrrrJ#3#"Ei!!!!!J#3"!f@!*!D!JfL!*!I"!#3"9GTEQ4 [GdaTFh3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI!,1"JFB !!!()!!!%)J#3#',d68m!!!$h!!(bk3!$!!$rrrrq!*!)&[N!!!!#!*!%$CB!N"S #$D)!N"m%!*!&@Qp[E8KPD@GSG#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lh#2mUY`Mr+J!!"83!!!mI!*!)H)aYN3!$M83!!ie*!!-!!2rrrri!N!J BI3!!!!)!N!34PJ#3'J)0SJ#3(`3!N!9#FQphFf9b3fpZG(*[E#j`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9%0A588!N!LfQFcGYTR-h3!!!*J!!!$`!*!)8kcFq`! #0D`!!MA%!!-!!2rrrri!N!JD0!!!!!)!N!3%PJ#3'J)0SJ#3(`3!N!9TC'aP4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,DCc0ffVfVA!!!%)!!!$'`!N!L kmIJC!!)eV!!#0H)!!`!!rrrrrJ#3#"Sc!!!!!J#3"!L@!*!D!JfL!*!I"!#3"A0 PG(9`,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,Cdl(QfG1b"!!! !0J!!!#i!!!"+!!!"61l3$iX!"X8@!!E&)3!$!!$rrrrq!*!)'kF!!!!#!*!%$TB !N"S#$D)!N"m%!*!&BfpZCQPR,@eKBbjdH(4%9N08!*!3Y`[&9,F,a98!!!$j!!! !mJ!!!!%!N"`@qJ!!!!)!!J#3"!B!!!!)"!F!N"X##+)!N#0`H@jMD'9'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI%,-hapX!!!!i!!!!,`#3#*%rd#N !!!$j!!(bmJ!$!!$rrrrq!*!)&[X!!!!#!*!%#jB!N"S#$k)!N"m%!*!&AepTEQP dAemZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI#E0A"p-!!!8 U!!!33J#3#%DZN9m!!!$j!!(bm`!$!!$rrrrq!*!)&[`!!!!#!*!%$CB!N"S#$k) !N"m%!*!&3fKTF&CTCAGPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbr&m*XeF(d`!!$&`!!#(X!*!)99-d@J!!!2N!!I,d!!-!!2rrrri!N!J@r3! !!!)!N!3+PJ#3'J)2SJ#3(`3!N!9$Efa[FN4#,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mA`Uc9`I6!!!*YJ!!*kN!N!L(aVX%!!!!q3!"m[8!!`! !rrrrrJ#3#"Eq!!!!!J#3""#@!*!D!JqL!*!I"!#3"84PG'&TE(0@D@9hCA)ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&4dG(Kd!*!)XeF(eE0A"p8!!!#L!!!!p3# 3#%`3%$-!!!$j!!(bpJ!$!!$rrrrq!*!)&[m!!!!#!*!%%*B!N"S#$k)!N"m%!*! &D(4YE$3`BfpXEh*c,R4iG%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&m+Y`Mr+`!!#$)!!"SM!*!)lZ*M*J!!!2N!!I,h!!-!!2rrrri!N!JA!*!%!J# 3"!f@!*!D!JqL!*!I"!#3"8aTFh4@D@9hCA)ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aI#VF)rb`!!!P5!!!B"3#3#%$*ME8!!!$j!!(bq!!$!!$ rrrrq!*!)&`%!!!!#!*!%"jB!N"S#$k)!N"m%!*!&6@&TELj`H8C@3e3!N!F))!! !!3#3#!F!N")"9%9B9(4dH(3!N!Lc9`I9XeF(e3!!"&`!!"C8!*!)R`EqKJ!!!2N !!I,j!!-!!2rrrri!N!JA!J!!!!)!N!32PJ#3'J)2SJ#3(`3!N!9ZB@ePC'0[E'p bFbjdH(4'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI%,DJd5m!!!5 f!!!1Y3#3#$P9,2X!!!$j!!(bqJ!$!!$rrrrq!*!)&`-!!!!#!*!%%CB!N"S#$k) !N"m%!*!&F(P$Efa[FN0SEfpcCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 $9dP&!*!)X[aI%E,mAa%!!!#%!!!!Y`#3#(P`l@F!!!$j!!(bq`!$!!$rrrrq!*! )&`3!!!!#!*!%"TB!N"S#$k)!N"m%!*!&F(PZBfKP4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K83eG*43#3#,,mAa'br&m4!!!!K!!!!,8!N!KERNl3!!!!q3!"m[`!!`! !rrrrrJ#3#"F&!!!!!J#3"!U@!*!D!JqL!*!I"!#3"A"jEQ0SC5j`HAG'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI$,F)rb`!!!`U!!!T0`#3#%(IX'B !!!$j!!(br3!$!!$rrrrq!*!)&`B!!!!#!*!%$jB!N"S#$k)!N"m%!*!&8(PZBfK P9fPNCf9d,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mA`bh#2m X!!!@9!!!2%J!N!L0ik&X!!!!q3!"m[i!!`!!rrrrrJ#3#"F(!!!!!J#3"!D@!*! D!JqL!*!I"!#3"9*&384048C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&m0Y`Mr,!!!$e3!!$P%!*!)rpN+$3!!!2N!!I,r!!-!!2rrrri!N!JA#!!!!!) !N!31PJ#3'J)2SJ#3(`3!N!96G(*TF&CTCAGPFLj`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr&m0XeF(e3!!"QS!!",N!*!)l'!T[3!!!2N!!I-!!!- !!2rrrri!N!JA#3!!!!)!N!31PJ#3'J)2SJ#3(`3!N!96GfPdBfKLEf&bC#j`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m0Y`Mr,!!!"q3!!"VX!*! )IF`G6J!!!2N!!I-"!!-!!2rrrri!N!JA#J!!!!)!N!30PJ#3'J)2SJ#3(`3!N!9 8CAKd9QPPGf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mA`q fS0%Z!!!(#J!!')3!N!LAQfrR!!!!q3!"m`)!!`!!rrrrrJ#3#"F,!!!!!J#3"!q @!*!D!JqL!*!I"!#3"94jF'9TEPCTCAGPFLj`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9(4dH(3!N!Lc9`I@XeF(eJ!!"6i!!!`3!*!)lJ[kp`!!!2N!!I-$!!-!!2r rrri!N!JA$!!!!!)!N!30PJ#3'J)2SJ#3(`3!N!9hC@*MEfa[FR-ZG(Kd4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K8G(4iG!#3#,0A"pDc9`I@!!!"N!!!!!E9!*!)[IM e&`!!!2N!!I-%!!-!!2rrrri!N!JA$3!!!!)!N!3,PJ#3'J)2SJ#3(`3!N!9hC@* cB@CP,R4iG%4@3e3!N"#fX%eS!*!(qJ!!!2N!!!!"!*!F&`i!!!!$!!)!N!3"!!! !#!3(!*!E!JqL!*!M@%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9(4dH(3!N!Lbr&m 4X[aI%3!!%cJ!!%2I!*!)2%M+K`!!!2S!!I-'!!3!!2rrrri!N!JA$`!!!!)!N!3 (PJ#3'J)3SJ#3(`3!N!9bCf)ZG(Kd4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4 iG!#3#,,mAa+br&m5!!!#rJ!!"8J!N!K6'6iR!!!!qJ!"m`F!"!!!rrrrrJ#3#"F 3!!!!!J#3"!b@!*!D!K#L!*!I"!#3"AKXD@0PER0P,R4iG%C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&)UBfJ!N!Lbr&lQYJNp93!!!NJ!!!3@!*!)m*!!fAi!!!$b!!( bNJ!#!!$rrrrq!*!)&a%!!!!#!*!%"TB!N"S##+)!N"m%!*!&8N9"4%e&4&C$9!# 3%,F,a9@h#m9A!!!!q`!!!2)!!!!"!*!F&a)!!!!#!!)!N!3(!!!!#!3(!*!E!JL L!*!MFf0bDA"dFdC@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m5YSj ki`!!!TS!!!@S!*!)4r#1I`!!!2X!!I-*!!-!!2rrrri!N!JA%`!!!!)!N!3-PJ# 3'J)4SJ#3(`3!N!9LHA4PH@9KFR-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)Y1Xi[l6V1,m!!!CX!!!56!#3#(HPB2F!!!$l!!(c#J!$!!$rrrrq!*! )&a3!!!!#!*!%$TB!N"S#%D)!N"m%!*!&BfKPBfYKF("PEQ3ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI%VD1HZ-!!!+#!!!(P`#3#*,IX!`!!!$ l!!(c#`!$!!$rrrrq!*!)&a8!!!!#!*!%#jB!N"S#%D)!N"m%!*!&BfKPBfY`H@- ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI%VD1HZ3!!!Mi!!! AJ3#3#)fSEa)!!!$l!!(c$!!$!!$rrrrq!*!)&aB!!!!#!*!%#jB!N"S#%D)!N"m %!*!&BfaKFh0QDAJZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a I%lD1HZ3!!!%q!!!#H3#3#)c3l1%!!!$l!!(c$3!$!!$rrrrq!*!)&aF!!!!#!*! %#jB!N"S#%D)!N"m%!*!&Bfp`HA4TE@8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)X[aI%l6V1,m!!!%!!!!"i!#3#"5YLmN!!!$l!!(c$J!$!!$rrrr q!*!)&aJ!!!!#!*!%"jB!N"S#%D)!N"m%!*!&Bh*XCLj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&m6X[aI%`!!!YB!!!Em!*!)$RDS&J!!!2X!!I- 2!!-!!2rrrri!N!JA'3!!!!)!N!3,PJ#3'J)4SJ#3(`3!N!9MGR0QD@aPFbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9%e69d3!N!Lf*N+rYLC#[`!!"0`!!!M!!*! )d")h+J!!!2X!!I-3!!-!!2rrrri!N!JA'J!!!!)!N!3+PJ#3'J)4SJ#3(`3!N!9 NGA4bC@8ZC'pM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAa1fMRV N!!!#RJ!!"N)!N!Mm)ApN!!!!q`!"ma%!!`!!rrrrrJ#3#"FE!!!!!J#3"!Q@!*! D!K'L!*!I"!#3"@4eG(*PC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbr&m6YHf'f`!!!Yi!!!@V!*!)"YLfX!!!!2X!!I-5!!-!!2rrrri!N!JA(!! !!!)!N!3*PJ#3'J)4SJ#3(`3!N!9PF(4KCh-ZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aI%lD1HZ3!!!()!!!$r!#3#3rDEJ!!!2X!!I-6!!-!!2r rrri!N!JA(3!!!!)!N!31PJ#3'J)4SJ#3(`3!N!9QD@jNE'PZDh0dEbj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m8YSjkj!!!$-`!!#H0!*!)rmh U)`!!!2X!!I-8!!-!!2rrrri!N!JA(J!!!!)!N!3*PJ#3'J)4SJ#3(`3!N!9QDAK MD@3ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI&,D1HZ3!!!( 3!!!%HJ#3#'C3BbF!!!$l!!(c&3!$!!$rrrrq!*!)&am!!!!#!*!%$*B!N"S#%D) !N"m%!*!&CQPiD'9KC'9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mAa5fMRVN!!!#5!!!"+)!N!JUVZqP!!!!q`!"maB!!`!!rrrrrJ#3#"FJ!!! !!J#3"!b@!*!D!K'L!*!I"!#3"@CTH'j[G'PMC5j`H8C@3e3!N!F))!!!!3#3#!F !N")"9%9B9&"jG'J!N!Lbr&m8YSjkj!!!!@)!!!0$!*!)aSmD@3!!!2X!!I-A!!- !!2rrrri!N!JA)3!!!!)!N!3)PJ#3'J)4SJ#3(`3!N!9QDAK`Fbj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m8YSjkj!!!$I)!!$'!!*!)hpiLd3! !!2X!!I-B!!-!!2rrrri!N!JA)J!!!!)!N!3-PJ#3'J)4SJ#3(`3!N!9QG("YDA* bEh)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)Y4!2KVD1HZ3!!!T @!!!Iq`#3#'#X4FB!!!$l!!(c'3!$!!$rrrrq!*!)&b-!!!!#!*!%#jB!N"S#%D) !N"m%!*!&Cf9ZBfpNC@-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*! )X[aI&,D1HZ8!!!D`!!!8%`#3#-8lali!!!$l!!(c'J!$!!$rrrrq!*!)&b3!!!! #!*!%"jB!N"S#%D)!N"m%!*!&D$*`H5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&m9YSjkj3!!"3i!!!k(!*!)drJ1D!!!!2X!!I-E!!-!!2rrrri !N!JA*3!!!!)!N!3)PJ#3'J)4SJ#3(`3!N!9TCQ4PCLj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&m9Y1Xi[`!!!3)!!!(M!*!)AC6Y2J!!!2X!!I- F!!-!!2rrrri!N!JA*J!!!!)!N!3(PJ#3'J)4SJ#3(`3!N!9XCQ0b,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAa@fMRVP!!!#jJ!!#9S!N!KVITA 2!!!!q`!"mad!!`!!rrrrrJ#3#"FR!!!!!J#3"!Z@!*!D!K'L!*!I"!#3"@aTEQY dFQ9P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAa@fMRVP!!! "CJ!!!TN!N!M8C%i3!!!!q`!"mai!!`!!rrrrrJ#3#"FS!!!!!J#3"!D@!*!D!K' L!*!I"!#3"@aXE#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m 9Y`MdP!!!"@S!!!pV!*!)3S++P!!!!2X!!I-I!!-!!2rrrri!N!JA+3!!!!)!N!3 ,PJ#3'J)4SJ#3(`3!N!9XEfGYCA*RC5j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&m9YSjkj3!!#Ki!!"p+!*!)X%+EpJ!!!2X!!I-J!!-!!2rrrri !N!JA+J!!!!)!N!32PJ#3'J)4SJ#3(`3!N!9YB@PXCA*NB@9YEfiZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI&ED1HZ8!!!IU!!!9I3#3#09XV") !!!$l!!(c)3!$!!$rrrrq!*!)&bX!!!!#!*!%#TB!N"S#%D)!N"m%!*!&E@9dD'C TH#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m@YSjkj3!!!RB !!!BY!*!)Mk$Y"3!!!2X!!I-L!!-!!2rrrri!N!JA,!!!!!)!N!3*PJ#3'J)4SJ# 3(`3!N!9YDh*PB@`ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a I&VD[DYN!!"(D!!![j!#3#0Y!qVd!!!$l!!(c)`!$!!$rrrrq!*!)&bd!!!!#!*! %#*B!N"S#%D)!N"m%!*!&EQ4TCQBZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 3HA4S!*!)X[aI&VD1HZ8!!!4i!!!*TJ#3#*d&#$F!!!$l!!(c*!!$!!$rrrrq!*! )&bi!!!!#!*!%#CB!N"S#%D)!N"m%!*!&EQdbC'9Q,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mAaDfMRVP!!!(hJ!!&cJ!N!MV6mHl!!!!q`!"mb8 !!`!!rrrrrJ#3#"F[!!!!!J#3"!Z@!*!D!K'L!*!I"!#3"@pLDQGbBA"S,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,3DEL#fMRVQ!!!$,!!!"VN!N!K 2*iQ'!!!!q`!"mbB!!`!!rrrrrJ#3#"F`!!!!!J#3""#@!*!D!K'L!*!I"!#3"A" KFR0PC@jdDA4TCA-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[a I&VD1HZB!!!CJ!!!3kJ#3#%KdXj)!!!$l!!(c*`!$!!$rrrrq!*!)&c%!!!!#!*! %#TB!N"S#%D)!N"m%!*!&F'&dD'CTH#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9&"jG'J!N!Lbr&m@YSjkjJ!!"FS!!!pY!*!)JriYN3!!!2X!!I-S!!-!!2rrrri !N!JA-J!!!!)!N!3)PJ#3'J)4SJ#3(`3!N!9`C'9`Fbj`H8C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9&"jG'J!N!Lbr&mAYSjkjJ!!%1S!!%Ak!*!)*ERf*J!!!2X!!I- T!!-!!2rrrri!N!JA-`!!!!)!N!3+PJ#3'J)4SJ#3(`3!N!9`D@jNC@jd,R"j4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaHfMRVQ!!!#3!!!"))!N!K P`VYR!!!!q`!"mbS!!`!!rrrrrJ#3#"Fd!!!!!J#3"!L@!*!D!K'L!*!I"!#3"A" dB@Gc,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mAa+e%!q&!!! %i!!!#E-!N!J1bkXY!!!!q`!"mbX!!`!!rrrrrJ#3#"Fe!!!!!J#3"!D@!*!D!K' L!*!I"!#3"9*&384048C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&m AX[aI&`!!!S`!!!AV!*!)-T-&"!!!!2X!!I-X!!-!!2rrrri!N!JA0J!!!!)!N!3 )PJ#3'J)4SJ#3(`3!N!9bCh*PF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&mAYSjkjJ!!!3`!!!)[!*!)YqkP%3!!!2X!!I-Y!!-!!2rrrri!N!J A0`!!!!)!N!3(PJ#3'J)4SJ#3(`3!N!9cG@CQ,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mAaHfMRVQ!!!$K!!!#B`!N!KL5MK9!!!!q`!"mbi!!`! !rrrrrJ#3#"Fi!!!!!J#3"!H@!*!D!K'L!*!I"!#3"A0eE68ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI',D1HZB!!#jX!!$,!3#3#%QBI)N!!!$ l!!(c,`!$!!$rrrrq!*!)&cN!!!!#!*!%$*B!N"S#%D)!N"m%!*!&G'9iD6*SG'e X,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaLfMRVR!!!(0!! !&U%!N!K0NH(#!!!!q`!"mc!!!`!!rrrrrJ#3#"Fk!!!!!J#3"!Z@!*!D!K'L!*! I"!#3"A4bC@9cH@jM,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,, mAaQbr&mC!!!#!!!!"*S!N!J'*hMd!!!!q`!"mc%!!`!!rrrrrJ#3#"Fl!!!!!J# 3"!Z@!*!D!K'L!*!I"!#3"A9ZG'&LD@Cj,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,,mAaQfMRVR!!!#AJ!!"BF!N!K(4a[p!!!!q`!"mc)!!`!!rrr rrJ#3#"Fm!!!!!J#3"!L@!*!D!K'L!*!I"!#3"AGSD@0S,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,,mAaQfMRVR!!!%B!!!#Z-!N!L+'jPP!!!!q`! "mc-!!`!!rrrrrJ#3#"Fp!!!!!J#3"!H@!*!D!K'L!*!I"!#3"AKiBfNZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YDqPK,D1HZF!!"[X!!"H2`#3#2V *f,J!!ifJ!!10b!!$!!$rrrrq!*!)'(`!!!!#!*!%#*B!N"S#%D)!N"m%!*!&G(* KBf8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YJNp9lD1HZB!!!B -!!!@L`#3#(V["b`!"$aS!!3mM!!$!!$rrrrq!*!)'H8!!!!#!*!%#CB!N"S#%D) !N"m%!*!&FQ9NC@e[,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B *29Hf#6eA!!!,E!!!)BN!N!L`(L,K!!3mD!!%2)d!!`!!rrrrrJ#3#"RN!!!!!J# 3"!Z@!*!D!K'L!*!I"!#3"A*PD@jNC@jd,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K83eG*43#3#,E&dK1faG)6!!!!1!!!!$!!N!JXief%!!GlZJ!(Hpd!!`!!rrr rrJ#3#"aI!!!!!J#3"!@@!*!D!K'L!*!I"!#3"A"jC'pM4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,EKQ&QfiCKC!!!!)J!!!"N!N!L[X6(G!!K!J`!)3+F !!`!!rrrrrJ#3#"ah!!!!!J#3"!Q@!*!D!K'L!*!I"!#3"A"jC'pM,R"jGd4@3e3 !N"#fX%eU!*!(r!!!!2)!!!!"!*!F&ci!!!!#!!)!N!3-!!!!#!3(!*!E!JLL!*! MGQ9bFfP[EQ0SC@0V4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaQ br&mC!!!"!J!!!DN!N!JG3RqC!!!!r!!"mc8!!`!!rrrrrJ#3#"Fr!!!!!J#3""# @!*!D!K+L!*!I"!#3"9pMD'9MDhCPFR0TEfiZF(P'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)X[aI'V,mAaS!!!+b!!!&3!#3#*+b4'8!!!$m!!(c0J!$!!$ rrrrq!*!)&d!!!!!#!*!%%*B!N"S#%U)!N"m%!*!&BfKPBfYfCA*cD@pZFbj`H8C @3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&mDX[aI'J!!"%J!!!rS!*! )ZcX5@`!!!2`!!I-h!!-!!2rrrri!N!JA33!!!!)!N!34PJ#3'J)5SJ#3(`3!N!9 `HACPFR0TEfjMD'9MDbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&)UBfJ!N!L br&mCX[aI'3!!!ri!!!KI!*!)FE!PjJ!!!2`!!I-i!!-!!2rrrri!N!JA3J!!!!) !N!3'PJ#3'J)5SJ#3(`3!N!9548&%689%9N08!*!3Y`[&@,F,a9F!!!$p!!!!mJ! !!!%!N"`A3`!!!!)!!J#3"!S!!!!)"!F!N"X##+)!N#0hC@*MD'9MDf9b4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88LTMD!#3#,,mAaUdLrH-!!!"VJ!!!Xi!N!K9$b' b!!!!r3!"mcS!!`!!rrrrrJ#3#"G%!!!!!J#3"!D@!*!D!K1L!*!I"!#3"9*&384 048C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&mDX[aI'J!!$%i!!#[ *!*!)GfQ8H3!!!2d!!I-l!!-!!2rrrri!N!JA43!!!!)!N!3+PJ#3'J)6SJ#3(`3 !N!9dDh4[Efac,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaZ dLrH-!!!3IJ!!1q8!N!K*CKfi!!!!r3!"mc`!!`!!rrrrrJ#3#"G'!!!!!J#3"!L @!*!D!K1L!*!I"!#3"AGMCh9T,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(P dD!#3#,,mAaZbr&mE!!!!PJ!!!-)!N!JAlGF$!!!!r3!"mcd!!`!!rrrrrJ#3#"G (!!!!!J#3"!L@!*!D!K1L!*!I"!#3"AGME@&M,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,,mAaZh#258!!!JdJ!!EYm!N!J%I-E"!!!!r3!"mci!!`! !rrrrrJ#3#"G)!!!!!J#3"!f@!*!D!K1L!*!I"!#3"AGPBQ0SC@0VCA)ZF(P'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aI'l8Y(X8!!!6k!!!0D`#3#$l IfD3!!!$p!!(c2`!$!!$rrrrq!*!)&dN!!!!#!*!%$*B!N"S#%k)!N"m%!*!&Gf9 LFh9MDf9b,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAaZdLrH 0!!!(p!!!'jB!N!J`Rr02!!!!r3!"md!!!`!!rrrrrJ#3#"G+!!!!!J#3"!L@!*! D!K1L!*!I"!#3"AGcCh9T,R"j4&C$9!#3%,E"dekf`G0H!!!"%`!!!4)!!!!"!*! F'#X!!!!#!!)!N!3%!!!!#!8(!*!E!Li!!3#3)Q*RC@j%9N08!*!3YX(6AJ#3"J% 8!!!"%`!!!!%!N"`B,!!!!!-!!J#3"!3!!!!)"3F!N"X#,`!"!*!LBQGPENC@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lRX[aHj`!!!)`!!!&,!*!)+80 -43!!!43!!DY'!!3!!2rrrri!N!JB,3!!!!)!N!3(PJ#3'J)`!!%!N"i&!*!&BQG PELj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Lbr&lSY"TZ(3!!"FS !!"M&!*!)!cU'b3!!!43!!DY(!!3!!2rrrri!N!JB,J!!!!)!N!30PJ#3'J)`!!% !N"i&!*!&BQGPEN*eCQCPFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lbr&lSYPaNA!!!#!S!!"SL!!!!HJ!!!CTV,Die!!!"&!!"UdJ!"!!!rrrrrJ# 3#"J[!!!!!J#3""#@!*!D!M!!!3#3(J8!N!9LCf9Z4f9ZCA*KG'pb,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAZUfA'4F!!!"F!!!![3!!!"m!!! "QUc6jbJ!!!%8!!'V53!%!!$rrrrq!*!)'$!!!!!#!*!%&CB!N"S#-!!"!*!H"3# 3"@*RC@j(C@jPFQ&dEh*(FQpeF#j`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lbr&lUX[aHkJ!!!Ui!!!ZQ!*!))&-#(!!!!43!!DY+!!3!!2rrrri!N!J B-3!!!!)!N!34PJ#3'J)`!!%!N"i&!*!&BQGPENKPBA"#G@CQCA)ZF(P'9N08!*! (##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHklD"-d3!!!$f!!!"EJ!!!+i!!!( @)L'[6J!!!43!!DY,!!3!!2rrrri!N!JB-J!!!!)!N!33PJ#3'J)`!!%!N"i&!*! &BQGPEQa[Bf&dD@pZFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!L br&lUYPaNA!!!![S!!!Ki!!!!IJ!!!CVEh$Z*!!!"&!!"Ud`!"!!!rrrrrJ#3#"J c!!!!!J#3"!f@!*!D!M!!!3#3(J8!N!9LCf9Z6@pNG@aP,R"j4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K88(PdD!#3#,-G@b1fA'4G!!!)Q!!!(BB!!!#8!!!"QQhFdCN !!!%8!!'V63!%!!$rrrrq!*!)'$3!!!!#!*!%&jB!N"S#-!!"!*!H"3#3"@*RC@j 2BQTPBh4%C@CTEQPdD@pZ,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,,mAZUbr&lU!!!)2!!!&AB!N!J+55lH!!!"&!!"Udi!"!!!rrrrrJ#3#"Je!!! !!J#3"!f@!*!D!M!!!3#3(J8!N!9LCf9Z6h9dF(9d,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,,mAZZbr&lV!!!"P!!!"Im!N!JCe$X5!!!"&!!"Udm !"!!!rrrrrJ#3#"Jf!!!!!J#3""+@!*!D!M!!!3#3(J8!N!9LCf9Z8h4KBfY#G@C QCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHkl,mAZX!!!+ Q!!!'c!#3#%J`qk-!!!%8!!'V8!!%!!$rrrrq!*!)'$F!!!!#!*!%%jB!N"S#-!! "!*!H"3#3"@*RC@j6G(*TEQG#G@CQCA)ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94 &@&43HA4S!*!)X[aHkl@,SL)!!!GF!!!B"`#3#&1CP`)!!!%8!!'V83!%!!$rrrr q!*!)'$J!!!!#!*!%#jB!N"S#-!!"!*!H"3#3"@*RC@j8HA"P,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,,mAZZbr&lV!!!$6!!!#8d!N!MQ8G80!!! "&!!"Ue)!"!!!rrrrrJ#3#"Jj!!!!!J#3"!q@!*!D!M!!!3#3(J8!N!9LCf9Z9Q& bD@&LE'8ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)X[aHklE"b+8 !!!HN!!!9M!!!!%!!!!%kj1-fY!!!!43!!DY6!!3!!2rrrri!N!JB1J!!!!)!N!3 0PJ#3'J)`!!%!N"i&!*!&E@&MFh9`F'pbG#j`H8C@3e3!N!F))!!!!3#3#!F!N") "9%9B9&"jG'J!N!Lbr&lVYX()T3!!&&`!!%0k!!!!`!!!!I*rGZZ%!!!"&!!"Ue3 !"!!!rrrrrJ#3#"Jl!!!!!J#3"!b@!*!D!M!!!3#3(J8!N!9cBf&ZG'p[E(-ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*!)X[aHjV,mAZB!!!$D!!!"G3# 3#,eqfL-!!!%6!!'V4!!$!!$rrrrq!*!)'$`!!!!#!*!%"TB!N"S#,`!"!*!H"3# 3"9*&3840484@3e3!N"#fX%eU!*!(rJ!!!2)!!!!"!*!F&dX!!!!#!!)!N!3&!!! !#!3(!*!E!JLL!*!MGfpbE'4'9N08!*!(##!!!!%!N!J(!*!5!94&@&45+Q0S!*! )X[aI(,,mAa`!!!8H!!!,-J#3###c$q)!!!$q!!(c3J!$!!$rrrrq!*!)&d`!!!! #!*!%"TB!N"S#&+)!N"m%!*!&8N9"4%e&4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 83eG*43#3#,,mAabcJB((!!!9S!!!0XJ!N!K3263M!!!!rJ!"md-!!`!!rrrrrJ# 3#"G0!!!!!J#3"!@@!*!D!K5L!*!I"!#3"AG[FQaN4&C$9!#3%,F,a8kh#m91!!! "'!!$M4X!!!!"!*!F'(X!!!!#!!)!N!3)!!!!#!3(!*!E!JLL!*!MBfpYF'PXCA* '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFLYcVB8Vqd!!!&H!!!$'J# 3#*pNq3N!!idJ!!10)3!$!!$rrrrq!*!)'(S!!!!#!*!%#TB!N"S#0+)!N"m%!*! &BfpYF'PXC5j`H84@3e3!N"#h#m91Y`[&6J!!!4J!!idJ!!!!!3#3("Kj!!!!!`! #!*!%#!!!!!J%"`#3'`)dSJ#3)f0[EA"TE'9b4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K88(PdD!#3#,A)VFkh#253!!!!!A!!!!+U!*!)idVV@3!$M5-!!idN!!3!!2r rrri!N!JBH!!!!!)!N!3,PJ#3'J)eSJ#3(`3!N!9IAfPZDA4IAbj`H8C@3e3!N!F ))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+h1YL*4B3!!#c3!!%jb!*!)SCqbT!! $M5-!!idP!!3!!2rrrri!N!JBG`!!!!)!N!3'PJ#3'J)eSJ#3(`3!N!9KFh3ZF(P '9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFLYcVF)p*!!!!!!M!!!!-X !N!L(Vi(q!!10)`!$M5B!"!!!rrrrrJ#3#"Kf!!!!!J#3"!Q@!*!D!M@L!*!I"!# 3"@0[ER0dFbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+h1YN# aSJ!!!63!!!2!!*!)4c!GkJ!$M5-!!idR!!3!!2rrrri!N!JBG3!!!!)!N!3(PJ# 3'J)eSJ#3(`3!N!9YDA0M,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!# 3#,A)VFkh#253!!!!'a!!!''X!*!)e6HYNJ!$M5-!!idS!!3!!2rrrri!N!JBG!! !!!)!N!3+PJ#3'J)eSJ#3(`3!N!9`H@&cFf9Y,R"j4PC$9!#3"`JJ!!!"!*!)"`# 3%J&849K88(PdD!#3#,A)VFkh#254!!!J&J!!QFi!N!KT!1-$!!10)`!$M5N!"!! !rrrrrJ#3#"Kc!!!!!J#3"!b@!*!D!M@L!*!I"!#3"A"jBfpNC@GPELj`H8C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+h2Y`MdN3!!)E)!!+3`!*!)&HT Cb3!$M5-!!idU!!3!!2rrrri!N!JBFJ!!!!)!N!31PJ#3'J)eSJ#3(`3!N!9dFQ& ZFfC[FQePFLj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J!N!Leb+h2Y`M dN3!!"Di!!"#Z!*!)5`3fE!!$M5-!!idV!!3!!2rrrri!N!JBF3!!!!)!N!3+PJ# 3'J)eSJ#3(`3!N!9fDA0TG'pb,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K8G(4 iG!#3#,BL8@'f)P&K!!!#CJ!!"MB!N!L+rVRE!!)eL3!#0B`!"!!!rrrrrJ#3#"S b!!!!!J#3"!H@!*!D!M@L!*!I"!#3"@&cG#jdH(4'9N08!*!(##!!!!%!N!J(!*! 5!94&@&43HA4S!*!)YL*4BEBL8@%!!!CB!!!6P`#3#*%PXNm!!M@*!!)eM3!%!!$ rrrrq!*!)'M%!!!!#!*!%#CB!N"S#0D)!N"m%!*!&BA0dCf9Z,R"j4PC$9!#3"`J J!!!"!*!)"`#3%J&849K88(PdD!#3#,F)p*!!Y`MdN!!!!!+D!!!(-J#3#&G-A`d !#+8!!!LP"J!%!!$rrrrq!*!)(+d!!!!#!*!%#CB!N"S#0D)!N"m%!*!&CR9dGA* P,R"j4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,F)p*'h#254!!!,iJ! !,YF!N!KKL8"C!!LP!!!)T3S!"!!!rrrrrJ#3#"bX!!!!!J#3"!U@!*!D!M@L!*! I"!#3"A0jE@*[E(-ZF(P'9N08!*!(##!!!!%!N!J(!*!5!94&@&43HA4S!*!)YFL YcVA)VFi!!!'S!!!$L3#3#0qPKa3!!idJ!!10)J!$!!$rrrrq!*!)'(!!!!!#!*! %"jB!N"S#0+)!N"m%!*!&C'9YEbj`H8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&" jG'J!N!Lf#6e9YJNp93!!!@J!!!-A!*!)(9H*H3!%1qB!"$[T!!-!!2rrrri!N!J Ci`!!!!)!N!3+PJ#3'J)dSJ#3(`3!N!9NG@e`F(PM,R"j4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K88(PdD!#3#,B*29@f#6e9!!!!P!!!!0)!N!MM(V!T!!3ljJ!%1qS !!`!!rrrrrJ#3#"RL!!!!!J#3"!L@!*!D!M5L!*!I"!#3"A0PG(9`,R"j4PC$9!# 3"`JJ!!!"!*!)"`#3%J&849K88(PdD!#3#,B8Vqff&+rY!!!#H!!!"CS!N!JEdpe 2!!5-C`!%M'X!!`!!rrrrrJ#3#"Rq!!!!!J#3"!Z@!*!D!M5L!*!I"!#3"A*PCh* dCA0d,R"j4&C$9!#3%,Db'LS!N!B"'3!%1q%!!!!"!*!F'H%!!!!#!!)!N!3(!!! !#!3(!*!E!JLL!*!MG@jTBfpNC8C@3e3!N!F))!!!!3#3#!F!N")"9%9B9&"jG'J !N!Lf#6eAYT1P-J!!&X3!!&"-!*!)S%%0H`!%2*F!"$bB!!-!!2rrrri!N!JCi!! !!!)!N!35PJ#3'J*RSJ#3(`3!N!9YB@YPG@jTBfpNC@4KG'%ZF(P'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!3!#rJ%@!!#bed3XYKNE$3!!!5J!!!(L!*!)@KE Eb!!!!(8!!DV)!!%!!2rrrri!N!JB+3!!!!)!N!3+PJ#3'J)D!!%!N"i%!*!&8Q9 KC%eP,@4PGN4@3e3!N!J$i!,r!&F""lF,a+'h#m5K!!!"%3!!!(8!!!!"!*!F'#F !!!!"!!)!N!3(!!!!#!8(!*!E!KS!!3#3)Ne[C(9XCA0'9N08!*!(##!!!!%!N!J (!*!5!94&@&4$9dP&!*!)X[aHTEAE0B!!!!FD!!!6&!!!!(!!!!'DIE8R8`!!!4% !!H`A!!)!!2rrrri!N!JB+!!!!!)!N!3+PJ#3'J)Y!!%!N"i&!*!&H(KYEf4eE'8 ZBd4@3e3!N!J$i!,r!!B""lF,a*Hh#m5D!!!"!`!!!(8!!!!"!*!F&f`!!!!"!!) !N!3(!!!!#!8(!*!E!KS!!3#3)NPZBfaeC'9'9N08!*!(##!!!!%!N!J(!*!5!94 &@&4$9dP&!*!)X[aG3lF)ra%!!"Pk!!"pJ!!!!$i!!!%kN8KP-!!!!3-!!DU+!!) !!2rrrri!N!JAE3!!!!)!N!3+PJ#3'J)I!!%!N"i&!*!&B@*cG(*KBh3ZD%C@3e3 !N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e%YGXe5J!!!@3!!!-B!*!)EJd Jr3!!!3-!!DU,!!)!!2rrrri!N!JAEJ!!!!)!N!3)PJ#3'J)I!!%!N"i&!*!&BQP dFf9d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG4,AE08S!!!% i!!!$S3#3#"-)BAJ!!!%$!!'UM!!#!!$rrrrq!*!)&fm!!!!#!*!%$TB!N"S#(`! "!*!H"3#3"@*eCQCPFQpLDQ9MG#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG *43#3#,,mA85fhl`1!!!%RJ!!$Bd!!!$J!!!"1ZbM*cN!!!%$!!'UM3!#!!$rrrr q!*!)&h!!!!!#!*!%"jB!N"S#(`!"!*!H"3#3"@0PGQ&X,QK'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)X[aG4,EKQ#N!!!,!!!!)k!#3#*a[k'J!!!%$!!' UMJ!#!!$rrrrq!*!)&h%!!!!#!*!%$CB!N"S#(`!"!*!H"3#3"@0XBA0cEf*UC@0 d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG4,AE08S!!!*H!!! 'R!#3#$V(a$`!!!%$!!'UM`!#!!$rrrrq!*!)&h)!!!!#!*!%#CB!N"S#(`!"!*! H"3#3"@0[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Le%!p GYDqPFJ!!!q3!!!dD!*!)5'+*%3!!!3-!!DU3!!!#!!$rrrrq!*!)&h-!!!!#!*! %#*B!N"S#(`!"!*!H"3#3"@0[C'9MFbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 83eG*43#3#,,mA8@fhl`1!!!%!!!!#CF!N!KZ@+3@!!!"!`!"UT%!!J!!rrrrrJ# 3#"Gd!!!!!J#3"!Q@!*!D!Km!!3#3(J8!N!9MEfe`D@aP,QK'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)X[aG4E@43T`!!!(U!!!&ZJ#3#!lmI2X!!!%$!!' UNJ!#!!$rrrrq!*!)&h8!!!!#!*!%$jB!N"S#(`!"!*!H"3#3"@0[EA"XCAK[BQT PBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e%YD*Z23!!"VS !!!qc!*!)&p%YSJ!!!3-!!DU6!!)!!2rrrri!N!JAGJ!!!!)!N!3,PJ#3'J)I!!% !N"i&!*!&Be0dFQPZCdP2,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )X[aG4EAE08S!!!&F!!!%i!#3#!MFL13!!!%$!!'UP!!#!!$rrrrq!*!)&hF!!!! #!*!%$*B!N"S#(`!"!*!H"3#3"@4TBh4[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F !N")"9%9B9%0A588!N!Lbr&e&YGXe5J!!!N`!!!4N!!!!2J!!!6UiYVSP!!!"!`! "UT8!!J!!rrrrrJ#3#"Gi!!!!!J#3"!Q@!*!D!Km!!3#3(J8!N!9PFR*MEf4P,QK '9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG4EAE08S!!!#N!!!!q`# 3#%U)QP)!!!%$!!'UPJ!#!!$rrrrq!*!)&hN!!!!#!*!%"TB!N"S#(`!"!*!H"3# 3"@9fB@`ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e(YGXe5J! !!8)!!!1k!*!)e00[b!!!!3-!!DUA!!)!!2rrrri!N!JAHJ!!!!)!N!3-PJ#3'J) I!!%!N"i&!*!&CQPXC@pLDQ9MG#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG *43#3#,,mA8Lefc9,!!!"C!!!!Y!!N!KCa5q8!!!"!`!"UTJ!!J!!rrrrrJ#3#"G l!!!!!J#3"!f@!*!D!Km!!3#3(J8!N!9QE'pKG'pLDQ9MG#jS4PC$9!#3"`JJ!!! "!*!)"`#3%J&849K83eG*43#3#,,mA8UfhAY"!!!%2J!!#cB!!!"!!!!"1JD4,$% !!!%$!!'UQ3!#!!$rrrrq!*!)&h`!!!!#!*!%$CB!N"S#(`!"!*!H"3#3"@CbB@e PEf*UC@0d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG6VEKQ#N !!!(8!!!&[`#3#)*h(DS!!!%$!!'UQJ!#!!$rrrrq!*!)&hd!!!!#!*!%$*B!N"S #(`!"!*!H"3#3"@CeEQ0[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0 A588!N!Lbr&e1YFY22`!!!F`!!!9[!*!)Q"+"T`!!!3-!!DUE!!)!!2rrrri!N!J AIJ!!!!)!N!3+PJ#3'J)I!!%!N"i&!*!&Ch*KE@PZDA3ZD%C@3e3!N!F))!!!!3# 3#!F!N")"9%9B9%0A588!N!Lbr&e1YGXe5`!!!a)!!!IP!*!)aY32#3!!!3-!!DU F!!)!!2rrrri!N!JAI`!!!!)!N!3*PJ#3'J)I!!%!N"i&!*!&Ch*KE@eKFLjS4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA8qefc9,!!!"m!!!"J)!N!K F$l46!!!"!`!"UTd!!J!!rrrrrJ#3#"H!!!!!!J#3"!L@!*!D!Km!!3#3(J8!N!9 TEA"[FR3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&e2YGXe5`! !""B!!!M&!*!)[A$jRJ!!!3-!!DUH!!)!!2rrrri!N!JAJ3!!!!)!N!3,PJ#3'J) I!!%!N"i&!*!&D@jdEf*UC@0d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP &!*!)X[aG6lAE08X!!!#H!!!"(3#3#(B2Tr)!!!%$!!'UR`!#!!$rrrrq!*!)&i) !!!!#!*!%#jB!N"S#(`!"!*!H"3#3"@PZG(*MD'9MDbjS4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,,mA8qefc9,!!!#Q!!!"`B!N!L(0jDR!!!"!`!"UU! !!J!!rrrrrJ#3#"H$!!!!!J#3"!b@!*!D!Km!!3#3(J8!N!9XDA0dEf*UC@0d,QK '9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG6lAE08X!!!1)!!!'lJ# 3#)PA'%J!!!%$!!'US3!#!!$rrrrq!*!)&i3!!!!#!*!%$CB!N"S#(`!"!*!H"3# 3"@a[EQGTER4bCA"b,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[a G6lB*23B!!!)#!!!&r`#3#$IdrjX!!!%$!!'USJ!#!!$rrrrq!*!)&i8!!!!#!*! %$*B!N"S#(`!"!*!H"3#3"@a[EQG[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N") "9%9B9%0A588!N!Lbr&e2YTR-e`!!!3)!!!,'!*!)A"he03!!!3-!!DUN!!)!!2r rrri!N!JAK`!!!!)!N!3*PJ#3'J)I!!%!N"i&!*!&E@&bFfKKE#jS4PC$9!#3"`J J!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9#efc9,!!!!NJ!!!2d!N!KVmkNQ!!! "!`!"UU8!!J!!rrrrrJ#3#"H)!!!!!J#3"!f@!*!D!Km!!3#3(J8!N!9YCA4KCh* KE@eKFLjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9#efc9,!!! #KJ!!"bJ!N!K"k"DP!!!"!`!"UUB!!J!!rrrrrJ#3#"H*!!!!!J#3"!k@!*!D!Km !!3#3(J8!N!9YCA4SEf4[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0 A588!N!Lbr&e3YTLblJ!!"A`!!!cj!!!"L!!!!CUda1EH!!!"!`!"UUF!!J!!rrr rrJ#3#"H+!!!!!J#3"!b@!*!D!Km!!3#3(J8!N!9YEf4cGA"`Eh*d,QK'9N08!*! (##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG8,AE08`!!!$b!!!#1J#3#2hJ(H3 !!!%$!!'UU!!#!!$rrrrq!*!)&iX!!!!#!*!%$TB!N"S#(`!"!*!H"3#3"@e[C(9 XC@pLDQ9MG#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9'efc9 -!!!"j!!!!qi!!!"!!!!"1LaZ8P8!!!%$!!'UVJ!#!!$rrrrq!*!)&j%!!!!#!*! %"TB!N"S#(`!"!*!H"3#3"@j[C'8ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0 A588!N!Lbr&e6Y`Mr%3!!'V!!!&(H!!!!e!!!!CSk9TAc!!!"!`!"UUm!!J!!rrr rrJ#3#"H5!!!!!J#3"!L@!*!D!Km!!3#3(J8!N!9[BQTPBh3ZD%C@3e3!N!F))!! !!3#3#!F!N")"9%9B9%0A588!N!Lbr&e8YZ'B+J!!$LS!!#V1!!!!J!!!!CUTh6Z H!!!"!`!"UV!!!J!!rrrrrJ#3#"H6!!!!!J#3"!Q@!*!D!Km!!3#3(J8!N!9[BQT TEA"X,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG9,F)ra)!!!B '!!!31`#3#(Vj!Ud!!!%$!!'UX3!#!!$rrrrq!*!)&j3!!!!#!*!%#*B!N"S#(`! "!*!H"3#3"@p`BfpNC5jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,, mA95faG(j!!!"TJ!!!iF!N!L5cfp,!!!"!`!"UV)!!J!!rrrrrJ#3#"H9!!!!!J# 3"!L@!*!D!Km!!3#3(J8!N!9[Ff4PCR-ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9 B9%0A588!N!Lbr&e8YGXe6!!!!3i!!!*P!*!)J'N$$3!!!3-!!DUc!!)!!2rrrri !N!JAPJ!!!!)!N!3+PJ#3'J)I!!%!N"i&!*!&F'&bFf9dEfXZD%C@3e3!N!F))!! !!3#3#!F!N")"9%9B9%0A588!N!Lfb`'hY`N#d`!!!NJ!!!6Y!*!)5JUcpJ!!!3- !!DUd!!)!!2rrrri!N!JAP`!!!!)!N!3-PJ#3'J)I!!%!N"i&!*!&F'&dBfKXCAC PE#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9@efc9-!!!"r!! !"6)!!!"!!!!"1X#TP5F!!!%$!!'UY3!#!!$rrrrq!*!)&jJ!!!!#!*!%$CB!N"S #(`!"!*!H"3#3"A"RC@jSC@&NCA*c,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4 $9dP&!*!)X[aG9EAE08`!!!$F!!!#(3!!!%!!!!%kRNrk@J!!!3-!!DUf!!)!!2r rrri!N!JAQ3!!!!)!N!3*PJ#3'J)I!!%!N"i&!*!&F(PNC@*eCbjS4PC$9!#3"`J J!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9@h#2m5!!!%"J!!%0)!!!#!!!!"QYi ki+m!!!%$!!'UY`!#!!$rrrrq!*!)&jS!!!!#!*!%#TB!N"S#(`!"!*!H"3#3"A" jCA*bEh*c,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG9E,mA98 !!!dX!!!K,`#3#)AjmpB!!!%$!!'UZ!!#!!$rrrrq!*!)&jX!!!!#!*!%"jB!N"S #(`!"!*!H"3#3"A"jCR"P,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )X[aG9ED6T3F!!!*m!!!(L!!!!%!!!!%k3-RD``!!!3-!!DUj!!)!!2rrrri!N!J AR!!!!!)!N!3*PJ#3'J)I!!%!N"i&!*!&F(PcG'&dC5jS4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,,mA81h#2m3!!!%H!!!#VX!!!%'!!!"QSQjTa%!!!% $!!'UZJ!#!!$rrrrq!*!)&jd!!!!#!*!%#*B!N"S#(`!"!*!H"3#3"9"jG'K[ELj S4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,,mA9@fiCJU!!!%YJ!!%A- !!!"m!!!"QN,M'DF!!!%$!!'UZ`!#!!$rrrrq!*!)&ji!!!!#!*!%#jB!N"S#(`! "!*!H"3#3"A"jG'K[ER*eELjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43# 3#,,mA9Defc90!!!"Y!!!"D3!!!"b!!!"QX-FP8d!!!%$!!'U[!!#!!$rrrrq!*! )&jm!!!!#!*!%#TB!N"S#(`!"!*!H"3#3"A"jG'KbC@&N,QK'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)X[aG9VAE08d!!!%5!!!"c`#3#-KpUUm!!!%$!!' U[3!#!!$rrrrq!*!)&k!!!!!#!*!%$CB!N"S#(`!"!*!H"3#3"A*KEQGPEf*UC@0 d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aG9V@43Ti!!!(5!!! $b`#3#)d+@"-!!!%$!!'U[`!#!!$rrrrq!*!)&k)!!!!#!*!%$CB!N"S#(`!"!*! H"3#3"A0XD@0PEf*UC@0d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*! )X[aG@EDmS(N!!!BF!!!4U3!!!(S!!!'D#,QZVJ!!!3-!!DV!!!)!!2rrrri!N!J AS`!!!!)!N!31PJ#3'J)I!!%!N"i&!*!&Fh4bD@jREf*UC@0d,QK'9N08!*!(##! !!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aGA,AE08d!!!15!!!(AJ!!!(J!!!'D$A* -$3!!!3-!!DV"!!)!!2rrrri!N!JAT!!!!!)!N!31PJ#3'J)I!!%!N"i&!*!&Fh4 bG@0dE@9YBQ9b,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)X[aGAVC fXeF!!!%b!!!#hJ#3#-ShE-F!!!%$!!'U`J!#!!$rrrrq!*!)&k8!!!!#!*!%#jB !N"S#(`!"!*!H"3#3"A0jFfe[C(9XC5jS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K 83eG*43#3#,,mA9kefc90!!!#S!!!"RF!N!KA(5HH!!!"!`!"UX3!!J!!rrrrrJ# 3#"HR!!!!!J#3"!H@!*!D!Km!!3#3(J8!N!9dEfYPELjS4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,,mA9kefc90!!!"%!!!!MX!N!KFhZ@Q!!!"!`!"UX8 !!J!!rrrrrJ#3#"HS!!!!!J#3"!Z@!*!D!Km!!3#3(J8!N!9dFQ&MC@*KBfXZD%C @3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Lbr&eIYGXe63!!!T3!!!BV!*! )q-R9-!!!!3-!!DV'!!)!!2rrrri!N!JAU3!!!!)!N!30PJ#3'J)I!!%!N"i&!*! &G(9`E'9[BQTPBh3ZD%C@3e3!N!F))!!!!3#3#!F!N")"9%9B9%0A588!N!Le%!p JYFLYV`!!((3!!(2p!!!!2J!!!6Tdp[Sk!!!"!`!"UXF!!J!!rrrrrJ#3#"HU!!! !!J#3"!q@!*!D!Km!!3#3(J8!N!9eEQPMEf4PEf*UC@0d,QK'9N08!*!(##!!!!% !N!J(!*!5!94&@&4$9dP&!*!)YDa5%VAE08`!!!H-!!!81`#3#,bhj$d!!f8'!!0 P-3!#!!$rrrrq!*!)''m!!!!#!*!%"jB!N"S#(`!"!*!H"3#3"A"jE@9Y,QK'9N0 8!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YE*,5EDmVQF!!")Q!!![$J!!!(S !!!'D+jfLT3!$C3B!!f8b!!)!!2rrrri!N!JBEJ!!!!)!N!3)PJ#3'J)I!!%!N"i &!*!&F(P`Eh*d,QK'9N08!*!(##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)YB!TKlD 1HUX!!!&`!!!#UJ!!!()!!!'D%HaXT3!$C3B!!f8r!!)!!2rrrri!N!JBE3!!!!) !N!3*PJ#3'J)I!!%!N"i&!*!&G@0ZD'&cD#jS4PC$9!#3"`JJ!!!"!*!)"`#3%J& 849K83eG*43#3"!%"!!#fQ,,YYTLbl3!!!4`!!!*m!*!)Pl&VZ!!#0QB!!MCU!!) !!2rrrri!N!JD+J!!!!)!N!3-PJ#3'J)I!!%!N"i&!*!&Bf9XE'pLDQ9MG#jS4PC $9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43!!!HB!!3!!YRDc9lCfXeF!!!51!!! 0c`#3#%YXB+3!!MCQ!!)fMJ!#!!$rrrrq!*!)'LN!!!!#!*!%#jB!N"S#(`!"!*! H"3#3"A"jAf0eFR0PFbjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43!!!HB "33!!YN#aNlC!XC-!!!#U!!!"3`#3#2'BZN!!!MCQ!!)fNJ!#!!$rrrrq!*!)'LJ !!!!#!*!%#TB!N"S#(`!"!*!H"3#3"A"jCf9dEh"d,QK'9N08!*!(##!!!!%!N!J (!*!5!94&@&4$9dP&!!!#L!#"!!#fS0%-YYqm$`!!"@i!!!iP!*!)[a"(9`!#0QB !!MDG!!)!!2rrrri!N!JD*`!!!!)!N!3+PJ#3'J)I!!%!N"i&!*!&FhPYG'&LE'8 ZD%4@3e3!N"#h#m5DY`[%QJ!!!4S!"XQd!!!!!3#3("ZQ!!!!!J!#!*!%"`!!!!J &"`#3'`)I!!%!N#*1G@ePFQPM4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43# 3#,DdZHkh#lF$!!!-L!!!0Cd!N!K0-Fm+!!E*mJ!'bI-!!`!!rrrrrJ#3#"ZP!!! !!J#3"!f@!*!D!RS!!3#3(J8!N!9KFR*KH@pLDQ9MG#jS4PC$9!#3"`JJ!!!"!*! )"`#3%J&849K83eG*43#3#,F,Y`1h#lF$!!!&N!!!!""V!*!)FTrcaJ!'bI)!"XR d!!-!!2rrrri!N!JET!!!!!)!N!3&PJ#3'J*k!!%!N"i&!*!&CM*M,QK'9N08!*! (##!!!!%!N!J(!*!5!94&@&4$9dP&!*!)Y`Zh!lF,Y`-!!!'D!!!&"!#3#(2Pd2` !"XRb!!E*p3!$!!$rrrrq!*!)'k-!!!!#!*!%#*B!N"S#HJ!"!*!H"3#3"A*KEQa TBLjS4PC$9!#3"`JJ!!!"!*!)"`#3%J&849K83eG*43#3#,DdZHkfY,RZ!!!&AJ! !'BS!N!M,FZJ3!!E*mJ!'bIB!!`!!rrrrrJ#3#"ZL!!!!!J#3"!f@!*!D!RS!!3# 3(J8!N!9eCR9ZBfpLDQ9MG#jS4PC$9!!!J!#3"!J)!!B"!*!)"`#3$i!!!!%!N!m "Y6TLJ,8kBS!!"!!"!!%!!3!"!!%!!)!!!N)!#3!!!!)!!!%B!!%!N!8XY6TLJ,8 kBS!BE!!!#!8!N!8I!*!D&@UL!*!I!3#3"84[Bh9YC@jdBA4TEfiJ,5"cG'&bG#" SCA*P,QKdE@`I4'pMG@ePER4KG'P[EL!Y)(0dBA*d)'KPFQ8ZD(4YE%C@3e3#%)! !N!3))!!J!3#3#!F!N"!&!!&"G'e`8(PdD#%!!X)!d3!!YV)G5VF,`qX!!!'S!!! $"!!!&mB!!'ZSHmqQD!!!!(3!"bd4!!%!!2rrrri!N!JF-!!!!!)!N!3B(`#3%)! !N!N"Li)!N"m'!*!&8(PdD'pZ5@jdCA*`FQ9dCA*$E'&cFfPM4PC$9!)3J!#3"!J J!#!"`!#3"`F!N"!&!!&"G'e`8(PdD#%!!X3!(3!!YSIAClF,`ri!!!'Q!!!$"!! !&mi!!'[!(-Rf4J!!!(3!"bd3!!%!!2rrrri!N!JF,`!!!!)!N!3A(`#3%#!!N!N "Lk!!N"m(!*!%!9"jG'K[ENPZG'9bF(*PG'9b3f&bBQpZ4PC$9!)3J!#3"!JJ!#! "!*!)"`#3%!8!!8&38%a3HA3b)3!"k!$r!!#h#k`GY`ZX(`!!!DS!!!-%!!!Db!! !41G26@eE!!!!G!!(*)8!!3!!rrrrrJ#3#"`Z!!!!!J#3""BI!*!3J!#3#3',JJ# 3(`B!N!9$EfjQD@GeFQ93HA4SEfj$E'&cFfPM4PC$9!!!J!#3"!J)!!!"!*!)"`# 3$i!!!!%!N!m"YX-lrVE$1ri!"!!"!!%!!3!"!!%!!)!!!!)!N!8#!!!"'`!"!*! &,,E$1rkf`c[q($-!!!3*!*!%$aJ!N"#!!*!,JJ#3(`%!N!9MEfjQD@GeFQ9cBh* TF(46CA3JBfpZCQPRGA*P)(4[)%0XBA0cD@-@3fpZCQPRGA*P8(PdD'pZ3faKFh0 TBdC@3e3#%)!!N!3))!!J!F!!N!F(!*!3"3!"39"36&"jG$)K!!(T!)8!!,F,V"b h#k`G!!!"TJ!!!`3!!"V3!!"&!2d3kJm!!!"d!!FNK!!"!!$rrrrq!*!)(#d!!!! #!*!%&4J!N"!J!*!*!BZJ!*!I"`#3"!&$EfjQD@GeFQ93HA4SEfj$BA*LEfj'9N0 8!!#!!*!%#!J!!!(!!*!("`#3$i!!!!%!N!m"YX-mAVE$2&i!"!!"!!%!!3!"!!% !!)!!!!)!N!8#!!!"'`!"!*!&,,E$2&kf`caH($3!!!3*!*!%$aF!N"!J!*!,S!# 3(`%!N!3"BfpZCQPRGA*PFf0bDA"d8f9d)%0[EQCTCh9bC5"dEb"$BA*LEfi93fp ZCQPRGA*P8(PdD'pZ3f&bBQpZ4PC$9!!!J!#3"!J)!!!"!*!)"`#3$i!!!!%!N!m "YX-p'lE$24X!"!!!!!%!!3!"!!%!!)!!!!)!N!8#!!!"'`!"!*!&,,E$24Zf`cd E($B!!!3+!*!%$aB!N"#!!*!,JJ#3(`%!N!9MEfjQD@GeFQ9cBh*TF(48CA0d)%0 [EQCTCh9bC5"$E'&cFfPM&N0[EQCTCh9bC9"jG'K[EN0XBA0cD@0'9N08!!#!!*! %#!J!!!(!!*!("`#3$i!!!!%!N!m"YX-p4EE$288!"!!!!!%!!3!"!!%!!)!!!!) !N!8#!!!"'`!"!*!&,,E$28@f`ce&($F!!!3+!*!%$a8!N"!J!*!,S!#3(`%!N!3 "BfpZCQPRGA*PFf0bDA"d9'9cG#"$EfjQD@GeFQ8J3f&bBQpZ&80[EQCTCh9bC9" jG'K[EN0KFQ*[ENC@3e3!!)!!N!3)#!!!!8!!N!F(!*!2J!!!!3!!!!)!N!RZ!!' fk2`lYZMm1`!%!!%!!3!"!!%!!3!!J!!!!J#3"3)!!!%E!!%!N!8XYZMm1lESr$X FU`!!"!B!N!8G!*!3)!#3#k!!N"m"!*!&6@9cFf&RC5!LFh9LE'&eEQ0S)'CKD@` JGf&bEL*25e4SC5"TER0dB@aXCA)JDA-JB@*[GA3JG'mJFR9Z)%0[EQCTCh9bC9" jG'K[EN0KFQ*[EL"dEb"QD@jTFfJJD@jcG'&XE'&dD@pZ,L"2EL"0B@028eJJG'K TFb"hD@aX)("bEf*KBQaj)'CKD@`X)'&ZC#"jEh8JFfK[G@aN)(*eEL"$EfjQD@G eFQ93HA4SEfj$BA*LEfiJE@&ZG@&XE(NJB@CdCA)JD@jcG'&XE'&dD@pZ)'Pc)'0 [EA"XCA4P)'&ZC#"LC@C[FQ8JH@pe)(4bH5"KERPdD'PZCb"PE(0P)(GTG'JJ)&" jG'K[ELj'9N08!!#!!"`f!!J)!!!"!*!)"`#3$i!!!!%!N!m"YX(`!,E"m!!!"!! "!!%!!3!"!!%!!)!!!N)!N!8#!!!"'`!"!*!&,,E"m!#f`I!!($8!!!30!*!&(!# 3%)!!N!NF,S)!N"m"#!#3"&0eBLeXBA9ZBfJJ3fpZCQPRGA*P)%0XBA0cD@0!!*! '!8C@3e3!!)!!($F!#!J!!!(!!*!("`#3$i!!!!%!N!m"YX(`!,E"m!!!"!!"!!% !!3!"!!%!!)!!!N)!N!8#!!!"'`!"!*!&,,E"m!#f`I!!($J!!!30!*!&'`#3%#! !N!NF,D!!N"m"#!!!!!&6G@)YE'&eEQ0S)%0[EQCTCh9bC5"$BA*LEfj!!*!'!8C @3e3!!)!!N!3)#!!!!5!!N!F(!*!2J!!!!3!!!!)!N!QM!!'fcE2YYXfcl3!%!!% !!3!"!!%!!3!!J!!!!J#3"3)!!!%E!!%!N!8XYXfclEE0XqdFF`!!"!B!N!8D!*! FSJ#3(`%!N!90CA0cB@GP)#*ABA*Z)'&LEh9d)'4PE'&j)Np,3@CdCA)JG'KP)'P ZFh4KE'aKG'P[EL"TFb"MEfe`E'9dC5"dD'8JCQPZC'9b)(GTE'`JBQ8JGQ9bH5" LGA0j)'C[FL"eF#"dEb"K)'CPGb"YD@jeG'9c)(9`C'&dD@jR)'PdFb"NBA4KBQ& cCA-JGfPdD#"dD'8JG'K[GA0KEQ4c)'pQ)'CTE'9c)(P[G5"SBACP)'TeFh3JD@j cG'&XE'9N,P""3dX!$Ja&BA0j)%PZFh4KE'`!"6)Z-@)b!!!"304SL!!!!4J!N*8 @8(PdD'pZ)'C[FL"$E'&cFfPM)&"33`#3"IkS[)!-!"BB!*!-J!#3"e+!!*"H8S! !N"mI6@PZD@eKE#"TER0dB@aX)'C[FL"$E'&cFfPM)&"33cj8D'Pc)'PZFh4KE'a c)&"jG'K[EL"QEh)J8'phCA*0B@0c)(*eEQjTEQFJ6@&M6e-J15"[FL"PBA*XD@9 b,J-b,M%!!!#m$-dJ"J!('!#3#`'!!*#)'&4V)#XJ8%P-)'C[FL"$E'&cFfPM)&" 33hj8D'Pc)'PZFh4KE'ac)&4VD@jdCA)J,#"IG'YTER4PFL"KEQ3JG'KP)&"jG'K [EL"*E@&RD@jR)%aTBR*KFRNJ+&"*6#NJCQpb)&"[Gf9b6@&MFbiJ$94V)#BJ9'0 X)(CPFR0TEfiJ1#ic1b"358`JGQ9bFfP[EL!a,M%Z-5i'9'XJ1#ic!!!!,Q[,)!% !!KJ!N!X"`!#3L!p1G@ePFQPM)'C[FL"38%-m9'KTFb"TER0dB@aXFb"dD'8J6R9 YCA*TBf&X)&"jG'K[EL"PH(4PER0TEfjc)'C[FL"3EhGPFNeKBh-Z#$)`,M!Z-') b!!!!$bSl)!-!""J!N!X"J!#3L!Y*E@FJCQpb)&"33c"8D'Pc)'PZFh4KE'ac)(4 SC5$5D@eRdb"`B@0VB@GP)'C[FL"$E'&cFfPM)&"33bi$-5ic!!!!#V9&J!J!&4J !N!X"J!#3L!1RUkN!N!L!"3!'#!#3P4K3HA4SEfiJCQpb)%0KFQ*[ELp0B@028eJ !!c)Z-3!!!1"3()!0!"FB!*!'B!#3"5!!N!FT3!#3ALP!!*!I'NeTEQPYB@`JD@j cG'&XE#"QEh)J3f&bBQpZ3NPZFh4KE'`J6@&M8(PdD'pZ)'C[FL"0B@028b!j)'p b)&JX)'pb)$JJGfPdD#"$BA*LEfj-D@)JD@jcG'&XE'9N,J-b,M%!!!#l%YU!!J! 5'!#3"Q!!N!3")!#3L!j358`JCQpb)%0KFQ*[ENp8D'Pc)'PZFh4KE'ac)(4SC5" 3HA4SEfiJ5@eKCfPZCb"-D@*bBA*j)#K358`T)'C[FL"$BA*LEfiZ)!dJ8%P-)(C PFR0TEfiJ-5ia,M%Z#9"*6#!a,M%Z-3!!!![Gai!%!"-B!*!'B!#3"!%J!*#)%Nj eE@9bD@-JCQpb)%0KFQ*[EMP8D'Pc)'PZFh4KE'ac)(4SC5"1G@ePFQPMB@`J8(P dD'pZ)'9iG'9ZFfP[ER-JCQpb)%0KFQ*[ELi)-M!Z-#i`BM)!!!!2+Uq!"`!8'!# 3"Q!!N!3")!#3L!jTE@FJCQpb)%0KFQ*[ELY8D'Pc)'PZFh4KE'ac)(4SC5$5D@e Rdb"`B@0VB@GP)'C[FL"$BA*LEfiZ!c%Z-`!!!!Ueb5!*!!SB!*!'B!#3"!%J!*# )!kHVU3#3#)!1!"!)!*#9$N4PGQ9XEh"PFR-JDfPd2P4SDA-JD@jcG'&XE(-JG'K P)'4PGQ9XEh"PFR-JDfPd)'jPC@4PC#"dEb"hFQPdC5"$,@9iG'9ZFfP[ER-Z!c) Z-3!!!!NBK"!2!"%B!*#93N*bC!!"!!i!!3!!!!%!!`#3%aB!!`#3%`F!!`#3%`) !!`#3%`3!!`#3%a8!!`#3%`B!!`#3%aF!!`#3%a)!!`#3%a-!!`#3%a3!!`#3%`S !!`#3%a!!!`#3%a%!!`#3%`%!!`#3%N024%8!!%*%59)!!`YTEQ0XG@4P)("`B`# 3&!%!$fPZBfaeC'8J9'YTER4PFJ#3%!%!$QPZBfaeC'8JBf&bBQpZ!*!4!3"38Np +!(F"lJ%`!-J!B!!!!Ui!!#'b!!!4+!!!!%J!!!")!!!!5!!!!%J!!!")!!!!5%, f"58SB%*%59)!!d*68N-!!!!krj!%!!!(8fpeFQ0PFf4H!!!!!JE*Y1"&EQ4%!!! !$[q3"!!!!3%!N!T#8h*M!!!!1J!!!!)!!3a6Eh9bBf8J8'&dD(-U1Ii'q3'B!!% !N"C39Q0d!!!!*J!!!BX!!J!!!!jLD@jKFRNJ4'PcG(*TBR9dD@pZ1P"@Bh3!!!! V!!!"M!!#!!!!%f*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcT39Q0d!!!!-`!!!Bd !!J!!!!TLD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkBfaKFh0PFcT39Q0d!!!!0`! !!Bi!!J!!!!9LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkBfpYF'&bDA0[ER-k8&C MG!!!!$)!!!*i!!)!!!!(BQPZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1Q0eFR0PFcT 39Q0d!!!!,`!!!C!!!!)!!!!'BQPZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1Q4ZFcT 39Q0d!!!!-`!!!P)!!J!!!!&LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkD@e`GA4 TE$T39Q0d!!!!-`!!!C3!!J!!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkE@3 eG'9cG$T39Q0d!!!!0`!!!C8!!J!!!!KLD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@m kE@9dB@0XBA0cCA-k8&CMG!!!!$)!!!'@!!)!!!!)BQPZBA*j)%4TFh4bD@*eG'P [EMT%C@e[1R"KFR0PFMT39Q0d!!!!-3!!!CF!!J!!!"4LD@jKFRNJ4'PcG(*TBR9 dD@pZ1N4PE@mkF'4TFh3k8&CMG!!!!#m!!!'C!!)!!!!*BQPZBA*j)%4TFh4bD@* eG'P[EMT%C@e[1R*`BcT39Q0d!!!!-`!!!CS!!J!!!"GLD@jKFRNJ4'PcG(*TBR9 dD@pZ1N4PE@mkFf0bDA"dFcT39Q0d!!!!,`!!!CX!!J!!!!KLD@jKFRNJ4'PcG(* TBR9dD@pZ1N4PE@mkFfGT1P"@Bh3!!!!b!!!"R!!#!!!!%'*TEQ&bH5"%DA0dFQP LGA4TEfik4'9YEcTcCfNkB@`k8&CMG!!!!$8!!!'G!!)!!!!#BQPZBA*j)%4TFh4 bD@*eG'P[EMT%C@e[1R0RD6TKG@4TEcT39Q0d!!!!-J!!!Cm!!J!!!!GLD@jKFRN J4'PcG(*TBR9dD@pZ1N4PE@mkFfGT1Q0N1P"@Bh3!!!!c!!!"S!!#!!!!"Q*TEQ& bH5"%DA0dFQPLGA4TEfik4'9YEcTcCfNkCQa`1P"@Bh3!!!!b!!!"S3!#!!!!#Q* TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTcCfNkCf`k8&CMG!!!!$)!!!'M!!)!!!! &BQPZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1R0RD6TcGMT39Q0d!!!!03!!!D3!!J! !!#9LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4PE@mkFfGT1RCTC'9[1P"@Bh3!!!!c!!! "T3!#!!!!%'*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTcEf0VCA4c1P"@Bh3!!!! c!!!"U!!#!!!!#@*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTdD(*PB@4c1P"@Bh3 !!!![!!!#U`!#!!!!"Q*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTdDAJk8&CMG!! !!$F!!!+Y!!)!!!!@BQPZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1R4TH$TLDA4YBA" c1P"@Bh3!!!!h!!!#V!!#!!!!#f*TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTdDAJ kFf&YF'aPFcT39Q0d!!!!-`!!!DN!!J!!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1N4 PE@mkG'YTER4PFMT39Q0d!!!!13!!!DS!!J!!!"PLD@jKFRNJ4'PcG(*TBR9dD@p Z1N4PE@mkG'YTER4PFMTRG@PNEcT39Q0d!!!!1!!!!DX!!J!!!#0LD@jKFRNJ4'P cG(*TBR9dD@pZ1N4PE@mkG'YTER4PFMTYBA4d1P"@Bh3!!!![!!!#G!!#!!!!!f* TEQ&bH5"%DA0dFQPLGA4TEfik4'9YEcTiE@`k8&CMG!!!!$!!!!'Y!!)!!!!#BQP ZBA*j)%4TFh4bD@*eG'P[EMT%C@e[1RTXD@)k8&CMG!!!!$%!!!'Z!!)!!!!#BQP ZBA*j)%4TFh4bD@*eG'P[EMT&H(4PER0TEfjc1P"@Bh3!!!!j!!!"V`!#!!!!#Q* TEQ&bH5"%DA0dFQPLGA4TEfik4AKdC@jcD@pZFcT*E@&RD@jR1P"@Bh3!!!"!!!! "X!!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik4AKdC@jcD@pZFcT*E@&RD@jR1NP YB@GPFcT39Q0d!!!!23!!!E)!!J!!!$jLD@jKFRNJ4'PcG(*TBR9dD@pZ1N9iG'9 ZFfP[ER-k5@eKCfPZCcT358`k8&CMG!!!!$i!!!'c!!)!!!!%BQPZBA*j)%4TFh4 bD@*eG'P[EMT&H(4PER0TEfjc1NPYB@GTEQFk8f&ZC6T39Q0d!!!!33!!!E3!!J! !!!pLD@jKFRNJ4'PcG(*TBR9dD@pZ1N9iG'9ZFfP[ER-k5@eKCfPZCcT6Bh*TF(4 c1P"@Bh3!!!!e!!!"YJ!#!!!!"'*TEQ&bH5"%DA0dFQPLGA4TEfik4AKdC@jcD@p ZFcTTE@Fk8&CMG!!!!$N!!!'h!!)!!!!)BQPZBA*j)%4TFh4bD@*eG'P[EMT&H(4 PER0TEfjc1QPYCcT-D@)k8&CMG!!!!$N!!!'i!!)!!!!@BQPZBA*j)%4TFh4bD@* eG'P[EMT&H(4PER0TEfjc1QPYCcT0B@-k8&CMG!!!!$S!!!'j!!)!!!!*BQPZBA* j)%4TFh4bD@*eG'P[EMT&H(4PER0TEfjc1QPYCcTdCA0d1P"@Bh3!!!!U!!!"[`! #!!!!Y'*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1P"@Bh3!!!!a!!!#4!!#!!!!"Q* TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1Q0eFR0PFcT39Q0d!!!!0!!!!F!!!J!!!"P LD@jKFRNJ4'PcG(*TBR9dD@pZ1NaTBMTNDA0dGA4TE(-k8&CMG!!!!$`!!!("!!) !!!!6BQPZBA*j)%4TFh4bD@*eG'P[EMT-D@)kC'PcG(9dD@ac1Q0[E@eKEQ3k8&C MG!!!!$3!!!($!!)!!!"#BQPZBA*j)%4TFh4bD@*eG'P[EMT-D@)kC@jMEf4TEQG c1P"@Bh3!!!!b!!!"a!!#!!!!&'*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1QaTBLe [E'3k8&CMG!!!!$%!!!('!!)!!!!4BQPZBA*j)%4TFh4bD@*eG'P[EMT-D@)kE'P L,A4V1P"@Bh3!!!!e!!!#D!!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1R" XBA3YBQ9[Fc8k8&CMG!!!!$J!!!*$!!)!!!!$BQPZBA*j)%4TFh4bD@*eG'P[EMT -D@)kF'aKG#eQFQ9PBR0N0$T39Q0d!!!!1!!!!N)!!J!!!!0LD@jKFRNJ4'PcG(* TBR9dD@pZ1NaTBMT`E'&d,@CbC@9LFf3e1P"@Bh3!!!!h!!!"c!!#!!!!!@*TEQ& bH5"%DA0dFQPLGA4TEfik6'PL1R"XBA3YCf9ZCA*TBcT39Q0d!!!!0J!!!UN!!J! !!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1NaTBMT`E'&d,A*TFf0[FcT39Q0d!!!!1!! !!GB!!J!!!!GLD@jKFRNJ4'PcG(*TBR9dD@pZ1NaTBMTcDA4P,A"KBfYKCf9c1P" @Bh3!!!!m!!!#U!!#!!!!"'*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1R0TG'8YF'& MDf&RCA-k4NC81P"@Bh3!!!!l!!!#T`!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfi k6'PL1R0TG'8YF'&MDf&RCA-k68%k8&CMG!!!!%!!!!+Q!!)!!!!9BQPZBA*j)%4 TFh4bD@*eG'P[EMT-D@)kFfPdC5e`B@0VB@GPFcT1G@ePFQPM1P"@Bh3!!!!m!!! #T3!#!!!!"'*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1R0TG'8YF'&MDf&RCA-k8Nj (1P"@Bh3!!!!q!!!#VJ!#!!!!"@*TEQ&bH5"%DA0dFQPLGA4TEfik6'PL1R0TG'8 YF'&MDf&RCA-kDfPZC(-k8&CMG!!!!#m!!!(A!!)!!!#UBQPZBA*j)%4TFh4bD@* eG'P[EMT-D@)kG'9cG$T39Q0d!!!!0J!!!GJ!!J!!!)PLD@jKFRNJ4'PcG(*TBR9 dD@pZ1NaTBMTdCA0d1QpeG("eG$T39Q0d!!!!,J!!!Mm!!J!!!!4LD@jKFRNJ4'P cG(*TBR9dD@pZ1NaTBMTiE@`k8&CMG!!!!$)!!!*"!!)!!!!%BQPZBA*j)%4TFh4 bD@*eG'P[EMT-D@)kH'eX1Q4[E6T39Q0d!!!!0J!!!N!!!J!!!!*LD@jKFRNJ4'P cG(*TBR9dD@pZ1NaTBMTiE@`kF'&bFf9bFcT39Q0d!!!!-J!!!Mi!!J!!!!CLD@j KFRNJ4'PcG(*TBR9dD@pZ1NaTBMTiE@`kFf&i1P"@Bh3!!!!U!!!"f3!#!!!!"f* TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1P"@Bh3!!!!b!!!"fJ!#!!!!#Q*TEQ&bH5" %DA0dFQPLGA4TEfik6@&M1N0[ER4bD@)k8&CMG!!!!%)!!!(E!!)!!!!#BQPZBA* j)%4TFh4bD@*eG'P[EMT0B@-k3fpZG(*TBMT"480KF(4eFQ93BA*cCA)k8&CMG!! !!$S!!!+U!!)!!!!#BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k3fpZG(*TBMT#3P" j,QaY1P"@Bh3!!!!h!!!"h!!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N0 [ER4bD@)k3N*3H6T39Q0d!!!!2`!!!PX!!J!!!!4LD@jKFRNJ4'PcG(*TBR9dD@p Z1NeKBcT$EfjdFQPL1NPYB@GP5'9XF'9bFcT39Q0d!!!!33!!!H3!!J!!!!9LD@j KFRNJ4'PcG(*TBR9dD@pZ1NeKBcT$EfjdFQPL1P"jG'K[EN4PG'9MG'pb1P"@Bh3 !!!!r!!!"j3!#!!!!#@*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N0[ER4bD@)k8(P dD'pZ8f0bDA"d1P"@Bh3!!!!l!!!"k!!#!!!!"'*TEQ&bH5"%DA0dFQPLGA4TEfi k6@&M1N0[ER4bD@)k8fKPFQa[BfXk8&CMG!!!!$d!!!*h!!)!!!!#BQPZBA*j)%4 TFh4bD@*eG'P[EMT0B@-k3fpZG(*TBMT8B@*ME'9KEQ9b1P"@Bh3!!!!h!!!"i`! #!!!!!@*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N0[ER4bD@)kEh0KE6T39Q0d!!! !1`!!!QN!!J!!!!&LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT$EfjdFQPL1R0dFR" dD@eP1P"@Bh3!!!![!!!"k3!#!!!!(f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4 PE@mk8&CMG!!!!$S!!!(a!!)!!!!(BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k4'9 YEcT35808BR*[Gh0P1P"@Bh3!!!!h!!!#I!!#!!!!!@*TEQ&bH5"%DA0dFQPLGA4 TEfik6@&M1N4PE@mk8'aeCdPZFcT39Q0d!!!!1`!!!M`!!J!!!!*LD@jKFRNJ4'P cG(*TBR9dD@pZ1NeKBcT%C@e[1Q&`F'aPFf0bDA"d1P"@Bh3!!!"&!!!#23!#!!! !"'*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4PE@mkBA"`E'9cBh*TF(3k4'PcDep $Eh"j1P"@Bh3!!!!h!!!"kJ!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4 PE@mkBf&XE'4XE$T39Q0d!!!!-`!!!HX!!J!!!!4LD@jKFRNJ4'PcG(*TBR9dD@p Z1NeKBcT%C@e[1Q0RD6T39Q0d!!!!1!!!!H`!!J!!!!&LD@jKFRNJ4'PcG(*TBR9 dD@pZ1NeKBcT%C@e[1Q9iB@e`E'8`1P"@Bh3!!!!i!!!"l3!#!!!!!f*TEQ&bH5" %DA0dFQPLGA4TEfik6@&M1N4PE@mkCAKKEA"XC6%k8&CMG!!!!$J!!!(Z!!)!!!! $BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k4'9YEcTPH'&YF'aP-MT39Q0d!!!!1J! !!Hm!!J!!!!CLD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT%C@e[1QKdE@`ZD@0[ER- k8&CMG!!!!$N!!!(`!!)!!!!#BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k4'9YEcT TE@GLFQphFf8k8&CMG!!!!$J!!!(b!!)!!!!"BQPZBA*j)%4TFh4bD@*eG'P[EMT 0B@-k4'9YEcT`FQPZG'PZCcT39Q0d!!!!13!!!I-!!J!!!!*LD@jKFRNJ4'PcG(* TBR9dD@pZ1NeKBcT%C@e[1R&eD@0VG'PYC6T39Q0d!!!!13!!!I3!!J!!!!*LD@j KFRNJ4'PcG(*TBR9dD@pZ1NeKBcT%C@e[1R*PFfpeFQ0PFcT39Q0d!!!!03!!!IB !!J!!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT%C@e[1R0[G@jN1P"@Bh3!!!! f!!!"p`!#!!!!!f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4PE@mkFh"PC@0S1P" @Bh3!!!!i!!!"q!!#!!!!!@*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1N4PE@mkG'9 iG'9NDA3k8&CMG!!!!$8!!!(j!!)!!!!$BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@- k4'9YEcThBA0dC6T39Q0d!!!!,J!!!IS!!J!!!"aLD@jKFRNJ4'PcG(*TBR9dD@p Z1NeKBcT-D@)k8&CMG!!!!$`!!!(l!!)!!!!4BQPZBA*j)%4TFh4bD@*eG'P[EMT 0B@-k6'PL1QaTBLecBh*TF(4TEQFk8&CMG!!!!%%!!!)h!!)!!!!&BQPZBA*j)%4 TFh4bD@*eG'P[EMT0B@-k6'PL1QaTBLecBh*TF(4`B@0VB@GPFcT39Q0d!!!!63! !!MX!!J!!!!9LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)kE'PL,A0MFQP`G(" KBfYKCf9c1N0[C'9ABA*bD@pb1P"@Bh3!!!"+!!!#1J!#!!!!"Q*TEQ&bH5"%DA0 dFQPLGA4TEfik6@&M1NaTBMTXD@)YFf0bDA"dF'&MDf&RCA-k4AK`E'pbCA)k8&C MG!!!!%J!!!)j!!)!!!!-BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k6'PL1QaTBLe cBh*TF(4`B@0VB@GPFcT'D@jNCA)k8&CMG!!!!%S!!!)i!!)!!!!)BQPZBA*j)%4 TFh4bD@*eG'P[EMT0B@-k6'PL1QaTBLecBh*TF(4`B@0VB@GPFcT1CA4cBf&`C6T 39Q0d!!!!5`!!!MB!!J!!!!TLD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)kE'P L,A0MFQP`G("KBfYKCf9c1P0dC&0eDA4PFcT39Q0d!!!!1J!!!I`!!J!!!"YLD@j KFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)kE'PL,A4[EfaLEhJk8&CMG!!!!$S!!!* @!!)!!!!&BQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k6'PL1QeVBhG`FQpUC@0d1P" @Bh3!!!"+!!!#GJ!#!!!!#'*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1NaTBMTYDf0 hF(*[DQ9MG$TdC@e`E'&dC5eMBA*LEfik8&CMG!!!!%F!!!*e!!)!!!!)BQPZBA* j)%4TFh4bD@*eG'P[EMT0B@-k6'PL1QeVBhG`FQpUC@0d1R4PEA"XBA4P,A"`BcT 39Q0d!!!!-`!!!Id!!J!!!"jLD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@)kG'9 cG$T39Q0d!!!!2!!!!PF!!J!!!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT-D@) kG'9cG$TYDf0hF(*[DMT39Q0d!!!!3!!!!RX!!J!!!!&LD@jKFRNJ4'PcG(*TBR9 dD@pZ1NeKBcT-D@)kG'9cG$TYDf0hF(*[DMTXD@)k8&CMG!!!!$)!!!(q!!)!!!! bBQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k8'aeCdPZFcT39Q0d!!!!-!!!!J!!!J! !!!0LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT8EfpXFcT39Q0d!!!!0!!!!J%!!J! !!!PLD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT8EfpXFcT$4dNk8&CMG!!!!$3!!!) #!!)!!!!HBQPZBA*j)%4TFh4bD@*eG'P[EMT0B@-k9'p[E(-k584&1P"@Bh3!!!! k!!!#!`!#!!!!#f*TEQ&bH5"%DA0dFQPLGA4TEfik6@&M1P4[Efac1QeKBfCbC@9 kC6T39Q0d!!!!3!!!!J3!!J!!!!&LD@jKFRNJ4'PcG(*TBR9dD@pZ1NeKBcT8Efp XFcTYB@0QFQ9PHQ8kD'9XE'mk8&CMG!!!!$)!!!(r!!)!!!!MBQPZBA*j)%4TFh4 bD@*eG'P[EMT0B@-kFf0bDA"dFcT39Q0d!!!!+`!!!JB!!J!!!"jLD@jKFRNJ4'P cG(*TBR9dD@pZ1NeTFf-k8&CMG!!!!#m!!!*X!!)!!!!&BQPZBA*j)%4TFh4bD@* eG'P[EMT0DA0M1P*366T39Q0d!!!!0`!!!QX!!J!!!!*LD@jKFRNJ4'PcG(*TBR9 dD@pZ1NeTFf-k8P"01P4VD@jdCA)k8&CMG!!!!#m!!!)(!!)!!!!$BQPZBA*j)%4 TFh4bD@*eG'P[EMT5C@aZEh4PFcT39Q0d!!!!,!!!!JJ!!J!!!!aLD@jKFRNJ4'P cG(*TBR9dD@pZ1P4[Efac1P"@Bh3!!!!d!!!##3!#!!!!!Q*TEQ&bH5"%DA0dFQP LGA4TEfik9'p[E(-kBA9ND@p`H6T39Q0d!!!!03!!!M3!!J!!!!CLD@jKFRNJ4'P cG(*TBR9dD@pZ1P4[Efac1Q0[EA"TE'9b1P"@Bh3!!!!q!!!#03!#!!!!$'*TEQ& bH5"%DA0dFQPLGA4TEfik9'p[E(-kBfpYF'PXCA)kBfpYF'PXCA)k8&CMG!!!!$- !!!)+!!)!!!!&BQPZBA*j)%4TFh4bD@*eG'P[EMT8EfpXFcTQBA&hDASk8&CMG!! !!$%!!!)-!!)!!!!#BQPZBA*j)%4TFh4bD@*eG'P[EMT8EfpXFcTT-6KZ1P"@Bh3 !!!!a!!!#$3!#!!!!3@*TEQ&bH5"%DA0dFQPLGA4TEfik9'p[E(-kD@4XC6T39Q0 d!!!!0`!!!Ji!!J!!!!CLD@jKFRNJ4'PcG(*TBR9dD@pZ1P4[Efac1QPNE'8k5@0 [ER-k8&CMG!!!!$-!!!)2!!)!!!!8BQPZBA*j)%4TFh4bD@*eG'P[EMT8EfpXFcT `H@jMD'8k8&CMG!!!!$8!!!)3!!)!!!!#BQPZBA*j)%4TFh4bD@*eG'P[EMT8Efp XFcT`H@jMD'8k@$T39Q0d!!!!0!!!!K%!!J!!!$"LD@jKFRNJ4'PcG(*TBR9dD@p Z1P4[Efac1R0MFQP`G(-k8&CMG!!!!$3!!!*R!!)!!!!"BQPZBA*j)%4TFh4bD@* eG'P[EMT8EfpXFcTeEQPMEf4P1P"@Bh3!!!!j!!!#%J!#!!!!"'*TEQ&bH5"%DA0 dFQPLGA4TEfik9'p[E(-kGQ9bFfP[EQ0SC@0V1P"@Bh3!!!!h!!!#%`!#!!!!"f* TEQ&bH5"%DA0dFQPLGA4TEfik9'p[E(-kGf9LBfKPBfYPFMT39Q0d!!!!-J!!!K3 !!J!!!!*LD@jKFRNJ4'PcG(*TBR9dD@pZ1P4[Efac1RG[FQaN1P"@Bh3!!!!M!!! #'J!#!!!!!f4PGL"%DA0dFQPLGA4TEfik8&CMG!!!!#J!!!)E!!)!!!!"C'9f)%4 TFh4bD@*eG'P[EMT%C@e[1P"@Bh3!!!!Z!!!#(!!#!!!!!f4PGL"%DA0dFQPLGA4 TEfik4'9YEcTPE@*PC$T39Q0d!!!!,`!!!Kd!!J!!!!4NCABJ4'PcG(*TBR9dD@p Z1N4PE@mkCAKdC@jN1P"@Bh3!!!!Z!!!#(J!#!!!!!Q4PGL"%DA0dFQPLGA4TEfi k4'9YEcT`HA0fFMT39Q0d!!!!+`!!!Km!!J!!!$jNCABJ4'PcG(*TBR9dD@pZ1NP ZBfaeC'8k8&CMG!!!!$-!!!*k!!)!!!!%C'9f)%4TFh4bD@*eG'P[EMT*EQ0XG@4 P1NjeE@9bD@-k8&CMG!!!!#F!!!)J!!)!!!!$C'9f)%4TFh4bD@*eG'P[EMT0B@- k8&CMG!!!!#d!!!)K!!)!!!!#C'9f)%4TFh4bD@*eG'P[EMT0B@-k3R9TE'3k8&C MG!!!!#`!!!)S!!)!!!!#C'9f)%4TFh4bD@*eG'P[EMT0B@-k4'9YEcT39Q0d!!! !-J!!!LN!!J!!!!*NCABJ4'PcG(*TBR9dD@pZ1NeKBcT%C@e[1Q9YBQ9N1P"@Bh3 !!!!f!!!#+J!#!!!!!f4PGL"%DA0dFQPLGA4TEfik6@&M1N4PE@mkD@jdCA*cE'P `1P"@Bh3!!!![!!!#+`!#!!!!"f4PGL"%DA0dFQPLGA4TEfik6@&M1NPZBfaeC'8 k8&CMG!!!!#i!!!)X!!)!!!!0C'9f)%4TFh4bD@*eG'P[EMT0B@-kEAGPFQYc1P" @Bh3!!!!V!!!#,3!#!!!!!@4PGL"%DA0dFQPLGA4TEfik6@pNG@aPFcT39Q0d!!! !+3!!!Li!!J!!!!0NCABJ4'PcG(*TBR9dD@pZ1P4[Efac1P"@Bh3!!!!Z!!!#,`! #!!!!!Q4PGL"%DA0dFQPLGA4TEfik9'p[E(-kBQGPEMT39Q0d!!!!-`!!!M!!!J! !!!pNCABJ4'PcG(*TBR9dD@pZ1P4[Efac1Q*RC@ikBQGPEMT39Q0d!!!!-!!!!M% !!J!!!!jNCABJ4'PcG(*TBR9dD@pZ1P4[Efac1QCbC@9kC6T39Q0d!!!!-`!!!M) !!J!!!!KNCABJ4'PcG(*TBR9dD@pZ1P4[Efac1Qe[C(9XBA4[FMT39Q0d!!!!23! !!M-!!J!!!"CNCABJ4'PcG(*TBR9dD@pZ1P4[Efac1Qe[C(9XBA4[FMT8C@e`E'& dCA-k4@jN4!!!!!lrN!3!!%*%8e3!!!!k!!!!"!!!"e4KFQGPG(0N!!!k"XQBX!E *Q,$r`dKX"XQdh!Ed4&i"!3#3#N*%Fh3!!!"3!!!#R`!"#dCeE'`J9'&bCf9d,fJ (2@fJ"[T60J!1JBi!!!!$!*!-8&CMG!F"!*!+!3%6L!3!!!"#4(4N!!!&"!!!!U! !!J#3)Z!!N!G39Q0d%deKBe"jG'K[EM)aCR9XE#jSFAKaH!#3r`#3#e"@Bh3!N2m !N#039Q0d!*$r!!!!8&CMG!#3r`"ND@eRC'4cD`!"!!'h#mCIY`['A`!!!!)!!3# 3"!C%DA0V)&i!N"`%!!!!!d!!$deKBe"jG'K[EM)aCR9XN!3!N"j#4("M!!!$(!! !!U%!!J#3r`#3r`#3r`#3%8*%Fh3!!!"3!!!#SJ!"%N&MG'PfC5"'G@aX)&4KFQG PG2T60J!1JBi!!!!$!*!-8&CMG!J"!*!+!3%6L!3!!!"#4(4N!!!&"!!!!U-!!J# 3)Z!!N!G39Q0d&8eKBe"jG'K[EM)aB@0dDACP,QKaH(&i!*$r!*!*8&CMG!#3r`# 3)e"@Bh3!N2m!!!"39Q0d!*$r!'4TE@GNC(0V!!%!!EF,aQbh#mCX!!!!!J!"!*! %"N4TFfXJAJ#3(!3!!!!$3!!46@&M8(PdD'pZ-M&KBh4TGQ9fC3#3(%*%F'-!!!- F!!!#T!!#!*$r!*$r!*$r!*!44@jN4!!!!!lrN!3!!%&53d`!!!!krj!%!!!03A* MD'PfC5"-D@jVFbKJ"58SB!@1&RB!-H-k"59[i!%"!*!+4@jN4!!!!!lrN!3!!&* %688!!!!k!!!!"`!!$9*PB@3J6@8J4QPXCA0[GA*MC5"3B3#3#`%!N!T&EQ4%!!! !$[q3"!!!6%P$43!!!$S!!!!)!!!56'PMC@jcC5""Ch*PC@ePER4c)&"K!*!,!3# 3#N9ZC%3!!!!1rj!%!!"58e*$!!!!1J!!!!N!!!p5CA0[GA*MCA-J4QPXCA0ZG(- J8'%!N!S"!3#3#N9ZC%3!!!!1rj!%!!"#3P*$!!!!1J!!!!S!!!p#D@aXBQpKFQ3 J4QPXCA0ZG(-J8'%!N!S"!3#3#N9ZC%3!!!!1rj!%!!"65%a#!!!!1J!!!RJ!!"" 6D'&bC@3J6'PLFQ&bD@9c`4Eq!#h0(JFp3Y!(1$53!!%"!*!+4@jN4!!!!!lrN!3 !!%P14%i!!3C%DA0V)&i!!!!%!!!!!d!!$deKBe"jG'K[EM)aCR9XE%4Q58`!!!! ""88VbJ8P+'!&MKSZ"BiAa[r$6qB&*@B`!$(M1J!!J!!!!3!"!!3!!3!"!!'e&1A 9Y46PeBJ!!!%!!3#3$`%&!*!,J!#e&1A9Y46Pe8C-8%lrre*PFfpeFQ0P)'pQ)%& bBfKTGQ8qG'&XE'9b1NPZFh4KE'a'BA4"ERPhBANk5@jcG'&XE%CKG%&ZHAGKH5" BBfpN!*#q3d&-6!#3HB!!N!3"!3!!!!%)!#!'!58"b3%"!*!%%NPZFh4KE'aPFL" -EfFJ4QPXC3#3b3j*ER0dB@aXCA)J4'&dB3#3%`%!!3%!!0@#!!!"!!!#)E%!!L# a!!!Cb3!!+P&19[r`51FF"#JZ!!JU,J!-5(J!"#m%5'lrm#*Y%&"jG'K[EL!a,M8 Z-LjfBh4TG'8J-bifFf9bFf9YBQ8#!&C*8c&@59-a)3!!E!!"!*!5Y"2SF`#'Qkd !!!N@rr"J)NKi!qK`R0#%,`")E[r`)QhM#L"C6T!!+Qlrl#!Zrr"5J0D!,`4Krj! %!%U!CaC+K'`+F!'kJ'm-8S0J#(!"ZS"Z!P1$)!0-h`!i6Pj1G!!)L@aPBA"IC'& jF`!!+P&19[r`,`d[,J!-)'i!##m35'lrm#*Yi`SJ@8k3!#TZrq`!!!&5!*!%J!J !N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!# 3"$!!r-$rm2rirrMrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L$#)$)J#L !1)!iJ$M!1(!i($`(2J(q!(`!!$NX!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD 3"-c-!!4%N!B!"5+3"J!2!*!(r`#3"[3Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2% 4%83L)[!!m4%4%83Lm!$a%C!%m[!!m4%4%4,cm!$a%4%4%[2`!2%4%4%5mr!!mb% 4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!!!!!2mr2e8!#3"!rr93!!!!' +!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J# 3"4!!%!#3"!F!2m$r`2r!rr$rr2rmrrcrr2rmrrarrRrrIrm$rJ"m"`!i`1p![m# 1m)1-Jq6rp2a8qP6i9(e@IPGre`2H!(`!!%!Y!!!!$3!!rj!'!!(-N!6rr`!#CT! %c-`!!`#3"&99!!6GN!B!"EZ3"J!'UT!'!!H)N!B!#(H3"J!*9C!'!!T%N!B!#b+ 3"J!-%C!'!!m!N!J-r`#3"Fc'9mN!!!$lTmrmE`!!!2ElV+Z2!!!!p%ElTlr2!!$ d4%ElTfIr!24%42MlTR`!rj!&qh`!rb)[%4pDI!$r)r(a(hTm!2mLm4%IHR`!$b- [(apkI*!!$b)bm4pkI,N2rj!%HRbl!!!!q2Tkrl!!N!32rmX!!!!"3J#3")!)!*! &%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!4 rrRrq2r`rr"ri(rJ2m!r`"q!(i!2!!m!"J!'!!*!%IrjrrMrm2r`Iq"TB#"!--!3 J"#!#3!*!!B!"J!#3"3%MS`!!!!3!!2q3"J!"c*!%rrm!!QD3"-c-!!-cN!4QCJ! %-c-!!*QC!L+3"L!#4*!'-!!N4*!%3`!!*%53"%-!!!*%N!3`!!!#)%!8%c!!!!! K!3%$!*!%)K!3-`#3"!)"!6!!N!3#%"!`!*!&)4-!N!BK!`#3"J)`!*!'!M!!N"8 "BJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3) !N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2riIrJ2r!(q$ri1I$!!c-#cm)c iJcL!b*mS[lLlZ)1iacKq1!im!6i2rJjm!!"#J!!!!!J!!2q3"J!"c*!%rrm!!TQ 3"2rr!!0QN!6-c!!%-j!%CQB!"GhG!*!&"N53"J!()T!'!!m!N!Ir!*!'pL,r!2m !!!$aCL,r42m!!2%4CL*%42!!m4%4CL*%m!$a%4%4CL,`!2%99984m[!!m99999, cm!$a99&98[2`!2%4%995mr!!mb%994,cm!!2me94%[2`!!!"99%5mrF!!!!"%b, cph!!!&9Imr2hF!!!99!2rhF!!!!"FJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!% !"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!BIJ$r!Im"ri(rJIq"ri$r`(rJ !r!"q!$i!(J!-!*!%(`!JJ%#3#L$J(l!!q!"m!$B!(!!)!*!%R$N!!!!+!!$rN!B !!Irrc-crr`!#c*!%rrm!!jQCc-crr`!%QC!%rrm!"CQC-j!%!!CQN!6-c!!(Zj! '!!L)N!B!#AH3"J!2!*!2$rrrN!!!N!6r-NEj!!!!$r-!-dm!!!!234%L6i!!!!m a%L*2J!!!$d)L)dq!!!!23c)dri!!!!$r4%rrq!!!!!rrrrIrJ!#3"IpIq!#3"3r eri!!N!ArIr!!N!82ri!!N!Ei!*!-qJ#3")!%!*!&%!!3!*!*5!!!!%J!N!8#!!% !!J#3"p)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3$Rrqrj!)Iri!N"4rrS!"J!'`!B! "Iri!N!``a`!!!!-!!2q3"J!"`!$!!-!!!!*!!%!!3!!!!`#3'Mrrrrc9999Ae99 99pj999I9999A2rrrr!#3&J&D!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*! '!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrK rq(rmIri#rJ"m-!$-`,-`M!L$#)$)JLMrq2aiqRMiH(eiIRarrJ,q!(`!!#9B!!! !"`!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!3!N!4993!&4*!'!!BLN!B!$`# 3"rm!N!Ee)[m!r`!!!2&9)[mKr`!!m4&9)L)5m!$a%4&9)L,`!2%4%4&9)[!!m4% 4mK(bm!$rN!Acm!$r-cm4(r2`!2mdmI%Imr!!rc2a%4rcm!!20$mI(r2`!!mc3r% ImrB!$rq3"22fB!!#)[,cmrCJ!*!%$rpQ!!!!!@)!N!5!#!#3"4!!%!#3#8J!!!" )!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2r irrMrq2rirrMrq$riIrarrMrq!(``!-c!Xc#-#)-)J-L!+,ii`6M"Z1#i),K"[%% q2ri!I!!!++!!!!!)!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0f3"J!&UT! '!!C%N!B!"b+3"J!2!*!(r`#3"[BLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@B L)[!!m4%4%@BLm!$a%C!%m[!!mIrrmK(cm!$r!!"2)I2`!2m%4&mbmr!!rr"%!2, cm!!!m%4&m[2`!!m%4&mbmrF!$d99Ab(cph!!rrrcmr2hF!#3"!rrG`!!!!&U!*! %J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4! !%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrMrq2rm"ri"rJ"m-!$-`,-`M!L$#)$ )J#L!12riK(LhH)airr`(2J(q!(`!!#Hd!!!!#3!!rj!'!!(-N!6rr`!#QC!%rrm !!fD3"-c-!!6GN!B!"AH3"J!'9C!'!!G%N!B!##+3"J!2!*!(r`#3"[FLr`$r!!! !mAFLrb(r!!$a%AFL)K,`!2%4%AFL)[!!m4%4%AFLm!$a%C!%m[!!m4%4%4,cm!" 9N!4@mr!!8!3'"%rcm!"3CJpQ6r2`!&4%rd42mr!!Erq3"22i!!!!$r-LmrL!!!! !$r2cq)!!N!32riJ!!!!"DJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J% 5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2riIrK rr(rqIri!I$!!c-#c-)`)J`L!b)!SrrM)10fib$K)1&@m5$jrrJ"m!!!TM`!!!!N !!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%lT!'!!AGN!B!"VZ3"J!(4*!'!!J LN!B!$`#3"rm!N!Eh)[m!r`!!!2&h)[mKr`!!m4&h)L)5m!$a%4&h)L,`!2%4%4& h)[!!m4'3"2,`!2GhN!4cm!$h429%4(2`!2GIIfrfFr!!pdAe999cm!!(42!!!(2 `!!GI$frfFrJ!"dAe494cq)!(Gj!%FrL!!*!%$rq)!!!!!QS!N!5!%!#3"4!!%!# 3#8J!!!")!*!&#!!"!!J!N!B"NJ#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r `rrMrq2rirrMrq2rirrMrq(ri2r`rrK[q!(``!-c!Xc#-#)-)J-L!+)BiM$Lr1-- iCMJr2$mq'ri!I!!!)-!!!!!C!!$rN!B!![q3"*QC!!Vrrmc--c-!%2rrQCNc-`! ArrpQCJ!!!#V-N!6rr`!lc-aQCJ!!!&5CN!6rr`"HQCPQCM-c!(pQN!6-c!#2CQB !N!@M-c0QCXc-!-i!!$-cQCN!eqlZ!*!&fEZl!*!&fiL)!*!&j!!!UUS!!!$P!!# )L!!!!1B!!(Gh!!!!j`!!998!!!$Z!*!%UUS!l`#3")L)!2AZN!B!r%53"J$p)T! '!2m!N!Mrr`#3$2rm9&6rr`!!rrm!N!Er+[cm9&6rre3Urrm!N!6r+LSUr2a8N!3 U92m!!!$r+T!&r2a8N!6r!!!!rbU3"rcm9&6r!!!!rbU3#Ip8r`!!!2mUN!6NjbS U92prr`!!!2mU+LVNje3U+P6rIrm!!!$r+ZANjHAQjbT8rhrr!!!!rr`+!JS3ARm U92prr`#3"2ml#KFl1e3U92prr`#3"GRAepREMbT8rhrrr3#3"1kMlXkMlP48rhr rrId!N!6[c[A[rrprrhrrrId!N!Vrrrrpr3#3"!&#!*!%J!J!N!83!"!!N!P)!!! !5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrM rq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L$#)$)J#L!+)!SJ#L!+'!S'#` ',J'Z!(`!!$aU!!!!"!!!rj!'!!T@!#bG"53!$B!!J!#!!!!13!"!!%!!!!m!N!I r!*!'rYhr!2m!!!$plYhrhIm!!2hGlYhGhI!!rGhGlYhGm!$phGhGlYh`!2hGN!6 pm!$phC!%rI!!rGf3"2h`!2hGN!6pm!$phC!%rI!!$rhGhGhpm!!!$rhGhIhk!!! !$rhGrIUJ!!!!$rhpqU!!N!32rkS!!!!"BJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8 %!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2r irrMrq2riIrJrr"rq$[i!I$!!c-#c-)`)J`L!b)!SJ$L11*'ij,KNZ#5m%Ei1rJ" m!!!`*`!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%hC!'!!@lN!B!"N5 3"J!()T!'!!m!N!Ir!*!'pL,r!2m!!!$aCL,r)Im!!2%4CL)L%[!!m4%4CL)Lm!$ a%4%4CL,`!2%4N!6bm!$a%4%4%[2`!2%4rr%5mr!!m4p!6c,cm!$cp!m&m[2`!!r `$`$bmr!!!232"I,cp`!!$d"I-[2hF!!!rr$cmrG`!*!%$rph!!!!!9)!N!5!#!# 3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*! %-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`(rJ(q!(``!-c!Xc#-#)-)J-L!+)! iJ$L!1-!iF$JF2!Fq!Ii!I!!!1%i!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT! %c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4% 44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%4%[2`!2%4%4%5mr!!m4%4%4,cm!$c)4% 4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!!!!!rcmr93!*!%$rp9!!!!!A) !N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*! &%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq2ri2r`rrKrq(r``!-c!Xc#-#2- )L-Lm++)iVcLTZ+Lik,Jrr$"q(riIr!!!-[X!!!!+!!$rN!B!!Fb3"2rr!!,-N!B !!jQ3"2rr!!4QN!6-c!!&lT!'!!DUN!B!"e@3"J!)4*!'!!NLN!B!$`#3"rm!N!E i-rm!r`!!!2')-rmar`!!m4')-c-6m!$rrc')-c2`!2CQma')-r!!p[rr-4(cm!$ fmL,c%I6`!2Ebrrmap2!!p[,eAr2dm!$fm[99mr6`!2rbp9Acp2!!!2q3"26j!!$ rCQC[p2Q3!!!2GhGrp2Q3!!!2rj!%Q3!!!!&D!*!%J!J!N!83!"!!N!P)!!!!5!# 3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2r irrMrq2rirrKrq(rmjri"rJ"m-!$-`,-`M!L$#)$)J#L$1)FiLcMI1(XiIlcRrJ( q!(`!!$3U!!!!"`!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!3c-`!!QCN!"85 3"J!')T!'!!m!N!Ir!*!'p5,r!2m!!!$a95,r)Im!!2%495)L%[!!m4%495)Lm!$ a%4%495,`!2%4N!6bm!$a%4&$%[2`!2%4&%-5mr!!m4&"3a,cm!$c*%4$%[2`!!p %-8-5mr!!!d0M3c,cpJ"%3!4%3r2fB!!!!!rcmrCJ!*!%$rpQ!!!!!@)!N!5!#!# 3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*! %-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri2r`IrJlq!(``!-c!Xc#-#)-)J-L!+)! iMML4Z15iC,JN["'q$[i!I!!!-#F!!!!)!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT! %c-`!"0f3"J!&Zj!'!!C%N!B!"b+3"J!2!*!(r`#3"[BLr`$r!!!!m@BLrb(r!!$ a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%C!%m[!!m4%4%4,cm!$a%Ira%[2`!2% I3%mbmr!!mr32"I,cm!!2m!m!m[2`!!$d$`AbmrF!!!p!Ac,cph!!!2r`mr2hF!# 3"!rrG`!!!!&U!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*! &%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrKrq$rm(ri2rJ" m-!$-`,-`M!L$L)$)MkL41+8id6M91&%i*6`42Jrq!(`!!$CZ!!!!#3!!rj!'!!( -N!6rr`!#c*!'!!1CN!6rr`!%CT!%c-`!"Gf3"J!'L*!'!!G%N!B!##+3"J!2!*! (r`#3"[Fcr`$r!!!!mAFcrc(r!!$a%AFc-a2`!2%4%AGc-r!!m4%4%AFcm!$a%Ir rmI2`!2%I95mMp2!!mI9AEb2dm!$rAb*[)r6`!2pI9fmMp2!!$bmLEb2dm!!!mPG [)r6i!!!2CQmMp2L!!!$rrrIdq)!!N!32rrJ!!!!"BJ#3")!)!*!&%!!3!*!*5!! !!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2r irrMrq2rirrMrq2ri2rKrr(rq2ri!I$!!c-#c-)`)J`L!b)!S[MM"1-'ii,JJZ%' m36irrJ"m!!!Y&`!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%hC!'!!@ )N!B!"N53"J!()T!'!!m!N!Ir!*!'pL,r!2m!!!$aCL,r)Im!!2%4CL)L%[!!m4% 4CL)Lm!$a%4%4CL,`!2%4N!6bm!$a9994%[2`!29%4%85mr!!p84%44,cm!$e9%4 %8[2`!!"84%45mr!!"84%44,cp`!&4%4&)[2hF!"999$cmrG`!*!%$rph!!!!!@) !N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*! &%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq2rirr`(rJ(q!(``!-c!Xc#-#)- )J-L!+)!irrL%H,GiM(Mrr!Fq!Ii!I!!!+jS!!!!)!!$rN!B!!Fb3"2rr!!+CN!6 rr`!$CT!%c-`!"0f3"J!&L*!'!!C%N!B!"b+3"J!2!*!(r`#3"[BLr`$r!!!!m@B Lrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%C!%m[!!m4%4%4,cm!"9N!A cm!"84%9%4I2`!&49499&mr!!9%494%Acm!"9N!Acp`!!!!rc)[2hF!!!!!rcmrG `!*!%$rph!!!!!@)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3) !N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm2rirr`& r!$iB!'CJ@CK'"%'%3'4"&(rmIMap2(`m2V`r2Mrr!Am!2J!!3eB!!!!)!!$rN!B !!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0f3"J!&L*!'!!C%N!B!"b+3"J!2!*!($r! !N!82BLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%4&4% I,`!29C!%Acm!$e4%9%4I2`!29&9&4&mr!!p8484%Acm!!&53"&mr!!"8489%Acp `!&@3"&mrG`!!!!822cph!*!&rrG`!!!%*Q!+!!"*6&K$%jF!!%lk!!41G8j@rrT )ja!J*'i!#$emrrrrrR$r,8$rqJa5!!4QG&922bS!)#mU!!)I+J!'5'lrrNKZrrT 1ZJ*m-"mf!%T$Cd*96cmU!#![2'CZC(-I2!!"5'lrrNKZrrT1ZJ*B-"mf!%T$Caj 96cmU!#![2'9iG'j#*dKZrrj)E[rk6VS#0M!I0J!eE[rq!#!PE[rk!#)e3`!H60m %#%jH,Tp1GB4YB@PZ!!!!6PB!!#!m!!#SRkG',`JJ2!!!S+fM4V(IC`iJ,J!-SDd LEJ!))SKJ*N(k!$B`21T4)Li!$,+BC`C+Q'F5B2C$qJ!Jdp"1d5*Z!!JLJ%*!28! !%%jH)&p3Mdl3-$cU8Q$ZGQ9bF`!!!'"YB@0S!!!!C(0jFhB!!!#)F(*[B`!!!** QF(8J!!!!RR&N)#!!!!$SDf*N)!!!!4TKG'aV!!!"3QeYG5!!!!&NFQ&Y)!!!!BK XFQ&Y!!!"L!#3#(!"B))LH!+ZF!3-D3"e!!KR%JaT!RB!#'B%8N"J"K!i$,0FJ'! !rf"`!$!i!9TJ!2p@F!!31!%[8N"J!2p+$$J!"!%[CcJ)1!!%#b*R0#"2mS!!!2- R-"FZ5!a!(aKR&Ja!2aKR%!a!2cKR$Ja!(cKR#(!!B!j`!@!+F!*J"R!$B!*`!'! !r`!-H$rr!SjZ($!mU*qR4L3))$`!!+X$TdBJ2!!!!3#dL'B'B!T`!'!')$`!!!) !B!$qcK!i!Kj"qJ!@)NJ5''F!rY+b!'EfNFNJ#'!!rV)$%`X#!3B("!8)#3"`!%S i!T&V&K)i!IX#!3!2$!%!!@B))(J#h"!S!!GJ!2k%$$J!!J%[E4C`!"!i$,%-!!! "C``-!!!$E3463'!#F!"J!2jJ-$bSRkG'*!JJ2!!!U)qR4L!i!3LdL'F+@Bmr2!! @U)mJ(f!!rMT19[pd51FF!#JZ!")k,J!@3LlrH&92,caQEfaN5'lrG%kkrG!`(fB 3)#lrG()"`)&R"Kem!!(rH"!ZrhKR)&922`8[""mZ!"![,J!-,bi!#(!!U#-`(ce !!"K1qJ$i$)4YB@0cCd)-K(4PEA"R1Jb%F(*PCQFb$)4PH(4ZCbS-K'0dFQaR)Jb %B@eZG@FD$)4cG(*dCa)-K("bER4R#R$128!!'%lk!+j`!#e!rii-4B!!CLa96ck i#PJ`(ce!rj4#3$e!rjK`!Le!rlC"l[pmF!LLB$J!CRBpE[q`rj*J"$e&rj*`"Le !rk""l[ri,8MrR%(Zrha`-+*J1!"`cVK!Ca"+4'C#)#lrqJ+!!!)!!'Bf3N!p32q BGJ!Y3rr@,82rV%(ZrhbL"cJ!CL)J,[r@Ca)JEJ!--+lrNL"Z!!JJV[r@B!Tie@! '5N4Q!RM9-!3p3!!B60m!1%jH)&p2l`!36Y!!!!&5!*!%J!J!N!83!"!!N!P)!!! !5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIra rr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki $R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+ 3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4% 83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`! !!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!"!*J#J!!58aB3a1-!!"1qJ! %6R919[rk51F3)#4Z!!JpI2rrrrj`rbe!rrS-8J!%CP"96cmU!#![+J!#(bS!"NK Zrrj)E[rk6VS#@$!I0J"+3fFH98mr+J!J,caYB@0c3LG)E[rq5'lrqNkk!MB`(cB !0@lrrJ!J*@lrqJ!L08-!(NcI"!K1ALkI6R@%E@&TEJ!!!%j@!!!J2!!!U*qR4Lm ))$`!!+#YSdDahfF1)#i!$+'Y)Qi!##+)B#C"qJ!f-$cU85)Z!!bbQ'F'5TKR%Q$ f3rS!)0236Y%LEJ!))S"#3$e!!""1AL"I8)p1d$!mkP*JlRCPFR-!!!"JE@&MD!! !!'4cHA0f!!!!L("bEf-!!!#5CR"e)!!!!*jaC#!J!!!!k'YLC#!!!!%DBA4XD`! !!8*YEA8J!!!"C(*KE5!!!!')E(*KE3!!!BJ!N!K`!@##)RJ#VR!%$'N!G3!)Ca) -D3*f!!KQ"&*!B!B31!bcA)"J!2pJF!!`1!&DB!$r9R!!%$J",e*!B!$r5J`i!!3 ",fFi#$J!"!XLCc3J6r+!!!$c*c!A,NJ-3"mBCaB-3$mBCa!-3$miC`i-3"miC`K `!'!1F!&J#R!#B!C`!f!#F!"J!2m!$(Jrr`+1EK``2+LITdBN##!m!!#V!kG')$` !!!%!Y)KQ"Q!+F!"J"L!m!!!#!'!!rXi31!)H3IS!&L*)%KKR!2l5XJ"QpT(*)!K J!2kb!a-,!J%'"`3&#!N!F!"+1!+4DaB51!(l!J%!$``"!!&Q##"i!Y`3+!!(B!$ qK!`i!!)",fd@F!!31!ba$!!!!@F-$!!!!fd%8d"J!R!!B!$qB$!mU*qR4L3))$` !!+L2TdBJ1!%)Y)KR#PQ22c`!&UL2)"pJ!2ik6PErG%MR(!!S,J!51Li!&N)ZrhK 96bmmCQpXC%KZrh41Z[h3-"pQ%#!Zrh4b!F#"C`BGI!!"rhJ3,[piCb"96cm&,`3 I,J!3,bi!$#mZ!!K`!+JM-"mp3!!B6[S!q!b%E@&MFfG#$)4dC@e`CcS-K("bC@C R-Jb%CAKdEQFU$)4MG(*XCb)-K'&YER9R'Jb%Fh4bG'F5$)4`FQjdC`T`cMe!!"K 1qJ#ZF!!Y32q1$%@!!'BX98mqZ!TB-"mp32q83N!p32qBF!)Y32qf3HlrI(!)SQ! i!'Cf2@lrX2q5B!3p4Iq5F!BY32qJ3Hlrq#e)rja"l[pmF$#LB$J!F-ki3'F35N4 Q3L!ZrrS#J!!#!!"Q0N*!28$rQ(B!,82reLe$rka"l[pmSJFi!'BL)#lreQF5)'i !$$#Zrj)JEJ!))+lreQ!+H09J"NT%CJ*ie6!%28!!'%cI!$K1AL"I6qm!%%l3!!! "8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3) !N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B %3B4!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ 3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m 4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3 [2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9! !!!D%B!S!!%P-@%-6L3!!6[S!"%je6PErqNMR'#!NEJ!)1#S!)$9mrrm!)($r*8! !)Ja5!!4QEJbU!!!)!!!3E$Be4!!J,c`!!J!!,caKFh"Q,ca*6NP8,caKFf0b,ca PH(4Z,caPH(4Z,`T1ZJ"+0J"2l`!FB#T96cm%,bS!!KmU!!C)E[rq5'lrqR!!U#- `(cB!CJ`eE[rq!#!PE[rk!#)e3`!H60m%'%jH,Tp1GB4YB@PZ!!!!6PErh%MR'#! NEJ!)1#S!)$9mrrm!)($r*8!!)P922`3[,J!-(bS!"NKZrq*)E[rHF!#S)c!I0J" Q!!#b)#i!%,#Z!!aR(P922`3[,J!3(bS!"NKZrpa)E[rNF!#S)c!I0J"J$$eZrq, rh#eZrplrj%T$CRJpE[rFrrSYE[rNrr`pEJ!Jrr3pEJ!LrrBGDJ!'rrJYEJ!8rqJ YEJ!Brq`YEJ!Frr"96cmZrq)[,[rH3UFr2!!"5(S!8%KZrqK1ZJ*U-"mf!'BQ)#l rr,#Zrq4Q%(E90Acrr`!JF2mP3!!LB!`eE[rk!#!PE[rm!#)`!dcI""K1ANjeM%e j4QPZC%C[E'4PFJ!!!%j@rT4)ja``+#i!%#4Z!!LAbhB!H[mJ4#!S!#5`NQB!!6) J4#!S!##`UJ!%CJ!"*%)RUCY96b"%2bJ!&L"%,bJ!C#"%,bJ!%Kmm!!'S'M!I1J! I2!!"UCY96kQ[-"mf!'B!!0i-UP088L-!#'Bd3LHTQeP2,ca69&)M2bS!$+JI)&m Q5"mm!!'TQb!,C`!!ZNKZrT3r+J!-2bS!$Nkk!qCJ0&P2,bS!#$mU!!bS(b"I*NK 96kQ[-"mf!#!,Ca3J8a!35)"53%M!)&0$l[k8SLjJ"(E1B'T"l[k8,8MrTMeU!", rULeU!"6ra%*Zrl""l[q8F!QLB$B!CJieE[qU!")PE[r%!"4J1!a$riKR"Ja$rp9 Q)%SU!""R'N(Zrj4`"U*J0J"Q$M9ZrkS!%L9Zrm3!&'!-0Acrr`!5F2mP3!!8)'i !$"#m!!%-4IrrC`3r"DQD60m-1%jH)&p2l`!-6Y#069P*9%95394&8&*23`!!6PB !!%MR'#!S,J!)*'i!$%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,Be3`!J*83!0%(U!!4 `#D*J08!!X%TU!,"Q,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*!!""R%NSU!,*Q$#m +,bS!0%kkrjK36e*$5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZai!,"Q"%*U!,"6DJ# f60m%'%jH6R@95A4PFQ&dC84TFQ9MG'pbH8aPGQ9X!!"19[mm,`0+VJ!-C`!!MP9 22bi!'LmZ!"B[,J!55'lr3%KZrce1ZJ(5-"mf!'CZ$#i!!ImpCQ"96bmZ!")r,J! D5'lr2Nkk!@J`(cB!CNiYEJ!-rd4"l[p%3HJ!F#e)reSpE[mqrej#,[qd3Qlrp%) ZrrBpEJ!3rrK#E[rk,@i!#2rm5'lr4#mZrd"1Z[l#0Llrp&"2B!CfL'!#GXir3`$ N*Kp1AL"I6qm!&%l3N!"*9%95394&4%P548086e*C!!!!6PEr!%MR%$!QEJ!1*'i !##!+CcieEJ!-!"BJ#fB+3US!%N*U!"aJ(L",3qlr!(!!%"053%M!SLj"l[m!*8J !%M9mrrm!(#"+SJFf!%+U!"*J!RE12d-"(NcI$!K1AL"I6qm!#Nl3NdG&9&C26&9 048P14Np16dj"688!!%j@rq")ja!`*Qi!$#4Z!!JJ#fF%5K0Q&%)Zrq""l[rJ*8J !%M9mrrm!('!)*8X!%N*U!"`eEJ!8!"BPEJ!3!$!J5R!*SQ!f!%+U!")r3`"#60m -#%jH)&p2l`!16Y#3!%G&9%0"9%P14Np16dj"688!!!"19[q',`096bmZ!!ir,J! -5'lrKNkkr[``(cB!CJJJEJ!)-+lrR$p$!*!!*Kp1AL"I6qm!#Nl3N!"%494&8Ne *6N9@8N9'6P90!!!!6PErP%MR%$!QEJ!-*'i!#&922bi!'#mZ!"3[,J!35'lrP%k krb!`(cB!CKS3,[qb!N!!%&E!4!!8J'F'*Ulra'!%*Ulrq$p$!**-h``)6PiJAdr [!"*1d)j(494%59*&3e428PP*4!!!!%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a#%5! ICb)J3#"3-"Jb,J!)CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!!!!V T5Qpj)A"PCQC`Gh"M!!!!!EBXZ1X!N!d$!!)!N!6rN!3!N!B*&!!!#43!!!N8!!! "`!!%"!$rN!3!N!G%!!!!3!!!!!N!!!VJ!J%%!2q3"!#3$J%d!!!!J!3%"!#3#!% !!!!`rj!%!*!%rj!%!*!(!3!!!!X!!!!"!!!!L!!!!*!!!!!",!!!!!%!N"-,!*! )!J!!#J)!!"S#!!!U!J!!0`)!!%3#!!"2!J!!A!)!!'S#!!"c!J!!IJ)!!)m!!3# 3"3-!N!4+#N)!4J%!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*$FQ9 KG'96H@jM!%GPG$&5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"$E'p cC9*PFdCTE'8!3Qa[BfY0EhCP4'&dB3"5CA0&FR*[FJ"'D@jN4QpXC'9b!&"#4f9 d3f&d5@jQEe0jEQ-!5%p`C@j5CA0'D@aP!*!9I!J#TT2Krrb3!!%!#*3Krl"mIaY iU(m!)$J!rrq`(`!J1!$rrj!!(`!LU"m!!#`!!!4!JJ#)J"m!%#`!#!"!J!")X(m !)$Kr!!!mJ'9i2+"PH$c!BA-mi%P123"KFcNJ!!)j3!!!1)4dEMLPG'iiaQ0b11G *9$N)F'C)!!"9B!!!!%J!!$5!R`!#L,m!"MM"!$`ii3!i5!!(BB""!"4mB!Fe3)) !&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JI!J#TVl Krpb3!!%!#*3Krh!l3`!!1Z3!!$X&!!!lCJ!!1iF!!$ZS!!!lb3!!1qS!!+Xk!#! i!2rrX"S!)$J!rrq3!"S!)MKj!!!iP`!!L,S!"MM"!&`ii3"B5!!'dB""!"4mB!F e3))!d(`BZ%""JJ!N1(N!!$LB!!#)ZJ!'1-%!9$MK!&")!!DPJ%%!&%J!!"5S!3" FX!%!9)!"!&L3!!%!8(aJ"c9!JJ#3!+J"!&5`!3"+J!%!8*!!!3"-Xm%!4,2K!%D )'J!'Q!%!5*0K!$L6J3!mNk%!3+KK!&b!J3"B1+!!!$M!!!'!iJ!X13%!1%J!!iP J!!!!I'!(08##!$b!J3"-J!%!8(`%!!"!JJ!F1'$re6J!rrq`'J!J1!$rrj!!'J! L5!!!&+J"!%U`'J!JJ!%!6*!!'J!LJ!%!Q$JK!*!!I!J$TVVKrpa1J!!JI!J#TT2 Krrb6`IriNk(rp*1"rr#3!!%!#*3KrN!lJ`!!1k3!!(br+hL!I!!NJ"m!!(`$!%" !JJ()J(`!))!I!!4m!`"!3))"Z$KJ!!")!!@YJ%%!&+Km!"D!R!"NJ,`!%MM!!!& )!!@YJ%%!&(aq'hJiB!!"5!!&KB""!"4)!!@YJ%%!&(aJ"c9!JJ&8J(m!#$`$V+` S!&)M3))!9$KJ!!")!!9CJ%%!&$aJ8e5SR`!-1'05)dJ!"Bf!33!8I(`EH$KJ!!& )!!8eJ%%!&#JF!!""JJ%81'%!T+LI!!bS[`!15!!&HB""!"4)!!"3J(m!#+LI!!a )!!90J%%!&(am'hK)!!8TJ%%!&#JF!!""JJ$3J(`!!$L"!+5![!!!L!8!!(`&"h3 iT3!"5!!&5B""!"4)!!!)5!!!U$J"!+53!!%!5UJI!"+`!3"1J"m!&*!!!3"S1!! !!,!"!&3iB3!i5!!&,B""!"4mB!Fe3))!'+J"!%k`(`!5J!%!D*!!(`!85!!!B(a J"c3X!2q)3B)!%(aJ"c3X!2r93))!1)JI!"!S!!!!3B)!,$KK!$K)!!6jJ%%!&(a J"c9!JJ!BU!%!6V!I!"+!!3"SN!!I!"4)!!!81!$rrl!I!")i!2rrN!!I!"3i!!! "Q"d!!(r!"c3X!2rr3B)!%(r$mhK)!!6&J%%!&)!"!FJi)3(!I!J$TS2Krrb$`Ir iJk(rp)1"rr"1J!!JI!J#TT2Krrb6`IriNk(rp*!!!3!)P#(rX$ZM!!!lj!!!S"m !Y#J!!!""JJ!8S(m!YU!I!,4m!`"!3)!![$[!!!'JI`#f1!-!!E!I!,Dch`!JNlm !0$Kr!!4)!!39J%%!&,"r!,#S(`#`,!!!!%##!%!iI`!%1*m!XS#r!,L"R`!!5!! %6B""!"5)(`!L9!!'pd'#!"b)(`#b+!!!!%##!"#!I`!dIq6lH%[rreNlhJ!"U"m !X#`!!!"!JJ!3L"m!XLJ!!!""J[q)U"m!X#`!rp9"JJ!3U"m!X#`!l(K!JJ!-1!! !!,!I!,#JI`#f1!2rrl!I!,D!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!JI!J #TVpKrqb3!!%!#*3KrZ!lB`!!1i8!!$ZQ!!!la`!!1qJ!!#JH!!""JJ#N1(X!!$L m!!!i`3!m11%!1%J!!IPJ!!!!I'!(08##!)L)!3!i+!!!!8##!(!iI!!!1*X!!$L K!$T)!!'4B!!!!(aJ"c9!JJ"JNm%!3$J"!,#3!!%!9UJ"!$U`!3"D1!!!!*J"!,! i!!!!X!%!m$J!!!#B!3$bXk%!p$J!!!#`!3$fNq%!q)"K!$`iJ3"!5rrq1DKK!2" )!!!31'$rL%J!!!JiB2r1J!%"+$JK!5"m#!1QZf(rl%k!!#"m#!+QNq(rr*!!!3! )P#(q`(br+hJS(`!!3B)!B,#I!"BS!`!!3))!'$J!!!#3!"m!%MJ!!!#`(`!F5!! !+$L"!$L)S`!!1+8!!8J!!KQ!33!81!%!1*!!(`!51!$rrl!I!"arirYi5!!#AB" "!"3i!!!!N!!I!"*)!!!)1'$rcS!"!8Ji)3&!I!J$TS2Krra1J!!JI!J#TT2Krrb 3!!%!#*3Krk"mhc0i+!8!!%'#!"#)"3!!+!!!!%##!#!i!!!!Q!%!1$J"!$L3!"m !%MJ!rrq`(`!F5!!!%*!![`!51!!!!,!I!"b`I`!@N!#I!$"rirYi5!!"MB""!"3 i!!!!N!!I!"+!!3"S1#%!B(`)!kD$iIrm6S!!)(`)!UD6iIrmN!!"!!L8)Ip!I,m VH$LK!$K,rrlCI'!(08##!!bS!3"1X"m!!)!"!-Ji)3$!I!J$TS2Krra1J!!JI!J #TT2Krrb6`IriN!!"!!L8)Ip31mB!!$[R!!!i`3!i5rrr)AaJ"c9!JJ"!L!%!9P3 %"[Bi!!!!I)3!8$!%rrpm!#%3Q"m!!)JI!!!S!!!!3B)!%)!"!'L3!"i!!%J!!!b !!3#FN!!H!!#!!3#i1#%!X(`)!kD$iIrmJm(rq%k!!##"JJ!JN!""!"5!$!!!J%` !"(`*!kC1J!3JJB)!%*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#L3!%%!&)!-!!# !6!!%I!N$TNk!"##"JJ!FN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!` !!)"-!!4m#31Q6S!%))'#!!b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5 !$!!!J%`!"(`*!kC1J!3JJB)!**!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!53!%% !&)!-!!#!6!!%I!N$TNk!"##"JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*! !33!8J!`!!)"-!!4m#31Q6S!%))!-!!#3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!d [)6J+)J)8"!!!!@)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3) !N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$riIr`p r"MiB!'CJ@CK'"%'%3'4'&%NF8paeI'Sm-A`*hKHI$hm'2J!!)ii!!!!)!!$rN!B !!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0f3"J!&UT!'!!C%N!B!"b+3"J!2!*!($r! !N!82BLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%Im4% @,`!2%I"I%5mr!!mI"I2r,cm!$rpIA`rr2`!2mIA`"2mr!!$r"!p2rcm!!!,`Arm [2h!!$arcmLmrG`!!rc-[2cph!!!$-J$rrh!!!!EXB!S!!%P-@%-6LJ!!6[S!"%j e6PErqNMR'#!NEJ!)1#S!)$9mrrm!)($r*8!!)Ja5!!4Q!!$@$+S!!!J!!""XDM9 %!#![2!!#!!![2'&cF'B[2%P1593[2'&cBh)[2'9iG'i[2'9iG'i[#Nkk!,!f!%r [!"aQ!!#3!#mm!!-!!#mmBA0`CLmm58j*9#mmBA0MFLmmCAKdELmmCAKdELm+6VS !I$B!6qm!('"F98mr"#mma(0MFKmU!!C)E[rq5'lrqR!!U#-`(cB!CM`eE[rq!#! PE[rk!#)[2!!%!!![2'&cF'B[2%P1593[2'&cBh)[2-4cBh)[2'9iG'i[#Nkk!"i f!%r[!"`e3`!H60m%'%jH,Tp1GB4YB@PZ!!!!6PErh%MR'#!NEJ!)1#S!)$9mrrm !)($r*8!!)P922`3[,J!-(bS!"NKZrq*)E[rHF!#S)c!I0J"Q!!#b)#i!%,#Z!!a R(P922`3[,J!3(bS!"NKZrpa)E[rNF!#S)c!I0J"J$$eZrq,rh#eZrplrj%T$CRJ pE[rFrrSYE[rNrr`pEJ!Jrr3pEJ!LrrBGDJ!'rrJYEJ!8rqJYEJ!Brq`YEJ!Frr" 96cmZrq)[,[rH3UFr2!!"5(S!8%KZrqK1ZJ*U-"mf!'BQ)#lrr,#Zrq4Q%(E90Ac rr`!JF2mP3!!LB!`eE[rk!#!PE[rm!#)`!dcI""K1ANjeM%ej4QPZC%C[E'4PFJ! !!%j@rT4)ja``+#i!%#4Z!!LAbhB!H[mJ4#!S!#5`NQB!!6)J4#!S!##`UJ!%CJ! "*%)RUCY96b"%2bJ!&L"%,bJ!C#"%,bJ!%Kmm!!'S'M!I1J!I2!!"UCY96kQ[-"m f!'B!!0i-UP088L-!#'Bd3LHTQeP2,ca69&)M2bS!$+JI)&mQ5"mm!!'TQb!,C`! !ZNKZrT3r+J!-2bS!$Nkk!qCJ0&P2,bS!#$mU!!bS(b"I*NK96kQ[-"mf!#!,Ca3 J8a!35)"53%M!)&0$l[k8SLjJ"(E1B'T"l[k8,8MrTMeU!",rULeU!"6ra%*Zrl" "l[q8F!QLB$B!CJieE[qU!")PE[r%!"4J1!a$riKR"Ja$rp9Q)%SU!""R'N(Zrj4 `"U*J0J"Q$M9ZrkS!%L9Zrm3!&'!-0Acrr`!5F2mP3!!8)'i!$"#m!!%-4IrrC`3 r"DQD60m-1%jH)&p2l`!-6Y#069P*9%95394&8&*23`!!6PB!!%MR'#!S,J!)*'i !$%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,Be3`!J*83!0%(U!!4`#D*J08!!X%TU!," Q,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*!!""R%NSU!,*Q$#m+,bS!0%kkrjK36e* $5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZai!,"Q"%*U!,"6DJ#f60m%'%jH6R@95A4 PFQ&dC84TFQ9MG'pbH8aPGQ9X!!"19[mm,`0+VJ!-C`!!MP922bi!'LmZ!"B[,J! 55'lr3%KZrce1ZJ(5-"mf!'CZ$#i!!ImpCQ"96bmZ!")r,J!D5'lr2Nkk!@J`(cB !CNiYEJ!-rd4"l[p%3HJ!F#e)reSpE[mqrej#,[qd3Qlrp%)ZrrBpEJ!3rrK#E[r k,@i!#2rm5'lr4#mZrd"1Z[l#0Llrp&"2B!CfL'!#GXir3`$N*Kp1AL"I6qm!&%l 3N!"*9%95394&4%P548086e*C!!!!6PEr!%MR%$!QEJ!1*'i!##!+CcieEJ!-!"B J#fB+3US!%N*U!"aJ(L",3qlr!(!!%"053%M!SLj"l[m!*8J!%M9mrrm!(#"+SJF f!%+U!"*J!RE12d-"(NcI$!K1AL"I6qm!#Nl3NdG&9&C26&9048P14Np16dj"688 !!%j@rq")ja!`*Qi!$#4Z!!JJ#fF%5K0Q&%)Zrq""l[rJ*8J!%M9mrrm!('!)*8X !%N*U!"`eEJ!8!"BPEJ!3!$!J5R!*SQ!f!%+U!")r3`"#60m-#%jH)&p2l`!16Y# 3!%G&9%0"9%P14Np16dj"688!!!"19[q',`096bmZ!!ir,J!-5'lrKNkkr[``(cB !CJJJEJ!)-+lrR$p$!*!!*Kp1AL"I6qm!#Nl3N!"%494&8Ne*6N9@8N9'6P90!!! !6PErP%MR%$!QEJ!-*'i!#&922bi!'#mZ!"3[,J!35'lrP%kkrb!`(cB!CKS3,[q b!N!!%&E!4!!8J'F'*Ulra'!%*Ulrq$p$!**-h``)6PiJAdr[!"*1d)j(494%59* &3e428PP*4!!!!%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a#%5!ICb)J3#"3-"Jb,J! )CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!!!!YT5Qpj)A"PCQC`Gh" M!!!!!EBXZ0S!N!d$!!)!N!6rN!3!N!B*Q!!!#CJ!!!QB!!!"`!!%"!$rN!3!N!G %!!!!3!!!!!N!!!YJ!J%%!2q3"!#3$J%d!!!!J!3%"!#3#!%!!!!`rj!%!*!%rj! %!*!(!3!!!!X!!!!"!!!!L!!!!*!!!!!",!!!!!%!N"-,!*!)!J!!#J)!!"S#!!! U!J!!0`)!!%3#!!"2!J!!A!)!!'S#!!"c!J!!IJ)!!)m!!3#3"3-!N!4+#N)!4J% !!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*$FQ9KG'96H@jM!%GPG$& 5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"$E'pcC9*PFdCTE'8!3Qa [BfY0EhCP4'&dB3"5CA0&FR*[FJ"'D@jN4QpXC'9b!&"#4f9d3f&d5@jQEe0jEQ- !5%p`C@j5CA0'D@aP!*!9I!J#TT2Krrb3!!%!#*3Krl"mIaYiU(m!)$J!rrq`(`! J1!$rrj!!(`!LU"m!!#`!!!4!JJ%-J"m!%#`!#!"!J!#-X(m!)$Kr!!!mJ'9i2+" PH$c!BA-mi%P123"KFcNJ!!)j3!!!1)4dEMLPG'iiaQ0b11G*9$N)F'C)!!$CB!! !!(aJ"c9!JJ#d1(m!!$b!CAJmS'9i2-"KFccJ58ip!'&c15!!!cP!!!!iK(4Z1+9 dEMM'Bh)ijdP813K`CNJ!!*9J!!!!5!!!G$b!a(1)[`!'1-%!2$MK!$JiK'0b5!! (RB""!"4mB!Fe3))!8+J"!$b`(`!JJ!%!1*!!(`!L1(m!!$b!CAJmS-4c2-"KFcc J58ip!'&c15!!"$P!!!!iK(4Z1+9MFMM'Bh)ijdP813K`CNJ!!#&J!!!!X(m!(S! "!&Ji)3"3I!J$TS2Krra1J!!JI!J#TVlKrpb3!!%!#*3Krh!l3`!!1Z3!!$X&!!! lCJ!!1iF!!$ZS!!!lb3!!1qS!!+Xk!#!i!2rrX"S!)$J!rrq3!"S!)MKj!!!iP`! !L,S!"MM"!&`ii3"B5!!'dB""!"4mB!Fe3))!d(`BZ%""JJ!N1(N!!$LB!!#)ZJ! '1-%!9$MK!&")!!DPJ%%!&%J!!"5S!3"FX!%!9)!"!&L3!!%!8(aJ"c9!JJ#3!+J "!&5`!3"+J!%!8*!!!3"-Xm%!4,2K!%D)'J!'Q!%!5*0K!$L6J3!mNk%!3+KK!&b !J3"B1+!!!$M!!!'!iJ!X13%!1%J!!iPJ!!!!I'!(08##!$b!J3"-J!%!8(`%!!" !JJ!F1'$re6J!rrq`'J!J1!$rrj!!'J!L5!!!&+J"!%U`'J!JJ!%!6*!!'J!LJ!% !Q$JK!*!!I!J$TVVKrpa1J!!JI!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3KrN! lJ`!!1k3!!(br+hL!I!!NJ"m!!(`$!%"!JJ()J(`!))!I!!4m!`"!3))"Z$KJ!!" )!!@YJ%%!&+Km!"D!R!"NJ,`!%MM!!!&)!!@YJ%%!&(aq'hJiB!!"5!!&KB""!"4 )!!@YJ%%!&(aJ"c9!JJ&8J(m!#$`$V+`S!&)M3))!9$KJ!!")!!9CJ%%!&$aJ8e5 SR`!-1'05)dJ!"Bf!33!8I(`EH$KJ!!&)!!8eJ%%!&#JF!!""JJ%81'%!T+LI!!b S[`!15!!&HB""!"4)!!"3J(m!#+LI!!a)!!90J%%!&(am'hK)!!8TJ%%!&#JF!!" "JJ$3J(`!!$L"!+5![!!!L!8!!(`&"h3iT3!"5!!&5B""!"4)!!!)5!!!U$J"!+5 3!!%!5UJI!"+`!3"1J"m!&*!!!3"S1!!!!,!"!&3iB3!i5!!&,B""!"4mB!Fe3)) !'+J"!%k`(`!5J!%!D*!!(`!85!!!B(aJ"c3X!2q)3B)!%(aJ"c3X!2r93))!1)J I!"!S!!!!3B)!,$KK!$K)!!6jJ%%!&(aJ"c9!JJ!BU!%!6V!I!"+!!3"SN!!I!"4 )!!!81!$rrl!I!")i!2rrN!!I!"3i!!!"Q"d!!(r!"c3X!2rr3B)!%(r$mhK)!!6 &J%%!&)!"!FJi)3(!I!J$TS2Krrb$`IriJk(rp)1"rr"1J!!JI!J#TT2Krrb6`Ir iNk(rp*!!!3!)P#(rX$ZM!!!lj!!!S"m!Y#J!!!""JJ!8S(m!YU!I!,4m!`"!3)! ![$[!!!'JI`#f1!-!!E!I!,Dch`!JNlm!0$Kr!!4)!!39J%%!&,"r!,#S(`#`,!! !!%##!%!iI`!%1*m!XS#r!,L"R`!!5!!%6B""!"5)(`!L9!!'pd'#!"b)(`#b+!! !!%##!"#!I`!dIq6lH%[rreNlhJ!"U"m!X#`!!!"!JJ!3L"m!XLJ!!!""J[q)U"m !X#`!rp9"JJ!3U"m!X#`!l(K!JJ!-1!!!!,!I!,#JI`#f1!2rrl!I!,D!!3"B1#% !8(`)!kD$iIrmJm(rq)1Krr41J!!JI!J#TVpKrqb3!!%!#*3KrZ!lB`!!1i8!!$Z Q!!!la`!!1qJ!!#JH!!""JJ#N1(X!!$Lm!!!i`3!m11%!1%J!!IPJ!!!!I'!(08# #!)L)!3!i+!!!!8##!(!iI!!!1*X!!$LK!$T)!!'4B!!!!(aJ"c9!JJ"JNm%!3$J "!,#3!!%!9UJ"!$U`!3"D1!!!!*J"!,!i!!!!X!%!m$J!!!#B!3$bXk%!p$J!!!# `!3$fNq%!q)"K!$`iJ3"!5rrq1DKK!2")!!!31'$rL%J!!!JiB2r1J!%"+$JK!5" m#!1QZf(rl%k!!#"m#!+QNq(rr*!!!3!)P#(q`(br+hJS(`!!3B)!B,#I!"BS!`! !3))!'$J!!!#3!"m!%MJ!!!#`(`!F5!!!+$L"!$L)S`!!1+8!!8J!!KQ!33!81!% !1*!!(`!51!$rrl!I!"arirYi5!!#AB""!"3i!!!!N!!I!"*)!!!)1'$rcS!"!8J i)3&!I!J$TS2Krra1J!!JI!J#TT2Krrb3!!%!#*3Krk"mhc0i+!8!!%'#!"#)"3! !+!!!!%##!#!i!!!!Q!%!1$J"!$L3!"m!%MJ!rrq`(`!F5!!!%*!![`!51!!!!,! I!"b`I`!@N!#I!$"rirYi5!!"MB""!"3i!!!!N!!I!"+!!3"S1#%!B(`)!kD$iIr m6S!!)(`)!UD6iIrmN!!"!!L8)Ip!I,mVH$LK!$K,rrlCI'!(08##!!bS!3"1X"m !!)!"!-Ji)3$!I!J$TS2Krra1J!!JI!J#TT2Krrb6`IriN!!"!!L8)Ip31mB!!$[ R!!!i`3!i5rrr)AaJ"c9!JJ"!L!%!9P3%"[Bi!!!!I)3!8$!%rrpm!#%3Q"m!!)J I!!!S!!!!3B)!%)!"!'L3!"i!!%J!!!b!!3#FN!!H!!#!!3#i1#%!X(`)!kD$iIr mJm(rq%k!!##"JJ!JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!%*!!33!8J!`!!)" -!!4m#31Q6S!%))'#!#L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!FN!""!"5!$!! !J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!b3!%%!&)! -!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!**!!33! 8J!`!!)"-!!4m#31Q6S!%))'#!!53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!8N!" "!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%))!-!!# 3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!N[)6J+)J+B"!!!!9)!N!5!#!#3"4!!%!# 3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(r iIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('! F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%5 3"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm !$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc) 4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!!j'!+!!"*6&K$%iX !!%lk!!41G8j@rrT)jaJJ*'i!#$emrrrrrR$r,8$rqLBU!!)-8J!%CJ!!RP922bS !)#m$(bS!"NKZrrj)E[rkF!#S)c!I1!"REJb$a(C[BfBL*MaQGQpM98mr+J!J,`- I2!!"5'lrrNKZrrT`!+JM-"mi!%T%Cd!-JfCXER4Q##BmG'9YF'!'*MaPH(4Z98m r+J!J,caPH(4Z$)0dC@e`9m"%!%L!(`")E[rq5'lrqR!!U#-`(cJ!0@lrrJ!J*@l rqJ!L083!(NcI""K1ALkI6R@%E@&TEJ#3"3*"5Qpj)A"PCQC`Gh"M!!!!!ECHR!` !N!d$!!)!N!6rN!3!N!B"+!!!!5J!!!%S!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!% !!!*!!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3! !!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQp Z6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*2"rrL3!!%!#*3Krl"mIKYi1!$rrl! "!$`i!2rrN!!"!$L$rJ!#U"i!!#`!!!4!JJ$%U(i!)(rNqhL)[J!'1-%!2$MK!$K )!!$&J%%!&(aJ"c9"JJ#-2"mlLLJ!Ef0!JJ!S2q"QGM[rEf1SIJ!J1*m!!$LJ!!% i`3!m11%!1%J!!)f!33!8I'!(08'#!&3m(jQ8+!"ZG%##!"!ri(4P1rpYF%J!!!` ri'9i1rpdEUKq!#!mJ'9i2+"dC6LPEA"m(bK3I!!!0&3&hMii`3!m11%!1$L%G'j )!!!eJ%%!&+J"!$b`(J!JJ!%!1*!!(J!LX(i!(S!"!&Ji)3"3I!J$TS2Krrb$`Ir i6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"HJ#3")!)!*!&%!! 3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(j JIrKrr(rmIrarr(rmIrarr(rm2r`rrMrr(rm2rKJ!CQ"CQ%B%3B4!C%!8Aaa4R&5 FFT`eh$rH)&mIr`rq!!"(1J!!!!X!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!! %-c-!!*QC!!AZN!B!"Yf3"J!(Zj!'!!L)N!B!#853"J!+)T!'!!m!N!F2m!#3"3q 5,r!2m!!!$aQ5,r)Im!!2%4Q5)L%[!!m4%4Q5)Lm!$a%4%4Q5,`!2%C!%(bm!$ar rra%I2`!2(e9Im4mr!!mI9&Eb(cm!$jp94[)I2`!!re48rbmr!!$rN!3[2k!!q(G hMbmrUJ!2rrrrRcqU!!!c-c2rqU!!!!$NB!S!!%P-@%-6L`!!6[S!"%je6PErqNM R'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja5!!4Q!!#H98mr+J!J,`-I+J!'5'lrrNK ZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'CfEf096cmU!#![!amm!!&)E[rq5'lrqR! !U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e`B!BQ2'9iG'j96cmU!#![2'9iG'i-Jh4 PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!I1!!eE[rq!#!PE[rk!#)e4!!H60m%'%j H,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"hF'-!!!!"YPkF$!#3$3-!!J#3"2q3"!# 3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!N!#!33!rj!%!*! 2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!! !I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4 PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hJi!2rrX!%!2$J!rrq3!!%!1)2 q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)Lq!!Bi`3!m11%!1%J!!-@!33!8I'!(08' #!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkKq!#!iR`!!1+!!!6M"!$`ii3!i5!!!MB" "!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$rJG'8lrfe`5!!!$$rJCAJlrh4ZU(i!)$b !CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM"!$`ii3!i1)4dENJ!!$@!33!8U!%!2,! H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JJB)!!*!!33! 8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&D!*!%J!J!N!83!"!!N!P)!!!!5!#3"33 !!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIra rr(rmIrarr(rq2rm2r`2H'!"QB&QB4J4"K%"N3"4!(%`F@aaeh(VmI[irr`rr!pi !!%fC!!!!"`!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!3!!*QCrrm!"853"J! ')T!'!!m!N!F2m!#3"3p5,r!2m!!!$a95,r)Im!!2%495)L%[!!m4%495)Lm!$a% 4%495,`!2%C!%(bm!$a'3""mr!!m4rb%4(cm!$ap"rb%I2`!2p"38rbmr!!mr38& 2rcm!$d023I2r2f!!rc3r02mrCJ!!rdp2rcpQ!!!!rr-[pQ!!!!$NB!S!!%P-@%- 6L`!!6[S!"%je6PErqNMR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja5!!4Q!!#H98m r+J!J,`-I+J!'5'lrrNKZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'CfEf096cmU!#! [!amm!!&)E[rq5'lrqR!!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e`B!BQ2'9iG'j 96cmU!#![2'9iG'i-Jh4PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!I1!!eE[rq!#! PE[rk!#)e4!!H60m%'%jH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"hF'-!!!!"YPk F$!#3$3-!!J#3"2q3"!#3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#3"a!!!!!-!!! !!3!!!N!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!! "!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA* LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hJi!2r rX!%!2$J!rrq3!!%!1)2q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)Lq!!Bi`3!m11% !1%J!!-@!33!8I'!(08'#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkKq!#!iR`!!1+! !!6M"!$`ii3!i5!!!MB""!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$rJG'8lrfe`5!! !$$rJCAJlrh4ZU(i!)$b!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM"!$`ii3!i1)4 dENJ!!$@!33!8U!%!2,!H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2 "rrK1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&L!*!%J!J!N!8 3!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J !IQ"rq(rmIrarr(rmIrarr(rmIr`rr$rq$rm'r`)q'!"QB&QB4J4"K%"N3K4'R%j FHcaL[$+m1ci2A`Er!Mi!!%AP!!!!#!!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c -!!3cN!4QCJ!&Gj!'!!C%N!B!"b+3"J!2!*!($r!!N!82BLr`$r!!!!m@BLrb(r! !$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a%4m4%@,`!2%4ra84mr!!m4md%@(cm !$rm`4K&[2`!2B3&"B@mr!!$c)N&KEcm!!2mb4K&[2h!!!202*KmrG`!!$r"[2rp h!!!!m!$rrh!!!!$NB!S!!%P-@%-6L`!!6[S!"%je6PErqNMR'#!NEJ!)2Acrrrr qF2mY32rk*LS!!Ja5!!4Q!!#H98mr+J!J,`-I+J!'5'lrrNKZrrT`!+JM-"mi!'G Z$)2%GQpMCL)Q2'CfEf096cmU!#![!amm!!&)E[rq5'lrqR!!U#-`(cJ!5N4R3!b $CQaZG'B)*MadC@e`B!BQ2'9iG'j96cmU!#![2'9iG'i-Jh4PEA"A`%3!5)!I!%K Zrrj)E[rkF!#S)c!I1!!eE[rq!#!PE[rk!#)e4!!H60m%'%jH,Tp1GB4YB@PZ!*! &!N&+EhNKF'9QCR"hF'-!!!!"YPkF$!#3$3-!!J#3"2q3"!#3"J%S!!!"+!!!!5J !!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!N!#!33!rj!%!*!2K!!!!)!%"!3!N!J "!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*! )!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIr mNm(rq*!!!3!)P#(rX(aq'hJi!2rrX!%!2$J!rrq3!!%!1)2q!!+S(J!!,!!!"%# #!-5SIJ!JIq6lH)Lq!!Bi`3!m11%!1%J!!-@!33!8I'!(08'#!)`m(cZ++!"[Bd# #!#Jri'Cf1rp[BkKq!#!iR`!!1+!!!6M"!$`ii3!i5!!!MB""!"4mB!Fe3B)!9$` IQC3S!'jd3))!%$rJG'8lrfe`5!!!$$rJCAJlrh4ZU(i!)$b!CAJmS(4P1+9YF(` I+&"m!!!d9!AH2MM"!$`ii3!i1)4dENJ!!$@!33!8U!%!2,!H!##!!3!iN!!H!#+ `IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31 Q6S!%)!#3#!`!!!'D!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N #!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr$rq2rm rr`rq'!"QB&QB4J4"K%"N3"4rr'!mCcaK2#)m*6iL2crr$ri!!$X%!!!!$`!!rj! '!!(rN!6-c!!#rj!%!!!!!mb3"2rr!!6-N!B!"CQ3"2rr!!CQN!6-c!!(CT!'!!J cN!B!#Gf3"J!+UT!'!!YhN!B!$&@3"J!04*!'!!iLN!B!$`#3"`r`!*!&$p9Im!r `!!!22G9Ip6r`!!mc2G998em!$c-c2G99A`!2-c-c2G9I!!mcN!3rA`!2Gj!%cfm !$h3L)L52E`!2FKhp%Sp[!!pb%8m5Mfm!!(3Kq5U2E`!!G%Y,5Sp[i!"kU[UUMfr Z!-L)L)L2Eqi!!'CQC[rqi!!!!14J#J!!58aB3a1,!!"1qJ!%6R919[rk51FB)#4 Z!!JpI2rrrrj`rbe!rrSQ+J!#$&)!"'B!!*j96cmU!#![!amU!!C)E[rq5'lrqR! !U#-`(cJ!Cfi-Jm4fEf0Q)LBmCRC[Be922bS!)#m$(c`!!8KZrrj)E[rkF!#S)c! I1!"+4'G!$)0QE'jdCJJQ2(4PEA"J"LBmCAKdEP922bS!)#mmCAKdEJb$G'9YF&I !4!")J"m!5'lrrNKZrrT`!+JM-"mi!$9Zrri!)#9ZrrS!)M9%!"j-h`3B6PiZRdj eK'eKD@i!N!8#38T[H5&`C@CQF(G`B`!!!!'fAT`-!*!0!`!#!*!%rj!%!*!'!5J !!!%S!!!"+!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!#3!)""!$rN!3!N!q%!!! !J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!! !!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*! BI!J#TT2Krrb6`IriN!!"!!L8)Iq`I(iEH$J!rrq`!3!m1!$rrj!!!3!iJri!!UJ H!!!X!!!%3))!a+Kq!#"rj2YiL,i!"MM"!$`ii3!i5!!!aB""!"4mB!Fe3B)!M$` I1iSS!'pM3))!+$rJCRBlrfpMU(i!)$LI!!!iS!!"1-%!2$MK!$K)!!#0J%%!&(a J"c9"JJ"82"qCP#J!ER4!JJ!32q"dC6[rEA")!!!-2q"PH$[rG'kSIJ!J2)"PH$b JG'8iT@e`I"mS8(`!!$48"Giq1-%!2$MK!$JiK(4Z5!!!0B""!"5S!3!mX"i!))! "!$L3!"i!)V"q!"k!!3"B1#%!8(`)!kD$iIrmJm(rq%k!!##"JJ!!N!""!"5!$!! !J%`!"(`*!kC1J!3J!*!)$!!!!M)!N!5!%!#3"4!!%!#3#8J!!!")!*!&#!!"!!J !N!B"NJ#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIra rr(rmIrjrrcrr(liB!'CJ@CK'"%'%3'4!&%!FAKaK(%#FF*aahRRI2rmI[J!!2%d !!!!5!!$rN!B!*-c-rj!%!#M-c2rr-c-!+Xb3"2rr!%bCQIrr-c-!6TQCc-crr`" 8QC!%rrm!FQCQc-crr`"hCQE-c!!!!(eQCTQC!!!!IfD3"-c-!*`c-jQCrrm!S6- cQCN!!!#L-c0QC[rr!-d!!$-cc-`!cJ!!-c1CQ3$m4*!'!2dLN!B!r`#3#Irr!*! -rra892rr!!$rr`#3"[mUr2a892rr9#Vrr`#3"2mU+LVmr&53"#T8r`!!!2mUN!A mr&53"2m!!!$r+T!(r2a892m!!!$r+T!*re6r!!!!rbU3#&6rIrm!!!$r+[hrrrd U+LT8rhrr!!!!rrp-*#4hrbSU92prr`!!!2eh+(G16RIp9&6rIrm!!!$rcAe16R) Sre48rhrr!!!!rmfL6#LFS[pr92prrrd!!2h1cAehGmhpIe6rIrrpr3!!rml0SFl rrrprrhrrrId!!!$prrrpIhm!rrrrrId!N!6NB!S!!%P-@%-6L`!!6[S!"%je6PE rqNMR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja5!!4Q!!#H98mr+J!J,`-I+J!'5'l rrNKZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'CfEf096cmU!#![!amm!!&)E[rq5'l rqR!!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e`B!BQ2'9iG'j96cmU!#![2'9iG'i -Jh4PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!I1!!eE[rq!#!PE[rk!#)e4!!H60m %'%jH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"hF'-!!!!"YPkF$!#3$3-!!J#3"2q 3"!#3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!N!#!33!rj! %!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!" N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C [E'4PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hJi!2rrX!%!2$J!rrq3!!% !1)2q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)Lq!!Bi`3!m11%!1%J!!-@!33!8I'! (08'#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkKq!#!iR`!!1+!!!6M"!$`ii3!i5!! !MB""!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$rJG'8lrfe`5!!!$$rJCAJlrh4ZU(i !)$b!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM"!$`ii3!i1)4dENJ!!$@!33!8U!% !2,!H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JJB)!!*! !33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&D!*!%J!J!N!83!"!!N!P)!!!!5!# 3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(r mIrarr(rmIr`rr"rq$2m!r`!q'!"QB&QB4J4"K%"N5"4BR(hF@0aDh$MF(Ii-h`$ I!$i!!%4a!!!!"`!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4hN!B!"853"J! ')T!'!!m!N!F2m!#3"3p5,r!2m!!!$a95,r)Im!!2%495)L%[!!m4%495)Lm!$a% 4%495,`!2%I)4%48[!!mImK*#(cm!$rrr*I8[2`!2(r!!p5mr!!m[m2$r,cm!!2r `!2m[2`!!"Im[rrmrB!!!43$r,cpQ!*!%rbmrCJ#3"IrrB!!!!14J#J!!58aB3a1 ,!!"1qJ!%6R919[rk51FB)#4Z!!JpI2rrrrj`rbe!rrSQ+J!#$&)!"'B!!*j96cm U!#![!amU!!C)E[rq5'lrqR!!U#-`(cJ!Cfi-Jm4fEf0Q)LBmCRC[Be922bS!)#m $(c`!!8KZrrj)E[rkF!#S)c!I1!"+4'G!$)0QE'jdCJJQ2(4PEA"J"LBmCAKdEP9 22bS!)#mmCAKdEJb$G'9YF&I!4!")J"m!5'lrrNKZrrT`!+JM-"mi!$9Zrri!)#9 ZrrS!)M9%!"j-h`3B6PiZRdjeK'eKD@i!N!8#38T[H5&`C@CQF(G`B`!!!!'fAT` -!*!0!`!#!*!%rj!%!*!'!5J!!!%S!!!"+!!!!4!!"!3!rj!%!*!(%!!!!!`!!!! "!!!#3!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!% !!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ* [ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb6`IriN!!"!!L8)Iq`I(iEH$J!rrq `!3!m1!$rrj!!!3!iJri!!UJH!!!X!!!%3))!a+Kq!#"rj2YiL,i!"MM"!$`ii3! i5!!!aB""!"4mB!Fe3B)!M$`I1iSS!'pM3))!+$rJCRBlrfpMU(i!)$LI!!!iS!! "1-%!2$MK!$K)!!#0J%%!&(aJ"c9"JJ"82"qCP#J!ER4!JJ!32q"dC6[rEA")!!! -2q"PH$[rG'kSIJ!J2)"PH$bJG'8iT@e`I"mS8(`!!$48"Giq1-%!2$MK!$JiK(4 Z5!!!0B""!"5S!3!mX"i!))!"!$L3!"i!)V"q!"k!!3"B1#%!8(`)!kD$iIrmJm( rq%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!!!AS!N!5!#!#3"4! !%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!" qB(riIrarr(rmIrarr(rmIrarr$rm2rirrcrr(riB!'CJ@CK'"%'%3'4!&(rdB$4 K0'Fd)$3[YLFh2rFIrJ!!Ae!!!!!,!!$rN!B!!Fb3"2rr!!,-N!B!!jQ3"2rr!!4 QN!6-c!!&lT!'!!DlN!B!"iL3"J!)Gj!'!!P%N!B!#L+3"J!2!*!($r!!N!82Ncr `$r!!!!mCNcrc(r!!$a%CNc-a2`!2%4%CNc-r!!m4%4%CNcm!$a'3""mr!!rrN!9 2!!rb*@)Lrdm!$r*eD5,r6`!2mTrjN[p2!!$h)L)Rrdm!!2,rpj,r6k!!mLq*)[p 2UJ$rN!92UJ!%4%4%rrqJ!!!!YQpNC@3!!!!8Fh"PBfPKE#eYB@0c1N9NDA4[FR0 [C'pN!!!!((0`C@0TB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef0[C(0`!!!!-h0`C@0 TB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef-k6h"PEN4[Bb"6D'9XE#"3E(9R,8PZF`" [C'aL!!!!(R0`C@0TB@`YCAKdEMT2F'9Z4'pM)%aTBR*KFQPPFfpNFh3!!!!,1P0 dBA4TEfjPFRN!!!!%k'!+!!"*6&K$%ii!!%lk!!41G8j@rr4)jaJ`*'i!#!a5!!4 QI&922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'G-*QS!'MJV!!496cmU!#! [2'eKBh0#*dKZrrK)E[rdF!#S)c!I0J"Q-&922blrq#mmEf4PC"mU!!C)E[rq5'l rqMm%6VS$0$!I0J"Q$$9Zrri!)#9ZrrS!)M9$!"j-h``B6PiZRdjeK'eKD@i!!!" 19[rd,`SNEJ!)B!*5LJ`5!#eQq%(U!!&$l[rmF!5J,P922bi!$#mZrra#*dKZrrC )E[riF!#S)c!I28$rp#!ZrrJNAdjH6R@84'Pb584'FQpY8h"PBfPKE&"KG'J!!!" 19J!!51F3-#BZ!!JQEJ!-*%0J!P++$")!1QEi)%U4`b*$F!!3%8M!N!#)8S!@J#" +3qX!!A!!%"1J,NcI$!K1ANjeNe"KG'K'FQpY8h"PBfPKE&"KG'J!!%j@!!![#bm +*Qi!$#4Z!!JQNPL+0e)!"&5+8SSA8J!'8SSJ5N2V!!G`!"!V!!DL,R!!%#X!"YA !F!!3+`!'5-#"r!!#5%"63'B#8SSJ5L4I*Pp1ANjeN!"(CA41CAKd4Na%H%9ZG(* j!!!!6PEqqNMR(c!X,J!+H!"f!&P2,caQE'3M2bi!#+JI)&mQ5#!,CK496kQ[-"m i!'F%-!4J@M!mrd"J9&P2,`Y1ZJ,')"mZ!#46)%V4abS)B"K)E[lk,`T1Z[mq*%L mV[lk8%pQ"(B"B!5ea@AN5J0R&N(Zr`!LEJ!1F!!3,[m!8N")`+)ZB!*ie5m,UD- `"%cI$2K1ANjePdGPG&"KG'K'FQpY4Na%H&*PFfpeFQ0P!!"19[qd51FF!(B!98q TP$!I1J"96cmZ!!J[2'eKBh0#*dKZrrj)E[rkF!#S)c!I0J"R"$!$B'a96cmZrri [,[rk3IS!LNK35'lrY(!"UP)`(cB!C`3`!f"+98p)E[qd(c`!!A!0UP)`(cJ!GJ! -42rrCJK96kQ[-"mf!%T$CKir"+QB,bi!$LmZ!!Sr2!#!6VVq`$B!2`5TQNr[!!S r"DQB-!0-h`!i6Pj1GCp(CA4'EfaNCA*'FQpY6h"PEN4[BdC[E'4PFR0'6%4i!"! 26h"PEN4[BdC[E'4PFR1P6PErP%MR%$!NEJ!)*Qi!$(B!3T-p8[qU,@S!![r%)%T FL#e)rkC#E[q`3HlrP(!*SQ!f!'F%-!0J"LDZrm3`!dcI$!K1ANjeN8GPG%4TFQ9 MG'pbH84TFNP%!!"19[fk51FH-$SZ!"JX,J!8*'i!$LCZ!!Tf!&922`8["KmZ!") [#Lm,F!#S)c!I0J!-3rr9C`Jr3`*iB!!!`$5&5'lr!#m'2`91Z[jq0J"2l`!+Ca4 )E[m!,`Br,J!)6VVpZ$B!6qm!#NT$C`Jr3`*iB!!!LJ`Z!$Vr!@FH2`9)E[m!6VV mFLJ!5'lq!%KZr`"1Z[c%6qm!$Q!@3Hlr!%2ZrJ"`!"!Zr`"53%M!S#ji!&922a) ["%KZrJ")E[fkF!'U8M!I0J!-3rr9CKa+,J!5CbC96dKZrESr22rr,`Y`"DT5-"m f!'!35N0Q$#m,5'lpZNkkrV"36cp$!RK-h`ai6PiJAdr[!"*1d*&'58j%6e"&6N4 23dC26%4&8J!!)PmJAk!P,S"U!N+A6Y%!!!R@5Qpj)A"PCQC`Gh"M!!!!!EBXZ,` !N!d$!!)!N!6rN!3!N!B(a!!!"m3!!!I%!!!"m!!%"!$rN!3!N!GB!!!!9!!!!"B !!!R!!J%%!2q3"!#3$J&N!!!!J!3%"!#3#!%!!!!mrj!%!*!%rj!%!*!(!3!!!!i !!!!"!!!!P!!!!*`!!!&F!!!!!3#3%`i!N!J#!!!+!J!!'!)!!#)#!!!Y!J!!1J) !!%F#!!"8!J!!BJ)!!'m#!!"r!J!!L!)!!*-#!!#L!J!!V3!"!*!&!`#3"%S03J" '!!!!3f&bBQpZ6'PL!%GPG%KKEQ4XC90THQ8!3Qa[BfY0EhCP!&9cC9*PFdCTE'8 !4f9d-9*PFfpeFQ0P!%C66@&VC8C68h"PB`"$E'pcC9*PFdCTE'8!3Qa[BfY0EhC P4'&dB3"'8h"%DA*$FQ9KG'8!8Q9XC@&cC9*PFfpeFQ0P!&*PFd9bFQpb!%CTEQ4 'EfaNCA)!4P0`6h"PEP*PFdCTE'8!3h9b8Q9c4QPXC3"33NGPG%0KG%PZCQp6H@j M!*!AI!J#TT2Krrb6`IriN!!"!!L8)Iq`I(iEH+JH!!!X!!!%3))!Q+Kq!##!RJ! #L,i!"MM"!%3ii3"!5!!&hB""!"4mB!Fe3B)!B)"q!"UVi`!%U(i!)$b!E@%iS!! !1-%!2$MK!$JiK'0c5!!&VB""!"4mB!Fe3))!3+KK!$`mJ'pNL,i!"MM"!%3ii3" !14m!!$L%C@4)!!3KB!!!!(aJ"c9!JJ!8U!%!4,!H!##!!3"!N!!H!#+`IJ!HJ!% !@$JK!&"m#!1QJq(rr)2"rrK1J!!JI!J#TT2Krrb3!!%!#*3Krl"mRb0i5!!!#$K M!!')!`!!+!!!,8##rr3iB`!"1)%!3$LJ!!4)!!BCJ%%!&(rMqhL!J3"!1+!!!$M "!$`ii3!i5!!%pB""!"5!B3!iJ!%!@$JK!&"m#!1QJq(rr%k!!#"m#!+QN!!"!!L 8)Ir!I)BMH(aP'hK)!!!)1+8!!BJ&!!!S!!!k3),rp(b$+&#)!`!!I'3!8$J$!!' B"J!!1'8!!$L'!!')TJ!!5!!&PB""!"5!!3")1#%!3(`)!kC1J!!JI!J#TT2Krrb 6`IriN!!"!!L8)Ir!I*iMH(ar'hL!(`!!N!!H!!!lr`!%U"m!!,!H!!3lr`!#1rm !!BJI!!#B(J!'1rm!!6Kr!!!iRJ!(L,i!"NJ!"1@!33!8L"i!"Rrr!K5)IJ!'I'! 1F(`!!C48!!JmI!!B%#`!!!&!JJ!)1rm!!ArMqhL!!3")1#%!3(`)!kD$iIrmJm( rq%k!!#"m#!+Q[d(rk*!!!3!)P#(qS$J$!!!l4!!!1f8!!$[J!!!l`!!!2'"QE(` %!hJiBf3M5!!%1B""!"4mI4Yi+"d!!%##!#K)!!2eJ%%!&(ar'hKri!Fe3B)!$(r MqhK)!!#)1'$r3%J!!)"rSqYi5!!%&B""!"5!R3!!Ii3D&%J!!#JiC!!!1)%!1%[ rrYemC"YiJ!%!1(`!d%"!JJ!-1m!!!8J!!!am"1"!3B$rf&I!"Mp"JJ!J1'%!2ML E!!#)S3!q1+8!!8J!!p@!33!85!!!#$[Jrp9rSqYi5!!$fB""!"4rirYiJ!%"D$J K!@"m#!1QZd(rk%k!!#"m#!+Q[f(rl*!!!3!)P#(rB$ZM!!!lC!!!1i8!!%J!!Yf !33!8I(iEH$Kp!!!mJ'eK1+!!!$M"!)3ii3#!1)4MFdJ!!U'!33!8I(mEH(rJ"c9 "JJ!-Iq2lH%J!!+5SB3#%J)%!J$LL!%3i`3!i5!!#TB""!"4mIaYiIq!(08'#!!a rirYi5!!!H$KK!$JiJ!!"5!!#QB""!"4mI4Yi1q!!!(qJ"c3X!2rr3))!%%J!!T@ !33!8I(mEH(rJ"c9!JJ!`Ik2VH%J!!T@!33!81'!!J$LE!!!i[!!!5rrq-Aar'hK rSqYi5!!#lB""!"4r`r0i5!!#DB""!"4rirYiJ!%!U$JK!+"m#!1QZf(rl%k!!#" m#!+QNq(rr*!!!3!)P#(r8(bI)hJi!!!!N!!I!!#S!`!!X!%!6S!$!!+3!!%!D$J $!!D3!!%!5MJ!!!#`!3"81'%!1%J!!XQ!33!8I'!(08'#!!K)!!!-J!%!D*!!(`! !J!%!Z$JK!,"m#!1QJq(rr%k!!#"m#!+Q[b(rj*!!!3!)P#(pB$XM!!!l4!!!1f8 !!$Z'!!!lT`!!1mJ!!$Kj!!!iQJ!!1,X!!$MF!!!ir3!!5!!"*B""!"4mIaYiIq! (0#`!rp9"JJ!-Iq2lH%J!!25c2!!!1(N!!$LD!!!iS3&q5rrq&Aar'hKri!Fe3B) !'$Kq!!!iQJ!!1+%"IN[rr3&mIaYiIq!(08'#!!arirYi5!!!X)J"!AmS!!!k3B) !*$KK!AiiQ3!!5rrlDAar'hJiB3&q1)%!IN[rqmP)!!!J1'%"IML"!(k)S3&q1+8 !!8J!!Bf!33!81q!!!+Km!!!iR`!!1+%!IMM"!$K)!!#CJ%%!&(ar'hKri!Fd,!$ re8##!#KAB!Br3B)!0$KK!$JiJ2rr1,d!!%J!!9f!33!8I(mEH%J!!"Kri!Fe3)) !%$KK!$JiR3!!5rrq6ArMqhL!!3+S1#%#S(`)!kDl)IrN6S!!))'#!#L3!%%!&)! -!!#!6!!%I!N$TNk!"##"JJ!`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!%*!!33! 8J!`!!)"-!!4m#31Q6S!%))'#!#b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!" "!"5!$!!!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!b 3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB) !'*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"## "JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S! %))'#!"b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!dN!""!"5!$!!!J%`!"(`*!kC 1J!3J!*!%J!!!d"!!N!E3J!!!F!J!N!8"3)!!!'!!N!B"S)!!!*`3!*!&!Mb!!!$ i-!#3"3-dJ!!"%#J!N!8%4)!!!(!)!*!&",5!!!&J1!#3%$XK4!J`$dp`C@j%Ef0 'EfaNCA*cT3!!!@)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3) !N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm2rirrcr r!$iB!'CJ@CK'"%'%3'4!&&qFIpa`h($F-0``hLrI2rm!2J!!%K`!!!!)!!$rN!B !!Fb3"2rr!!+CN!6rr`!$CT!%c-`!",Z3"J!&Gj!'!!C%N!B!"b+3"J!2!*!($r! !N!82BLr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a'3""m [!!mIrrra,cm!$rp99Im[2`!2p3!!Abmr!!re"%4I,cm!!28%4&m[2`!!p34%Abm rF!$d99Ar,cph!2rrrrBr2hF!N!Arph!!!!#fEf4PC!!!!"4cF'9MD@&X,@eKBh- k4@4TG'pbFfpNEf3!!!!FFh"PBfPKE#eYB@0c1N9NDA4[FR-k6h"PEN4[BfpNFh! !!!!cFh"PBfPKE#eYB@0c1N9NDA4[FR-k6h"PEN4[BcT2F'9Z4'pM)&0SC@aX)&" XG@FY5@jc!'pNE')!!!!HFh"PBfPKE#ePH(4Z1Np`C@j%Ef-J6'PLFQ&bD@9cEf4 cG!!!!!Xk8h4KG'P[EQ9bH3!!!!6NB!S!!%P-@%-6M`!!6[S!"%je6PErp%MR'$! NEJ!)$&)!"'Ci98mr+J!J,bS!!N)R5'lrrNKZrrT`!+JM-"mf!'G+*QS!'MJV!!4 96cmU!#![2'eKBh0#*dKZrrK)E[rdF!#S)c!I0J"Q,P922blrq#mU!!)I2!!"5'l rrNKZrrSr"%kk!c3`(cB!CJ`eE[rq!#!PE[rk!#)e3`!H60m-'%jH,Tp1GB4YB@P Z!!!!6PErp#m+*'i!#'!#8SS-%J!YC[K"kJ!"3qlrr(!%S#j96cmZ!!`[,[rm3LG )E[rf5'lrq(!!U#-`(ce!rr3J,[ri*&p1ANjeP%4TFNP%4R*[E90`C@0TB@a3BA4 S!!!!6PB!!%MR%$!Q,J!)*Qi!$#4$B!*5LJ`5!$TQq#"+NF-L3h!!%"&)`*!!L&+ !&S!J5N2V!!&`!"!6S#j-h``)6Pj1GC03BA4S4R*[E90`C@0TB@a3BA4S!!"19J! !,`X[#LCZ!!`NEJ!)*T*BLMG5!!48LP++&e)!"P++)%T$k`!(F!!3+`!'SLj`!"! V!!E9`(!!%#X!"NM!JI`!!NK!8d"Q!P++)%SNAbCI6Pj1GC!!4f9d6Q9iG%C-4(K &ER4bH3!!!%j@r[T)jam`,#i!#RJ!GJ"C6bmmCQaN)cmZ!!LS(b"I*NJJ#fB898q TVc!I1!"R"$!%B&S`22p!B&4C6bm,6VS#aL!I,J!N8b"+dFFU#'!B5'lqqLm+6VV r2L4)[+lqqP"2CJ4f!@!%YF9Pj%S$CaC"l[m!)Qi!$R!!%#lr!&*!5-#L,Q!#H08 [#kQM-!4-h`ci6Pj1GCG(CA43BA4S4R*[E8C-4(K5CA0[GA*MC3!!6PErY%MR(!" f!&92UC3`(cS!98mr,J!),caYB@0c3LG)E[rq5'lrqR!!U#-`(cB!C`3`!f"X98m r,[rq,blrqN(k!)T)8%KZrl4`!DT5-"mf!'F%-!0J5P925'lrY"mm!!&`$DT5-"m i!(B!$%6rrfB)98qTVc!I0J"+3fBH2`5TQ#mZ!!i[,J!+2c`!J%kkrX!f!$m%UCT 2l`!+2`@TQ$!$60m!1%jH6R@I4f9d4QpXC'9b4R*[E8p`C@j%Ef0'EfaNCA*c4Na %H!!3$dp`C@j%Ef0'EfaNCA*cT8j@rj4)ja!`*'i!##CZ!!af!%+629,rULeU!!, ra#"+A)JY52qQ3QlrX%(Zrj4`#D*J0J"R"$!$B!BQV[r%-!0-h``)6Pj1GC&(CA4 %DA*PBh4[FRP%DA**4!!!6PEpZNMR(M!k,J!B,#i!Z!!iQEJ!+GJ"96cm&,`B I,J!5,`S[#h!!U#-`(cB!$%2re@F)2d-#H'!!!-!dK8KZr`!["Mm&6VVqIMB!6qm !#QF85'lr!#m'2bi!#%kkrEJf!%r[!!T+3fF)2d-#H'!!!)S-,J!kr`&R(Mm&5'l r!%kkr()S!%KZrJ")E[m!6VVma%r[!!jJ&N(Zr`"$l[i!F!!3,[m!8N")`+!ZH!" 96cm5,`4)E[i!5'lpZR!"UP)`(cB!$%2re@BF5Li!%QFQ98p)E[fk2ccrrbm,F!@ U8M!I0J"J%%T$CJ`[#dKZrET1Z[k`8%mr3`*i60m-H%jH)&p2l`!56Y#44NP14%p 348j%6d0'6da%49)!!#*I)&qJ*5k!DJ*#Pdl4!!!*CNT[H5&`C@CQF(G`B`!!!!' f,,LP!*!0!`!#!*!%rj!%!*!'"f!!!!GJ!!!(B!!!!I!!"!3!rj!%!*!(@!!!!&3 !!!!@!!!*8!)""!$rN!3!N!i"C!!!!)!%"!3!N!J"!!!!22q3"!#3"2q3"!#3"`% !!!!1!!!!!3!!!*3!!!#F!!!"A!!!!!%!N"-1!*!)!J!!#J)!!"J#!!!L!J!!,3) !!$S#!!"(!J!!9!)!!')#!!"[!J!!I`)!!)J#!!#6!J!!SJ)!!+d!!3#3"3-!N!4 +$8)!4J!!!%0KFQ*[ENaTBJ"(CA4)B@jNE'96DATP!%*XEf0V6@pfC3"9Ff95CA0 'D@aP!%GPG$&5CA0[GA*MC3"'8deKDf9'8e0`C@-!3fa[Ff95CA0'D@aP!%*XEf0 V6@pfC84KG'%!4P0`4'Pb3h*PBA4P!&*PE'9KFf95CA0[GA*MC3"5CA0&FR*[FJ" 'D@jN4QpXC'9b!%C6F%p`C@j5CA0'D@aP!%0eFP*PFdCTE'8!8%*(CA4$BA4*EQC [8hPZB`#3&h`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hLS(J!!,!!!"%##!*5SIJ! JJ*i!!MLJ!!!i`3"%11%!3%J!"GQ!33!8I'!(08'#!&b!IJ!DUq-!"+Kq!#!mJ'e K1+!!!$M"!$`ii3!i1)4MFdJ!"DQ!33!8I'!(08##!$bSB3!mJ*i!!MLJ!!%i`3" %11%!3$NI!!")!!3KB!!!!(aJ"c9!JJ!8U!%!4,!H!##!!3"!N!!H!#+`IJ!HJ!% !@$JK!&"m#!1QJq(rr)2"rrK1J!!JI!J#TT2Krrb3!!%!#*3Krl"mRb0i5!!!#$K M!!')!`!!+!!!,8##rr3iB`!"1)%!3$LJ!!4)!!BCJ%%!&(rMqhL!J3"!1+!!!$M "!$`ii3!i5!!%pB""!"5!B3!iJ!%!@$JK!&"m#!1QJq(rr%k!!#"m#!+QN!!"!!L 8)Ir!I)BMH(aP'hK)!!!)1+8!!BJ&!!!S!!!k3),rp(b$+&#)!`!!I'3!8$J$!!' B"J!!1'8!!$L'!!')TJ!!5!!&PB""!"5!!3")1#%!3(`)!kC1J!!JI!J#TT2Krrb 6`IriN!!"!!L8)Ir!I*iMH(ar'hL!(`!!N!!H!!!lr`!%U"m!!,!H!!3lr`!#1rm !!BJI!!#B(J!'1rm!!6Kr!!!iRJ!(L,i!"NJ!"1@!33!8L"i!"Rrr!K5)IJ!'I'! 1F(`!!C48!!JmI!!B%#`!!!&!JJ!)1rm!!ArMqhL!!3")1#%!3(`)!kD$iIrmJm( rq%k!!#"m#!+Q[d(rk*!!!3!)P#(qS$J$!!!l4!!!1f8!!$[J!!!l`!!!2'"QE(` %!hJiBf3M5!!%1B""!"4mI4Yi+"d!!%##!#K)!!2eJ%%!&(ar'hKri!Fe3B)!$(r MqhK)!!#)1'$r3%J!!)"rSqYi5!!%&B""!"5!R3!!Ii3D&%J!!#JiC!!!1)%!1%[ rrYemC"YiJ!%!1(`!d%"!JJ!-1m!!!8J!!!am"1"!3B$rf&I!"Mp"JJ!J1'%!2ML E!!#)S3!q1+8!!8J!!p@!33!85!!!#$[Jrp9rSqYi5!!$fB""!"4rirYiJ!%"D$J K!@"m#!1QZd(rk%k!!#"m#!+Q[f(rl*!!!3!)P#(rB$ZM!!!lC!!!1i8!!%J!!Yf !33!8I(iEH$Kp!!!mJ'eK1+!!!$M"!)3ii3#!1)4MFdJ!!U'!33!8I(mEH(rJ"c9 "JJ!-Iq2lH%J!!+5SB3#%J)%!J$LL!%3i`3!i5!!#TB""!"4mIaYiIq!(08'#!!a rirYi5!!!H$KK!$JiJ!!"5!!#QB""!"4mI4Yi1q!!!(qJ"c3X!2rr3))!%%J!!T@ !33!8I(mEH(rJ"c9!JJ!`Ik2VH%J!!T@!33!81'!!J$LE!!!i[!!!5rrq-Aar'hK rSqYi5!!#lB""!"4r`r0i5!!#DB""!"4rirYiJ!%!U$JK!+"m#!1QZf(rl%k!!#" m#!+QNq(rr*!!!3!)P#(r8(bI)hJi!!!!N!!I!!#S!`!!X!%!6S!$!!+3!!%!D$J $!!D3!!%!5MJ!!!#`!3"81'%!1%J!!XQ!33!8I'!(08'#!!K)!!!-J!%!D*!!(`! !J!%!Z$JK!,"m#!1QJq(rr%k!!#"m#!+Q[b(rj*!!!3!)P#(pB$XM!!!l4!!!1f8 !!$Z'!!!lT`!!1mJ!!$Kj!!!iQJ!!1,X!!$MF!!!ir3!!5!!"*B""!"4mIaYiIq! (0#`!rp9"JJ!-Iq2lH%J!!25c2!!!1(N!!$LD!!!iS3&q5rrq&Aar'hKri!Fe3B) !'$Kq!!!iQJ!!1+%"IN[rr3&mIaYiIq!(08'#!!arirYi5!!!X)J"!AmS!!!k3B) !*$KK!AiiQ3!!5rrlDAar'hJiB3&q1)%!IN[rqmP)!!!J1'%"IML"!(k)S3&q1+8 !!8J!!Bf!33!81q!!!+Km!!!iR`!!1+%!IMM"!$K)!!#CJ%%!&(ar'hKri!Fd,!$ re8##!#KAB!Br3B)!0$KK!$JiJ2rr1,d!!%J!!9f!33!8I(mEH%J!!"Kri!Fe3)) !%$KK!$JiR3!!5rrq6ArMqhL!!3+S1#%#S(`)!kDl)IrN6S!!))'#!#L3!%%!&)! -!!#!6!!%I!N$TNk!"##"JJ!`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!%*!!33! 8J!`!!)"-!!4m#31Q6S!%))'#!#b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!" "!"5!$!!!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!b 3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB) !'*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"## "JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S! %))'#!"b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!dN!""!"5!$!!!J%`!"(`*!kC 1J!3J!$XK4!J`$dp`C@j%Ef0'EfaNCA*cT3!!!AS!N!5!#!#3"4!!%!#3#8J!!!" )!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(r mIrarr(rmIrarr$rm2rirrcrr!$iB!'CJ@CK'"%'%3'4!&&qFF0a[A'TF,e`JAL$ I2rm!2J!!%eS!!!!,!!$rN!B!!Iq3"!!!!!,-N!6rr`!$QCRrN!3!"*Q3"2rr!!9 QN!6-c!!'!!"QCTQC!!IGN!B!#+U3"J!*4*!'!!SLN!B!$`#3"`r`!*!&$j42m!r `!!!2+C42p#r`!!mL+C4%3Nm!$b)L+C4%6`!2)L)L+C42!!mLN!3[6`!2,rrrmNp I!!rrL)Mr6em!$rKQCMp2A`!2m@"J2dpI!!$aCQBr6em!!2&hGcp2Ak!!m4%4rdp IUJ$rrrrjAeqU!*!&rrUJ!!!!YQpNC@3!!!!8Fh"PBfPKE#eYB@0c1N9NDA4[FR0 [C'pN!!!!((0`C@0TB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef0[C(0`!!!!-h0`C@0 TB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef-k6h"PEN4[Bb"6D'9XE#"3E(9R,8PZF`" [C'aL!!!!(R0`C@0TB@`YCAKdEMT2F'9Z4'pM)%aTBR*KFQPPFfpNFh3!!!!,1P0 dBA4TEfjPFRN!!!!%j'!+!!"*6&K$%im!!%lk!!41G8j@rr4)jaJ`*'i!#!a5!!4 QH&922bS!)#mU!!*#*dKZrrj)E[rkF!#S)c!I0J"R5LCU!"Si+`!%98mr+J!J,ca YB@0c3LG)E[ri5'lrp(!!U#-`(cB!CLj96cmZrrJ[+J!#(c`!!8KZrrj)E[rk2`4 1ZJ-d-"mf!'B-0@lrrJ!J*@lrqJ!L08-!(NcI$"K1ALkI6R@%E@&TEJ!!!%j@rr3 [#L4Z!!KJ!P++$")!,@Ei3HS!!82Zrra`"+!Z98mr,J!-,blrr%)R5'lrpNKZrrK `!+JM-"mp32rd)#lrq#4I6Pj1GC4%DA**4%CbEfe6F'9MD@&X8'&dD!!!!%j@!!" )ja!`*Li!##CZ!!`N3f!#8SS-%J!kC[JJ5T($)N0`!"!45-#3!)K5J"D!)%T$k`! "F!!3%k!Z60m-#%jH6R@68'&dD%CbEfe6F'9MD@&X8'&dD!!!6PB!!#m,,`SQEJ! -*'i!##D5@)Sh8J!%9)T5LKG5!!C5LL"+3qX!"h!!%#X!"U)ZF!!3+`!'eF"`!"! V!!C)`)(m!!*)3&0!CJ*5LL"+*&mQAdjH6R@3!%GPG%jPH(4'6%4i4@jdFRN!!!" 19[lk51FI-#`Z!!Ti!(B!@8m[2'CXC#-r,J!)U"mJAbC))!YQ&&92UDm`(cJ!C`3 `"'"D-$cr3'"8@8m[#dkk!XBJ(bi!*&-J5Y((+JKJ'%KZr[S[#NkkrciN5,bZr[T 36fB%GJ&J",A&CH4+!fF@3Hlr!#*Z!!j`!"!Zr`"53%M!SLjJ!RM9,`ZTSc!%60m -q%jH6R@A4f9d8'&dD%CbEfe'6%4i8Q9cEh9bBf8!!%j@rl4)ja`!GJ"96kQ8-"m k!&922bi!##mmE@&MFd)R5'lrrNKZrrT`!+JM-"mf!'F%-!0JE&922blrrLmZrrT "qJ#+5&")E[qdF!'U8M!I0J"R"$!$B%T96dKZrl3I2!!"F!fU8M!I1!"f!!a%rrp Q#&92UDm`(cB!5N0Q(Mm%UCJ[,J!1,bi!#Mmm!)"1Z[l!0J!r"+QD6qm!#Mm&UCJ `!dcI!$K1ANjeRdGPG%C[E'4PFNCbEfe2F'9Z4'pM4QpXC'9bFdC-4(J!%!p2F'9 Z4'pM4QpXC'9bFk919[q851F3-#4Z!!JQEJ!-GJ"#Nce5rkSYDJ!#rm3J5Pb),8M rTN*Zrl""l[q8F!QLB$B!C`3`!f!'*Ulra$!$60m-#%jH6R@44f9d4'PbC@0dEh* j4'Pb583!!%j@rET)jai`1Li!'#`Z!"3NEJ!1*Qi!#RB!98mr"5m'(bi!%Lm+,`Y `!+JM-"mf!!a$rp9R#$p$!RKJ!!$!0)9)E[m!,`Br"8kkrRif!%r[!!TR&%KZr`! ["MmZ!!K1Z[fi0J"2l`!+5N0R#$p$!RKJ!!#+$#i!1[m"Cair"8KZr`"1Z[ab+!" )E[i!5'lr!%kkr-42l`!1B"C"l[m!3qlq!(!!%#lr!&*!5-#J,RJ!98mr%Lm%5'l q!%KZrET`!DT5-"mf!!a$rp9Q(%SZ!"*R*P925'lpZMmmrrm[#h!&UP)`(cB!B"" +3fB-,`Y)E[fk6VVqX&"22d-#H%cI$(K1AL"I6qm!%Nl3N8C*6N428%914%p$4Np -4%95!!!LAb"IS#8ZJ'S#3TG1d3!!#@C+EhNKF'9QCR"hF'-!!!!"YLb"T!#3$3- !!J#3"2q3"!#3"JGJ!!!(B!!!"f!!!!(`!!3%!2q3"!#3"eJ!!!"8!!!!&J!!#9! #!33!rj!%!*!1!@3!!!#!"!3%!*!)!3!!!$crN!3!N!6rN!3!N!F"!!!!$J!!!!% !!!#8!!!!R!!!!9`!!!!"!*!6$J#3#!)!!!S#!!!B!J!!)J)!!#d#!!!k!J!!4`) !!&3#!!"L!J!!E`)!!(m#!!#)!J!!N`)!!+)#!!#Y!!%!N!8$!*!%5Je#!%B!!!" $BA*LEfj-D@)!4f9d5'&ZC'aP8fPkC3"#E'pMDde[GQ8!9A0P8Q9c4QPXC3"(CA3 a8Q9cEh9bBf8!4P00B@YP4P06F'9M!%0XEh0P8Q9c4QPXC3"#E'pMDde[GQ9%BA4 K!%C6F%4TFN0bC@&dC3"5C@aPBA0P8Q9cEh9bBf8!8Q9c4A*bEh)!4QPZC%C[E'4 PFJ"'8h"2F'9Z8Q9c4QPXC3"$GA*5CA0'D@aP!&"#4f9d3f&d5@jQEe0jEQ-!N"G m#!+QNq(rr*2"rrL3!!%!#*3Krl"mIKYiU"i!!#`!!!4!JJ#8U(i!))#H!!)iS!! !1-%!4$MK!%")!!ACJ%%!&(aJ"c9"JJ"FJ(i!'U[M!!5SIJ!J2)"YB6LJ!!!i`3! m11%!1$L%Bh0)!!@TJ%%!&(aJ"c9!JJ!mU'%!2)#H!!)iS!!"1-%!4$MK!%!j(`! !5!!%)@!!!!"mB!Fe3))!&+J"!%5`(J!JJ!%!3*!!(J!LX(i!(S!"!&Ji)3"3I!J $TS2Krrb$`Iri6S!!)(`)!UD6iIrmN!!"!!L8)Iq`I*mMH%J!!!JiB`!"L!-!!#J !!#e!J[rd1'-!!6L"!%!iS!!%5!!''B""!"4rirYiJ)%!3$LJ!!!i`3!m11%!1%J !"2@!33!8J'%!1)!"!&Ji)3"3I!J$TS2Krra1J!!JI!J#TT!!!3!)P#(r`(b')hK mC4Yi5!!!#$LP!!')"3!!+!!!1N##rr4mJbK3L!-!!(aN!&!i!`!"Q!B!!$KP!!! iKJ!"L+B!!%J!"C@!33!8J!%!5$JK!%"m#!1Q6S!!)(`)!UD6iIrmNm(rq*!!!3! )P#(r`(bH)hKmIaYiJ"m!!*!!(J!!1rm!"+JI!!#`(J!%1rm!!M[r!!')(`!!Q"i !"M[r!!%iI`!!1*i!"iLq!!C)!!6PJ%%!&)JH!!Crr`)8L(i!"RaJ$R"m!!'89!! )2(`!'"!X!!!"3))!#$[r!!&rirYiJ!%!5$JK!%"m#!1QJq(rr)2"rrK1J!!JI!J #TVp"rqL3!!%!#*3KrU!i!`!!1d3!!$YP!!!li!!!1m!!!$aJCQam"!0i1'0N)dJ !"$Q!33!8I(dEH#JG!!"!JJ!S5!!$pB""!"4mIaYiIq!(08'#!!arirYi5!!!L$K Jrd")!!#!Ik2VH%J!""@!33!8J*d!!(q%'K4)!!!S1'3!!$L"!$K,rrlGI'3EH)! "!$Km!0"!3))!$$[!!!&)!!!-I!6J3%'!rpKA`!Br3B)!)$KK!$iiQ`!!L+%!2ML P!!&)!!29J%%!&%J!!!Jli2r9Ik2VH%J!!pQ!33!8Iq2lH)!"!@Ji)3&JI!J$TVY "rqK1J!!JI!J#TVpKrqb3!!%!#*3Krf!lS`!!1f3!!$Z&!!")!!,GJ%%!&(aq'hJ iI3!!2)"YB6LJ!!!i`3#%11%!J$L%Bh0)!!+KJ%%!&(ar'hKri!Fe3B)!$(rMqhK )!!#NU'%!K)#"!)!iSJ"%1-%!1%J!!U@!33!8I(mEH(rJ"c9"JJ!-Iq2lH%J!!(J iB3!i1)!!!8J!!TQ!33!8I(dEH$[J!!"rS!Fd,!$rrd##!"")!!+9J%%!&(ar'hK ri!Fe3))!-(qMkhK)!!+9J%%!&$KJ!)!iQ`!!1,`!!%[rrM&mIaYiIk2VH%J!!Zf !33!8Im2cH%J!!QQ!33!8Iq2lH)!"!+Ji)3#JI!J$TVYKrqa1J!!JI!J#TT2Krrb 3!!%!#*3Kre"mRb0i1!!!!*!!(`!!U!-!!,!"!%k!!`!#N!!"!'Ji!`!'N!!"!%S i!!!!X!%!9$KK!$K)!!,*J%%!&(aJ"c9"JJ!)5!!!$)!"!'L3!"m!!)!"!,Ji)3# `I!J$TS2Krra1J!!JI!J#TVmKrq53!!%!#*3Kr@!l)`!!1d3!!$YP!!!lKJ!!1kF !!$[)!!!iH3!!1*S!!$Ll!!!ih!!!12d!!%J!!5@!33!8I(mEH(rJ"c3X!2r93B) !$(rMqhK)!!$dXc`!!$Kj!!!iQJ!!1+%"IN[rrK9mIaYiIq!(08'#!"JiIJ!!1*S !!$LK!Aj,rrd"I(mEH(rJ"c9"JJ!-Iq2lH%J!!,#)!3&r+!!!1N'#!#3iB3&q1*N !!%[rqfPmIaYi1'%"IML"!(j,rr[*5!!!)$KK!AiiJ3"qL+%"IMLP!!&)!!'0J%% !&$[J!!#SI!!!1*m!!$LK!(ii`3!i5!!!QB""!"4mIaYiIq!(0#`!rp9!JJ!S9f! '2d'#!$3iB3!i1)$rrcLp!!")!!&GJ%%!&(ar'hK)!!!BIq!(08##!"!iB3!i1*d !!%[rrNerirYiJ!%#U$JK!U"m#!1QZb(rj%k!!##"JJ!SN!""!"5!$!!!J%`!"(` *!kC1J!3JJB)!-*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"#3!%%!&)!-!!#!6!! %I!N$TNk!"##"JJ!XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!**!!33!8J!`!!)" -!!4m#31Q6S!%))'#!!L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!-N!""!"5!$!! !J%`!"(`*!kC1J!3JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)! -!!#!6!!%I!N$TNk!"##"JJ!JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!&*!!33! 8J!`!!)"-!!4m#31Q6S!%))'#!!53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!FN!" "!"5!$!!!J%`!"(`*!kC1J!3JJB)!0*!!33!8J!`!!)"-!!4m#31Q6S!%)!!l)83 )-!p2F'9Z4'pM4QpXC'9bFk8!!!&b!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3! %!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(r mIr`rr$rq2rmrr`!q'!"QB&QB4J4"K%"N3"4IR($FEea[A#pF,eiJhcrr!$i!!"5 %!!!!#J!!rj!'!!(rN!3!!!!#rrr-c*QC!!2-N!6rr`!%QCRrN!3!"CQ3"2rr!!C QN!6-c!!(!!"QN!3!#%53"J!*)T!'!!m!N!F2m!#3"3q&Ar!2m!!!$cL&Ar8rm!! 2-cL&990I!!mc-cL&99m!$c-c-cL&A`!2-j!%2em!$crrrr0IE`!2re99rep[!!r aGhG2Afm!$r*hGdpIE`!!mAGh6ep[!!$bGhG2Afq3!!$a)5(rAfqC!2rrrrP[EjN !N!ArqC!!!!!!YQpNC@3!!!!8Fh"PBfPKE#eYB@0c1N9NDA4[FR0[C'pN!!!!((0 `C@0TB@`YE@&MFcT&C'PdEh*c1Np`C@j%Ef0[C(0`!!!!-h0`C@0TB@`YE@&MFcT &C'PdEh*c1Np`C@j%Ef-k6h"PEN4[Bb"6D'9XE#"3E(9R,8PZF`"[C'aL!!!!(R0 `C@0TB@`YCAKdEMT2F'9Z4'pM)%aTBR*KFQPPFfpNFh3!!!!,1P0dBA4TEfjPFRN !!!!%j'!+!!"*6&K$%im!!%lk!!41G8j@rr4)jaJ`*'i!#!a5!!4QH&922bS!)#m U!!*#*dKZrrj)E[rkF!#S)c!I0J"R5LCU!"Si+`!%98mr+J!J,caYB@0c3LG)E[r i5'lrp(!!U#-`(cB!CLj96cmZrrJ[+J!#(c`!!8KZrrj)E[rk2`41ZJ-d-"mf!'B -0@lrrJ!J*@lrqJ!L08-!(NcI$"K1ALkI6R@%E@&TEJ!!!%j@rr3[#L4Z!!KJ!P+ +$")!,@Ei3HS!!82Zrra`"+!Z98mr,J!-,blrr%)R5'lrpNKZrrK`!+JM-"mp32r d)#lrq#4I6Pj1GC4%DA**4%CbEfe6F'9MD@&X8'&dD!!!!%j@!!")ja!`*Li!##C Z!!`N3f!#8SS-%J!kC[JJ5T($)N0`!"!45-#3!)K5J"D!)%T$k`!"F!!3%k!Z60m -#%jH6R@68'&dD%CbEfe6F'9MD@&X8'&dD!!!6PB!!#m,,`SQEJ!-*'i!##D5@)S h8J!%9)T5LKG5!!C5LL"+3qX!"h!!%#X!"U)ZF!!3+`!'eF"`!"!V!!C)`)(m!!* )3&0!CJ*5LL"+*&mQAdjH6R@3!%GPG%jPH(4'6%4i4@jdFRN!!!"19[lk51FI-#` Z!!Ti!(B!@8m[2'CXC#-r,J!)U"mJAbC))!YQ&&92UDm`(cJ!C`3`"'"D-$cr3'" 8@8m[#dkk!XBJ(bi!*&-J5Y((+JKJ'%KZr[S[#NkkrciN5,bZr[T36fB%GJ&J",A &CH4+!fF@3Hlr!#*Z!!j`!"!Zr`"53%M!SLjJ!RM9,`ZTSc!%60m-q%jH6R@A4f9 d8'&dD%CbEfe'6%4i8Q9cEh9bBf8!!%j@rl4)ja`!GJ"96kQ8-"mk!&922bi!##m mE@&MFd)R5'lrrNKZrrT`!+JM-"mf!'F%-!0JE&922blrrLmZrrT"qJ#+5&")E[q dF!'U8M!I0J"R"$!$B%T96dKZrl3I2!!"F!fU8M!I1!"f!!a%rrpQ#&92UDm`(cB !5N0Q(Mm%UCJ[,J!1,bi!#Mmm!)"1Z[l!0J!r"+QD6qm!#Mm&UCJ`!dcI!$K1ANj eRdGPG%C[E'4PFNCbEfe2F'9Z4'pM4QpXC'9bFdC-4(J!%!p2F'9Z4'pM4QpXC'9 bFk919[q851F3-#4Z!!JQEJ!-GJ"#Nce5rkSYDJ!#rm3J5Pb),8MrTN*Zrl""l[q 8F!QLB$B!C`3`!f!'*Ulra$!$60m-#%jH6R@44f9d4'PbC@0dEh*j4'Pb583!!%j @rET)jai`1Li!'#`Z!"3NEJ!1*Qi!#RB!98mr"5m'(bi!%Lm+,`Y`!+JM-"mf!!a $rp9R#$p$!RKJ!!$!0)9)E[m!,`Br"8kkrRif!%r[!!TR&%KZr`!["MmZ!!K1Z[f i0J"2l`!+5N0R#$p$!RKJ!!#+$#i!1[m"Cair"8KZr`"1Z[ab+!")E[i!5'lr!%k kr-42l`!1B"C"l[m!3qlq!(!!%#lr!&*!5-#J,RJ!98mr%Lm%5'lq!%KZrET`!DT 5-"mf!!a$rp9Q(%SZ!"*R*P925'lpZMmmrrm[#h!&UP)`(cB!B""+3fB-,`Y)E[f k6VVqX&"22d-#H%cI$(K1AL"I6qm!%Nl3N8C*6N428%914%p$4Np-4%95!!!LAb" IS#8ZJ'S#3TG1d3!!#@C+EhNKF'9QCR"hF'-!!!!"YLb"T!#3$3-!!J#3"2q3"!# 3"JGJ!!!(B!!!"f!!!!(`!!3%!2q3"!#3"eJ!!!"8!!!!&J!!#9!#!33!rj!%!*! 1!@3!!!#!"!3%!*!)!3!!!$crN!3!N!6rN!3!N!F"!!!!$J!!!!%!!!#8!!!!R!! !!9`!!!!"!*!6$J#3#!)!!!S#!!!B!J!!)J)!!#d#!!!k!J!!4`)!!&3#!!"L!J! !E`)!!(m#!!#)!J!!N`)!!+)#!!#Y!!%!N!8$!*!%5Je#!%B!!!"$BA*LEfj-D@) !4f9d5'&ZC'aP8fPkC3"#E'pMDde[GQ8!9A0P8Q9c4QPXC3"(CA3a8Q9cEh9bBf8 !4P00B@YP4P06F'9M!%0XEh0P8Q9c4QPXC3"#E'pMDde[GQ9%BA4K!%C6F%4TFN0 bC@&dC3"5C@aPBA0P8Q9cEh9bBf8!8Q9c4A*bEh)!4QPZC%C[E'4PFJ"'8h"2F'9 Z8Q9c4QPXC3"$GA*5CA0'D@aP!&"#4f9d3f&d5@jQEe0jEQ-!N"Gm#!+QNq(rr*2 "rrL3!!%!#*3Krl"mIKYiU"i!!#`!!!4!JJ#8U(i!))#H!!)iS!!!1-%!4$MK!%" )!!ACJ%%!&(aJ"c9"JJ"FJ(i!'U[M!!5SIJ!J2)"YB6LJ!!!i`3!m11%!1$L%Bh0 )!!@TJ%%!&(aJ"c9!JJ!mU'%!2)#H!!)iS!!"1-%!4$MK!%!j(`!!5!!%)@!!!!" mB!Fe3))!&+J"!%5`(J!JJ!%!3*!!(J!LX(i!(S!"!&Ji)3"3I!J$TS2Krrb$`Ir i6S!!)(`)!UD6iIrmN!!"!!L8)Iq`I*mMH%J!!!JiB`!"L!-!!#J!!#e!J[rd1'- !!6L"!%!iS!!%5!!''B""!"4rirYiJ)%!3$LJ!!!i`3!m11%!1%J!"2@!33!8J'% !1)!"!&Ji)3"3I!J$TS2Krra1J!!JI!J#TT!!!3!)P#(r`(b')hKmC4Yi5!!!#$L P!!')"3!!+!!!1N##rr4mJbK3L!-!!(aN!&!i!`!"Q!B!!$KP!!!iKJ!"L+B!!%J !"C@!33!8J!%!5$JK!%"m#!1Q6S!!)(`)!UD6iIrmNm(rq*!!!3!)P#(r`(bH)hK mIaYiJ"m!!*!!(J!!1rm!"+JI!!#`(J!%1rm!!M[r!!')(`!!Q"i!"M[r!!%iI`! !1*i!"iLq!!C)!!6PJ%%!&)JH!!Crr`)8L(i!"RaJ$R"m!!'89!!)2(`!'"!X!!! "3))!#$[r!!&rirYiJ!%!5$JK!%"m#!1QJq(rr)2"rrK1J!!JI!J#TVp"rqL3!!% !#*3KrU!i!`!!1d3!!$YP!!!li!!!1m!!!$aJCQam"!0i1'0N)dJ!"$Q!33!8I(d EH#JG!!"!JJ!S5!!$pB""!"4mIaYiIq!(08'#!!arirYi5!!!L$KJrd")!!#!Ik2 VH%J!""@!33!8J*d!!(q%'K4)!!!S1'3!!$L"!$K,rrlGI'3EH)!"!$Km!0"!3)) !$$[!!!&)!!!-I!6J3%'!rpKA`!Br3B)!)$KK!$iiQ`!!L+%!2MLP!!&)!!29J%% !&%J!!!Jli2r9Ik2VH%J!!pQ!33!8Iq2lH)!"!@Ji)3&JI!J$TVY"rqK1J!!JI!J #TVpKrqb3!!%!#*3Krf!lS`!!1f3!!$Z&!!")!!,GJ%%!&(aq'hJiI3!!2)"YB6L J!!!i`3#%11%!J$L%Bh0)!!+KJ%%!&(ar'hKri!Fe3B)!$(rMqhK)!!#NU'%!K)# "!)!iSJ"%1-%!1%J!!U@!33!8I(mEH(rJ"c9"JJ!-Iq2lH%J!!(JiB3!i1)!!!8J !!TQ!33!8I(dEH$[J!!"rS!Fd,!$rrd##!"")!!+9J%%!&(ar'hKri!Fe3))!-(q MkhK)!!+9J%%!&$KJ!)!iQ`!!1,`!!%[rrM&mIaYiIk2VH%J!!Zf!33!8Im2cH%J !!QQ!33!8Iq2lH)!"!+Ji)3#JI!J$TVYKrqa1J!!JI!J#TT2Krrb3!!%!#*3Kre" mRb0i1!!!!*!!(`!!U!-!!,!"!%k!!`!#N!!"!'Ji!`!'N!!"!%Si!!!!X!%!9$K K!$K)!!,*J%%!&(aJ"c9"JJ!)5!!!$)!"!'L3!"m!!)!"!,Ji)3#`I!J$TS2Krra 1J!!JI!J#TVmKrq53!!%!#*3Kr@!l)`!!1d3!!$YP!!!lKJ!!1kF!!$[)!!!iH3! !1*S!!$Ll!!!ih!!!12d!!%J!!5@!33!8I(mEH(rJ"c3X!2r93B)!$(rMqhK)!!$ dXc`!!$Kj!!!iQJ!!1+%"IN[rrK9mIaYiIq!(08'#!"JiIJ!!1*S!!$LK!Aj,rrd "I(mEH(rJ"c9"JJ!-Iq2lH%J!!,#)!3&r+!!!1N'#!#3iB3&q1*N!!%[rqfPmIaY i1'%"IML"!(j,rr[*5!!!)$KK!AiiJ3"qL+%"IMLP!!&)!!'0J%%!&$[J!!#SI!! !1*m!!$LK!(ii`3!i5!!!QB""!"4mIaYiIq!(0#`!rp9!JJ!S9f!'2d'#!$3iB3! i1)$rrcLp!!")!!&GJ%%!&(ar'hK)!!!BIq!(08##!"!iB3!i1*d!!%[rrNerirY iJ!%#U$JK!U"m#!1QZb(rj%k!!##"JJ!SN!""!"5!$!!!J%`!"(`*!kC1J!3JJB) !-*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"#3!%%!&)!-!!#!6!!%I!N$TNk!"## "JJ!XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!**!!33!8J!`!!)"-!!4m#31Q6S! %))'#!!L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!-N!""!"5!$!!!J%`!"(`*!kC 1J!3JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N $TNk!"##"JJ!JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!&*!!33!8J!`!!)"-!!4 m#31Q6S!%))'#!!53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!FN!""!"5!$!!!J%` !"(`*!kC1J!3JJB)!0*!!33!8J!`!!)"-!!4m#31Q6S!%)!!l)83)-!p2F'9Z4'p M4QpXC'9bFk8!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N #!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm !r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj! '!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r! !!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`! 2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*! %rcmr93#3"Ire8!!!!,C[C'9N!!!!&(0`C@0TB@`YE@&MFcT&C'PdEh*cEf4[C!! !!"acF'9MD@&X,@eKBh-k4@4TG'pbFcT2F'9Z4'pMEf4cF!!!!$0cF'9MD@&X,@e KBh-k4@4TG'pbFcT2F'9Z4'pM1Np`C@j%Ef-J8fKPE'`J8'aeCbe*ER-!Ef4XBJ! !!"jcF'9MD@&X,@9iG'ik6h"PEN4[Bb"-D@*bBA*TCA0[C(0d!!!!#cT6G'&dD@p ZCA*j!!!!"14J#J!!58aB3a12!!"1qJ!%6R919[rd51FB-#4Z!!J-8J!%CRK96cm U!#![+J!#3LG)E[rq5'lrqR!!U#-`(cB!CdSQDJ!D1#X!"&922bS!)#mmE@&MFd) R5'lrq%KZrr4`!+JM-"mf!'BZ98mr,[ri,bS!!Kmm!!&)E[rq5'lrqMm%6VS$0$! I0J"Q$$9Zrri!)#9ZrrS!)M9$!"j-h``B6PiZRdjeK'eKD@i!!!"19[rd,`SNEJ! )B!*5LJ`5!#eQq%(U!!&$l[rmF!5J,P922bi!$#mZrra#*dKZrrC)E[riF!#S)c! I28$rp#!ZrrJNAdjH6R@84'Pb584'FQpY8h"PBfPKE&"KG'J!!!"19J!!51F3-#B Z!!JQEJ!-*%0J!P++$")!1QEi)%U4`b*$F!!3%8M!N!#)8S!@J#"+3qX!!A!!%"1 J,NcI$!K1ANjeNe"KG'K'FQpY8h"PBfPKE&"KG'J!!%j@!!![#bm+*Qi!$#4Z!!J QNPL+0e)!"&5+8SSA8J!'8SSJ5N2V!!G`!"!V!!DL,R!!%#X!"YA!F!!3+`!'5-# "r!!#5%"63'B#8SSJ5L4I*Pp1ANjeN!"(CA41CAKd4Na%H%9ZG(*j!!!!6PEqqNM R(c!X,J!+H!"f!&P2,caQE'3M2bi!#+JI)&mQ5#!,CK496kQ[-"mi!'F%-!4J@M! mrd"J9&P2,`Y1ZJ,')"mZ!#46)%V4abS)B"K)E[lk,`T1Z[mq*%LmV[lk8%pQ"(B "B!5ea@AN5J0R&N(Zr`!LEJ!1F!!3,[m!8N")`+)ZB!*ie5m,UD-`"%cI$2K1ANj ePdGPG&"KG'K'FQpY4Na%H&*PFfpeFQ0P!!"19[qd51FF!(B!98qTP$!I1J"96cm Z!!J[2'eKBh0#*dKZrrj)E[rkF!#S)c!I0J"R"$!$B'a96cmZrri[,[rk3IS!LNK 35'lrY(!"UP)`(cB!C`3`!f"+98p)E[qd(c`!!A!0UP)`(cJ!GJ!-42rrCJK96kQ [-"mf!%T$CKir"+QB,bi!$LmZ!!Sr2!#!6VVq`$B!2`5TQNr[!!Sr"DQB-!0-h`! i6Pj1GCp(CA4'EfaNCA*'FQpY6h"PEN4[BdC[E'4PFR0'6%4i!"!26h"PEN4[BdC [E'4PFR1P6PErP%MR%$!NEJ!)*Qi!$(B!3T-p8[qU,@S!![r%)%TFL#e)rkC#E[q `3HlrP(!*SQ!f!'F%-!0J"LDZrm3`!dcI$!K1ANjeN8GPG%4TFQ9MG'pbH84TFNP %!!"19[fk51FH-$SZ!"JX,J!8*'i!$LCZ!!Tf!&922`8["KmZ!")[#Lm,F!#S)c! I0J!-3rr9C`Jr3`*iB!!!`$5&5'lr!#m'2`91Z[jq0J"2l`!+Ca4)E[m!,`Br,J! )6VVpZ$B!6qm!#NT$C`Jr3`*iB!!!LJ`Z!$Vr!@FH2`9)E[m!6VVmFLJ!5'lq!%K Zr`"1Z[c%6qm!$Q!@3Hlr!%2ZrJ"`!"!Zr`"53%M!S#ji!&922a)["%KZrJ")E[f kF!'U8M!I0J!-3rr9CKa+,J!5CbC96dKZrESr22rr,`Y`"DT5-"mf!'!35N0Q$#m ,5'lpZNkkrV"36cp$!RK-h`ai6PiJAdr[!"*1d*&'58j%6e"&6N423dC26%4&8J! !)PmJAk!P,S"U!N+A6Y%!!!PQ5Qpj)A"PCQC`Gh"M!!!!!EBXJD3!N!d$!!)!N!6 rN!3!N!B(B!!!"f!!!!GJ!!!"m!!%"!$rN!3!N!GB!!!!9!!!!"B!!!P3!J%%!2q 3"!#3$J&N!!!!J!3%"!#3#!%!!!!mrj!%!*!%rj!%!*!(!3!!!!i!!!!"!!!!P!! !!*`!!!&F!!!!!3#3%`i!N!J#!!!+!J!!'!)!!#)#!!!Y!J!!1J)!!%F#!!"8!J! !BJ)!!'m#!!"r!J!!L!)!!*-#!!#L!J!!V3!"!*!&!`#3"%S03J"'!!!!3f&bBQp Z6'PL!%GPG%KKEQ4XC90THQ8!3Qa[BfY0EhCP!&9cC9*PFdCTE'8!4f9d-9*PFfp eFQ0P!%C66@&VC8C68h"PB`"$E'pcC9*PFdCTE'8!3Qa[BfY0EhCP4'&dB3"'8h" %DA*$FQ9KG'8!8Q9XC@&cC9*PFfpeFQ0P!&*PFd9bFQpb!%CTEQ4'EfaNCA)!4P0 `6h"PEP*PFdCTE'8!3h9b8Q9c4QPXC3"33NGPG%0KG%PZCQp6H@jM!*!AI!J#TT2 Krrb6`IriN!!"!!L8)Iq`I(iEH+JH!!!X!!!%3))!P+Kq!##!RJ!#1+!!!$M"!%3 ii3"!5!!&fB""!"4mB!Fe3B)!A)"q!"UVi`!%U(i!)$b!E@%iS!!!1-%!2$MK!$J iK'0c5!!&UB""!"4mB!Fe3))!2+KK!$b!RJ!#1+!!!6M"!%3ii3"!14m!!%J!"#& J!!!!I'!(08##!"5S!3"%X"i!))!"!%#3!"i!)V"q!"k!!3"B1#%!8(`)!kD$iIr mJm(rq%k!!#"m#!+QNq(rr*!!!3!)P#(rX(bI)hK)!!!)1'-!!BJ$!!!S!!!Y3), rp$KM!!%iJ3"!1+!!"%J!"KQ!33!8Iq2lH)#"!%!iS!!!1-%!2$MK!$K)!!6eJ%% !&)"K!$L!!3"B1#%!8(`)!kD$iIrm6S!!)(`)!UD3!!%!#*3Krm"mKL0iI'8EH%J !!!JiT3!"L!8!!#J!!$T!J[rdI)-S8)J$!!"mC!"31!-!!CJ'!!!iC3!!1)B!!BL Q!!")!!@9J%%!&)!"!%Ji)3"!I!J$TNk!!#"m#!+QNq(rr*2"rrL3!!%!#*3Krm" mRL0iI(mEH)!I!!#3!"i!!$[r!!5S(`!!X"i!"$[r!!)lr`!"L"m!!*JH!!Blr`! "1(m!!$LH!!H)[J!'5!!%jB""!"5)(J!'Irm#&)Kq!!CmB!j`I!!"P&3!#$am!"J 3,!!!!8##!!Jlr`!"Iq2lH)!"!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)(`)!UDr3Ir SN!!"!!L8)IkJ1!-!!$Y%!!!lC3!!1q!!!$[!!!!mB'CXI!3$H$KMC#0)!!3jJ%% !&(ap'hJS(3!!3))!+%J!!r@!33!8I(mEH(rJ"c9"JJ!-Iq2lH%J!!)JiB2p!5!! !J(qMkhK)!!39J%%!&)#G!!"rK"S85!!!+$KN!!!iJ3!i5rrqhAaN'hL!!3!iI!$ 33%##!!`l`!!"5!!!$(`%i%""J2rB9m!'2d'#!#!iB3!q1*X!!)LK!$iiT3!"5!! $eB""!"4)!!!)1q$reAqMkhK)!!2CJ%%!&(rMqhL!!3&S1#%"B(`)!kDl3IrS6S! !)(`)!UDrBIrXN!!"!!L8)IpJ1k-!!$YN!!!lK3!!5!!#hB""!"4mIKYi1(d!!$b !E@%iS!!!1-%!K$MK!)!iK'0c5!!#SB""!"4mIaYiIq!(08'#!!arirYi5!!!T+K K!)5!J3#!1+)!4$M"!$K)!!+PJ%%!&(ar'hKri!Fe3B)!$(rMqhK)!!"i1'%!1$L !!!&)!!+CJ%%!&(ap'hJli!!!Ik!(0#`!rrp!JJ!35!!#PB""!"4mIaYiIq!(08# #!$"rSqYi5!!#PB""!"3iB!#!1*X!!$Lm!!",rriaI(mEH(qMkhK)!!,YJ%%!&(r $mhK)!!*TJ%%!&(rMqhL!!3#S1#%!S(`)!kDlBIrX6S!!)(`)!UD6iIrmN!!"!!L 8)Ip3I*mMH$J!!!#3!"m!!+J$!!#`!3"1J!-!!T!!!3"S1!-!"T!!!3"+1!!!!,! "!&3iB3!i5!!#bB""!"4mB!Fe3B)!#%J!!!b!!3"SN!!I!!#!!3#i1#%!X(`)!kD $iIrm6S!!)(`)!UDr)IrNN!!"!!L8)IeJ1b-!!$Y%!!!lC3!!1iB!!$ZR!!!lb!! !1(N!!$LD!!!iZ`!!10`!!$Mp!!")!!%PJ%%!&(ar'hKri!Fd,!$re8'#!!arirY i5!!!p,-m!!!iH3!!1*S!!$LK!Aj,rri9I(mEH(rJ"c9"JJ!B1(i!!$LD!!!iS3& q5rrp!Aar'hKri!Fe3B)!$(rMqhK)!!#`L!%"IbJ!!$T"JJ!N1'%"IMLC!!",rrY TI(mEH$KK!AiiJ3"q5rrlb8J!!#!iB3&q1)%!ISLK!AiiT3!"5!!"MB""!"3li!! !U(`!!$LI!!!iS3"q1-%!1%J!!*Q!33!8I(mEH(rJ"c3X!2r93))!+&GJ"Mp"JJ! d1'%!1$L!rrmi[3!!5!!"AB""!"4mIaYi5!!!'(rJ"c9!JJ!31'%!1$LG!!",rrj 0Iq2lH)!"!UJi)3+JI!J$TVXKrq41J!!JJB)!+*!!33!8J!`!!)"-!!4m#31Q6S! %))'#!$#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!3N!""!"5!$!!!J%`!"(`*!kC 1J!3JJB)!,*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#53!%%!&)!-!!#!6!!%I!N $TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!$*!!33!8J!`!!)"-!!4 m#31Q6S!%))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5!$!!!J%` !"(`*!kC1J!3JJB)!)*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!# !6!!%I!N$TNk!"##"JJ!%N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!(*!!33!8J!` !!)"-!!4m#31Q6S!%))'#!$53!%%!&)!-!!#!6!!%I!N$TNk!"#!!1b&%#$!26h" PEN4[BdC[E'4PFR1P!!!"@J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J% 5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r` IrJIr"rm!2KJ!CQ"CQ%B%3B4!C%!8Aaa4(&(FGe`eA"jH"&m(r`!q!!"9d!!!!!F !!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%UT!'!!9%N!B!"L+3"J!2!*!($r! !N!828Lr`$r!!!!m98Lrb(r!!$a%98L)K,`!2%4%98L)[!!m4%4%98Lm!$a'3""m [!!mIrrm4,cm!$am!$a%[2`!2(`!2rbmr!!mr$rp2,cm!!2m26dm[2`!!$rrd$bm rB!!!$d!2,cpQ!!!2rrmr2fB!N!ArpQ!!!!H`B!S!!%P-@%-6M3!!6[S!"%je6PE qb%MR(#!NEJ!)1#S!)$9mrrm!)($r*8!!)Ja5!!4Q!!'D$+S!!!J!!""Y!!%S$+S !!!K3!""X!!%FHJ"96cm%,bS!!N)R5'lrNNKZrij`!+JM-"mf!'B%HJ&J(&922`3 [+J!#(bS!"NKZrj*)E[q1F!#S)c!I0J"+3fB!!,C#,[mH3UlrS%(ZraiY52qQ2@l rN[qU,@lrM[r%2Acrrrq`3HlrP(!*SQ!f!'B!!)C96cm%,caPH(4Z3LG)E[mF5'l qb(!!U#-`(cB!CQC#V[qJ3Hlr(Le)rkBpE[mFrkSYE[l)rm4#E[q`3HlrP(!*SQ! f!'B10@lrUJ!J*@lra!!LB$"#V[p+3Hlr(Le)re!pE[mFre3YE[l)rfj"l[mqF!D LB$B!CJ`eE[mF!#!PE[pZ!#*+3fB!!)"+"@Ck3UlqhMeZrj,qiLeZrilqr%(ZrXb L#@"L98mr"#mma'e[C"mU!!C)E[q55'lrMR!!U#-`(cB!CcBe4!!J,c`MM`!+,ca 69&)M,caMC'9f,caYEf4Y,caPH(4Z,caMG(*X,`T1ZJ!X0J"2l`!FB!`eE[q5!#! PE[q1!#)e3`!H60m%1%jH,Tp1GB4YB@PZ!!!!6PErh%MR'#!NEJ!)1#S!)$9mrrm !)($r*8!!)P922`3[,J!-(bS!"NKZrq*)E[rHF!#S)c!I0J"Q!!#b)#i!%,#Z!!a R(P922`3[,J!3(bS!"NKZrpa)E[rNF!#S)c!I0J"J$$eZrq,rh#eZrplrj%T$CRJ pE[rFrrSYE[rNrr`pEJ!Jrr3pEJ!LrrBGDJ!'rrJYEJ!8rqJYEJ!Brq`YEJ!Frr" 96cmZrq)[,[rH3UFr2!!"5(S!8%KZrqK1ZJ*U-"mf!'BQ)#lrr,#Zrq4Q%(E90Ac rr`!JF2mP3!!LB!`eE[rk!#!PE[rm!#)`!dcI""K1ANjeM%ej4QPZC%C[E'4PFJ! !!%j@rT4)ja``+#i!%#4Z!!LAbhB!H[mJ4#!S!#5`NQB!!6)J4#!S!##`UJ!%CJ! "*%)RUCY96b"%2bJ!&L"%,bJ!C#"%,bJ!%Kmm!!'S'M!I1J!I2!!"UCY96kQ[-"m f!'B!!0i-UP088L-!#'Bd3LHTQeP2,ca69&)M2bS!$+JI)&mQ5"mm!!'TQb!,C`! !ZNKZrT3r+J!-2bS!$Nkk!qCJ0&P2,bS!#$mU!!bS(b"I*NK96kQ[-"mf!#!,Ca3 J8a!35)"53%M!)&0$l[k8SLjJ"(E1B'T"l[k8,8MrTMeU!",rULeU!"6ra%*Zrl" "l[q8F!QLB$B!CJieE[qU!")PE[r%!"4J1!a$riKR"Ja$rp9Q)%SU!""R'N(Zrj4 `"U*J0J"Q$M9ZrkS!%L9Zrm3!&'!-0Acrr`!5F2mP3!!8)'i!$"#m!!%-4IrrC`3 r"DQD60m-1%jH)&p2l`!-6Y#069P*9%95394&8&*23`!!6PB!!%MR'#!S,J!)*'i !$%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,Be3`!J*83!0%(U!!4`#D*J08!!X%TU!," Q,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*!!""R%NSU!,*Q$#m+,bS!0%kkrjK36e* $5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZai!,"Q"%*U!,"6DJ#f60m%'%jH6R@95A4 PFQ&dC84TFQ9MG'pbH8aPGQ9X!!"19[mm,`0+VJ!-C`!!MP922bi!'LmZ!"B[,J! 55'lr3%KZrce1ZJ(5-"mf!'CZ$#i!!ImpCQ"96bmZ!")r,J!D5'lr2Nkk!@J`(cB !CNiYEJ!-rd4"l[p%3HJ!F#e)reSpE[mqrej#,[qd3Qlrp%)ZrrBpEJ!3rrK#E[r k,@i!#2rm5'lr4#mZrd"1Z[l#0Llrp&"2B!CfL'!#GXir3`$N*Kp1AL"I6qm!&%l 3N!"*9%95394&4%P548086e*C!!!!6PEr!%MR%$!QEJ!1*'i!##!+CcieEJ!-!"B J#fB+3US!%N*U!"aJ(L",3qlr!(!!%"053%M!SLj"l[m!*8J!%M9mrrm!(#"+SJF f!%+U!"*J!RE12d-"(NcI$!K1AL"I6qm!#Nl3NdG&9&C26&9048P14Np16dj"688 !!%j@rq")ja!`*Qi!$#4Z!!JJ#fF%5K0Q&%)Zrq""l[rJ*8J!%M9mrrm!('!)*8X !%N*U!"`eEJ!8!"BPEJ!3!$!J5R!*SQ!f!%+U!")r3`"#60m-#%jH)&p2l`!16Y# 3!%G&9%0"9%P14Np16dj"688!!!"19[q',`096bmZ!!ir,J!-5'lrKNkkr[``(cB !CJJJEJ!)-+lrR$p$!*!!*Kp1AL"I6qm!#Nl3N!"%494&8Ne*6N9@8N9'6P90!!! !6PErP%MR%$!QEJ!-*'i!#&922bi!'#mZ!"3[,J!35'lrP%kkrb!`(cB!CKS3,[q b!N!!%&E!4!!8J'F'*Ulra'!%*Ulrq$p$!**-h``)6PiJAdr[!"*1d)j(494%59* &3e428PP*4!!!!%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a#%5!ICb)J3#"3-"Jb,J! )CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!!!!cT5Qpj)A"PCQC`Gh" M!!!!!EBXX0S!N!d$!!)!N!6rN!3!N!B,"!!!#`3!!!X%!!!"d!!%"!$rN!3!N!G )!!!!4!!!!!N!!!cJ!J%%!2q3"!#3$J&)!!!!J!3%"!#3#!%!!!!drj!%!*!%rj! %!*!(!3!!!!`!!!!"!!!!M!!!!*3!!!&!!!!!!3#3%``!N!J#!!!+!J!!'J)!!#S #!!!h!J!!4!)!!%m#!!"F!J!!DJ)!!(J#!!#"!J!!M!)!!*d!!3#3"3-!N!4+#d) !4J%!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*$FQ9KG'96H@jM!%G PG$&5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"$E'pcC9*PFdCTE'8 !3Qa[BfY0EhCP4'&dB3"33NK%C@aPG'96H@jM!&*PFd9bFQpb!%CTEQ4'EfaNCA) !8%*(CA4$BA4*EQC[8hPZB`")6h"PEP*PFdCTE'8!N"0m#!+QNq(rr*2"rrL6SIr dNi(rm*!!!3!)P#(qF(am'hLVh!!J1!$rrl!F!#!i!2rrN!!F!#+S(!!!,!!!"%# #!NL!(!!3,!!)!%'!!E5!(!!3,!!)8%#!!DJlS!!!Im2cH)#F!!)iS!!!1-%"F$M K!@a)!!PGJ%%!&(ar'hKri!Fe3))!$$ZJ!!&)!!!NIm2cH)#F!!+)[!!'1-%"F$M K!@a)!!NYJ%%!&(ar'hKri!Fe3))"&$J!!!#B!3$H1!!!!*!!!3%-1!%!hT!!!3% 5U!%"F,!"!4D!!3&XN!!"!6!i!2rrX!%"($KK!3")!!MpJ%%!&(ar'hKri!Fe3)) !c$Kq!!!mJ'9i1+!!!$M"!0`ii3$B1)4dENJ!#,Q!33!8I(mEH(rJ"c9!JJ#J1!! !!*!!!3%-1!%!hT!!!3%5U!%!h,!"!4D!!3$BN!!"!6!i!!!!X!%"($KK!3")!!L 4J%%!&(ar'hKri!Fe3))!'+J"!4D`(!!JJ!%"-*!!(!!L5!!!6$J!!!#3!!%!P$J "!0k3!!%!QUJ"!0b`!3#HJ!%!f*!!!3#i1'%!L%J!#&f!33!8I(mEH(rJ"c9!JJ! 8U!%!h,!F!##!!3#iN!!F!#*ri!Fe3))!Z&HJ"Mp!JJ#`1!!!!*!!!3"+U!%"F,! "!%k!!3&XN!!"!'JiB3!i5!!)*B""!"4)!!#)1(i!!$b!a'f)[!!'1-%"F$MK!@` iK'pN5!!(ZB""!"4mIaYiIq!(08'#!%bch!!J1(`!!$b!Bh3mS'9i2-"YEccJBf3 p!&0815!MMcP!!!SiK(*X1+9dEMM'C'dijf9f13K5)dJ!!%9J!!!!I(mEH%J!!"5 S!3&`X"`!))!"!@b3!"`!)V2m!"k!!3'B1#%"N!"m#!1QJq(rr)2"rrL$SIrdJi( rm%k!!#"m#!+Q[Z(rh*!!!3!)P#(rF$Y$!!!kj!!!1`8!!$YQ!!!lK`!!1kJ!!$[ *!!!lkJ!!UcS!)$J!rrq`'J!J1!$rrj!!'J!L1(N!!$LA!!#)ZJ!'1-%!A$MK!&K )!!E4J%%!&(aJ"c9!JJ$3I"Li3%'#!#3iH3!!1*J!!)Lk!!Bi`3"811%!8%J!"U@ !33!85!!!&+J"!&b`!3"8J!%!@*!!!3"3I'!(08##!*!!U!%!9,!"!%U!!3"3N!! "!%bc`3"%Xq%!4SJD!!DB!3")Nf%!1*1"!$b6S3"!U'%!A)#"!&JiS!!!1-!!!B$ L!$!j!3!i5!!$L@!!!!"mB!Fe3))!2)#"!%b!!3"3I!3!!%##!"`iB2r91!$rrl! D!#!i!2rrN!!D!#*)!!!8U!%!5V!D!##!!3"-N!!D!#+!!3#B1#%!N!"m#!1QZZ( rh%k!!#"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(q3$Z$!!!lT!!!I,mVH)" m!#5!(`!!I!-!3%##!FL!I!!JJ"m!"(`$!%"!JJ'i1'!!!%J!"I@!33!8U(`!&S# F!'5![!!51-!!!8J!"I@!33!8I(iEH$KJ!!&)!!A0J%%!&%J!"I@!33!8I'!(08# #!95!I`!)2!1XV#J!8L0!JJ"81'!!!%J!"D'!33!82'"69+LI!!`iBe)M5!!&eB" "!"4mI"Yi1'!!!8J!"Af!33!8+"`!!%'#!43iB3#NU*m!$+Lr!!j)!!A"J%%!&%J !!&#!I`!)U*m!$%J!"C@!33!8I(`EH%J!"A'!33!8+"`!!%'#!0#!I!!!1)%!T)# m!!#)"3!!I!8(G$LP!!&)!!@4J%%!&%J!!!K)!!#S1!%!T*!!!3"+U"m!%V!"!%k !(`!8N!!"!'Ji!!!!X!%!9$KK!$K)!!5GJ%%!&(aJ"c9!JJ!BU!%!6V!I!"+!!3" SN!!I!"4)!!"JI'!(0#`!riK"JJ!3I'!(0#`!rp9!JJ!iL"m!%#J!!!""JJ!X1'% !1%J!"'Q!33!8I'!(08##!"LS!3"1X"m!%S!"!'L3!"m!&%J!!"3i!2rrX"m!%MJ !rrq3!"m!&$J!!!'B(3!!Im!(0#`!rrp"JJ!3Im2cH%J!"0f!33!8J!%"b$JK!F" m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq `1k-!!$[N!!#J(`#d+!!!!%'#!"5JI`#fS"m!Y(`$!%"!J!#m1m!!!D"r!,Bi!`! "X"m!YV2I!##6[`!d1(m!"%J!!i@!33!8X(m!X+JI!,!X!!!!3))!3$Kr!!3iR`# bJ,m!Z)'I!!")!!4PJ%%!&)JI!#*8!!Eh3B)!()JI!,)S!!!!3))!%)"r!$4rj2Y i5rrr@6[H!!'S(`#`,!!!!%##!"#)(`#b+!!!!%'#riLS(`#`,!$re8'#!"#S(`# `,!$XH%##!!`i!!!!X"m!X+"r!,Bi!rrrX"m!YS!"!&Ji)3"3I!J$TS2Krrb$`Ir iJk(rp%k!!#"m#!+Q[f(rl*!!!3!)P#(qi$YM!!!lK3!!1kB!!$[(!!!lk!!!+"i !!%'#!+3iH`!!1,`!!$M"!$`ii3!i5!!"q@!!!!"mB!Fe3))!L)J"!$JS!!!"3)) !F$Km!!!iQ`!!1+%!1NJ!!C&J!!!!I'!(08##!'#6`3"!1!%!X*!!!3"@U!%!1V! "!&Si!!!!Q!%!X$J!!!#`!3$`1!!!!*J"!2+cS3$d1!!!!,!"!2D6i3$iJ'%!2$L "!%",rrijU'%!m%J!!"!iB2q)5!!!#$KJrmk!!3%S1#%")(`)!kDlBIrX6S!!)(` )!UD6iIrmN!!"!!L8)Il!I,mVH#JI!!""JJ"JX*m!&LJ$!!"!JJ!B1!!!!*!!(`! 51!!!!,!I!"a)!!!S1)%!1)LM!!!iT3!"5!!#BB""!"3i!3!iN!!I!")i!2rrX"m !((rMqhK)!!*eJ%%!&$J!!!#3!"m!%NJ!!!JiB2r1J!%"5$JK!8"m#!1QJq(rr%k !!#"m#!+QNq(rr*!!!3!)P#(rS(cI-hJS"3!!3B)!%)J&!!!S!!!!3))!)$J!!!# B!3!i1!%!1*!!(`!51!$rrl!I!"a)!!!3N!#r!")i!!!!X"m!(,"r!"D3!*m!-(r MqhK)!!$pJ%%!&$J!!!#3!"m!%S!"!'Ji)3"JI!J$TS2Krra1J!!JI!J#TT2Krrb 3!!%!#*3Krd"m[bYi1+%!1%[rrYPmB!Fe3))!$+J"!%k`(`!!J!%!b$JK!-"m#!1 QJq(rr%k!!#"m#!+QNq(rr*2"rrL3!!%!#*3Kre!laJ!!1qF!!$M"!$K,rrmKI'! (08##!%#)!3"@9!3'pMJ!!!"mK!"3-!6rrh`!)4#B(`!!L"m!!#J!!!""JJ!3J!% !D*!!(J!!5!!!$)!"!*b3!"i!!)!"!,Ji)3#`I!J$TS2Krrb$`Iri6S!!))'#!#5 3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!SN!""!"5!$!!!J%`!"(`*!kC1J!3JJB) !"*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"b3!%%!&)!-!!#!6!!%I!N$TNk!"## "JJ!3N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!,*!!33!8J!`!!)"-!!4m#31Q6S! %))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC 1J!3JJB)!$*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N $TNk!"##"JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*!!33!8J!`!!)"-!!4 m#31Q6S!%))!-!!#3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!dc)6`+)J2X"!!!!9) !N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*! &%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%' %3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6 rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44 #)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm !$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!! (V'!+!!"*6&K$%j-!!%lk!!41G8j@rXK)ja`J*'i!#$JU!#!eI2rr!#"`rb9!!#) -8J!%CJ!"PJbU!!!)!!!3E3!"*JbU!!!)8!!3E!!"'RS!98mr"#mU!!*#*dKZrj* )E[q1F!#S)c!I0J"Q"(S"B"a96cm%,bS!!KmU!!C)E[q55'lrMR!!U#-`(cB!5N0 Q!!#f3Llr(N+Zrk""l[mH,8MrTMeZrj,rULeZrilra$emrrrrX%(Zrj4`#D*J0J" Q!!#'98mr"#mmCAKdEN)R5'lr(%KZrXK`!+JM-"mf!'CQ3UlrS%(ZraiY52qQ2@l r(2qU,@lqb2r%3QlrX%(Zrj4`#D*J0J"Q$M9ZrkS!)#9Zrm3!)Q!`3Ulr5N(Zrai Y52p32@lr(2p8,@lqb2pZ3Hlr2R!'SQ!f!'B-0@lr(!!J*@lrEJ!L5N0QI%S&CRK #V[lH2@lrN[lL,@lrM[lm3Hlqc+)*B'"96cm%,bS!!KmU!!C)E[q55'lrMR!!U#- `(cB!CcBe4!!J,ccJ!3!!,ca69&)J,ca38N95,cafCh*N,caPH(4Z,caPH(4Z,`T 1ZJ!X0J"2l`!FB!`eE[q5!#!PE[q1!#)e3`!H60m%1%jH,Tp1GB4YB@PZ!!!!6PE rh%MR'#!NEJ!)1#S!)$9mrrm!)($r*8!!)P922`3[,J!-(bS!"NKZrq*)E[rHF!# S)c!I0J"Q!!#b)#i!%,#Z!!aR(P922`3[,J!3(bS!"NKZrpa)E[rNF!#S)c!I0J" J$$eZrq,rh#eZrplrj%T$CRJpE[rFrrSYE[rNrr`pEJ!Jrr3pEJ!LrrBGDJ!'rrJ YEJ!8rqJYEJ!Brq`YEJ!Frr"96cmZrq)[,[rH3UFr2!!"5(S!8%KZrqK1ZJ*U-"m f!'BQ)#lrr,#Zrq4Q%(E90Acrr`!JF2mP3!!LB!`eE[rk!#!PE[rm!#)`!dcI""K 1ANjeM%ej4QPZC%C[E'4PFJ!!!%j@rT4)ja``+#i!%#4Z!!LAbhB!H[mJ4#!S!#5 `NQB!!6)J4#!S!##`UJ!%CJ!"*%)RUCY96b"%2bJ!&L"%,bJ!C#"%,bJ!%Kmm!!' S'M!I1J!I2!!"UCY96kQ[-"mf!'B!!0i-UP088L-!#'Bd3LHTQeP2,ca69&)M2bS !$+JI)&mQ5"mm!!'TQb!,C`!!ZNKZrT3r+J!-2bS!$Nkk!qCJ0&P2,bS!#$mU!!b S(b"I*NK96kQ[-"mf!#!,Ca3J8a!35)"53%M!)&0$l[k8SLjJ"(E1B'T"l[k8,8M rTMeU!",rULeU!"6ra%*Zrl""l[q8F!QLB$B!CJieE[qU!")PE[r%!"4J1!a$riK R"Ja$rp9Q)%SU!""R'N(Zrj4`"U*J0J"Q$M9ZrkS!%L9Zrm3!&'!-0Acrr`!5F2m P3!!8)'i!$"#m!!%-4IrrC`3r"DQD60m-1%jH)&p2l`!-6Y#069P*9%95394&8&* 23`!!6PB!!%MR'#!S,J!)*'i!$%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,Be3`!J*83 !0%(U!!4`#D*J08!!X%TU!,"Q,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J*!!""R%NS U!,*Q$#m+,bS!0%kkrjK36e*$5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZai!,"Q"%* U!,"6DJ#f60m%'%jH6R@95A4PFQ&dC84TFQ9MG'pbH8aPGQ9X!!"19[mm,`0+VJ! -C`!!MP922bi!'LmZ!"B[,J!55'lr3%KZrce1ZJ(5-"mf!'CZ$#i!!ImpCQ"96bm Z!")r,J!D5'lr2Nkk!@J`(cB!CNiYEJ!-rd4"l[p%3HJ!F#e)reSpE[mqrej#,[q d3Qlrp%)ZrrBpEJ!3rrK#E[rk,@i!#2rm5'lr4#mZrd"1Z[l#0Llrp&"2B!CfL'! #GXir3`$N*Kp1AL"I6qm!&%l3N!"*9%95394&4%P548086e*C!!!!6PEr!%MR%$! QEJ!1*'i!##!+CcieEJ!-!"BJ#fB+3US!%N*U!"aJ(L",3qlr!(!!%"053%M!SLj "l[m!*8J!%M9mrrm!(#"+SJFf!%+U!"*J!RE12d-"(NcI$!K1AL"I6qm!#Nl3NdG &9&C26&9048P14Np16dj"688!!%j@rq")ja!`*Qi!$#4Z!!JJ#fF%5K0Q&%)Zrq" "l[rJ*8J!%M9mrrm!('!)*8X!%N*U!"`eEJ!8!"BPEJ!3!$!J5R!*SQ!f!%+U!") r3`"#60m-#%jH)&p2l`!16Y#3!%G&9%0"9%P14Np16dj"688!!!"19[q',`096bm Z!!ir,J!-5'lrKNkkr[``(cB!CJJJEJ!)-+lrR$p$!*!!*Kp1AL"I6qm!#Nl3N!" %494&8Ne*6N9@8N9'6P90!!!!6PErP%MR%$!QEJ!-*'i!#&922bi!'#mZ!"3[,J! 35'lrP%kkrb!`(cB!CKS3,[qb!N!!%&E!4!!8J'F'*Ulra'!%*Ulrq$p$!**-h`` )6PiJAdr[!"*1d)j(494%59*&3e428PP*4!!!!%j@!!"C6bmm8e45)cmZ!!UTS#* Z!!a#%5!ICb)J3#"3-"Jb,J!)CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe# 26Y!!!!cC5Qpj)A"PCQC`Gh"M!!!!!EBXXJX!N!d$!!)!N!6rN!3!N!B,!!!!#`! !!!X!!!!"d!!%"!$rN!3!N!G)!!!!4!!!!!N!!!c3!J%%!2q3"!#3$J&)!!!!J!3 %"!#3#!%!!!!drj!%!*!%rj!%!*!(!3!!!!`!!!!"!!!!M!!!!*3!!!&!!!!!!3# 3%``!N!J#!!!+!J!!'J)!!#S#!!!h!J!!4!)!!%m#!!"F!J!!DJ)!!(J#!!#"!J! !M!)!!*d!!3#3"3-!N!4+#d)!4J%!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ- !8%*%DA*$FQ9KG'96H@jM!%GPG$&5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9 c6'pKC!"$E'pcC9*PFdCTE'8!3Qa[BfY0EhCP4'&dB3"33NK%C@aPG'96H@jM!&* PFd9bFQpb!%CTEQ4'EfaNCA)!8%*(CA4$BA4*EQC[8hPZB`")6h"PEP*PFdCTE'8 !N"0m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(qF(am'hLVh!!J1!$rrl!F!#! i!2rrN!!F!#+S(!!!,!!!"%##!N5!(!!3,!!)!%'!!E5!(!!3,!!)8%#!!DJlS!! !Im2cH)#F!!)iS!!!1-%"F$MK!@a)!!PCJ%%!&(ar'hKri!Fe3))!$$ZJ!!&)!!! NIm2cH)#F!!+)[!!'1-%"F$MK!@a)!!NTJ%%!&(ar'hKri!Fe3))"&$J!!!#B!3$ H1!!!!*!!!3%-1!%!hT!!!3%5U!%"F,!"!4D!!3&XN!!"!6!i!2rrX!%"($KK!3" )!!MjJ%%!&(ar'hKri!Fe3))!c$Kq!!!mJ'9i1+!!!$M"!0`ii3$B1)4dENJ!#,@ !33!8I(mEH(rJ"c9!JJ#J1!!!!*!!!3%-1!%!hT!!!3%5U!%!h,!"!4D!!3$BN!! "!6!i!!!!X!%"($KK!3")!!L0J%%!&(ar'hKri!Fe3))!'+J"!4D`(!!JJ!%"-*! !(!!L5!!!6$J!!!#3!!%!P$J"!0k3!!%!QUJ"!0b`!3#HJ!%!f*!!!3#i1'%!L%J !#&Q!33!8I(mEH(rJ"c9!JJ!8U!%!h,!F!##!!3#iN!!F!#*ri!Fe3))!Y&HJ"Mp !JJ#X1!!!!*!!!3"+U!%"F,!"!%k!!3&XN!!"!'JiB3!i5!!))B""!"4)!!#%Im2 cH)#F!!+)[!!'1-%"F$MK!@a)!!HjJ%%!&(ar'hKri!Fe3B)!6,2F!#!iI!!!2)" PH$bJCAJm`(CR21"38Md!8e3j)1!"18!!!$L%G'iiTA4Z1-CbC$MR49)j#&)J5!! !4@!!!!"mIaYi5!!!&+J"!A#`(!!JJ!%"E*!!(!!LXr`!(S!"!CJi)3'3!(`)!kD $iIrmJm(rq)1Krr5$JIr`6S!!)(`)!UDqiIrFN!!"!!L8)Ip`1d-!!$VN!!!l"3! !1fB!!$Z(!!!lU!!!1mN!!$[U!!#V1J!J1!$rrl!D!#!i!2rrN!!D!#)iH3!!1*F !!)Lk!!Bi`3"F11%!@%J!"Y'!33!8I'!(08##!0"m',K!3B)!*$Kj!!!iQ!!!L,S !"MM"!&3ii3"35!!'TB""!"4)!!!8U!%!A,!"!&5!!3"BN!!"!&"mB!Fe3))!N!# S!3"8X!%!5S!"!!!%!6,2"!%5ci3"'L"S!"TJ"!%L6B3!iNi%!2*1K!%#SB3" FJ)%!@$LJ!!!i`!!"J1)!-$N"!$K)!!1*B!!!!(aJ"c9!JJ!mJ)%!6)!"!&"m"!! !3))!($KJrp8i!2rrX"S!)$J!rrq3!"S!)NJ!!"5S!3"+X"S!))!"!%b3!"S!)S! "!*Ji)3#3!(`)!kDkiIrF6S!!)(`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Ij !1i-!!$ZN!!"m[bYiJ(`!*)!I!!"m!`"!3))"b)"m!##!(`!%I!-!3%##!EJiB!! !5!!&pB""!"5SI!!@J*`!C)#m!")i`!!"5!!&pB""!"4mIKYi1'!!!8J!"Ff!33! 85!!&pB""!"4mB!Fe3))"9)"r!!Jm!kbX+!"5)d##!&3iB!!!5!!&SB""!"3mB&0 8U*m!$$KM8L0)!!A9J%%!&(am'hJiB!!"5!!&IB""!"3S(!!!3B)"&$KK!+5SR`! -U,m!$NJ!"F'!33!85!!!8)"r!!LSR`!-5!!&PB""!"4mI"Yi5!!&FB""!"3S(!! !3B)!d)"m!!!iJ3#NJ,`!!)J&!!"m"3Gd1+8!!8J!"C'!33!85!!!#%J!!+Ji!3# NN!!"!%US(`!5X!%!6S!I!"53!!%!D$J!!!#`!3"81'%!1%J!"*f!33!8I'!(08# #!"LS!3"1X"m!%S!"!'L3!"m!&%J!!'"mB!Fd,!$rL%'#!""mB!Fd,!$re8##!$L )(`!3+!!!!%'#!#`iB3!i5!!%DB""!"4mB!Fe3))!'+J"!%k`(`!5J!%!D*!!(`! 85!!!&$J!rrq`(`!51!$rrj!!(`!81!!!!CJG!!"r`!Fd,!$rrd'#!""r`r0i5!! %hB""!"5!!3()1#%"`(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)(`)!UD6iIrmNm( rq*1Krr53!!%!#*3Krl!lS`!!1q3!!+!I!,3S!!!!3B)!&+"r!,DJ(`#dI!-!3%# !!,`l`!!"S(m!YMJ$!!'`(`#fXpm!)*1r!$3iI`!%5!!$KB""!"5`I`#`U"m!X#` !!!"!JJ"!1(m!"$LI!,+![`#iJCm!!%J!"'@!33!8L"m!)P3!"[G"JJ!FL"m!XLJ !!!"!JJ!3J(m!0(rNqhK,rrpC1pi!!DJI!,!X!!!!3))!%)JI!,)S!!!!3B,rL+J I!,!X!2r93B)!%+JI!,!X!1ai3))!$$J!!!#`(`#`S(m!YMJ$rrq`(`#fJ!%!@$J K!&"m#!1QJq(rr)2"rrL$SIrd6S!!)(`)!UDrBIrXN!!"!!L8)IlJ1f-!!$Z&!!! lTJ!!1mF!!$[S!!!S(J!!3B)!T$Kl!!!i[!!!1-%!2$MK!$K)!!(jB!!!!(aJ"c9 !JJ#)L!%!1#J!!!&!JJ"`1(`!!$LE!!!iS3!k5!!"N@!!!!"mB!Fe3))!B*2"!%! i!3#`N!!"!&DS!3!kX!%!@MJ!!!#B!3#`1!!!!,!"!2!i!!!!Q!%!mV1K!23i!!! !X!%!pT2K!2L!B3!m1)%!3%[rrMQSB3$`5!!!%$KJriK)!!!)1'$rcS!"!5Ji)3% JI!J$TVYKrqa1J!!JI!J#TT2Krrb3!!%!#*3KrX"m[bYi+"m!!%'#!'#`R`!@+!- !!%##!"Ji!!!!N!!I!")i!!!!X"m!(%J!!#JiJ3!iL+-!!$LP!!&)!!*KJ%%!&$J "!$L3!"m!%MJ!rrq`(`!FIq2lH%J!!R@!33!81!!!!*!!(`!55!!!#$KJrmk!!3& )1#%"3(`)!kD$iIrm6S!!)(`)!UD6iIrmN!!"!!L8)IqJI0mcH#J&!!""JJ!3L!8 !!#J!!!"!JJ!J1!!!!*J"!$Ji!3!iN!!I!")i!2rrX"m!(%J!!"#3!,m!%MJ!!!# `(`!FX(m!&T!!R`!`Iq2lH%J!!2f!33!81!!!!*!!(`!5J!%!D$JK!'"m#!1QJq( rr%k!!#"m#!+QNq(rr*!!!3!)P#(r3(br+hJiS3!i5rrqfAaJ"c9!JJ!-U!%!6V! I!!#!!3$)1#%!`(`)!kD$iIrm6S!!)(`)!UD6iIrmNm(rq*!!!3!)P#(r8$['!!! lj`!!1-%!1%[rrb&mB!Fe3))!3)J"!&C8"!Ef1!!!!(b%!&!`"2rrI!!K%*JI!!# )(`!!+!!!!%'#!"#!!3"SN!!H!!")!!!-J!%!R*!!(J!!J!%!Z$JK!,"m#!1QJq( rr)2"rrK1J!!JJB)!**!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#L3!%%!&)!-!!# !6!!%I!N$TNk!"##"JJ!%N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!(*!!33!8J!` !!)"-!!4m#31Q6S!%))'#!"#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!XN!""!"5 !$!!!J%`!"(`*!kC1J!3JJB)!)*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!L3!%% !&)!-!!#!6!!%I!N$TNk!"##"JJ!-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!'*! !33!8J!`!!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ! !N!""!"5!$!!!J%`!"(`*!kC1J!3JJ!`!!*!!33!8I!N$TS"-!!41J!3J6S!!)!! c)6`+)J2S"!!!!@S!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3) !N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm(riIrar r(riB!'CJ@CK'"%'%3'4!&&qF89a4h(*F09`5AK9I%(mIrJ!!4*F!!!!*!!$rN!B !!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"$-c!!#CQ3!&lT!'!!DlN!B!"d53"J!))T! '!!m!N!F2m!#3"3pb,r!2m!!!$aGb,r)Im!!2%4Gb)L%[!!m4%4Gb)Lm!$a%4%4G b,`!2%C!%(bm!$arrrr%I2`!2(e9IAamr!!mI99rr(cm!$cp94@mI2`!!re48Eam r!!!28N9[(cq!!!p8*'m[2iJ!$e99EcmrL!!2rj!&J!!!!*!!B!S!!%P-@%-6M!! !6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32rk$&)!"'C198mr+J!J,bS!!Km U!!C)E[rq5'lrqR!!U#-`(cB!Caj96cmU!#![2'eKBh0#*dKZrrj)E[rkF!#S)c! I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9QCR" hF'-!!!!"YLbi&J#3$3-!!J#3"2q3"!#3"l3!!!#d!!!!Y!!!!4!!"!3!rj!%!*! (%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj! %!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*! %5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaY i1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&bSI`!JJ*m!!SLr!!Bi`3!m11% !1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"YB6LJ!!!i`3!m11%!1$L%Bh0)!!!aJ%% !&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*! !33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`!!!'+!*!%J!J!N!83!"!!N!P)!!!!5!# 3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(r mIrarr(rmIrarr$rq(rm2I`Bq'!"QB&QB4J4"K%"N4G41[&8FDla1r&YF)0i4R`Y r"Mi!!#2a!!!!$3!!rj!'!!(rN!6-c!!#rj!%!!!!!rrrc-bCQ3!%rrpQCXc-!!A -N!6rr`!'c-bCQ@CQ!!HCN!6rr`!)CT!%c-`!#6-c!!#CQ3!+lT!'!!Y%N!B!$#+ 3"J!2!*!($r!!N!82Yhr`$r!!!!pEYhrhAr!!$e9EYhGeI`!2999EYhGr!!p9999 EYhm!$e9IArPrI`!29IrdNCq2!!pIVbm32im!$rVbrj1IM`!2U[rfQCq2!!q[q[p [Iim!!2UUU[prMm!!$kU[Yhq2c!!!q[J2[ir-!!!2J!$rrm!!!!#3!'!+!!"*6&K $%j3!!%lk!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q6P922bS!)#m U!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'FH98mr+J!J,cacG(*d3LG)E[rq5'lrqR! !U#-`(cB!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3(45Qpj)A" PCQC`Gh"M!!!!!EBXZ!J!N!d$!!)!N!6rN!3!N!Hd!!!!Y!!!!,3!!!%3!!3%!2q 3"!#3"a!!!!!-!!!!!3!!!G!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!# 3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*! &!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq `I(mEH$J!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"FU(m!))#I!!+)[`!'1-% !2$MK!$K)!!"CJ%%!&(aJ"c9"JJ!NU(m!)$b!Fh3iS!!!1-%!2$MK!$JiK(*d5!! !-B""!"5S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))' #!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!`-!!!"BJ#3")!)!*!&%!!3!*!*5!! !!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(r mIrarr(rmIrarr(rm2r`IrJrr"hm!2KJ!CQ"CQ%B%3B4!C%!83"a((%MFFP`bA"* H#0m(I`!q!!!J"`!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%hC!'!!@ )N!B!"N53"J!()T!'!!m!N!F2m!#3"3pL,r!2m!!!$aCL,r)Im!!2%4CL)L%[!!m 4%4CL)Lm!$a%4%4CL,`!2%C!%(bm!$a'3"#mr!!m4&984,cm!$a&84&%[2`!2084 845mr!!$e4&4&,cm!!!9%9%8[2h!!!&4%8bmrG`!!"9822cph!*!&rrG`!!!!N!" J#J!!58aB3a19!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CNj 96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R(P922bS!)#mmFfKNCN)R5'l rrNKZrrT`!+JM-"mf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8 "d8T[H5&`C@CQF(G`B`!!!!'f,,Id!*!0!`!#!*!%rj!%!*!(Y!!!!,3!!!#d!!! "%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(3!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3! !!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!) !!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*! !!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!A+Kr!##!R`! #L,m!"MM"!$`ii3!i5!!!@B""!"4mB!Fe3B)!*+Kr!#!mJ(0S1+!!!$M"!$`ii3! i1)4NCNJ!!$'!33!8U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq( rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!-$!!!!@)!N!5!#!#3"4! !%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!" qB(riIrarr(rmIrarr(rmIrarr$rm(ri2r`Gr!$iB!'CJ@CK'"%'%3'4!&%!F4aa )h(*F-P`5AJMI"hm!2J!!)!F!!!!)!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-` !"0f3"J!&L*!'!!C%N!B!"b+3"J!2!*!($r!!N!82BLr`$r!!!!m@BLrb(r!!$a% @BL)K,`!2%4%@BL)[!!m4%4%@BLm!$a'3""m[!!m4N!3[2`!2%499%5mr!!m49%4 4,cm!$c9%9%8[2`!!p84845mr!!!&4&4&,cp`!!"84&-[2hF!!!99$cmrG`#3"Ir hF!!!!14J#J!!58aB3a1,!!"1qJ!%6R919[rk51FB)#4Z!!JpI2rrrrj`rbe!rrS Q+J!#$&)!"'B!!*j96cmU!#![!amU!!C)E[rq5'lrqR!!U#-`(cJ!Cfi-Jm4fEf0 Q)LBmCRC[Be922bS!)#m$(c`!!8KZrrj)E[rkF!#S)c!I1!"+4'G!$)0QE'jdCJJ Q2(4PEA"J"LBmCAKdEP922bS!)#mmCAKdEJb$G'9YF&I!4!")J"m!5'lrrNKZrrT `!+JM-"mi!$9Zrri!)#9ZrrS!)M9%!"j-h`3B6PiZRdjeK'eKD@i!N!8#38T[H5& `C@CQF(G`B`!!!!'fAT`-!*!0!`!#!*!%rj!%!*!'!5J!!!%S!!!"+!!!!4!!"!3 !rj!%!*!(%!!!!!`!!!!"!!!#3!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj! %!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!% !N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb6`IriN!! "!!L8)Iq`I(iEH$J!rrq`!3!m1!$rrj!!!3!iJri!!UJH!!!X!!!%3))!a+Kq!#" rj2YiL,i!"MM"!$`ii3!i5!!!aB""!"4mB!Fe3B)!M$`I1iSS!'pM3))!+$rJCRB lrfpMU(i!)$LI!!!iS!!"1-%!2$MK!$K)!!#0J%%!&(aJ"c9"JJ"82"qCP#J!ER4 !JJ!32q"dC6[rEA")!!!-2q"PH$[rG'kSIJ!J2)"PH$bJG'8iT@e`I"mS8(`!!$4 8"Giq1-%!2$MK!$JiK(4Z5!!!0B""!"5S!3!mX"i!))!"!$L3!"i!)V"q!"k!!3" B1#%!8(`)!kD$iIrmJm(rq%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*! )$!!!!@S!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"! !N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm(riIrarr$riB!'C J@CK'"%'%3'4!&&rF8&aIh("F-&`3AK"I(rm2rJ!!*%`!!!!*!!$rN!B!!Fb3"2r r!!+CN!6rr`!$CT!%c-`!"!!!QCRrr`!&hC!'!!D)N!B!"d53"J!))T!'!!m!N!F 2m!#3"3pb,r!2m!!!$aGb,r)Im!!2%4Gb)L%[!!m4%4Gb)Lm!$a%4%4Gb,`!2%C! %(bm!$arrrrmI2`!2(e99Abmr!!mI4%42,cm!$hpQCQm[2`!!re99Abmr!!!2CQC [,cq!!!p999m[2iJ!$rrrrhmrL!!!-c-crrL!!!!!N!"J#J!!58aB3a1-!!"1qJ! %6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CNj96cmU!#![+J!#(bS!"NK Zrrj)E[rkF!#S)c!I0J"R(P922bS!)#mmE@&MFd)R5'lrrNKZrrT`!+JM-"mf!$9 Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8"d8T[H5&`C@CQF(G`B`! !!!'f,,J@!*!0!`!#!*!%rj!%!*!(Y!!!!,3!!!#d!!!"%!!%"!$rN!3!N!F3!!! !$!!!!!%!!!(3!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F "!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B !3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*!!!3!)P#(rX(ar'hJi!2r rX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!A+Kr!##!R`!#L,m!"MM"!$`ii3!i5!! !@B""!"4mB!Fe3B)!*+Kr!#!mJ'eK1+!!!$M"!$`ii3!i1)4MFdJ!!$'!33!8U!% !2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5 !$!!!J%`!"(`*!kC1J!3J!*!-$!!!!A)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!! "!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2r irrMrq(riIrarrRrq(r``!-c!Xc#-#)-)J-Mrk-!ShUM3+01S4'K6V%!ZIqiIr!! !0Yi!!!!+!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0f3"J!&Zj!'!!DUN!B !"hH3"J!)4*!'!!NLN!B!$`#3"rm!N!Ei)[m!r`!!!2'))[mKr`!!m4'))L)5m!$ a%4'))L,`!2%4%4'))[!!rj!&m[!!rd53"22`!2p2riGPmr!!rdp%4%6cm!$r5%H Ipr2`!!p(5842mr!!$dC(rrIcq3!2484%422jN!!2rj!%mrQ3!!!$-c-rrjN!N!5 !B!S!!%P-@%-6PJ!!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32rk$&)!"'B q98mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!C`j`!Le!rrSpDJ!)rrjf!$9 Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8"`8T[H5&`C@CQF(G`B`! !!!'f,,IQ!*!0!`!#!*!%rj!%!*!(U!!!!+J!!!#S!!!"%!!%"!$rN!3!N!F3!!! !$!!!!!%!!!(!!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F "!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B !3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*!!!3!)P#(rX(ar'hJi!2r rX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!8+Kr!##!R`!#L,m!"MM"!$`ii3!i5!! !6B""!"4mB!Fe3B)!'$J!!!+3!!%!1+JI!!L`!3!m1'!!!+J"!$b`(`!JJ!%!1*! !(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31 Q6S!%)!#3#!`!!!)b!*!%J"!!N!83!"!!N!P)!!!!5!#3"3J!!3!)!*!'!C)!N!N #!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrMrq2rmrrj rrKjm-!$-`,-`M!L$#*!!b+fSaZMmD*ESMqL'D)CXaQjhlKjm!!!p"J!!!")!!2q 3"J!+rrr-c$-c!#6-c2q3"!!Uc*!%rrm!,mb3"!!!!&5CN!6rr`"CQC!%!!!!HQC QQC!%!(pQN!6-c!#$CT!%!!!!UM13"*QC!+dcN!3!!!$1!!!c-jQC!0!!!$13"!$ 9!*!%CQB!mJ#3"%4%!2AZN!B!r5+3"J$r!*!)UUS!N!bUUP48UUS!!+UU!*!'e5T rUP48UUVe+UUU!*!%e5S!9(qU9*!%p969!!!!e5SU+J"8IkT89&4re3!!!2mU+S0 8+J"8IkT8Ip8!!!$r+S-+VAp8cXj8URr9!!!!ri-+,bqYcJ$bcUTre3!!!2qUUPQ UcJ!!!2+UIp8!!!$99(qU9+V1!2,bURr9!!!!e5T8IkTrc[,bd+Tre3!!!08U+LT 8UY8NHY#UIp8!!!$9+LSU9+V9*(V3URr9r3!!eDT8+P5Ue54kd+TreIhp!!$9URp 8UYA3d0#UIpApr3#3"0@UUY9rIrr9eIhp!*!&J'!+!!"*6&K$%jB!!%lk!!41G8j @rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNK ZrrT`!+JM-"mf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdj H,Tp1GB4YB@PZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!# 3"kJ!!!#S!!!!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q %!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!" m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9 b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!! !"%##!&#SI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!! "!$LS(`!)X!%!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD $iIrm6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"HJ#3")!)!*! &%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3 `!2c!rr$rq2rirrMrq2rirrMrq2riIrJrr"rq$[i%I$!!c-#c-)`)J`L!b)@SMUL 9U+YScQKED#$X%5i+VJ4m!!!lY!!!!!X!!2q3"J!"rj!%!!!!![rrc-bCQ3!$rrp QCXc-!!6-N!6rr`!&c-bCQ@CQ!!DCN!6rr`!(CT!%c-`!#1k3"J!*4*!'!!SLN!B !$`#3"rm!N!EjC[m!r`!!!25CC[pNr`!!p%5CCQC'm!$d4%5CCQE`!24%4%5CC[! !p%426r6fm!$d42rcp[I`!242Marfpr!!p2Marerhm!$rL2re,rI`!!q2q2pIpr! !!2L)L2rhqJ!!$iL2GrIkS!!!q26jprUJ!!!2!!rrqJ#3")"J#J!!58aB3a1@!!" 1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CMj96cmU!#![+J!#(bS !"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB!0@lrrJ!J*@lrqJ!L08- !(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"M!!!!!EBXYqB!N!d$!!) !N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!F!#!33 !rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'! !!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QP ZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!!!3! iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K)!!"0J%%!&(aJ"c9"JJ! B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$J K!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!!!AS !N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*! &%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(riIrarrRrq!(``!-c!Xc#-#)- )J-L!+2qSdUMHU0+S3+K!V%#ZIki!I!!!53B!!!!,!!$rN!B!!Fb3"2rr!!+CN!6 rr`!$CT!%c-`!"1k3"J!&hC!'!!DlN!B!"kU3"J!)Gj!'!!P%N!B!#L+3"J!2!*! (r`#3"[NLr`$r!!!!mCNLrb(r!!$a%CNL)K,`!2%4%CNL)[!!m4%4%CNLm!$a%C! %m[!!rj!%m[2`!2pB")Ebmr!!reL)K[,cm!$r@!5'm[2`!!pA"(Ebmr!!$eCAC[, cqJ!29QGQm[2kS!rrrrrcmrUJ!*!%$rqU!*!%j'!+!!"*6&K$%iX!!%lk!!41G8j @rrT)jaJJ*'i!#$emrrrrrR$r,8$rqLBU!!)-8J!%CJ!!RP922bS!)#m$(bS!"NK Zrrj)E[rkF!#S)c!I1!"REJb$a(C[BfBL*MaQGQpM98mr+J!J,`-I2!!"5'lrrNK ZrrT`!+JM-"mi!%T%Cd!-JfCXER4Q##BmG'9YF'!'*MaPH(4Z98mr+J!J,caPH(4 Z$)0dC@e`9m"%!%L!(`")E[rq5'lrqR!!U#-`(cJ!0@lrrJ!J*@lrqJ!L083!(Nc I""K1ALkI6R@%E@&TEJ#3"3*"5Qpj)A"PCQC`Gh"M!!!!!ECHR!`!N!d$!!)!N!6 rN!3!N!B"+!!!!5J!!!%S!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!*!!J%%!2q 3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!! !C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4 'EfaNCA)!N"Km#!+QNq(rr*2"rrL3!!%!#*3Krl"mIKYi1!$rrl!"!$`i!2rrN!! "!$L$rJ!#U"i!!#`!!!4!JJ$%U(i!)(rNqhL)[J!'1-%!2$MK!$K)!!$&J%%!&(a J"c9"JJ#-2"mlLLJ!Ef0!JJ!S2q"QGM[rEf1SIJ!J1*m!!$LJ!!%i`3!m11%!1%J !!)f!33!8I'!(08'#!&3m(jQ8+!"ZG%##!"!ri(4P1rpYF%J!!!`ri'9i1rpdEUK q!#!mJ'9i2+"dC6LPEA"m(bK3I!!!0&3&hMii`3!m11%!1$L%G'j)!!!eJ%%!&+J "!$b`(J!JJ!%!1*!!(J!LX(i!(S!"!&Ji)3"3I!J$TS2Krrb$`Iri6S!!))'#!!# 3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J !N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrM rq2rirrMrq2riIrJIr!Iq!Ii!I$!!c-#c-)`)J`L!b)!SJ$L!1)!i`$K`1"`m"ci "rJ"m!!!j,!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B !$`#3"rm!N!Ed)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[! !m4'3"2,`!2%4%4%5mr!!m4%4%4,cm!$a%4%4%[2`!2-K%4%5mr!!$r-K%4,cm!! !$r-K%[2e!!!!$r-Lmr93!!!!$r2cp9!!N!32re8!N!53!'!+!!"*6&K$%i`!!%l k!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q6P922bS!)#mU!!)I+J! '5'lrrNKZrrT`!+JM-"mf!'FH98mr+J!J,caYB@0c3LG)E[rq5'lrqR!!U#-`(cB !0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3(45Qpj)A"PCQC`Gh" M!!!!!EBXZ"B!N!d$!!)!N!6rN!3!N!Hd!!!!Y!!!!,3!!!%3!!3%!2q3"!#3"a! !!!!-!!!!!3!!!G!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!# 3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S !4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J !rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"FU(m!))#I!!+)[`!'1-%!2$MK!$K )!!"CJ%%!&(aJ"c9"JJ!NU(m!)$b!E@%iS!!!1-%!2$MK!$JiK'0c5!!!-B""!"5 S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#3!%% !&)!-!!#!6!!%I!N$TNk!"#!!N!`-!!!#-J#3")!3!*!&%!!3!*!*5!!!!%J!N!8 )!!%!#!#3"J'5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2r irrMrq2riIrKrr(rq2riII$!!c-#c-)`)J`L!b)!SRbLrU28SkLKe+'SXG5irVKp m!!!QEJ!!!")!!2q3"J!&rj!%!!!!&[rrCQBc-`!Uc*!%rrm!9*Q3"2rr!'QCQ3! !CQB!IfD3"-c-!*)c-rrrQCN!T6-cCT!%!+ScN!5CQ3$!!!#CQIrr!08!N!4QCJ$ BhGd!N!AM!!#lZ`!!!2AZN!B!r%53"J$p)T!'!2i4N!B!r`#3#+UU!*!-UUT89+U U!!#UUJ#3"Y8UIkT89+UUp5UUUJ#3"08U!&4rUP53"298e3!!!08U+LS!9(qU9&4 8Ip8!!!$9+T!&!&4rUP4re3!!!08UN!K8URr9!!!!e5SUIrlrrRp8+UTre3!!!08 UrIq3"IdUURr9!!!!eArrrGMBDIe8+UTre3!!!0AqraB@f'R!9#UUIp8!N!6rr`8 &&X$!9#UUIp8!N!6qr`@5ik@P9#UUIpAp!!!!r2rpNZ2Mr93UURr9rId!!!$prj! &UP5UIpApr3#3"2cqrrkUUYA9eIhp!*!&N!"J#J!!58aB3a1-!!"1qJ!%6R919[r k,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CNj96cmU!#![+J!#(bS!"NKZrrj)E[r kF!#S)c!I0J"R(P922bS!)#mmE@&MFd)R5'lrrNKZrrT`!+JM-"mf!$9Zrri!)#9 ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8"d8T[H5&`C@CQF(G`B`!!!!'f,,J @!*!0!`!#!*!%rj!%!*!(Y!!!!,3!!!#d!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!% !!!(3!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3! !!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQp Z6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*!!!3!)P#(rX(ar'hJi!2rrX!%!2$J !rrq3!!%!1+JI!!!X!!!%3))!A+Kr!##!R`!#L,m!"MM"!$`ii3!i5!!!@B""!"4 mB!Fe3B)!*+Kr!#!mJ'eK1+!!!$M"!$`ii3!i1)4MFdJ!!$'!33!8U!%!2,!I!## !!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%` !"(`*!kC1J!3J!*!-$!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B "%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(r i(r`(rJ(q!(``!-c!Xc#-#)-)J-L!+)!iJ$L!1-!iF$JF2!Fq!Ii!I!!!15`!!!! '!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#, r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4% 4%[2`!2%4%4%5mr!!m4%4%4,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!r c)[2e8!!!!!rcmr93!*!%$rp9!*!%J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm $*'i!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+J M-"mf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4 YB@PZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!# S!!!!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3 %"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3# 3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J #TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&# SI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`! )X!%!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S! !))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"BJ#3")!)!*!&%!!3!*! *5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$ rq2rirrMrq2rirrMrq2riIrJrr$rq2rirr$!!c-#c-)`)J`L!b)!S[bLLU+1SS+K JU##X)+iJVMrm!!"9!J!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%lT! '!!@lN!B!"N53"J!()T!'!!m!N!Ir!*!'pL,r!2m!!!$aCL,r)Im!!2%4CL)L%[! !m4%4CL)Lm!$a%4%4CL,`!2%4N!6bm!$arrrr%I2`!2(d426amr!!mI4%rr(cm!$ cp%4&mI2`!!rd4%Aamr!!!24%4I(cp`!!p%4&m[2hF!$d4%AcmrG`!2q3"IF!N!5 3!'!+!!"*6&K$%i`!!%lk!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4 Q6P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'FH98mr+J!J,caYB@0c3LG )E[rq5'lrqR!!U#-`(cB!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ# 3"3(45Qpj)A"PCQC`Gh"M!!!!!EBXZ"B!N!d$!!)!N!6rN!3!N!Hd!!!!Y!!!!,3 !!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!G!#!33!rj!%!*!2K!!!!)!%"!3!N!J "!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*! )!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIr mN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"FU(m!))# I!!+)[`!'1-%!2$MK!$K)!!"CJ%%!&(aJ"c9"JJ!NU(m!)$b!E@%iS!!!1-%!2$M K!$JiK'0c5!!!-B""!"5S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD $iIrm6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!`-!!!#)J#3")!3!*! &%!!3!*!*5!!!!%J!N!8)!!%!#!#3"J'5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3 `!2c!rr$rq2rirrMrq2rirrMrq2riIrJrr$rq2ri1I$!!h-#c-+')SiLLb+)SSLL L++)SiLKU+#SX+biVlJTm!!"Al`!!!"!!!2q3"J!'rrr-c2rr!!crrjQCrrm!%[r rCQErr`!Brrmc-rrr!"rrr`!!c-`!+Xb3"2rr!%6-c!!!QCN!9*Q3"2rr!'QCQ3! !CQB!IfD3"-c-!)eQCJ!!CQB!UM13"*QC!,%c-`!!CQB!e3#3"'CQ!2AZN!B!r5+ 3"J!!UUS!N!bUUP4rME%!!+UU!*!'e5UUD4*%ME&8+UUU!*!%e5TT'!B54)fa929 8e3!!!08UD4J5$)faURp8Ip8!!!$9+QNB%Kq09(qU9(r9!!!!e5TT'")IM93U9+T re3!!!08UD4J5(ie8+P5UIp8!!!$9+QNB%Kq09#T8URr9!!!!e5TT'")IM93U9+T re3!!!09rD4J5(ie8+P5UIp8!N!69D4KT(ie8+P5UIp8!N!9T''NIM93U9+TreId !N!4T''NIMAp89+TreIhp!!!!D4KT(ih9URqUIpApr3#3"@NIM3!!eGA9rId!N!A NB!S!!%P-@%-6L`!!6[S!"%je6PErqNMR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja 5!!4Q!!#H98mr+J!J,`-I+J!'5'lrrNKZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'C fEf096cmU!#![!amm!!&)E[rq5'lrqR!!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e `B!BQ2'9iG'j96cmU!#![2'9iG'i-Jh4PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c! I1!!eE[rq!#!PE[rk!#)e4!!H60m%'%jH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR" hF'-!!!!"YPkF$!#3$3-!!J#3"2q3"!#3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!# 3"a!!!!!-!!!!!3!!!N!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q 3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J# 3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#( rX(aq'hJi!2rrX!%!2$J!rrq3!!%!1)2q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)L q!!Bi`3!m11%!1%J!!-@!33!8I'!(08'#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkK q!#!iR`!!1+!!!6M"!$`ii3!i5!!!MB""!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$r JG'8lrfe`5!!!$$rJCAJlrh4ZU(i!)$b!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM "!$`ii3!i1)4dENJ!!$@!33!8U!%!2,!H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&" m#!1QJq(rr)2"rrK1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!& 5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J# 3"4!!%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L $#)$)J#L!1)!iJ$M!1(!i($`(2J(q!(`!!$NX!!!!"J!!rj!'!!(-N!6rr`!#QC! %rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!(r`#3"[3Lr`$r!!!!m83Lrb(r!!$a%83 L)K,`!2%4%83L)[!!m4%4%83Lm!$a%C!%m[!!m4%4%4,cm!$a%4%4%[2`!2%4%4% 5mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!!!!!2mr2e8!#3"!r r93#3"*!!B!S!!%P-@%-6M!!!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32r k$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cmU!#![2'e KBh0#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4 YB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbi&J#3$3-!!J#3"2q3"!#3"l3!!!# d!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q%!!!!J!3 %"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3# 3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J #TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&b SI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"YB6LJ!!! i`3!m11%!1$L%Bh0)!!!aJ%%!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3" 3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`!!!&5!*! %J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4! !%!#3"$!!r-$rm2rirrMrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L$#)$ )J#L!1)!iJ$M!1(!i($`(2J(q!(`!!$NX!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm !!fD3"-c-!!4%N!B!"5+3"J!2!*!(r`#3"[3Lr`$r!!!!m83Lrb(r!!$a%83L)K, `!2%4%83L)[!!m4%4%83Lm!$a%C!%m[!!m4%4%4,cm!$a%4%4%[2`!2%4%4%5mr! !mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!!!!!2mr2e8!#3"!rr93# 3")"J#J!!58aB3a1@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J! %CMj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB !0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh" M!!!!!EBXYqB!N!d$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a! !!!!-!!!!!3!!!F!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!# 3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S !4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J !rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K )!!"0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3! iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(` *!kC1J!3J!*!)$!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J# 3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r` (rJ(q!(``!-c!Xc#-#)-)J-L!+)!iJ$L!1-!iF$JF2!Fq!Ii!I!!!15`!!!!'!!$ rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,r!2m !!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%4%[2 `!2%4%4%5mr!!m4%4%4,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2 e8!!!!!rcmr93!*!%$rp9!*!%J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm$*'i !#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"m f!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@P Z!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#S!!! !U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3%"!# 3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`% !N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2 Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#SI`! JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!)X!% !2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))' #!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!#-J#3")!3!*!&%!!3!*!*5!! !!%J!N!8)!!%!#!#3"J'5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2r irrMrq2rirrMrq2rirrMrr2rqIrirI$!!c-#c-)`)J`L!b)!SJ#Lm+1BSmbLM+*N XR5j,VMpm!!"IcJ!!!")!!2q3"J!Nc-crN!3!+-c-rrmc-`!Uc*!%rrm!6*QCrrm c-`"1QCR-c2rr!&5CN!6rr`"bCQE-c2rr!(GQCXc-!!!!I@CQQCN!!!"rCT!%c-` !R$-cQCRrr`#K-c1CQ3!!!+)c-fCQrrm!c3!!-c2-c!$1!!!c-jQC!2a%N!B!r5+ 3"J$r!*!)rrm!N!crr&48rrm!!2rr!*!'rbVmr&48rrp8+[rr!*!%rbSU+[cm9*! %+P6r!!!!rbU3"Icm9*!%r`!!!2mUN!Imr&48r`!!!2mUN!Rr92m!!!$r+T!)92p rr`!!!2mUrIrrr5SU+P6rIrm!!!$rrd`N*(Ir+LT8rhrr!!!!rAFSGdj1Gre892p rr`!!!2r0I8j1FLMr9&6rIrm!!!$rcD*-+*bLrhp8rhrrr3!!rFl0IAGhcIer92p rrrhp!!$rcXfKc[rrrhrrIrrpr3!!!2hrrrerI`$rrrrpr3#3"C!!B!S!!%P-@%- 6M!!!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32rk$&)!"'C198mr+J!J,bS !!KmU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cmU!#![2'eKBh0#*dKZrrj)E[rkF!# S)c!I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9 QCR"hF'-!!!!"YLbi&J#3$3-!!J#3"2q3"!#3"l3!!!#d!!!!Y!!!!4!!"!3!rj! %!*!(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*! %rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8 #!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl" mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&bSI`!JJ*m!!SLr!!Bi`3! m11%!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"YB6LJ!!!i`3!m11%!1$L%Bh0)!!! aJ%%!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB) !!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`!!!+D!*!%J"!!N!83!"!!N!P)!!! !5!#3"3J!!3!)!*!'!C)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrM rq2rirrMrq2rirrKrq(rmIrlrrRrm-!$-`,-`M!L$#)$)J#LH+,-SlkM6U(1SEDa EVVrZIr`!!#UT!!!!(`!!rj!'!"(rrjQC!!!!+Xb3"2rr!%UCQIrrQCN!9*Q3"2r r!&@CN!6-c!"XCQErN!3!F'CQrrmc-`"fCQE-c$-c!(eQCTQC!!!!IfD3"-c-!+! c-jQC-c-!SM-cCQErr`#M-c0QCXc-!+3c-fCQQCN!UM13"*QC!+XcN!4QCJ#X-j! '!-i!!$-cQCN!c`!!-c0QCJ$3!!!cN!3!e3#3"'CQ!1J!!%4%!!!!k3!!)L)!!!$ U!!!4%3!!!2-!N!3L)J$elT!'!2Y9N!B!r%53"J$p)T!'!2i4N!B!r`#3#+UU!*! -UUT89+UU!!#UUJ#3"Y8UIkT89+UUp5UUUJ#3"08U!&4rUP53"298e3!!!08U+LS !9(qU9&48Ip8!!!$9+T!&!&4rUP4re3!!!08UN!K8URr9!!!!e5T8qrlqqe3U9+T re3!!!098k+"fF+UX995UIp8!!!$9che`rrqLT2a8URr9!!!!eHTfrdTXrk2q9+T re3#3"21MrfaXrk2q9+Tre3#3"-rr%IrrF+Vl9+TreId!!!$r%IqMF-l3UP5UIpA pr3$r%IqUkIqVrhprURr9rId!!2qUIj!&rpA9eIhp!*!&J'!+!!"*6&K$%jB!!%l k!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J! '5'lrrNKZrrT`!+JM-"mf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`! H*KmNAdjH,Tp1GB4YB@PZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J# 3"2q3"!#3"kJ!!!#S!!!!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$ rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!! !!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@j N4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$L S(`!!,!!!"%##!&#SI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"J i!!!#N!!"!$LS(`!)X!%!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#% !8(`)!kD$iIrm6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"BJ# 3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!8 3!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2riIrKrr(rq2riIr$!!c-#c-)`)J`L !b)!S[bM!U-#S`+K!U%#X3+irlKrm!!!4#!!!!!J!!2q3"J!"c*!%rrm!!TQ3"2r r!!0QN!6-c!!%Zj!'!!9hN!B!"N53"J!()T!'!!m!N!Ir!*!'pL,r!2m!!!$aCL, r)Im!!2%4CL)L%[!!m4%4CL)Lm!$a%4%4CL,`!2%4N!6bm!$arrrr%[2`!2m!!!6 bmr!!r`4%4I,cm!$r"%4&m[2`!!m%4%Abmr!!$`4%4I,cp`!24999m[2hF!$rrrr cmrG`!!-c-crrG`#3")"J#J!!58aB3a1@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2r rrrj`rbe!rrS-8J!%CMj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R! #,8$rqMeU!!MrrRB!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3( "5Qpj)A"PCQC`Gh"M!!!!!EBXYqB!N!d$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!% 3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!F!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!! !"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J! !#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!! "!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+ )[`!'1-%!2$MK!$K)!!"0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!! !U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!" "!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!!!B)!N!5!#!#3"4!!%!#3#8J!!!")!*! &"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrM rq2rirrMrq(riIrarrMrq(r``!-c!Xc#-#)-)J-L!+2qSbZM9k2rSEZKIl'lZ2qi Ir!!!BP3!!!!-!!$rN!B!!Fb3"2rr!!,-N!B!!jQ3"2rr!!4QN!6-c!!&-j!%CQB !"Zk3"J!(UT!'!!KhN!B!#9@3"J!+4*!'!!XLN!B!$`#3"rm!N!Er-rm!r`!!!2' U-rmar`!!m4'U-c-6m!$a%4'U-c2`!2%4%4'U-r!!m4'3"22`!2q3"2(dm!$rCfG Rp26`!2prIhrdp2!!rrRjqI6dm!!2B[mQp26`!!m[L2,dp2X!$f,r*[6dql!!rrr rp2AlX!!%4%42rrX!N!5!B!S!!%P-@%-6PJ!!6[S!"%je6PErqLm+,`-NEJ!)2Ac rrrrqF2mY32rk$&)!"'Bq98mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!C`j `!Le!rrSpDJ!)rrjf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'eKD@i!N!8 "`8T[H5&`C@CQF(G`B`!!!!'f,,IQ!*!0!`!#!*!%rj!%!*!(U!!!!+J!!!#S!!! "%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(!!J%%!2q3"!#3$i3!!!#!"!3%!*!)!3! !!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*!6!3#3#!) !!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+QNq(rr*! !!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!8+Kr!##!R`! #L,m!"MM"!$`ii3!i5!!!6B""!"4mB!Fe3B)!'$J!!!+3!!%!1+JI!!L`!3!m1'! !!+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*! !33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&k!*!%J!J!N!83!"!!N!P)!!!!5!# 3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2rirrMrq2r irrMrq2rirrKrq$rm(ri2rJ4m-!$-`,-`M!L$#)$)KDL1U*@SUfM1D&YS)1`4,JU Z"(`!!"C@!!!!#`!!rj!'!!(rN!3!!!!#rrr-c*QC!!2rrfCQc-`!"-b3"2rr!!A -c*QCCQB!"TQ3"2rr!!GQN!6-c!!)lT!'!!P%N!B!#L+3"J!2!*!(r`#3"[PQr`$ r!!!!p*PQrf6r!!$d4*PQCNE`!24%4*PQC[!!p%4%4*PQm!$d4%p2p2E`!24%rr2 fpr!!p%q2(rEhm!$dq2(rArI`!2q)rr8[pr!!$irirerhm!!!q)L)rrIk!!!2L)p hprUJ!!$ip2RhqU!!!!m!$rrk!*!%J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm $*'i!#$emrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+J M-"mf!'F1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4 YB@PZ!*!&!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!# S!!!!U!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3 %"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3# 3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J #TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&# SI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`! )X!%!2$KJ!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S! !))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"DJ#3")!)!*!&%!!3!*! *5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$ rq2rirrMrq2rirrMrq2riIrJrr$rq2rirr$!!c-#c-)`)J`L!b)!S[bLLU+1SS+K ZU##X,UiJVMrm!!!ClJ!!!!N!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%lT! '!!@lN!B!"SL3"J!(4*!'!!JLN!B!$`#3"rm!N!Eh)[m!r`!!!2&h)[mKr`!!m4& h)L)5m!$a%4&h)L,`!2%4%4&h)[!!m4'3"2,`!2(rrrm4mr!!mI4%p2(cm!$ap%6 rmI2`!22d4%Aamr!!$r4QCI(cm!!!p%4&mI2i!!$dCQAbmrL!!24%4I2cq)!!rj! &q!#3")"J#J!!58aB3a1@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS -8J!%CMj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!M rrRB!0@lrrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC `Gh"M!!!!!EBXYqB!N!d$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!# 3"a!!!!!-!!!!!3!!!F!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q 3"!#3"`%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J# 3"%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(m EH$J!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$M K!$K)!!"0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!## !!3!iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%` !"(`*!kC1J!3J!*!)$!!!!AS!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B "%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrKrq2r irr`(r[rqII``!-c!Xc#-#)-)lFLkD)dSK+M&+(rSJ#Mrl!FZrkjpr!!!(%F!!!! ,!!$rN!B!!Iq3"-c-!!,-N!6rr`!$c-bCQ@CQ!!5CQIq3"!!&QC!%rrm!"QD3"-c -!!HUN!B!#&@3"J!*4*!'!!SLN!B!$`#3"rm!N!Ej9Im!r`!!!2+C9Ip5r`!!mL+ C998Pm!$b)L+C99A`!2rbrbrr9I!!mQrap%rem!$b*@mI42E`!28LAa(dp[!!rr9 I(h6fm!!2rj!%p[!!mc13"2E`!2q3"IEk!!!!$rP9p[UJLDVrEkRfqU!'CQB'Err k!*!%N!"J#J!!58aB3a1-!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS -8J!%CNj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R(P922bS!)#mmE@& MFd)R5'lrrNKZrrT`!+JM-"mf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'e KD@i!N!8"d8T[H5&`C@CQF(G`B`!!!!'f,,J@!*!0!`!#!*!%rj!%!*!(Y!!!!,3 !!!#d!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(3!J%%!2q3"!#3$i3!!!#!"!3 %!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*! 6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+ QNq(rr*!!!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!A+K r!##!R`!#L,m!"MM"!$`ii3!i5!!!@B""!"4mB!Fe3B)!*+Kr!#!mJ'eK1+!!!$M "!$`ii3!i1)4MFdJ!!$'!33!8U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&" m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!-$!!!!@S!N!5 !#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!! 3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`rrMrq(r``!-c!Xc#-#)-)KmL )U*'SZbLQU1aSF'JBl#fZ*qiHI!!!,+3!!!!*!!$rN!B!!Fb3"2rr!!+CN!6rr`! $CT!%c-`!"$13"*QC!!8!N!4QCJ!'!*!%4%3!"qk3"J!))T!'!!m!N!G%!*!'4#* %!%3!!!"40#*%F83!!&%#0#)LFP!!84%#0#)M8!"4%5CQ0#03!&%5B"*K3e!!85B "*N&$8!"4Er*N)803!&(c4Ne!!8f,d%"C$8!!&4J%"*N03!!!'m"*M3eJ!!') f*M&$@)!!BKCP3d0BJ!!'CM)P9BJ!N!53!'!+!!"*6&K$%i`!!%lk!!41G8j@rrS [#Lm$*'i!#$emrrrrrR$r,8$rqJa5!!4Q6P922bS!)#mU!!)I+J!'5'lrrNKZrrT `!+JM-"mf!'FH98mr+J!J,caYB@0c3LG)E[rq5'lrqR!!U#-`(cB!0@lrrJ!J*@l rqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3(45Qpj)A"PCQC`Gh"M!!!!!EBXZ"B !N!d$!!)!N!6rN!3!N!Hd!!!!Y!!!!,3!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3! !!G!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!! !!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj -D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$ rrj!!!3!iU"m!!#`!!!4!JJ"FU(m!))#I!!+)[`!'1-%!2$MK!$K)!!"CJ%%!&(a J"c9"JJ!NU(m!)$b!E@%iS!!!1-%!2$MK!$JiK'0c5!!!-B""!"5S!3!mX"m!))! "!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#3!%%!&)!-!!#!6!! %I!N$TNk!"#!!N!`-!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J% 5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2riIrJ Ir!Iq!Ii!I$!!c-#c-)`)J`L!b)!SJ$L!1)!i`$K`1"`m"ci"rJ"m!!!j,!!!!!B !!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"rm!N!Ed)[m !r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4'3"2,`!2%4%4% 5mr!!m4%4%4,cm!$a%4%4%[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r- Lmr93!!!!$r2cp9!!N!32re8!N!5!B!S!!%P-@%-6PJ!!6[S!"%je6PErqLm+,`- NEJ!)2AcrrrrqF2mY32rk$&)!"'Bq98mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#- `(cB!C`j`!Le!rrSpDJ!)rrjf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdjeK'e KD@i!N!8"`8T[H5&`C@CQF(G`B`!!!!'f,,IQ!*!0!`!#!*!%rj!%!*!(U!!!!+J !!!#S!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(!!J%%!2q3"!#3$i3!!!#!"!3 %!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!!"!*! 6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"Km#!+ QNq(rr*!!!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3))!8+K r!##!R`!#L,m!"MM"!$`ii3!i5!!!6B""!"4mB!Fe3B)!'$J!!!+3!!%!1+JI!!L `!3!m1'!!!+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!! JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&5!*!%J!J!N!83!"!!N!P )!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3"$!!r-$rm2r irrMrq2rirrMrq2rirrKrq"rm"ri"rJ"m-!$-`,-`M!L$#)$)J#L!1)!iJ$M!1(! i($`(2J(q!(`!!$NX!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B !"5+3"J!2!*!(r`#3"[3Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4% 4%83Lm!$a%C!%m[!!m4%4%4,cm!$a%4%4%[2`!2%4%4%5mr!!mb%4%4,cm!!2mb% 4%[2`!!!2mb%5mr8!!!!2mb,cp9!!!!!2mr2e8!#3"!rr93#3")"J#J!!58aB3a1 @!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CMj96cmU!#![+J! #(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB!0@lrrJ!J*@lrqJ! L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"M!!!!!EBXYqB!N!d $!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!F! #!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3! !!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@) !4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj! !!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K)!!"0J%%!&(aJ"c9 "JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!% !@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!! !!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8 #!*!&%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`(rJ(q!(``!-c!Xc# -#)-)J-L!+)!iJ$L!1-!iF$JF2!Fq!Ii!I!!!15`!!!!'!!$rN!B!!Fb3"2rr!!+ CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,r!2m!!!$a4#,r)Im!!2% 44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%4%[2`!2%4%4%5mr!!m4% 4%4,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!!!!!rcmr93!*! %$rp9!*!%N!"J#J!!58aB3a1-!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe !rrS-8J!%CNj96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R(P922bS!)#m mE@&MFd)R5'lrrNKZrrT`!+JM-"mf!$9Zrri!)#9ZrrS!)M9$!"iQ(b4I6PiZRdj eK'eKD@i!N!8"d8T[H5&`C@CQF(G`B`!!!!'f,,J@!*!0!`!#!*!%rj!%!*!(Y!! !!,3!!!#d!!!"%!!%"!$rN!3!N!F3!!!!$!!!!!%!!!(3!J%%!2q3"!#3$i3!!!# !"!3%!*!)!3!!!!6rN!3!N!6rN!3!N!F"!!!!!3!!!!%!!!"J!!!!C!!!!(`!!!! "!*!6!3#3#!)!!!S!!3#3"3)!N!4+!%B!3f&bBQpZ6'PL!%CTEQ4'EfaNCA)!N"K m#!+QNq(rr*!!!3!)P#(rX(ar'hJi!2rrX!%!2$J!rrq3!!%!1+JI!!!X!!!%3)) !A+Kr!##!R`!#L,m!"MM"!$`ii3!i5!!!@B""!"4mB!Fe3B)!*+Kr!#!mJ'eK1+! !!$M"!$`ii3!i1)4MFdJ!!$'!33!8U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$J K!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!-$!!!!9) !N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*! &%!!3!*!%-!$m`2r`rrMrq2rirrMrq2rirrMrq(ri(r`(rJ(q!(``!-c!Xc#-#)- )J-L!+)!iJ$L!1-!iF$JF2!Fq!Ii!I!!!15`!!!!'!!$rN!B!!Fb3"2rr!!+CN!6 rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!Ir!*!'p#,r!2m!!!$a4#,r)Im!!2%44#) L%[!!m4%44#)Lm!$a%4%44#,`!2%4N!6bm!$a%4%4%[2`!2%4%4%5mr!!m4%4%4, cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!!!!!rcmr93!*!%$rp 9!*!%J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm$*'i!#$emrrrrrR$r,8$rqJa 5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'F1F!)Y32rk2@S!#2r qGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!F&+EhNKF'9QCR" hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#S!!!!U!!!!4!!"!3!rj!%!*! (%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj! %!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*! %5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaY i1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#SI`!JJ*m!!SLr!!Bi`3!m11% !1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!)X!%!2$KJ!!#S!3!mX"m!))! "!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#3!%%!&)!-!!#!6!! %I!N$TNk!"#!!N!J-!!!#)J#3")!3!*!&%!!3!*!*5!!!!%J!N!8)!!%!#!#3"J' 5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2rirrM rr2rq2ri2I$!!c-#c-)`)J`Lib,BS[DLrD1rSXqL0k*DXa+ielJpm!!"N)`!!!"! !!2q3"J!Uc*!%rrm!+mb3"J")QCRrN!3!9*Q3"2rr!(pQN!6-c!$!!!#CQIrr!2E GN!B!plZ3"J$iUT!'!2Q)N!B!qRH3"J$l9C!'!2a%N!B!r5+3"J$q%C!'!2m!N!M rr`#3$2rm9&6rr`!!rrm!N!Er+[cm9&6rre3Urrm!N!6r+LSUr2a8N!3U92m!!!$ r+T!&r2a8N!6r!!!!rbVpr2mU+LVmr&48r`!!!2mUrrrkr2mU+LVr92m!!!$r+[r prrrkr2mUrhrr!!!!rbVrr[hprrrkrrprr`!!!2rrIm$qr[hrqrrrIrm!!!$rqrr p5-$qrr[rrhrr!!!!rrRiqrrp`2q3"(rr!!!!rrMhr5[rrrRr92prrrd!!2rr+rE frrRkre6rIrrpr3!!!2rmq2rkrrrmrhrrrId!N!Arrrpr!2rrrrhp!*!%"T*J#J! !58aB3a1C!!"1qJ!%6R9)jaJJA8mNE`!@1#S!)$9mrrm!)($r*8!!)Ja5!!4Q!!% f98mr"#mU!!)I+J!'5'm!$NK[!!j`!+JM-"mf!'F!!3Je4!!J,c`!J!!8,ca69&) M,ca"58j*,caQB@aX,caPH(4Z,caPH(4Z,`T1ZJ$b0J"2l`!FC`!!fM9%!#![2!# !!"3[2&088L-[2%&*6NN[2'CKE'`[2'9iG'i[2'9iG%3[#Nkk!,Sf!%r[!"aR!!# L083!)#mm!)!!&#mm8e45)bmm38P155mmGf&XDbmmCAKdELmmCAKdELm+6VS!JMB !6qm!('GU083!)#mm!)!!&#mm8e45)bmm38P155mmGf&XDbmmCAKdELmmCAKd4#m +6VS!6$B!6qm!('Fd98mr"#mmCAKdEN)R5'm!$NK[!!j`!+JM-"mf!'B@0@m!"!! J*9F!)Q!+0@m!"!!J*9F!)M9$!"jF6dcI""JZRdje51FB)%r[rp`NE`!d1#S!)$9 mrrm!)($r*8!!)P922`3[,`!m(bS!"NK[!"")E`!3F!#S)c!I0J"Q!!#Z)#m!2,# [!$KR(P922`3[,`"!(bS!"NK[!!T)E`!@F!#S)c!I0J"J#Mk[!!B[E`!#!!K+3fC f2eF!(Lp[!!J!)$p[!%`!'$p[!%i!'KpU!!B!(#p[!%!!$#p[!%3!%#p[!%J!&&9 22bm!##m[!!C#Tcmm!!&)HJ"#5'm!(Nkk!L!`(cB!CLBJ,`!JX+m!#'B3GY8eI2r r!#"`rb9!!#*J$$9[!"i!)#9[!#!!)M!$6qm!*%cI""K1G8MR'$*2lrk8,'m"M#4 [!B5AbhB!H2mJ,J!NX**Q!!%N)#i!),#U!!4Q!!%B3LHTQe922bi!&LmZ!'3[,J! 5(c`!!DJD-"mi!"mm!!'TQe92UDm`(cB!CJ!!f!bU8e45)`!)CM*#*kQE@8m[2&0 88L-r+J!-U"mJAbC)(c`!!DQE)!YR!!#d5&Fr+J!-2bS!$Nkk!e4J-PP2,bS!#$m U!!bS(b"I*NK96kQ[-"mf!#!,Ca)J8a!35)"53%M!)&0$ek)ZB!4fcQ"S3GF[5!% 52fS!%J%@,fS!&!%`3Qm"(%([!3"`#D*J0J"Q$M9[!4B!%L9[!6!!&'!i$%2rL'F '$%2re@BJ5LS!%'FD3Hm"!(!'SQ!f!'B10@m"&J!5*@m"-!!8B!`eI2rr!"*`rb9 !!"3JE`')%,`!!3a%rrpR"$m%UCT2l`&X60p-'#"I6qm!$%l351FB)#J[!"!NE`! 85QS!Y'F+-#S!YV"U!,4NFRB"8QS!YM9$!#!P4!!d3HS!"(!*SQ!e3!#`5QS!X'B X5'S!"%KU!,)[+J#i)&*1N!!3+J!L!N!!%'F55LS!XQB-,`S[+J!d6VVrR&"28N0 +DJ#`CJC++J#bCk`-D[r9!,"R#!aUl(J!X'B%3QS!X&0U!,C-h`3B6R8[!dr[rca +V`$3C`!!MP922bm!i#m[!0i[,`$H5'm!%%K[!"&1ZJ'!-"mf!'CZ$#m!!3!"CQ" 96bm[!0Jr,`$N5'm!#Nkk!5J`(cB!CNi[E`$3!!K"l`!)3HJ!F#p)!"irE`!#!#* #,`"i3Qm!Z%)[!,SrE`$8!,a#E`#q,fm!c!$!5'm!##m[!!K1Z[lJ0Lm!`&"2B!C fL'!#GXir3`$J6qm!a#BI)&p2l`!86Y")ja!`6qrr!#C[!4BNE`%3)!TR1M9[!43 !&L!,CJT#UJ!53QS!('!D)%Y$eh!!%"053%M!SLj"eb9)!")eI2rr!"`J5U)(0J" #UJ!5B!*fcMp$!4T2l`%!60m-##"I6qm!#Nl351F3-%r[rq!QE`!d*'m!-#!,C`4 +%fB33KG"eb9)!")eI2rr!"aJ##9,!"*#DJ!F0@m!2!!@*@m!1!!`)%T`#D*J0J" #UJ!52d-!2Nr[!#"-h``))&p2l`!16Y![!dr[riC96bm[!)Sr,`#-5'm!#%kkrbS `(cB!CJJJE`##-+m!&Mp$!)a2l`"k*KmJAdr[!!T1d%MR%$"2lrq8*Qm!J#4[!(a 96cm[!)i[,`#-,bm!M%K[!!a1Z[p)-"mf!'BD%#m!(J*!!""@`%3!&)"R"LD[!$" J"#D[!'3r3`#16qm!E%cI$!JJAdr[!"*1d%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a #%5!ICb)J3#"3-"Jb,J!)CaDb3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y! !!![j5Qpj)A"PCQC`Gh"M!!!!!EBXXr-!N!d$!!)!N!6rN!3!N!B+,!!!#L`!!!S X!!!"`!!%"!$rN!3!N!G%!!!!3!!!!!N!!![`!J%%!2q3"!#3$J%d!!!!J!3%"!# 3#!%!!!!`rj!%!*!%rj!%!*!(!3!!!!X!!!!"!!!!L!!!!*!!!!!",!!!!!%!N"- ,!*!)!J!!#J)!!"S#!!!U!J!!0`)!!%3#!!"2!J!!A!)!!'S#!!"c!J!!IJ)!!)m !!3#3"3-!N!4+#N)!4J%!!%0KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA* $FQ9KG'96H@jM!%GPG$&5CA0[GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!" $E'pcC9*PFdCTE'8!3Qa[BfY0EhCP4'&dB3"5CA0&FR*[FJ"'D@jN4QpXC'9b!&" #4f9d3f&d5@jQEe0jEQ-!5%p`C@j5CA0'D@aP!*!9I!J#TT2Krrb6`IriN!!"!!L 8)Iq`I(mEH+[I!#!i!2rrX"m!)$J!rrq3!"m!)UJI!!!X!!!%3))"Q(r$mhL!R`! #L,m!"MM"!$`ii3!i5!!)`B""!"4mB!Fe3B)"B,2I!#!iI`!!2)"PH$bJCAJm`'C K21""56d!8e3j)!#!18!!&$L%G'iiTA4Z1-CXE$MR6NNj#&)M5!!"8@!!!!"mB!F e3B)"+,2I!#!iI`!!2)"PH$bJCAJm`'CK21""56d!8e3j)!#!18!!&$L%G%3iTA4 Z1-CXE$MR6NNj#&)M5!!"#@!!!!"mB!Fe3B)!i,2I!#!iI`!!2)"PH$bJCAJm`(G K21""56d!8e3j)!#!18!!&$L%G'iiTA4Z1-CXDcMR6NNj#&)M5!!!`@!!!!"mB!F e3B)!Q,2I!#!iI`!!2)"PH$bJCAJm`(GK21""56d!8e3j)!#!18!!&$L%G%3iTA4 Z1-CXDcMR6NNj#&)M5!!!H@!!!!"mB!Fe3B)!8$Kq!!!mJ'9i1+!!!$M"!$`ii3! i1)4dENJ!"hQ!33!8I'!(08##!#LS!3!mX"m!))!"!$L3!"m!)NJ!!"5S!3!mX"m !))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrmJm(rq%k!!#"m#!+Q[Z(rh*! !!3!)P#(rF$Y$!!!kj!!!1`8!!$YQ!!!lK`!!1kJ!!$[*!!!lkJ!!UcS!)$J!rrq `'J!J1!$rrj!!'J!L1(N!!$LA!!#)ZJ!'1-%!A$MK!&K)!!E4J%%!&(aJ"c9!JJ$ 3I"Li3%'#!#3iH3!!1*J!!)Lk!!Bi`3"811%!8%J!"U@!33!85!!!&+J"!&b`!3" 8J!%!@*!!!3"3I'!(08##!*!!U!%!9,!"!%U!!3"3N!!"!%bc`3"%Xq%!4SJD!!D B!3")Nf%!1*1"!$b6S3"!U'%!A)#"!&JiS!!!1-!!!B$L!#`j!3!i5!!$L@!!!!" mB!Fe3))!2)#"!%b!!3"3I!3!!%##!"`iB2r91!$rrl!D!#!i!2rrN!!D!#*)!!! 8U!%!5V!D!##!!3"-N!!D!#+!!3#B1#%!N!"m#!1QZZ(rh%k!!#"m#!+QNq(rr*2 "rrL6SIrdNi(rm*!!!3!)P#(q3$Z$!!!lT!!!I,mVH)"m!#5!(`!!I!-!3%##!FL !I!!JJ"m!"(`$!%"!JJ'i1'!!!%J!"Df!33!8U(`!&S#F!'5![!!51-!!!8J!"Df !33!8I(iEH$KJ!!&)!!@&J%%!&%J!"Df!33!8I'!(08##!95!I`!)2!1XV#J!8L0 !JJ"81'!!!%J!"9Q!33!82'"69+LI!!`iBe)M5!!&MB""!"4mI"Yi1'!!!8J!"6@ !33!8+"`!!%'#!43iB3#NU*m!$+Lr!!j)!!9jJ%%!&%J!!&#!I`!)U*m!$%J!"8f !33!8I(`EH%J!"5Q!33!8+"`!!%'#!0#!I!!!1)%!T)#m!!#)"3!!I!8(G$LP!!& )!!9*J%%!&%J!!!K)!!#S1!%!T*!!!3"+U"m!%V!"!%k!(`!8N!!"!'Ji!!!!X!% !9$KK!$K)!!8YJ%%!&(aJ"c9!JJ!BU!%!6V!I!"+!!3"SN!!I!"4)!!"JI'!(0#` !riK"JJ!3I'!(0#`!rp9!JJ!iL"m!%#J!!!""JJ!X1'%!1%J!"2Q!33!8I'!(08# #!"LS!3"1X"m!%S!"!'L3!"m!&%J!!"3i!2rrX"m!%MJ!rrq3!"m!&$J!!!'B(3! !Im!(0#`!rrp"JJ!3Im2cH%J!"-@!33!8J!%"b$JK!F"m#!1QJq(rr)2"rrL$SIr dJi(rm%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`1k-!!$[N!!#J(`#d+!! !!%'#!"5JI`#fS"m!Y(`$!%"!J!#m1m!!!D"r!,Bi!`!"X"m!YV2I!##6[`!d1(m !"%J!""@!33!8X(m!X+JI!,!X!!!!3))!3$Kr!!3iR`#bJ,m!Z)'I!!")!!40J%% !&)JI!#*8!!Eh3B)!()JI!,)S!!!!3))!%)"r!$4rj2Yi5rrr@6[H!!'S(`#`,!! !!%##!"#)(`#b+!!!!%'#riLS(`#`,!$re8'#!"#S(`#`,!$XH%##!!`i!!!!X"m !X+"r!,Bi!rrrX"m!YS!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp%k!!#"m#!+Q[f( rl*!!!3!)P#(qi$YM!!!lK3!!1kB!!$[(!!!lk!!!+"i!!%'#!+3iH`!!1,`!!$M "!$`ii3!i5!!"q@!!!!"mB!Fe3))!L)J"!$JS!!!"3))!F$Km!!!iQ`!!1+%!1NJ !!C&J!!!!I'!(08##!'#6`3"!1!%!X*!!!3"@U!%!1V!"!&Si!!!!Q!%!X$J!!!# `!3$`1!!!!*J"!2+cS3$d1!!!!,!"!2D6i3$iJ'%!2$L"!%",rrijU'%!m%J!!"! iB2q)5!!!#$KJrmk!!3%S1#%")(`)!kDlBIrX6S!!)(`)!UD6iIrmN!!"!!L8)Il !I,mVH#JI!!""JJ"JX*m!&LJ$!!"!JJ!B1!!!!*!!(`!51!!!!,!I!"a)!!!S1)% !1)LM!!!iT3!"5!!#'B""!"3i!3!iN!!I!")i!2rrX"m!((rMqhK)!!*GJ%%!&$J !!!#3!"m!%NJ!!!JiB2r1J!%"5$JK!8"m#!1QJq(rr%k!!#"m#!+QNq(rr*!!!3! )P#(rS(cI-hJS"3!!3B)!%)J&!!!S!!!!3))!)$J!!!#B!3!i1!%!1*!!(`!51!$ rrl!I!"a)!!!3N!#r!")i!!!!X"m!(,"r!"D3!*m!-(rMqhK)!!'0J%%!&$J!!!# 3!"m!%S!"!'Ji)3"JI!J$TS2Krra1J!!JI!J#TT2Krrb3!!%!#*3Krd"m[bYi1+% !1%[rrYPmB!Fe3))!$+J"!%k`(`!!J!%!b$JK!-"m#!1QJq(rr%k!!#"m#!+QNq( rr*2"rrL3!!%!#*3Kre!laJ!!1qF!!$M"!$K,rrmKI'!(08##!%#)!3"@9!3'pMJ !!!"mK!"3-!6rrh`!)4#B(`!!L"m!!#J!!!""JJ!3J!%!D*!!(J!!5!!!$)!"!*b 3!"i!!)!"!,Ji)3#`I!J$TS2Krrb$`Iri6S!!))'#!##3!%%!&)!-!!#!6!!%I!N $TNk!"##"JJ!3N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!+*!!33!8J!`!!)"-!!4 m#31Q6S!%))'#!"b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!)N!""!"5!$!!!J%` !"(`*!kC1J!3JJB)!$*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!# !6!!%I!N$TNk!"##"JJ!NN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!` !!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!!N!""!"5 !$!!!J%`!"(`*!kC1J!3JJ!`!!*!!33!8I!N$TS"-!!41J!3J6S!!)!#3"5mK1!S L!b`%!!!"BJ#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4! !%!#3"3)!N!83!"!!N!3`!2c!rr$rq2rirrMrq2rirrMrq2rirrKrr!Iq!ri"r$! !c-#c-)`)J`L!b22SRbL++)SSRqMkD"dX"Qi$lJ"m!!&%G!!!!!J!!2q3"J!"c*! %rrm!!TQ3"2rr!!0QN!6-c!!%hGd!N!8&lT!'!!C%N!B!"b+3"J!2!*!(r`#3"[B Lr`$r!!!!m@BLrb(r!!$a%@BL)K,`!2%4%@BL)[!!m4%4%@BLm!$rra&2rf,`!29 84%49mr!!p9Aa49Acm!$e98(e9I2`!29842rrmr!!rrp"p9rcm!!$2f-I9I2h!!! !$r9ImrG`!!!!rrrcph!!!!!$2rph!!!!"T*J#J!!58aB3a1D!!"1qJ!%6R9)jaJ JA8mNE`!@1#S!)$9mrrm!)($r*8!!)Ja5!!4Q!!%f98mr"#mU!!)I+J!'5'm!$NK [!!j`!+JM-"mf!'F!!3Je4!!J,c`!J!!#,ca69&)M,ca"58j*,caQB@aX,ca`FQ9 Q,caPH(4Z,`T1ZJ$b0J"2l`!FC`!!fM9%!#![2!#!!!)[2&088L-[2%&*6NN[2'C KE'`[2("bC@B[2'9iG%3[#Nkk!,Sf!%r[!"aR!!#L083!)#mm!)!!!Lmm8e45)bm m38P155mmGf&XDbmmF(*PCLmmCAKdELm+6VS!JMB!6qm!('GU083!)#mm!)!!!Lm m8e45)bmm38P155mmGf&XDbmmF(*PCLmmCAKd4#m+6VS!6$B!6qm!('Fd98mr"#m mF(*PCN)R5'm!$NK[!!j`!+JM-"mf!'B@0@m!"!!J*9F!)Q!+0@m!"!!J*9F!)M9 $!"jF6dcI""JZRdje51FB)%r[rp`NE`!d1#S!)$9mrrm!)($r*8!!)P922`3[,`! m(bS!"NK[!"")E`!3F!#S)c!I0J"Q!!#Z)#m!2,#[!$KR(P922`3[,`"!(bS!"NK [!!T)E`!@F!#S)c!I0J"J#Mk[!!B[E`!#!!K+3fCf2eF!(Lp[!!J!)$p[!%`!'$p [!%i!'KpU!!B!(#p[!%!!$#p[!%3!%#p[!%J!&&922bm!##m[!!C#Tcmm!!&)HJ" #5'm!(Nkk!L!`(cB!CLBJ,`!JX+m!#'B3GY8eI2rr!#"`rb9!!#*J$$9[!"i!)#9 [!#!!)M!$6qm!*%cI""K1G8MR'$*2lrk8,'m"M#4[!B5AbhB!H2mJ,J!NX**Q!!% N)#i!),#U!!4Q!!%B3LHTQe922bi!&LmZ!'3[,J!5(c`!!DJD-"mi!"mm!!'TQe9 2UDm`(cB!CJ!!f!bU8e45)`!)CM*#*kQE@8m[2&088L-r+J!-U"mJAbC)(c`!!DQ E)!YR!!#d5&Fr+J!-2bS!$Nkk!e4J-PP2,bS!#$mU!!bS(b"I*NK96kQ[-"mf!#! ,Ca)J8a!35)"53%M!)&0$ek)ZB!4fcQ"S3GF[5!%52fS!%J%@,fS!&!%`3Qm"(%( [!3"`#D*J0J"Q$M9[!4B!%L9[!6!!&'!i$%2rL'F'$%2re@BJ5LS!%'FD3Hm"!(! 'SQ!f!'B10@m"&J!5*@m"-!!8B!`eI2rr!"*`rb9!!"3JE`')%,`!!3a%rrpR"$m %UCT2l`&X60p-'#"I6qm!$%l351FB)#J[!"!NE`!85QS!Y'F+-#S!YV"U!,4NFRB "8QS!YM9$!#!P4!!d3HS!"(!*SQ!e3!#`5QS!X'BX5'S!"%KU!,)[+J#i)&*1N!! 3+J!L!N!!%'F55LS!XQB-,`S[+J!d6VVrR&"28N0+DJ#`CJC++J#bCk`-D[r9!," R#!aUl(J!X'B%3QS!X&0U!,C-h`3B6R8[!dr[rca+V`$3C`!!MP922bm!i#m[!0i [,`$H5'm!%%K[!"&1ZJ'!-"mf!'CZ$#m!!3!"CQ"96bm[!0Jr,`$N5'm!#Nkk!5J `(cB!CNi[E`$3!!K"l`!)3HJ!F#p)!"irE`!#!#*#,`"i3Qm!Z%)[!,SrE`$8!,a #E`#q,fm!c!$!5'm!##m[!!K1Z[lJ0Lm!`&"2B!CfL'!#GXir3`$J6qm!a#BI)&p 2l`!86Y")ja!`6qrr!#C[!4BNE`%3)!TR1M9[!43!&L!,CJT#UJ!53QS!('!D)%Y $eh!!%"053%M!SLj"eb9)!")eI2rr!"`J5U)(0J"#UJ!5B!*fcMp$!4T2l`%!60m -##"I6qm!#Nl351F3-%r[rq!QE`!d*'m!-#!,C`4+%fB33KG"eb9)!")eI2rr!"a J##9,!"*#DJ!F0@m!2!!@*@m!1!!`)%T`#D*J0J"#UJ!52d-!2Nr[!#"-h``))&p 2l`!16Y![!dr[riC96bm[!)Sr,`#-5'm!#%kkrbS`(cB!CJJJE`##-+m!&Mp$!)a 2l`"k*KmJAdr[!!T1d%MR%$"2lrq8*Qm!J#4[!(a96cm[!)i[,`#-,bm!M%K[!!a 1Z[p)-"mf!'BD%#m!(J*!!""@`%3!&)"R"LD[!$"J"#D[!'3r3`#16qm!E%cI$!J JAdr[!"*1d%j@!!"C6bmm8e45)cmZ!!UTS#*Z!!a#%5!ICb)J3#"3-"Jb,J!)CaD b3')5F!"63@F'%"M4`'$f%""53+!Z6PiJAe#26Y!!!![j5Qpj)A"PCQC`Gh"M!!! !!ECDQ9-!N!d$!!)!N!6rN!3!N!B+,!!!#L`!!!SX!!!"`!!%"!$rN!3!N!G%!!! !3!!!!!N!!![`!J%%!2q3"!#3$J%d!!!!J!3%"!#3#!%!!!!`rj!%!*!%rj!%!*! (!3!!!!X!!!!"!!!!L!!!!*!!!!!",!!!!!%!N"-,!*!)!J!!#J)!!"S#!!!U!J! !0`)!!%3#!!"2!J!!A!)!!'S#!!"c!J!!IJ)!!)m!!3#3"3-!N!4+#N)!4J%!!%0 KFQ*[ENaTBJ"33NK(CA4@5@jQEe0jEQ-!8%*%DA*$FQ9KG'96H@jM!%GPG$&5CA0 [GA*MC3"(CA4*EQ46G(*TEQF!8f9d8Q9c6'pKC!"$E'pcC9*PFdCTE'8!3Qa[BfY 0EhCP4'&dB3"5CA0&FR*[FJ"'D@jN4QpXC'9b!&"#4f9d3f&d5@jQEe0jEQ-!5%p `C@j5CA0'D@aP!*!9I!J#TT2Krrb6`IriN!!"!!L8)Iq`I(mEH+[I!#!i!2rrX"m !)$J!rrq3!"m!)UJI!!!X!!!%3))"Q(r$mhL!R`!#L,m!"MM"!$`ii3!i5!!)`B" "!"4mB!Fe3B)"B,2I!#!iI`!!2)"PH$bJF()m`'CK21""56d!8e3j)!#!18!!!ML %G'iiT@9Q1-CXE$MR6NNj#&)M5!!"8@!!!!"mB!Fe3B)"+,2I!#!iI`!!2)"PH$b JF()m`'CK21""56d!8e3j)!#!18!!!ML%G%3iT@9Q1-CXE$MR6NNj#&)M5!!"#@! !!!"mB!Fe3B)!i,2I!#!iI`!!2)"PH$bJF()m`(GK21""56d!8e3j)!#!18!!!ML %G'iiT@9Q1-CXDcMR6NNj#&)M5!!!`@!!!!"mB!Fe3B)!Q,2I!#!iI`!!2)"PH$b JF()m`(GK21""56d!8e3j)!#!18!!!ML%G%3iT@9Q1-CXDcMR6NNj#&)M5!!!H@! !!!"mB!Fe3B)!8$Kq!!!mJ("b1+!!!$M"!$`ii3!i1)4PCNJ!"hQ!33!8I'!(08# #!#LS!3!mX"m!))!"!$L3!"m!)NJ!!"5S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3" B1#%!8(`)!kD$iIrmJm(rq%k!!#"m#!+Q[Z(rh*!!!3!)P#(rF$Y$!!!kj!!!1`8 !!$YQ!!!lK`!!1kJ!!$[*!!!lkJ!!UcS!)$J!rrq`'J!J1!$rrj!!'J!L1(N!!$L A!!#)ZJ!'1-%!A$MK!&K)!!E4J%%!&(aJ"c9!JJ$3I"Li3%'#!#3iH3!!1*J!!)L k!!Bi`3"811%!8%J!"U@!33!85!!!&+J"!&b`!3"8J!%!@*!!!3"3I'!(08##!*! !U!%!9,!"!%U!!3"3N!!"!%bc`3"%Xq%!4SJD!!DB!3")Nf%!1*1"!$b6S3"!U'% !A)#"!&JiS!!!1-!!!B$L!#`j!3!i5!!$L@!!!!"mB!Fe3))!2)#"!%b!!3"3I!3 !!%##!"`iB2r91!$rrl!D!#!i!2rrN!!D!#*)!!!8U!%!5V!D!##!!3"-N!!D!#+ !!3#B1#%!N!"m#!1QZZ(rh%k!!#"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#( q3$Z$!!!lT!!!I,mVH)"m!#5!(`!!I!-!3%##!FL!I!!JJ"m!"(`$!%"!JJ'i1'! !!%J!"Df!33!8U(`!&S#F!'5![!!51-!!!8J!"Df!33!8I(iEH$KJ!!&)!!@&J%% !&%J!"Df!33!8I'!(08##!95!I`!)2!1XV#J!8L0!JJ"81'!!!%J!"9Q!33!82'" 69+LI!!`iBe)M5!!&MB""!"4mI"Yi1'!!!8J!"6@!33!8+"`!!%'#!43iB3#NU*m !$+Lr!!j)!!9jJ%%!&%J!!&#!I`!)U*m!$%J!"8f!33!8I(`EH%J!"5Q!33!8+"` !!%'#!0#!I!!!1)%!T)#m!!#)"3!!I!8(G$LP!!&)!!9*J%%!&%J!!!K)!!#S1!% !T*!!!3"+U"m!%V!"!%k!(`!8N!!"!'Ji!!!!X!%!9$KK!$K)!!8YJ%%!&(aJ"c9 !JJ!BU!%!6V!I!"+!!3"SN!!I!"4)!!"JI'!(0#`!riK"JJ!3I'!(0#`!rp9!JJ! iL"m!%#J!!!""JJ!X1'%!1%J!"2Q!33!8I'!(08##!"LS!3"1X"m!%S!"!'L3!"m !&%J!!"3i!2rrX"m!%MJ!rrq3!"m!&$J!!!'B(3!!Im!(0#`!rrp"JJ!3Im2cH%J !"-@!33!8J!%"b$JK!F"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+QNq(rr*2 "rrL6SIrdN!!"!!L8)Iq`1k-!!$[N!!#J(`#d+!!!!%'#!"5JI`#fS"m!Y(`$!%" !J!#m1m!!!D"r!,Bi!`!"X"m!YV2I!##6[`!d1(m!"%J!""@!33!8X(m!X+JI!,! X!!!!3))!3$Kr!!3iR`#bJ,m!Z)'I!!")!!40J%%!&)JI!#*8!!Eh3B)!()JI!,) S!!!!3))!%)"r!$4rj2Yi5rrr@6[H!!'S(`#`,!!!!%##!"#)(`#b+!!!!%'#riL S(`#`,!$re8'#!"#S(`#`,!$XH%##!!`i!!!!X"m!X+"r!,Bi!rrrX"m!YS!"!&J i)3"3I!J$TS2Krrb$`IriJk(rp%k!!#"m#!+Q[f(rl*!!!3!)P#(qi$YM!!!lK3! !1kB!!$[(!!!lk!!!+"i!!%'#!+3iH`!!1,`!!$M"!$`ii3!i5!!"q@!!!!"mB!F e3))!L)J"!$JS!!!"3))!F$Km!!!iQ`!!1+%!1NJ!!C&J!!!!I'!(08##!'#6`3" !1!%!X*!!!3"@U!%!1V!"!&Si!!!!Q!%!X$J!!!#`!3$`1!!!!*J"!2+cS3$d1!! !!,!"!2D6i3$iJ'%!2$L"!%",rrijU'%!m%J!!"!iB2q)5!!!#$KJrmk!!3%S1#% ")(`)!kDlBIrX6S!!)(`)!UD6iIrmN!!"!!L8)Il!I,mVH#JI!!""JJ"JX*m!&LJ $!!"!JJ!B1!!!!*!!(`!51!!!!,!I!"a)!!!S1)%!1)LM!!!iT3!"5!!#'B""!"3 i!3!iN!!I!")i!2rrX"m!((rMqhK)!!*GJ%%!&$J!!!#3!"m!%NJ!!!JiB2r1J!% "5$JK!8"m#!1QJq(rr%k!!#"m#!+QNq(rr*!!!3!)P#(rS(cI-hJS"3!!3B)!%)J &!!!S!!!!3))!)$J!!!#B!3!i1!%!1*!!(`!51!$rrl!I!"a)!!!3N!#r!")i!!! !X"m!(,"r!"D3!*m!-(rMqhK)!!'0J%%!&$J!!!#3!"m!%S!"!'Ji)3"JI!J$TS2 Krra1J!!JI!J#TT2Krrb3!!%!#*3Krd"m[bYi1+%!1%[rrYPmB!Fe3))!$+J"!%k `(`!!J!%!b$JK!-"m#!1QJq(rr%k!!#"m#!+QNq(rr*2"rrL3!!%!#*3Kre!laJ! !1qF!!$M"!$K,rrmKI'!(08##!%#)!3"@9!3'pMJ!!!"mK!"3-!6rrh`!)4#B(`! !L"m!!#J!!!""JJ!3J!%!D*!!(J!!5!!!$)!"!*b3!"i!!)!"!,Ji)3#`I!J$TS2 Krrb$`Iri6S!!))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!3N!""!"5!$!! !J%`!"(`*!kC1J!3JJB)!+*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"b3!%%!&)! -!!#!6!!%I!N$TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!$*!!33! 8J!`!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!" "!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"5 3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3JJ!` !!*!!33!8I!N$TS"-!!41J!3J6S!!)!#3"5mK1!SL!b`%!!!"BJ#3")!)!*!&%!! 3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3`!2c !rr$rq2rirrMrq2rirrMrq2rirrKrr!Iq!Ii"r$!!c-#c-)`)J`L!b22SRbL++)S SRqMl+"NX"bi"lJ"m!!&(i3!!!!J!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!! %hGd!N!8&lT!'!!C%N!B!"b+3"J!2!*!(r`#3"[BLr`$r!!!!m@BLrb(r!!$a%@B L)K,`!2%4%@BL)[!!m4%4%@BLm!$rra&2rf,`!2984%49mr!!p9Aa49Acm!$e98( e9I2`!29842rrmr!!rrp"reAcm!!$2f-[9I2h!!!!$fp9mrG`!!!!$rrcph!!!!! $2rph!!!!##jJ#J!!58aB3a1E!!"1qJ!%6R9)jaiJA8mNE`!H1#S!)$9mrrm!)($ r*8!!)Ja5!!4Q!!)898mr"#mU!!)I+J!'5'm!$NK[!!j`!+JM-"mf!'F!!HBU2'9 iG'ie4!!J,c`!J!!#,ca69&)M,ca"58j*,caQB@aX,ca`FQ9Q,caPH(4Z,`T1ZJ( +0J"2l`!FCcSU2'9iG%3e4!!J,c`!J!!#,ca69&)M,ca"58j*,caQB@aX,ca`FQ9 Q,caPH(4%,`T1ZJ'10J"2l`!F5N0QCM`U!#!e4!!J,c`!J!!$,ca69&)M,ca"58j *,caQB@aX,bS!)Mm',`8[#Nkk!NSf!%r[!"jR!!%q98mr"#mmF(*PCN)R5'm!$NK [!!j`!+JM-"mf!'B!!4ieE`!%!#!P9`!LB!!"%#SmCAKdEM9%!#![2!#!!!)[2&0 88L-[2%&*6NN[2(GKE'X[2("bC@B[2'9iG'i[#Nkk!1Sf!%r[!"aR1LSmCAKd4$9 %!#![2!#!!!)[2&088L-[2%&*6NN[2(GKE'X[2("bC@B[2'9iG%3[#Nkk!+if!%r [!"a+3fCJ2#S!)$9%!#![2!#!!!-[2&088L-[2%&*6NN[2(GKE'X[+J!L2`B["5m +6VS"DMB!6qm!(QGH98mr"#mmF(*PCN)R5'm!$NK[!!j`!+JM-"mf!'C!0@m!"!! J*9F!)Q!d98mr"#mmF(*PCN)R5'm!$NK[!!j`!+JM-"mf!'B@0@m!"!!J*9F!)Q! +0@m!"!!J*9F!)M9$!"jF6dcI"(JZRdje51FB)%r[rp`NE`!d1#S!)$9mrrm!)($ r*8!!)P922`3[,`!m(bS!"NK[!"")E`!3F!#S)c!I0J"Q!!#Z)#m!2,#[!$KR(P9 22`3[,`"!(bS!"NK[!!T)E`!@F!#S)c!I0J"J#Mk[!!B[E`!#!!K+3fCf2eF!(Lp [!!J!)$p[!%`!'$p[!%i!'KpU!!B!(#p[!%!!$#p[!%3!%#p[!%J!&&922bm!##m [!!C#Tcmm!!&)HJ%!5'm!(Nkk!Yi`(cB!CLBJ,`!JX+m!#'B3GY8eI2rr!#"`rb9 !!#*J$$9[!"i!)#9[!#!!)M!$6qm!*%cI""K1G8MR'#"2lrrL*'m!,MJU!#!eI2r r!#"`rb9!!#*96cm%,bm!0KmU!!C)E`!15'm!$R!!U#-`(cB!CRJrE`!f!"J[E`! i!"SrE`")!")rE`"+!"3IDJ!'!"B[E`!m!!B[E`"!!!S[E`"%!!j96cm[!!B[,`! %3UFr2!!"5(S!3NK[!"K1ZJ)J-"mf!'BQ)#m!'V#[!$KQ%(E90Acrr`!JF2mP3!! LB!`eE`!B!#!PE`!D!#)`!dr[!"j-h`3B6R9)jaJb6qrqP#a[!B`NE`'%PmYf!(M r)#i!*,#5CJ!"*#!Z!##`UJ!%CJ!"'%)RUCY96cmZ!"B[,J"N,bi!%Kmm!!'S'M! I1!!I2!!"UCY96kQ[-"mf!'B!!0J-UP088L-!#'Bb3LHTQeP2,ca69&)M2bS!$+J I)&mQ5"mm!!'TQb!,C`!!Y%KA2bS!$$mU!!j1ZJ08B$*C6bmU!!Jr+J!-U"mJAbC )98qTVc!I0J!J#fF5)&-3%%L!8N")`#"63pHL,Q!%GXjJD%(A,dJ"%MpU!")"&Lp U!"3"-%*[!4a"l`%!F!QLB$B!CJieE`%@!")PE`%`!"4J1!a$riKR"Ja$rp9Q)%S U!""R'N([!3"`"U*J0J"Q$M9[!4B!%L9[!6!!&'!-0Acrr`!5F2mP3!!8)'m"L"# m!!%-42rrC`3r"+QD6qm"E%cI6"JJAdr[!!a1d%MR'#!S,`!3*'m!&%TU!,4R#M! U!,D`DJ#dC(*f!9*U!,Be3`!J*83!0%(U!!4`#D*J08!!X%TU!,"Q,%KU!!4)DJ# b,bS!Z#"56T!!%#S!)J*!!""R%NSU!,*Q$#m+,bS!0%kkrja36e*$5QS!X'B'5LS !XQHX$'Vre3#`C`J-DZai!,"Q"%*U!,"6DJ#f60m%'%je,`02lrmm5Um!d'F!!)j 96cm[!1![,`$H,bm!hNK[!"")E`!46VS"J$!I0J"QEJ`[!!%!!@CJ98m[,`$B2bm !j%K[!!T1ZJ%S-"mf!'C1,fm!d!!)3Hm!#%(S!(![5!!H2fm!!J!L3Lm!H%*[!,K #,`#k2fm!e!#m3Qm![Lp[!-`!`%K[!!J[,`!)6VVqi$B[!-"36f!'GSKJ!RE12d- !i%r[!-3Q(b"I6qm!&%l351F3-%r[r`!QE`%@*'m"%#!+CcSeE`%8!"BJ#fB+3US !%N*U!"aJ'L",3pG`!"!68N")`+)Z3GFP5!!50Acrr`!F)%UL"cB!3US!%Q!#GXi r3`%D6qm"!%cI$!JJAdr[!!T1d%MR%$"2lrrJ*Qm!0#4[!$!J#fF%5K0Q%%)A3GF P5!!50Acrr`!FB!JP5`!53QS!($9[!$`!&L9[!$J!-#"+F!QLB$B!3US!%Mp$!$j 2l`!J60m-##"I6qm!$Nl3,`02lrq'98m[,`#+2bm!M%K[!!K1Z[mU-"mf!'B))'m !JM#[!"Br3`#-6qm!HLBI)&p2l`!+6Y")ja!`6qrrP#C[!)!NE`"m98mr,`#1,bm !M#m[!)a)E`!-6VVr5$!I0J"Q'K![!"i#3!!39X"%!"5!C`BQV`!`B!3QV`"N2d- !MNr[!'a-h``))&p2l`!56Y"19J!!@8m[2&088L-r,J!+UD!LEJ!-3K%J(fFL)%! J8$!B-Li!#'F@XN"L%R!!8d&R"K!BdF"JpK!38N#J,NjH)&p3Mdl3!!!1'8T[H5& `C@CQF(G`B`!!!!'f,,@3!!#3$3-!!J#3"2q3"!#3"Ja3!!!-8!!!$&!!!!(!!!3 %!2q3"!#3"d3!!!"!!!!!#3!!$K!#!33!rj!%!*!1!63!!!#!"!3%!*!)!3!!!$$ rN!3!N!6rN!3!N!F"!!!!#`!!!!%!!!#)!!!!N!!!!!%X!!!!!3#3%`X!N!J#!!! +!J!!'J)!!#S#!!!h!J!!4!)!!%m#!!"F!J!!DJ)!!(-#!!"q!J!!M`!"!*!&!`# 3"%S+3J"'!3!!3f&bBQpZ6'PL!&"#5%GPG&C*EQC[8hPZB`"33N4TFN0bC@&dC90 jEQ-!4f9d-9*PFfpeFQ0P!%GPG%PZC&0dFQPZC`"6CA45CA0-Ef&N!%0XEh0P8Q9 c4QPXC3"#E'pMDde[GQ9%BA4K!&*PFd9bFQpb!%CTEQ4'EfaNCA)!8%*(CA4$BA4 *EQC[8hPZB`")6h"PEP*PFdCTE'8!N"9m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq JI(iEH+[q!#!i!2rrX"i!)$J!rrq3!"i!)UJH!!!X!!!%3))#`(rMqhL!RJ!#L,i !"MM"!%3ii3"!5!!+iB""!"4mB!Fe3B)#L$qJCAJl[A4ZXri!)$Kq!!!mJ'9i2+" `FMc!CQ%mi%&*23"69$NJ!)!j3!!#1)4dEMLPC@BiaQaX11G156N)8L0)!!*eB!! !!(aJ"c9"JJ"-2k"PH$ZpG%5crJ!J1(i!!$b!CAJmS("b2-"QB6cJ38Np!&0815! !J$P!!!)iK(4%1+9PCMM'E'`ijdj*13K5)dJ!!L9J!!!!I'!(08##!)LS[J!JXri !)$J!!!13!!%!1$Kq!!!iR3!!J0i!)McJCQ%p!%&*25"69$P!!)!ijfaX13K156N T8L0)!!-PB!!!!(aJ"c9"JJ'`1(m!!$b!F()iS!!!1-%!4$MK!%!iK'9Q5!!*dB" "!"4mB!Fe3))"L+J"!%5`(J!JJ!%!3*!!(J!L5!!"G$qJCAJl[A4ZXri!)$Kq!!! mJ'9i2+"`FMc!Gf%mi%&*23"69$NJ!)!j3!!#1)4dEMLPC@BiaQaV11G156N)8L0 )!!&4B!!!!(aJ"c9"JJ"-2k"PH$ZpG%5crJ!J1(i!!$b!CAJmS("b2-"hB6cJ38N p!&0815!!J$P!!!)iK(4%1+9PCMM'E'Xijdj*13K5)dJ!!3&J!!!!I'!(08##!)L S[J!JXri!)$J!!!13!!%!1$Kq!!!iR3!!J0i!)McJGf%p!%&*25"69$P!!)!ijfa V13K156NT8L0)!!)"B!!!!(aJ"c9"JJ#-1(m!!$b!F()iS!!!1-%!4$MK!%!iK'9 Q5!!)VB""!"4mB!Fe3))!C+J"!%5`(J!JJ!%!3*!!(J!L5!!!8$Kr!!!mJ("b1+! !!$M"!%3ii3"!1)4PCNJ!#('!33!8I'!(08##!#LS!3"%X"i!))!"!%#3!"i!)NJ !!"5S!3"%X"i!))!"!%#3!"i!)V"q!"k!!3"S1#%!B(`)!kD$iIrmJm(rq)1Krr4 1J!!JI!J#TVlKrpb3!!%!#*3Krh!l3`!!1Z3!!$X&!!!lCJ!!1iF!!$ZS!!!lb3! !1qS!!+Xk!#!i!2rrX"S!)$J!rrq3!"S!)MKj!!!iP`!!L,S!"MM"!&`ii3"B5!! (aB""!"4mB!Fe3))!d(`BZ%""JJ!N1(N!!$LB!!#)ZJ!'1-%!9$MK!&")!!HCJ%% !&%J!!"5S!3"FX!%!9)!"!&L3!!%!8(aJ"c9!JJ#3!+J"!&5`!3"+J!%!8*!!!3" -Xm%!4,2K!%D)'J!'Q!%!5*0K!$L6J3!mNk%!3+KK!&b!J3"B1+!!!$M!!!'!iJ! X13%!1%J!"(eJ!!!!I'!(08##!$b!J3"-J!%!8(`%!!"!JJ!F1'$re6J!rrq`'J! J1!$rrj!!'J!L5!!!&+J"!%U`'J!JJ!%!6*!!'J!LJ!%!Q$JK!*!!I!J$TVVKrpa 1J!!JI!J#TVm"rq#3!!%!#*3Kri!l``!!1`8!!$[Q!!!l*`!!1dJ!!$YT!!!lLJ! !Uk%!ZUKq!#!i!2rrX"i!)$J!rrq3!"i!)SLq!!Bi`3"811%!8%J!"S@!33!8I'! (08##!)5c!3"+Nq%!6,1"!%5cS3"'L"i!"TJ"!%L6)3!iNd%!2*0K!%#SB3"8J)% !8$LJ!!!i`!!"J1)!,$N"!$K)!!1&B!!!!(aJ"c9!JJ!iJ!%!6(`!q!"!JJ!F1'$ re6J!rrq`(J!J1!$rrj!!(J!L5!!!&+J"!%U`(J!JJ!%!6*!!(J!LJ!%!L$JK!)" m#!1QZ`(ri%k!!#"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(q3$Z$!!!lT!! !I,mVH)"m!#5!(`!!I!-!3%##!FL!I!!JJ"m!"(`$!%"!JJ'i1'!!!%J!"Df!33! 8U(`!&S#F!'5![!!51-!!!8J!"Df!33!8I(iEH$KJ!!&)!!@&J%%!&%J!"Df!33! 8I'!(08##!95!I`!)2!1XV#J!8L0!JJ"81'!!!%J!"9Q!33!82'"69+LI!!`iBe) M5!!&MB""!"4mI"Yi1'!!!8J!"6@!33!8+"`!!%'#!43iB3#NU*m!$+Lr!!j)!!9 jJ%%!&%J!!&#!I`!)U*m!$%J!"8f!33!8I(`EH%J!"5Q!33!8+"`!!%'#!0#!I!! !1)%!T)#m!!#)"3!!I!8(G$LP!!&)!!9*J%%!&%J!!!K)!!#S1!%!T*!!!3"+U"m !%V!"!%k!(`!8N!!"!'Ji!!!!X!%!9$KK!$K)!!8YJ%%!&(aJ"c9!JJ!BU!%!6V! I!"+!!3"SN!!I!"4)!!"JI'!(0#`!riK"JJ!3I'!(0#`!rp9!JJ!iL"m!%#J!!!" "JJ!X1'%!1%J!"2Q!33!8I'!(08##!"LS!3"1X"m!%S!"!'L3!"m!&%J!!"3i!2r rX"m!%MJ!rrq3!"m!&$J!!!'B(3!!Im!(0#`!rrp"JJ!3Im2cH%J!"-@!33!8J!% "b$JK!F"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+QNq(rr*2"rrL6SIrdN!! "!!L8)Iq`1k-!!$[N!!#J(`#d+!!!!%'#!"5JI`#fS"m!Y(`$!%"!J!#m1m!!!D" r!,Bi!`!"X"m!YV2I!##6[`!d1(m!"%J!""@!33!8X(m!X+JI!,!X!!!!3))!3$K r!!3iR`#bJ,m!Z)'I!!")!!40J%%!&)JI!#*8!!Eh3B)!()JI!,)S!!!!3))!%)" r!$4rj2Yi5rrr@6[H!!'S(`#`,!!!!%##!"#)(`#b+!!!!%'#riLS(`#`,!$re8' #!"#S(`#`,!$XH%##!!`i!!!!X"m!X+"r!,Bi!rrrX"m!YS!"!&Ji)3"3I!J$TS2 Krrb$`IriJk(rp%k!!#"m#!+Q[f(rl*!!!3!)P#(qi$YM!!!lK3!!1kB!!$[(!!! lk!!!+"i!!%'#!+3iH`!!1,`!!$M"!$`ii3!i5!!"q@!!!!"mB!Fe3))!L)J"!$J S!!!"3))!F$Km!!!iQ`!!1+%!1NJ!!C&J!!!!I'!(08##!'#6`3"!1!%!X*!!!3" @U!%!1V!"!&Si!!!!Q!%!X$J!!!#`!3$`1!!!!*J"!2+cS3$d1!!!!,!"!2D6i3$ iJ'%!2$L"!%",rrijU'%!m%J!!"!iB2q)5!!!#$KJrmk!!3%S1#%")(`)!kDlBIr X6S!!)(`)!UD6iIrmN!!"!!L8)Il!I,mVH#JI!!""JJ"JX*m!&LJ$!!"!JJ!B1!! !!*!!(`!51!!!!,!I!"a)!!!S1)%!1)LM!!!iT3!"5!!#'B""!"3i!3!iN!!I!") i!2rrX"m!((rMqhK)!!*GJ%%!&$J!!!#3!"m!%NJ!!!JiB2r1J!%"5$JK!8"m#!1 QJq(rr%k!!#"m#!+QNq(rr*!!!3!)P#(rS(cI-hJS"3!!3B)!%)J&!!!S!!!!3)) !)$J!!!#B!3!i1!%!1*!!(`!51!$rrl!I!"a)!!!3N!#r!")i!!!!X"m!(,"r!"D 3!*m!-(rMqhK)!!'0J%%!&$J!!!#3!"m!%S!"!'Ji)3"JI!J$TS2Krra1J!!JI!J #TT2Krrb3!!%!#*3Krd"m[bYi1+%!1%[rrYPmB!Fe3))!$+J"!%k`(`!!J!%!b$J K!-"m#!1QJq(rr%k!!#"m#!+QNq(rr*2"rrL3!!%!#*3Kre!laJ!!1qF!!$M"!$K ,rrmKI'!(08##!%#)!3"@9!3'pMJ!!!"mK!"3-!6rrh`!)4#B(`!!L"m!!#J!!!" "JJ!3J!%!D*!!(J!!5!!!$)!"!*b3!"i!!)!"!,Ji)3#`I!J$TS2Krrb$`Iri6S! !))'#!##3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!3N!""!"5!$!!!J%`!"(`*!kC 1J!3JJB)!+*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"b3!%%!&)!-!!#!6!!%I!N $TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!$*!!33!8J!`!!)"-!!4 m#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!""!"5!$!!!J%` !"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!# !6!!%I!N$TNk!"##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3JJ!`!!*!!33!8I!N $TS"-!!41J!3J6S!!)!![)6J+)J93"!!!!@)!N!5!#!#3"4!!%!#3#8J!!!")!*! &"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%-!$m`2r`rrMrq2rirrM rq2rirrMrq2riIr`(rJ(q!I``!-c!Xc#-#)-)J-Mck*mSLLL++*rSqbJC,!FZ!Hi !I!!"5@8!!!!)!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"0hG!*!&"Hk3"J! '4*!'!!FLN!B!$`#3"rm!N!Ef)[m!r`!!!2&Q)[mKr`!!m4&Q)L)5m!$a%4&Q)L, `!2%4%4&Q)[!!rrm46rpLm!$e9%4%9I2`!299m899mr!!p99"p9Acm!$e9%6rrr2 `!2rr3Ip9mr!!!cpM,eAcp`!!!!p[9I2hF!!!!!rrmrG`!!!!!crrG`!!!!AUB!S !!%P-@%-6R!!!6[S!"%je51FB)&e2*'m!&MJU!#!eI2rr!#"`rb9!!#)-8J!%CJ! !MP922`3[+J!#(bS!"NK[!!j)E`!1F!#S)c!I0J"RB$9%!#![2,9X!!![2&088L! [2%P1593[2)aZC$B[2'9iG'i[2'9iG'i[#Nkk!%`f!%r[!"aR0&922`3[2'9iG'j #*dK[!!j)E`!1F!#S)c!I0J"Q&M9[!!3!)#9A!#*J#M9[!!3!)#9A!#)e3`!HA%p -h`3B,Tp1G8MR'#"2lrrF*'m!0$JU!#!eI2rr!#"`rb9!!#*96cm%,bm!2"mU!!C )E`!35'm!%(!!U#-`(cB!CJ!!VL![!$b`V`!iCaj96cm%,bm!3"mU!!C)E`!+5'm !&R!!U#-`(cB!B!SqV`!',fm!!J!)5N0QGMpA!"i[E`!)!#!rE`"-!"JrE`"1!"S IDJ!'!"`[E`"!!!`[E`"%!"![E`")!"496cm[!!J[,`!'3UFr2!!"5(S!3NK[!"j 1ZJ)J-"mf!'BQ)#m!),#[!!KQ%(E90Acrr`!JF2mP3!!LB!`eE`!H!#!PE`!J!#) `!dr[!#4-h`3B6R9)jaJb6qrqP#a[!B`NE`'%PmYf!(Mr)#i!*,#5CJ!"*#!Z!## `UJ!%CJ!"'%)RUCY96cmZ!"B[,J"N,bi!%Kmm!!'S'M!I1!!I2!!"UCY96kQ[-"m f!'B!!0J-UP088L-!#'Bb3LHTQeP2,ca69&)M2bS!$+JI)&mQ5"mm!!'TQb!,C`! !Y%KA2bS!$$mU!!j1ZJ08B$*C6bmU!!Jr+J!-U"mJAbC)98qTVc!I0J!J#fF5)&- 3%%L!8N")`#"63pHL,Q!%GXjJD%(A,dJ"%MpU!")"&LpU!"3"-%*[!4a"l`%!F!Q LB$B!CJieE`%@!")PE`%`!"4J1!a$riKR"Ja$rp9Q)%SU!""R'N([!3"`"U*J0J" Q$M9[!4B!%L9[!6!!&'!-0Acrr`!5F2mP3!!8)'m"L"#m!!%-42rrC`3r"+QD6qm "E%cI6"JJAdr[!!a1d%MR'#!S,`!3*'m!&%TU!,4R#M!U!,D`DJ#dC(*f!9*U!,B e3`!J*83!0%(U!!4`#D*J08!!X%TU!,"Q,%KU!!4)DJ#b,bS!Z#"56T!!%#S!)J* !!""R%NSU!,*Q$#m+,bS!0%kkrja36e*$5QS!X'B'5LS!XQHX$'Vre3#`C`J-DZa i!,"Q"%*U!,"6DJ#f60m%'%je,`02lrmm5Um!d'F!!)j96cm[!1![,`$H,bm!hNK [!"")E`!46VS"J$!I0J"QEJ`[!!%!!@CJ98m[,`$B2bm!j%K[!!T1ZJ%S-"mf!'C 1,fm!d!!)3Hm!#%(S!(![5!!H2fm!!J!L3Lm!H%*[!,K#,`#k2fm!e!#m3Qm![Lp [!-`!`%K[!!J[,`!)6VVqi$B[!-"36f!'GSKJ!RE12d-!i%r[!-3Q(b"I6qm!&%l 351F3-%r[r`!QE`%@*'m"%#!+CcSeE`%8!"BJ#fB+3US!%N*U!"aJ'L",3pG`!"! 68N")`+)Z3GFP5!!50Acrr`!F)%UL"cB!3US!%Q!#GXir3`%D6qm"!%cI$!JJAdr [!!T1d%MR%$"2lrrJ*Qm!0#4[!$!J#fF%5K0Q%%)A3GFP5!!50Acrr`!FB!JP5`! 53QS!($9[!$`!&L9[!$J!-#"+F!QLB$B!3US!%Mp$!$j2l`!J60m-##"I6qm!$Nl 3,`02lrq'98m[,`#+2bm!M%K[!!K1Z[mU-"mf!'B))'m!JM#[!"Br3`#-6qm!HLB I)&p2l`!+6Y")ja!`6qrrP#C[!)!NE`"m98mr,`#1,bm!M#m[!)a)E`!-6VVr5$! I0J"Q'K![!"i#3!!39X"%!"5!C`BQV`!`B!3QV`"N2d-!MNr[!'a-h``))&p2l`! 56Y"19J!!@8m[2&088L-r,J!+UD!LEJ!-3K%J(fFL)%!J8$!B-Li!#'F@XN"L%R! !8d&R"K!BdF"JpK!38N#J,NjH)&p3Mdl3!!!,+8T[H5&`C@CQF(G`B`!!!!'f,,- J!*!0!`!#!*!%rj!%!*!'#93!!!P8!!!*9!!!!F!!"!3!rj!%!*!(4!!!!%!!!!! *!!!,)!)""!$rN!3!N!i"0!!!!)!%"!3!N!J"!!!!-2q3"!#3"2q3"!#3"`%!!!! ,!!!!!3!!!)J!!!#3!!!!!5`!!!!"!*!6#`#3#!)!!!S#!!!D!J!!+J)!!$F#!!" %!J!!6`)!!&`#!!"U!J!!F`)!!(i#!!#2!!%!N!8$!*!%5JT#!%B"!!"$BA*LEfj -D@)!8%*)4f9d9NPZCQp6H@jM!&"#4'Pb3h*PBA4P8hPZB`"(CA3a8Q9cEh9bBf8 !4f9d5@jN8h4bD@jR!&0PG&*PFda[B@3!3fa[Ff95CA0'D@aP!%*XEf0V6@pfC84 KG'%!8Q9c4A*bEh)!4QPZC%C[E'4PFJ"33NGPG%0KG%PZCQp6H@jM!%K2F'9Z8Q9 c4QPXC3#3&A`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hLVrJ!J1!$rrl!H!#!i!2r rN!!H!#+S(J!!,!!!"%##!-"rirYiJ*i!!SLq!!Bi`3!m11%!1%J!"qQ!33!8I'! (08'#!)LcrJ!J1(i!!$b!CAJmS'9i2-#-EMcJ58ip!&0815#eE$P!!!!iK(4Z1+9 dEMM'C$BijdP813K5)%J!!(PJ!!!!I'!(08'#!&!iI`!!2)"PH$LJ!!!i`3!m11% !1$L%G'j)!!GjJ%%!&(aJ"c9!JJ!SU!%!2,!H!##!!3!iN!!H!#*)!!!8U!%!2,! H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JI!J#TVlKrpb 3!!%!#*3Krh!l3`!!1Z3!!$X&!!!lCJ!!1iF!!$ZS!!!lb3!!1qS!!+Xk!#!i!2r rX"S!)$J!rrq3!"S!)MKj!!!iP`!!L,S!"MM"!&`ii3"B5!!'dB""!"4mB!Fe3)) !d(`BZ%""JJ!N1(N!!$LB!!#)ZJ!'1-%!9$MK!&")!!DPJ%%!&%J!!"5S!3"FX!% !9)!"!&L3!!%!8(aJ"c9!JJ#3!+J"!&5`!3"+J!%!8*!!!3"-Xm%!4,2K!%D)'J! 'Q!%!5*0K!$L6J3!mNk%!3+KK!&b!J3"B1+!!!$M!!!'!iJ!X13%!1%J!!iPJ!!! !I'!(08##!$b!J3"-J!%!8(`%!!"!JJ!F1'$re6J!rrq`'J!J1!$rrj!!'J!L5!! !&+J"!%U`'J!JJ!%!6*!!'J!LJ!%!Q$JK!*!!I!J$TVVKrpa1J!!JI!J#TT2Krrb 6`IriNk(rp*1"rr#3!!%!#*3KrN!lJ`!!1k3!!(br+hL!I!!NJ"m!!(`$!%"!JJ( )J(`!))!I!!4m!`"!3))"Z$KJ!!")!!@YJ%%!&+Km!"D!R!"NJ,`!%MM!!!&)!!@ YJ%%!&(aq'hJiB!!"5!!&KB""!"4)!!@YJ%%!&(aJ"c9!JJ&8J(m!#$`$V+`S!&) M3))!9$KJ!!")!!9CJ%%!&$aJ8e5SR`!-1'05)dJ!"Bf!33!8I(`EH$KJ!!&)!!8 eJ%%!&#JF!!""JJ%81'%!T+LI!!bS[`!15!!&HB""!"4)!!"3J(m!#+LI!!a)!!9 0J%%!&(am'hK)!!8TJ%%!&#JF!!""JJ$3J(`!!$L"!+5![!!!L!8!!(`&"h3iT3! "5!!&5B""!"4)!!!)5!!!U$J"!+53!!%!5UJI!"+`!3"1J"m!&*!!!3"S1!!!!,! "!&3iB3!i5!!&,B""!"4mB!Fe3))!'+J"!%k`(`!5J!%!D*!!(`!85!!!B(aJ"c3 X!2q)3B)!%(aJ"c3X!2r93))!1)JI!"!S!!!!3B)!,$KK!$K)!!6jJ%%!&(aJ"c9 !JJ!BU!%!6V!I!"+!!3"SN!!I!"4)!!!81!$rrl!I!")i!2rrN!!I!"3i!!!"Q"d !!(r!"c3X!2rr3B)!%(r$mhK)!!6&J%%!&)!"!FJi)3(!I!J$TS2Krrb$`IriJk( rp)1"rr"1J!!JI!J#TT2Krrb6`IriNk(rp*!!!3!)P#(rX$ZM!!!lj!!!S"m!Y#J !!!""JJ!8S(m!YU!I!,4m!`"!3)!![$[!!!'JI`#f1!-!!E!I!,Dch`!JNlm!0$K r!!4)!!39J%%!&,"r!,#S(`#`,!!!!%##!%!iI`!%1*m!XS#r!,L"R`!!5!!%6B" "!"5)(`!L9!!'pd'#!"b)(`#b+!!!!%##!"#!I`!dIq6lH%[rreNlhJ!"U"m!X#` !!!"!JJ!3L"m!XLJ!!!""J[q)U"m!X#`!rp9"JJ!3U"m!X#`!l(K!JJ!-1!!!!,! I!,#JI`#f1!2rrl!I!,D!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!JI!J#TVp Krqb3!!%!#*3KrZ!lB`!!1i8!!$ZQ!!!la`!!1qJ!!#JH!!""JJ#N1(X!!$Lm!!! i`3!m11%!1%J!!IPJ!!!!I'!(08##!)L)!3!i+!!!!8##!(!iI!!!1*X!!$LK!$T )!!'4B!!!!(aJ"c9!JJ"JNm%!3$J"!,#3!!%!9UJ"!$U`!3"D1!!!!*J"!,!i!!! !X!%!m$J!!!#B!3$bXk%!p$J!!!#`!3$fNq%!q)"K!$`iJ3"!5rrq1DKK!2")!!! 31'$rL%J!!!JiB2r1J!%"+$JK!5"m#!1QZf(rl%k!!#"m#!+QNq(rr*!!!3!)P#( q`(br+hJS(`!!3B)!B,#I!"BS!`!!3))!'$J!!!#3!"m!%MJ!!!#`(`!F5!!!+$L "!$L)S`!!1+8!!8J!!KQ!33!81!%!1*!!(`!51!$rrl!I!"arirYi5!!#AB""!"3 i!!!!N!!I!"*)!!!)1'$rcS!"!8Ji)3&!I!J$TS2Krra1J!!JI!J#TT2Krrb3!!% !#*3Krk"mhc0i+!8!!%'#!"#)"3!!+!!!!%##!#!i!!!!Q!%!1$J"!$L3!"m!%MJ !rrq`(`!F5!!!%*!![`!51!!!!,!I!"b`I`!@N!#I!$"rirYi5!!"MB""!"3i!!! !N!!I!"+!!3"S1#%!B(`)!kD$iIrm6S!!)(`)!UD6iIrmN!!"!!L8)Ip!I,mVH$L K!$K,rrlCI'!(08##!!bS!3"1X"m!!)!"!-Ji)3$!I!J$TS2Krra1J!!JI!J#TT2 Krrb6`IriN!!"!!L8)Ip31mB!!$[R!!!i`3!i5rrr)AaJ"c9!JJ"!L!%!9P3%"[B i!!!!I)3!8$!%rrpm!#%3Q"m!!)JI!!!S!!!!3B)!%)!"!'L3!"i!!%J!!!b!!3# FN!!H!!#!!3#i1#%!X(`)!kD$iIrmJm(rq%k!!##"JJ!JN!""!"5!$!!!J%`!"(` *!kC1J!3JJB)!%*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#L3!%%!&)!-!!#!6!! %I!N$TNk!"##"JJ!FN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!#*!!33!8J!`!!)" -!!4m#31Q6S!%))'#!!b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5!$!! !J%`!"(`*!kC1J!3JJB)!**!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!53!%%!&)! -!!#!6!!%I!N$TNk!"##"JJ!8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*!!33! 8J!`!!)"-!!4m#31Q6S!%))!-!!#3!%%!&(`*!kD!6!!%6S!%)%k!!#!!N!d[)6J +)J*8"!!!!C)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!8 3!"!!N!8#!*!&%!!3!*!%F!$m!2r!rr$rq2rirrMrq2rirrMrq(riIrarrRrq!(a `!2`![m#2F)1BJ2L!1)!ircM011@iB,KPZ%'iIrJ!H!!!$c`!!!!1!!$rN!B!!Fb 3"2rr!!+CN!6rr`!$CT!%c-`!"'D3"*QC!!8c-fCQc-`!"M13"*QC!!FcN!4QCJ! )!*!%hGd!#Gf3"J!+Zj!'!!ZUN!B!$)L3"J!0)T!'!!m!N!B%G`#3"NGdG`#3"6& RG(Gh!!!!34&RFb0h!!""%4&RFLG`!%%4%4&RG0!!34'3"(I3!'%4N!3hd!"[rrr r%6I3!'qU9Em40p!!IrQ8[r%hd!!(qCQlm6I3!!rkZ,ma0p`!$lZl[c%hh-!0rrr peMIF`!#3"!Gph!#3"14J#J!!58aB3a1,!!"1qJ!%6R919[rk51FB)#4Z!!JpI2r rrrj`rbe!rrSQ+J!#$&)!"'B!!*j96cmU!#![!amU!!C)E[rq5'lrqR!!U#-`(cJ !Cfi-Jm4fEf0Q)LBmCRC[Be922bS!)#m$(c`!!8KZrrj)E[rkF!#S)c!I1!"+4'G !$)0QE'jdCJJQ2(4PEA"J"LBmCAKdEP922bS!)#mmCAKdEJb$G'9YF&I!4!")J"m !5'lrrNKZrrT`!+JM-"mi!$9Zrri!)#9ZrrS!)M9%!"j-h`3B6PiZRdjeK'eKD@i !N!8#38T[H5&`C@CQF(G`B`!!!!'fAT`-!*!0!`!#!*!%rj!%!*!'!5J!!!%S!!! "+!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!#3!)""!$rN!3!N!q%!!!!J!3%"!# 3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`% !N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2 Krrb6`IriN!!"!!L8)Iq`I(iEH$J!rrq`!3!m1!$rrj!!!3!iJri!!UJH!!!X!!! %3))!a+Kq!#"rj2YiL,i!"MM"!$`ii3!i5!!!aB""!"4mB!Fe3B)!M$`I1iSS!'p M3))!+$rJCRBlrfpMU(i!)$LI!!!iS!!"1-%!2$MK!$K)!!#0J%%!&(aJ"c9"JJ" 82"qCP#J!ER4!JJ!32q"dC6[rEA")!!!-2q"PH$[rG'kSIJ!J2)"PH$bJG'8iT@e `I"mS8(`!!$48"Giq1-%!2$MK!$JiK(4Z5!!!0B""!"5S!3!mX"i!))!"!$L3!"i !)V"q!"k!!3"B1#%!8(`)!kD$iIrmJm(rq%k!!##"JJ!!N!""!"5!$!!!J%`!"(` *!kC1J!3J!*!)$!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J# 3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri $r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$ rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r! 2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#m r!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8 !N!6r2cp9!*!&rr93!!!!J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm$*'i!#$e mrrrrrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'F 1F!)Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*! &!F&+EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#S!!!!U!! !!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3%"!#3#!% !!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J #!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb 3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#SI`!JJ*m !!SLr!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!)X!%!2$K J!!#S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!# 3!%%!&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J !N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIra rr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm !r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B !$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%) [!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$ r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!$NB!S!!%P-@%-6L`!!6[S!"%j e6PErqNMR'#!NEJ!)2AcrrrrqF2mY32rk*LS!!Ja5!!4Q!!#H98mr+J!J,`-I+J! '5'lrrNKZrrT`!+JM-"mi!'GZ$)2%GQpMCL)Q2'CfEf096cmU!#![!amm!!&)E[r q5'lrqR!!U#-`(cJ!5N4R3!b$CQaZG'B)*MadC@e`B!BQ2'9iG'j96cmU!#![2'9 iG'i-Jh4PEA"A`%3!5)!I!%KZrrj)E[rkF!#S)c!I1!!eE[rq!#!PE[rk!#)e4!! H60m%'%jH,Tp1GB4YB@PZ!*!&!N&+EhNKF'9QCR"hF'-!!!!"YPkF$!#3$3-!!J# 3"2q3"!#3"J%S!!!"+!!!!5J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!N!#!33 !rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'! !!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QP ZC%C[E'4PFJ#3'(`)!UD6iIrmNm(rq*!!!3!)P#(rX(aq'hJi!2rrX!%!2$J!rrq 3!!%!1)2q!!+S(J!!,!!!"%##!-5SIJ!JIq6lH)Lq!!Bi`3!m11%!1%J!!-@!33! 8I'!(08'#!)`m(cZ++!"[Bd##!#Jri'Cf1rp[BkKq!#!iR`!!1+!!!6M"!$`ii3! i5!!!MB""!"4mB!Fe3B)!9$`IQC3S!'jd3))!%$rJG'8lrfe`5!!!$$rJCAJlrh4 ZU(i!)$b!CAJmS(4P1+9YF(`I+&"m!!!d9!AH2MM"!$`ii3!i1)4dENJ!!$@!33! 8U!%!2,!H!##!!3!iN!!H!#+`IJ!HJ!%!@$JK!&"m#!1QJq(rr)2"rrK1J!!JJB) !!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3#!`!!!&5!*!%J!J!N!83!"!!N!P)!!! !5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIra rr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki $R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+ 3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4% 83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`! !!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!)"J#J!!58aB3a1@!!"1qJ! %6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CMj96cmU!#![+J!#(bS!"NK Zrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB!0@lrrJ!J*@lrqJ!L08-!(LB I*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"M!!!!!EBXYqB!N!d$!!)!N!6 rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!!!!!-!!!!!3!!!F!#!33!rj! %!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`%!!!!"!!!!!3!!!'!!!!" N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J"$BA*LEfj-D@)!4QPZC%C [E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq`!3!m1!$rrj!!!3!iU"m !!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K)!!"0J%%!&(aJ"c9"JJ!B1!! !!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!iN!!I!#+`I`!HJ!%!@$JK!&" m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC1J!3J!*!)$!!!!@S!N!5 !#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!! 3!*!%1!$qi2rirrMrq2rirrMrq2rirrMrr[rr2rmrrcrq2r`i!-lJXcL-#)-BJ0L !1,miSVLMZ1#qi,mJ[b#r)2irr!!!)!N!!!!*!!$rN!B!!Fb3"2rr!!+CN!6rr`! $CT!%c-`!"$13"*QC!!8!N!4QCJ!'lT!'!!HlN!B!##+3"J!2!*!(4&!!N!9%)N4 34&!!!&%d)N4K4&!!83)d)L*L8!"4%3)d)L03!&%4%3)d)e!!84%4%4*$8!"4rrr r%N03!&(fC[Eb3e!!8ICQrr*$8!"6pQCRmN0BJ&AfCQIb3eL)!2CQCr*$@)J!pQC RmN0BL!$fCQIc3eL!!2rrrr99L!#3"*!!B!S!!%P-@%-6R`!!6[S!"%je6PErqLm +,`-NEJ!)2AcrrrrqF2mY32rk$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR! !U#-`(cB!Caj96cmU!#![2'0dFQa#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[r k!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbi93# 3$3-!!J#3"2q3"!#3"l3!!!#d!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!! "d!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!! "!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENa TBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2r rN!!"!$LS(`!!,!!!"%##!&bSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'! (08'#!#5SI`!J2)"MG$LJ!!!i`3!m11%!1$L%FQa)!!!aJ%%!&+J"!$b`(`!JJ!% !1*!!(`!LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4 m#31Q6S!%)!#3$!`!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4) !N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!r q!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J! !rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr `$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3 [2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp 9!*!%rcmr93#3"Ire8!!!!*!!B!S!!%P-@%-6R3!!6[S!"%je6PErqLm+,`-NEJ! )2AcrrrrqF2mY32rk$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB !Caj96cmU!#![2'4PFfY#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[rk!#)e3`! H*KmNAdjH,Tp1GB4YB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbiE`#3$3-!!J# 3"2q3"!#3"l3!!!#d!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"d!)""!$ rN!3!N!q%!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!! !!'3!!!"m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@j N4QpXC'9b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$L S(`!!,!!!"%##!&bSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!(08'#!#5 SI`!J2)"NC6LJ!!!i`3!m11%!1$L%FfY)!!!aJ%%!&+J"!$b`(`!JJ!%!1*!!(`! LX(m!(S!"!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S! %)!#3$!`!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*! &%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`! q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!( -N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m 83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C! %,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcm r93#3"Ire8!!!!*!!B!S!!%P-@%-6S!!!6[S!"%je6PErqLm+,`-NEJ!)2Acrrrr qF2mY32rk$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cm U!#![2("bC@C#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdj H,Tp1GB4YB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbi1J#3$3-!!J#3"2q3"!# 3"l3!!!#d!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q %!!!!J!3%"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!" m!!!!!3#3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9 b!*!BI!J#TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!! !"%##!&bSI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)" `FMLJ!!!i`3!m11%!1$L%C@C)!!!aJ%%!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S! "!&Ji)3"3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!` !!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*! &!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&Q B4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`! #QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r! !$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a' 3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ir e8!!!!*!!B!S!!%P-@%-6RJ!!6[S!"%je6PErqLm+,`-NEJ!)2AcrrrrqF2mY32r k$&)!"'C198mr+J!J,bS!!KmU!!C)E[rq5'lrqR!!U#-`(cB!Caj96cmU!#![2(4 bFfK#*dKZrrj)E[rkF!#S)c!I0J!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4 YB@PZ!*!&!G&+EhNKF'9QCR"hF'-!!!!"YLbiB`#3$3-!!J#3"2q3"!#3"l3!!!# d!!!!Y!!!!4!!"!3!rj!%!*!(%!!!!!`!!!!"!!!"d!)""!$rN!3!N!q%!!!!J!3 %"!#3#!%!!!!%rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3# 3%`%!N!J#!!!+!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J #TT2Krrb3!!%!#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&b SI`!JJ*m!!SLr!!Bi`3!m11%!1%J!!&Q!33!8I'!(08'#!#5SI`!J2)"dFMLJ!!! i`3!m11%!1$L%FfK)!!!aJ%%!&+J"!$b`(`!JJ!%!1*!!(`!LX(m!(S!"!&Ji)3" 3I!J$TS2Krra1J!!JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%)!#3$!`!!!&5!*! %J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4! !%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%" N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm !!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L) K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!m b%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!)" J#J!!58aB3a1@!!"1qJ!%6R919[rk,`S[!b4Z!!JpI2rrrrj`rbe!rrS-8J!%CMj 96cmU!#![+J!#(bS!"NKZrrj)E[rkF!#S)c!I0J"R$R!#,8$rqMeU!!MrrRB!0@l rrJ!J*@lrqJ!L08-!(LBI*&p1ALkI6R@%E@&TEJ#3"3("5Qpj)A"PCQC`Gh"M!!! !!EBXYqB!N!d$!!)!N!6rN!3!N!HS!!!!U!!!!+J!!!%3!!3%!2q3"!#3"a!!!!! -!!!!!3!!!F!#!33!rj!%!*!2K!!!!)!%"!3!N!J"!!!!"2q3"!#3"2q3"!#3"`% !!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!N"-"!*!)!J!!#J!"!*!&!J#3"%S!4J" $BA*LEfj-D@)!4QPZC%C[E'4PFJ#3'(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J!rrq `!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K)!!" 0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!iN!! I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`*!kC 1J!3J!*!)$!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3) !N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$ r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B !!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!! !$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m 4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6 r2cp9!*!&rr93!!!!J'!+!!"*6&K$%jB!!%lk!!41G8j@rrS[#Lm$*'i!#$emrrr rrR$r,8$rqJa5!!4Q2P922bS!)#mU!!)I+J!'5'lrrNKZrrT`!+JM-"mf!'F1F!) Y32rk2@S!#2rqGJ!eE[rq!#!PE[rk!#)e3`!H*KmNAdjH,Tp1GB4YB@PZ!*!&!F& +EhNKF'9QCR"hF'-!!!!"YLbhjJ#3$3-!!J#3"2q3"!#3"kJ!!!#S!!!!U!!!!4! !"!3!rj!%!*!(%!!!!!`!!!!"!!!"`!)""!$rN!3!N!q%!!!!J!3%"!#3#!%!!!! %rj!%!*!%rj!%!*!(!3!!!!%!!!!"!!!!B!!!!'3!!!"m!!!!!3#3%`%!N!J#!!! +!!%!N!8#!*!%5J"'!%0KFQ*[ENaTBJ"'D@jN4QpXC'9b!*!BI!J#TT2Krrb3!!% !#*3Krl"mIaYi1!$rrl!"!$`i!2rrN!!"!$LS(`!!,!!!"%##!&#SI`!JJ*m!!SL r!!Bi`3!m11%!1%J!!%f!33!8I'!(08'#!"Ji!!!#N!!"!$LS(`!)X!%!2$KJ!!# S!3!mX"m!))!"!$L3!"m!)V"r!"k!!3"B1#%!8(`)!kD$iIrm6S!!))'#!!#3!%% !&)!-!!#!6!!%I!N$TNk!"#!!N!J-!!!#ZJ#3")!3!*!&%!!3!*!*5!!!!%J!N!8 )!!%!#!#3"J'5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3i!2lJrrMrq2rirrMrq2r irrMrq2rqrj!'IrprrMJ!lZ#rZ+5)T*Mrk*!!1*!!1*!!10!if$lBIrrrjIpNrhr q!!!MlJ!!!#-!!2q3"J!'rrr-c2rr!!Irrmb3"!!Nc-crN!3!+Xb3"2rr!#[-N!B !--c-QCRrr`!ac-bCQFc-!$,-c*Q3"!"1QCR-c2rr!&5CN!6rr`"9QC!%c-`!@jQ CCQE-c!"FQCPQCTQC!(jQN!6rr`"rCT!%c-`!J'D3"*QC!)CQCM-cQCN!KfCQ-c0 QCJ#N-c0QCTQC!+8c-fD3"!#T-j!%c-`!UM13"*QC!+XcN!4QCJ#X-j!'!0!!!$1 3"!$J%4%!N!Ad!*!%%4%!pHk3"J$fhC!'!2HlN!B!qRH3"J$l9C!'!2a%N!B!r5+ 3"J$r!*!)J+Vr!*!,J+Yq9(q!r`#!Urm!N!9r+[Z(KhqVUhp8Ik[r!!!!T#U(!!# V!2@V9&48U`!!!)BUKbXaUrC8r&48IkS!!!#Vqeb(Ui#VUi#UJ&@V!!!!KbXVUc% Vp[Ba9DZTU`!!!)If"UXUpJ!!*2HVJ+X!!!#(9IDV9IB!!#T9UkUV!!!!Ke`(Ue8 U!!BV9DZ!U`!!!)GF+Ub!93BN-9@VUU[rr`$lA$'!Uc!N"NkVUiDVrj!%KrU'Kk@ UUiDVd)#Vi2q3")Fb@reEJ+[lUkUVrrrr!2q(pM'V*&@VUUZ!rIrrr`$rKPb(J+Z 'UkZVrI6rr`!!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N #!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm !r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj! '!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r! !!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`! 2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*! %rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J# 3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri $r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$ rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r! 2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#m r!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8 !N!6r2cp9!*!&rr93!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J% 5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r` 2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B !!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d) [m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C! %,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lm r93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*! '!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr` rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!! !"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!8 23Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m 4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2m b,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3 !N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIra rr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ !!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!# 3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm !$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!! !rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!% !"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIra rr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!! 9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r `!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3 I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e! !!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33 !!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIra rr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i !!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*! ($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a' 3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5m r8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!!%!#3#8J!!!")!*! &"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIrarr(rmIra rr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m !2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m !N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a%4%44#,`! 2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc) 4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J !N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrKrr(rmIra rr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm !r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B !$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%) [!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$ r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J!N!83!"!!N!P)!!! !5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIra rr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki $R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+ 3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L)[!!m4%4% 83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`! !!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4!!%!#3#8J !!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!"qB(riIra rr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a!('!F1"` 1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-`!"%53"J! &)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44#)Lm!$a% 4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`!!rc)4%5m r!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#3")!)!*!&%!!3!*! *5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3B!(jJIrK rr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a!(%!FB"` i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6-c!!%4*! '!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a%4&%)L,`! 2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5mr!!$r-K% 4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J!N!83!"! !N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!#3""J!IQ" rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4!(%!F3"a J($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD3"-c-!!4 %N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`!2%4%83L) [!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4%4,cm!!2m b%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5!#!#3"4! !%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!!3!*!%'!" qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4!&%!F3"a !('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`!$CT!%c-` !"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L%[!!m4%44 #)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c)4%4%[2`! !rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J#3")!)!*! &%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!83!"!!N!3 B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4!C%!83"a !(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2rr!!0QN!6 -c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%)L)5m!$a% 4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`!2-K%4%5m r!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!&5!*!%J!J !N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J#3"4!!%!# 3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4"K%"N3"4 !(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC!%rrm!!fD 3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a%83L)K,`! 2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#mr!!mb%4% 4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!!!!9)!N!5 !#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8#!*!&%!! 3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK'"%'%3'4 !&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+CN!6rr`! $CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!!2%44#)L% [!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C!%,cm!$c) 4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr93!!!"8J# 3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!#3"3)!N!8 3!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ"CQ%B%3B4 !C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm!!TQ3"2r r!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr`!!m4&%) L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m4N!3[2`! 2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!Arp9!!!!& 5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!!3!*!&!J# 3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!"QB&QB4J4 "K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6rr`!#QC! %rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lrb(r!!$a% 83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm!$a'3"#m r!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93#3"Ire8!! !!9)!N!5!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!B"%J#3#3)!N!83!"!!N!8 #!*!&%!!3!*!%'!"qB(riIrarr(rmIrarr(rmIrarr$rm$ri$r`$r!$iB!'CJ@CK '"%'%3'4!&%!F3"a!('!F1"`1(J1I!2m!2J!!&EJ!!!!'!!$rN!B!!Fb3"2rr!!+ CN!6rr`!$CT!%c-`!"%53"J!&)T!'!!m!N!F2m!#3"3p#,r!2m!!!$a4#,r)Im!! 2%44#)L%[!!m4%44#)Lm!$a%4%44#,`!2%C!%(bm!$a'3"#mr!!m4N!3[2`!2%C! %,cm!$c)4%4%[2`!!rc)4%5mr!!!!rc)4,cp3!!!!rc)[2e8!N!6r2cp9!*!&rr9 3!!!"8J#3")!)!*!&%!!3!*!*5!!!!%J!N!8%!!%!"!#3"J%5!*!*!J#3"4!!%!# 3"3)!N!83!"!!N!3B!(jJIrKrr(rmIrarr(rmIrarr(rm2r`2rJ2r!2m!2KJ!CQ" CQ%B%3B4!C%!83"a!(%!FB"`i(!iH!jm!r`!q!!!9Z!!!!!B!!2q3"J!"c*!%rrm !!TQ3"2rr!!0QN!6-c!!%4*!'!!8LN!B!$`#3"`r`!*!&$d)[m!r`!!!2&%)[mKr `!!m4&%)L)5m!$a%4&%)L,`!2%4%4&%)[!!m4N!3I,`!2%C!%,cm!$a'3"#mr!!m 4N!3[2`!2-K%4%5mr!!$r-K%4,cm!!!$r-K%[2e!!!!$r-Lmr93#3"2mr2e8!N!A rp9!!!!&5!*!%J!J!N!83!"!!N!P)!!!!5!#3"33!!3!%!*!'!4)!N!N#!*!&%!! 3!*!&!J#3"4!!%!#3""J!IQ"rq(rmIrarr(rmIrarr(rmIr`rr!rq!rm!r`!q'!" QB&QB4J4"K%"N3"4!(%!F3"aJ($JF$Ki$R`$r!$i!!"@i!!!!"J!!rj!'!!(-N!6 rr`!#QC!%rrm!!fD3"-c-!!4%N!B!"5+3"J!2!*!($r!!N!823Lr`$r!!!!m83Lr b(r!!$a%83L)K,`!2%4%83L)[!!m4%4%83Lm!$a'3""m[!!m4N!3[2`!2%C!%,cm !$a'3"#mr!!mb%4%4,cm!!2mb%4%[2`!!!2mb%5mr8!!!!2mb,cp9!*!%rcmr93# 3"Ire8!!!&2!!E`!#58CXC!!!!!315@jcG'&XE#"'EfaNCA)!N"0e-!#3"(0PF$% !!!!%!5d!N#8#8dCTE!!!!!3,8hPcG'9Y)%CTE'8!N"Ce4!!!!!&2G'Kb!!!!"!C 2G'KPFXN!N"Ye6J#3"(0PF$)!!!!%!5d!N#8#3A0V93!!!!3)3A0V)&9cCA)!N"P eBJ!!!!*'3@0d!!!!""0'D@jN)%&MG'P[EL"5CA0eE(6*!*!1G@`!!!!#3R45G!! !!!388Qp[G#"[CL"6G'&bG(9`)%4TFfX!N!eeGJ#3"(0PF$-!!!!%!5d!N#8#E@& MF`!!!!%08hPcG'9Y)%C[E'4PFJ#3&(@+!!!!!Q9iG'i!!!!"%89iG'9ZFfP[ER- J4QpXC'9b!*!3GC3!!!!#Bh4bE!!!!!%93fpZG(*[E#"3B@jPE(-J4QpXC'9b!*! -GCi!!!!#F(*PCJ!!!!%58(*PCQ9bC@jMCA-J4QpXC'9b!*!2GDJ!!!!$B@eZG3! !!!%A3A"`E'8J6@9ZG5"*G'9YFb"'EfaNCA)!N!TeXJ!!!!*NCA0V!!!!!3j%CA0 VG'p`)%C[E'4PFJ#3%h@m!!!!!R0dFR3!!!!"&&0dBA*dGA!J5A4PEA-J4QpXC'9 b!*!0GFB!!!!$G'9YF!!!!!%@9'9YF'pbBA*j)%PdC@ec)%C[E'4PFJ#3#hA3!!! !!R"bER3!!!!"&&"bD@jd)%e[EQPdEh)J4QpXC'9b!*!0GGS!!!!#CQpZG!!!!!% -4QpZG(-J4QpXC'9b!*!9GH3!!!!#FfKNCJ!!!!%98fKeG%4[GfiJ5A4PEA-J4Qp XC'9b!*!-GHi!!!!#Ff4PGJ!!!!%F3fpZG(*[E#"6G(*TF#"0Ef4eE'9c)%C[E'4 PFJ#3"AAi!!!!"'9iG%3"!!!"&89iG'9ZFfP[ER-J+%4TFf&LE'9N+3#3$(B#!!! !"'0dFN3"!!!"'80[ER4bEf`J8'&ZC@ac)#K%DA0KBQaPC#N!N!Kf$!#3"(0PF$3 !!!!%!5d!N#8Ca(0MFJ%!!!)68f0bDA"dD@jR)%&NC'PdD@pZF`#3$(BJGL!!!!! BC'PKE!%!!!)28f0bDA"d)%4TB@aPBh4c!*!3GLTf+J!!!!4YB@0%!3!!!4a6HA0 dC@dJ4AKdC@jcD@pZFb!S4'PcB@*XC@3T!*!&GM3!!!!2a("bC!%!!!)28(*TER4 PFL"%FQPfCA*c!*!3GMjf2J!!!![%E'PL!3!!!K"6D'&bC@3J6'PLFQ&bD@9c!*! 2GNKf5!!!!![%FfjN!3!!!JC6Eh9ZC(-!N"Pf8RC5!!!!#m4SE(!"!!!#"%KPE(! !N"YfA(CF!!!!#m4ZCA3"!!!#%8PZG'9bEQ9d)&"XG@FY5@jc!*!1GQCfCJ!!!!h %G'9i!3!!!Jj8CAKd)%9ZBfpND@jRF`#3%AC`GR!!!!!-a(C[B`%!!!)'9QpTBf9 c!*!CGRTfHJ!!!![%C@4T!3!!!JG&C'PdEh*c!*!BGS4fK!!"CQaN)hD%!!P[C'p N!3!!!JG2F'9Z4'pM!*!BGSjfMJ!"CQaN)hD1!!K[C(0`!3!!!KC2F'9Z4'pM)&0 SC@aX)&"XG@FY5@jc!*!*GTKfQ!!"CQaN)hDB!!K[C'aL!3!!!K&2F'9Z4'pM)%a TBR*KFQPPF`#3$RDLGU)!!@CXC#0fSJ!)Ef4cG!%!!!)+8h4KG'P[EQ9bH3#3&AD XGU`!!@CXC#0fV!!+a'e[C!%!!!)06@pNC@dJ8f0bDA"dF`#3%RDfGVB!!!!,F(" NCJ%!!!)88(*TER4PFL"%CA0MFQP`G'P[ER-!N!Yf`(E!!!!!$'&cGA!"!!!#%d& `F'aTBf&dD@pZ)&0eF("[FR3!N!afbRE+!!!!#A0dFN3"!!!#'&0dBA*dGA!J5A4 PEA-J+%4TFf&LE'9N+3#3"hE8GY3!!!!*FfKN4!%!!!)C8fKeG'4[GfiJ5A4PEA- J+%4TFf&LE'9N+3#3"REHGYi!!!!'BfeZG3%!!!)93fpZG'9iG(9KE#"0C@je)%P dC@ec!*!+GZKfk!#3"(0PF$8!!!!%!5d!N#8#BA"`FJ%!!!)+3A"`C@&bB@jMC3# 3&AEmG[`!!!!#B@9ia!%!!!)-3A"`E'8J4AKdFQ&c!*!6G`Ch"J!!!!*KF("c!3! !!Ja"F("XD@0KG'P[ER-!N"0h%(F3!!!!!Q&cG-3"!!!##N&cFfPcG'&ZG(-!N"9 h'RFD!!!!"'CXER3"!!!#%N0XC@&ZGA!J3A3J8h4KFR4eF!#3$AFNGb3!!!!#F(* [CJ%!!!)53fpXEh*6H@jM)&"bEfCTE'9c!*!0Gbjh,J!!!!*NG($%!3!!!K"%CA0 VG'p`)&"TBh4eFQ9c!*!2GcKh1!!!!!*NEf0c!3!!!JP%Ef0eE@9ZG(-!N"Ch3RG #!!!!!QCKGR-"!!!##8CKGQpbDA4PF`#3&RG-Gd`!!!!$CQjNF`%!!!)%4QPZC!# 3'hG@GeB!!!!#CQ&cCJ%!!!)94QpXC'9b)%&MG'P[EL"6Bh*TF(4c!*!+Gf"hB!! !!!*TE'GQ!3!!!Jj*ER0dB@aXCA)J6'pRF`#3%AGUGfS!!!!#D@jda!%!!!))5@j dCA*ZCA3!N"GhG(Gd!!!!!QPcFfB"!!!#&8PZG'9bEQ9d)&0PBA*MD#"6DA4PF`# 3#RGqGhi!!!!#E'&eEJ%!!!)16'&eEQ0SCA)J5A4PEA-!N"&hL(H)!!!!!Qe[FX3 "!!!#&%eKBb"28b"5C@&N)%eP)%CTE'9c!*!,Gj*hNJ!!!!*bBA"`!3!!!K05C@0 PER3J3A"`E'PMBA4TEfjc!*!-GjahR!!!!!*bC'pM!3!!!K"5C@0PER3J4'pMG@e PER4c!*!2GkChTJ!!!!*bFhCb!3!!!Jj5C@0PER3J8f9bGQ9bF`#3%AH`Gl!!!!! #Ff0ba!%!!!)(8f0bDA"dF`#3'(HkGlS!!!!#FfjNF`%!!!)+8fpeEQ3J8f9dF`# 3&AI%Gm3!!!!#Fh"VD3%!!!)28h"PB@YKBQaP)%PdC@ec!*!3GmjhcJ!!!!*QBQ0 Q!3!!!KT8D'8J4QPZC#"#H5"$EfjdC@jd)%C[E'4PFJ#3"AIBGpJ!!!!#G'KYC3% !!!),9'KPE@8J4QPXCA-!N"4hiRIL!!!!!R9dDF3"!!!##99dD@aTG'PPF`#3&RI XGq`!!!!$Gf&XD`%!!!)B6'pMBA4TEfiJ6@&ZB@GPFL"0Ef4eE'9c!*!(GrChpJ! !!!0dFQP`!3!!!KC-Ef0KG'P[EL"0B@jKCf9b)&"bC@Cc!*!*H!"i!*!%!fCKE'` "!!!##8a[Bf&dD@pZF`#3&RJ+H!S!!!!#FA4PH!%!!!)88A9TBfY8D@eP)%9iG'9 ZFfP[ER-!N!Yi&(J8!!!!!QCLBh!"!!!#'%CTEQ3JBRNJ3fpZG'9ZG#"3E(9R,@P ZF`#3"hJHH"i!!!!#a'a[B`%!!!)C6'&ZCh9KCf8J*L"5C@GTEfiJ8h9`F'pbG!# 3"RJSH#J!N!4cCA!f!!!!"!%Y!*!P!f4cF'`"!!!#%N4TFh"XBANJ4AKdC@jcD@p ZF`#3$AJmH$`!!!!#Df0SEJ%!!!)*5f9jBfKKD@jc!*!@H%Ci4J!!!!0YF(KQ!3! !!Jp0G@adDA"bEf0PFh0TEQF!N""i8(K3!!!!!R0NBA3"!!!#%&0SBA*PC#"%Ef0 eE@9ZG(-!N!pi@RKD!!!!!R0MG'`!!!!#&90jFh4PE5"$EfjdFQpX)&"KEQ9XF`# 3#RKNH'3!!!!#Ff4cD`!!!!)98hPcG'9Y)%4PFfYdEh!J4QpXC'9b!*!+H'jiEJ! !!!*cF(*Q!!!!!K*6HA0dC@dJ8(*PCQ9bC@jMCA-!N!eiN!3!!!!#Fh4bF`!!!!) -8hPcG'9Y)&4bBA0S!*!6H)*iJJ!!!!*fFfCN!3!!!KT8D'8J9QpXG@eP)&0PG(4 TEQGc)%C[E'4PFJ#3"AL-H)`!!!!#GA0bF`%!!!)&9A0PFR-!N"TiPRL@!*!%Ff9 `0`!!!!3",3#3*Q0KBfJ"!!!""N0KBfKPF`#3'hLU!*!%Bf&bBJ%!!!%'3f&bBQp Z!*!EH,3!N!4cH@jM!3!!!3P$Efa[FP0jEQ-!N"Ki[J#3"'0ME@d"!!!"$N0[E'p b8hPZBb"$68ec!*!6H-J!N!4MFf0b!3!!!40$Efa[FP0jEQ-J8f0bDA"dD@jR!*! 1H0)!N!4MEA"N!3!!!3T$Efe`EfjPER4c!*!AH0`!N!4MFh*f!3!!!3e$Eh*P)&0 PFRCTBf9c!*!8H1B!N!4NCACQ!3!!!3P%CACPE'p`CA)!N"Kim!#3"'4NEf-"!!! "$N4PGQ9XEh"PFL"%Ef0c!*!6H2S!N!4NCACS!3!!!3j%CACPE'p`CA)J5'9XF!# 3%hN%!*!%D@jQE`%!!!%04'pMG@ePER4KG'P[EJ#3&(N1!*!%DA0cC!%!!!%*4'p hEQa[B@4c!*!BH4J!N!4QFQ&Y!3!!!3T'FQ&YCAG[FQYc!*!AH5)!N!4NE'PL!3! !!3G-D@*bBA*j!*!DH5`!N!4TEA"b!3!!!3K3FQPZG'9bF`#3'ANf!*!%F'CbE3% !!!%58(*TGQ&dC5"'FQ&YCAG[FQYc!*!2H8!!N!4hBfe`!3!!!444G@PMDe4TE@8 J3fpYF'pZC@jdF`#3$AP+!*!%FQpdCJ%!!!%,8Qp[G#"'EfaNCA)!N"Cj9!#3"(0 cEQ3"!!!""P0[G@jNF`#3'hPH!*!%Fh"MD!%!!!%'8h"PC@0S!*!EH@J!N!4NG'p `!3!!!4"8Eh!J6'9fC@`J4QpXC'9b!*!4HA)!N!4eG'e`!3!!!499Ff9b)&4PEA" [FQ&bH5"'EfaNCA)!N!ajI!#3"!2(!!!"!!!!!fd!!!*Y!!!!@J#3mJ%1!!%!!3! !'cTLD@jKFRNJ4'PcG(*TBR9dD@pZ1P*&384046T3HA4SEfiJ-5ie,M*M-6T548& %688!N0N+!*!%"p!!!!I3!!!"594SDA-JD@jcG'&XE(-J8(PdD'pZ)$)Z-5"TEQ0 XG@4TEQFJB@aX)'&fB@PXB@*XC5"PH(4PER0TEfiJF'&MDf&RCA-k)#"8DfPZG'9 b,#"dD'8J8(PdD'pZ)%PYB@GTEQFJ6'PLFQ&bH5`J6R9YCA*TBf&X)&"jG'K[EL" KEQ3JD@eR,L"8D'8JC'9fC@a[F'9b)'p`G'P[EL"TFb"ZEh3JD@jcG'&XE'9N)'* j)'4PCQ&eE(3Z)%0XBA0cD@-J8&"$)'&ZC#p[FL"$BA*LEfiJGQ9bFfP[ER-JGfP XE#"LC5"TER0dB@aXC@3X)'4PF'9ZC'PZCb"[EL"jEh9b)(0jFh4PE5i0$9CPFR0 TEfiJD@jQEcSJ8%P-)$%Z-5ia,#"TE@FJ-5ic,#"1G@ePFQPMB@`J-M!Z-#i`BM) X)&4ME#pdDb!i,M-Z!!!"!!!!!fd!!!*Y!!!!@P028P3&`J#!!"`!@J!#9%9B9!! !!"T8H(4'!!!!*Q4659S!!!!b!qRrr`!!!5!!N!3"p2rr!*!)!I6rr`!!!4)!N!B $4J!'!!)3##A*$NPZFh4KE'aPFL"%BA4K!!!"!!!!!3!!!!%&L,i`[IB!cMB!!!% !N!6q!J!!"4m!!3@)[P!!!!#1rrm!N!3&L,k3!!@)[L!!!!&)rN!!N!G)!!"*)!$ rrrm!!%NJ!8Mq3!@-XK)&L,mq!*!%"BLr9J8Ier!&L,j`5!!!"2r4bA3&L-"X"BL qJ!!)6@J!N!6rN!3&L,k3!!!X8S`!-,,d"Bbb%J@)eZ!!,&+-"89M`!8@31!&L,l !!!!!m$pjYT!!!!!S!!@)[X!!8i'X2hXRX!!!5T!!"BLqd!"6JDbr-!@)[X!!'J@ )eZ!!8i'X!!!!!53!!!F!P$ZB!&-!!3%!!3B!!!!"#!!J!3#3@V88jG@e&1A9!!! !!J!!!!)!N!N%!!%!!3!"!!%!!3!!J!#3#E88jG@e&1A9!!)!"J#3$`')!!!"!*! G!3#3#)!!N!8&"!#3%!J!N#d"!2q3"!#!!!!"!3%!N!855@jcG'&XE'9b)%a[Cb" 'D@aP!!!!+!!!!#J!"BM!(2r$8h)!!#J!!!3!!!&%'@!&L-!irm0RkJ!!+!!!"!B !"BM"b!&%'A!!CrN5"BM!D2r$6qB!!%EN!$(VDJ!!4Z3&L-(3!!!!%`!!!!%&L-( )CZJ&,J"R#23&L-()"BM!H!"R#-)&L-()!05Sf!@)`Hi!CY-U"BM"b2rr!!!!!3! !!!%!!!!"!!!!!3!%"J!!e+MB"5jQk,)5!&CQ!!@)[*B!!!!#*!!!"`@'-)i!N!M q!J#3"J@)`6!!!!$`"BM"))J!!!3!@L13!!&)rN!"52j!!*!(5!%"!*!%!6!!!!# !!!0MBQpZJ!%!!!%$&9*PFA9TFQ9c)%0KFQ*[EL!a,M!Z0$Yi!*!%"YY'rR0jFhD !!3!!#Im28Q9aG@PbCA-J6@&M6e0B!!K0D$qE1hJ!N!3'fdEqFhPcGN!"!!!*ra" 5CA&eDA*PFb"`FQ8Y6e0B#%eS2jXlH!#3"!@(e[i!!!+L!""KE'Pc%!%!N!345'& c)%&XD@&c)%eKEQ&RCA)!N!jMG'*f%!%!N!3D5'&c)%0[E@eeEQPMBA4TEfjc)&4 [EfaLEhJ!N!9PGQjd%!%!N!335'&c)%&`F'aP)%9fC@jdF`#3$fC`G5#!!3#3"!P )BA-JB5"'8&8!N"CSC@a`%!%!N!335'&c)%KPE(!J6@&ZB@GPFJ#3$feYG5#!!3# 3"!P)BA-JB5"0698!N"CZE@Gb%!%!N!3B5'&c)%j[G'PQD@0KG'P[EL"0B@jKCf9 b!*!(F'phFS!"!*!%%8KKFb"3EhGPFL"0B@jKCf9b!*!1F@4bGi!"!*!%%dKKFb" $Efa[FL"4G@PMDd4bBAF!N!aaC#!JJ!%!!!(r&%KKFb!c-Le#DA3J8A9TBfY%FQ& h!*!,FA4TE4!"!*!%$8KKFb"4G@PMDe4TE@8!N"*cBh*TJ!%!N!355'&c)&0MFQP `G#"0B@jKCf9b!*!0G'eRFS!"!*!%%%KKFb"8D@eP)%eKEQ&RCA)!N!pfE5!J%!% !N!355'&c)&CTFR4eB@`J6@9YEh*j!*!0FhPcB5!"!!!!!K43EhGPFP"$)%&bBfK TG'9MG(9bC3#3#h0jFf&!!`!!!!)30MK,)%&bBfKTG'9MG(9bC3#3%3&L!!%2Bfp ZCQPRGA*PFf0bDA"d!*!()$qADE3'rE$'!2fY%))!!%JrQjm)!!bb!#3!!!F!@E9 !"T56m!D8Nr!N!!!("SY55!#3"!D8Nr!'rDe3"T56m!F"c2B'rE$'"[fYJ%)!!%J rQd&J"Y+6A!#3"9Qe3!!!!!%!r3"*"[fYF!!!!!%'dT-!"SXa%!&l!1`(!Fcf"[f ["JEpX-B'rDf3!#J!!!3rKQCS!!)!r3"*VD!!-BA-!*!-"`(-pJEpV`B'P*2`"[f Z%!!!!0!rQcmS"T56m!EpVG"#!!")2hXi2!!!!!%'rDhJ!&1aV2r4C23'NmHJ"[f Ym!!)6@J!!!r3"T56m!#3"b!'rDm'"[f`aJ$pVK!L!!")rp'S%!%!!!8'rDj!!!K 0D$qE1hJ'NmHJ"[fZ3!"CY8!"H`$X!!!'N`EpVN!!9D6J2hUJp!EpX-B!!!!#!*! %!dS!!KP0B@03HA4SEfiJD'pYC5"`B@GP)#KA9eFT!%JrHcJm#RGhGbjMGfNZEQ` Xrp&Np!D42,!'qb3`!!K0D!!!$p!'NJ8J!*!()!El*9!'qbG)"[XN8#)!!%MrdDJ 3!*"!*5pQG(![DQ&MDbp`HA4SEfi[E@&M,deKBe"jG'K[EM)aF'&bG(0dFbq4,5J !!$TB"T)&)!DJG`J!#N9N!@`"+3El*-!'qb5X"TKS*!!!$p!!N!3'qb9'!&QI-!" CRb4SrrG!"[XP-`El*1Mrchq3!!El"[XNlJDB!!T&C#8L"[XNk!El*1`!"3D5"[X P-JD1$4J'qb8L!1S!0J#5"5!!"3El*5)!N!3'N6ki!!!!!3Er3IB'qbG)"T(f)!D J@f!'NJ8J!!-!#!!0!0J"+3$U!$DLiJEl"[XP@!D)adJ'qbG)"[XP8!Er3IB"pJD 5"5!'NJ8J"T)&)!D5"5!'qbG+!!)!!"P0B@03HA4SEfiJD'pYC5"`B@GP)#K'9&! T!%JrHcJm#QCdF#jMGfNZEQ`Xrp&Np!D42,!'qb3`!!K0D!!!$p!'NJ8J!*!()!E l*9!'qbG)"[XN8#)!!%MrdDJ3!*"!*5p`G@)[DQ&MDbp`HA4SEfi[E@&M,deKBe" jG'K[EM)aF'&bG(0dF`D4,5J!!$TB"T)&)!DJG`J!#N9N!@`"+3El*-!'qb5X"TK S*!!!$p!!N!3'qb9'!&QI-!"CRb4SrrG!"[XP-`El*1Mrchq3!!El"[XNlJDB!!T &C#8L"[XNk!El*1`!"3D5"[XP-JD1$4J'qb8L!1S!0J#5"5!!"3El*5)!N!3'N6k i!!!!!3Er3IB'qbG)"T(f)!DJ@f!'NJ8J!!-!#!!0!0J"+3$U!$DLiJEl"[XP@!D )adJ'qbG)"[XP8!Er3IB"pJD5"5!'NJ8J"T)&)!D5"5!'qbG+!!)!N!3"3J!&"N0 [E@e[EJ-!#!!0!0J"+3$`!$kLiJEl"[XQ[!D)adJB6@&M8(PdD'pZ-M&KBh4TGQ8 YBfpYE@pZEfk5#E!'q`G%CACPE'p`!!J!$3$B!5N!l`"1SZ)'q`El*V`'L-G)'8e KBe"jG'K[EM)aB@0dDACP,@4PGQ9XEh"[F!Q`"[X$8&"$#E!!!`!)!!d!f!%T!1S !-D,L"[X'qbDm"SM(5"90B@03HA4SEfib-@&MG'PfC5e38%033`Q`"T)*X!El"N0 KFQ*[EJ-!#!!0!0J"+3$Z!$LLiJEl"[XQ[!D)adJB6@&M8(PdD'pZ-M&KBh4TGQ8 YBf&bBQpZEfk5#E!'q`*8Dj)*X!!$!!J!$3$B!5N!k`"+SZ)'q`El*V`'L-G)&%e KBe"jG'K[EM)aB@0dDACP,A4VG'Z5#E!'NJQ`"[X!!!!%!!)3#!!!!!T*4QaN"!# 3#!i!53!6!P`#JJ!!!-B-+J!!!3!!!L'a!!)JX3!!'FP66e*8!VS!J!!F#q)!$NG -8e3!!3"k58a$3`!k!***6&K$!$`$9NP14d`!!!Bb58j-)`!!"Mj*6Na$!!!'5NP 18d`!!!C@590NCJ!!"Q**8h*Q!!!'EP*%Fh3!!!Ck9NacG!!!"SCA8'pc!!!'NQ0 TBfi!C`DHCQaN)`!%#hj`3R4c!!!,ZJ2Srrm!!KGI!*!%!qRrr`!#&q-!N!4f)!" 2"!![8J8RrZaf+J#)"!"#P38Rr[Kf2J$("!"33!8Rr`4f5!%&"!"8k`8Rra"f8J& $"!"CGJ8RraafA!'""!"H#38RrbKfCJ'r"!"Le!8Rrc4fF!(p"!"S0`8Rrd"fHJ) l"!"X`J8RrdafK!*f"!"f+`8Rre4fMJ+a"!#($38RreafQ!-'"!#AP`8RrhafSJ0 S"!#S'38Rri4fV!1["!#iH`8RriafYJ2G"!$+p`8RrjKf`!33"!$JkJ8Rrk4fbJ4 ,"!$[b38Rrl"fe!5'"!$c`!8RrlafhJ6'"!$hM`8RrmKfk!8&"!$lXJ8Rrp4fr!8 r"!$rq38RrF"h"J9c"!%$b!8RrFah%!@P"!%)4`8RrGKh'JAA"!%-$J8RrH4h*!B 2"!%3138RrI"h,JC*"!%8D!8RrIah1!D5"!%C"`8RrJKh3JE'"!%FYJ8RrK4h6!E k"!%JG38RrL"h9JFd"!%P@!8RrLahB!GZ"!%TK`8RrMKhDJHL"!%Y0J8RrN4hG!I 8"!%`e38RrP"hIJJ)"!%eC!8RrPahL!K5"!%k@`8RrQKhNJL6"!%q#J8RrR4hR!M &"!&"f38RrS"hTJN,"!&&S!8RrSahX!P1"!&*9`8RrTKhZJQ4"!&0,J8RrU4ha!R 2"!&4"38RrV"hcJS$"!&8Y!8RrVahf!Se"!&B8`8Rr,KhiJTT"!&F!J8Rr-4hl!U G"!&IX38Rr0"hpJV8"!&U-J8Rr0ai!!X1"!&q+`8Rr1Ki#JXr"!'6`!8Rr24i&!Y R"!'T-38Rr3"i2!ZC"!'fh!8Rr3ai4J[4"!'kq`8Rr4Ki8!`*"!'qrJ8Rr54i@Ja ""!($(38Rr6"iC!ak"!('j!8Rr6aiEJbf"!(+S`8Rr8KiH!cb"!(1BJ8Rr94iJJd X"!(5)38Rr@"iM!eI"!(9d!8Rr@aiPJf4"!(CE`8RrAKf)!!f"!!SbJ8S!1Kf+J" S"!!lT38RrZ4f2J#S"!"2@!8Rr["f5!$Q"!"8!`8Rr[af8J%N"!"BMJ8Rr`KfA!& L"!"G)38Rra4fCJ'J"!"Kl!8Rrb"fF!(H"!"R6`8RrbafHJ)F"!"VfJ8RrcKfK!* D"!"a2`8RreKfMJ+5"!##*38Rrf"fQ!,3"!#5V`8RrfKfSJ-m"!#M-38RriKfV!1 8"!#cN`8Rrj!!GVB$bJ3!`d-&*rqFGX!$m!3!f6S&*rqSGXS%-!3!lc8&*rqdGY3 %CJ3!mb`&*rr!GYi%TJ3!p[X&*rr-GZJ%jJ3!qXS&*rrBG[`&*!3!rf8&*rh%G`B &@J3"!d3&*rh3Ga!&M!3""m-&*rhFGaS&[J3"#iS&*rhSGb3&m!3"$e%&*rhdGbi ',J3"%p3&*ri!GcJ'G`3"'(-&*ri-Gd)'V33"($)&*riBGd`'h`3"(q%&*riNGeB (&33"*(!&*ri`Gf!(8`3"+2-&*rimGfS(L33",,)&*rj)Gh3(Z`3"-&%&*rj8Ghi (l33"00!&*rjJGiJ)133"1GF&*rjXGj))HJ3"2BB&*rjiGj`)V!3"398&*rk%GkB )mJ3"44`&*rk3!(H`#68%!8M6"5IqR(Hk#AB%!8bD"5IqU(I%#E3%!9"a"5IqY(I 1#HS%!93`"5ImX(IB#K`%!9I2"5Im[(IL#Ni%!9YZ"5Imb(IX#S3%!9mY"5Ime(I f#VB%!@1F"5Imi(J!#[)%!AH9"5Iml(J+#bS%!BZ1"5Imq(J8#e3%!D0$"5Ip"(J H!!!%!"hZ"5J!i(JS!"X%!#0Z"5Iqi(Jm#hS%!EAd"5Ip%(K'#lJ%!ETh"5Ip((K 3#qS%!Ei@"5Ip+(KD$#J%!F+C"5Ip0(KN$&S%!FC3"5Ip3(KZ$*S%!FS2"5Ip6(K i$0)%!Fh1"5Ip@(L#$4)%!G'0"5IpC(L-$8B%!G9-"5IpF(L@$AJ%!GMV"5IpI!( drrm!!Kp$!*!%%iJ0UJ!"qeB!N!4e-!hL!!)JN3#3"!(drrm!!K[e!*!%%iJ0c`! #&"8!N!36L!fm!!)35J#3"!2Srrm!!K[[!*!%%iMrr`!#'SN!N!3$k2rr!!)JR`# 3"(8`rrm8!!!!"59ZU(9%rrm8!!&@"59Q%(91rrm%!!,N"59Q)(9Lrrm8!!3U"59 `%(9Xrrm%!!@3!!8PF!"eG[rr&!!("J8PEr"eL[rr&!!)"!8PEq"eP2rr&!!*BJ8 PEp"eR[rr&!!+b!8PEm"eU2rr&!!-0J8PF)"eX[rr&!!0T!8PEi"e[2rr&!!3%J8 PEk"ea[rr&!!4@!8PEj!!GG$rra3!%Vi&*AV`GGVrra3!&"3&+!$-GH6rra3!&BS &+!$)GHlrra3!&ZJ&+!$%GIMrra3!'%i&+!$BGJ,rra3!'E`&+!$8GJcrra3!'b) &+!$3GL$rrb3!1Mm&*rlSGLVrrb3!6J)&*rldGM6rrb3!()J&+!$NGMlrrb3!8S8 &*rm!GNMrrb3!9c!&*rm-GP,rrb3!@lX&*rmBGPcrrb3!B%i&*rmNGQErrb3!C4N &*rm`GR$rrb3!DR`&*rmmGRVrrb3!E`F&*rp)GS6rrb3!J!8&*rp3GSlrrb3!N!" h"5IrF(DBrrmN!+%""5IrH(DLrrmN!,'$"5IrJ(DXrrmN!-(P"5IrS(DfrrmN!0I N"5IrV(E!rrmN!1h("5IrZ(E+rrmN!2'H"5Ira(E8rrmN!2@9"5Ird(EHrrmN!2P N"5Irh(ESrrmN!2hh"5Ipb(Emrrm8!3(1"5Ipe(F'rrm8!3@0"5Ipi(F3rrm8!3S -"5Ipl(FDrrm8!3h6"5Ipq(FNrrm8!4*q"5Iq"(FZ"Q3%!4Bp"5Iq%(Firrm8!4V F"5Iq((G#rrm8!4jl"5Iq+(G-rrm8!5*+"5Iq0(G@rrm8!5HG"5Iq3(GJrrm8!5Y F"5Iq6(GUrrm8!5ll"5Iq@(Gdrrm8!6+D"5IqC(Gq##-%!6Fj"5IqF(H)#'X%!6` J"5IqI(H5rrm8!6r2"5IqL(HF#0i%!81H"5IqP(HQ#53%!8GP"5IqS(H`#@F%!8X F"5IqV(Hk#D`%!8m$"5IqZ(I%rrm8!9,D"5ImY(I1rrm8!9Cj"5Im`(IBrrm8!9S B"5Imc(ILrrm8!9hA"5Imf(IXrrm8!@&f"5Imj(IfrrmN!AB["5Imm(J!rrmN!BS S"5Imr(J+rrmN!D(G"5Ip#(J8rrmN!E4H"5Ip&(JHrrmN!#)B"5J!h(JSrrmN!#G d"5J!l(JmrrmN!ENK"5Ip)(K'rrmN!Ec!"5Ip,(K3rrmN!F&$"5Ip1(KDrrmN!F6 L"5Ip4(KNrrmN!FLj"5Ip8(KZrrmN!Fai"5IpA(KirrmN!G!h"5IpD(L#rrmN!G2 f"5IpG(L-rrmN!GH9"5IpJ(L@rrmN!GXd"5IpM(LUrrmN!Ghb"5IpL(LdrrmN!Gp )"5IpK(LqrrmN!H#H"5IpQ(M)rrmN!H(d"5IpP(M5rrmN!H0+"5IpN!"ih2rr*!( NS!8RrD4ij[rr*!(PpJ8RrD"im2rr*!(R6!8RrCaiq[rr*!(SSJ8Rqk"j"2rr*!( Tq!8RrDaj$[rr*!(V6J8RrDKj'2rr*!(XT!8Rqkaj)[rr*!(YqJ8RqkKj,2rr*!( [8!8Rqk4j0[rr*!(`TJ8RqlKj32rr*!(ar!8Rql4j5[rr*!(c8J8Rql"j92rr*!( dU!8Rqm4jA[rr*!(erJ8Rqm"jD2rr*!(h9!8RqlajF[rr*!(iUJ8Rqp"jI2rr*!( k!!8RqmafK2rr"!"`K38Rrd4fM[rr"!#"D`8Rrf4fQ2rr"!#4p38RrfafS[rr"!# LG`8Rrh4fV2rr"!#bf38Rrj3$k2rr!!)JL3#3""T'D@jN4QpXC'9b,dCTEQ3[4AK dC@jcD@pZFaT6HA0dC@dJ1#"'D@jN4QpXC'9b,e0jFh4PE4K'D@jN)&0MFQP`G'P ZCb""C'4TG'P[ER-B4QPZC#"6Bh*TF(4TEQFJ3@4NDA4TEfjc(dCTEQ3J8f0bDA" dD@jR)%&NC'PdD@pZ4'PKE'9MG(-I4QPZC#"6Bh*TF(4TEQFJ3@4NDA4TEfj%D@& XC@0dFaj6HA0dC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QP ZC%C[E'4PFLp&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@p ZFaj6HA0dC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C [E'4PFLp&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj 6HA0dC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C[E'4 PFLp&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj6HA0 dC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C[E'4PFLp &H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj6HA0dC@d J1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C[E'4PFLp&H(4 PER0TEfjc'dCTEQ3J6h"PEN4[Bb"&C'PdEh*c)%C[E'4PFKY'D@jN)%p`C@j%Ef- J4@4TG'pbFb"'EfaNCA)H4QPZC#"24#"&C'PdEh*c1Np`C@j%Ef-J4QpXC'9b(NC TEQ3J6d3J4@4TG'pbFcT2F'9Z4'pM)%C[E'4PFM9'D@jN)%p%)%9NDA4[FR-k6h" PEN4[BcT2F'9Z4'pM)&0SC@aX)&"XG@FY5@jc)%C[E'4PFM9'D@jN)%p%)%9NDA4 [FR-k6h"PEN4[BcT2F'9Z4'pM)&0SC@aX)&"XG@FY5@jc)%C[E'4PFLY'D@jN)%p %)%9iG'9ZFfP[ER-k6h"PEN4[Bb"-D@*bBA*TCA-J4QpXC'9b+dCTEQ3J6d3J4AK dC@jcD@pZFcT2F'9Z4'pM)%aTBR*KFQPPFb"'EfaNCA)D4QPZC#"24#!k8h4KG'P [EQ9bH5"'EfaNCA)D4QPZC#"24#!k8h4KG'P[EQ9bH5"'EfaNCA)54QPZC#"0Ef4 PE5"6Bh*TF(4c%NCTEQ3J6@pNC@dJ8f0bDA"dFap'D@jN)&"bD@jdCA)J4'9cBh* TF(4TEfiJ4QpXC'9b(dCTEQ3J8(*TER4PFL"%CA0MFQP`G'P[EL"'EfaNCA)D8hP cG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0 dC@dI8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6G'&bG(9`5A4PE4p6HA0dC@dJ1#"'D@j N4QpXC'9b,e0dBA*dGA"*G'9Y(e0jFh4PE5!i)%CTEQ4'EfaNCA)[8fKeG%4[Gfj *G'dI8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6D(9d4'phENPdE4j6HA0dC@dJ1#"'D@j N4QpXC'9b,d9iG'9ZFfP[ER-H8hPcG'9Y)$JJ4QPZC%C[E'4PFLp&H(4PER0TEfj c'P0jFh4PE5!i)%CTEQ4'EfaNCA)[8hPcG'9Y'P0jFh4PE5!i)%CTEQ4'EfaNCA) [8hPcG'9Y'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@jN4Qp XC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5!i)%CTEQ4 'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QP ZC%C[E'4PFLp5Efpd(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj6HA0 dC@dJ1#"'D@jN4QpXC'9b,d9iG'9ZFfP[ER-D8hPcG'9Y)$JJ4QPZC%C[E'4PFLp 6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@d53fpXEh*6H@jM)&"bEfC TE'9c'P0jFh4PE5!i)%CTEQ4'EfaNCA)[8hPcG'9Y'P0jFh4PE5!i)%CTEQ4'Efa NCA)[8hPcG'9Y'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@j N4QpXC'9b,e*[Eh3D8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dD8hPcG'9Y)$J J4QPZC%C[E'4PFLp6HA0dC@dH8hPcG'9Y)$JJ4QPZC%C[E'4PFLp&H(4PER0TEfj c(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaT6HA0dC@dJ1#"'D@jN4Qp XC'9b,e0jFh4PE4T6HA0dC@dJ1#"'D@jN4QpXC'9b,e0jFh4PE4K6HA0dC@dJ1#" 'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5! i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3D8hPcG'9 Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@d 95@jdCA*ZCA3J8f9KFQ0S)&0TG'9c'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K 6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh316'&eEQ0SCA)J5A4PEA-B8hPcG'9Y)$J J4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0dC@d J1#"'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd%e*PBf9 ZG#""F("XD@0KG'P[ER-B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5! i)%CTEQ4'EfaNCA)[8Qp[G""5C@0PER3J4'pMG@ePER4c'&0jFh4PE5!i)%CTEQ4 'EfaNCA)[8Qp[G"K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh318Q9MC@jd)&0PFRC PFR-D8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4 PFLp6HA0dC@d(8f0bDA"dFaT6HA0dC@dJ1#"'D@jN4QpXC'9b,e0jFh4PE4T6HA0 dC@dJ1#"'D@jN4QpXC'9b,e0jFh4PE4K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3 B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp [G"K6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3D8hPcG'9Y)$JJ4QPZC%C[E'4PFLp 6HA0dC@dD8hPcG'9Y)$JJ4QPZC%C[E'4PFLp6HA0dC@dB8hPcG'9Y)$JJ4QPZC%C [E'4PFLp5Efpd'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"e'D@jN)%a[Bf&dD@p Z)%eKEQ&RCA)J6@pNG@aPFae'D@jN)%a[Bf&dD@pZ)%eKEQ&RCA)J6@pNG@aPFaY 'D@jN)%a[Bf&dD@pZ)%eKEQ&RCA)J8(*PCR-E4QPZC#"-Ef0KG'P[EL"0B@jKCf9 b)&"bC@Cc&%CTEQ3J8(*PCR-J6'pMBA4TEfjc&%CTEQ3J8(*PCR-J6'pMBA4TEfj c%NCTEQ3J893J4AKdC@jcD@pZFa*'D@jN)&&8)%9iG'9ZFfP[ER-H8hPcG'9Y)$J J4QPZC%C[E'4PFLp&H(4PER0TEfjc(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@j cD@pZFaK6HA0dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4 PFLp5Efpd(P0jFh4PE5!i)%CTEQ4'EfaNCA)[4AKdC@jcD@pZFaj6HA0dC@dJ1#" 'D@jN4QpXC'9b,d9iG'9ZFfP[ER-B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0 jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"p6HA0dC@dJ15"'D@jN4QpXC'9b,d0[ER4 bEfa3EQac(e0jFh4PE5!j)%CTEQ4'EfaNCA)[3fpZG(*[E&"ZE(-E8hPcG'9Y)$N J4QPZC%C[E'4PFLp%CA0VG'p`'e0jFh4PE5!j)%CTEQ4'EfaNCA)[4'9cDh4[F"p 6HA0dC@dJ15"'D@jN4QpXC'9b,e"bC@CPFQ9ZBf9c(e0jFh4PE5!j)%CTEQ4'Efa NCA)[8(*PCQ9bC@jMCA-C8hPcG'9Y)$NJ4QPZC%C[E'4PFLp8FQ&cD"P6HA0dC@d J15"'D@jN4QpXC'9b,e4bBA0S'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"K6HA0 dC@dJ1#"'D@jN4QpXC'9b,e*[Eh3B8hPcG'9Y)$JJ4QPZC%C[E'4PFLp5Efpd'&0 jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G"&*ER0dB@aX)%a[Bf&dD@pZFa**ER0dB@a XCA)J8f9dG'PZCh-55@jcG'&XE'9b)&0PG(4TEQGc"%P'E'3(6!: \ 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 index 0000000..b47274a --- /dev/null +++ b/Mac/IDE scripts/Hack/Toolbox Assistant... @@ -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 –Toolbox Assistant”" + 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 index 0000000..62e5930 --- /dev/null +++ b/Mac/Include/getapplbycreator.h @@ -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 +#include +#else +#include +#endif + +extern OSErr FindApplicationFromCreator(OSType, FSSpecPtr); diff --git a/Mac/Include/macbuildno.h b/Mac/Include/macbuildno.h new file mode 100644 index 0000000..d3337c2 --- /dev/null +++ b/Mac/Include/macbuildno.h @@ -0,0 +1 @@ +#define BUILD 92 diff --git a/Mac/Include/pymactoolbox.h b/Mac/Include/pymactoolbox.h new file mode 100644 index 0000000..c4a56da --- /dev/null +++ b/Mac/Include/pymactoolbox.h @@ -0,0 +1,120 @@ +/* +** pymactoolbox.h - global routines exported by the toolbox modules +*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifdef WITHOUT_FRAMEWORKS +#include +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#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 index 0000000..c4228a7 --- /dev/null +++ b/Mac/Lib/MACFS.py @@ -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 = '€tex' +kStationeryFolderType = 'odst' +kOpenDocFolderType = 'odod' +kOpenDocShellPlugInsFolderType = 'odsp' +kEditorsFolderType = 'oded' +kOpenDocEditorsFolderType = '€odf' +kOpenDocLibrariesFolderType = 'odlb' +kGenEditorsFolderType = '€edi' +kHelpFolderType = '€hlp' +kInternetPlugInFolderType = '€net' +kModemScriptsFolderType = '€mod' +kPrinterDescriptionFolderType = 'ppdf' +kPrinterDriverFolderType = '€prd' +kScriptingAdditionsFolderType = '€scr' +kSharedLibrariesFolderType = '€lib' +kVoicesFolderType = 'fvoc' +kControlStripModulesFolderType = 'sdev' +kAssistantsFolderType = 'ast€' +kUtilitiesFolderType = 'uti€' +kAppleExtrasFolderType = 'aex€' +kContextualMenuItemsFolderType = 'cmnu' +kMacOSReadMesFolderType = 'mor€' +kALMModulesFolderType = 'walk' +kALMPreferencesFolderType = 'trip' +kALMLocationsFolderType = 'fall' +kColorSyncProfilesFolderType = 'prof' +kThemesFolderType = 'thme' +kFavoritesFolderType = 'favs' + +# 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 index 0000000..9c449e0 --- /dev/null +++ b/Mac/Lib/cfmfile.py @@ -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 •cfrgÕ 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 index 0000000..0fd4c51 --- /dev/null +++ b/Mac/Lib/findertools.py @@ -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 –Get Info” 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ƒ' %__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ƒ + + 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 index 0000000..34765d2 --- /dev/null +++ b/Mac/Lib/lib-scripting/AppleScript_Suite.py @@ -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‚subroutine: 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 index 0000000..774f058 --- /dev/null +++ b/Mac/Lib/lib-scripting/CodeWarrior_Standard_Suite.py @@ -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 index 0000000..0f14b6f --- /dev/null +++ b/Mac/Lib/lib-scripting/Finder_Suite.py @@ -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: –empty” and –empty trash” 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 –Make Alias”)""" + 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 –About this Macintosh” 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 –Apple Menu Items,” 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 –Control Panels”""" + 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 –Extensions”""" + 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 –Fonts”""" + 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 –New Folder” 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 –Preferences”""" + 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 –Finder Shortcuts” item in the Finder's help menu""" + which = 'scut' + want = 'obj ' +class shutdown_items_folder(aetools.NProperty): + """shutdown items folder - the special folder –Shutdown Items”""" + which = 'shdf' + want = 'obj ' +class startup_items_folder(aetools.NProperty): + """startup items folder - the special folder –Startup Items”""" + 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 –Temporary Items” (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 (–Window” 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 –desktop” 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 –Get Info” 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 –Get Info” 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 –Get Infoƒ”)""" + 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 –Get Info” 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 –Get Info” dialog) +class warn_before_emptying(aetools.NProperty): + """warn before emptying - Is a dialog displayed when –Empty trashƒ” 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 –Get Info” 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 –Sharingƒ”)""" + 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 –trash” object""" + want = 'ctrs' +# repeated property warn_before_emptying Is a dialog displayed when –Empty trashƒ” 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 index 0000000..7012f99 --- /dev/null +++ b/Mac/Lib/lib-scripting/Metrowerks_Shell_Suite.py @@ -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Ž 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 index 0000000..f6d9b5a --- /dev/null +++ b/Mac/Lib/lib-scripting/Standard_Suite.py @@ -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 index 0000000..3c02ebd --- /dev/null +++ b/Mac/Lib/lib-scripting/Standard_URL_suite.py @@ -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Ž Folder:Netscape NavigatorŽ 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 index 0000000..308e13c --- /dev/null +++ b/Mac/Lib/lib-scripting/WWW_Suite.py @@ -0,0 +1,426 @@ +"""Suite WorldWideWeb suite, as defined in Spyglass spec.: +Level 1, version 1 + +Generated from flap:Programma's:Netscape NavigatorŽ Folder:Netscape NavigatorŽ 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 –echo” 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 •specialÕ 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 –handler” for this protocol with a given prefix. The handler will receive –OpenURL”, or if that fails, –GetURL” event. + Required argument: Application sig + Keyword argument for_protocol: protocol prefix: –finger:”, –file”, + 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 –register protocol” + 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 index 0000000..01cb150 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/CodeWarrior/CodeWarrior_suite.py @@ -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 •initialize 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 index 0000000..694f599 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/CodeWarrior/Metrowerks_Shell_Suite.py @@ -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 •killingÕ 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 –Open Recent” menu """ + which = 'EX16' + want = 'shor' +class Recent_Project_Count(aetools.NProperty): + """Recent Project Count - Maximum number of project documents to show in the –Open Recent” 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 –Absolute”, –Project”, –CodeWarrior”, and –System”. 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 –Output Directory Location” 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 –Output Directory Location” 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Ž 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 –path” property is an absolute path to the location of the source tree. + 'Registry_Key' : 'STK1', # The –path” property is the name of a registry key that contains the path to the root. + 'Environment_Variable' : 'STK2', # The –path” 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 index 0000000..96581c5 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/CodeWarrior/Standard_Suite.py @@ -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„keyword '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 index 0000000..26df454 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Finder/Containers_and_folders.py @@ -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): + """ - 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 –desktop” 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 –trash” 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 index 0000000..6ec7e53 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Finder/Earlier_terms.py @@ -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 –New Folder” 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 –About this Computer” 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): + """ - 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 –Get Info”) """ + 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 –trash” 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 index 0000000..5137594 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Finder/Files_and_suitcases.py @@ -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): + """ - 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 –Get Info” window) """ + which = 'ver2' + want = 'itxt' +class version(aetools.NProperty): + """version - the version of the file (visible at the bottom of the –Get Info” window) """ + which = 'vers' + want = 'itxt' + +files = file + +class alias_file(aetools.ComponentItem): + """alias file - An alias file (created with –Make Alias”) """ + 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 index 0000000..9c4b65e --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Finder/Finder_Basics.py @@ -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 –New Folder” 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 –About this Computer” 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 –Apple Menu Items,” 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 –Control Panels” """ + which = 'ctrl' + want = 'obj ' +class extensions_folder(aetools.NProperty): + """extensions folder - the special folder named –Extensions” """ + which = 'extn' + want = 'obj ' +class fonts_folder(aetools.NProperty): + """fonts folder - the special folder named –Fonts” """ + which = 'font' + want = 'obj ' +class preferences_folder(aetools.NProperty): + """preferences folder - the special folder named –Preferences” """ + which = 'pref' + want = 'obj ' +class shutdown_items_folder(aetools.NProperty): + """shutdown items folder - the special folder named –Shutdown Items” """ + which = 'shdf' + want = 'obj ' +class startup_items_folder(aetools.NProperty): + """startup items folder - the special folder named –Startup Items” """ + which = 'strt' + want = 'obj ' +class temporary_items_folder(aetools.NProperty): + """temporary items folder - the special folder named –Temporary Items” (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 index 0000000..742c51a --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Finder/Finder_items.py @@ -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: –empty” and –empty trash” 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 –Get Info” 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 index 0000000..6dfd9c6 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Finder/Obsolete_terms.py @@ -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 –Get Info”) """ + 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 –Sharingƒ”) """ + 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 index 0000000..b4d6037 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Finder/Type_Definitions.py @@ -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 •as 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 index 0000000..4986946 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Finder/Window_classes.py @@ -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): + """ - 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 –Get Info”) """ + 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 –Get Info” window) """ + which = 'ver2' + want = 'itxt' +class version(aetools.NProperty): + """version - the version of the file (visible at the bottom of the –Get Info” 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 (–Window” 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 index 0000000..57b61b3 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Netscape/Mozilla_suite.py @@ -0,0 +1,269 @@ +"""Suite Mozilla suite: Experimental Mozilla suite +Level 1, version 1 + +Generated from Macintosh HD:Internet:Internet-programma's:Netscape CommunicatorŽ-map:Netscape CommunicatorŽ +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 •DEFAULTÕ) + 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 –FILE://foo/applicationname” + """ + _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, •BrwzÕ browser, •AddrÕ addressbook, •MesgÕ 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 –Joe Bloggs”. 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 index 0000000..b57086d --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Netscape/PowerPlant.py @@ -0,0 +1,86 @@ +"""Suite PowerPlant: +Level 0, version 0 + +Generated from Macintosh HD:Internet:Internet-programma's:Netscape CommunicatorŽ-map:Netscape CommunicatorŽ +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 –focus” 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 index 0000000..90b37ff --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Netscape/Required_suite.py @@ -0,0 +1,108 @@ +"""Suite Required suite: +Level 0, version 0 + +Generated from Macintosh HD:Internet:Internet-programma's:Netscape CommunicatorŽ-map:Netscape CommunicatorŽ +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 index 0000000..1044ca8 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Netscape/Standard_Suite.py @@ -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Ž-map:Netscape CommunicatorŽ +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 index 0000000..1498c71 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Netscape/Standard_URL_suite.py @@ -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Ž-map:Netscape CommunicatorŽ +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 index 0000000..beda5b3 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Netscape/Text.py @@ -0,0 +1,120 @@ +"""Suite Text: +Level 0, version 0 + +Generated from Macintosh HD:Internet:Internet-programma's:Netscape CommunicatorŽ-map:Netscape CommunicatorŽ +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 –set” 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 index 0000000..c42505c --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Netscape/WorldWideWeb_suite.py @@ -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Ž-map:Netscape CommunicatorŽ +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 –echo” 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 •specialÕ 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 –handler” for this protocol with a given prefix. The handler will receive –OpenURL”, or if that fails, –GetURL” event. + Required argument: Application sig + Keyword argument for_protocol: protocol prefix: –finger:”, –file”, + 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 –register protocol” + 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 index 0000000..38af429 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/Netscape/__init__.py @@ -0,0 +1,55 @@ +""" +Package generated from Macintosh HD:Internet:Internet-programma's:Netscape CommunicatorŽ-map:Netscape CommunicatorŽ +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 index 0000000..58d265c --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/StdSuites/AppleScript_Suite.py @@ -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 •tellÕ 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 •end 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‚subroutine: 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): + """ - 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 index 0000000..7870acd --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/StdSuites/Standard_Suite.py @@ -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 •selectÕ command to set a new selection; use •contents 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 •selectÕ command to make a new selection. """ + want = 'csel' +class contents(aetools.NProperty): + """contents - the information currently selected. Use •contents 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 index 0000000..0e62666 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/StdSuites/Table_Suite.py @@ -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 index 0000000..2f18df1 --- /dev/null +++ b/Mac/Lib/lib-scriptpackages/StdSuites/Text_Suite.py @@ -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): + """ - 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 •story.Õ """ + 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 index 0000000..605a3e0 --- /dev/null +++ b/Mac/Lib/lib-toolbox/AppleEvents.py @@ -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 index 0000000..9ba542a --- /dev/null +++ b/Mac/Lib/lib-toolbox/Dialogs.py @@ -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 index 0000000..56dde47 --- /dev/null +++ b/Mac/Lib/lib-toolbox/Icons.py @@ -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€') +kAppleMenuFolderIcon = FOUR_CHAR_CODE('amnu') +kApplicationsFolderIcon = FOUR_CHAR_CODE('apps') +kApplicationSupportFolderIcon = FOUR_CHAR_CODE('asup') +kAssistantsFolderIcon = FOUR_CHAR_CODE('ast€') +kContextualMenuItemsFolderIcon = FOUR_CHAR_CODE('cmnu') +kControlPanelDisabledFolderIcon = FOUR_CHAR_CODE('ctrD') +kControlPanelFolderIcon = FOUR_CHAR_CODE('ctrl') +kControlStripModulesFolderIcon = FOUR_CHAR_CODE('sdv€') +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('€hlp') +kInternetFolderIcon = FOUR_CHAR_CODE('int€') +kInternetPlugInFolderIcon = FOUR_CHAR_CODE('€net') +kLocalesFolderIcon = FOUR_CHAR_CODE('€loc') +kMacOSReadMeFolderIcon = FOUR_CHAR_CODE('mor€') +kPreferencesFolderIcon = FOUR_CHAR_CODE('prf€') +kPrinterDescriptionFolderIcon = FOUR_CHAR_CODE('ppdf') +kPrinterDriverFolderIcon = FOUR_CHAR_CODE('€prd') +kPrintMonitorFolderIcon = FOUR_CHAR_CODE('prnt') +kRecentApplicationsFolderIcon = FOUR_CHAR_CODE('rapp') +kRecentDocumentsFolderIcon = FOUR_CHAR_CODE('rdoc') +kRecentServersFolderIcon = FOUR_CHAR_CODE('rsrv') +kScriptingAdditionsFolderIcon = FOUR_CHAR_CODE('€scr') +kSharedLibrariesFolderIcon = FOUR_CHAR_CODE('€lib') +kScriptsFolderIcon = FOUR_CHAR_CODE('scr€') +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('€tex') +kAppearanceFolderIcon = FOUR_CHAR_CODE('appr') +kUtilitiesFolderIcon = FOUR_CHAR_CODE('uti€') +kVoicesFolderIcon = FOUR_CHAR_CODE('fvoc') +kColorSyncFolderIcon = FOUR_CHAR_CODE('prof') +kInternetSearchSitesFolderIcon = FOUR_CHAR_CODE('issf') +kUsersFolderIcon = FOUR_CHAR_CODE('usr€') +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 index 0000000..dda3f08 --- /dev/null +++ b/Mac/Lib/macerrors.py @@ -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 € 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 #‚‚‚ fill out missing codes ‚‚‚ +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 but found ") +OSASyntaxError = -2740 #Signaled when a syntax error occurs. (e.g. "Syntax error" or " can't go after ") +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 –Extensions Disabled” +dsHD20Installed = -12 #say –HD20 Startup” +dsDisassemblerInstalled = -11 #say –Disassembler Installed” +dsMacsBugInstalled = -10 #say –MacsBug Installed” +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 index 0000000..f906f6c --- /dev/null +++ b/Mac/Lib/test/tlist_dialog.rsrc @@ -0,0 +1 @@ +(This file must be converted with BinHex 4.0) :!!"bFh*M8P0&4!#3#!'IKH8!N!3"!!!!!9N!!!"C!!!!4J$k+J!!qLS!!2SU!!$ k+J!!qLS!!2SUq!$k+`!!q[rj%A4XDA0dAf4TB@a[CbjbFh*M-M%Z-5iaFh4KE'a PFQ`!!(*cFQ058d9%!*!BXQ0apJ#3"J'I+J!!qLS!!2SU!!$k+J!!qLS!!2SU!!$ k+J!!qLS!!2SUq!$k+`!!q[rj!$S!!2Vr%$S!!2SV!!$kr!!!qLS!!2SU!!$k+J! !qLS!!2SU!!$k+J!!qLS!!2SU!!$k+[J!qLX!!2Vrq3!k!!$kr`!!qLX!!2Vm!!$ k+J!!qLS!!2SU!*!%2!!#!*!&UJ#J!,i!fJ3#6dX!N!8S!!S!T3$D!*!(#J!+!"` !fBJ18f9XC@0d)'%JGfpbC$S!!!!9!%B!MJ%1!Ai!!`%!!3#3"3)"!!!!!3!!!!& C!!!!@3!!!%B!b9$i%D)!!!!F!%B!!84-6dF!!!!54%P86!!!!"i#!Irr!!!!3!$ *8E`#!Irr!*!&b8rJLZ): \ No newline at end of file diff --git a/Mac/Modules/Nav.c b/Mac/Modules/Nav.c new file mode 100644 index 0000000..ff7724e --- /dev/null +++ b/Mac/Modules/Nav.c @@ -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 +#else +#include +#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; iitself.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 index 0000000..4e06f41 --- /dev/null +++ b/Mac/Modules/app/Appmodule.c @@ -0,0 +1,1168 @@ + +/* =========================== Module App =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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 index 0000000..d370a57 --- /dev/null +++ b/Mac/Modules/app/appsupport.py @@ -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 +#else +#include +#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 index 0000000..1738f3e --- /dev/null +++ b/Mac/Modules/cm/Cmmodule.c @@ -0,0 +1,790 @@ + +/* =========================== Module Cm ============================ */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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 index 0000000..cb9112b --- /dev/null +++ b/Mac/Modules/cm/cmsupport.py @@ -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 +#else +#include +#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 index 0000000..3c3c855 --- /dev/null +++ b/Mac/Modules/dlg/Dlgmodule.c @@ -0,0 +1,1426 @@ + +/* =========================== Module Dlg =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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 index 0000000..b166b42 --- /dev/null +++ b/Mac/Modules/dlg/dlgsupport.py @@ -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 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 +#else +#include +#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 index 0000000..2fd7cfe --- /dev/null +++ b/Mac/Modules/drag/Dragmodule.c @@ -0,0 +1,1004 @@ + +/* ========================== Module Drag =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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, ®ion, + 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 index 0000000..c35111e --- /dev/null +++ b/Mac/Modules/drag/dragsupport.py @@ -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 +#else +#include +#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 index 0000000..bff6e1e --- /dev/null +++ b/Mac/Modules/evt/Evtmodule.c @@ -0,0 +1,451 @@ + +/* =========================== Module Evt =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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 index 0000000..88ee6c2 --- /dev/null +++ b/Mac/Modules/evt/evtsupport.py @@ -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 +#else +#include +#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 index 0000000..9ec1e0e --- /dev/null +++ b/Mac/Modules/fm/fmsupport.py @@ -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 +#else +#include +#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 index 0000000..15a2c89 --- /dev/null +++ b/Mac/Modules/gestaltmodule.c @@ -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 +#include +#else +#include +#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 index 0000000..3c26cda --- /dev/null +++ b/Mac/Modules/help/Helpmodule.c @@ -0,0 +1,292 @@ + +/* ========================== Module Help =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#include + +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 index 0000000..bd616db --- /dev/null +++ b/Mac/Modules/icgluemodule.c @@ -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 +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 index 0000000..5d68ed9 --- /dev/null +++ b/Mac/Modules/icn/Icnmodule.c @@ -0,0 +1,1409 @@ + +/* =========================== Module Icn =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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 index 0000000..bfdc555 --- /dev/null +++ b/Mac/Modules/icn/icnsupport.py @@ -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 +#else +#include +#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 index 0000000..6e28613 --- /dev/null +++ b/Mac/Modules/list/Listmodule.c @@ -0,0 +1,1001 @@ + +/* ========================== Module List =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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 index 0000000..d5ddd5b --- /dev/null +++ b/Mac/Modules/list/listsupport.py @@ -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 +#else +#include +#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 index 0000000..d5f283b --- /dev/null +++ b/Mac/Modules/macmodule.c @@ -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 +#include +#include + +#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 +#endif /* USE_GUSI1 */ +#include +#include +#else /* USE_GUSI */ +#if TARGET_API_MAC_OS8 +#define stat macstat +#endif +#endif /* USE_GUSI */ + +#ifdef USE_GUSI2 +#define sync bad_sync +#include +#include +#undef sync +int sync(void); +#else +#define mode_t int +#include +#ifdef _POSIX +#include +#include +#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 +#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 index 0000000..c99aa4b --- /dev/null +++ b/Mac/Modules/macosmodule.c @@ -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 +#include +#include +#include +#include +#else +#include +#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 +#include + +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 index 0000000..f3c2df9 --- /dev/null +++ b/Mac/Modules/menu/Menumodule.c @@ -0,0 +1,2558 @@ + +/* ========================== Module Menu =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include /* Defines OpenDeskAcc in universal headers */ +#include +#else +#include +#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 index 0000000..a438f14 --- /dev/null +++ b/Mac/Modules/menu/menusupport.py @@ -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 /* Defines OpenDeskAcc in universal headers */ +#include +#else +#include +#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 index 0000000..abe3630 --- /dev/null +++ b/Mac/Modules/qdoffs/Qdoffsmodule.c @@ -0,0 +1,596 @@ + +/* ========================= Module Qdoffs ========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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 index 0000000..bc21531 --- /dev/null +++ b/Mac/Modules/qdoffs/qdoffssupport.py @@ -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 +#else +#include +#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 index 0000000..12c67ca --- /dev/null +++ b/Mac/Modules/qt/Qtmodule.c @@ -0,0 +1,8418 @@ + +/* =========================== Module Qt ============================ */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +/* #include */ +#include +#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, + ¶ms)) + 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, + ¤tTime); + _res = Py_BuildValue("lO&", + _rv, + QtTimeRecord_New, ¤tTime); + 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", + ®istrationKey, + &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, + ¶ms)) + 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, ¶meterID, + ¶meterChangeSeed, + &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, ¶meterID, + 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 index 0000000..e1b7374 --- /dev/null +++ b/Mac/Modules/qt/qtsupport.py @@ -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 +#else +/* #include */ +#include +#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 index 0000000..8790080 --- /dev/null +++ b/Mac/Modules/res/Resmodule.c @@ -0,0 +1,1579 @@ + +/* =========================== Module Res =========================== */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#include +#else +#include +#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 index 0000000..5b68623 --- /dev/null +++ b/Mac/Modules/res/resscan.py @@ -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 index 0000000..8be1b94 --- /dev/null +++ b/Mac/Modules/res/ressupport.py @@ -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 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 +#include +#else +#include +#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 index 0000000..44dee33 --- /dev/null +++ b/Mac/Modules/scrap/scrapsupport.py @@ -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 +#else +#include +#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 index 0000000..d37908b --- /dev/null +++ b/Mac/Modules/te/TEmodule.c @@ -0,0 +1,1032 @@ + +/* =========================== Module TE ============================ */ + +#include "Python.h" + + + +#include "macglue.h" +#include "pymactoolbox.h" + +#ifdef WITHOUT_FRAMEWORKS +#include +#else +#include +#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, ®ion)) + 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 index 0000000..6cb96e2 --- /dev/null +++ b/Mac/Modules/te/tesupport.py @@ -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 +#else +#include +#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 index 0000000..8c0b00f --- /dev/null +++ b/Mac/Python/getapplbycreator.c @@ -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 +#include +#include +#else +#include +#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 index 0000000..f26216b --- /dev/null +++ b/Mac/Python/pyGUSISIOUX.cp @@ -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 + +#include +#include +#include +#include +#include + +#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 index 0000000..adf6214 --- /dev/null +++ b/Mac/ReadMe @@ -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 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 +. However, a better way to discuss MacPython is to join the + mailing list, which is explicitly meant for +this purpose. + + +Jack Jansen +Oratrix Development BV +Valeriusplein 30 +Amsterdam +the Netherlands + +, http://www.cwi.nl/~jack diff --git a/Mac/Relnotes b/Mac/Relnotes new file mode 100644 index 0000000..772ea56 --- /dev/null +++ b/Mac/Relnotes @@ -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 index 0000000..85d7466 --- /dev/null +++ b/Mac/Resources/version.r @@ -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 index 0000000..6efe92d --- /dev/null +++ b/Mac/_checkversion.py @@ -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 index 0000000..b3fe7cd --- /dev/null +++ b/Mac/mwerks/mwerks_applet_config.h @@ -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 +#endif diff --git a/Mac/mwerks/mwerks_carbonNOGUSI_config.h b/Mac/mwerks/mwerks_carbonNOGUSI_config.h new file mode 100644 index 0000000..3961535 --- /dev/null +++ b/Mac/mwerks/mwerks_carbonNOGUSI_config.h @@ -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 +#endif diff --git a/Mac/mwerks/mwerks_carbon_config.h b/Mac/mwerks/mwerks_carbon_config.h new file mode 100644 index 0000000..fe18963 --- /dev/null +++ b/Mac/mwerks/mwerks_carbon_config.h @@ -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 +#endif diff --git a/Mac/mwerks/mwerks_carbongusi_config.h b/Mac/mwerks/mwerks_carbongusi_config.h new file mode 100644 index 0000000..9a4e5b6 --- /dev/null +++ b/Mac/mwerks/mwerks_carbongusi_config.h @@ -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 +#endif diff --git a/Mac/mwerks/mwerks_carbonplugin_config.h b/Mac/mwerks/mwerks_carbonplugin_config.h new file mode 100644 index 0000000..0d2fc7c --- /dev/null +++ b/Mac/mwerks/mwerks_carbonplugin_config.h @@ -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 +#endif diff --git a/Mac/mwerks/mwerks_nonshared_config.h b/Mac/mwerks/mwerks_nonshared_config.h new file mode 100644 index 0000000..abf205f --- /dev/null +++ b/Mac/mwerks/mwerks_nonshared_config.h @@ -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 +#endif +/* Missing declarations. Should these go to pyport.h? */ +#ifdef USE_GUSI2 +#include +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 index 0000000..fa6d3ea --- /dev/null +++ b/Mac/mwerks/mwerks_nscarbon_config.h @@ -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 +#endif +/* Missing declarations. Should these go to pyport.h? */ +#ifdef USE_GUSI2 +#include +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 index 0000000..9aa4941 --- /dev/null +++ b/Mac/mwerks/mwerks_plugin_config.h @@ -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 +#endif diff --git a/Mac/mwerks/mwerks_shared_config.h b/Mac/mwerks/mwerks_shared_config.h new file mode 100644 index 0000000..05e9293 --- /dev/null +++ b/Mac/mwerks/mwerks_shared_config.h @@ -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 +#endif +/* Missing declarations. Should these go to pyport.h? */ +#ifdef USE_GUSI2 +#include +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 index 0000000..26a9b14 --- /dev/null +++ b/Mac/mwerks/mwerks_shcarbon_config.h @@ -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 +#endif +/* Missing declarations. Should these go to pyport.h? */ +#ifdef USE_GUSI2 +#include +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 index 0000000..573aba5 --- /dev/null +++ b/Mac/mwerks/mwerks_small_config.h @@ -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 +#endif +/* Missing declarations. Should these go to pyport.h? */ +#ifdef USE_GUSI2 +#include +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 index 0000000..6ea97e4 --- /dev/null +++ b/Mac/mwerks/mwerks_thrcarbonsm_config.h @@ -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 +#endif diff --git a/Mac/mwerks/mwerks_threadsmall_config.h b/Mac/mwerks/mwerks_threadsmall_config.h new file mode 100644 index 0000000..f4199ef --- /dev/null +++ b/Mac/mwerks/mwerks_threadsmall_config.h @@ -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 +#endif diff --git a/Mac/mwerks/mwerks_tkplugin_config.h b/Mac/mwerks/mwerks_tkplugin_config.h new file mode 100644 index 0000000..d0fb811 --- /dev/null +++ b/Mac/mwerks/mwerks_tkplugin_config.h @@ -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 index 0000000..bb5ddcc --- /dev/null +++ b/Mac/scripts/bgenall.py @@ -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 index 0000000..d3f8247 --- /dev/null +++ b/Mac/scripts/errors.txt @@ -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 € 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 ‚‚‚ fill out missing codes ‚‚‚ +-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 but found ") +-2740 OSASyntaxError Signaled when a syntax error occurs. (e.g. "Syntax error" or " can't go after ") +-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 –Extensions Disabled” +-12 dsHD20Installed say –HD20 Startup” +-11 dsDisassemblerInstalled say –Disassembler Installed” +-10 dsMacsBugInstalled say –MacsBug Installed” +-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 index 0000000..8fc313a --- /dev/null +++ b/Mac/tclmods/tclMacNotify.c @@ -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 +#endif +#include "tclInt.h" +#include "tclPort.h" +#include "tclMac.h" +#include "tclMacInt.h" +#include +#include +#include +#include +#include + + +/* + * 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)); + +/* + *---------------------------------------------------------------------- + * + * InitNotifier -- + * + * Initializes the notifier structure. + * + * Results: + * None. + * + * Side effects: + * Creates a new exit handler. + * + *---------------------------------------------------------------------- + */ + +static void +InitNotifier(void) +{ + initialized = 1; + memset(¬ifier, 0, sizeof(notifier)); + Tcl_CreateExitHandler(NotifierExitHandler, NULL); +} + +/* + *---------------------------------------------------------------------- + * + * 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; +} + +/* + *---------------------------------------------------------------------- + * + * 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(¤tMouse); + 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(¤tMouse); + 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; +} + +/* + *---------------------------------------------------------------------- + * + * 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(¬ifier.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; + } +} + +/* + *---------------------------------------------------------------------- + * + * 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(¤tMouse); + 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; +} + +/* + *---------------------------------------------------------------------- + * + * 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); +} + +/* + *---------------------------------------------------------------------- + * + * 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; +} -- cgit v0.12