; $Id: polywarp.pro,v 1.3 1997/01/15 03:11:50 ali Exp $ ; ; Copyright (c) 1983-1997, Research Systems, Inc. All rights reserved. ; Unauthorized reproduction prohibited. pro POLYWARP, XI, YI, XO, YO, DEGREE, KX, KY ;+ ; NAME: ; POLYWARP ; ; PURPOSE: ; Perform polynomial spatial warping. ; ; Using least squares estimation, determine the coefficients Kx[i,j] ; and Ky[i,j] of the polynomial functions: ; Xi = sum over i and j of: Kx[i,j] * Xo^j * Yo^i ; Yi = sum over i and j of: Ky[i,j] * Xo^j * Yo^i ; ; Kx and Ky can be used as inputs P and Q to the built-in function ; POLY_2D. ; ; CATEGORY: ; Image processing. ; ; CALLING SEQUENCE: ; POLYWARP, Xi, Yi, Xo, Yo, Degree, Kx, Ky ; ; INPUTS: ; Xi, Yi: The vectors of x,y coordinates to be fit as a function ; of Xo and Yo. ; ; Xo, Yo: The vectors of x,y independent coordinates. These vectors ; must have the same number of elements as Xi and Yi. ; ; Degree: The degree of the fit. The number of coordinate pairs must be ; greater than or equal to (Degree+1)^2. ; ; OUTPUTS: ; Kx: The array of coefficients for Xi as a function of (xo,yo). ; This parameter is returned as a (Degree+1) by (Degree+1) ; element array. ; ; Ky: The array of coefficients for yi. This parameter is returned ; as a (Degree+1) by (Degree+1) element array. ; ; COMMON BLOCKS: ; None. ; ; SIDE EFFECTS: ; None. ; ; RESTRICTIONS: ; None. ; ; PROCEDURE: ; See: Computer Image Processing and Recognition, Ernest L. Hall, ; Academic Press, 1979, Pages 186-188. ; ; Xi and Yi are expressed as polynomials of Xo, Yo: ; Xi = Kx[i,j] * Xo^j * Yo^i Summed for i,j = 0 to degree. ; And ; Yi = Ky[i,j] * Xo^j * Yo^i. ; ; This coordinate transformation may be then used to ; map from Xo, Yo coordinates into Xi, Yi coordinates. ; ; EXAMPLE: ; The following example shows how to display an image and warp it ; using the POLYWARP and POLY_2D routines. ; ; Create and display the original image by entering: ; ; A = BYTSCL(SIN(DIST(250))) ; TVSCL, A ; ; Now set up the Xi's and Yi's. Enter: ; ; XI = [24, 35, 102, 92] ; YI = [81, 24, 25, 92] ; ; Enter the Xo's and Yo's: ; ; XO = [61, 62, 143, 133] ; YO = [89, 34, 38, 105] ; ; Run POLYWARP to obtain a Kx and Ky: ; ; POLYWARP, XI, YI, XO, YO, 1, KX, KY ; ; Create a warped image based on Kx and Ky with POLY_2D: ; ; B = POLY_2D(A, KX, KY) ; ; Display the new image: ; ; TV, B ; ; MODIFICATION HISTORY: ; DMS, RSI, Dec, 1983. ;- ; on_error,2 ;Return to caller if an error occurs m = n_elements(xi) ;# of points.. if (m ne n_elements(yi)) or (n_elements(xo) ne n_elements(yo)) $ or (m ne n_elements(xo)) then begin message,'Inconsistent number of elements.' endif ; n = degree ;use halls notation n2=(n+1)^2 if n2 gt m then message, '# of points must be ge (degree+1)^2.' ; x = dblarr(2,m) ;x array u = x x = double([transpose(xi[*]),transpose(yi[*])]) u = double([transpose(xo[*]),transpose(yo[*])]) ; ut = dblarr(n2,m) ;transpose of U u2i = dblarr(n+1) ;[1,u2i,u2i^2,...] for i=0L,m-1 do begin u2i[0]=1. ;init u2i zz = u[1,i] for j=1,n do u2i[j]=u2i[j-1]*zz ut[0,i]= u2i ;evaluate 0 th power separately for j=1,n do ut[j*(n+1),i]=u2i*u[0,i]^j ;fill ut=u0i^j * U2i endfor ; uu = transpose(ut) ;big u kk = invert(ut#uu)#ut ;solve equation kx = fltarr(n+1,n+1) + float(kk # transpose(x[0,*])) ;g1, make 2d square ky = fltarr(n+1,n+1) + float(kk # transpose(x[1,*])) ;g2 return end u D$D$h D$]_^[ NCTION IsDriveLocalHard (szDrive$) AS INTEGER DECLARE FUNCTION IsDriveRemovable (szDrive$) AS INTEGER DECLARE FUNCTION IsDriveNetwork (szDrive$) AS INTEGER DECLARE SUB GetValidDrivesList (szSymbol$) DECLARE SUB GetLocalHardDrivesList (szSymbol$) DECLARE SUB GetRemovableDrivesList (szSymbol$) DECLARE SUB GetNetworkDrivesList (szSymbol$) DECLARE FUNCTION GetTotalSpaceForDrive (szDrive$) AS LONG DECLARE FUNCTION GetFreeSpaceForDrive (szDrive$) AS LONG DECLARE FUNCTION GetDOSMajorVersion AS INTEGER DECLARE FUNCTION GetDOSMinorVersion AS INTEGER DECLARE FUNCTION GetEnvVariableValue (szEnvVar$) AS STRING DECLARE FUNCTION GetNumWinApps AS INTEGER DECLARE FUNCTION DoesFileExist (szFile$, mode%) AS INTEGER DECLARE FUNCTION GetDateOfFile (szFile$) AS STRING DECLARE FUNCTION GetYearFromDate (szDate$) AS INTEGER DECLARE FUNCTION GetMonthFromDate (szDate$) AS INTEGER DECLARE FUNCTION GetDayFromDate (szDate$) AS INTEGER DECLARE FUNCTION GetHourFromDate (szDate$) AS INTEGER DECLARE FUNCTION GetMinuteFromDate (szDate$) AS INTEGER DECLARE FUNCTION GetSecondFromDate (szDate$) AS INTEGER DECLARE FUNCTION GetVersionOfFile (szFile$) AS STRING DECLARE FUNCTION GetVersionNthField (szVersion$, nField%) AS LONG DECLARE FUNCTION GetSizeOfFile (szFile$) AS LONG DECLARE FUNCTION FindTargetOnEnvVar (szFile$, szEnvVar$) AS STRING DECLARE FUNCTION FindFileInTree (szFile$, szDir$) AS STRING DECLARE FUNCTION DoesDirExist (szDir$) AS INTEGER DECLARE FUNCTION DoesIniSectionExist (szFile$, szSect$) AS INTEGER DECLARE FUNCTION DoesIniKeyExist (szFile$, szSect$, szKey$) AS INTEGER DECLARE FUNCTION GetIniKeyString (szFile$, szSect$, szKey$) AS STRING DECLARE FUNCTION GetConfigSmartdrvSize AS INTEGER DECLARE FUNCTION GetConfigRamdriveSize AS INTEGER DECLARE FUNCTION GetConfigNumBuffers AS INTEGER DECLARE FUNCTION GetConfigNumFiles AS INTEGER DECLARE FUNCTION GetConfigLastDrive AS STRING DECLARE FUNCTION IsDriverInConfig (szDrv$) AS INTEGER DECLARE FUNCTION GetProcessorType AS INTEGER DECLARE SUB GetParallelPortsList (szSymbol$) DECLARE SUB GetSerialPortsList (szSymbol$) DECLARE FUNCTION Has87MathChip AS INTEGER DECLARE FUNCTION HasMonochromeDisplay AS INTEGER DECLARE FUNCTION HasMouseInstalled AS INTEGER '************************************************************************* FUNCTION IsDriveValid (szDrive$) STATIC AS INTEGER '$ifdef DEBUG if FValidDrive(szDrive$) = 0 then BadArgErr 1, "IsDriveValid", szDrive$ end if '$endif ''DEBUG IsDriveValid = FIsValidDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1) END FUNCTION '************************************************************************* FUNCTION IsDriveLocalHard (szDrive$) STATIC AS INTEGER '$ifdef DEBUG if FValidDrive(szDrive$) = 0 then BadArgErr 1, "IsDriveLocalHard", szDrive$ end if '$endif ''DEBUG IsDriveLocalHard = FIsLocalHardDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1) END FUNCTION '************************************************************************* FUNCTION IsDriveRemovable (szDrive$) STATIC AS INTEGER '$ifdef DEBUG if FValidDrive(szDrive$) = 0 then BadArgErr 1, "IsDriveRemovable", szDrive$ end if '$endif ''DEBUG IsDriveRemovable = FIsRemoveDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1) END FUNCTION '************************************************************************* FUNCTION IsDriveNetwork (szDrive$) STATIC AS INTEGER '$ifdef DEBUG if FValidDrive(szDrive$) = 0 then BadArgErr 1, "IsDriveNetwork", szDrive$ end if '$endif ''DEBUG IsDriveNetwork = FIsRemoteDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1) END FUNCTION '************************************************************************* FUNCTION GetTotalSpaceForDrive (szDrive$) STATIC AS LONG '$ifdef DEBUG if FValidDrive(szDrive$) = 0 then BadArgErr 1, "GetTotalSpaceForDrive", szDrive$ end if '$endif ''DEBUG GetTotalSpaceForDrive = LcbTotalDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1) END FUNCTION '************************************************************************* FUNCTION GetFreeSpaceForDrive (szDrive$) STATIC AS LONG '$ifdef DEBUG if FValidDrive(szDrive$) = 0 then BadArgErr 1, "GetFreeSpaceForDrive", szDrive$ end if '$endif ''DEBUG GetFreeSpaceForDrive = LcbFreeDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1) END FUNCTION '************************************************************************* SUB GetValidDrivesList (szSymbol$) STATIC '$ifdef DEBUG if szSymbol$ = "" then BadArgErr 1, "GetValidDrivesList", szSymbol$ end if '$endif ''DEBUG if FGetValidDrivesList(szSymbol$) = 0 then '$ifdef DEBUG StfApiErr saeFail, "GetValidDrivesList", szSymbol$ '$endif ''DEBUG ERROR STFERR end if END SUB '************************************************************************* SUB GetLocalHardDrivesList (szSymbol$) STATIC '$ifdef DEBUG if szSymbol$ = "" then BadArgErr 1, "GetLocalHardDrivesList", szSymbol$ end if '$endif ''DEBUG if FGetLocalHardDrivesList(szSymbol$) = 0 then '$ifdef DEBUG StfApiErr saeFail, "GetLocalHardDrivesList", szSymbol$ '$endif ''DEBUG ERROR STFERR end if END SUB '************************************************************************* SUB GetRemovableDrivesList (szSymbol$) STATIC '$ifdef DEBUG if szSymbol$ = "" then BadArgErr 1, "GetRemovableDrivesList", szSymbol$ end if '$endif ''DEBUG if FGetRemovableDrivesList(szSymbol$) = 0 then '$ifdef DEBUG StfApiErr saeFail, "GetRemovableDrivesList", szSymbol$ '$endif ''DEBUG ERROR STFERR end if END SUB '************************************************************************* SUB GetNetworkDrivesList (szSymbol$) STATIC '$ifdef DEBUG if szSymbol$ = "" then BadArgErr 1, "GetNetworkDrivesList", szSymbol$ end if '$endif ''DEBUG if FGetNetworkDrivesList(szSymbol$) = 0 then '$ifdef DEBUG StfApiErr saeFail, "GetNetworkDrivesList", szSymbol$ '$endif ''DEBUG ERROR STFERR end if END SUB '************************************************************************* FUNCTION GetDOSMajorVersion STATIC AS INTEGER GetDOSMajorVersion = WGetDOSMajorVersion END FUNCTION '************************************************************************* FUNCTION GetDOSMinorVersion STATIC AS INTEGER GetDOSMinorVersion = WGetDOSMinorVersion END FUNCTION '************************************************************************* FUNCTION GetEnvVariableValue (szEnvVar$) STATIC AS STRING '$ifdef DEBUG if szEnvVar$ = "" then BadArgErr 1, "GetEnvVariableValue", szEnvVar$ end if '$endif ''DEBUG cb% = 1024 szBuf$ = STRING$(cb%, 32) cbRet% = CbGetEnvVariableValue(szEnvVar$, szBuf$, cb%) GetEnvVariableValue = szBuf$ '$ifdef DEBUG IF cbRet% >= cb% THEN StfApiErr saeOvfl, "GetEnvVariableValue", szEnvVar$ ERROR STFERR END IF '$endif ''DEBUG szBuf$ = "" END FUNCTION '************************************************************************* FUNCTION GetNumWinApps STATIC AS INTEGER GetNumWinApps = WGetNumWinApps END FUNCTION '************************************************************************* FUNCTION DoesFileExist (szFileName$, mode%) STATIC AS INTEGER '$ifdef DEBUG if FValidFATPath(szFileName$) = 0 then BadArgErr 1, "DoesFileExist", szFileName$+", "+STR$(mode%) end if '$endif ''DEBUG DoesFileExist = FDoesFileExist(szFileName$, mode%) END FUNCTION '************************************************************************* FUNCTION GetDateOfFile (szFile$) STATIC AS STRING '$ifdef DEBUG if FValidFATPath(szFile$) = 0 then BadArgErr 1, "GetDateOfFile", szFile$ end if '$endif ''DEBUG cb% = 20 szBuf$ = STRING$(cb%, 32) cbRet% = CbGetDateOfFile(szFile$, szBuf$, cb%) GetDateOfFile = szBuf$ '$ifdef DEBUG IF cbRet% >= cb% THEN StfApiErr saeOvfl, "GetDateOfFile", szFile$ ERROR STFERR END IF '$endif ''DEBUG szBuf$ = "" END FUNCTION '************************************************************************* FUNCTION GetYearFromDate (szDate$) STATIC AS INTEGER '$ifdef DEBUG if szDate = "" then BadArgErr 1, "GetYearFromDate", szDate$ end if '$endif ''DEBUG GetYearFromDate = VAL(MID$(szDate$, 1, 4)) END FUNCTION '************************************************************************* FUNCTION GetMonthFromDate (szDate$) STATIC AS INTEGER '$ifdef DEBUG if szDate = "" then BadArgErr 1, "GetMonthFromDate", szDate$ end if '$endif ''DEBUG GetMonthFromDate = VAL(MID$(szDate$, 6, 2)) END FUNCTION '************************************************************************* FUNCTION GetDayFromDate (szDate$) STATIC AS INTEGER '$ifdef DEBUG if szDate = "" then BadArgErr 1, "GetDayFromDate", szDate$ end if '$endif ''DEBUG GetDayFromDate = VAL(MID$(szDate$, 9, 2)) END FUNCTION '************************************************************************* FUNCTION GetHourFromDate (szDate$) STATIC AS INTEGER '$ifdef DEBUG if szDate = "" then BadArgErr 1, "GetHourFromDate", szDate$ end if '$endif ''DEBUG GetHourFromDate = VAL(MID$(szDate$, 12, 2)) END FUNCTION '************************************************************************* FUNCTION GetMinuteFromDate (szDate$) STATIC AS INTEGER '$ifdef DEBUG if szDate = "" then BadArgErr 1, "GetMinuteFromDate", szDate$ end if '$endif ''DEBUG GetMinuteFromDate = VAL(MID$(szDate$, 15, 2)) END FUNCTION '************************************************************************* FUNCTION GetSecondFromDate (szDate$) STATIC AS INTEGER '$ifdef DEBUG if szDate = "" then BadArgErr 1, "GetSecondFromDate", szDate$ end if '$endif ''DEBUG GetSecondFromDate = VAL(MID$(szDate$, 18, 2)) END FUNCTION '************************************************************************* FUNCTION GetVersionOfFile (szFile$) STATIC AS STRING '$ifdef DEBUG if FValidFATPath(szFile$) = 0 then BadArgErr 1, "GetVersionOfFile", szFile$ end if '$endif ''DEBUG cb% = 30 szBuf$ = STRING$(cb%, 32) cbRet% = CbGetVersionOfFile(szFile$, szBuf$, cb%) GetVersionOfFile = szBuf$ '$ifdef DEBUG IF cbRet% >= cb% THEN StfApiErr saeOvfl, "GetVersionOfFile", szFile$ ERROR STFERR END IF '$endif ''DEBUG szBuf$ = "" END FUNCTION '************************************************************************* FUNCTION GetVersionNthField (szVersion$, nField%) STATIC AS LONG '$ifdef DEBUG if (nField% < 1) OR (nField% > 4) then BadArgErr 2, "GetVersionNthField", szVersion$+", "+STR$(nField%) end if '$endif ''DEBUG GetVersionNthField = LGetVersionNthField(szVersion$, nField%) END FUNCTION '************************************************************************* FUNCTION GetSizeOfFile (szFile$) STATIC AS LONG '$ifdef DEBUG if FValidFATPath(szFile$) = 0 then BadArgErr 1, "GetSizeOfFile", szFile$ end if '$endif ''DEBUG GetSizeOfFile = LcbGetSizeOfFile(szFile$) END FUNCTION '************************************************************************* FUNCTION FindTargetOnEnvVar (szFile$, szEnvVar$) STATIC AS STRING '$ifdef DEBUG if CchlValidFATSubPath(szFile$) = 0 then n% = 1 elseif szEnvVar$ = "" then n% = 2 else n% = 0 end if if n% > 0 then BadArgErr n%, "FindTargetOnEnvVar", szFile$+", "+szEnvVar$ end if '$endif ''DEBUG cb% = 512 szBuf$ = STRING$(cb%, 32) cbRet% = CbFindTargetOnEnvVar(szFile$, szEnvVar$, szBuf$, cb%) IF cbRet% >= cb% THEN '$ifdef DEBUG StfApiErr saeOvfl, "FindTargetOnEnvVar", szFile$+", "+szEnvVar$ '$endif ''DEBUG ERROR STFERR END IF szBuf$ = RTRIM$(szBuf$) IF MID$(szBuf$, 1, 1) = "\" THEN szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$ ELSEIF Len(szBuf$) > 0 AND MID$(szBuf$, 2, 1) <> ":" THEN szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$ END IF FindTargetOnEnvVar = szBuf$ szBuf$ = "" END FUNCTION '************************************************************************* FUNCTION FindFileInTree (szFile$, szDir$) STATIC AS STRING '$ifdef DEBUG if CchlValidFATSubPath(szFile$) = 0 then n% = 1 elseif FValidFATDir(szDir$) = 0 then n% = 2 else n% = 0 end if if n% > 0 then BadArgErr n%, "FindFileInTree", szFile$+", "+szDir$ end if '$endif ''DEBUG cb% = 512 szBuf$ = STRING$(cb%, 32) cbRet% = CbFindFileInTree(szFile$, szDir$, szBuf$, cb%) FindFileInTree = szBuf$ '$ifdef DEBUG IF cbRet% >= cb% THEN StfApiErr saeOvfl, "FindFileInTree", szFile$+", "+szDir$ ERROR STFERR END IF '$endif ''DEBUG szBuf$ = "" END FUNCTION '************************************************************************* FUNCTION GetConfigSmartdrvSize STATIC AS INTEGER GetConfigSmartdrvSize = WGetConfigSmartdrvSize END FUNCTION '************************************************************************* FUNCTION GetConfigRamdriveSize STATIC AS INTEGER GetConfigRamdriveSize = WGetConfigRamdriveSize END FUNCTION '************************************************************************* FUNCTION GetConfigNumBuffers STATIC AS INTEGER GetConfigNumBuffers = WGetConfigNumBuffers END FUNCTION '************************************************************************* FUNCTION GetConfigNumFiles STATIC AS INTEGER GetConfigNumFiles = WGetConfigNumFiles END FUNCTION '************************************************************************* FUNCTION GetConfigLastDrive STATIC AS STRING chRet% = WGetConfigLastDrive if chRet% = 0 then GetConfigLastDrive = "" else GetConfigLastDrive = CHR$(chRet%) end if END FUNCTION '************************************************************************* FUNCTION IsDriverInConfig (szDrv$) STATIC AS INTEGER '$ifdef DEBUG if szDrv$ = "" then BadArgErr 1, "IsDriverInConfig", szDrv$ end if '$endif ''DEBUG IsDriverInConfig = FIsDriverInConfig(szDrv$) END FUNCTION '************************************************************************* FUNCTION GetProcessorType STATIC AS INTEGER GetProcessorType = 0 longTmp& = GetWinFlags() IF longTmp& AND WF_CPU486 THEN GetProcessorType = 4 ELSEIF longTmp& AND WF_CPU386 THEN GetProcessorType = 3 ELSEIF longTmp& AND WF_CPU286 THEN GetProcessorType = 2 ELSEIF longTmp& AND WF_CPU186 THEN GetProcessorType = 1 END IF END FUNCTION '************************************************************************* SUB GetParallelPortsList (szSymbol$) STATIC '$ifdef DEBUG if szSymbol$ = "" then BadArgErr 1, "GetParallelPortsList", szSymbol$ end if '$endif ''DEBUG if FGetParallelPortsList(szSymbol$) = 0 then '$ifdef DEBUG StfApiErr saeFail, "GetParallelPortsList", szSymbol$ '$endif ''DEBUG ERROR STFERR end if END SUB '************************************************************************* SUB GetSerialPortsList (szSymbol$) STATIC '$ifdef DEBUG if szSymbol$ = "" then BadArgErr 1, "GetSerialPortsList", szSymbol$ end if '$endif ''DEBUG if FGetSerialPortsList(szSymbol$) = 0 then '$ifdef DEBUG StfApiErr saeFail, "GetSerialPortsList", szSymbol$ '$endif ''DEBUG ERROR STFERR end if END SUB '************************************************************************* FUNCTION Has87MathChip STATIC AS INTEGER Has87MathChip = FHas87MathChip END FUNCTION '************************************************************************* FUNCTION HasMonochromeDisplay STATIC AS INTEGER HasMonochromeDisplay = FHasMonochromeDisplay END FUNCTION '************************************************************************* FUNCTION HasMouseInstalled STATIC AS INTEGER HasMouseInstalled = FHasMouseInstalled END FUNCTION '************************************************************************* FUNCTION DoesDirExist (szDir$) STATIC AS INTEGER '$ifdef DEBUG if FValidFATDir(szDir$) = 0 then BadArgErr 1, "DoesDirExist", szDir$ end if '$endif ''DEBUG DoesDirExist = FDirExists(szDir$) END FUNCTION '************************************************************************* FUNCTION DoesIniSectionExist (szFile$, szSect$) STATIC AS INTEGER '$ifdef DEBUG if FValidIniFile(szFile$) = 0 then BadArgErr 1, "DoesIniSectionExist", szFile$+", "+szSect$ end if '$endif ''DEBUG DoesIniSectionExist = FDoesIniSectionExist(szFile$, szSect$) END FUNCTION '************************************************************************* FUNCTION DoesIniKeyExist (szFile$, szSect$, szKey$) STATIC AS INTEGER '$ifdef DEBUG if FValidIniFile(szFile$) = 0 then n% = 1 elseif szKey$ = "" then n% = 3 else n% = 0 end if if n% > 0 then BadArgErr n%, "DoesIniKeyExist", szFile$+", "+szSect$+", "+szKey$ end if '$endif ''DEBUG DoesIniKeyExist = FDoesIniKeyExist(szFile$, szSect$, szKey$) END FUNCTION '************************************************************************* FUNCTION GetIniKeyString (szFile$, szSect$, szKey$) STATIC AS STRING '$ifdef DEBUG if FValidIniFile(szFile$) = 0 then n% = 1 elseif szKey$ = "" then n% = 3 else n% = 0 end if if n% > 0 then BadArgErr n%, "GetIniKeyString", szFile$+", "+szSect$+", "+szKey$ end if '$endif ''DEBUG cb% = 512 szBuf$ = STRING$(cb%, 32) cbRet% = CbGetIniKeyString(szFile$, szSect$, szKey$, szBuf$, cb%) GetIniKeyString = szBuf$ '$ifdef DEBUG IF cbRet% >= cb% THEN StfApiErr saeOvfl, "GetIniKeyString", szFile$+", "+szSect$+", "+szKey$ ERROR STFERR END IF '$endif ''DEBUG szBuf$ = "" END FUNCTION 5&6XL(B(,vcpuǽ,&l=<%,{޵y'AƗ@ Kcxf *啚/ |9zWv|>/^? ^~Xi7-lexub$$XF%՜] d3cn^Eյšraߏl=Έ &}uz66k}7NkYQHq̕^;#s>PgmIɒ\cc< ~R`$qE Pє!=nB){3>#o$\ZҨQKVD9@.9vv?"ԯu[錓!Q RvX1b(ޱ|r@u 5Bi3mN8z8ub7H򿑼KM˚}sP $coQ:|c>>David Steele|||60 MacLean Crescent|Saskatoon, SK S7J 2R7|374-9134| Full Block>>> c:\pub\niteowl\logo5.tifc:\pub\niteowl\logo5.wpg c:\data\cals\9695cal1.epsc:\ps\swinplot.epsc:\office\wpwin\graphics\steele.tif\,_ D,,DDr. D.P. SteeleFill Envelopec:\office\wpwin\macros\qckstrt.wchYours sincerelyTitle First name Last name Position Organization Address City, Province Postal CodeD.P. Steele 60 MacLean Cres. Saskatoon, SK S7J 2R73Mr. Larry Cooper Scientific Instrumentation Ltd. 2233 Hanselman Avenue Saskatoon, SK S7L 6A7WDr. D.P. SteeleBusiness envelopeTimes New RomanH[|+ |9|@gS ''ͳ2o4/T& . &5"/Tp_ D/TgS&d-Times New RomanH[|+ |9|@gS ''ͳ2o4/T& . &5"/Tp_ D/TgS%d-Title First name Last name Position Organization Address City, Province Postal CodeMemo1.wptc:\office\prwin\gallery\default.mstTitleWPMacroFacility WP CommandsVersionSettingsWP Shared CodeCvt3Cvt2Cvt1ConvertInstallCvt8Cvt7Cvt6Cvt5Cvt4Cvt13Cvt12Cvt11Cvt10Cvt9Cvt18Cvt17Cvt16Cvt15Cvt14Cvt23Cvt22Cvt21Cvt20Cvt19Cvt28Cvt27Cvt26Cvt25Cvt24Cvt33Cvt32Cvt31Cvt30Cvt29Cvt38Cvt37Cvt36Cvt35Cvt34 Environment WordPerfectVersionNumber of Conversion DLLsCvt39 PreferencesWPQuickFinderFileIndexer Company NameLicense Number User Name Documents QuickList DocumentsLocation of 6.1 FilesLocation for Index FilesTemplate DirectoryMacro DirectoryMacro DirectoryGraphics DirectoryGraphics DirectorySpreadsheet DirectoryHyphenation DirectoryPrinter DirectoryPrinter DirectoryTemplate Directory WordPerfect WP Macros Label File Template FileBackup Directory Button BarNamed Parameters RequiredSettingsWPMacroFacilityUSWP Print Process QuickStartCoaches%Equation Editor Button Bar AttributesWP Button Bar AttributesHPPCL5CDESKJETCHPDSKJETTTYWPCorp-Windows Printer FlagsINTLPCL5HPPLOTHPPCL5MSHPPCLHPPCL5EPAN24_11PANSON24EPSON9EPL2EPSON24IBM4029PROPRINTWINFAXOKI9PANSCALEOKI300PSCRIPTENVOYDRVPDFWRITRMETA_DRV NotebooksFAXABLTYFAXITDRVADOBEPSIJ4076 Company NameLicense Number User NameDefaultsWPPrWinMacrosFigures Drawings/Presentations Directory PresentationsLocation of FilesSound DirectorySoundMasters/Galleries DirectoryMastersMacros DirectoryCoachesHyphenation DirectoryBackupColor Palettes QuickFiles QuattroPro#27392#6656#17408 QuickStart Command Line QuattroPro QUATTROPROApplication AliasUSUSLotus123WPMACROFACILITYUSWPMacroFacilityUSExcel Command LineLotus123LOTUS123 WPIntegrator WPIntegrator Command LineExcelEXCEL WordPerfectUSWPPrWinDLL1 Third PartyColor Printing Palette WordPerfect Command LineWPPrWin Command LineRulerPassword Protect EnabledFieldsHide Bars EditingDisplay InitializedMAPICMCMailImportPrintersPrinter InformationPrint QuickCorrectShow Outline Level Icons Legal!Letter Landscape Letter#Canon Bubble-Jet BJ-10e LPT1: Forms&Canon Bubble-Jet BJ-10e on LPT1: - WINB5 LandscapeB5A4 LandscapeA4Legal Landscape Status Bar Power Bar Reveal Codes Repeat Value-Envelope #10 Landscape Undo/RedoTablesTable of Authorities Initialized TeamLinks WPThesaurus WPSpeller Writing ToolsNumber of Undo/Redo Levels!Save Undo/Redo Levels to DocumentDefault Styles DocumentDefault Create Box ModeDefault Border ModeGraphics Styles 6.1 GrammatikGraphics Item 2Graphics Item 1Graphics Item 0Graphics Styles CountWrap Msg WORDPERFECT Last MacrosMacros LocationMacros LastOpenedWPMacroInterpreterWPMacroInterpreter MacroType0Macro0WPWPWPMACROCOMPILERUSWPMacroCompilerWPMACROINTERPRETERUS History ListCustom Column Positions Open File MacroType1Macro1 LastOpenedWPPRWINWPPrWinChange Default DirectoryDoc954321109876Window PositionFrame Window Attributes Attributes Associations Button Bar!PostScript Printer on LPT1: - WINDoc4Doc10NiteOwl DocumentsDir1!Letter Landscape LetterPostScript Printer LPT1: FormsUse Default Windows Printer$Quick Link II Fax on FAX/MODEM - WINA4 SmallA4 LandscapeA4Legal Landscape LegalNote Landscape NoteB5 LandscapeB5%A4 Small LandscapeDoc2Doc5Paper Feed LocationsWP Print ProcessCurrently Selected PrinterMaximum Line LengthOne Parameter Per LineSave Macro in ANSI FormatDoc3Doc1Prompt On Tkn App LaunchTime Out Tkn App LaunchDefault Macro ExtensionSave Settings On ExitDefault Macro Directory MF Window TopMF Window LeftMF RegDB RegisteredMacro Editor File FormatMF Macro EditorDoc3Doc1Doc2MF Window BottomMF Window Right User Color User InitialsHide Bars Edit Exit WarningHide Bars Edit First DocumentDoc6Save WorkspaceActivate HypertextSet Quickmark on SaveConfirm on Formula DeletionConfirm on Code DeletionDoc7Doc8Doc4Automatically Select WordsDefault Doc FormatWP Characters Dialog PositionFont for Hex DisplayViewerDir2Environment SettingsNumber of Replace StringsReplace String0Number of Find Strings Find String0Find and Replace WPSpeller WTProductData WPSpellerBullets & Numbers Graphic10Main Dictionaries ChainUS WTData_1_4Dictionary Checked in Add ToSettings!Quick Link II Fax FAX/MODEM Forms Supplementary Dictionaries ChainMain Dictionaries ChainCE Supplementary Dictionaries ChainA4Legal Landscape Legal!Letter Landscape Letter#Automatically Convert Graphic Files$Automatically Convert Document FilesBold Font for Hex DisplayFont Size for Hex DisplayA4 LandscapePrint Font OptionItalic Font for PrintBold Font for PrintFont Size for PrintFont for PrintBottom Print MarginTop Print MarginRight Print MarginLeft Print MarginPrint Margin Units Italic Font Bold Font Font SizeFont Word-Wrap Find String1Style Find String2Viewer Preferences Tab Every2ArialGraphic7Graphic10Times New Roman=Power Bar Last Selected - PostScript Printer on LPT1: - WIN1Arial0Humanst521 Cn BTGraphic2@Power Bar Last Selected - Quick Link II Fax on FAX/MODEM - WINDefault Document Type Find String3Graphic3 3Futura Lt BT Beep Error1GoudyHandtooled BTReturn Address List2 CoverSheetPersonal InformationTemplate InformationReplace String1Graphic6 Find String5Graphic5Graphic4 Find String4BuildHyperText SaveSubdocsGenerateOptionsGraphic9Graphic8Print Return Address Print SubjectFormatLettersMerge Return Address MacroType2Macro2 MacroType4Macro4Header for Second PageTypist's InitialsPrint Typist's InitialsWriter's InitialsPrint Writer's InitialsComplimentary ClosingFinishDefault Template Letter Expert WP Experts EnclosuresReturn Address List1#Business envelope"Include Return Address on EnvelopePOSTNET bar code optionsEnvelopeDefault Envelope SizeDefault Return AddressNumber of Mailing AddressesMailing Address List1Number of Return AddressesMailing Address List2 Memo ExpertMerge Mailing Address Mailing Address Font InformationReturn Address Font InformationUse PR QuickListUse DocSel Dialog Beep SearchOptions FaxDriverSlides Per Row P&GFP^&S-3RPPm1 VV&L~F t"~ tF F tQ^&tFFPSFV }^&FPvv&"7FV }F Ft+FP^&GP FV }F Fu^&&~~ ^&9wF+FUF F uFPV[FV }*FD+ۋӋ؉&&Gk.؉&t2̉FV^&wFPvv&"5FV }F FuFD+ۋӋ؉&&Gk.&uFPQVNR/ |LF&D FV،&^&GFNQPFPvvؚ@  },vvr8vv}8vvܚ%,FV^_ˋF Ft"FV‹&7k^ .&@&PFVF F tFV^ &&WF FtFV^&&WF FtF܋V^&&WF FtFV^&&W3^_˸4WV؋v F u ^_ːF +&D&j̃FV uҐ^&t^+&G&G&&^&G&W^&v&DF&F&DF&F&DF&F&DËVVڹ^^ FV&&W3^_˸9U؋N F t F PQT4ː WVv v {V u F V VF&F&v v FV<RPRvO FF&^_VN F t/F PQFV>RPRv V } V^3^:WV؋~ ^F&9v,F F t$^N&7k.&@,^ &3^_ː^_ː(WVV+F؉Nڋ؉N&GFtnFPQv RPj( FV }GFP^&Pvv FV^S&&_F Fu9FPRv$ RPj( V u'FPvvV^S&&_vF tvvFP<FV t 8 v܎3t uFPjjjjvvjjh^S&&_FV u)vvFPFV t2^S&&_^S&&_F؋Vڋ؉V&O_FV^&G4&W6FVFVF؋VډFV^&O^ F uFV^&G0&W2FVF &&WFV^_ WVvF&D2& D0t3FjjFPV V |?vvvV+V~uF&t2&t0&\0&&_^S&&_NjV^_WV~FPjjvWF&&V }~u^ &3^_ ~FPF@PjNjVRPŋV |vN+FN؉N&GvQWiVRVjv^S&&FV |ގFv&F^ &+FFFV؉V&OFV^_ ȢWV~ FPjjv WF &&V } ƋV^_~Qt~vvFF&F&v WPVV |v v ƋVRPRWxV |v v NjVRPRWTV }`~ jPjjdv WF &&V }6jl^&&pr&&v&t&x&z&|Ўعn&@vЎع kF.jPGPʉFV }Fv3F&F9FuFfhbdv&D fhF؉V‰^F tZF&G&G &G &G&G&G&G+&G&GX0a0ع&G,+&G&G&G&G^&v v FPSV }^&G fhFFVF^&G v v FPvvlV }x^&G fhFFVF^&G v v FPvv$V }0^&G fhFFVF^&GFPv v ËV }^&G fhFFVF^&GFPv v ËV }F^&_ fh^^`&G uFPvjFVRPTV }X^&G bdFFVRPjv^ S&&V }F^&_ fhv&@&Gv v FPvvV }^&G fhFFVF^&GFPv v ‹V }^&G fhFFVFV^&G&WFPv v 9‹V }I^&G fhFFVF^&FPjj^ S&&V }^&G fhFFV^vΌЎعFPv v FV }F^&_ fhv&@,F.FF9Fs#FVRPv v xV }dFVJRP^ S&&_ V }=3^_^_UWV^ u 3^_~EV‹&^_V^F&>u3^G‹vF&&G>^UFVRPkWV~3INFPF@PjFVRP^V } V^_ FV‹&7v~3+F^ &3^_ WV~jvWV } V^_ F&E^ &FvvSvW%V |Njvt)VVvW-6¹3QFVRP腾3^_ Vv^ +F&9\ t u&\&\ ^WVvF&t&u &ujjFPVV } NjV^_F&&^S&&_V |KvvƋVRP )uߎF&+&D&Dƌ^WVv u^ +&G&q~jjVvW)PFV u ^_ːV^ &&WN~N^&ƉVNF&FA&FF&=u3^_WV~:ЎF Ft'vvjjFPjPj=u^_ː3^_ːy‹&&WːWVj\vvǹVj:vv貹V t ;rV^_ːƋV^_ːVvNvNQV%TFV RPR^&&G6&G&G+&G&GÌ^UVvvVƋV RP迵NQV貵^WVvF V F&D&T&DvvjjDPrTV |8vvjjƋV RPrTV }FVRPmƋV^_ WVvvVF&|6t<&|6WD ؉^P&FXvFƋ^&@PVv聯^&G6^_UWVvvVF&|t+&t&DPDPǐ:&D&D^_WVvF&|6uD Ќnj+ۉ^N& ^&L6ى^F&r[^^&A& t?̉FV^&q&1P^LF&\ ^N&L6ى^F+&A&Nu^_U^F+&G&&G"&G &G&G&G&G&G &G &G&G&G&G&G&GÌWVvj‹&G&WVF&D& Du&D& Dt~3FNF&\&&QȉV tZ~NF&D &TV&t&t9WF&t &tQvV^S&&_FF u~vNu~F&t&tvWF&&_F&D& DuF&| ts3ɉN~^&_&&PFV t=^&G& Gt&w&wvWF&&_vvvWF&&_FF^&9G w&t&tvWF&&_F&D& Dt&t&tFPW&&_F&| t&D& Dt&t&tV(N^_WV~F&E  ‹&G&WF&E jPPV&&_ F&E&U& Eu ^_&E jPR&uZ ‹&G&Wjh PV&&_ F&E&U& Etjh R&u 3^_UV39v u9v t(+FҹLV‹&F+9F wr9v w^ːVvF&p&DYvNQV^&p&GV^UFV+xVFPvvRPV |2v v vvFVRPcV | ^&GV^UWVvF&p&DZ&D&T&D &T&D&T &D&DDPǐx&p&DYƋ^_UFVRP*WV+FFFމF܍FPjhPvvvv^S&&_ FV }V^_˃~u ~sSLtTGtFFP诪FV u ^_ˉvV+FFFVn^F+;Vwr;FrFFЎ~F;Vrzw;FvsFVލFPF-RPFVRPvvvv^S&&_ FV |FV9u9t  FFVFVFVFVN؉V;Fw^^~NF&&WF&&UF&GF&E&UF&GFV&E&U  ;Fr+FFFt7~F&LFV&D&T&&TFVكuj4ۨFV u$VvvTP~p~VFV t vP^&G&GvV&&_ƋV^&G&WЎعFV&G&WFV&G &W"F&G2v FV&&T3^_ː^_UWV^&i&G^&r&G^&q&GRZ&G&G+&G&G&G&G&G"&G &G2&G&&G$&G*&G(&G.&G,&G0@@عÌ^_UVvF&q&D ^&D& Dt&t&t&\&&_F&t"&t TH]^:U^&G&W&G&Wː^WV؋vF&l&\&D&TFV uPVǐWWVT^FV^_WVF^&_2Kx}^^FF+Ë^&_&w &wv v I6R t } DFDFF9F}Ƌ^&G&W^_3^_^WVFtbvF&D*& D(t$v v &t*&t(I_ u F&|0tF&D2H&D0vvV&t&&t$&t&t;Nv v vvV u ^_ːvvF&u&5&u&u^&w&wx^_˸_UWV^ +&G&&G&G&G&G &G &G&G&G&G&G&G&G&G&G&G&&G$&G"&G &G( &G*&G.&G,FV0ڹ+&GB&G@&GF&GD^_U^F&i&Gma&q&Gxa&Hq&G^Ì^&Hq&Gba&G& GtZ&w&w &w&w R`+FF^&G &W&G&WjjjjjjvvRP&w &w&_&&_^&G & Gt&w &w&_&&_ WVj٣V u ^_ːF΋ tPQF&D&Dvv^&?vF&]FV^&G&W F V &G&W+&G&GFV&G &W+&G&GvËV&&T3^_ː`U^&G&W&G&WːbWV؋vF&l&\&D&TFV uPVǐSWVT6_FV^_˸b+FF^&G&W&G&WFV&G&WFV&;Wrw&;G v&G &W&+G&WFVFV&G&WvvRPv v vvvv&w &w&_&&_ ȎVv vrP~%PF@utaV)vv jjjjvv'V }vƋV^ː3^Vj蚡V u ^ːF΋ tPQ*FF&DF V &D &T ^&7&G3^U^F&i&Gd&q&Gd&q&Gd&G&GÌVvF&q&Dd&DF@tvId^EcU^&G&W&G&Wː'eWV؋vF&l&\&D&TFV uPVǐwWVT4cFV^_˸IeUWVFt ^_ːvF&t&D &T F V RPj=u ;uȐF&tvvvIt^F t F&?&G3^_u3ˋˌV;tQFː WV>uʤ=u ^_6ϥ t jjFP ujj^S&&_ V uVF߉F t0F+&G&G&G&&G&G &G &G&G^F+FFFV^&G&W6SD uV/vvIV };6jjvv^S&&_^S&&_ƋV^_ː3^_ːWVsV tWF&u&57FPW&E&UVRP‹&&_FPV&&_6jji^_ː6oȐ eQeReeTUa3PxXR)WeT, e`S'((F,+fjYq<d#j^%#r^% "4LcJe  !"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVXUZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVVXUZ{|}~FSSUA231OAAAAAAACEEEEIIIIDNOOOOOOUUUUUAAAAAAACEEEEIIIIDNOOOOOOUUUUUU  !"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVXUZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVVXUZ{|}~AACENOUAAAAAACEEEEIIIINOOOOOUUUUAOAOAOFAAOUU??AEAEEIIIIOO?OUUUI?  !"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~SSTZZSSTZZLASZLASLLZRAAAALCCCEEEEIIDNNOOOORUUUUYTRAAAALCCCEEEEIIDNNOOOORUUUUYT  !"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~FSSYA231OAAAAAACEEEEIIIINOOOOOOUUUUYAAAAAACEEEEIIIINOOOOOOUUUUYY  !"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~AAAEAOUAACACCCEZZDIDEEEOEOOOUEEUEEGIIIIKLLLLLLLNNNNNNOOOOORRRRRRSSSSATTIZZUOOUUUUUUUUYYKZLLG  !"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~Fݟ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~F-- --23ĸƹȺμԾؿĸƹȺμԾؿ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~FS--SY A-231OAAAAACEEEIIINOOOUUUAAAAACEEEIIINOOOUUUY WVFF~u3F=t+w,t , t^F HtH  F^FF ^ &*OF8&t&8$u3v^&* uvEv vVC*F t)jj%vvR@^&*+ډN^jj%vvRO@*&*+ډN^^ &*8&tF 9F @F ,jj?vv FV^_˰0123456789A£BãCģDţEƣFǣGȣHɣIʣJˣḲLͣMΣNϣOУPѣQңRӣSԣTգU֣VףWأX٣YڣZߣ_abcdefghijklmnopqrstuvwxyz0123456789ϢAТBѢCҢDӢEԢFբG֢HעIآJ٢KڢLۢMܢNݢOޢPߢQRSTUVWXYZš_abcdefghijklmnopqrstuv@wAxByCz0123456789A£BãCģDţEƣFǣGȣHɣIʣJˣḲLͣMΣNϣOУPѣQңRӣSԣTգU֣VףWأX٣YڣZߣ_abcdefghijklmnopqrstuvwxyz\\[[޶޷޸޹޺޻޼޽޾޿‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂ނ߂Ⴌキ傮삎@ABCDEFGHIJK޶LM޷NO޸PQ޹RS޺TU޻VW޼XY޽Z[޾\]޿^_`abcdefghijklmnopqrstuvwxyz{|}~޳O0P1Q2R3S4T5U6V7W8X9`AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZQ_abcdefghijklmnopqrstuvwxyzF=t/w,t , t^+F HtHtW[ SS؉NF&?tN&9t &?u&?uF&GB  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~FS--SY A-231OAAAAAAEEEEIIIINOOOOOUUUAAAAAAEEEEIIIINOOOOOUUUY  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~FS--SY A-231OAAAACEEEEIIIIDNOOOOUUUYYAAAACEEEEIIIIDNOOOOUUUYYY  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~FS--SY A-231OAAAAAACEEEEIIIINOOOOOOUUUUYAAAAAACEEEEIIIINOOOOOOUUUUYY  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~A12E3OUAAACEEEEIIOO?UUU ̰--ָýÿæĪƣ̽?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~CENYAAAACEEEEIIIINOOOOUUUYAOF AAO--YY??AEAEEIIIIOO?OUUUI?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~AACENOUAAAAAACEEEEIIIINOOOOOUUUUOAOOF AAO--YY??AEAEEIIIIOO?OUUUI?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~F^231  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~F^231AACEEEEIIOUUU  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ACENOUAAAACEEEEIIINOOOUUUU  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~AACENOUAAAAAACEEEEIIIINOOOOOUUUUWV^&_F&&WVFPvWF&FV }V^_^&_&HuFV؎& v ^ &^ &3^_ː WVNَF&G &GF&G&W V~uOF&D t:V^&O t,F&Du"vƌ ڋ~o&D u u^vFVRP^&OFVVWWڹ_^&&TWڥRPT^_^&u&G^_"WV~+FFFPF&u&u&]&&VF }v FPFVRPn3VF |jvfFPF&u&uFV |=F&E&UȉVFVFVF&GB&WDFމV=u;u F vF+FމFPjvv vv⚴V } u^ &&WVFPvVF&&_ FV |w^&(SvVF&&_LuPFPjvVF&&_ V |6vv vvvVF&&_8 Vv 3V~F tFPV&&_NjV^_WVv^ &FPhih vVF&& t^ 3&^_ː^&G&WVNQvW‹&&V |bFV؎& tNFPjvv V^S&&_F u-v v vv=V^^S&&_ƋV^_VvF&\&G`&WbFV t$VRP‹&&_F&\+&Gb&G`^WVj*FV u ^_ˋVȉV t vQR jtFPLFV uxFV ȉV tvQTFV 3VvvjhhRv vv vRV@FV tFFF tFPWFGVWvv" vvT[FV^_ːF^&w&GvËV&&T3^_˸WV؋v F +&D&V^&w&w&_&&V }V^&w&w~3^_WV؋v^ &&GF&t&tV }V<~FPF&u&u&]&&V |v v vv8?^_WV؋~F u ^_ːF+&E&^F&w&|Ht ^_ˋF F t ^_ːF&w&|F})ѐF&GF&G &W FV‹؋&kV.~ٹ^&G&W`;Fu`;Vu[&_&G<tPFPjjFP u9vvvv^S&& V^S&&_ƋV^_ːFPjjjjvvvv^_ːWVvF&D &T ȉV‹&WjjF&\&HuPFP FV }8F&\F&\&Hu FvF FVFVF&D &T FVRPvv蚜UF&|^&&E&U؉VF&D&TFVF&G<%~&M< F&G<^&G&WFVF&D&TFV^&G4^&G4^&G&WFVF&D&TFV^&G6^&G6FVF&D&T^&w&G&\&\~&E&EF t+F&|&]&EKu~t^v&t&D&TKuvF&\&HtF&D&T؉V&F~6FVRP‹&&_dFV }F+&D&DUF&DF&D &T ؉VG؋&?kF.&E,FV&E&UF&\&g:^&_&g:F Ft^S&&_+FFFV^_WVvF&|Btz&|Dtp&D&T؉V&&}HtSF&|FuFFPV&&V } NjV^_FV؉V‹F& u^+&GD&GBF&t,FPjjVnPvvښ>PFV:RPvvښ.V }%vv^S&&_LNjV^_ˋv뜐FV^ &&W3^_˸ Uv v ,˸!Uv v 2˸;WV؋v F tF~ƋV :RPHLF F&]^F&9wZu&9G\u &G^^_PVT`^_ːUWV؋^ F u ^_ːF +&G&~F&u&|F} )^_ˍFPF&u&u&]&&VF }:FVNȉVRQFPV |FV^ &&WNjV^_˸WV؋F FuvF uF&~F&]&F} )^_ˍFPF&u&u&]&&V t ƋV^_ːvF&\&Hu V׍FPvVV |~u FPjvv9 V |~vvVWvvv v ^S&&_FV tFNQh h ^S&& FVv v FP^&w&ws tR9~wMFF&9vB~F& &F&w&7F&N+&O&;Fw^S&&_^S&&_Fv v vvvvvFVRP^4zV=+tqthFV؉V& uN3^&_&Hu5vFPWvVF&&_$ FV }i~tGϐFPWvv FV }:vvvvvv v ^S&&_V^S&&_^_ːs WV؋F F u ^_ː^ &&G~F&]&F} )^_ˍFPF&u&u&]&&V tNF&D&T؉V&G=t~ u^ &&G3^_ˋF&]&GH-tRHt HtL0FPFPWFV |"~t ~ t++^ &&Gv vv FVRPn3]VƋV^_˸AWV؋F F u ^_ːv^ &FPF&t&t&\&&V tV^_v vv FVRP2e^_˸w.WV+FFF Fu ^_ː^+&G&FFFFF %Ff ~ u5~ u/vF&D&TF&&WRP‹&&_~FPvv~V }~t~ uu~ uo+F F FP^&w&w1VF |v&D&T؉VF V FVF&GB&WDF҉V=tI;tBFBFPjvvP V }FPhh ^S&& V^S&&_F tv&D&T؉V&Bu&DtM^&G&WVF V FVF&DB&TDFډV=u;tFV+FV |> u;FPjvv V^S&&_F t"3FP^&w&w V |Ft~ uH~ uBF&|&}HtF&|&E^_ːUVvF&Ld&t&t&\&&_^UVvF&Dd&t&t&\&&_^WVvF&\&wjFP&w &w xGX V }FPvvFV }~tFPvvmFV |p~uXvvvVF&&_FV |HF&D:t &D8&d<&L"j&t&tFVFFF^S&&_F&D&TV&]&G:t~F&t&tVNjV^_WVv FV$RPjjv VF &&V } V^_FPv WA V |ًF*^&GFFPv VV |vF*F&DH&D&TȉV‹&E &U ؉V&v1FPv v V }YFVF&DB&TD3^_WV~F&]&w&wV } V^_FPFPW&&V |׋FVN^ &&W3^_WV^&GN&WPVEʉFNvvjQP:{!F=uvvjvv:F=uU3FPV^&w&w߃ uvvv v ^&w&wr^S&&_^_ vV‹&FFN؉N&G%F@^ &F؎&u 3^_ vRVVFl"V‹ȌF&]u3(^ߎF&Gt FvvVVF_VFތF&D tv & F&F%F tv & F u uh^_ WV؋^ F u ^_ːF+&G&~F&u&|F} )^_ˍFPF&u&u&]&&V t V^_ːv vv FVRP-`!^_˸"WV؋F F u ^_ː^ +&G&~F&]&F} )^_ˍFPF&u&u&]&&V t ƋV^_ːFPvv,܃V |Ճ~umFPjvvy݃ V |FP^S&&_ V }^&G0Fv^&+w*&.S^S&&_L9v rv uFPj^S&&_ V }FPvv^S&&_8 V |{^S&&_FVFVFP^S&&_ V |C:vvv F +P^S&&_ V u^ &w&7Hۃ^S&&_n+Vv vv FVRPZ(G#^_ J# q%*" U%  O#WV؋F F u3^F u&F&&Gv&t&|F~ )^_ːvFPF&t&tFV }F&\F&&WFVFPvW^&FV }F&t&tZ FV |rv v jFPvvFV |LF&D&TV^&EB&UDFV=u;uv&&D+^Nv&&LFV^_ː^_ːWV؋~+FFFFF&]&9GF~ )^_ːFPF&u&u&]&&V } ƋV^_ːF&]&GHF-}qHH~FPF&u&ubV |F&]&GB&WDFV=u ;u~ ~ +~WjFPvv운V }dFP^S&&_ V }BF Ftvv^S&&_LF Fu^S&&_+FF^&O(~t &G4@tN tc-ut *Vvv^S&&_L+FFF Ft^S&&_+FFƋV }9uFPvvPV }W~uv vv FVRPV } 3^_ːW$WV؋^+FFFFF&w&|HuËV-FV&G&WVF&G&WFVGFF tZF&D&T؉V&F}AF&t&tV~ }F&t&tZ GFV |qF tqF Fti6462jjjjFP uQvFPhh!^S&&_ V^S&&_NjV |+~v~FvFPV&&_vFP^S&&_ FV |v3t uv^&.u +VS^S&&_LƋV }{FPj^S&&_ V }UFPvv^S&&_8 V }+^S&&_F܋VމFVvv^S&&_L~FPvvNjVRP‹&&_ V }vvjNjVRP‹&&_( V }FPvvNjVRP‹&&_ V |aF&E&U؉V&GN&WPVjvvDRPfFV }vF tF&u&u/VF Ft^S&&_+FFƋV^_ːWV~vWV } V^_F&}F|&]&wVF&]&w &w FV |FPvWF&&V |^S&&_ V |jF&u&uV }eF&EF3^_WV~F&}F}cFPW&&V } V^_vvfEV |jF&u&uV |F&EF3^_WV~F&E&U؉V&wvF&D:u &|Hu3 t,F&E&UV&t&t&\&&_h^_vWF&&_V }F&]&wjFP&w &w xGV |Yvv^S&&_ V^S&&_VF u‹FF u^&O"j&w&wDVƋV^_WV~V+FN؎&G&kV .‰FN^F&w QW- FVv vWp. FVF&^&vv5 vvvW(l FFVFV^&OߎFnjƒ@~& F& ‹؋F &A@3^_ WV^Fv& NˉNVv&D~ F &=t"&FFFFV&v&\^_&v&^_VF^&N &% tHtHu5Ì*F0FV&GÌ,F2FV&G v RvvvS)^WV~FF&9E t +^_ FPjW V } ƋV^_ FPjjvW V }vvW%ȐFFV‹ߋ&FNFFNȉV؉V tF&$ &&'?F&$ &&$?<uNF +FFF&E&U؉V&GB&WDFV=u ;uF F +FF^&^FVÉFV^F&