첱~ SEND020.A^n SEND020.A^BACKUP/INTERCHANGE/COMMENT=SEND/RJE Routeback Version 2.0 [.KIT]*.* SYS$MANAGER:SEND020.A/SAVESEND/RJE Routeback Version 2.0 SCOPELLITI_P`խ?N[V5.2 _ROVAX::  _ROVAX$DUA0: V5.2 ~ =8*[SYSMGR.RJE.SEND.V020.KIT]CREATE_ROUTEBACK_ACCOUNT.COM;2+, ./ 4>:-W0123KPWO56D[7-pD[89GHJ $! Create routeback account$! $ set noon$ uaf := $authorize'$ if f$trnlnm("sysuaf") .eqs. "" then -% define sysuaf sys$system:sysuaf.dat+$ if f$trnlnm("rightslist") .eqs. "" then -- define rightslist sys$system:rightslist.dat)$ if f$trnlnm("netproxy") .eqs. "" then -) define netproxy sys$system:netproxy.dat'$ if f$trnlnm("netuaf") .eqs. "" then -% define netuaf sys$system:netuaf.dat$! $bad_acct:$ write sys$output ""8$ inquire acct "Routeback account name (e.g. RMT12_PR1)"%$ if acct .eqs. "" then goto bad_acct2$ set message/nofacility/noident/noseverity/notext=$ if f$search("sysuaf.lis") .nes. "" then delete sysuaf.lis;*$ uaf list 'acct'/brief%$ search/output=nl: sysuaf.lis 'acct'$ acct_exists = $status*$ set message/facility/ident/severity/text*$ if acct_exists then goto use_old_account $bad_uic:$ write sys$output ""$ inquire uic "UIC"#$ if uic .eqs. "" then goto bad_uic%$ uic = "[" + (uic - "[" - "]") + "]" $bad_device:$ write sys$output ""!$ inquire device "Default device")$ if device .eqs. "" then goto bad_device$ device = device - ":" + ":"$bad_directory:$ write sys$output ""'$ inquire directory "Default directory"/$ if directory .eqs. "" then goto bad_directory1$ directory = "[" + (directory - "[" - "]") + "]" $verify_acct:$ write sys$output ""7$ write sys$output "Verifying account to be created..."$ write sys$output ""5$ write sys$output " Account ''acct' with UIC ''uic'"<$ write sys$output " Device/directory ''device'''directory'"$ write sys$output ""%$ inquire gocode "Verify (Yes or No)"*$ if gocode .eqs. "" then goto verify_acct$$ if .not. gocode then goto bad_acct$ uaf add 'acct' - /uic='uic' - /bytlm=20000$ uaf modify 'acct' - /device='device' - /directory='directory'$ uaf modify 'acct' -' /lgicmd=sys$manager:route_print.com -. /nolocal/noremote/nobatch/nodialup/network - /prclm=26$ create/directory/log/owner='uic' 'device''directory'$ goto setup_any_acct$!$use_old_account:$ open/read f1 sysuaf.lis$get_old_uic_loop:!$ read/error=no_old_uic f1 record=$ if f$locate("''acct'",record) .eqs. f$length(record) then - goto get_old_uic_loop<$ uic = "[" + f$element(1,"[",f$element(0,"]",record)) + "]" $ close f1$ goto setup_any_acct $no_old_uic:>$ write sys$output "FATAL ERROR - Cannot locate account's UIC"$ exit$!$setup_any_acct:$ uaf modify 'acct' -1 /privilege=(netmbx,tmpmbx,cmkrnl,oper,sysprv) -4 /defprivilege=(netmbx,tmpmbx,cmkrnl,oper,sysprv) - /nopassword$ write sys$output ""$ exit(*[SYSMGR.RJE.SEND.V020.KIT]DEMODEMO.STD;1+, ./ 4-W0123KPWO56 u:;7:;89? XGHJ*A START JOB 1234 DEMODEMO 1 001 001 REMOTE12 DEMONSTRATION FILE ROOM ABCD 1.00.00 PM 01 APR 89 R12.PR1 SYSA START A*s This is a test file. If it appears in the proper directory, then the RJE Routeback system is functioning properly&*[SYSMGR.RJE.SEND.V020.KIT]GETUIC.OBJ;2+, f./ 4l-W0123KPWO56і97@l/<89? XGHJ6 GETUIC$MAIN0121-Apr-1989 19:1621-Apr-1989 19:16VAX FORTRAN V5.1-10 GETUIC$MAIN4PUsername> !%UUSERS_UICUSERS_DEVUSERS_DIR GETUIC$MAINP4   LIB$GET_FOREIGN@  SYS$FAO@   LIB$SET_SYMBOL@( < LIB$SET_SYMBOL@D #X# LIB$SET_SYMBOL@`PP`\Pk``P `bP `dP`hPޫ`lP@`nP`pP`tPޫ `xP`(LIB$GET_FOREIGNTD4 SYS$GETUAI SS$_NORMALQPQ , , @Pl\SYS$FAOx|ˀLIB$SET_SYMBOL˔˘˜LIB$SET_SYMBOL ˰˴˸LIB$SET_SYMBOLFOR$EXIT o\oXX\gBAS$SEGgBAS$SEG_ STR$CONCATg_BAS$SEGݏ__BAS$EDIT<_XX\\XX BAS$STRING_k STR$CONCATP BAS$END_R8P  )*[SYSMGR.RJE.SEND.V020.KIT]KITINSTAL.COM;8+,g./ 4R -W0123KPWO56-N[7S-N[89GHJ7$! Installation Kit for RJE Routeback System (aka SEND)$!$ type sys$inputI*************************************************************************I* *I* SEND RJE Routeback Kit *I* *I* NOTE: This procedure will not alter a current copy of the routeback *I* database file (SYS$MANAGER:SNARJE_ROUTEBACK.DAT) or the site-specific *I* parameters file SYS$MANAGER:SNARJE_ROUTEBACK_SITE.COM. *I* *I*************************************************************************$!$! Check minimum VMS version$!/$ VMI$CALLBACK CHECK_VMS_VERSION version_ok 050$ if .not. version_ok then - VMI$CALLBACK UNWIND$!$ VMI$CALLBACK SET PURGE ASK$!($ write sys$output "Linking SEND.EXE..."-$ link/notrace_back/executable=vmi$kwd:send -$ vmi$kwd:send,vmi$kwd:get_initials$!+$ write sys$output "Linking SEND_RT.EXE..."0$ link/notrace_back/executable=vmi$kwd:send_rt -& vmi$kwd:send_rt,vmi$kwd:get_initials$!.$ write sys$output "Linking SEND_ENTER.EXE..."7$ link/notrace_back/executable=vmi$kwd:send_enter.exe -) vmi$kwd:send_enter,vmi$kwd:get_initials$!/$ write sys$output "Linking SEND_REMOVE.EXE..."4$ link/notrace_back/executable=vmi$kwd:send_remove -* vmi$kwd:send_remove,vmi$kwd:get_initials$!1$ write sys$output "Linking SEND_INITIALS.EXE...":$ link/notrace_back/executable=vmi$kwd:send_initials.exe -, vmi$kwd:send_initials,vmi$kwd:get_initials$!+$ write sys$output "Linking RJECOPY.EXE...">$ link/notrace_back/executable=vmi$kwd:rjecopy vmi$kwd:rjecopy$!*$ write sys$output "Linking GETUIC.EXE..."<$ link/notrace_back/executable=vmi$kwd:getuic vmi$kwd:getuic$!@$ VMI$CALLBACK PROVIDE_IMAGE send_exe send.exe vmi$root:[sysexe]F$ VMI$CALLBACK PROVIDE_IMAGE send_rt_exe send_rt.exe vmi$root:[sysexe]L$ VMI$CALLBACK PROVIDE_IMAGE send_enter_exe send_enter.exe vmi$root:[sysexe]N$ VMI$CALLBACK PROVIDE_IMAGE send_remove_exe send_remove.exe vmi$root:[sysexe]R$ VMI$CALLBACK PROVIDE_IMAGE send_initials_exe send_initials.exe vmi$root:[sysexe]F$ VMI$CALLBACK PROVIDE_IMAGE rjecopy_exe rjecopy.exe vmi$root:[sysexe]D$ VMI$CALLBACK PROVIDE_IMAGE getuic_exe getuic.exe vmi$root:[sysexe]$!.$ VMI$CALLBACK SECURE_FILE send_exe [1,4] w:re1$ VMI$CALLBACK SECURE_FILE send_rt_exe [1,4] w:re4$ VMI$CALLBACK SECURE_FILE send_enter_exe [1,4] w:re5$ VMI$CALLBACK SECURE_FILE send_remove_exe [1,4] w:re7$ VMI$CALLBACK SECURE_FILE send_initials_exe [1,4] w:re1$ VMI$CALLBACK SECURE_FILE rjecopy_exe [1,4] w:re-$ VMI$CALLBACK SECURE_FILE getuic_exe [1,4] w$!=$ VMI$CALLBACK PROVIDE_FILE route_print_com route_print.com - vmi$root:[sysmgr]F$ VMI$CALLBACK PROVIDE_FILE log_fdl rje_log_file.fdl vmi$root:[sysmgr]C$ VMI$CALLBACK PROVIDE_FILE add_acct create_routeback_account.com - vmi$root:[sysmgr]C$ VMI$CALLBACK PROVIDE_FILE demo_std demodemo.std vmi$root:[sysmgr]+$ VMI$CALLBACK PROVIDE_FILE install_guide -/ send_installation_guide.txt vmi$root:[sysmgr]$!2$ VMI$CALLBACK SECURE_FILE route_print_com [1,4] W-$ VMI$CALLBACK SECURE_FILE log_fdl [1,4] w:re.$ VMI$CALLBACK SECURE_FILE demo_std [1,4] w:re$!/$! Provide a routeback data file if none exists$!H$ if f$search("sys$common:[sysmgr]SNARJE_ROUTEBACK.dat") .nes. "" then - goto old_rb_fileB$ create/fdl=vmi$kwd:SNARJE_ROUTEBACK vmi$kwd:SNARJE_ROUTEBACK.dat$!J$ VMI$CALLBACK PROVIDE_FILE rb_file SNARJE_ROUTEBACK.dat vmi$root:[sysmgr]*$ VMI$CALLBACK SECURE_FILE rb_file [1,4] w$! $old_rb_file:$!9$! Provide a site-specific parameters file if none exists$!M$ if f$search("sys$common:[sysmgr]snarje_routeback_site.dat") .nes. "" then - goto old_site_file@$ VMI$CALLBACK PROVIDE_FILE site_com snarje_routeback_site.com - vmi$root:[sysmgr]+$ VMI$CALLBACK SECURE_FILE site_com [1,4] W$!$old_site_file:$!!$! Add new comma nds to DCL tables$!+$ VMI$CALLBACK PROVIDE_DCL_COMMAND send.cld.$ VMI$CALLBACK PROVIDE_DCL_COMMAND rjecopy.cld$!$! Add to system help library$!$$ VMI$CALLBACK PROVIDE_DCL_HELP send'$ VMI$CALLBACK PROVIDE_DCL_HELP rjecopy$!9$ VMI$CALLBACK PROVIDE_FILE start_file startup$send.com - sys$common:[sys$startup]'$ VMI$CALLBACK SET STARTUP startup$send1$ VMI$CALLBACK SECURE_FILE start_file [1,4] "g,w"$!$ type sys$inputJIf this is a cluster installation, make sure to reinstall DCLTABLES on allother members of the cluster. /This installation provides the following files: SYS$SYSTEM:SEND.EXE  SYS$SYSTEM:SEND_RT.EXE  SYS$SYSTEM:SEND_ENTER.EXE  SYS$SYSTEM:SEND_REMOVE.EXE  SYS$SYSTEM:SEND_INITIALS.EXE  SYS$SYSTEM:RJECOPY.EXE  SYS$SYSTEM:GETUIC.EXE  SYS$MANAGER:ROUTE_PRINT.COM = SYS$MANAGER:SNARJE_ROUTEBACK_SITE.COM (only if none existed) SYS$MANAGER:RJE_LOG_FILE.FDL * SYS$MANAGER:CREATE_ROUTEBACK_ACCOUNT.COM  SYS$MANAGER:DEMODEMO.STD 8 SYS$MANAGER:S NARJE_ROUTEBACK.DAT (only if none existed)( SYS$MANAGER:SEND_INSTALLATION_GUIDE.TXT SYS$STARTUP:STARTUP$SEND.COM 6This installation provides the following DCL commands: SEND  RJECOPY5This installation provides the following help topics: send rjecopyIThis procedure creates a startup file STARTUP$SEND.COM in the SYS$STARTUPAdirectory. This should be executed at system startup by editting2SYSTARTUP_V5.COM and inserting the following line: $ @SYS$STARTUP:STARTUP$SEND.COMGYou may now create one or more route-back account(s) as detailed in theinstallation guide. JIf this is an upgrade, you must also re-apply any site-specific changes toESYS$MANAGER:ROUTE_PRINT.COM and SYS$MANAGER:SNARJE_ROUTEBACK_SITE.COMEthat you may have previously made. The old copies of these files are(contained in the previous file versions.H************************************************************************H* *H* SNARJE ROUTEBACK Kit Completed *H* *H************************************************************************$!$ exit(*[SYSMGR.RJE.SEND.V020.KIT]RJECOPY.CLD;11+,N./ 4/-W0123KPWO56g37I989? XGHJdefine verb rjeconvert/! image sys$sysroot:[sysmgr.rje.rjecopy]rjecopy image rjecopy parameter p1, label=input, prompt="Input file", value(required,type=$file) parameter p2, label=output, prompt="Output file", value(required,type=$file) qualifier strip, nonnegatable qualifier trim, value(required,type=$number) qualifier nonulls, nonnegatable qualifier noformfeed, nonnegatable disallow (trim and not strip)'*[SYSMGR.RJE.SEND.V020.KIT]RJECOPY.HLP;8+,./ 4I-W0123KPWO56 z.;7@$d.;89? XGHJ 1 RJECOPYERJECOPY is used to convert the format of RJE files to plain text. RJEErecords contain explicit carriage control characters. Typically eachCrecord of RJE output contains a trailing . RJECOPY removesHthese trailing control characters. Overstrike lines which appear in RJEoutput as three records: BOLD BOLD BOLD>are converted to a single record with embedded carriage return characters: BOLDBOLDBOLD3RJECOPY can optionally perform the following tasks:D- eliminate all, or most, of the RJE banners at the start and end of RJE output. $- eliminate all formfeed characters.- convert all nulls to blanks.,- supress a given number of leading records.Format: RJECOPY input-file output-file 2 Parametersinput-file-spec[,...]ISpecifies the name of an RJE output file to be converted into plain text.output-file-spec?Specifies the name of the output file into which the input file will be copied after processing. 2 Examples$ RJECOPY ABCD.STD ABCD.TXT@Converts RJE output file ABCD.STD into plain text file ABCD.TXT.-$ RJECOPY/STRIP/NONULLS DAILY.9111 TODAYS.RPTDConverts RJE output file DAILY.9111 inot plain text file TODAYS.RPT.DThe first banner page and all trailing banner pages will be removed.2In addition all nulls will be converted to blanks.2 Command_qualifiers /NOFORMFEED9 Causes all formfeeds to be removed from the output file./NONULLS? Causes all nulls in the input file to be replaced with blanks./STRIPF Causes banner text up to the first formfeed, and trailing banner pageG to be removed from the output file. Since the banner has no explicit F marker at its end, only the first page can be safely eliminated. In / some cases the /TRIM qualifier may be helpful./TRIM /TRIM=nC Specifies the number of lines to trim from the start of the output? file. This triming is done after processing caused by /STRIP. '*[SYSMGR.RJE.SEND.V020.KIT]RJECOPY.OBJ;5+,X. / 4 -W0123KPWO 56@}2̒7 #4̒89? XGHJ9 RJECOPY$MAINV2.025-OCT-1989 14:18 VAX BASIC V3.3+ RJECOPY$MAIN RJECOPY$MAINQ$PDATAi $CODE$ARRAYp$DESCYYXX  RJECOPY$MAIN OTS$LINKAGE BAS$LINKAGEBAS$POS BAS$INIT_R8 BAS$END_R8 STR$CONCATBAS$LEFTBAS$SEG BAS$VAL_LBAS$ERRBAS$ERLBAS$ERT BAS$RESUME BAS$PRINT BAS$IO_END BAS$OUT_L_V_S BAS$OUT_L_V_BBAS$OUT_T_DX_SBAS$OUT_T_DX_BBAS$OPEN BAS$CLOSEBAS$GET BAS$PUT_COUNT BAS$RECOUNT STR$COPY_R_R8 CLI$GET_VALUE CLI$PRESENTP`\X```RJECOPY Please report this information to the system manager.Output file was Input file was Error was: Unknown error detected at lineCan't open output file 'Reason: 'Can't open input file 'Length =Unknown terminator - Please report following to system support. END JOB* NOFORMFEEDNONULLSSTRIPTRIMOUTPUTINPUT R %*BLQV[~ @8J:S Pk?" 5ePϞRPPQ BAS$INIT_R8˞Џ;ҫ;?2QR~P STR$COPY_R_R8 CLI$PRESENTP\ʏ\\!2QR~P STR$COPY_R_R8 CLI$GET_VALUE2QR~P STR$COPY_R_R8 CLI$PRESENTP\ʯ\\!2QR~P STR$COPY_R_R8 CLI$GET_VALUE2QR~P STR$COPY_R_R8 CLI$PRESENTP\ʏ\\/#2QR~P STR$COPY_R_R8 CLI$GET_VALUE# BAS$VAL_LPC2Q}R~P STR$COPY_R_R8 CLI$PRESENTP\ʯ\\Ы;GЫ?G2QvR~P STR$COPY_R_R8 CLI$PRESENTP\ʏ\\Ы;KЫ?K2 QlR~P STR$COPY_R_R8 CLI$PRESENTP\ʯ\\Ы;OЫ?Oݏ+^,n+nݏ ݏ7~,^BAS$OPEN7^Ы?S<ݯ+^,n+nݏ ݯ~,^BAS$OPEN7^Ы;Sݏ+^,n+nݏݏ7~,^BAS$OPEN7^2QlR~+P STR$COPY_R_R8իGSBAS$GET BAS$RECOUNTP\\BAS$LEFTBAS$POSP\\ BAS$GETBAS$GET BAS$RECOUNTPWBAS$SEG- j\\ҫGPP\ BAS$SEG- aXXXXX\\2QlR~+P STR$COPY_R_R81YիK\W\\_Џ[_[< [\LXX [\H0L䞯_[׫[իS%ݫWBAS$LEFTݫW BAS$PUT_COUNT1W\ \\LLXQX%1W\\cЏ[c[= [\LLXQX0 [\H0L鞯c[׫[ݫWBAS$LEFT++ STR$CONCAT1BW\ \\LLWQW%XXW\ \\LLVQV"WWWWWXX1W\\gЏ[g[: [\LLXQX0 [\H0Lg[׫[իCEW\\BAS$LEFT+ STR$CONCAT<+XX\W\\\ BAS$PUT_COUNT׫C2QlR~+P STR$COPY_R_R812W\ \\LLWQW%XXW\ \\LLVQV$WWWWWXX1W\\kЏ[k[= [\LLXQX0 [\H0Lk[׫[իC\\<+WWXXXXѫWWWWXXXX\\EW\\BAS$LEFT+ STR$CONCAT<+XX\W\\\ BAS$PUT_COUNT׫CҫO\\,k  BAS$PUT_COUNT2QlR~+P STR$COPY_R_R81 BAS$PRINTBAS$OUT_T_DX_B BAS$IO_END BAS$PRINT BAS$OUT_T_DX_SݫW BAS$OUT_L_V_B BAS$IO_ENDW\\oЏ[o[> BAS$PRINT [\L~ BAS$OUT_L_V_S BAS$IO_END鞯o[׫[ BAS$PRINT BAS$IO_END1<+XX\\ ,+/ <+XX\\ BAS$PUT_COUNT BAS$CLOSE BAS$CLOSE1BAS$ERRP\\   BAS$RESUMEBAS$ERRP\\3BAS$ERTBAS$ERLP\\L Ϛ BAS$RESUMEBAS$ERLP\\Qf BAS$PRINT(BAS$OUT_T_DX_SBAS$OUT_T_DX_S0BAS$OUT_T_DX_B BAS$IO_END BAS$PRINT8BAS$OUT_T_DX_S3BAS$OUT_T_DX_B BAS$IO_ENDU BAS$RESUMEBAS$ERLP\\Vo BAS$PRINT@BAS$OUT_T_DX_SBAS$OUT_T_DX_S0BAS$OUT_T_DX_B BAS$IO_END BAS$PRINT8BAS$OUT_T_DX_S3BAS$OUT_T_DX_B BAS$IO_END BAS$CLOSE BAS$RESUME BAS$PRINTHBAS$OUT_T_DX_SBAS$ERLP\\ BAS$OUT_L_V_B BAS$IO_END BAS$PRINTPBAS$OUT_T_DX_S3BAS$OUT_T_DX_B BAS$IO_END BAS$PRINTXBAS$OUT_T_DX_SBAS$OUT_T_DX_B BAS$IO_END BAS$PRINT`BAS$OUT_T_DX_SBAS$OUT_T_DX_B BAS$IO_END BAS$PRINThBAS$OUT_T_DX_B BAS$IO_END BAS$RESUMEP BAS$END_R8P٢ i ,*[SYSMGR.RJE.SEND.V020.KIT]RJE_LOG_FILE.FDL;1+,./ 4B-W0123KPWO56DžBo7f/s89? XGHJ=IDENT "14-OCT-1988 00:31:51 VAX/VMS ANALYZE/RMS_FILE Utility"SYSTEM SOURCE VAX/VMSFILE ALLOCATION 1000 BEST_TRY_CONTIGUOUS yes CLUSTER_SIZE 3 CONTIGUOUS no EXTENSION 100 GLOBAL_BUFFER_COUNT 0; NAME "SYS$SYSROOT:[SYSMGR]RJE.RJELOG;1"# ORGANIZATION sequential OWNER [1,4]B PROTECTION (system:RWED, owner:RWED, group:, world:)RECORD BLOCK_SPAN yes( CARRIAGE_CONTROL carriage_return! FORMAT variable SIZE 255,*[SYSMGR.RJE.SEND.V020.KIT]ROUTE_PRINT.COM;69+,Qb./ 4P~-W0123KPWO56@ZxD7 F[89GHJH$! ROUTE_PRINT.COM - V2.3 - Added mail based on node::username in banner1$! V2.2 - Added multiple file processing loop$!+$! RJE PRINT output routeback control file.$! $route_print:D$ if "''f$mode()'" .nes. "NETWORK" then logout ! must be NETWORK job $ set noon7$ set verify ! Needed for debugging routeback failures$$ savedir = f$environment("default")$ saveuic = f$getjpi("","UIC")$!"$! Go get site-specific parameters$!5$ site_parameters = f$trnlnm("SNARJE$ROUTEBACK_SITE")$$ if site_parameters .eqs. "" then -; site_parameters = "sys$manager:snarje$routeback_site.com"D$ if f$search(site_parameters) .nes. "" then goto process_site_param$!F$! Following are default parameters - only used if no site file exists$!$$ default_print_queue == "SYS$PRINT"$$ default_batch_queue == "SYS$BATCH"!$ default_print_form == "DEFAULT"$ site_print_qualifiers == ""$ site_batch_qualifiers == ""$ goto start_process$!$process_site_param:$ @'site_parameters'$!$start_process:$ purge netserver.log/keep=10$ uic := $getuic/$ workfile = "snarje_''f$getjpi("","PID")'.tmp"*$ define fal$log 1 ! display filename$ define fal$output 'workfile'1$ run sys$system:fal.exe ! run FAL to get file$ open fal1 'workfile'$!F$! Begin scanning FAL output log. Note that log can contain more than<$! one event, so we return here after processing each event.$!$scan_fal_log:$!$! Always set initial state$!$ set uic 'saveuic'$ set default 'savedir'D$ set process/privilege=(nocmkrnl,nosysprv,nooper) ! turn off privs.$ close/nolog f1$ close/nolog f2$! $file_loop1: $ read/error=no_more fal1 record@$ if f$locate("Create file",record) .eq. f$length(record) then - goto file_loop1 $file_loop2: $ read/error=no_more fal1 recordE$ if f$locate("Resultant file: ",record) .eq. f$length(record) then - goto file_loop2&$ rcvd_file = f$extract(16,255,record)$! G$! Now we've got the file ( rcvd_file ), look for routeback information$!)$! First, find the username in the banner$!$ open/read f2 'rcvd_file'$!$! Get the banner line$!$ read f2 banner$!E$! If we don't have JOB in columns 10-->12, then get the next record.D$! This takes care of problems caused by blank first lines and other$! first line mess-ups.$!:$ if f$extract(9,3,banner) .nes. "JOB" then read f2 banner$!;$! Now get the information.... (unless corporate moved it.)$!'$ jobname = f$parse(rcvd_file,,,"name")($ formname = f$parse(rcvd_file,,,"type")7$ room = f$extract( f$locate("ROOM",banner)+5,4,banner)($ mail_address = f$extract(53,20,banner)$$ jobnumber = f$extract(13,4,banner)6$ write sys$output "Processing: Job Name = ''jobname'"3$ write sys$output " Room = ''room'"3$ write sys$output " Form = ''form'"8$ write sys$output " Job Number = ''jobnumber'"$!$! Convert any nulls to spaces$!0$ if f$cvui(0,8,room) .eq. 0 then room[0,8] = 320$ if f$cvui(8,8,room) .eq. 0 then room[8,8] = 322$ if f$cvui(16,8,room) .eq. 0 then room[16,8] = 322$ if f$cvui(24,8,room) .eq. 0 then room[24,8] = 32$!&$ hrm_jobname = f$extract(18,6,banner)%$ hrm_title1 = f$extract(53,3,banner)%$ hrm_title2 = f$extract(66,3,banner)A$ hrm_location = f$edit(f$extract(57,8,banner),"upcase,collapse")$! $ close f2$!D$! Check to see if this is a special HRM job. First 6 characters ofD$! jobname are HPADSC and job title is delimited by three asterisks.D$! If so, we take the routing info from HRM_ROUTING:HRM_PRINTERS.DATH$! (info is in following form: 8 character location code, rest of line$$! is qualifiers for PRINT command).$!=$ set process/privilege=(cmkrnl,sysprv,oper) ! turn on privs.!$ if hrm_jobname .eqs. "HPADSC" - .and. hrm_title1 .eqs. "***" -$ .and. hrm_title2 .eqs. "***" then - goto hrm_processing$!"$! Now look for a routeback record$!A$ open/read/write/share=write f1 sys$manager:snarje_routeback.dat$!9$! First try to route using exact match on room & jobname$! $routine_job:&$ k = f$fao("!4AS!8AS", room, jobname)$ write sys$output "Key=}''k'{"$ read f1 record - /nolock - /index=0 - /key="''k'" - /match=eq - /error=attempt2$ goto routeback_file$!$$! Next (if jobname is 8 characters)?$! try routeback based on room & first 7 characters of jobname$! $attempt2:C$ if f$length(f$edit(jobname,"collapse")) .lt. 8 then goto attempt36$ k = f$fao("!4AS!7AS%", room, f$extract(0,7,jobname))$ read f1 record - /nolock - /index=0 - /key="''k'" - /match=eq - /error=attempt3$ goto routeback_file$!9$! Next attempt routeback based on exact match on jobname$! $attempt3:%$ k = f$fao("!4AS!8AS", "*", jobname)$ read f1 record - /nolock - /index=0 - /key="''k'" - /match=eq - /error=last_resort$ goto routeback_file$!$$! Next (if jobname is 8 characters)8$! try routeback based on first 7 characters of jobname $last_resort:C$ if f$length(f$edit(jobname,"collapse")) .lt. 8 then goto no_entry5$ k = f$fao("!4AS!7AS%", "*", f$extract(0,7,jobname))$ read f1 record - /nolock - /index=0 - /key="''k'" - /match=eq - /error=no_entry$routeback_file:$!0$! We now have a routeback record - decompose it$!7$ username = f$edit(f$extract(12,12,record),"collapse")5$ defdir = f$edit(f$extract(24,79,record),"collapse")9$ userfile = f$edit(f$extract(103,128,record),"collapse")"$ notify = f$extract(239,1,record):$ if f$extract(0,1,userfile) .eqs. "/" then goto spool_job9$ if f$extract(0,1,userfile) .eqs. "#" then goto mail_job:$ if f$extract(0,1,userfile) .eqs. "@" then goto batch_job$!!$! Now do the routeback to a file$!3$ if username .eqs. "*" then goto wildcard_username$ users_uic = ""$ uic 'username'*$ if users_uic .eqs. "" then goto no_entry%$ defdir = "''users_dev'''users_dir'"C$ set protection=w:re 'rcvd_file' ! Make sure we can read the file$ set uic 'users_uic'$wildcard_username:$ call log_event "''jobname'" - "''room'" - "''form'" - "FILE" -K "''username'|''f$parse(userfile,,,"name")'''f$parse(userfile,,,"type")'"8$ set process/privilege=(nosysprv) ! Now drop privileges$ set default 'defdir'C$ copy 'rcvd_file' 'userfile'; ! Note: semicolon causes new version$ copy_status = $status$ set uic 'saveuic'-$ if .not. copy_status then goto fail_to_copy$ set process/privilege=sysprv$ set default 'savedir'$ delete 'rcvd_file'-$ if notify .and. (username .nes. "*") then -@ reply/user='username'/bell "RJE output arrived in ''userfile'"$!C$! R0A~ SEND020.AQbW,[SYSMGR.RJE.SEND.V020.KIT]ROUTE_PRINT.COM;69P"Semove comment from next line to cause all entries to be deleted$! after being used once.$!:$! read/index=1/key="''jobname'"/match=eq/delete f1 record$! $ close f1$ goto scan_fal_log$!;$! Come here if no entry in routeback queue.. just print it$! $no_entry:$!:$! Check for a mail address (identifier field contains ::)$! $ close f1=$ if f$locate("::", mail_address) .eq. f$length(mail_address)$ then $ call log_event "''jobname'" - "''room'" - "''form'" - "PRINT" - "''default_queue'"$ print 'rcvd_file' - /noflag -! /queue='default_print_queue' - /form='default_print_form' - 'site_print_qualifiers'$ goto scan_fal_log$ endif$!/$! We have a mail address, try to mail the file$!&$ rjecopy/strip 'rcvd_file' 'workfile'$ delete 'rcvd_file'($ spawn mail 'workfile' 'mail_address' -/ /subject="RJE output of job named ''jobname'"$ call log_event "''jobname'" - "''room'" - "''form'" - "AMAIL" - "''mail_address'"$ delete 'workfile';0$ goto scan_fal_log$!4$! Special hard-coded processing for the HRM system.$!$hrm_processing:=$ open/read/error=no_hrm_file f1 hrm_routing:hrm_printers.dat $hrm_loop:#$ read/error=no_hrm_entry f1 record:$ record = f$edit(record,"upcase,trim,compress,uncomment")'$ if record .eqs. "" then goto hrm_loopB$ if f$element(0," ",record) .nes. hrm_location then goto hrm_loop=$ print_qualifiers = f$element(1," ",record) ! get qualifiers $ close f1$ call log_event "''jobname'" - "HRM" - "" - "" -( "''hrm_location'|''print_qualifiers'"-$ print/delete 'print_qualifiers' 'rcvd_file'$ goto hrm_done$!.$! No hrm file - warn them and delete the file$! $no_hrm_file:$ call log_event "''jobname'" - "HRM" - "" - "ERROR" - "HRM printer file not found"$ reply/term=opa0:/bell -> "Could not find HRM printer file. HRM file will be deleted"$ delete 'rcvd_file'$ goto hrm_done$!=$! No HRM entry for this user - warn them and delete the file$!$no_hrm_entry: $ close f1$ call log_event "''jobname'" - "HRM" - "" - "ERROR" -" "No record for ''hrm_location'"$ reply/term=opa0:/bell -P"Could not find HRM printer entry for ''hrm_location'. HRM file will be deleted"$ delete 'rcvd_file'$ goto hrm_done$! $hrm_done:$ goto scan_fal_log$!$fail_to_copy:$ if username .nes. "*" then - reply/user='username'/bell -1 "Route back failure - look for output in OPER"$ goto scan_fal_log$!H$! Route output to a printer. Rest of defdir contains /que=.../form=...$! $spool_job:C$ set protection=w:re 'rcvd_file' ! Make sure we can read the file$ call log_event "''jobname'" - "''room'" - "''form'" - "SPOOL" - "''username'|''userfile'"$ print_qualifiers = userfile$ if username .eqs. "*" then -& print /queue='default_print_queue' - /noflag - /form='default_print_form' - 'site_print_qualifiers' - 'print_qualifiers' - 'rcvd_file'$ if username .nes. "*" then - print /user='username' - /noflag -! /queue='default_print_queue' - /form='default_print_form' - 'site_print_qualifiers' - 'print_qualifiers' - 'rcvd_file'+$ if notify .and. username .nes. "*" then - reply/user='username'/bell -2 "RJE output printed using ''print_qualifiers'"$ goto scan_fal_log$!$! Start a batch job$! $batch_job:&$ userfile = f$extract(1,255,userfile)$ call log_event "''jobname'" - "''room'" - "''form'" - "BATCH" - "''username'|''userfile'"C$ if username .eqs. "*" then goto scan_fal_log ! Can't do much else$ users_uic = ""$ uic 'username'.$ if users_uic .eqs. "" then goto scan_fal_log%$ defdir = "''users_dev'''users_dir'"C$ set protection=w:re 'rcvd_file' ! Make sure we can read the file$ set uic 'users_uic'"$ set process/privilege=(nosysprv)$ set default 'defdir'$ notify_qual = ""($ if notify then notify_qual = "/NOTIFY"'$ submit /queue='default_batch_queue' - 'site_batch_qualifiers' - /user='username' - 'userfile' - /param=("''rcvd_file'") - 'notify_qual'$ if notify then - reply/user='username'/bell -@ "RJE output from JOB ''jobname' has submitted a batch job"$ goto scan_fal_log$!$$! Mail output to one or more users.$! $mail_job:9$ userfile = f$extract(1,255,userfile) ! remove leading #$!6$! Mail MUST be spawned to work from a network process$!$ call log_event "''jobname'" - "''room'" - "''form'" - "MAIL" - "''username'|''userfile'"&$ rjecopy/strip 'rcvd_file' 'workfile'H$ if f$extract(0,1,userfile) .eqs. "@" then userfile = """''userfile'"""L$ spawn mail 'workfile' 'userfile'/subj="RJE output of job named ''jobname'"$ delete 'rcvd_file'$ delete 'workfile';0$ if notify then - reply/user='username'/bell -< "RJE output of job named ''jobname' mailed to ''userfile'"$ goto scan_fal_log $no_more:$ close/nolog fal1:$! if f$search(workfile) .nes. "" then delete 'workfile';0 $ logout/full$!$! Log result of RJE output$!$! Parameters:$! P1 Job-name$! P2 Form-name $! P3 Room6$! P4 Type of routeback (SPOOL,FILE,MAIL,BATCH,PRINT)<$! P5 Output spec (queue-name if default printing happened)$!$log_event: subroutine$!-$! Define log file name based on account name$!C$ log_file = "''f$edit(f$getjpi("","username"),"collapse")'.RJELOG"'$ if f$search(log_file) .eqs. "" then -4 create/fdl=sys$manager:rje_log_file.fdl 'log_file'$!3$ open/append/share=write/error=done lf1 'log_file'@$ write/error=done lf1 f$fao("!16AS !8AS !4AS !4AS !5AS !38AS",- f$cvtime(),p1,p2,p3,p4,p5) $ close lf1$done:$ exit$ endsubroutine%*[SYSMGR.RJE.SEND.V020.KIT]SEND.CLD;66+,!0./ 42N-W0123KPWO56ᵥ7@p89? XGHJ define type out_type( keyword FILE,value(required,type=$file)2 keyword SPOOL,value(required,type=$quoted_string)2 keyword BATCH,value(required,type=$quoted_string)( keyword MAIL,value(type=$quoted_string)define syntax send_initials image send_initials noparameters qualifier username, nonnegatable, value(required)define syntax send_rt image send_rt parameter p1, label=jobname qualifier list, nonnegatable, value(required,type=$file) qualifier username, nonnegatable, value(required) qualifier full, nonnegatable qualifier all, nonnegatabledefine syntax send_remove image send_remove parameter p1, label=jobname, prompt="Job name", value(required) qualifier username, nonnegatable, value(required) qualifier room, nonnegatable, value(required) qualifier log, nonnegatable qualifier confirm, nonnegatable define syntax send_enter image send_enter parameter p1, label=jobname, prompt="Job name", value(required) qualifier username, nonnegatable, value(required) qualifier room, nonnegatable, value(required) qualifier log, nonnegatable qualifier confirm, nonnegatable  qualifier notify, nonnegatable qualifier output, nonnegatable,$ value(required,list,type=out_type)% disallow any2(file,spool,mail,batch) disallow not outputdefine verb send image send qualifier rt, syntax=send_rt qualifier initials, syntax=send_initials qualifier remove, syntax send_remove qualifier enter, syntax send_enter parameter p1, label=jclfile, prompt="JCL file(s)",! value(required,list,type=$file) qualifier output, nonnegatable,$ value(required,list,type=out_type) qualifier log, nonnegatable qualifier notify, nonnegatable qualifier temporary, nonnegatable qualifier delete, nonnegatable qualifier debug, nonnegatable qualifier queue, nonnegatable, value(required) qualifier after, nonnegatable, value(required,type=$datetime)% disallow any2(file,spool,mail,batch)%*[SYSMGR.RJE.SEND.V020.KIT]SEND.HLP;31+,}."/ 4J"!-W0123KPWO#56 _᎒7f᎒89? XGHJB1 SENDEThe SEND command is used to submit IBM JCL files to the corporate IBMBsystem. In addition, the SEND command allows the user to specify Frouteback information for printer output received from the IBM system.;Print output may be routed by any of the following methods:1 - output may be directed to a file specification* - output may be directed to a print queue9 - output may be send via the MAIL system to one or more addresses> - output may cause a user specified batch job to be submittedHNote that if routeback is selected (/OUTPUT qualifier is specified) thenIrouteback requires that the room specified in the JCL JOB card match the >user's code. This code is determined by one of the following:GIf the username contains an underscore, (such as lastname_fm), then theGcode is the user's initials. For example, if the username is JONES_AB,5then the JOB card must contain ABJ for the room code:' // jobname JOB (accting,ABJ....# ^^^BIf the username does not have an underscore, then the first three Fcharacters of the username are used. For example, if the username is <JONES, then the JOB card must contain JON for the room code:' // jobname JOB (accting,JON....# ^^^HNote that the routeback information is permanent (unless the /TEMPORARY Fqualifier is specified). Room code checking is ONLY performed if the /OUTPUT qualifier is specified.2 Displaying_room_codeFThe SEND/INITIALS command can be used to quickly display the room-code,that should be used by the current username. For example,? For username SMITH_AB, SEND/INITITALS would display ABS.= For username SMITH_A, SEND/INITITALS would display AS.? For username SMITHSON, SEND/INITITALS would display SMI.3 Command_qualifiers /USERNAME /USERNAME=usernameCSpecifies a username other than the one associated with the currentprocess.2 Submitting_JCl@The SEND command is used to send JCL files to the IBM system for(execution. The format of the command is1 $ SEND JCL-files [output-specifier] [qualifiers]3 Output_specification /OUTPUT) /OUTPUT=output-type=output-specificationHSpecifies that routeback should occur for all RJE print output for this Cjob. The routeback method and destination is required. Note that Hrouteback is based upon a match of the jobname and the room code in the JOB card:* // jobname JOB (accting,room.....% ^^^^^^^ ^^^^HNote that once routeback is specified (by use of the /OUTPUT qualifier),Cthe effect is permanent. Use the SEND/REMOVE command to remove oldFentries. Use the SEND/RT command to view the current routeback queue for your username.4 FILE /OUTPUT=FILE=file-specificationASpecifies that RJE output should be routed to the file specified.4 SPOOL! /OUTPUT=SPOOL="print qualifiers"FSpecifies that RJE output should be printed with the print qualifiers Hgiven. In particular /QUEUE=queue-name can be used to direct output to a user-specified queue.4 BATCH /OUTPUT=BATCH=command-fileCSpecifies that the command file given should be submitted for batchCexecution. Parameter P1 will be defined as the filename of the RJEoutput.FNote that multiple RJE output files will cause multiple submittals to Doccur. Note also that the batch job is submitted under the username$associated with the routeback entry.-Use of the /REMOTE qualifer is not supported.4 MAIL! /OUTPUT=MAIL="address[,address]"HSpecifies that RJE output should be mailed (via VMSmail) to the address or addresses specified. 4 Examples8 /OUTPUT=SPOOL="/QUEUE=MAILROOM/FORM=LANDSCAPE/COPIES=2"EThe above causes two copies of the RJE output to be printed at queue MAILROOM using form LANDSCAPE. /OUTPUT=FILE=MY_FILE.TXTGRJE output will be placed in the file MY_FILE.TXT in the users default directory.# /OUTPUT=BATCH=FURTHER-ANALYSIS.COMCWhen RJE output is received, the command file FURTHER-ANALYSIS.COM Fwill be submitted to SYS$BATCH. Parameter P1 will contain the actual Hfilename of the RJE output file. This is equivalent to the DCL command:H$ SUBMIT/QUEUE=SYS$BATCH/PARAMETER=("RJE-filename") FURTHER-ANALYSIS.COM /OUTPUT=MAIL=JONES_ABJRJE output will be mailed to user JONES_AB. Note that quotation marks are8not required if only a single mail address is specified.# /OUTPUT=MAIL="JONES_AB,ROBERTS,HA"FRJE output will be mailed to users JONES_AB and ROBERTS_HA. Note that;the two mail addresses must be enclosed in quotation marks. 3 Parameters file-spec[,...]H Specifies one or more files to be submitted for batch job execution.H You must specify a file name; if you do not specify a file type, theH SUBMIT command uses the default file type of COM. If you specify moreH than one file separated by plus signs (+) the files are concatenatedH and processed as a single input stream. If you specify more than oneH file separated by commas (,) the files are processed as a separate input streams.? No wild card characters are allowed in the file specification.3 Command_qualifiers/LOG /LOG@Specifies that the entry of routeback information in the user's *routeback queue be logged to the terminal./NOTIFY /NOTIFYHThis qualifier causes one or more notification message to be send to theuser's terminal: DThe first is sent when the submission of the JCL files has finished.FNotification is sent for each RJE output successfully routed due to anentry in the routeback queue. /TEMPORARY /TEMPORARYESpecifies that the routeback entry should be deleted after the first #successful routeback of RJE output./DELETEBSpecifies that the JCL file(s) should be deleted after successful submission to the IBM system./QUEUE /QUEUE={number}DSpecifies that the JCL file(s) should be submitted via reader queue SNARJE$READER{number}./AFTER /AFTER=timeH Requests that the job be held until after a specific time. If theH specified time has already passed, the job is queued for immediate processing.H You may specify an absolute time, delta time, or a combination of the< two. See HELP SPECIFY DATETIME for rules for time entries.2 List_entriesFThe SEND/RT command is used to list routeback entries in the routebackqueue. The syntax is" $ SEND/RT [jobname] [qualifiers] GThe jobname is optional. If not specified, all jobs will be displayed.3 Command_qualifiers/LIST /LIST=filespecHThe /LIST qualifier specifies an output file that contains the routebackqueue listing. /USERNAME /USERNAME=VAXusernameIThe /USERNAME qualifier is used to select another user's routeback queue for listing./FULL /FULLGCauses the full routeback entry to be displayed. By default, only the 5routeback target and notification flag are displayed./ALL /ALL;Causes all routeback entries to be displayed for all users.2 Create_entriesFThe SEND/ENTER command is used to manually enter routeback entries in +the user's routeback queue. The syntax is:D$ SEND/ENTER jobname /OUTPUT=output-type=output-spec [qualifiers...]"The /OUTPUT qualifier is required. 3 ParametersGThe jobname is the name specified on the JOB card. For example in the JOB card below$ // MYDATA JOB (accting,room....the jobname is MYDATA.3 Output_specification /OUTPUT) /OUTPUT=output-type=output-specificationHSpecifies that routeback should occur for all RJE print output for this Cjob. The routeback method and destination is required. Note that Hrouteback is based upon a match of the jobname and the room code in the JOB card:* // jobname JOB (accting,room.....% ^^^^^^^ ^^^^HNote that once routeback is specified (by use of the /OUTPUT qualifier),Cthe effect is permanent. Use the SEND/REMOVE command to remove oldFentries. Use the SEND/RT command to view the current routeback queue for your username.4 FILE /OUTPUT=FILE=file-specificationASpecifies that RJE output should be routed to the file specified.4 SPOOL! /OUTPUT=SPOOL="print qualifiers"FSpecifies that RJE output should be printed with the print qualifiers Hgiven. In particular /QUEUE=queue-name cna be used to direct output to a user-specified queue.4 BATCH /OUTPUT=BATCH=command-fileHSpecifies that the command file given should be submitted for execution Ito the SYS$BATCH queue. Parameter P1 will be defined as the filename of the RJE output.FNote that multiple RJE output files will cause multiple submittals to occur.4 MAIL /OUTPUT=MAIL="address(s)"HSpecifies that RJE output should be mailed (via VMSmail) to the address or addresses specified. 4 Examples8 /OUTPUT=SPOOL="/QUEUE=MAILROOM/FORM=LANDSCAPE/COPIES=2"EThe above causes two copies of the RJE output to be printed at queue MAILROOM using form LANDSCAPE. /OUTPUT=FILE=MY_FILE.TXTGRJE output will be placed in the file MY_FILE.TXT in the users default directory.# /OUTPUT=BATCH=FURTHER-ANALYSIS.COMCWhen RJE output is received, the command file FURTHER-ANALYSIS.COM Fwill be submitted to SYS$BATCH. Parameter P1 will contain the actual Hfilename of the RJE output file. This is equivalent to the DCL command:H$ SUBMIT/QUEUE=SYS$BATCH/PARAMETER=("RJE-filename") FURTHER-ANALYSIS.COM /OUTPUT=MAIL=JONES_AB+RJE output will be mailed to user JONES_AB. 3 Examples=Assuming that the username is JONES_AB, the following command2$ SEND/ENTER MYDATA /OUTPUT=FILE=REPORT.TXT/NOTIFYGcauses an entry to be made for jobname MYDATA and room code ABJ in the Juser's routeback queue. RJE output will be routed to the file REPORT.TXT Dand a notification message will be delivered for each file received.3 Command_qualifiers /USERNAME /USERNAME=usernameCSpecifies a username other than the one associated with the currentFprocess. The user must have the OPER privilege to use this qualifier./ROOM /ROOM=room-codeFSpecifies the exact room code to be used and over-rides the calculatedIroom-code (based on the username). The user must have the OPER privilegeto use this qualifier/LOG /LOGBCauses the routeback entry to be displayed at the user's terminal./CONFIRM /CONFIRMIThe system will request a confirmation from the user before entering the Idisplayed information into the user's routeback queue. This will only be9done if a previous entry already exists for this jobname./NOTIFY /NOTIFYHThis qualifier causes one or more notification message to be send to theuser's terminal: DThe first is sent when the submission of the JCL files has finished.FNotification is sent for each RJE output successfully routed due to anentry in the routeback queue.2 Remove_entriesBThe command SEND/REMOVE is used to remove entries from the user's routeback queue. The syntax is:- $ SEND/REMOVE jobname [qualifiers...] 3 ParametersGThe jobname is the name specified on the JOB card. For example in the JOB card below$ // MYDATA JOB (accting,room....the jobname is MYDATA. 3 Examples $ SEND/REMOVE MYDATAERemoves the routeback queue entry matching the jobname MYDATA and the room code.3 Command_qualifiers /USERNAME /USERNAME=usernameCSpecifies a username other than the one associated with the currentFprocess. The user must have the OPER privilege to use this qualifier./ROOM /ROOM=room-codeFSpecifies the exact room code to be used and over-rides the calculatedIroom-code (based on the username). The user must have the OPER privilegeto use this qualifier/LOG /LOGBCauses the routeback entry that was removed to be displayed at theuser's terminal. /CONFIRM /CONFIRMEThe system will display the routeback information to be deleted, thenErequest a confirmation from the user before deleting routeback entry.2 Examples EUser SMITH_AB has a VAX file named JOB1.JCL which is an IBM batch job#whose first line is the following: ; //PREPORT JOB (KDABCD10,ABS,02,30,,,1),'Period Summary',HNote that the jobname is PREPORT (the actual VMS filename is immaterial)Gand the room code is ABS. To route RJE output from this job to a printEqueue named MYLASER, user SMITH_AB could enter the following command:0$ SEND/OUTPUT=SPOOL="/QUEUE=MYLASER"/NOTIFY JOB1EThis command submits the JCL to the IBM system and will also make theDappropriate entry in the RJE Routeback Queue indicating that any RJEGoutput with jobname="PREPORT" and room="ABS" should be printed at queueEMYLASER. User SMITH_AB will also receive a notification message whenthe RJE output prints. HAlternatively, user SMITH_AB could use the following to simply make the +entry in the routeback queue for later use:9$ SEND/ENTER/OUTPUT=SPOOL="/QUEUE=MYLASER"/NOTIFY PREPORTHNote that the actual JOBNAME is used in the command rather than the JCL filename. Some other possible entries are:=$ SEND /ENTER /OUTPUT=FILE=PERIOD_SUMMARY.RPT /NOTIFY PREPORT:RJE output will be put in a file named PERIOD_SUMMARY.RPT.5$ SEND /ENTER /OUTPUT=MAIL="SMITH_AB,BOSS_JR" PREPORT1RJE output will be mailed to SMITH_AB and BOSS_JR0$ SEND /ENTER /OUTPUT=BATCH=GRAND_TOTALS PREPORTGRJE output will cause the file GRAND_TOTALS.COM to be submitted to the Fsystem batch queue. Paramter P1 will contain the filename of the RJE output file.2 Command_qualifiers/ENTER /ENTERA Causes a routeback entry to be entered into the routeback queue. /INITIALS /INITIALSC Causes the initials corresponding to the username to be displayed./REMOVE /REMOVEA Causes a routeback entry to be removed from the routeback queue.#/RT  /RTC Causes a listing of routeback queue entries to be displayed on the terminal./AFTER /AFTER=timeH Requests that the job be held until after a specific time. If theH specified time has already passed, the job is queued for immediate processing.H You may specify an absolute time, delta time, or a combination of the< two. See HELP SPECIFY DATETIME for rules for time entries./ALL /ALL;Causes all routeback entries to be displayed for all users./CONFIRM /CONFIRMIThe system will request a confirmation from the user before entering the Idisplayed information into the user's routeback queue. This will only be9done if a previous entry already exists for this jobname./DELETEBSpecifies that the JCL file(s) should be deleted after successful submission to the IBM system./FULL /FULLGCauses the full routeback entry to be displayed. By default, only the 5routeback target and notification flag are displayed./LIST /LIST=filespecHThe /LIST qualifier specifies an output file that contains the routebackqueue listing./LOG /LOG@Specifies that the entry of routeback information in the user's *routeback queue be logged to the terminal./NOTIFY /NOTIFYHThis qualifier causes one or more notification message to be send to theuser's terminal: DThe first is sent when the submission of the JCL files has finished.FNotification is sent for each RJE output successfully routed due to anentry in the routeback queue./OUTPUT) /OUTPUT=output-type=output-specificationHSpecifies that routeback should occur for all RJE print output for this Cjob. The routeback method and destination is required. Note that Hrouteback is based upon a match of the jobname and the room code in the JOB card:* // jobname JOB (accting,room.....% ^^^^^^^ ^^^^HNote that once routeback is specified (by use of the /OUTPUT qualifier),Cthe effect is permanent. Use the SEND/REMOVE command to remove oldFentries. Use the SEND/RT command to view the current routeback queue for your username./QUEUE /QUEUE={number}DSpecifies that the JCL file(s) should be submitted via reader queue SNARJE$READER{number}./ROOMm /ROOM=room-codeFSpecifies the exact room code to be used and over-rides the calculatedIroom-code (based on the username). The user must have the OPER privilegetto use this qualifiers /TEMPORARY /TEMPORARYoESpecifies that the routeback entry should be deleted after the first l#successful routeback of RJE output.r /USERNAMEi /USERNAME=usernameaCSpecifies a username other than the one associated with the current process.$*[SYSMGR.RJE.SEND.V020.KIT]SEND.OBJ;4+,<./ 4-W0123KPWO56@iU̒7 D9V̒89? XGHJ6 SEND$MAINV2.025-OCT-1989 14:19 VAX BASIC V3.3% SEND$MAIN SEND$MAINPq$PDATA$CODE$ARRAY$DESCRBX  SEND$MAIN OTS$LINKAGE BAS$LINKAGEBAS$POS BAS$RIGHT BAS$INIT_R8BAS$INIT_GOSUB BAS$END_R8BAS$END_GSB_R8 STR$CONCATBAS$EDITBAS$LEFT LIB$ICHARBAS$MIDBAS$SEG BAS$STRINGBAS$ERRBAS$ERLBAS$ERT BAS$RESUME BAS$INPUT BAS$LINPUT BAS$PRINT BAS$IO_END BAS$IN_T_DX BAS$OUT_L_V_BBAS$OUT_T_DX_SBAS$OUT_T_DX_BBAS$OPEN BAS$CLOSE BAS$GET_KEYBAS$PUT BAS$DELETE STR$COPY_R_R8STR$COPY_DX_R8 SYS$GETTIMLIB$SYS_TRNLOGLIB$DO_COMMAND GET_INITIALS LIB$GETJPI CLI$_ABSENT CLI$_CONCAT CLI$_COMMA SS$_NORMAL JPI$_USERNAME CLI$GET_VALUE CLI$PRESENTP]\X]]]mm-SEND  at line%SEND-E-UNEXPECTERR, unexpected error -%SEND-E-FNF, can't open JCL file (%SEND-I-ENTRYENTERED, following entry entered%SEND-W-PRVENTOVER, previous entry has been over-riddenNAnswer YES to OVER-RIDE this entry Output = (Notification = Jobname = Initials = Username = SYS$LOGIN%SEND-E-UNKNOWNERR, error #%SEND-E-NOTSAMEINIT, initials on JOB card are wrong%SEND-E-NOINITIALS, missing initials on JOB card%SEND-E-BADJOBNAME, jobname too long or not properly specified)(output//.JCL/delete /notifysubmit/sna/noprint/queue=NOTIFY//QUEUE=SYS$PRINTSPOOL#MAILFILEOUTPUT+,JCLFILEsnarje$reader33snarje$reader221QUEUEsnarje$readerDEBUGDELETE"/after="AFTERLOGtemporarysys$manager:snarje_routeback.datTT:YV1.1-02 R %L ' 'E $' s'8JBJN2w]P)c\[TPGF>03 v   k `O Dg""7- 'tlPϞRPPQ BAS$INIT_R8➯ω2Q*R~CP STR$COPY_R_R8Џҫ LIB$ICHARP 2Q&R~KP STR$COPY_R_R8ЫЫ߫S JPI$_USERNAMEߩ LIB$GETJPI2 QR~[P STR$COPY_R_R82. It checks for an exact match on the room-code and jobname.L3. If the jobname is eight characters long, it looks for an exact match on 8the room code and the first seven characters of jobname.64. It checks for an exact match on the jobname alone.L5. If the jobname is eight characters long, it looks for an exact match on &the first seven characters of jobname.IFailing any of the above, the output is sent to the default print queue. SITE CUSTOMIZATIONS:GThe ROUTE_PRINT.COM command file uses a site-specific file that enablesJthe following site-specific parameters to set. The file is referenced by Ilogical name SNARJE$ROUTEBACK_SITE. If the logical name is not defined, Jthe default filename is SYS$MANAGER:SNARJE$ROUTEBACK_SITE.COM. Note that 7all DCL symbols MUST be global symbols (i.e. use "==").HThe default print queue can be changed by altering the definition of the4DCL symbol DEFAULT_PRINT_QUEUE in the command file. LThe default batch queue can be changed by editting the definition of the DCL?symbol DEFAULT_BATCH-QUEUE in the ROUTE_PRINT.COM command file.KSite-specific qualifers may be specified for PRINT and BATCH submissions byKeditting the ROUTE_PRINT.COM command file and changing the defintion of the:variables SITE_PRINT_QUALIFIERS and SITE_BATCH_QUALIFIERS.@The default form used in printing is specified by the DCL symbol=DEFAULT_PRINT_FORM. This can be set any site-specific value.IThe symbols DEFAULT_PRINT_QUEUE, DEFAULT_BATCH_QUEUE, DEFAULT_PRINT_FORM,ISITE_PRINT_QUALIFIERS and SITE_BATCH_QUALIFIERS are applied to the SUBMITIor PRINT command prior to the user-specified parameters. This allows the'users to over-ride the default actions.IAs a further enhancement each routeback account can have its own specificKversion of the ROUTE_PRINT.COM command file. This will enable each printerEchannel to have its own, specific, default printer and batch queues. JThe routeback command file determines the formname of the job and inserts Lit into the symbol FORMNAME. It currently does not use this symbol for any Jactions, but it is included so that site-specific code may utilize it. A Jfuture release of the RJE routeback system MAY support routeback based on 9the job's formname, in addition to jobname and room-code.G SEND V2.0 Release Notes Page 3RJE Routeback logfile.KA logfile is maintained for each routeback account. Each routeback attemptKcauses an entry to be placed in this logfile. The logfile file name is theJusername of the routeback account and the file type is RJELOG. IndividualKsites may choose to rename the logfile on a daily or weekly basis. If the Jlogfile does not exist, it is automatically created. Each entry consists of the following:Column Contents..../ 1-16 Date/time stamp in form YYYY-MM-DD HH:MM.(18-25 The JCL jobname of the RJE output.426-29 Contents of the ROOM field in the banner line.330-37 The form-type associated with the RJE output.E38-42 Defines the action performed (PRINT, SPOOL, FILE, MAIL, BATCH).I43-80 The information used for routeback of the output. Contents varies ! based upon the action performed:! Action Contents/meaning of fieldD ------ ------------------------------------------------------------> PRINT Print queue used (no routeback records existed for this" job, so it printed by default).C SPOOL Username, followed by a vertical line, followed by the user- specified print qualifiers.B FILE Username, followed by a vertical line, followed by the user- specified output file.A MAIL Username, followed by a vertical line, followed by the mail! address(es) specified by user.C BATCH Username, followed by a vertical line, followed by the user-1 specified file to be submitted as a batch job.0 Note that only first 38 characters will appear.A sample entry of each type:P1989-06-28 16:35 STDLABEL1234STD PRINTSYS$PRINT N1989-06-28 17:33 KENSRPT REP STD SPOOL REPORTS|/QUEUE=MPRO02_NW/FORM=WIDE3C1989-06-29 13:02 MONTHDATJJD STD FILE DOE_JJ|JOHNS_MONTHLY.RPTC1989-06-29 14:11 LIST PS STD MAIL DOE_JJ|SMITH_AB,JONES_CDE1989-06-30 20:24 HPAB01 1000STD BATCH SMITH_AB|FORMAT_REPORT.COMONote that jobname/room are the fields used to determine the routeback location.LWhen customizing ROUTE_PRINT.COM, you can insert messages into the log file Bby calling the subroutine LOG_EVENT with the following parameters: MaxCParam Length Contents............................................. P1 8 Job-name P2 8 Form-name P3 4 Room? P4 5 Type of routeback (SPOOL,FILE,MAIL,BATCH,PRINT, or any site-specific entry)> P5 38 Output spec (queue-name if default printing happened)G SEND V2.0 Release Notes Page 4 RESTRICTIONS.EThe use of the /REMOTE qualifier when specifying BATCH as the output >destination is not supported and will cause routeback failure.DChanges made in the banner produced by the IBM RJE system may cause Krouteback failure. The command file looks for the word ROOM to locate the Droom identifier. If the word ROOM is removed from the banner, then routeback failures will occur.FOnly one output specifier may be given. A future release may contain Fsupport for multiple output specifiers. However, when multiple outputFis required, BATCH output can be used to perform multiple actions withthe RJE output file.**[SYSMGR.RJE.SEND.V020.KIT]SEND_ENTER.OBJ;9+,./ 4-W0123KPWO56)7g|)89? XGHJ>SEND_ENTER$MAINV2.0-420-FEB-1990 15:38 VAX BASIC V3.31SEND_ENTER$MAINSEND_ENTER$MAINP$PDATA $CODE$ARRAY$DESCRBX SEND_ENTER$MAIN OTS$LINKAGE BAS$LINKAGEBAS$POS BAS$RIGHT BAS$INIT_R8BAS$INIT_GOSUB BAS$END_R8BAS$END_GSB_R8 STR$CONCATBAS$EDITBAS$LEFT LIB$ICHARBAS$MID BAS$STRINGBAS$ERRBAS$ERLBAS$ERT BAS$RESUME BAS$INPUT BAS$PRINT BAS$IO_END BAS$IN_T_DX BAS$OUT_L_V_BBAS$OUT_T_DX_SBAS$OUT_T_DX_BBAS$OPEN BAS$CLOSE BAS$GET_KEYBAS$PUT BAS$DELETE STR$COPY_R_R8STR$COPY_DX_R8 SYS$GETTIMLIB$SYS_TRNLOG GET_INITIALS LIB$GETJPI CLI$_ABSENT CLI$_CONCAT CLI$_COMMA SS$_NORMAL JPI$_CURPRIV JPI$_USERNAME CLI$GET_VALUE CLI$PRESENTPc\Xccc SEND_ENTER  at line%SEND-E-UNEXPECTERR, unexpected error -%SEND-I-NOACTION, no action taken - command aborted (%SEND-I-ENTRYENTERED, following entry entered%SEND-W-PRVENTOVER, previous entry has been over-riddenNAnswer YES to OVER-RIDE this entry Output = ) (Notification = Jobname = Initials = Username = SYS$LOGIN room%SEND-F-NOPRIV, no privilege for attempted operationusername@BATCH//QUEUE=SYS$PRINTSPOOL#"MAILFILEOUTPUT%SEND-W-NONOTIFY, notification ignored when username=**NOTIFYCONFIRMLOG' greater than 8 characters%SEND-F-JOBNAMELONG, jobname 'JOBNAMEsys$manager:snarje_routeback.datOPERSYSPRVTT:Y R %L|@''P'j$'s' 8J BJ ND  !PuZ64     zih ]g";7-3'zrPϞRPPQ BAS$INIT_R8؞Ϩ Џҫ LIB$ICHARP#'+2QR~P STR$COPY_R_R8Ы/Ы3߫7 JPI$_USERNAMEߩ LIB$GETJPIݏBAS$EDIT߫; JPI$_CURPRIVߩ LIB$GETJPIBAS$POSP\\ԫ??BAS$POSP\\ԫCC2 QR~P STR$COPY_R_R82QR~P STR$COPY_R_R8 CLI$GET_VALUE BYTLM=20000 Minimum required to avoid MAIL routeback failure7 The following additional privileges are also required:= CMKRNL to allow batch jobs to be submitted for another user> OPER to allow notification messages to be broadcast to users2 SYSPRV to allow access to the routeback database<A sample account would be created by the following commands:UAF> ADD RMT12_PR1 - /UIC=[100,100] -& /DEVICE=DISK$RJE/DIRECT=[RMT12.PR1] -& /LGICMD=SYS$MANAGER:ROUTE_PRINT.COM -% /NOLOCAL/NOREMOTE/NOBATCH/NODIALUP - /PRCLM=2 - /BYTLM=20000 -0 /PRIVILEGE=(NETMBX,TMPMBX,CMKRNL,OPER,SYSPRV) -3 /DEFPRIVILEGE=(NETMBX,TMPMBX,CMKRNL,OPER,SYSPRV) - /NOPASSWORDFThe account is normally created with a null password. However, if forKadditional security a password is defined, it must also be specified in theJworkstation assignments. e.g. ASSIGN nodename"RMT12_PR1 password":: PR1 KThe default device and directory will be the location where RJE output willObe placed. Hence the recommendation of [RMTrr.PRn]. The device should not be Jthe system device (SYS$SYSDEVICE) to avoid the risk of consuming all free space on the system disk.HThe system manager may choose to create a separate account/directory forJeach printer channel. For example, assume that the remote is RMT12 and hasIthree printers defined. The manager could create the following accounts:  Name Directory Usage/reason, --------- ----------- ---------------------, RMT12_PR1 [RMT12.PR1] for print channel PR1, RMT12_PR2 [RMT12.PR2] for print channel PR2, RMT12_PR3 [RMT12.PR3] for print channle PR3Lthe following commands would be issued under SNARJE to enable routeback for the above accounts/printers: USE RMT12) ASSIGN nodename"RMT12_PR1"::/NOSPOOL PR1) ASSIGN nodename"RMT12_PR2"::/NOSPOOL PR2) ASSIGN nodename"RMT12_PR3"::/NOSPOOL PR3  Page 3ROUTEBACK SCENARIO:FRJE output is routed via DECnet through the designated account in the following scenario:HWhen RJE output is ready on a print channel from the IBM system, the SNAJGateway creates a DECnet link to the VAX node using the information in theJworkstation assignments. This creates a network process under the accountBassigned to the print channel (by SNARJE.EXE). As part of accountJcreation, the login command file SYS$MANAGER:ROUTE_PRINT.COM is executed. #The following tasks are performed: B FAL is run to receive the file. Both FAL logging and output are 7 used to capture the exact file specification received.D The received file is accessed for the JOBNAME and ROOM information.@ If the routeback queue contains an entry for the exact ROOM and6 JOBNAME, the appropriate routeback specified is done.E If the routeback queue contains an entry for ROOM=* and the JOBNAME,# the appropriate routeback is done.A Since no routeback entry was found, the output is printed. The  /NOFLAG qualifier is used.  Page 4 INSTALLATION:)1) Install the software using VMSINSTAL:$$ @SYS$UPDATE:VMSINSTAL SEND020 dev:0where dev: is the device containing the saveset.I2) After installation, create routeback accounts as described previouslyGor use the supplied procedure SYS$MANAGER:CREATE_ROUTEBACK_ACCOUNT.COM J3) Make the appropriate changes to the RJE startup command file to assign5the print channels to the routeback account(s). e.g. ( ASSIGN NODVAX"RMT12_PR1"::/NOSPOOL PR1HNote that the /NOSPOOL qualifier is required to prevent every RJE outputfrom printing TWICE. JInstallation is now complete. If problems arise, check the NETSERVER.LOG @files in the default device/directory of the routeback accounts.+*[SYSMGR.RJE.SEND.V020.KIT]SEND_REMOVE.OBJ;5+,+. / 4 N-W0123KPWO 56 *EΒ7<,EΒ89? XGHJ =SEND_REMOVE$MAINV2.027-OCT-1989 13:18 VAX BASIC V3.33SEND_REMOVE$MAINSEND_REMOVE$MAINP $PDATA$CODE$ARRAY$DESCRBX SEND_REMOVE$MAIN OTS$LINKAGE BAS$LINKAGEBAS$POS BAS$INIT_R8BAS$INIT_GOSUB BAS$END_R8BAS$END_GSB_R8 STR$CONCATBAS$EDITBAS$LEFT LIB$ICHAR BAS$STRINGBAS$ERRBAS$ERLBAS$ERT BAS$RESUME BAS$INPUT BAS$PRINT BAS$IO_END BAS$IN_T_DX BAS$OUT_L_V_BBAS$OUT_T_DX_SBAS$OUT_T_DX_BBAS$OPEN BAS$GET_KEY BAS$DELETE STR$COPY_R_R8 GET_INITIALS LIB$GETJPI CLI$_ABSENT CLI$_CONCATd CLI$_COMMA SS$_NORMAL JPI$_CURPRIV JPI$_USERNAME CLI$GET_VALUE CLI$PRESENTPd\X ddd SEND_REMOVE  at line%SEND-E-UNEXPECTERR, unexpected error - found.%SEND-E-NORBENTRY, No routeback entry for %SEND-I-ENTRYREMOVED, following entry removedAnswer YES to delete this entry Output = (Notification = Jobname = ) (Username = roomCONFIRMLOG%SEND-F-NOPRIV, no privilege for attempted operationUSERNAMEJOBNAMEsys$manager:snarje_routeback.datSYSPRVTT:Y R %L|\+f+6p++8J"BJTNfP4eT I  GF ;* g-*'{sPϞRPPQ BAS$INIT_R8؞Џ7ҫ7; LIB$ICHARP?CGKO2QR~P STR$COPY_R_R8Ы;SЫ;W߫[ JPI$_USERNAMEߩ LIB$GETJPI߫_ JPI$_CURPRIVߩ LIB$GETJPIBAS$POSP\\ԫcc2 QR~P STR$COPY_R_R82QR~P STR$COPY_R_R8 CLI$GET_VALUE2QR~P STR$COPY_R_R8 CLI$PRESENTP\ʏ\\Hիc#2QR~P STR$COPY_R_R8 CLI$GET_VALUE  BAS$PRINTBAS$OUT_T_DX_B BAS$IO_END1#j WH7PXWQj |s5jN2'"n}h xQ}5`9K+3q^v{cQ4LGԴ[Zs*uU͗Kq%0 |`+,?n<_Dzb8cx:w/ڇ0 Q).DC=u[Şj~uO--wzfnpX"ntb`ɟ_U1BG*=q/^ͯgt~+zz0"btL.qhY8j*cK#oxTh{d 'ucp{_* 4%#]ߚuzt&s,2n ?Wa;I|,,+g^n8 - ^Đ[ Oxriy<ɣ"pY}@ k]6jk>m+b =߶zԓP(i' g AO:v_AwqV53 y,SF T3$)Ƣo ZwiB:(߬vDNbLB|ߜ}JO8C=IFcNZ cQw8OK8 "L'HWj[hVI`B?D\sE[l(eQED =9+ǁwq bqZ|JTe9Mh徖4 d>HF0OBU!B-i:;̢f^5;D#_3TcSU:'D~VXCGAo  Be WC]EtB>S(WOHTB sIl|0 Lp^R/*L[9BK\9VJUdH\_^xM(vGrg!<5_.6>[fl`^ K1,}x8 r$-/lEzdk/5rn=pZiU W$BJ/ AI MrjbXztwAXKNayRXy.DInl6EC(SXnYsKYr Ah'GBXHHNl z7^JNT SGăn >JO (&{0 Dp_H+X&.oXa}Q3-\TA;C6 F`SUHCVtD\VQ3%JA7dQd!%,05 ~3I[3BFU\xoWh]3qP4l?ǂ/=ƈk&c$>^z)% PAżɸI,HrP8X_HbB]# G )3'pN]lF-C| û ) d&_ژD@C}sR(E ,!JhӊD& NߧU`\\5XoyUMoi!4n eCV99ze7o Y;gQp2KC&B١&H#!XB/__ R\RH*R?TU*Sa"`I!&\L-  @6\O[ŒJX xqq=RuJ Sf@bpN[/"y=q@v [ IDCYHC8XCYH^Tr+<ZX*[W3{Q}X7/+q<K&8" t- ~N_ R[F HE_vN6ViYZAL#cZ XF]HOP? DKeT e!_:"#X SAUh{tj+!PVZK&Ws0/-@Z'y<&3v}i+7) nf`]J RUG'LJUQd-d%Vz=y|~ E^j fZYtV_c7mBV2P#ZBEOZQGu;D%Nt,o1%K~]@K̽HK  sx1-eF,v#k. :O+QR_;f(35!ZYNCppv~)#JjImC_dfn/ECD4: "7!H.4] ;f[o;}vr@'%Q|BI^O66' 8;N~UohV]c` Po[T^}fNYYcg96 BQDBE Yf2-f($1/LZ0@YRVi2]IW sNINSW&L*'6J#+x@N6=+[D#>[N ?Kl}2CXB=7uٝ U'2.FآH ntM̦btaI~oDMi?~ecz0;%'s7 fF@GԛL@ [NaF]\F@O DWd}' s iTXY _NdUU BCX$ ^X_D'ZI]2fC'CpUhIAAnJ[*ׯd@ ".Wg'rCVZ[ NA]J& )@hC>xE* PXJ5E U} RTM cA gDLViOGObW(7WJ܍bWIAi~i'6&?r29ITdir!=6"C'ns7qS_f~'#sXOVkY" Y"RY@:i/r!;E!"arf_ama)G "uOzd}vwm/C~ZLm;v0V(1}dp$yr''srYrQ&h#$rz p~n.e364iied&fo}xupvm+ve!aQ,Pws>"D-<`2!N0"*385 GeVOZD>G0='?*\-17, 6-[ut2 fnBD]5%.T2W[[DN D.ESU6+OB-ER[u HW[LW&? L!ZcDtj<Jϙ&w}-UO L<YIeE[.K5؜˷ޞJf@("BsDdiJݼ9]?)usjhoH!ՋQ:x:A.6 A@A=/0noodCou+ن 2X% j N^Đ$Kuse K.m&rwRB[ZR@ڟytbti=b(vZk{O4*&#a &~jf crp4 v>qH_v<=^ĝ5>oFsif}:$,;: S aAwlFP2 x 1 B*#5ybr9v` c(1'qy|% YQ\ʳ\s3}&V00V lVz%sQpki 0/s /G+6=7wkvi6QuImh.?o]XGb17C Qd&E!WZUY3m=r{]RPmQe kf  =h;lUN\Ql(Q RR'U3Wh746zV|&s$?v4+j~7|6}8L*KF+-9 DdGr]G"@Mx Wx}ql0~6߈ؗmlvFmZ-v،k I!ly3w}'OiDhTL +ſk:Z'e_anATO6GGpn  Q-@,\ !3`+RB7Y6Fd9LkF ljS"'rLMsh5eFqGD^sfMDr:pG^D(ZPY_RVyR W2_:VL[A"PDR+ "oH⹸_1Q P @HdqCUfYN FGZ9Ue4N;n Nc-y8#Ca~{nVV[ @q&rG"stU_`MO l04We~ca_-Q2|2@f \ NMlw&zpxk|jImYW&{rQc4HJNhX-奾a. J P]--Hy6f.wRꅵv`@&ߦnU h_E4shy/ѕ:utC1}H70fX ;}B6Qk$"P0P^x4D^LYWAB(@gW 0?Y2[UQ&чT"i`(H."(= > &Bbo8tkRU|w(> g.ZJ x‰c\65TzPyh{+xL̛['ߛƉVn". Vb  $01Gnl)UHYh,5Ex`5 EM]X EsEAOFu-MX4C`,A~6q4i?)hL~ b#2 H}LIEGI]AAr\8\^XA rV^6c\`APcDdF'2Fi Y.%@MLABShS/{~_}#bItdgpd/ouN%;am`; A+w'v1{z&$M}7ު|? Gn D bdBckc1!J0-8&yaw M!2t+<:d*0&hp/ . $=G*yt-;*0==#wif.aScI)>,"duhiHnzR!aor<}/ǜۙrnpl0a2G37:=thqk xdcz-3* 't9=3!+Beid%a&W,+qENDWkbe)726?4i: 53=9-=- 7ux.|.},aZM1r-65y 9$ hkd;jzJ '9Ox( fz ]BV.psW`eqU "d~{W\eBNcehKI1(ǽqS~}cymv# xfZ0 "S4Rn*b9ZPf_'tv15}#7=$ 0~megĠ9pF MfugBG[)H VFdC=}Uxfjw&VTSXO%8( +svm\8#6*fno}7q!h7*>ǕJ]I?i(=-6a@KIT;jJM^dI|^* ( \YLS;F}V L25ATM:DG4h! ""l𿢔ԙmJW6r,\L^okJ]AJ,b~%cFEo (ZzLQ.ALCAq(y\ ix]VI)L)BV LGC^ z$ FUQ&[[V f UU4TW$BB֩KCiGf᫘JG{52;.?K L cidejU LU^xoUSF-W[>IEpO_ٓ(MU<=P'~n-IۋpH6o:/- ?no{.@2CO޿kA uVJ \Nhg>3w( wrJWG/BPDJvqkKGĸP}&2/#k _Wg5Xƻ4',ކ`}mbT4sbp,Ҟ^BwR.򷈛j(YGzv^Fn@^:N7RfhmIDTE:EEt.izPA%79EE^^d. RaPKL#B Gg ofRPEC)BM C }`A E_ R L!NoAO_P+.{\AkhM]#XVEKGWV@SNNT_u&-*:TI6VSi8%^D[ Po}YF I* Xml} n?G[v! EZo~m*j UFE S [s{ z/IRh35 w ng.^J@$e/"tw^E-Q@]@YgLAZO,jSN Ay:l7} E І"L,J@oN E:_'wK Au~9f- 17A8EKnVhgR9RDWcI5lU6 ~{bi)}-?wfyl+shZITfGJ}Py8%8mQx68"kbV[BewW2MiWgjne)"PWYRTGMiiXYRt[@ Nj\L>ixAQ^XN6$;6*u[ }pWWPk~5.B]\=8-oNh 1KE"\H! P_%\gP4id0*L},D\2Ml1)hw4xl.#2E8W&dk{Xp=f|zzh|yyW;UOM~:#!}boXY;"uZ{1evu1k|7O"SWQ89_*x*I''73ke7wVEXCXHg-"eah.*-t{gc)ui8i1+'ASU:RZ_&XH0,ODukm."_}5runhXe&'DRODsW_ONy; r+g~e(})q)H5&`L^AM9r`"qwxKr.@;o\ES",%AV-)/UK&n404j{UDGX/NZ8>1gt~ s8HTZ Al"CO^6eb7k)"Kmus86yn qbax)'TKMM>x`) V/|)zp},LEOF'O3.N [e3t.)[]Aj3..s,g-$04p! ;A^SO^VJ#-8OO_%`n3O 22gkpy'EP Ll0J ?r'+tke/X)aoFiL NN U EL6ezhcm7DU."2%khoxSCP;d%o M|^KK5 \]Lr{h[_. QCUDbh B Q9`r_!e4Aw:H(}lt>!s.,8l)z~ksqz >i}gcrd)(3sJLvI\Riv?ezs%w>lW}O$p_$ymao$|`!}~~pn {;9P D)?/$H8.K] D;8/!unazc{&8K/5RNN=uhx<gy(K=K& ~!VOUC^iBALP % 6Oth.`3,R9\^C @We$bs{LT1ia.y=r&) $tc4~*2I1'?lyv { 6(wEAd5 )it8iq& :啟Wokth㊘U> D<T RthDQ+ Jl:$ i5y=+J0i]Z1.L d:#h60;9-4h2}Q#'waELFY-:tQX,Lmpu>'xi0"f'*te}VHliICAGH9oJfsa3+/8-i4lr0 }j-n,`:&jv .n.?2d{ac6j!k;e#vol3-xiiRcDW{dYL^-WD@V^AS/:Q72OFh&}%9<$tb17Ywxecjt0=`ome*}Zfos7GchLl81E;{gllYNUxop%uqc&tfd`nrn1~8chc#1kr1$ t V9sr;fG4!c4Z$xl;cb5{ r?8a1cZ,?fPX0rkKL2:vq8&@KBl[ePr N  <" T [O[pk8BGdPb OBhVX;ZI_LEP$U|0iHqS TQ@GgGZT 4E(y%J%DW%<.\NOnm+GfJM$ 3WstN6],5 !.'m4q#'10sk rAc4).9sC9s|.A:F\R,VPB[n$>vnlKj(uk^tctjff_K&-=?'EM<DB~1='a0.n]<"n W U\H\RT:uKLL!XNRhOl?y$a*VPMU ST$,TC;saekY}tKo{0,`cudYu`. nl&=?g(| ij+:?_aHMOB. '+;6EkLJdOdTX_?FH a%!QNUDDU X,t*~bx6;@*{f=zr--Tb1'gampil|+/9voo|4Zz6m6v+) jX "EE\KW5UROGI_E[BBQ /0souTt6on` -563ya+%X+yiJ17:5~7-dBZM4E|#2vB++$nkf|tS u1aUjP>KI-[V)6h A7|hR 3g><1vbrJo|\Sl:: acO$'&bZ(RC2YI\v`XOQ< I*1+l7#g3@ \V}[ib3T{_eLJ iYHUGKG*}\%/w8.&O2VW:&5ZhLeN{RO>z C SW^3oYhghkqss+;n7$jLc)X1(6jP+$l"}$&"Xg4Y`onv!;R/! 1Nu@:>sfvl=3@,>#s%?3'5+D@ ]NRa7-f1?q)R udARx58Tsu2bhCQ\L!E|kj$ CLC V68k 2;i1bhq"Vj\,$-Lv2$,8[aD\HSI HoP]DGE LQtro5Dab--.*9Qm#9y)()MGU$T\[R\R9S138)_E?,t-S|-TsluiA9S{lOP?5de  R=`z|ii b<04!K[c?6!{x J"o0%e:XOlATEFwlR#99q?7j mb/l5L@]ZSP9=-&*M7trcb`4M1Bk+quUpwurc u`lg~w2[Rwurew^ |!NWl|sm9^Fs>"0al;4vAMLRMxhWQ;` dk\*kfBqdg 9L?uro?56Ub X|J3[W8 hl&@T2mQ]$:=-*,r[SW+:IQpdh&L|ovjJX at_GEgq DAUFD^Q&GPE[BRD-3vp*05#)6hw'5a4;-r+ sAi]y7~QPC-$r1'YT`UMWE|/6cn3.;p&c07bKA $= so977i *_",F^l39mMlA a1dxy$c/hMESP|+emcu;`ip|SjgxxeY]LjIZOJ R%G@ zj'psd<>zDCJ4bO4I+GP@|h$HHK/ZC7;TO_D-tb}1+* Ks*3Mtm+)dG< .ol hVIX i 0z? {oSH oml;U5RdaLJQW[2TKMXSJX[5:rtg`e|$[^WBW'-?/Tn%-EaGe7}$c#m?/h::&h2&a}(e:QqLDj L KbfF6a&;u4ITIQJSN ;s 7myWr[GWE)\SFai/ t6S35qN[FHR{F_Q/BD2F+ s X>X\=e=7 }(%d6t9p-wrxin|o(zn7mcsyekm{ug$hwta0.gv-n:{ofu|p't tn:e|exfrnll._[GP$ET I~$l~}Ol;, (q$tot7caQ9eq!y>,je0ud4%7Eg_VeB_8w{~xt$ ea}:i7N]ESltu!bz# INeh{ )rA HUH]N)X!xi0]Q^1J#KT_HkB\uo"]U CQRoBH9]2q vHY0,F<^DU rGBB'EHUy6|X]rJLI ^RMZQH. XY ZBSSS$_ OYVi(7RJGX+TYYV&M@U6]@PX<SE_J`7(b kP9ERk7oQ'|U5SEERL9t0im Qu USa$E[NFU8XQDPRp?(1ty lx%S nS hzl`3p :o _HKLOHkPR[ EJB{e%&(3[>)R&xj3x=6-6y=U\0g(SEN?HX^'%IwAFXOA M.R7Va &3]YRBS3DJNBFU,UEE"; ]\W_EJ][@YCFSS$RB Ni t:u5TKT rkd8l;ol]hOFdq  x{LTKOM/FOYM=LANDS jsaK.AaMOV FCSE T YAezs658*+a<0:4*=n&:K.ahsfecGw{K ~t;!V'a$<&VRSN\;atr7`m 926j; rC.\xXn<>#5_*(8(R y+4': J+vtdgf3&)OU0c;IMN[ceb f=H:Ef`>-e>KLA.0n&40#WCOTh*{w!9 UWP EX~ EC<9,3:-tB:)+dih,< &$l x.R@[+XTs;,HNHRJ55sd`= ^e pBYnec57%m$ e!yee:iAMZ\aIVSXO,&$)#a[ 59-7:;n8&uqc$ON^NdAKHR9 TRC[meL)XL`'7TSVY378W1%hQq[k3 /QaMx2m2_.4hL'wp{&;)Pr'( AIH@I1u25< 'B5f2e5 hs,"'!Rbl4ivU(L?/?Bdwqk`ga zh!'k -4mTp[NH@BZ MJ1SF RQS_9i`7t/KG7HWtMJQM4N\,KUDN^^ , Hu&nx2z`>#>M0o&isak={xlV txWq/~pv',T:#g=a9&.]#M,QLU5FZg`a|;ueq 8%]h.76{;s=;G ZH=G^ G7MM GI# VTD[ qxr?8?&E D 80,5+#j`J8=";opo+(%)5i$$>q29;=V: *j-WkN!_XIFT(tqeh+/h)wrhu8#taa 2emDEEn[x+phPhPq$l/p:v)cihwI2/U.R%Z^ |lb F" C #fw C^BNxe{ Uv)" M\KM%&: xa Lhcis6+.(hw0$XR*?+ V- vHI wMB(jj ]OA z;I nORDAAZ{4]ODRqD?rAJDW{mtvHrs/4DTKS;/OGQE=oJd LZIyukrpsRniup26)8O?%r O&p|V#j*;|{s7ƑԾD;ŝ}♹2~7n+s<ޞmrl)-i32!ypodu`L $Og>%iCmy;\$ }%;A0<97:|RcʼnbC7G΅[_oue{ ^;8?3.@eog. ,E3$;pNe8 Ĵ!S%'c ^i3}&TTI j%"hV*/0!p4/$ +r&)h&a!Pl-WoS1pu_{hNITVw?kNU0OD{+sJa=HKVM P5]2E@ow F^!,8-:+2^z j?%4lP^X$T2?GCpaC Q[mFFW[_XP ~B`+HpI/ijl}f$HXFR # SO4,.:sGQZAF n!/'goe{=p?U>pIEBTUE=uu1 ek=i:P LIbTB_X ;3Kk)8~*kN%kDe$'5q/hty 61K5Xd-'Abny;bECBNOJ͒3R=!k0"to+'K%2,+u5z |ueOEC7sg!&Rtueqp_CCɩ9M9557`'61> 7;av:=P*p3obupFOlUOI9INF<>sϣNE&G74v%o$^Dbd0m_W\ # 2D @ og [URWG KUvy UU@CW_n>9'T4?1 isb LV~_LCZOI/LITI^Y,!EBN wuo|B]r}s/$%`3jW<:Md.DL׺PC#MNX8FDVv@CM ZMrMhK\pt!Arq"1~1p~qu N4Lԛlx"%YI c(!$qMPQOK@C!sF m?I8I2Tl{/Of xh,HNwyh$pT\f<)%12 HD. LJDŽ3ٟlW4hlW@GPI唳rZOu/I^AR% ;+;}t);#!x;F%vy WWTNkTBZUCW+[0NM G}&xvAI@T_  KMGXZ]5 <D  IWEO#B T]C16OYk[V@XKVMS;,X&3\@\Cw Uj&{lh"2&N_fwH.^O#QJ]P%R DS:ϜK5aTWYk7;AUw q*'D=rJ)#\Ops\p&UH\DAQw=]Mn  $N+.vR1:eL{{<(rN$ $xaV onvo"p*yQ, , R[(ZUTDO UAUpY3FQLT&TFYDF$ VLY ΁A[Vb;h>,M0kkky_{@gn ^YXJ`= ETUU. B^E>?N-lCkOV^O Xv:NE_H\0\NBQ@R^ϏGCK_X׷#R"i|Iu /'o]/tee^s64T^B"9j8p]SGV K]NS^D )sBPc3;%|a'L9&I3J L8iR;RN^bDU OBUUHV!B __HU* 27xj|du (dQeq'stojlba+% CAO^;Y)c(a<ypWYdz GFHkiDvt&fk '!,lۊZ$%` su&^u1zik:1 WcP>6$:<<6 `r*/=K1 e|I!)1/(>0hkh^ 5t5O2_G+Am Sr3uEkb 3:1,|SR8KBVBEcL}?Ee!@!Ǝdeif6TR$ I$uǴa t'ʯ1uh\b"'u*twv.q؏xejb%0 o Ě7aa0Fk9"%G'} 2e(1V&6͋䒱=Rs8<hx) I0RB d]a_!Fj bMK p5 ie9-84ofva1v`uin 5. 8dg9| Y]^Y gNZ+c SL:=VWDPQUUto! ojpM/?<-`vfu9!td$ed`vk '+a&fM0F5UU[)C_[YmD(#vS{ilp b'u.utkza'Kl ( 2vwbeh P#wa.-sG**=5p_h!ao642HoTY=3!V>/yޔf *$s *;0l@ mllf!:}xu>dcQM$WT E,*FSC_=I[thؿUKu-!J27igah~^RpxlnGX.d#/c\2hkqnY_DX .gi;`aoS}<>=q>@rgEShwst0m}Z/.+}g(oT,h|m-Q@^EE Dob@OE"?0.=fxf&fh,7$Q@9W/wT HI-Q^lƯ"xҚ<2/B[0?EM L,B@$VE7 fTQ0!bZWpXg-زcM-N$< p>vhcg~RNdgY2x,cXd#YBNԕskeH!nK!bxw8dlg$*QT>)y$QD2#'Z7=o'-kg2jw!6 rU8i3hVCN)KXTcS!*5t?*)6uf{ik-d>:'2+jj]k$kmi'c1J""p> jc4(v3}; ''8r|`mnt{EÞԨP0E76DnybvYP2W=SB&WeN>܂/>8@m%<=Rx ,bw۾q3"u0s;ZEǣ^ ۍ ۮWKd4opN*);uHSrrf-,D3:!3v"nw؈*%rwӳF4Ble % !.)Ɩ6{,&͜7]$ cgUqtqf87%>4Ѕ\m'ah#ajai~BJ̼>+i5# !]'Et{:=ru;)=vr=3?P ,,d>il!60e&‚ʟ[jf0 ?uy\u/&5YoX'"6#w3uVC%MDA=|>"&n~lK"7Ӟʘ,:,rbN+pN& #LQ3]OFD`9 3 ѷD(p* uN"1Crs%7YOPtmhcy!ak'{37* 61}$iPd~Ul&5#@ 9]Yǹ!4Ucv2!dl-Iv9&-"l_on if the%[Rmo dsF%4DqvDeD˝+Vr۵)! Pco~`g$c)ϔy0˰71ØJ3?dn`p(faaiY?AYCSU8.#+'=k޵n#9h=cƵ;uF($0nh!&5Dc`k"=96?u l 3!5Q %-ZLae6de.HLw$o57um,|o( T۳~GI龀">ݫWRb*X6>i=+ulffp7FF*>& E[M{U_pB\T!s)>?7*,<rl P7 Pӿ 9x|:d7)8p8q-,swRJ8Km?}}Dv$v3msx3+U#p:9I&=Э3@5PMwܒ”{ ].cg?f 4|4\6? o6?<ߘxestle#/'7JnA_N tz9p&?g4"lzbi21 0F]Zorc1|b\'YoJeW]?)_, 63Gh;2Gkf<20(ra65j b2:-g{qVf{,?6!\1g~0|x t1l%>""T`dk[ /xq.wqm6i)/*a$]?Qj܉Z1CLxА0fA3:un8a{{lsx1`/$yf;'ch$5&hahڒV?/э-A.trd/HJw863fi,xl#>>"`lwdpsw2>*[<99g,e%(bcwI:%gF(EEn+Q?e& qsldO:t>HTymq;KL#<J@Slrha|k#txk$!.>^MEq|7wUpl?it;(/8=&0+t*?q ?Siz/ 2"<>_S;+%!`+Íϙ{O<˸ 7>=!9#{E I!m1~ڜք)!,>A-'cBZ -Lyh58"=6XA'z~alms'd io6tero`a3Gfh)ej&ȧX`l%smZr.)"ҊIf=4nmێm)."o{xNJ3kyA2=x Ēx{T }YJ@/!q'_~E7 a'kfws}ii:6M4*>w I#@szt6XC)DOkeTܓD/0//F83=6/='t_3os{ g,a'L*u&0!+!:>!wފue'a5K;o3$:!n0;0Besw z H.Ne;++XOC,H@ yq`sjb9RO5WPO'JUH_x|rAimO.=T2~ [W eo's!,!8rmf0nc/&a!I;=1&t-91h JIaZ$/&3 #qV ,>qp=$1_kqKG` X,5!M*$tu&Y_>^!E$!H auy4  l@9BHk;%t:Q\)Up sNϹT0Berm&%=1hު!i'+#[r t}mo-1J[0.x89*~Bwv*VO,\??|B-!'75s)H/x@QM^1H0Ziw,AE")%_1v*q#"m#%g)b|tLBQ]Wi)>9+|eam$c)`LCK e/"=0do Au&*75&)a*7s<  n ^n)  HIDgR  AU V E GETLER V.= l Pto ilL@9o6(2:h "o6IOQL TSRO OEOEoJio`,11;fOMENI C NTEveSET  IT todu' STi{z'y:#r%l WT CMS  U A)(lD S asf(NK a%c!F  O EIRDF  HF=&)OUO Ifuxl,a4QU5! 681F0p3_=-tn}],i*S{EXU C_E)EOaEk)^1 #,mE=DNSdkzIREjTtagzm=D)PXR-}V=#X,0ut-zvzkich~ob*gVm}td-fu8o{uq3.F<=(\"b!B>\n-+a79<{Ja }]8<lHDRt/f|]b-%%@q0_R dhl"=<",."$+f<"&zM )p%+i*#*''Bo=6A^6(&9"3lOf !e38d=vM 51H\+%5){E/m,qgK@ dMX=Ė6?gr*A} jcbgN#*p(=w;:! r)o9LCL ۃl%w/p DYrOePEDWIUHNNFN5-rudYbUJ%RMJb$RVIDD-1~eT!5]F//@}|?0y6S`dg" {1?mb3qk,GL:-{9ida'u` 3)z<)X;;5x_q`Ke:6^I0:zww+pv0?DE7+RS::v ?sDu{!xR]'6rd a8o[pucex.T4?}&*h0m`"gi J6#&%'will"ySS_nRGU(Vosh}k oD<;#p"K[]>hi^P:etul/,L+($\b-boc&r{e4Iixd$f#h4 k08Ar`B3IR2@CQP?8m4wfut oYtg?G uh,ht)6n{arAHW,kxdoOeU]H,i)z2wh8aa;1 f&fatj|{'g?jsCCX4|yiC3 sXF?[nlxd-!b%C lF]KiE0#SWcMSoLu&cy,Bpayms7nms511c{`}9"UN\C*BOUA FV XAXUE"$k<4/;hhrbvp7'avRb~"2 eHG<9(?yhbk+cvFZPb&*T(twt!u+ an2%(n}-;q$:|q rstfcjd6$XT<5aMU~!edri5DTA{tgtv%eeqlrfgx;)b~m7~  .] KFEO ga Nh-WMSOYXR{S>U H`Tg{.(q MI.:e8*FZjhfoxi1s[U=qpzntaz&skR/L=-3;yeib" h*~'"-~;312y,@X}ijaN0 ^1sxvcN\OSUm)5']}!g`{Oz-l=7 tydh][$`Ua7,o2+ /'l1HS) PP"A]I<\'.0z'|lAO)|gEqJR]T^CS#;P_T0WH B& 4HkQ RGA%. / C G://vedNNDLH6 QCrl`jh+DteERZN' M6HH^QX^9BYG^BBEI(Z#h]! NWFeC BGYDQjITBqc}d|C5#=q$jF -t5Kk! DE[ZCXZ Ds)V't_nFO ZsK"AA[XRRY$G}&H{\ $e? 1-aq)G+MIAA"YC R]'T Q&A,rzgSOJMD s,!, "B6&#6'Ve(JUuWsDD-AKR'pi+M",p{a2/6GqynkNrw(+7qr$\g,7fs!YN@8`lrrKHF_9l1{1/ewexnXVLj6exf}l]|l)dyx=!qFJU:>\_TRen1qnxu`)ej qWd1o)4s4$~,[_B |i"4jBQkXaHd e3$1aP]QV!UFj\Y&QUx2WR ?7j]NOPdS[:  M83q 0<3R9=9ERAVo'<'5:3+(;tf n3j?:Kocgtfv"e|5t0T!n{uE!_^>Q39]ROjI82&61^3;YAj~&a'DYub*< )M96&8|w7q9h`b:j'qzl2%n5=ucp~*A!:(ia-#)d5j/)q* c3*lf e?~ug)46:7noc(%.s52 zi`nptl[?7(9" iaeRlNJiqM+1"l`\*'>|Bt$TVX7w;D: =t"= 'fyh_:iy`ik 8!~unbq"w:7,ookez+> fsh_hoV7.%ρ3cicmE-5S/(ia`n`@_: fsi[zrgC 8p %'rofpc6&8,n`^ns: `\,~koBl kmlHf?st|`f|l ,p9i2mI"qgaSd``?sp]2/*  xmsj!c2?Y* Cu+I0>s2(^mJm; #w@]RZ>&gމ.T^^PET TAl+'Joçፚށ}Ί]O,{0= n'c6"m!h;#ekM;r#QHVsWU1JDEv3V ^f˸6tɒl%T77uem/k;= 7 z"%ap;۱&-=d;,r6`9k>AP, h2}Oa/{ru1snr*QKDNTG0@ySvR1>K3~X>pe+faNmbdm*ob]_s)1%s\;*69'0R;+72uf%I-7|tPZQtƟ5&i?z3=OOZ]L@f4)3gk/xKB7*ye,:0V iyth{6HY83>,7*olxz:#6n+U43W}֪,7C  `m5}:(c/rr j?VBxxPQd:-wvnbz &5#112#bRCu! d}3}dvtn}18WLrP*qN y:)3 69_\єaTnv%-[Qa$uh06%r C^PPV}: JzBtdmy7~I5PvLP*:;X%(ʹ[tj/ -,`xqqpYq!(iu=!{o3?>,P8Y(B rdOns!`:5*qc|VsIUHL} uS C$SU@,f3q4JOK}o VpTBs_)Z%|opzsZqR-Om"4&f n JW\MIRA[kx>oǞNTjd IF =7hpy2|;[^ :U)h,Q@FEOc0XfUP\+H_[eop:t hw:=MFRRaޅ k2$FE|nS'Y r!4-bDONUVmHSnNNjPROHeBQD'&̬@mv_3^=pt9! '% 17W=OmDLRZ atj>yu 2Cft"q <_L qB7k%g=rɌ}(!secl>}p~u[D?la`c&1H-}L/!*0u"␉j"^oT#| (o=yh&f!GP-b%0 Yqc[;^l/)U$h!`a[P6թm%R 5!TR(o'+"1wJs6̑Zl?ZfOxm`LNc_&!hcto[0*.%,VM;;>01\sƚƉNa$%ys< ~bo}3 ȍq'9H'ɡJP]XA\cE'990s`O"㹏(;i (Xb+:dlHp:7(rshi)H }ᖅb6+(`C Fsr w<`x lx$'!+U;>jظXI ~su$~.5'@rn C)Oи_[uhs`]ۂŧ;%v>`o%KYs#Hǟ9#x=y^kF-盢,/$fGu}Bd k9==%(ɕ7ٛ;@ڳ7V'lԙiHh`- M06"y~`f!Hut|/yI kpea.ձ!)gxzYH2v80%A">$1f'jD&2ke+C!=t2ɉ|m/}1qK3BhL V`ŕ0dvhN,|!-9${o:7$wVP&7&=<5B.hvZ)+nƊ !~j$/N[o?l+*yP Qq4a~oxasP2L&l!Jild7,Y}7%m\~r "28k - 4%Kiotd}Ov?c{Ԟkƫ6$?i?"D(,/Ѥ+ gm>>s21*_,;Y366ej`ZZDŽ6*8ce~f)$&2U \؉ l|w4Fur5v'84^dQ:cmDY1_6>/pc5K5OiD.KScgyAe=|1{4v3R0uN6l%Ju^A 1?yvLG_W_+:iX"Y%"%1hX͉3 <1j32_8X+P'rV>-pp,5!zs^&(52$,G~TwvKc36.(l5E2wǝ̈́E$gxr'&p ]#~+^v86{=09c,`)ÒƵ [3@+A#!4G>?E4CxKVZ%" $H&` ~fA ({=lsvRfbnWl -~c`r{|m='c FxfpElcf~tk]a=G$s-