; $Id: polyfitw.pro,v 1.2 1996/12/17 20:21:56 ali Exp $ FUNCTION POLYFITW,X,Y,W,NDEGREE,YFIT,YBAND,SIGMA,A ;+ ; NAME: ; POLYFITW ; ; PURPOSE: ; Perform a least-square polynomial fit with optional error estimates. ; ; CATEGORY: ; Curve fitting. ; ; CALLING SEQUENCE: ; Result = POLYFITW(X, Y, W, NDegree [, Yfit, Yband, Sigma, A]) ; ; INPUTS: ; X: The independent variable vector. ; ; Y: The dependent variable vector. This vector should be the same ; length as X. ; ; W: The vector of weights. This vector should be same length as ; X and Y. ; ; NDegree: The degree of polynomial to fit. ; ; OUTPUTS: ; POLYFITW returns a vector of coefficients of length NDegree+1. ; ; OPTIONAL OUTPUT PARAMETERS: ; Yfit: The vector of calculated Y's. Has an error of + or - Yband. ; ; Yband: Error estimate for each point = 1 sigma. ; ; Sigma: The standard deviation in Y units. ; ; A: Correlation matrix of the coefficients. ; ; COMMON BLOCKS: ; None. ; ; SIDE EFFECTS: ; None. ; ; MODIFICATION HISTORY: ; Written by: George Lawrence, LASP, University of Colorado, ; December, 1981. ; ; Adapted to VAX IDL by: David Stern, Jan, 1982. ; ; Weights added, April, 1987, G. Lawrence ; ;- ON_ERROR,2 ;RETURN TO CALLER IF AN ERROR OCCURS N = N_ELEMENTS(X) < N_ELEMENTS(Y) ; SIZE = SMALLER OF X,Y M = NDEGREE + 1 ; # OF ELEMENTS IN COEFF VEC ; A = DBLARR(M,M) ; LEAST SQUARE MATRIX, WEIGHTED MATRIX B = DBLARR(M) ; WILL CONTAIN SUM W*Y*X^J Z = DBLARR(N) + 1. ; BASIS VECTOR FOR CONSTANT TERM ; A[0,0] = TOTAL(W) B[0] = TOTAL(W*Y) ; FOR P = 1,2*NDEGREE DO BEGIN ; POWER LOOP Z=Z*X ; Z IS NOW X^P IF P LT M THEN B[P] = TOTAL(W*Y*Z) ; B IS SUM W*Y*X^J SUM = TOTAL(W*Z) FOR J = 0 > (P-NDEGREE), NDEGREE < P DO A[J,P-J] = SUM END ; END OF P LOOP, CONSTRUCTION OF A AND B ; A = INVERT(A) ; C = FLOAT(B # A) ; IF ( N_PARAMS(0) LE 3) THEN RETURN,C ; EXIT IF NO ERROR ESTIMATES ; ; COMPUTE OPTIONAL OUTPUT PARAMETERS. ; YFIT = FLTARR(N)+C[0] ; ONE-SIGMA ERROR ESTIMATES, INIT FOR K = 1, NDEGREE DO YFIT = YFIT + C[K]*(X^K) ; SUM BASIS VECTORS ; VAR = TOTAL((YFIT-Y)^2 )/(N-M) ; VARIANCE ESTIMATE, UNBIASED ; ; SIGMA=SQRT(VAR) YBAND = FLTARR(N) + A[0,0] Z=FLTARR(N)+1. FOR P=1,2*NDEGREE DO BEGIN ; COMPUTE CORRELATED ERROR ESTIMATES ON Y Z = Z*X ; Z IS NOW X^P SUM = 0. FOR J=0 > (P - NDEGREE), NDEGREE < P DO SUM = SUM + A[J,P-J] YBAND = YBAND + SUM * Z ; ADD IN ALL THE ERROR SOURCES ENDFOR ; END OF P LOOP YBAND = YBAND*VAR YBAND = SQRT( YBAND ) RETURN,C END Pa53''3PfN*T$;r  zF"t N`HV|% _^ $$f|$ T$SVWUsfD$fD$f؍tdt>‹ %f@ D$t43΃]_^[}fD$twF+Ff;D$sbt$t4f?t.FN;t$+rAfF NNfD$ubjhtKEpVD$%ZFfF D$t43΃]_^[D$T$P3]_^[$AVostList$, szNeedList$) IF lNeed& < 0 THEN '$ifdef DEBUG StfApiErr saeFail, "GetCopyListCost", szExtraList$+", "+szCostList$+", "+szNeedList$ '$endif ''DEBUG ERROR STFERR END IF GetCopyListCost = lNeed& END FUNCTION '************************************************************************* SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC szItemNew$ = szItem$ IF szOther$ <> "" THEN szItemNew$ = szItem$ + "," + szOther$ END IF '$ifdef DEBUG if szGroup$ = "" or len(szGroup$) > 24 then BadArgErr 1, "CreateProgmanItem", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%) end if '$endif ''DEBUG IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "CreateProgmanItem", szGroup$+", "+szItem$+", "+szCmd$+", "+szOther$+", "+STR$(cmo%) '$endif ''DEBUG ERROR STFERR END IF szItemNew$ = "" END SUB '************************************************************************* SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) STATIC '$ifdef DEBUG if szProgName$ = "" OR MID$(szProgName$, 1, 1) = "@" OR LEN(szProgName$) > 8 then n% = 1 elseif INSTR(szProgName$, " ") <> 0 OR INSTR(szProgName$, CHR$(9)) <> 0 then n% = 1 elseif szProgHelp$ = "" then n% = 2 else n% = 0 end if if n% > 0 then BadArgErr n%, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%) end if '$endif ''DEBUG IF FAddDos5Help (szProgName$, szProgHelp$, cmo%) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%) '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB CopyFilesInCopyList STATIC grc% = GrcCopyFilesInCopyList (HinstFrame()) IF grc% = grcUserQuit THEN ERROR STFQUIT ELSEIF grc% > 0 THEN '$ifdef DEBUG StfApiErr saeFail, "CopyFilesInCopyList", "" '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC '$ifdef DEBUG if FValidFATPath(szFullPathSrc$) = 0 then n% = 1 elseif FValidFATPath(szFullPathDst$) = 0 then n% = 2 else n% = 0 end if if n% > 0 then BadArgErr n%, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%) end if '$endif ''DEBUG IF FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%) '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB RemoveFile (szFullPathSrc$, cmo%) STATIC '$ifdef DEBUG if FValidFATPath(szFullPathSrc$) = 0 then BadArgErr 1, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%) end if '$endif ''DEBUG IF YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN '$ifdef DEBUG StfApiErr saeFail, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%) '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB BackupFile (szFullPath$, szBackup$) STATIC '$ifdef DEBUG if FValidFATPath(szFullPath$) = 0 then n% = 1 elseif szBackup$ = "" then n% = 2 else n% = 0 end if if n% > 0 then BadArgErr n%, "BackupFile", szFullPath$+", "+szBackup$ end if '$endif ''DEBUG IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN '$ifdef DEBUG StfApiErr saeFail, "BackupFile", szFullPath$+", "+szBackup$ '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB RenameFile (szFullPath$, szBackup$) STATIC '$ifdef DEBUG if FValidFATPath(szFullPath$) = 0 then n% = 1 elseif szBackup$ = "" then n% = 2 else n% = 0 end if if n% > 0 then BadArgErr n%, "RenameFile", szFullPath$+", "+szBackup$ end if '$endif ''DEBUG IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN '$ifdef DEBUG StfApiErr saeFail, "RenameFile", szFullPath$+", "+szBackup$ '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC '$ifdef DEBUG if FValidInfSect(szSect$) = 0 then n% = 1 elseif FValidFATDir(szSrc$) = 0 then n% = 2 elseif FValidFATDir(szDest$) = 0 then n% = 3 else n% = 0 end if if n% > 0 then BadArgErr n%, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$ end if '$endif ''DEBUG IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$ '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC '$ifdef DEBUG if FValidInfSect(szSect$) = 0 then n% = 1 elseif szKey$ = "" then n% = 2 elseif FValidFATDir(szSrc$) = 0 then n% = 3 elseif FValidFATDir(szDest$) = 0 then n% = 4 else n% = 0 end if if n% > 0 then BadArgErr n%, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$ end if '$endif ''DEBUG IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$ '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC '$ifdef DEBUG if FValidInfSect(szSect$) = 0 then n% = 1 elseif szKey$ = "" then n% = 2 elseif FValidFATDir(szSrc$) = 0 then n% = 3 elseif FValidFATPath(szDest$) = 0 then n% = 4 else n% = 0 end if if n% > 0 then BadArgErr n%, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$ end if '$endif ''DEBUG IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$ '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC '$ifdef DEBUG if szDll$ = "" then n% = 1 elseif idDlg% = 0 then n% = 2 elseif szProc$ = "" then n% = 3 elseif lTicks& <= 0 then n% = 4 else n% = 0 end if if n% > 0 then BadArgErr n%, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&) end if '$endif ''DEBUG IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&) '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB AddBlankToBillboardList (lTicks&) STATIC '$ifdef DEBUG if lTicks& <= 0 then BadArgErr 1, "AddBlankToBillboardList", STR$(lTicks&) end if '$endif ''DEBUG IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "AddBlankToBillboardList", STR$(lTicks&) '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB ClearBillboardList STATIC IF FClearBillboardList = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "ClearBillboardList", "" '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB OpenLogFile (szFile$, fAppend%) STATIC '$ifdef DEBUG if FValidFATPath(szFile$) = 0 then BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%) end if '$endif ''DEBUG IF FOpenLogFile(szFile$, fAppend%) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "OpenLogFile", szFile$+", "+STR$(fAppend%) '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB CloseLogFile STATIC IF FCloseLogFile() = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "CloseLogFile", "" '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* SUB WriteToLogFile (szStr$) STATIC IF FWriteToLogFile(szStr$, 1) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "WriteToLogFile", szStr$ '$endif ''DEBUG ERROR STFERR END IF END SUB ''' -1 in either parameter will mean 'center in frame client area' '************************************************************************* SUB SetCopyGaugePosition (x%, y%) STATIC ProSetPos x%, y% END SUB '************************************************************************* FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING szBuf$ = STRING$(512, 32) wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$)) IF wRet% = 0 THEN FindFileUsingFileOpen = szBuf$ ELSEIF wRet% = 1 THEN FindFileUsingFileOpen = "" ELSE '$ifdef DEBUG StfApiErr saeFail, "FindFileUsingFileOpen", szFile$ '$endif ''DEBUG ERROR STFERR END IF szBuf$ = "" END FUNCTION '************************************************************************* FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER IsDirWritable = FIsDirWritable(szDir$) END FUNCTION '************************************************************************* FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER '$ifdef DEBUG if FValidFATDir(szFile$) = 0 then BadArgErr 1, "IsFileWritable", szFile$ end if '$endif ''DEBUG IsFileWritable = FIsFileWritable(szFile$) END FUNCTION '************************************************************************* FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING IF iField% < 1 THEN '$ifdef DEBUG StfApiErr saeFail, "GetNthFieldFromIniString", szLine$+", "+STR$(iField%) '$endif ''DEBUG ERROR STFERR END IF szStart$ = szLine$ IF iField% <> 1 THEN FOR i% = 2 TO iField% STEP 1 iNew% = INSTR(szStart$, ",") IF iNew% = 0 THEN GetNthFieldFromIniString = "" GOTO _GNFFIS_END END IF szStart$ = MID$(szStart$, (iNew% + 1)) NEXT END IF iNew% = INSTR(szStart$, ",") IF iNew% <> 0 THEN szStart$ = MID$(szStart$, 1, (iNew% - 1)) END IF GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$)) _GNFFIS_END: END FUNCTION '************************************************************************* FUNCTION GetWindowsMajorVersion STATIC AS INTEGER GetWindowsMajorVersion = GetVersion() MOD 256 END FUNCTION '************************************************************************* FUNCTION GetWindowsMinorVersion STATIC AS INTEGER GetWindowsMinorVersion = GetVersion() / 256 END FUNCTION '************************************************************************* FUNCTION GetWindowsMode STATIC AS INTEGER GetWindowsMode = 0 longTmp& = GetWinFlags() IF longTmp& AND WF_STANDARD THEN GetWindowsMode = 1 ELSEIF longTmp& AND WF_ENHANCED THEN GetWindowsMode = 2 END IF END FUNCTION '************************************************************************* FUNCTION GetWindowsDir STATIC AS STRING szBuf$ = string$(256, 32) cbBuf% = GetWindowsDirectory(szBuf$, 256) IF cbBuf% = 0 THEN GetWindowsDir = "" '$ifdef DEBUG StfApiErr saeFail, "GetWindowsDir", "" '$endif ''DEBUG ERROR STFERR ELSE IF cbBuf% > 255 THEN res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK) ERROR STFERR END IF szBuf$ = RTRIM$(szBuf$) IF MID$(szBuf$, 1, 1) = "\" THEN 'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$ szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$ ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$ END IF IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN szBuf$ = szBuf$ + "\" END IF GetWindowsDir = szBuf$ END IF szBuf$ = "" END FUNCTION '************************************************************************* FUNCTION GetWindowsSysDir STATIC AS STRING szBuf$ = string$(256, 32) cbBuf% = GetSystemDirectory(szBuf$, 256) IF cbBuf% = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "GetWindowsSysDir", "" '$endif ''DEBUG ERROR STFERR ELSE IF cbBuf% > 255 THEN res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK) ERROR STFERR END IF szBuf$ = RTRIM$(szBuf$) IF MID$(szBuf$, 1, 1) = "\" THEN szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$ ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$ END IF IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN szBuf$ = szBuf$ + "\" END IF GetWindowsSysDir = szBuf$ END IF szBuf$ = "" END FUNCTION '************************************************************************* FUNCTION IsWindowsShared STATIC AS INTEGER szWin$ = UCASE$(GetWindowsDir()) szSys$ = UCASE$(GetWindowsSysDir()) IF len(szWin$) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "IsWindowsShared", "" '$endif ''DEBUG ERROR STFERR END IF IF len(szSys$) <= len(szWin$) THEN IsWindowsShared = 1 ELSE szSys$ = MID$(szSys$, 1, len(szWin$)) IF szWin$ = szSys$ THEN IsWindowsShared = 0 ELSE IsWindowsShared = 1 END IF END IF END FUNCTION '************************************************************************* FUNCTION GetScreenWidth STATIC AS INTEGER GetScreenWidth = GetSystemMetrics(SM_CXSCREEN) END FUNCTION '************************************************************************* FUNCTION GetScreenHeight STATIC AS INTEGER GetScreenHeight = GetSystemMetrics(SM_CYSCREEN) END FUNCTION '************************************************************************* SUB SetRestartDir (szDir$) STATIC '$ifdef DEBUG if FValidFATDir(szDir$) = 0 then BadArgErr 1, "SetRestartDir", szDir$ end if '$endif ''DEBUG IF FSetRestartDir(szDir$) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "SetRestartDir", szDir$ '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************* FUNCTION RestartListEmpty STATIC AS INTEGER IF FRestartListEmpty() = 0 THEN RestartListEmpty = 0 ELSE RestartListEmpty = 1 END IF END FUNCTION '************************************************************************* FUNCTION ExitExecRestart STATIC AS INTEGER ExitExecRestart = FExitExecRestart END FUNCTION '************************************************************************* SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC '$ifdef DEBUG if (FValidFATPath(szSrc$) = 0) AND (szSrc$ <> "") then n% = 1 elseif FValidFATPath(szDst$) = 0 then n% = 2 elseif FValidFATDir(szDir$) = 0 then n% = 3 else n% = 0 end if if n% > 0 then BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%) end if '$endif ''DEBUG IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN '$ifdef DEBUG StfApiErr saeFail, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%) '$endif ''DEBUG ERROR STFERR END IF END SUB '************************************************************************** '*************************** Error Handlers ***************************** '************************************************************************** '$ifdef DEBUG '************************************************************************** SUB StfApiErr (nMsg%, szApi$, szArgs$) STATIC ''DEBUG only select case nMsg% case saeFail lpText$ = "Failed" case saeInit lpText$ = "Already Initialized" case saeNYI lpText$ = "NYI" case else lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg)) end select lpText$ = lpText$ + ": "+ szApi$ if szArgs$ <> "" then lpText$ = lpText + " (" + szArgs$ + ")" end if lpCaption$ = "MS-Setup Toolkit API Error" res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK) print lpText$ lpText$ = "" lpCaption$ = "" END SUB '************************************************************************** SUB BadArgErr (nArg%, szApi$, szArgs$) STATIC ''DEBUG only StfApiErr nArg%+saeArg, szApi$, szArgs$ ERROR STFERR END SUB '** REVIEW: Move this function into common lib (we'll need it there too) '************************************************************************** FUNCTION FValidInfSect (szSect$) STATIC AS INTEGER if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then FValidInfSect = 0 else FValidInfSect = 1 end if END FUNCTION '** REVIEW: Move this function into common lib (we'll need it there too) '************************************************************************** FUNCTION FValidIniFile (szFile$) STATIC AS INTEGER if (FValidFATPath(szFile$) = 0) AND (UCASE$(szFile$) <> "WIN.INI") then FValidIniFile = 0 else FValidIniFile = 1 end if END FUNCTION '************************************************************************** FUNCTION FValidDrive (szDrive$) STATIC AS INTEGER if szDrive$ = "" then FValidDrive = 0 elseif INSTR(1,szDrive$,"\\") = 1 then ' UNC path FValidDrive = 1 elseif ASC(UCASE$(szDrive$)) - ASC("A") < 0 then FValidDrive = 0 elseif ASC(UCASE$(szDrive$)) - ASC("A") > 25 then FValidDrive = 0 elseif LEN(szDrive$) = 1 then FValidDrive = 1 elseif INSTR(2,szDrive$,":\") = 2 then FValidDrive = 1 elseif INSTR(1,szDrive$,":") = 2 then FValidDrive = 1 else FValidDrive = 0 end if END FUNCTION '$endif ''DEBUG TRAP CleanupTrap From "MSSHLSTF.DLL" End Trap hSetup = InitSetup(COMMAND$) ON ERROR GOTO QUIT l.A!*2>2Mkel".qT`(>6#Q4&YIZn$x4fyJR66]y J(<f&}7 QBngNDŽi1 EC}GXՀ$fmlk#S}KټZahhjkiikkmmnnooppqpppqrsrssttrrppmmiieebb^^[[ZZZ[YYYYZZXWXX\\XXXXWX[[]]^_^^_`_``befccaccdcecdegeh[[IJ12##??LLPzzyzz|~}yyxxsrppmlllkkjijkhhhhdcddffefhhiihhjjiilkmmnnoppqqqqqrrssssttrrppmmjjffbc^^[[Z[Z[YZYYYZXXXY\]XYXYXY[]]]_`_``a`bbcggcdcddeegdeghfi\]JK23 ((AAPP~~{{uuqqrqnmmmoolljjiihhhhjiiihhiijjjjjjmlllppooqqrrttuuxxxxyxxyrrssoojiefaa]]\]]]\\\]``^_^^__^_^^[\^_abbc^`cd``deefegfgdeefefeg^_LM23 ((AAPPO{{uurrrqnnmmoollkkjihhhhjjjjhijijjjjjknmllppooqqrruuvvyyyyyyyyrrstppjjfgbb^^]]]]]]]]``__^^``_`^_\]_`bccc``deaaegeggggifgfhhigi_aNO35 ,,GGTT~~xwuutsuussppppmmjjlljjkkjjkkkkllkkmmoosrssssuuvuwwxx||||{{vvuusunnkjdddd`acccc`aa`eecccc_``aaaaadebddehhhhghijghhiklikhi]^NO78 ,,GGTTQ~~xxuvutuutsppqqmmjjmmjjlkjjkklkllkkmmppssssssvvvvwxxy}}}}||wwuussnojjddddaacccdaaabefcede`aaaababefddfgijijhiklhiijlnlmjl`aOP9://HHVV~{{zyxxwwuuutrrrqppppmmppppmnkllmonnnppvuwwxxvwyyzz|}yywwssooijjjhhffffhhhikkjkhigheedejkefddfghimmklmnmnnpopkl`aNP67//HHVVV~|{zzyyxxuuuusrrrppppmmqpppnnllmlnoooqpuuwwyywwz{{z}}yywwssoojjkjhhffffiijjllkljkiiggfgkmfhdfghijnomnnomopqqrmnabPQ7811JJWWyyxxwwutttrroottqpooqqyynnqqvvttuuvwzz~zzvvttssmmnnllmmklooppopnolljllmkmjjhjjklmkmpppropstnp`bLN4511JJWWZ~zzyywwuuturroottqppprqyyooqrwvtuvvwwz{~|zvwuussnnoommnnmnpqprpppplmlmmnmnkljkklmnnnqrrtqruwprbdNO57&&WFVYF&E&UFV^&G&WȉV‹&_&GHF t=tF&D &D F&MNF@FVF&D &T ^&G%=@F&33& ~rF&G$F&DF&G tHtHt"HuF&DF&LF&L&DtƒΉV&@avVjvWBnBFV^ˌF&_u3)^F&Gt FvvWVFU;VF& @^&w &wvvWyFV }vvWG^F& FދVÉFVF&L@&DFF&9EuF&E0~u&M*F&LFF&E*Pv&E*F& FދVFډVF^&_FڋVÉFVNu؎&Ov&LF&G^&GF F t F^ &FV^_WV~FF&9Ew +^_ v v FPjjjjj&uF&uD& 9GV ||vvvW"K=t,뮐vFPvWD#yJ=uF&]*‹&FNÉFN~t^&_FVÉFVNuF^&GFV^_ WVv~F&9uw +^_ W$KF t+V‹ߋ&FNNFVF؎&GF uPvv v vv^_ WVv FFF&D& t=&t&4FPjjjjj^&wF&wD& NV } V^_ vV‹ދ+FN&FN~tvQV"LM=t ,^_ ~uvFPvVD#NF=uF&Euʼn~v& FVF؉V‹ˌF&Gu&%@ % ؎F&% @ ց ;u=&uvVFPvvp#ILF=tXF&]&3@ у tK+F =t+~tF&EF&EFs^FF VVF 9FrFF&E& t6&u&5FPjjjjj^&wF&wD& KV }v& FVFF-؉V~t Nu&t &&FFF9FwY3^_ WVN ~FFF&9Mw ^_QFPW=O |^V‹+FN&ÉFN^F& t&t QWp9P u3 uF&ȋ% @  Iu&DFvW$PF=uF& FVFFV^F&ȋ% @  It5F&9Du,F9Ft$&| uB&t vWp9!M t3 u%F& FVF؉V&GF=tZ~tFFF^_WVNvF&9Lw +^_ QV@F=tv v FPvV,V } V^_ vNvN^&FVFF&E 3^_ WV~FF&9Ew +^_ &]*‹+FN&FNÉFN^~t^&_FVÉFVNu^v v FPvveV } V^_ ~F& FVFV^&\3^_ WVN~F&9Mw +^_ QWF=tv v FPvW9iOV } V^_ N~N^&FVFF&D 3^_ WV~FF&9Ew +^_ v v FPW9^RV } V^_ F&]*‹&FNÉFN~t^&_FVÉFVNu^v&\3^_ WVv&D&T؉V&G&WVFPF&u &u N66PVI= u!66F PVID t3^FV^33 WV~ Fv WFVRPV } V^_FPv W+V |܍FPv WOV |F^&FPv WuV |F^&GFPF PWV }t~FF&EvjWHB{V }K3^_WV3F FFFFV&v&D؉V^Fv v&%F~ڥ‹ع& &O&O^&GHPSBFV }$FFVvFV^_v~F&|6tD ،Ӌ&&L6&?~@+uPVvFUWjvVHB3^_VvF&|u3^v V^?>=tPFPV^ WVvƋVRPv v G V } V^_vVv v l V |ێF&|u &<ufC ‹&G&WVFj&4PW&&_ F&D&T& Du ^_&DFV&&TFV |b t\~ vvFV |~3ҸjVv WF &&V } FVƉF+)vN9N|9NuvF&D& Dt>f ‹&G&WVF&t&tPW&&_F+&D&D&D& DtAf‹&G&WVF&t&tPW&&_+&D&D3^_VNFF V V%=wi.   & 0 : D N X F&$DF&$@:F&$ 0F&$&F&$F&$F&$F&$F~@^ WV^&u+C‹v 3+^_‹V^&7vvvv uD^&F&$%& d*&L* ^&G&WRPvvvvv v S%^&ƋVRPvvSv v vv7^_WV~Ff ‹&G&WVFj&uPV&&_ FV u ^_ f" ‹&G&WVFj&uPV&&_ FV uV^&^&w&wvvFPvvSjV }v~3Itf~It-َv+هO~v+هOUv vv^&wF &&T& tv VfQ ‹&G&WVvvPW&&_f ‹&G&WVvvPW&&_ƋV^_ WVv F &D& Du`&D & D uV&&w&wgF &&w &wf‹&G&WVF &t&4PW&&_*&t&tvvwF &t &t vvaf ‹&G&WVF PVPW&&_^_U조9F u9V t(RPv v I tv v vv(FV WV~vWYzRP(V } V^_FPvWYRPFnV |v v FPjjjjjvv& V |vNjVRP^_UVvv v FPV&&_ ^ːUvvvvvjvv v vv WVFPvvY?RPFV |\vvFPvv"UV |9^&wjvvvvVv v SdV t vvZNNjV^_VvvY8VPV&&_^VvvYVPV&&_^33WV~ FPjjv WF &&V } V^_F PWFVRPaV |ԊF*^&G3^_ WVFPvvYRPFV } V^_vvFPvv"bV |Ӌ~F&ujvvjvVv v W^_ZWV FȉFʉFF+FFFFFFFƉF։FԙVF܉FމFΉFЉFҙVFPvvYxFVRPFV }tFFPFVRP^?ufFFV&^&G.ƉFV~ȋڥFʉF=u FF8Ft8F^vD6ˉN&&DL؋v&@&PFЉV҃~t2~uF Fu3 u~u F Fu uFuvFPvv"(V }bFP^&w&w V }6j6h^S&&_VRPlP^^O6&WLٌ^NF+ۋˋ^P&F&GFXVЋ^^Ƌv&@&xFFЉ~ҋF Ft^S&&_+FމFFu)^ЋF&&WFV6j6hV^&_VRW&&_F=uCF&E&U؉V&G<uF&E&U؉V&G<@u3 t3ۉ^~us~t~t u^3 tU~t[t^v&D&T‹&<~F&$=u`~t)&uF&E&UȉV~‹&_<9^~GF~tx~uFЋVҋ؉Vv &\&D^ȃ%v &~u ^&w&wV }~u~t~ vvHY Vvv,YFF &&E F&u&E&D&TV‹&G&WVŽF &u&EPV&&_3^_3 u(vvvvvvvv v vv&vvvvvvvv v vv8V |F Ft^S&&_+FމF܋ƋV^_fWV FĉFƉFF+FFFFFFFvvYFVF+FFFFFF҉FFFFVvЎ~ FPvvFkFΉVЁ }^F&OuN+ɉNVV+FN^&G FV&G.NFV~ċڥFȉF;FuFFƉF^&@& >t3F t'&> FV؉Vkv&|t3 t;~t,^&> FVVvkFRPl t3 uvvvvvvvvFPvvFΉVЁ |m~tL~uWvЎ~ F҉F+FFFFFFF~vЎعFF=t F,FF Ft@~u#^ &G& Gt&w&w&_&&_F Ft^S&&_F΋V^_8WVvvYFVF+F؉F։F܉FFFމFFԉFVvԌЎ~ FPvvFCFV }F؋~ v&tv̉FΌ+ƋvP&F&DFX vvЌF&$=t&t&t,^_v6&FPvvvvvvvv Wvv:VF t#F &E& Et&u&u&]&&_ƋV^_BWVv+FFFFFFvVYFVFFL6ٌ^N^FPDLF܌FX^P&FXF،+ۋˋ^P&F&GFX^Ԏ^^&G&WV teF&E&U؉V~&F|FPF&u&u V }Mv6j6h^S&&_FVvFPvv"(V } FP^&w&w FV }6j6h^S&&_FVRPlP^FD6~ЉFҋˌ+ۉ~̌FPDLFȌFX~ȉ^ĉVƋ^P&FX& ^^‹NV&I&QvFv&D&T؉V&O<9N~F&D&T؉V&G<%Fv vvvvvv Vvv~RFV }F &<u~؅u&D&TVPW&&_^&G&WFV~&E&U؉VF &\&D^&G&WV‹&G&WVPW&&_F & vv,YF &D vvHYF &D&TF Ft^S&&_+FFFV^_ WVFPvvY'RPFV } V^_vvvvyu^ &3^_WFPvv|"V |~F&ujvvjvvVv v W`^_ WVFPvvYRPF V } V^_vvvv#u^ &3^_WFPvv|"OV |~F&ujvvvvvVv v W^_U^F&i&G&p&G&p&G>+&G&G&GÌUVvF&p&Dt&t&t&\&&_^Vvj F&&T& tk&ȉV t vQZv v F&t&4KFV t-F&t&4lF&t&4TF+&D&FV^ː^ːUWVvF V F&D&TRP‹&&_&D3^_UV؋v v Vh hx t*vFVF&&TRP‹&&_3^v Vhh ! uËF PVhh u^&G&^ː U^&G&G+ː+!WV؋vF&L&DFF uPVǐ-WVTC FV^_˸E!FWVF+F‰FFƉFĉFFF̉FFF F uvF uNF u^F uF+&D&F&F&G&FtX66^^F&w&7&&&_V uFPvVYX"RPFFV }v v vvFPvvښ^ '#FV }F FuF&|jvvvjjWFPVJFV |6j6h^&w&7&&&_FVv v vvFPvvHY]#‹&wF&wD^ FV }&F Ft.jvvvjFPvv~R#FV }FH=v.####$$$`%`%V$^&^&vVFPvvĚ$FV }k~tvv֚~F֋V^&&W^&FċVƉFVRPFPFV }FҋV^&&W^&^+&G& ^&vVFPvvĚ)#FV }F΋V^&&WF Fuw6j6h^&w&7&&&_VF uF&E&U؉V&G&WFVFPFVFVRP#FV } -~륐~t2FV^&&WRP‹&&_^S&&_FV^&&WFV^_ː^_ː!8WVF+F̉FʉFЉFΉFFF֋F F uF FuF Fuv^+&G&^&G&66F&t&t&\&&_V uFPvWY&RPFQ"FV }Xv v vvFPvvؚ^ "FV }+F Ft8F&ujvvjjjVFPWFV }FFȉFHt-}qH~&vF+&D&^&G&FFvF΋VЋV^+&G&~uD6j6hPW&&_FV^&G&WFV^&G&WF&&T)~u"66FPW&&_F+&D&F&D& t&t&4&&&_FV^_ː^_ːz! T*_F&`p$k&aq !& !&2$Jy%UWVvFPV +&D&D &D&D&LƋ^_WV~ ^N^ю&Nj؋N &v&L &O& ^_WVvF&D2F %&1D&dvvj Vt V u/F+&D&D &D&D&D Pj Vj3^_ V^_ WVFV RPv v V } V^_~ FPv WV |ًvF&D2F%&1DF PWV^_U^F&G& t&G3 WVFPvvV t V^_F@PV u ^_vVjv^S&&V tvVT먐ގFv&v &&D3^_UVvv v jjFPV&&^VFVFV u=v3^ː Fu FFvvV tՋF^ːFVFV u=v ː Fu FFV +RQvv t3UV+RQ\p t ː3ː3F F^&FF&G ++FV;V wQr;F sJvvvvv v LRPR^&G RPSeV }V ^&&W^&&WSv v vv F ^&3 WVv&D&T؉V;u ;uF+ɉNVˋF&FF^&+FPً&QPF QP? >vNF F&&D&T؉V;u;t FVFVF;u;uF ^&^_ WVv F &|PVvvvFL vV+QWvv^_WV~ u~ v ^_ vF&|uF V ^&+GFV uF&FF~} ~u&D ++FVFV;Vwor;FshFV+FV u r= s &L +RPVcV |$F&D ++FVFV;Vrw;Fr V^_ vvvvPVF ^&G3^_ WV~ u~ v ^_vF V F&+D |  t&|ujv oV u F F&D NjV^_ WV~ FPv WbV uJjvvv V u1~u~t%^&NFPQjvF PW&&VV^_WVv V u3(Pvvj tWV t֋V^_FNWV؋F Fu3wF -t- r-v3 tvvv v v <~u3F~ u ~ uF V u=tMw+-tF-tG-tHHt9HtH~ t*~ )uǃ~ t뿐-t3HHt-t0-t1-t2п .("   ~..V FFFFF ^&?t?v~jj%vvRF&*ߎF&*+ډN^FF&<ujj?vv FV^_ FFFF$F FFFFFF`&i}@#o)++FVv&D &T ؉V&&^ &&W3^qUV؋v v Vhk h8 q t*vFVF&&TRP‹&&_3^v Vhh t7vF tƋV^&&W ^+&G&FPV&먋F PVhh tu^&G&^ː U3ːVv v vvV uGFVRPv v IV u(v v ^&w&wV u 3^V^WV+FF^&_&& u:^&_&^&&&VRPhf^&_&&^&_&3Ft?v&D&T ؎&^&G&W W&&vvjFVvvvjjjjvvf= =tPv v vv|"V^ +&G&~NjV^_ WVvvvv3^ &PPPPvVf& uF&D&T‹،&ljFNFV^&G t\^ &~3IFً¹3I;u+^Nыv+3^_UWVF ؋~F&E&U‹&^_UV^GV‹&7k^ .+&@&@^ V؋F F uF Fu^&^&& u&&V&&hh^&&&3Ft!&V&&v v rFVFPvvF# V |"v v vvvvvv&VV^˸^˸y WV؋F F u)F FuF Fu~F u^&& u&&V&&hh^&&&3Ft!&V&&v v FVFPvvFV |lv v vvFPvv:V |C~t5F&=t,v v vvvvvvWvv{VF&F }F&ƋV^_ː^_ːUWV؋v F u ^_ːF +&D&vv( V |5FVRPFPV |FVF &&TNjV^_ː WV؋^F u ^_ːF+&G&F~F&9tvE‹&FVFVFV^F V w3t tF.FF^&9wvvv^S&&_ ^_ː+^_ː|WVF FFFF+FFFFFFFvV^ &FƍFPvVFVԁ }.vV(Vԁ }ƋVFVVvvFPvv"Vԁ }FFPvV^?uND؋^F&&T׉VF‹V~ڥFFFtcFPv^S&&_ Vԁ }SFV^&&W^&&GF;FuF^ &3^_^&G&W‹&7vvF&$=tŋ&%FЋv&FFvVF&&_ FʋFȉF̋V+FN~u F9Fun~uF&@& >t3F t%&> FV؉Vk~&}t3 tGFVFV~t,F&> FVVvkFRPl t3 uWv̍FPvV"(Vԁ }FP^&w&w Vԁ }k6j6h^S&&_VjvvjjFPvW~RF҉Vԁ }~t ~tSFVV^^v&8&@PW&&_~u:FFFV؉Vʉ^N&FFVvތF&D &T 6FFFV؉Vʉ^N&FFVvF&D&T^F^&&W^v&&PFV39NtoFVVƌ‰FV~؋FVF&9u$&9WuF&&T~F~&9u&9UtA9Nw^S&&_N΋FF9Fu~u~t^S&&_FFV t(F^+6G6G6G6G6G 6G 6GF Ft^S&&_+FĉFFF@+vʉV̋vF^ &