ACRS|0 H|x 0 DϾ+ J/ʉ "~5#˒I ecf%-;\2S҇sMJIRG^ xW{xkvgw.edIȃ b䑂ЁȂe6 Bc|b #m|@-bЖ 6 FQiDүKϽ{7_9sϽsgVQ\J2T)QJLeR,Wg.E9W*93G'g+5Mͪ%22\oeY`,Yl춼k|a9meMYY[gYX5Zkumkzzުنڂ[mlնm/vَNۜ^ljվ^m_n۷wۏٿtuTԅj\]֫/azN9C%1˱Qulrlwtv|r;ӝEΠsYw6:;ۜN-MъTmVUkuZ֨>Nh]]|(W.WԵƵյӵ:::b"0$w{{~Fw>r$ݯ_K9J}ޠ7{~\?+){y LϝjJOY6nAO'X)-e5=6e-c'YC1>\z{%eQTr!g攚5MjBsI?R[FMHsxYh1?BK>0>JDl 8$s 0$ N Rk]Jdj9T\.CY,Q  З~2L'_a+MEda!M!.a_dӢSiIN}}M ,cK /8v^|>K8,3Ҙh).݁Lxq}(D ނıA(*nJ*\AzS! \)с"2ϠQ B y,:Wɨ`u_LCI.^Ebf!|5iȑ#`11cd\b)y`[k8FJ;(^)Gv'ߕ4yQѤ]+o|-A0ѝ|TH8睈$GYl JwG>H yGx/;JOA)!D@o՛HI~!nL D+  <7;ɂ S< Yl ~(B}?^At5Xo)DxaKp! X 7Jk`an"iYqtB&P.%Ys^g!P[SY`'Wbr̔)mB~M $@n>̖H@⣿K^EkLfq9M<9h. +3X/$G/Req;oL}[H_ ZlVijzLb؄GD`b}arĪl6!oOAEixՆ64a;=#Ks}~/+FYDPo)져sW)>xM `8C;Dx-$챓 `+>! ٦wIEyxz0:X %BdM-V7{3YlO|GX!d$FY2BM؏7I̢{O"3F}1{yёkR=a!Qu0Iax[6 폲S`@+Z(Cu.лʘ䁈P| GL BpHeVW0Z~ǧ1 zR`8nI|HZ΢m8"O0:N77BGЉ߭|̆v:bXv#dEd?lGDŽ|c,My(Oy ۨN|!tK!Gt Nuwx'xg'ukѴOi6GE<\^a'T U9e/{NSQn2D]kA~R<r37f\=\Nx]9#~S6?`q'MG(7Wa;clkpEVyɼNVrv|Z<ꁇ.:Jz&(kײzޝA^Pnׁ\QܦVέw+4_y|x^ҋP`q~iԏWoqƇEEkJ1ڢЂhIl_sxy@3rꏧq w\߅*!}|?_p_F3c^iŸMs,[)ooC٨ox da*k u"xU̙ t{>шD2V? E91gj 8q>'*e>s}7Y?u.%HŌ^F~eb΍D[}%|J$&g%G֌-`cO}u "Qz"xWOA~-E1(JDjBL'H1iAxГᦜLK*wV͈_fɯarU'pN:5:ku 8G05G6Qnk^7=;9]@tgSM^5O> #l0Fjkm ; Bf()Oޒq8rbʶTժA,:뫤~F{T3>R9>kHujևWCcPs ;v7(tᦔc-Vc9UbrU3/ttju:U8kJv5WGᄧZE:mSLvF ?+Ͳ;VZӰSnXʗW:5\g)ndw#IbF Wqϔ? ; 'YxfGJa .t`W1qKAc-,>w,N9RZ,=Z#] / ezUķp];{gbsu$kS̕M_;xZmo8Oa־mzP\nE^~d$&"K:;3$+ @qJA%&YRzXWcal%(]ck`P01ȐLd\Bl!RM{a*DOպ264(tC)'u Ɔ nF^n@.F@@ˍ0an4c9?5aIΛ5*RX2TYWjn88V2~nZq%04!/&ƻdEITR6lU6O W&r0vQź|Ȧ]L'1DH4Pc7mB"30x1a fYCɝR3B$8 PdOK^k qTV%@a;ӒAX' EM @fk +a!>FBr?o5 Bc8l|"RFUb 8V*]ݏ|:dĈw:kd&Ul0u2Hln Smt6$Gk$HYDC)'WvJ֢~Ěi~Դ1X,3r3ceqCtqV.ЂX> 7Z@᥊@ArZ-  ]qn|v-__V dRPX?[@w ]hK92YDVOE⢜.<u ͬ=v7U܊Ίī2{mXDpRIWO].lh{/Uڊ4ZdJ7ڶyސ7i#J9mXDo0.X_>una W ڔBCGpXY&[hDߊqN{OWѲeN$ K֦~Sd=eɗoW`ӗxiBrSyx$DA &<;B̜X_JJl-uMIe1鞶`Mg4xDަ({5%3JoI](U?YYOvm^OZ< v.8yD@T!C28/?pki|A2WTGM.$4&A(( \LjM.կSQ&Rdg>;qy=38iGo/X_pU7El]Dl~k@yRH 5%O2PRpN8xA2tZSs٥gzs{ZF|9kZ[z[G涰`I/ZcK3CDvc~u1`EMA!~xٵ5ݐΡ~(F+]IKXsŗ"]Uj(YoQ`Gq-DBdU1 J=nGdG4^QH ';@xA6dgw>J"|DYQb~hr)v+E*O^4K8:Z!QPMPdޟ l>&% { i-Gpowâ?I*WwNnL=Fmt4aWkvry}6`'gFijWߡ{'k G>SKaW4mieMXNxIPƍQ[oqYFɹts-/ҝQ/3_ACHdyN㮀81k'w?"Q7 $+ u~KlݚjPNӶT5M@߸¡fVVMxoe,Ø#kzq{Ɏ *#@)D1R1l1112.2222333\44448b::.<<<V<<<<< =H=V===\>j>|>>?@\AAA`BBCCJD2EEEdFFGGNH6IrII~JJZK0LLLM$MMfNNNFOTOOzTTTXFjlz0* *,.02468:<>@ Continue; ''hSetup>Y'{3E5B46A2-A2C3-11D6-BB51-00902749B387}5 CBI ; If you place this program on your hard drive and run it; without understanding what it does, you could end up; copying your whole hard drive onto itself!; This program is meant to run from a CD-ROM drive. It ; uses FileLocation to determine the path to the folder(s); and file(s) it copies. ; DO NOT RUN THIS PROGRAM FROM THE ROOT FOLDER OF YOUR HARD DRIVE!; Otherwise, you may end up copying every folder and file on your; drive into some subfolder you specify within this program.5 C9z#QQ ; This program requires version 3.6 or later of BudApi.X32. This ; commercial third-party Xtra is available from Magic Modules ; (Gary Smith) at http://www.mods.com.au.; This Setup program is the property of GanTek Multimedia. You are; free to use it as is or modify it as needed; no credit needs to; be given to GanTek Multimedia. You may also create a derivative; work, such as an Authorware Knowledge Object, and distribute it; to other Authorware developers for free. However, in the spirit; of contributing to the Authorware community, we request that you ; not use this code to create a Setup utility for sale without; prior written permission from GanTek Multimedia. If you have any; questions about your rights to use this code, please contact ; steve@gantekmultimedia.com. ; DISCLAIMER; Your use of this code is done at your own risk. Under no circumstances; will GanTek Multimedia be liable for anything whatsoever as a result; of your use of this program. Because this program is provided at no ; cost, it is not officially supported by GanTek Multimedia. Furthermore, ; GanTek Multimedia is not in any way affiliated with Magic Modules,; Gary Smith (author of the BudApi utility) or Macromedia, so please do ; not contact those parties for support of this Setup program.g5 sa2My Applicationt t License.txtUyLaunch.exeC:\Program Files\My_Application my_app.ico)>    '  -9? #K  O  U[  f  lr            F   ; This calc is used to configure the setup program to your project's particular needs.; ***** FULL NAME OF PROGRAM *****; Enter the full program name below. This is generally the ; title the program is to be marketed/distributed under as; opposed to an abbreviated executable file name.My Application; ***** LICENSE AGREEMENT *****; Do you want to display a license agreement?; Set to '1' if you want the user to read and accept a ; license agreement. The license will be read from an; an external file using the next calc.1* 1 + ; Change the path below to correspond to the location ; of the license text. Alternately, you can just hard ; code the text, use an RTF file to store the text, etc. !Uy!t #License.txt- *; ***** PARTIAL INSTALLATION OPTION *****; Set to 0 if you want to force the user to install the ; full program to the hard drive.1; ***** NAME OF PROGRAM RUN OFF THE HARD DRIVE *****; Enter the name of the Authorware file you want to copy ; to the hard drive. It's advantageous to put a small file ; packaged with the Authorware's runtime onto the user's ; hard drive, even if the main program remains on the CD.; This will dramatically improve performance. If doing a ; full install just put the name of the application's ; executable here.Launch.exe; ***** FIXED OR VARIABLE INSTALLATION PATH *****; Set this value to '0' if the installation path (drive:\folder); should be forced. Set to '1' if you want to give the user the; freedom to specify the drive and folder where the program ; should be installed.1; ***** DEFAULT INSTALLATION PATH *****; Enter the name of the drive:\folder that should appear as the; default installation path. It's OK if you omit (or include); ending backslashes. Later, the setup program will adjust for ; this as needed.C:\Program Files\My_Application; ***** PROGRAM GROUP *****; Set to '1' if you want to create a program group in the; user's Start Menu.0; Enter name of program group if one is to be created ; ***** DESKTOP SHORTCUT *****; Set to '1' if you want to create a desktop shortcut;; otherwise, set to '0'. If ProgGroup above is set to '1',; a shortcut value of '0' will be ignored because the shortcut; will automatically be placed in the program group. You can; place a shortcut directly on the desktop by setting ; Shortcut (below) to '1' and ProgGroup (above) to '0'.1; ***** SHORTCUT NAME *****; If Shortcut (above) is set to '1', enter the file name of the; icon to use for the shortcut.my_app.ico; ***** MAXIMUM HARD DISK SPACE REQUIRED *****; How much disk space (in megabytes) is required to move the ; full program, including all necessary components, to the ; hard drive? Enter that number below.250; ***** TYPICAL HARD DISK SPACE REQUIRED *****; How much disk space (in megabytes) is required to move the ; main EXE and necessary utilities (Xtras, UCDs, etc.) to the ; hard drive but keep the large media assets on the CD?)70; ***** MINIMUM HARD DISK SPACE REQUIRED *****; How much disk space (in megabytes) is required if just the ; runtime engine and Xtras, U32s, etc. are moved to the hard ; drive, where perhaps all the media assets and/or a large; packaged-without-runtime Authorware program remain on the CD?>5; Note: Regarding the last three variables above, the setup program; will verify that the hard drive where the program will be; installed has the respective number of megabytes available; and prevent the installation to that drive if not.5 -&`B  ; ***** COMPONENT CHECKS *****; This setup program includes a variety of system checks.; By default, all of these are bypassed. The checks are; flagged by a binary value ('1'=ON and '0'=OFF) and stored; in a linear list so that a bunch of extra custom variables; do not need to be created. You can add more checks of your; own design by adding more slots to the list and then adding; the checks in the 'Setup 3' map on the Setup Framework.; The checks are in the following order:; 1. Color Depth (use Authorware's internal ScreenDepth variable); 2. Pixel Resolution (use Authorware's internal ScreenWidth and ScreenHeight variables); 3. Sound Capability (use Authorware's internal SoundAvailable variable); 4. Processor Type (use BudAPI's baCpuInfo function); 5. Processor Speed (use BudAPI's baCpuInfo function); 6. If needed, is Microsoft Agent installed?; 7. If needed, is Adobe Acrobat, the Acrobat Reader, or some other PDF file viewer installed?; 8. If needed, is an appropriate version of Quicktime installed?; So:; SysChecks:=[Color Depth, Pixel Resolution, Sound Capability, Processor Type, Processor Speed, MS Agent installed?, PDF Viewer installed?, Quicktime installed?]; Again, by default, we have turned all of these off.; Change the appropriate value(s) below to '1' to perform; the respective system check:B50& 0& 0& 0& 0& 0& 0& 06 5 lxCCBBzCCCC   $* $ .% 4@ FR^ 9d ? j@; Below, we use a linear list to flag which setup screens to display; based on the value of the variables entered in the prior two calcs.; The list of binary flags ('1' meaning show, '0' meaning bypass) are; in the following order:; 1. Welcome screen.; 2. License screen.; 3. System checks screen.; 4. Installation options screen.; 5. Installation path screen.; 6. Copy progress screen.; 7. Program Group/Desktop Shortcut screen.; 8. Finished! screen.; So...; ScreenList:=[Welcome, License, System Checks, Install Options, Install Path, Copy Progress, Prog. Group/Shortcut, Finished]; We'll initialize the list as if everything is going to be shown.C51& 1& 1& 1& 1& 1& 1& 16; And now we'll adjust the list according to your choices in; the two prior calcs.C526$!z!B0& C5360 ; if none of the system checks is on, skip this screen.C546C556$1  1& C5761 ; if either a group or desktop shortcut is to be created, show this screen.e5 e5;q q .iniUy;;<t t $y<;;ayH;;ay8y;;ay&<t t $y;;ay  # ## -3  4  :FL  P\b  frx|  # >    H    ; Read the INI file that contains the path to the program executable;!Uy!q ##.ini; If the INI file doesn't exist, we'll assume the program hasn't; been installed or for whatever reason needs to be reinstalled.* ; + 1 ; Get the first character of FileLocation. That's the CD-ROM ; drive that the program is running from. We're going to ; save this to an INI file later. <!$y!t &1&1 ; Don't continue with this calc. We've got all we need. 0- *; If we make it this far, we know the program was installed; sometime in the past so go ahead and get the drive the ; program was installed from originally (line 5 of the INI file).<!ay!;& 5; Get the setup option selected originally. This is a numeric ; value stored on line 8 of the INI file:; 1 = full hard drive; 2 = hard drive/CD combo, 'typical' install; 3 = hard drive/CD combo, 'minimal'H!8y!1& !ay!;& 8; Now check to see if the program was deleted but the INI; file still remains. If so, the user needs to reinstall.* !&!!ay!;& 2#0 + 1 <!$y!t &1&1, ; If we get this far, the program is still installed ; and everything is ready to go. So no need to re-run ; setup. Let's just launch the program. !ay!;& 2 2- * 'GK?%%    +uK:11%%   ?.51Ko!%%      CC  yy   CC  yy >JV \`d !y! & !y!C& 1&  1 * C /i%%   5 <NN4qy  #!qy!# "b(  ReturnM1 Z 5 ^`  FFy   FFy .:@D !y! & F  FGF    C C F     #* ##   $BN # T` ; Activate Next buttonG1; Make a note of the screen number we're currently viewing.F ; Step backward from current screen until we find a '1'; in our list of screens.. 2   1 4 3 1 * C5 61 + F  0 - *- .; If we're on the first active screen, then nothing changes.nnDCCy    !y!C& 10      C5 `S  CC  yy   CC  yy >JV \`d !y! & !y!C& 1&  1 * C``@  G      2   G1 G O55(     2 5 `S  CC  yy   CC  yy >JV \`d !y! & !y!C& 1&  1 * C55(     2  "S$K!%%   c5 H,:((Cy!Cy!0 ,29K/45 H,OJ((Cy!Cy!0 ;|%% V9Kf0 i%% %% T&Kv% etK40%%   TT <KKBBz  K!z!B KBTT 8BBKKy !y!B&1&K33$BBz !z!B B BK C5 7Htt4KKK   ; Increment the system check counterKK15 C~ ; This check ensures that the user's display is at least 16-bit (thousands of colors).; If not, the user will not be permitted to continue because displays will be too ugly.66(     16 J& Return\5%% ;;$.\images\exclaim.bmp.\images\exclaim.bmpf%K Juh55(M M   M 35 aTrundll32.exeshell32.dll,Control_RunDLL desk.cpl,,3*y:; Open control panel with display/settings open.!*y!rundll32.exe & shell32.dll,Control_RunDLL desk.cpl,,3#%%    wC5 @Xitt4KKK   ; Increment the system check counterKK15 Lukt ; The code that follows ensures that the user's display is at least ; 800x600. If not, the user will not be permitted to continue ; because the displays will run off the edge of the screen.dd@     X   800    600 "= Return\5%% ;;$.\images\exclaim.bmp.\images\exclaim.bmpYX%Ki Juh55(M M   M 35 7Trundll32.exeshell32.dll,Control_RunDLL desk.cpl,,3*y:; Open control panel with display/settings open.!*y!rundll32.exe & shell32.dll,Control_RunDLL desk.cpl,,3#%%   5 ZXitt4KKK   ; Increment the system check counterKK1 F5 Lukt ; The code that follows ensures that the user's computer is ; sound-capable. If not, the user will be permitted to ; continue but will be cautioned that program is better ; with sound.55(    0 3 Return\5%% %% ;;$.\images\exclaim.bmp.\images\exclaim.bmpoX%Kl Juh55(M M   M 35 tXiss4KKK   ; Increment the system check counterKK1e k5   ; The code below this calc checks to see if the computer has; the processor you determine is necessary to run your; program. Check BudAPI's baCpuInfo syntax for more info.[[(type9  !9!type 6 ; roughly Pentium II or later i Return\5;;$.\images\exclaim.bmp.\images\exclaim.bmpX%Kl [5 Xitt4KKK   ; Increment the system check counterKK1 lg5   ; The code below this calc checks to see if the computer has; the processor speed you determine is necessary to run your; program.VV(speed9 ^ !9!speed 350 ; if less than 350MHz B5s Return\5;;$.\images\exclaim.bmp.\images\exclaim.bmpX%Kl [ tc5 Xiss4KKK   ; Increment the system check counterKK1e5 X}} ; If your program does not require Microsoft Agent technology,; you can turn off this system check in the 'Assign System Checks ; here' calc near the top of the setup program's flowline.; If your program DOES require Microsoft Agent, you should; first verify that the user's system has the files necessary; to support ActiveX controls. Most computers running Win 98; or later will already have these files. Likewise, even Win 95; PCs should have these files already if Internet Explorer 3+ has ; been installed. You SHOULD NOT install these files unless needed!; The files are available from Microsoft's web site. The files; needed to install ActiveX support are:; Aprxdist.exe; Axdist.exe; Windist.exe; Even if the user's system has ActiveX support, their computer; may have security set so that an ActiveX control, such as; Microsoft Agent, cannot be installed. Not included in this Setup; program but something you should consider is a check for the; user's security setting using the ActiveXDownloadSetting and ; ActiveXSecuritySetting functions from the ActiveX Xtra.++  ! !0 A Return\5;;$.\images\exclaim.bmp.\images\exclaim.bmpX%Klai pYi XhK#^ai5 { Tt t acxfiles\aprxdist.exeNormal  #(/; Install ActiveX support file 1. Note your file path may be different.!!t #acxfiles\aprxdist.exe& Normal& Be]%%   5 U Tt t acxfiles\axdist.exeNormal  #&-; Install ActiveX support file 2. Note your file path may be different.!!t #acxfiles\axdist.exe& Normal& Be]%%   5 9`dl Tt t acxfiles\wintdist.exeNormal  #(/; Install ActiveX support file 3. Note your file path may be different.!!t #acxfiles\wintdist.exe& Normal& Be]%%    WZ5 2 C ; In the map below, you will find code to install Microsoft; Agent, a text to speech engine, and the SAPI engine. .5 .{D45FD31B-5C6E-11D1-9EC1-00C04FD7081F}-..!--22   3?E O  U  [ ; The control ID for Microsoft Agent 2.0 is below..{D45FD31B-5C6E-11D1-9EC1-00C04FD7081F}; Check to see if the control is installed.-!!!.; Make a note if MS Agent is installed.$-0& 20& 21PP8--  $-0&1&0 - 75  Return\5;;$.\images\exclaim.bmp.\images\exclaim.bmpX%Kl ino < Yio XhWZgyKbno?.55 --\t t acxfiles\msagent.exe /Q:A /R:INormal  #18; Note1: you must have a license to distribute Microsoft Agent. ; Note 2: Your file path below may be different.; Install MS Agent quietly. !!t #acxfiles\msagent.exe /Q:A /R:I&Normal&1 gj5 ;  gjh5 C9B-{B8F2846E-CE36-11D0-AC83-00C04FD97575}!--t t acxfiles\tv_enua.exe /Q:A /R:INormal  3 = IO #nu; Check to see if the Lernout & Hauspie text to speech; engine is installed. If not, install it. Again, note; that your file path may different.-!!!{B8F2846E-CE36-11D0-AC83-00C04FD97575}* -0 + !!t #acxfiles\tv_enua.exe /Q:A /R:I&Normal&- *%%   5 U-{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F}!--t t acxfiles\spchapi.exe /Q:A /R:INormal  3 = IO #nu; Check to see if the speech API (SAPI) is installed.; If not, install it. Again, note that your file path may different.-!!!{0C7F3F20-8BAB-11d2-9432-00C04F8EF48F}* -0 + !!t #acxfiles\spchapi.exe /Q:A /R:I&Normal&- *%%   5 i#"/windows msagent\chars..!//t t agents\mychar.acs//\mychar.acsIfNewer   # ,2 <BLR #jp #|; If you are distributing a custom character, be sure to; copy that to the user's characters folder located in the; 'msagent' folder within the user's Windows (or WinNT) folder./! !windows#msagent\chars; Double check to be sure MS Agent is installed. Only bother; to copy over the character file if Agent is installed.* !!!. 0 + ; Create the chars directory if it doesn't exist !! /  ; Copy the character file to the agent/chars folder if it ; isn't already there or if it's newer if the file already exists. ; Note that the file path and file name need to be adjusted per ; your needs. !! t #agents\mychar.acs & /#\mychar.acs & IfNewer - *H Q5 Xiss4KKK   ; Increment the system check counterKK1e5 }  ; The QuickTime Asset Xtra (QTAsset.x32) that ships with Authorware; contains a function to check the version of QuickTime installed.; The code below is activated if the QuickTime version is less than; 4.1. Note: the current version of QuickTime as of the date of this; program being written is 6.0. Although GanTek Multimedia has found; version 4.1 to be satisfactory for most applications, if you are; going to distribute QuickTime, Apple requires that you distribute; the latest version. ; If the user opts not to install QuickTime, assuming the movies are ; critical to your application, the user is forced to cancel setup.55(ffffff@ !! 4.1  Return\%% 5;;$.\images\exclaim.bmp.\images\exclaim.bmpX%Kl [{ zK+^5 pht t QTInstal\QuickTimeInstaller.exeNormal-  # #3:!-!t #QTInstal#\QuickTimeInstaller.exe& Normal& %%   e bf5 Xitt4KKK   ; Increment the system check counterKK15  :: ; Let's use BudAPI's baFindApp function to see if some program; (generally the full version of Acrobat or the Reader) is; associated with PDF files on this machine. If not, the user ; needs to install Acrobat/Adobe Reader, if indeed your program; needs to display/print Acrobat files.77(pdf6  !6!pdf 5> Return\%% 5;;$.\images\exclaim.bmp.\images\exclaim.bmpQX%Kl Q> K#^5 { \t t AcroRead\rp505enu.exeNormal  # #)0; BudAPI's RunProgram function below launches the Acrobat Reader; installer. Refer to BudAPI's help file for syntax options. The ; path below is just a sample. Be sure to specify the path needed ; for your CD project. Also, 'rp505enu.exe' is version 5.05 of the ; Reader. By the time you use this, you likely will want to be ; distributig version 6.!!t #AcroRead#\rp505enu.exe& Normal& %%   e K;%% ^%%)) ))%%>> >a>R&Ku5    t ` G       ; Deactivate next button if user hasn't made a selection yet.*  0    0    0 + G0- * Return15 /33 x HG          ; Toggle radio button to one selected. 1 0 0; Make a note of the installation option selectedH1; Activate Next buttonG1 5 K33 x HG          ; Toggle radio button to one selected. 0 1 0; Make a note of the installation option selectedH2; Activate Next buttonG1 5 33 x HG          ; Toggle radio button to one selected. 0 0 1; Make a note of the installation option selectedH3; Activate Next buttonG1  G T9KI5  Return2 lcuz }l}l}&p …}} 5 a P    $ ; Preset the default Installation Path, or prior entry, if applicable   5 v h $y+y   $*. ; Update the installation path ; Extract the drive letter from the installation path; and make it uppercase.!+y!!$y!&1&155(H  H 0 H5 c#!c:\Please select an installation directory...     "M N X^  _k  q} ; Remember the default or prior-typed installation path just in; case user aborts out of browse dialog.; Use BudAPI's GetFolder function to pop up a folder browser.! !c:\& Please select an installation directory...& 2& & 2&0; If the user cancels out of the browse dialog, reset the installation; path to what it was prior to the browser being opened.$& ; Update the installation path in the text entry field. 44(         '5 oQQ. -y-y$y\\$y+ytypeHardNetwork  *0:@DH  JV\ #  ^jpt  x  * 0  3  ; Make a note of the installation path entered or browsed to. ; Add ending backslash if necessary$!$y!&!-y!&!-y! \& #\; Extract the drive letter from the installation path; and make it uppercase.!+y!!$y!&1&1; Make sure we're installing to a valid drive.; This is done through a call to BudAPI's baDiskInfo function.!!&type; If the drive type returned is not "Hard" or "Network"; we'll assume the user is trying to install to a floppy,; CD or some other removable media. We won't permit that.$ Hard    Network&1&2u%%  _Kb8 S 5 +free8yHHHH)HH>   #  '39 C #OU   [ !Hg 6sy  3  4H H  F  G; We'll begin by assuming that there's enough free; disk space based on the installation option selected. 2; Use BudAPI's DiskInfo function again, this time to; check the free space available.!!&free!8y!1&; Now compare the actual amount of disk space for; the specified installation drive to the amount; each installation option requires. Show a warning; if there's not enough space for that option-drive; pair.* H1 + $ 1000& 1, * H2 + $ )1000& 1, * H3 + $ >1000& 1- *%%  ``DH>  $H3&>& H>``DH))  $H2&)& H)``DH  $H1&& H\Kh85 H\(2 cq o%% ^%% 5 S.Ks} Ctrl12 5 z }p $@ B1|type,yhardnetwork  $(, 1     !,y!!!& typehard   network 4  5 5 4;+8;[Installation Path]  ;;;[CD-ROM Drive] < ;;;[Installation Type] Hq q .ini;;Ty  ! #' #  *6< #L #R #  Uag #| #  # #; Build a text file with an INI extension to store the installation path,; the CD-ROM drive used to install the program, and the type of install-; ation: 1=Full, 2=Typical, or 3=Minimum. The actual program or the; launching program, if used, needs to know where to look for various; components. By recording this info in a file, the program; can get it later and know where to look for components.;[Installation Path] ## ;;#[CD-ROM Drive] #<# ;;#[Installation Type] #H; Write the INI string to a file in the default Authorware; records location.!Ty!q ##.ini& ;55(| |   |  0 q5 ''Ky!Ky!5 Return%% %%q q  q T9Ka5 .?WW( ry ; Go back and try it again.!ry! 5 32D((Cy!Cy!0?.1%%HH H H T9K5 =__!It t *.*Always+Installing program files. Please wait...Cancel5   " &2>DHPy  ; Create installation directory if it doesn't exist* !!0 + !!- *; Copy the contents of the full CD and show a progress bar; while doing so. Refer to the BudAPI.x32 Help document; for syntax options.I!5!t & & *.*& Always+& & Installing program files. Please wait...& Cancel& 3255(II  I 0 I   5 { zxIIJInvalid source file nameIIJInvalid destination file nameIIJError reading the source fileIIJError writing the destination fileIIJCouldn't create directory for the destination fileIIJDestination file already existsIIJDestination file is newer than the source fileIIJNo files matched the specified typeIIJUser cancelled the installation     7  =C g  ms   *  + 5  6 @  AC K IO L V  W a  b; Errors are reported by number:$I1& JInvalid source file name$I2& JInvalid destination file name$I3& JError reading the source file$I4& JError writing the destination file$I5& JCouldn't create directory for the destination file$I6& JDestination file already exists$I7& JDestination file is newer than the source file$I8& JNo files matched the specified type$I9& JUser cancelled the installation%%JJ JJS$K Return.5 kPa''Cy!Cy!0  %% %% %% T9K}5 !z xtras xtras   "( 28 #>  BNT #Z ; Below, you can enter code to create the directories; needed on the user's hard drive. This is done using; BudAPI CreateFolder. The FolderExists function is; used to check to see if the folder is already there.; The code below isn't absolutely necessary because; BudAPI's copy functions (used further down in this; map icon) can be set to create any non-existent folders. ; Create installation directory if doesn't exist* !!0 +  !!- *; Create xtras if subdirectory if doesn't exist* !!#xtras0 +  !!#xtras- *; Using the code above as a sample, create any additional ; subfolders that will go into InstallPath or elsewhere. ; For example, you may want a folder called "Records".5 #WPPt t Lt t F{yL L,y   $  *6<>  BNT  X ; Specify the 'From' and 'To' locationst ; Catalog the root of the CD drive.; Compile a list of filenames only (not; folder names). The way this typical install; is set up, ALL of the files in the *root* of; the CD will be copied to the hard drive.L!{y!t &FL!,y!L; Initialize a loop counter. 1`` D Luy    !uy!L1  L 5 te DLL ay $ ; Get the next filename to copy from the CD.; It's important that this be in it's own calc; (or use SyncWait), otherwise the filename won't ; update in the display.!ay!L& %%   5 t4&&,ysetup.exet t Always   # 39 #EK #QX \h  ; Make sure we don't have an erroneous blank line.*   + ; Don't copy the setup program that is now running!!! * !,y! setup.exe + ; Copy the file from the CD to the installation folder. ; The BudAPI CopyFile function can be set to copy with  ; varying options. Notice below that we have it set to ; always copy over an existing file, newer or older...  !!t #&#&Always - *- *; Increment our file counter.  1 @5 %@88t t xtras2xtras t t xtras2F{y ,y  #  +1 #  7CI #PR  Vbh  l ; Specify the 'From' path for the xtras. Notice that; we have two Xtras folders on the CD, one called; Xtras and one called Xtras2. Why? There's an; important reason for this. First, we're unsure of; the safety of copying Xtras that are in use by the; Setup program itself. But more importantly, it's likely; that the program you are installing is going to need a; whole lot of Xtras compared to the Setup program which; only needs a few. By minimizing the number of Xtras; in the Xtras folder on the CD, the Setup program will; run much more quickly. That's because Authorware loads; all Xtras in the Xtras folder when an AW piece is launched; regardless of whether or not they're needed.t #xtras2; Specify the 'To' path where the Xtras will be copied to.#xtras; Build a list of Xtras to copy. Again, include two Xtras; folders. Xtras2 should contain the Xtras that your main; program requires. !{y!t #xtras2&F !,y! ; Initialize the file loop counter. 1`` D uy    !uy! 1   5 }}" ayt t xtras2\xtras\Always $ .4 ;A #I #U[ #b #ho s  ; Get the next Xtra file to copy.!ay! & ; Account for erroneous blank lines in the list of Xtras files.*   + ; Use BudApi's CopyFile function to copy the Xtra to the hard drive. !!t #xtras2\#&#xtras\#&Always- *; Increment the file loop counter.  15 b|.""9 F{y uy ay xtrasF{y uy ayxtras\   ###  *0 ! 4@LR \b #hi  my #  #2##   G   # #.; Turn off read-only file attributes from files copied; The code below is just a bit of a failsafe. Some Windows; operating systems maintain the read-only attributes of; of files that are copied from a CD. Othertimes, perhaps not.; For most of your files, it probably won't matter if they; are set to read-only on the hard drive. However, there may; be a few that your application needs to write to as well.; Edit or remove the code below as desired. !{y!&F. 2  1 3 !uy!  !ay! &  !!#&- . !{y!#xtras&F. 2  1 3 !uy!  !ay! &  !!#xtras\#&- . %% %% %% T9K}5 "y xtras xtras   "( 28 #>  BNT #Z ; Below, you can enter code to create the directories; needed on the user's hard drive. This is done using; BudAPI CreateFolder. The FolderExists function is; used to check to see if the folder is already there.; The code below isn't absolutely necessary because; BudAPI's copy functions (used further down in this; map icon) can be set to create any non-existent folders. ; Create installation directory if doesn't exist* !!0 +  !!- *; Create xtras if subdirectory if doesn't exist* !!#xtras0 +  !!#xtras- *; Using the code above as a sample, create any additional ; subfolders that will go into InstallPath or elsewhere. ; For example, you may want a folder called "Records".5 \xttt t Lfile1.ext file2.ext file3.ext filex.ext   $  *0  X ; Specify the 'From' and 'To' locationst ; A 'Minimal' install means that you are only going to copy ; those files that are absolutely necessary. We generally copy ; the program executable or an AW EXE that jumps to the main ; program on the CD, plus any needed utilities (Xtras, which are ; copied further down in the Minimal Install map, U32s, DLL's, ; etc.) By placing the Authorware runtime and Xtras on the hard; drive, you will find that the performance of your CD-based; application performs much better than if the runtime is; left on the CD. Even if the main program resides on the ; CD as a packaged-without-runtime .a6r file, by placing; a small packaged-WITH-runtime .exe on the hard drive, the ; piece will use the runtime and Xtras on the hard drive.; Assign to CD_Files a list of all files you want to copy; from the CD to the hard drive, excluding Xtras. If some; files are in folders on the CD, be sure to specify the; folder name before the filename, such as "MyFolder\\MyFile.dat"; Separate filenames with a carriage return. Lfile1.ext file2.ext file3.ext filex.ext; Initialize a loop counter. 1`` D Luy    !uy!L1  L 5 t DLL ay $ ; Get the next filename to copy from the CD.; It's important that this be in it's own calc; (or use SyncWait), otherwise the filename won't ; update in the display.!ay!L& %%   5 A/&&,ysetup.exet t Always   # 39 #EK #QX \h  ; Make sure we don't have an erroneous blank line.*   + ; Don't copy the setup program that is now running!!! * !,y! setup.exe + ; Copy the file from the CD to the installation folder. ; The BudAPI CopyFile function can be set to copy with  ; varying options. Notice below that we have it set to ; always copy over an existing file, newer or older...  !!t #&#&Always - *- *; Increment our file counter.  1 @5 h%G?88t t xtras2xtras t t xtras2F{y ,y  #  +1 #  7CI #PR  Vbh  l ; Specify the 'From' path for the xtras. Notice that; we have two Xtras folders on the CD, one called; Xtras and one called Xtras2. Why? There's an; important reason for this. First, we're unsure of; the safety of copying Xtras that are in use by the; Setup program itself. But more importantly, it's likely; that the program you are installing is going to need a; whole lot of Xtras compared to the Setup program which; only needs a few. By minimizing the number of Xtras; in the Xtras folder on the CD, the Setup program will; run much more quickly. That's because Authorware loads; all Xtras in the Xtras folder when an AW piece is launched; regardless of whether or not they're needed.t #xtras2; Specify the 'To' path where the Xtras will be copied to.#xtras; Build a list of Xtras to copy. Again, include two Xtras; folders. Xtras2 should contain the Xtras that your main; program requires. !{y!t #xtras2&F !,y! ; Initialize the file loop counter. 1`` D uy    !uy! 1   5 }}" ayt t xtras2\xtras\Always $ .4 ;A #I #U[ #b #ho s  ; Get the next Xtra file to copy.!ay! & ; Account for erroneous blank lines in the list of Xtras files.*   + ; Use BudApi's CopyFile function to copy the Xtra to the hard drive. !!t #xtras2\#&#xtras\#&Always- *; Increment the file loop counter.  15 Ty<-""9 F{y uy ay xtrasF{y uy ayxtras\   ###  *0 ! 4@LR \b #hi  my #  #2##   G   # #.; Turn off read-only file attributes from files copied; The code below is just a bit of a failsafe. Some Windows; operating systems maintain the read-only attributes of; of files that are copied from a CD. Othertimes, perhaps not.; For most of your files, it probably won't matter if they; are set to read-only on the hard drive. However, there may; be a few that your application needs to write to as well.; Edit or remove the code below as desired. !{y!&F. 2  1 3 !uy!  !ay! &  !!#&- . !{y!#xtras&F. 2  1 3 !uy!  !ay! &  !!#xtras\#&- . j(;5 QcRR       $ * 1 + 1 ; if creating a program group, go to the first map 0, * 1 + 2 ; if just creating a shortcut, go to the 2nd map- *%%   R%% U9Ke@?.55 ^^4I   ; Create the program group. If the group already exists,; the BudAPI function below will open that group momentarily.I!! ; Note the pauses before and after the calcs in this ; map icon. This is to allow the system sufficient ; time to create the group and icon.?1.25.5 (nf'""''  #  #& #, #4@F; Specify the path to the icon to use and then create the; Program Manager group icon. The .ico file must be included; with your program and copied to the hard drive during; installation in order for this to work as coded below.'#!!"###"& & '& 015 f{4 StayOnTop  ; When you create a Program Manager Group, the Setup; program's window will fall behind the group window.; The BudAPI function below will force the Setup; program back to the front.! ! &StayOnTop?.2 U9K/@?.55 q0q3  I""desktop normal   # # #$.45<B #HO ; The code below will place a shortcut icon on the desktop.; Of course, you must include a .ico file with your program; and it must get copied during installation if the BudAPI; function below is going to work as coded.I! !"###"& ! !desktop& &&&#&0&0&normal15 igAS4 StayOnTop  ; The line below makes sure that the Setup; program comes back to the forefront after; the shortcut icon is added to the desktop.! ! &StayOnTop?.2 rLcV+KS5 ~<_P ; A quick and easy way to allow the user to uninstall; your program is to simply provide instructions for; doing so here and in a text file.; Another way you can handle this is to either place; an Authorware-created uninstaller in the user's; RecordsLocation folder or on the CD-ROM. If you prefer; this approach, we recommend including a program group; and add another icon for uninstalling. That icon should; point to wherever your uninstaller is located. ; The uninstaller should remove all traces of the program.; That includes any folders/files copied from the CD or; created during either Setup or the use of the program; itself. You should also delete the INI file created in; RecordsLocation. Also, use BudAPI functions to remove the ; program group and/or desktop icon if added during setup. ; Lastly, if your program records any kind of user data,; you should first prompt the user to backup the data or ; at the very least confirm that the data can be deleted; before the uninstall begins. You can even use other ; BudAPI functions or BudZip to help the user back up this; data! Return1 }kz }l}l}&p …}} 5 H,z466Cy; Quit Setup!Cy!0 n'"p5 HB0GG (  ;Activate print button(155(((  (0 ( 55(((  (1 (5 HBEE (  ; Hide Print button(05 O/`NN4qy  #!qy!#%% C%% %% %%q q  q %% %% %% W>Kp5 -- Lnotepad.exet t uninstal.txty #+; If you want to include printable uninstal instructions, ; you can type them up in a text file and ship the text ; file with your program. Then use Notepad to print them.!y!notepad.exe&t #uninstal.txt xcdaf`c``PBF?Q`8 RC8,@ [(uxcd`f`c``BFf(|2e$I* * @(go·#A ka_zx{4023ѤA!22&E\rqlKd J~*Ԡ2 hi.T*dۓx<}Bkd4_|Ȫ/~믰u|\؟y`p/Ѐu|g/!fuԁ7J a_Q;p(,Jy;TaEIS,Gu3Ta;OhTSmڐg=N=fXشbnZxk>}{Y>}nT ұJW99\b3)#)Ϥwēޟ*ӁY~&D_Sv'XP睹<ɱhFԔO8yK9B}cF$ jAF1A ~~K*_H6z\!}cഗQ=ay6i쮠]{Bq֐gkCA]Ws"ӬDMg%&ە徾5"C MPM%LE5خ4_ aef . igj'D_~ϺmN]H n ӡ%{͚I 6/CdltpM;v`/ܝXmoqY[O+~؍bMRhqҖ}Pȁ׶uDvj]`m|m3r^w1^{d}]AƟBSp>f' ﰥBD@{iJ,߾x , p3~eصb7ϼWVd<\ '1x(>79,u*e*:a؞#3{9605+Up#QbEВx 1'AR# 4Y^Rِ &XwЕHbB-oߕqJ79F%01P3otRҴC =&Z1ivx' 4u,~p숚N8 f ~Zr;ծY\e%TɁs7ek4~,4XG9~bX%eYedU3fl7g<Ԭ[t 4dn^hդؤ,xjU㜁o(T~Gb)D͋R~誜x]TiW@ mB-Hgc;i3_zgz%oc84+QIqgFDѪ0]ڑQlHm6TLSMKJE(qy5 $8)Fk[b:ѬDf8ROahYpe=N%~ϰ+ 9%ڀuiğ9fU(L$f*Q"*<Ŋ ؊~|lN)ΐKh g=bsd[/XaF).eV7ʸЉˬ d?u\pQQsSpmГbt{MfgRW"H#cܦz;DXQjKvBcUbS61p̃a̫T_/Cbe)4\f~xL|+u,'v]-Dngrb<' QN+H,e8@xYt ,lD\5u2DvW{ |n+7-3(xmһA=.KDh-\;! ĽWw^D)^ghο;3D[J+A,I,C,K@HDLKg!!2ij:2 S bMLmwu 9}FdjLlBljM)'3pb̌-ٓ6׮"r͆4;hw_{#cL9/F!xuYS0 --ew(4>e2yLBՉhXIBVh:ӹZj9Ny.THt\G Э ,h]R=Tq(Ki-DxDjeigaO7K:wwKU3`PgKNTP^B&ҶćL 25Wa[3bj*՘eJDNj}$Ĵ%ɾjxIaJH$ 6Pa6FC#w;adA>/yۢ-0_rUB[X2vl;Vl>j갦3s[O4&tpMl~ p3vl=NcE/n>9wp[WP2bExuYS0Oh I e+Rֲxʄe@#N"ZMdH~?dvjY~9Bu猊V{`@`n6RZG \P1*aYz @/B>q՝}Uʗ>>C\j0GK^=W ղ"?F ۸`0wyCTjpfpKp>[R /*S 1g8;=eN&}=_ԴrtF>[U'f]^y\51 IH .i'9s;X4Nic٦u%MjI͜˭G6nJ{1cӉmvvݵx3AC;}4#fW,c=U8TFR DxœO@Gw|"Jbz0rK# HdL&߷@ `%l^4cu JE,"k5Z@d-"YˈD*"+J#Y눬 h),GV~<_Sv^Ϙvwxmз0Ea{ z`cd BD(a- Pp> ]^pQ8SpY8p._zԟ2e$*p'fMz+QG7mZH܅{p!\!195SxϹC^`WN$B|]ߨxJAΎJSb("XYY be+ VXTVy}[K'C j\ۜqIEu8Kxg+]uh@aN!GhC"F:+Aީ? ) q8-Nsipi{΄g|aϗIYVYWa.:c~Ȏ4.SȴVs 7}nk3f1f|C{ys Rs h#y:c 1g9?^KZ;{stw3؜ݾz_|G ER?x}KTQTSYa>(V%Sfv\h6-~@AQڴ1 mHB0B?瞹oDb9s߽{{8JIJ>~7I 2Ć`#'`$dIZE|5lm&'%2JSQ?S 8|n]kγX_VQQ+ka4k릉%yp Z pVwWuz1;쓏YsOvjm~_WwPW]]Q^nJh乽]j{ѦumͰE &u/bbk;-k>YϞƯ&{SEvr:^;=;ﱇK>}@glX&*izsq^lfC*/o:]9i}W3ee/!G^35.g3 07hߝ w'?ge֞R׺/߱+A|%`;y?@\xe+DQϼƌ$5I~l,lJ@KVVVX*%62%Id#;\w1es9`CIHLR $qN㲬M@vKx\P_ opgCCUfS_?w G3BWzDga??_gAKexcfb`B&V ہ$# "'%xcb`a`z!3 F0d@0u00W2+&1.Zf& ɕH`c`҇|,,@@L%@P1xWrEmB ĝ@ r6e[q0yHQ5IwwY+^xȿP| ]I&{y`ƫ? !Wyj%t:X_Oiѳ̉ޠ;U㙲>g Z=Um+KMm G,U `#\^=6u(tgm]E"8SY ݚېbBާ_in j,3DZ;B!-);?Z+~"95 35-&3Tn1VR]jn򪨌$ A2Y`jIi*j]}+%w \@xg`E˥QY!-6:+,@.KFױ"j`]]b*|&wڻ̭Ȩd2xp(e"2ZJzZ*I6m-WZZB/nڤmft̘&Ł,x,`x,`2X0 X0} LU`X._tp`>t:8`@ 0X0 Σ DX0 dt`S@ i ,M X0,`A 0tp`7A L!vbˀny 0 ~Ltp`X0B B%%O+=2z<(vV6hFiD>>>WjK-rpI؁H;LVh&hl6K{{Jss455Icc444H>9^NX>oe 7A0f$ 2ٲ\yEeUu}7 .pu,K4,,;pA˯J+W1CV]m5\ku]o nQƛ >b6b䖣=flӸ[ovNve&sw89'qQG3?ēN>N?̳>ο‹.]zW\yՔvuӮ֛nnλ=ȣm=ēO=̳x‹/ʫƛoλlY~'~/o~_~~}'lދC1/3$_e""IŲc^Ӓ;ku<)uϬ2Nmt6jdW}؝0Š0}a.W(k^Gbz&UQyW^Tӧ4_u]KQ|[> I6 (3рbY[k0/DfuE }rm #n-GQ,]Ζd^JjOg.ճh(W7*5` IZew(aMjRO^#e-IkYGReڸ@+ͤ3D4ֹ-ͤg=ͮ]ivΛN3墔fwfդG%gkTO0xu|Eߞ$x)@ڴ8E:K(:hR KPwhx ۽ܥ~337o{Ȩ2e KJDfeka~dm%qAggtS%0JX0" :8`G -:8`$4QM0̳}YB :8`Eā,8l&6 F D<X0@`A8`ā,)ʆF͂ D,`s,Ă, \ X01L>F̀hB2,`A 1  NI>ʊ&O+=2z<(hٵZN-JKeДkz56MC]SIP5, Ao/"im &YCڤUIrteɼF%F3}t_o%tUu&; XwXpAu /b7-RK/3x_aŕVbk묻 p7>e6b䖣zֱvwqnO{xzmGL<򨣏9vRqǟpI'riqYgsy_pE_r+\{ݔpM7rmq]ws}?C~:ɧ~瞟Bŗ^~^ͷ~ޟ3?O?Y_~7~}?/?; S"C9mofopN"aMM^xߙHw1I[V,e6Ul$]~9 ~&DaU~*$c[&HEsI~-y j#$?ݡtzTdqUɒW=3Q_o /^P{'qO6Dܓ05)?&IDIUEtd j<^I 4*l$l_6>:Y/~ilǙpQk#k2K*VXgJ㺊^+G@Gfï:}\xS⼼ ֻ E*ĶPU [*+Bo*lU(sTh)BW8ϔŬrB;x×xxE[lسF!D!` cW^Qc.+#Q]c?E]7wK@}|rs3ߔ}NdDP<\}IȔ>2GKZ|_[(hd$3##]&K6āA6,8`A8tp`% D5A  Y2-ː_tp`y D&:8`D3p`E H, )@ 0<L ,X0 P@Vtp`$tp`I0X0@|t; 3a1 [ X|,L>.F>`)tp`?)Ɇ0-Zt#CnnnnnnnZjZvm-i)!a"0:Z K[:;;CZ[[EAkV y¯syf ҋȱċɲUR'r Hu/1QTORb{4/GKm1'= ?++j'ksC+vPW*X|ߞ_^\MwL ڜB?1Iq^z8.'YPb#Y=:/\<$^DKz$1?}6ϣVQJe,SzMIe59~Y65xS{η{}~Gj_][]JڑvPƹ% @xw|EKT$VRla:+X],{wwĮxDw}u}Kn/wʾ쉌j.GJc/\%=zS*mڢŅ^tttHǬ9M a(, tС (E 0X0 X0/0Ua|@ X0dNr`X0 L 8`@ 0(JC]ehB!LN.tp`&,?)DNltݭLtp`X0,S NI!JDnGM=ztuu;uttkt4rW4"C%}Ԃ>.:.9MMR)*---$ R]]-]sB:e ﱾa}oOZ e oҙl"_Y5ϼ ` ."_l%\ae]n+ʫZƚkκ뭿mR3 ?YH:&\3ȒK5JHMe-ee|H8?QY{(Kc-cKm.'[.W.I&]R˓.5t߉NJYj Z%xw|E%XIņ=`hbAv0Fl{kTDarvŵw%k쫨]ˡ${{77of#d|(ilDDWJ_ R^w-H[[6M&̬t͜&A  X0@#:8`Ytp`IdQ0|P >| htp`,`0Q'z9`@],4``,>t.`@B N]Ltp`&,?_Dw+B:8`,`2 0PSU1DӣJ= źuU5 Zr-R˦%ru$VՖZMb"0:Z 3%NViii&ihhjvc}#O>c$ce%L,^*]R:r|\U -ȢCjj[|%jXze[~ +*nZkzoFdӦ61y-z6nؖqaǝve&Ǟ{M{~pAraO:֣&}̱?O:SO;3:s; /K/]qUW_smu0i7|Kǭ~ǝw}Ͻ?zx#>x'zg{//ʫƛoλO>/o~_~??DT*2q ~dofи=kIm*Hߴeǝӏtu{ҏ0dU~N';ϧ4r^Sz9zc"VG,ЊKǚΛӡ޻SNϯc^X{TX}O*riT' TI(~2pdP$'sQXfS幖ɬ0TtGN/FEW"YVwXG̞4*qɘ3{;_sfV0_l~W1\EFEUx%U* gXi԰Fxw|E^Khb {^(Ă({؈:֨5^]qމb*}r{{o;;791#eBhil\D:rqTeZ[$A%?+/3:$"q`@D h$C pDX0@gtp`&h`@tUmM_tp`>4:8`,3Q'z8`@],4``,>WC]ah"\ 蜺 /Lp :8`?.+Nl|]  ?::8`,] wIWnՒ[Mntuu9uttitZ^-MKЩ4uJj_-Ż%Mb"]0:Z TeNimmijj9Lko9':m|ϓF2Nyɛ;qx~+ʪ R= ,CkjYtŗhXrYvr˯J+jk:뮷hM69yͷrVcf츖nvi]&&=k}oYb-OI^}M[>>.,WmfX3)zU2*?J,9tφ9,yWhyBֳqyJ_B??/ϯí1bBؽ9I(~yVP*YTJV^ )y)Zer% Q/*xQzؑ_tvEͿZ e8PtLLd$/V&9OW&QJ+hIter%J2x6=g^ EZtuxexEޛJР`gZEJMSCq'kpw4@)ܥHp(+ wP`yoG93ODF.GV_D;#ſfV$³'qЋBOOꑾ$0JX0@# :8`Ztp`IhacC薣IN0X0tp`,#> &D/ QZ ,2:X0)| htp`l ,P+p`tp`X0  (X0hgr]Dw+$C:8`,`2 0Pn)EY1DQcGFvbN:*MWSii:tL]WjK-tpqȁH/Lw:ڠ?I>^ioo6iiizԮ.c}'F5}X/7fdɪթt&[3nA7 .4yE]l%\je,+ʭ*f誫ƚkκ뭿 7jx#Fn[rV[>n6n;]vmvI{>t!q#>˯ǟ~_Dwq/57oHN^ZU6G${>7)CY:D)g?ͤٯ(&QL5Ĵ QϯD3rrXz&B˩ =ӱ%_S1_<ܾ< ^{DА'5rBŲ$%?wO&!IV25Zuk*4{uEOURe3J2O{K*𯱑kl"{GNrX1 eP.&rSW榤rSJ)ܔsS2O~S:^#jNE/qQxw|ETତbÞuW4 X{/^Qc ++Qc_E]o7\.77ODF5q#ї2V-=2+՚r#mmq7LF2335cdPX0fCɂ $#,`88`bј 0K, %+CX0@tBqp`AX0@1Q%z9`@T]HX0  A8X0(t  PzY0 P*p`88` BX0 pd#%6 VC88`!,`2 R|E$b"5zGM=ztuu;uttktrWT"C%|TNwttVh&hϔ7-!"MMM tZ2X0ѓOſK$RUͿ .".6~%\je]nʫfkκ뭿mɰM7k|#jmFn;jGi;nwy]w}{Ͼ|ȡ~đG:q1w N#Ӧ?Od|g}^RW^}7|w}>dz>gW_wcO?oל7 S"C_Lk0#z~3 I4a-F$״ugCrZ'C(9gkyvzR{A:jA R} :(9AYs*1ż~Uз^E'j_"z u j}6t){BIA&^J1Z yn| 1; JQ'AJيlb9֚ oxyTLaƿОm."KdɾL Sn5436!RȾl}-oBTȖ廧scs{o7\)13#zlGM\ uq~zap1hXΌ # UexP0%zGOPzz 4xaGFR{f}5chuqа&N<ɷ=y<=37osPӷߋfٲmg{v>=: {s?^}99~S7w\v\lmܰuک>3•WHvGEZcO YŌM 3O<}wގrίOS=r>fC8y p܋_.|צN3={ƫ7o%}} >>zl[䜨ys矉^`K-?bk;~݆? 7YxUPMkAeCHDr(6(˸IDs0 !ÚC;;no㺢WEDW/ExXg']_z;{چfsNQ蛂E:$Y,j0)d! .Re~/1m£wJgJtV`mК@2xa!#6qBچ[R@wjR:m|hey;yn +qlF3JnpW8aU@&"CHfɛ}(~#7H*ǃklf5wn̗"] dܦ؂װEq~#f8$o^P|[p t ;at+2L-3cFG 8:1t((^|z)0T:f_7b"B;i!W']A\Vt [rUx nIҺ IȍԾ-B%G-bR QXI/:zK;ϕy蚸Ls! LĽrkh~0++x2*F3IHBJ%&X)k4C0 K>xc`tgc000d`b``  }H\H* P?,#` dA* 1ꃘd TY`VpjIiHxQJA}sɉp"jF R$XXJ m$$\}u7,5۽ v}fͱDmA;XKJW~y@)6?%`>$!?@%OE+6A.)sZk˱T1}N5DʇT%B2LhWjpIf8mb\yZXb,LEenqoy'3 p-5ǛZO~SE5.z֊lٓ?/k8`M-7-KBxY%5Ώ"L&6"Zv6b+6"˲ ʢ" d&s'y3y;~{}9_Exѝ^Ae\wr]__+oO??I@߿?=zgW_?觏C?~=y-ݻз6V+wѣ7m,s s,ZM~Vc_XCXk3>5fXc֘ `*!lܽǖm2^^UGW^`f;r>pl}ٙ2..wX>V_FpeHȾźp{1Naw^>(]!?NvXhdZ1++i)i?u,_*Ku)%bbXk~*3u`juy Sr)FP>H/%S?M<3X4Ӻ8^wR 귾nrռ_:XSg}s&1@nrOMfCRqh9Lmc)]Xj}AZ5n m7NS&Xt:^J=zߵ<5͵FYK47n.{RN-,J s-~ V\y-yQ$A]غl#PvԜT|TjԒ\=^ހTlhԊXҒ<Ԝr̼T=9xmRMA}"Bdx*5F𢋲]\#t&=;c>! xʲ /P/a{ņWU]l5au JFX⫸.ob}8[_^gCK)sl6c_`ΉU.=ǃuw)nxcl0>G5]+5jJf@]T_iGm!Iݡ,$d:RdgS&ѳDwCj]F Pǐ6gHņV?!6LҔ_E4Q3'9LҪbKW-4GG糩b:2nF<ɺΧsW$s|Vd̮ 9[.NDc5UbO߳JTaCxos&\n5[+U,[߽ qj䨧Q˷ZjR ROtT@O\!c u$M5}#iQ-Nx Lڥ xc`tgc000d`b``% +7 gDؕ@z1c& FieFFc B V@E `ld 0qf󧪩mc]T+ )jo劼ZظZ7rVk/ίӒ5ݶ^{~~SȾe-+-a /lmKlݒ 왗kR뱵@li/n }Y̾nن>]6{r[{Rݐ99҄4wfˎ hj7k[2Zz'OGSe|LZڋae.Lg"[5i|^ZR~*iu5z 2xgJ(R/J+E"yH^$&yFI$o !w Cj.K]r G{zrON^MpU$RE}iYek<^H# gm?xY?X)s+cΌ݈1}|PO#j>ϞGFj>Z>0+q@Oˑ>i?c(c6C=n<%b&ԧCiPaͰQz>CQa.,E '5-+Iu_U݃i7=u}UUu|_~*у? ke.䝯 -NǩnW Z.lʽkp5Sd8e_e_e_}QqÌ"-MԘfc[:\0EAnOf+8B>FlZr_t͕ɯfA#5x\A,#w/#oУǡ@..y'bMQҭ-.Mwl\i)㟏P7X@ rܲA2bbhĘk` 8zZ QY<>˗ο2t}H35B%a(͈E Q_m_y=`n_r!J~ηW??MVM[qV>Jy?z-b0ͳZ# dϯYŴeu22gC|s6`@Nޥ\)=K-7&|F0felrI'[faNdz]zK8[gk7lLf1{4PXWdm< )g@YVq0֢-yphfw-ZT Nw1>7UXؓ#D`+v0ƒ;>椙^ftL=8,K*/pj!%?l.C #:,0 1rm7+8V?ҼRgLVZjDp0A0=0=P4c+YsHAWH=+?-y#"JXq]r. yy,56tb~6+~|եpWUt?P"AR)<@@_58~c|6 b}LUa7t<}AJP {[}!_xq҉|+QkxE.[YKО lL*8,xlڳWYWZraʽJ#؅inJ,!SP]zQ 27Ϯ4dIK*'V) hUTjj9 ϔc{UsMM+r 9g* h蠊Y Φ( _|z kV{w3(ԖFRM3*/`p[W";,&j4Z,L Mq(ÁJKif(5b``3y8yFT;" udvgѦW)%է 5?iVr!b)iL6n婦xVb咏! BV1`B(+ TnDch|xD³l7w5^Շ:UCڳ<3[>(aIjT;rvN0" t3k&}{=*3g{}IM4/>tݍzBQҥT-l~YA;sPbhg%E34H7%b@iۦνD;)'.pnCޠ1Fk&]+y}s8exr XUNۊpQF~S$)W.i: cC_-9NCw|€wؔ$&NXF̎@q():NUĖ1y 6 Ӡ%_,Q=i߹~~(ٕZזf9\MRdd:l= &gA [(A;| Zysm,Fa h #pxX+vcGú|yJlz2? lffh١3m"/h:adCOZm^0ܒ-kc6 +{J">>D:Ut w \Wj@o]ྚ跁b݈4Zu84YMNP4qt?CQ-v>zBxSk}XфO J 9v3 AA1ݟ36fܮL}>1{8L1LX'@Pٱ*fRUz,[J[d# d8ڏ*EX8pbMlmpc˖wα~^-naѻlC8B9~ږE6r_SyW^ݹ:5Η;wZÂ~li49?K:S00 =BnmZc 6w:Uk#k̘\4V!J\Іm鏥fy.ϓpi.^`¬lQO2]W׏f~n@>-tmD5=,.֖ -Z# Cg{?`-+CN!j-#~<2)9!ufm,Fhtl[L{6UƬ `m6q ۽Fy|җ>ΖP Pgr6:fOG" Dڲqq Ͷ3&R?mkm=X쎬J&^@ow 2 v C[eF?U=HGþp5Y[7\LSHH8, 5&wanqgMN՘ 6Dbpx%{Yҏ=LMD\cI 綔/7+lqie_e_e_nޥW59N! ;gLjg)2'qA=O+0xdz\إxݓkAߚVPKP#zE{z>OWͭ8 !T1V>$ ,\-396-e2Le RfP.i[\UVM^gY56!΋"[|{ajͨ61+Ul075hFElq0[TXyUUuL QSl"FcEj[딫OɵRG#@5[;;坤>'J/#Dgk9UZjq#%0 a",C%'$x< OC" \0%p \ǐLp7!& n-p  Z86 n;;W>1Har ywCDx{#^D 7k{۽anbGKTS>ѪRKkA_ˋ*mohz$' kK%'־S 7z$h%Ā}R>`R!h ٠G a_oo{nFΠ}c:N{ϨӻػF]l*va&bGD# NSxݓOh\Eǿ]ږ!N%"aAiI6njd^4/EP<ыxBA(Exyo/gq_~3w~3.acmKK/qߞnWs01Y wV'?F{xҶ  =cL2Χ} ),c t|]goty:wWUU\bnbqgi;K~̟'|57oxxOͪޯsRոq0cﳲ_tqѬĕڕjkFzpS,^sW8㋮uW KK#ڲ,])ۮs۵Ėum_^ O 疰N)Wܔ/\}[N ; l9vbw9Nvl[n,Ŧ ߳LYBCkwQX8iN }e;=O. OelnB:Sԋ< fQ+yE9|^KG5Ǻxe7Vja2BF7 bB"T+ yLr$7MrC!yHRC}Sܘ>~R>ϞاFz>sF^Y{չr}>'Gz^i=c3ԳHՙ^1*$q}OFSlkNil q^hH[љ`~GJ D?wruW8 Cͱ/o('8ss<<B?3;|OZ(U҂HL'EP'86+JJL&V9nch!K_al1,/&`~مeLOU w6$ ޻S<޻= 7J+t!ױ ؎A.{oWoaަ%a~{}t(0wM0C1c>s|/N 44a gعi̠@8K|q=Y~DWK٥ r NΩ_Sߺo׃N}{KK7钿.rdW;n}rMѻk@Y#5}dSGz^L'ҥwz4@d;BC a0ף"!}$;z@´0^9v6Vlh#G=dRx|`o?QOFxݓoEƟRL#Rb(NրS'KQP ĩV Uh?!<^ƨW3wgrNw xQ_p1Arί2[JQt#i=/sC}7H7<8\ū8ЫOm)'z6 5VS[\=sPOou=䤷 j>9pQ|e#P7 ^DWETow^=QsFmÇ؆imv|[@}0JU"uTzxݓOQƿw|R*b*BŪEX2SS F7Dʅ;W&nL@772Ը5~37wuv qpq-IRv 1;;k~~*ӘyN9jU=jwh\F{Xo4JX"!G[}mi#DB.S)04Taf"k#zj\Lj]'2.TEʛw"IZ^6Dj(QUj#AaF*M6!'E:Ie^TDxp1X0 MJV|7y>+6@SjZw]m^Uk!Б8P2-Ύ_cZ}HGq k.#Sy>lfTc j6:gvr8=t>hK8&Gp'p 4=ւ9\%\F"hB]E p7Gn_=Eq=g1 |(cȲC*cWkF3 Z_ vmZg~YSS633urcInˢlCuY=%aнn=ptr]s=q6S?/^7C.UHvm#'x $=n{G_/. t&<_l ӊ[_A+^o*`Lݓ $[j*DExc`tgc000d`e```cd F6 30eĞW02 20 sDXfJpYr`rq@ƽ 0sOA&BMey$d+8&dF(&*'f k7gxݓk`ƟصN0dž0DbV(;nu٭-ARk2v ŃCPD4ś'a0EytMӊWݾ|'oߤ@>;;y$Wq p]weB<eYt1l_:][zs^J2X&yJ8IѧS)=Tz^Jҫ*=aA`)Noқ&Ihқl-zޢ{n6Mo6Mo!XOe,SO9YY C8z­܂elo;}NbǘtCPwB0aB>. b:</:-/nP;Ab$`%X`O 7ExML @ 8ᬥNNrPUt\ uqD| 7_< K XCևiP'Hc=u=5-R$Mxv9NvuZwrXl (W)hCl]G|εΌ89~߼彟1}6Ҵc@l^jd꫹|`0\6sKRmV$iV&sl{괙mYUNjv˭}dzŵZ.{b5[5PdrbaBU{v]*"eաE/CNe]a-nm,\7z"{D_+a1#^RknѯР+;NQq72[2yQOQKʹS^&9 :88X?Ef<; /|C0!˒ǹiJO||_ɍ=ORRN)zgEEYVB%U/x$׏"̀z.T+˫x|R&)L40xc`tgc000d`e```cd^vOt#r 3.Ğ732 20sDXfJpYr`r!>u UdphE( 5MA:XXW\ZXPY8exݓOkAƟ5MJx%"F0*=ic!mTMƬ&[t^Aś' ] (xݓW?B}fwo*N}>3sX- c.k7p_q1A8C/geѮw3Z+<-WKV6٧e_Kb6/Kjn9.EPPӱV2Ų^*X,WF0 Qߪ⑱%j^J0Kժ0Z2)FSuRb7" L|k[Iڗ 4Dؖ\v_ "1[$Ϲ}"o0:(ow֎x7Ꝕ==fՠ3|7f(n\3Jj&/ 4Ű@Z0Xi4y4r\cG#5r]XEnQ-rܖ 'mrܦhLpr!w %w]r%w] Ö1dWDt#'oΎf62mL>ג'ԎpE[D MAT!ݺ>y OCmԣa( p>0RCQ a{HQ+'۾쥑lz^u[clEF3c#HLT?9?9_'ڞQ~xc`tgc000d`e``PcdvOt#r 3cBbOҫjB`b9H@,e3%8,90a6<Y v2fcfg86{ Aj-u'4/9#3/]$#1%?)U1(?)D!(51%H!3$1''7 '58U<1DOOՋAZxkSAgV*J(5 VZ{ ZmI_vݗZ dAo^z RPDoS:yIizpwgd`f q8s||fX+:}ˮBO=C_g]7=@ NR-)ߧuOgB@+B0* F< y$]yaE`nR4` ے h28 Vwq_3ir<l(^!]".Kڿo¼s.8b 66²0ymJ\` ˎD'i%#AjVejU1WFinOf-rc ceq'nM" +Г]kLi[u"vnV6kHv+dWH?"l~!./pkM}tc=2 Z ZTԕ("UB/yaǸ<59|gH(nT0NAV5n'G5\i$ݴ-zn'lL:Kzn_=c5E\t#&?I[mm"m/P`I*YO"7A%"=\ǝuI}0osEdI#w|2x]PjA=7 ,@Si&l"ILUwg,6Ɉxs`QnmWVuq+tPU c=565;~|ߜyԑ3<ھȻaltfT67c;Y*75&q%*JmaN"Ԍ,]>tPFFv7vR1rXh '3w/["D|xc`tgc000d`c``0adx Fi333.`x0gX ] W02 20 H@,e3%8,0y}n} ZM fd*e*敤(d+($*%d(d$@T)&*&d5(d$$dA3IDjxMN=KPGDE,DmSBBI!CrblgDR? <Ͱ3s1-Q( xRlCwaYystoqgf'XTk5[mLOyW{V4KH4YBvŻU;tU^\\ߪ&3i_ uզVDFX0 W/x{Ft=_w}#a q"/5eKd#/2fMlHl|KDsWkLOTxPKA}#Fb Ӏu b BJ/?7le)ȣ^%t $eH/ގ{73om fX0zi[n8DIk=6p% HB] ~OydkaaE@ՎdլTYe=J˔♕2 itY*ɲLAB<4XYi0p 2&95?pt:W1ӞScKu'A6h(RiQ;8}?'Ɠ,NL$^Nɾ _YG{y˙y5QiiqZwֳ~1` m);t@EEs ewQxMO1OTA`Lա>X^^Drf7w,ID*I,mH!P؞MvfXZx`afl g ~Xbo]h )oP)e^^Q.0 ӣ.qqp~ݕTqޗ;'y1!J+lIl+uFp](I@7cũ]OS֗Yj\cI7MvLCI[bJGCgHtA@NE]SpJC{T6Yܓc?La)6nY$%IO,e+3IV ^|ki랕3qs:% k8'D<:L鹰nh<ߟJOߙ@/Ϛq]wBSUDxc`tgc000d`b``8! w= 9H\HH }A,0a'9 B 0TUD%479a@H_~Bf^qIbNNf^B@NjbqBybf KxMNJA} AE8B&ubaD+/wxɞ;5|r8{!jǨV0Y&6/Q?鹸,8vX5"f#~)S0[f?u>BVe2k"7'x#sobz=&a>v\Kc~WĶ ,It8w3M63m*Bubo+S7h L\Ȣe-HjED4uŕO?xmRMKBA=Ai-Ғ^.m4$0܄ $$# 0\ A`( Za6m ;3#=w;]E]B 0 =PG_֎1~mVH`/?A>'?*UlnCt`_!Z!Ov]V{)_2R9fr˦SVIeʺQՔU nsI<+umk ЭSj` ,?ˬܣ{:- Ǹ>y猗):1&UMJ3n1W3$хJ ܷ>7졮w|~(/q!FDZ'?*UlnCt`_!Z!Ov]V{)_2R9fr˦SVIeʺQՔU nsI<+umk ЭSj` ,?ˬܣ{:- Ǹ>y猗):1&UMJ3n1W3$хJ ܷ>7졮w|~(/q!FDZ. \ tuC?nj&(vY{m[}h o`avM: L< 0HqÜ#f.Q'])>6c :UwUIfSgi[EW2uS*J%-Ӑe-ne`pn`F;E7IxML1N@B"TV"ti@ntyOYs- yHBlؕvvggͯ_c29 0ŧj cǎ)?ǨV]t}CB .%a;T.q\Gi+Do]3eiY3Zpc:n+(c%l2q1$ yg0{x=xb[rXMTQ,*eȅ(R5]JRk(k:YTZOLb(iVjtO;ʇHQmlVI](א4 2(u*cݞnE5f"XƮ6h6I)jaҫWЅxuUoU?Q -&eBK"R&HkJt澾kgGi-[tcX5a$] h$?PX @߽3+Kǽ9M92@/ї/M0}ώN}9|o pfhz7G~h &uḽf庽' e8Es;T](imAwo7%xc`@&v@Sj$@- @T @>@ $+%@@@@P@Pd &@^ g @n @ @b~ @b @T@@^@B;@L6@!,8@Y@sg @ @6$4@, ;%4@ )4@ y.4@ 24@m 74@P ;4@X J@4@x D !@I!"@J"(@J#4@]7N$4@wP%4@9 Q&>@pF!DR'4@W(4@@}X)4@$qY*4@ \QZ+4@q\,4@ )]->@ޓ`.4@,>u/4@x04@`v|14@v24@R>34@44@54@"64@o74@84@ 694@&:4@;4@dA<4@4.=4@>4@yt,?4@\@4@IA4@#ڛB4@C4@D4@R;E4@:>F4@O'G4@bjvH@ا" kPP xPf 8PP P PP NPR3 ,PP xPU ;PP PmeAsset\QTAsset.x32.C:\a65w\AUTHOR~1.5\XTRAS\QUICKT~1\QTAsset.x32-dT(C:\a65w\Authorware 6.5\XTRAS\budapi.x32$C:\a65w\AUTHOR~1.5\XTRAS\budapi.x32.fV)C:\a65w\Authorware 6.5\XTRAS\activex.x32%C:\a65w\AUTHOR~1.5\XTRAS\activex.x32/fV)C:\a65w\Authorware 6.5\XTRAS\activex.x32%C:\a65w\AUTHOR~1.5\XTRAS\activex.x320dT(C:\a65w\Authorware 6.5\XTRAS\budapi.x32$C:\a65w\AUTHOR~1.5\XTRAS\budapi.x321dT(C:\a65w\Authorware 6.5\XTRAS\budapi.x32$C:\a65w\AUTHOR~1.5\XTRAS\budapi.x322dT(C:\a65w\Auth