From 7aca779d609ae2a8ec27a9cdee83c7ad1e810175 Mon Sep 17 00:00:00 2001 From: Bart Jablonski Date: Fri, 12 Jan 2024 10:57:51 +0100 Subject: [PATCH 1/2] The BasePlus package [ver. 1.36.0] The BasePlus package [ver. 1.36.0] - small functional update for: %today(), %date(), %time(), and %datetime() macros. - documentation update. --- packages/README.md | 6 +- packages/SHA256_for_packages.txt | 3 + packages/baseplus.md | 8537 ++++++++++++++++-------------- packages/baseplus.zip | Bin 298625 -> 299390 bytes 4 files changed, 4476 insertions(+), 4070 deletions(-) diff --git a/packages/README.md b/packages/README.md index 4dfe4eb..94a0bf1 100644 --- a/packages/README.md +++ b/packages/README.md @@ -86,7 +86,7 @@ SHA256 digest for macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220 --- -- **BasePlus**\[1.35.1\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[1.36.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -112,9 +112,11 @@ format x bool.; %put %date() %time() %datetime(); +%put %date(yymmddn10.) %time(time5.) %datetime(e8601dt.); + %put %monthShift(2023,1,-5); ``` -SHA256 digest for BasePlus: F*BCD89EDF856762EB8E441BC53933774483258453D1F7D74185F8A1861E414B0E +SHA256 digest for BasePlus: F*B9F1B3243FD3956F0B68652C21EA1EBC19F3EB0931774A57FECE1F02A9448108 [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index 7a66478..1e7db74 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,6 @@ +/* 20240112 */ +BasePlus: F*B9F1B3243FD3956F0B68652C21EA1EBC19F3EB0931774A57FECE1F02A9448108 + /* 20231201 */ macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220FF729B283C1AD790 diff --git a/packages/baseplus.md b/packages/baseplus.md index 09d47a1..d03dcdb 100644 --- a/packages/baseplus.md +++ b/packages/baseplus.md @@ -1,87 +1,28 @@ -- [The BasePlus package](#baseplus-package) -- [Content description](#content-description) - * [`%getVars()` macro](#getvars-macro) - * [`%QgetVars()` macro](#qgetvars-macro) - * [`%symdelGlobal()` macro](#symdelglobal-macro) - * [`bool.` format](#bool-format) - * [`boolz.` format](#boolz-format) - * [`ceil.` format](#ceil-format) - * [`floor.` format](#floor-format) - * [`int.` format](#int-format) - * [`arrFill()` subroutine](#arrfill-subroutine) - * [`arrFillC()` subroutine](#arrfillc-subroutine) - * [`arrMissFill()` subroutine](#arrmissfill-subroutine) - * [`arrMissFillC()` subroutine](#arrmissfillc-subroutine) - * [`arrMissToLeft()` subroutine](#arrmisstoleft-subroutine) - * [`arrMissToLeftC()` subroutine](#arrmisstoleftc-subroutine) - * [`arrMissToRight()` subroutine](#arrmisstoright-subroutine) - * [`arrMissToRightC()` subroutine](#arrmisstorightc-subroutine) - * [`catXFc()` function](#catxfc-function) - * [`catXFi()` function](#catxfi-function) - * [`catXFj()` function](#catxfj-function) - * [`catXFn()` function](#catxfn-function) - * [`delDataset()` function](#deldataset-function) - * [`qsortInCbyProcProto()` proto function](#qsortincbyprocproto-proto-function) - * [`fromMissingToNumberBS()` function](#frommissingtonumberbs-function) - * [`fromNumberToMissing()` function](#fromnumbertomissing-function) - * [`quickSort4NotMiss()` subroutine](#quicksort4notmiss-subroutine) - * [`quickSortHash()` subroutine](#quicksorthash-subroutine) - * [`quickSortHashSDDV()` subroutine](#quicksorthashsddv-subroutine) - * [`quickSortLight()` subroutine](#quicksortlight-subroutine) - * [`%dedupListS()` macro](#deduplists-macro) - * [`%dedupListC()` macro](#deduplistc-macro) - * [`%dedupListP()` macro](#deduplistp-macro) - * [`%dedupListX()` macro](#deduplistx-macro) - * [`%QdedupListX()` macro](#qdeduplistx-macro) - * [`brackets.` format](#brackets-format) - * [`semicolon.` format](#semicolon-format) - * [`bracketsC()` function](#bracketsc-function) - * [`bracketsN()` function](#bracketsn-function) - * [`semicolonC()` function](#semicolonc-function) - * [`semicolonN()` function](#semicolonn-function) - * [`%zipEvalf()` macro](#zipevalf-macro) - * [`%QzipEvalf()` macro](#qzipevalf-macro) - * [`%functionExists()` macro](#functionexists-macro) - * [`%RainCloudPlot()` macro](#raincloudplot-macro) - * [`%zipLibrary()` macro](#ziplibrary-macro) - * [`%unzipLibrary()` macro](#unziplibrary-macro) - * [`%zipArch()` macro](#ziparch-macro) - * [`%unzipArch()` macro](#unziparch-macro) - * [`%downloadFilesTo()` macro](#downloadfilesto-macro) - * [`%LDSN()` macro](#ldsn-macro) - * [`%LDsNm()` macro](#ldsnm-macro) - * [`%LVarNm()` macro](#lvarnm-macro) - * [`%LVarNmLab()` macro](#lvarnmlab-macro) - * [`%bpPIPE()` macro](#bppipe-macro) - * [`%dirsAndFiles()` macro](#dirsandfiles-macro) - * [`%repeatTxt()` macro](#repeattxt-macro) - * [`%repList()` macro](#replist-macro) - * [`%intsList()` macro](#intslist-macro) - * [`%letters()` macro](#letters-macro) - * [`%splitDSIntoBlocks()` macro](#splitdsintoblocks-macro) - * [`%splitDSIntoParts()` macro](#splitdsintoparts-macro) - * [`%filePath()` macro](#filepath-macro) - * [`%libPath()` macro](#libpath-macro) - * [`%workPath()` macro](#workpath-macro) - * [`%date()` macro](#date-macro) - * [`%today()` macro](#today-macro) - * [`%time()` macro](#time-macro) - * [`%datetime()` macro](#datetime-macro) - * [`%monthShift()` macro](#monthshift-macro) - * [`%translate()` macro](#translate-macro) - * [`%tranwrd()` macro](#tranwrd-macro) - * [`%findDSwithVarVal()` macro](#finddswithvarval-macro) - * [`%getTitle()` macro](#gettitle-macro) - * [`%mInclude()` macro](#minclude-macro) - * [`%fmt()` macro](#fmt-macro) - * [`%infmt()` macro](#infmt-macro) - - - * [License](#license) +# Documentation for the `BasePlus` package. --- + +### Version information: + + *The BASE SAS plus a bunch of functionalities I am missing in BASE SAS* + +- Package: BasePlus +- Version: 1.36.0 +- Generated: 2024-01-12T10:32:46 +- Author(s): Bartosz Jablonski (yabwon@gmail.com), Quentin McMullen (qmcmullen@gmail.com) +- Maintainer(s): Bartosz Jablonski (yabwon@gmail.com) +- License: MIT +- File SHA256: `F*B9F1B3243FD3956F0B68652C21EA1EBC19F3EB0931774A57FECE1F02A9448108` for this version +- Content SHA256: `C*5A51FA3E5B3A6E9AE2AF37D6604B49B8656D4CC50AFF1F975E546D4419AA0461` for this version + +--- + +# The `BasePlus` package, version: `1.36.0`; + +--- + -# The BasePlus package [ver. 1.35.1] ############################################### +# The BasePlus package [ver. 1.36.0] ############################################### The **BasePlus** package implements useful functions and functionalities I miss in the BASE SAS. @@ -346,7 +287,9 @@ run; **EXAMPLE 23** Date and time one-liners: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put %today() %date() %time() %datetime(); +%put #%today()#%date()#%time()#%datetime()#; + +%put @%today(yymmdd10.)@%date(date11.)@%time(time8.)@%datetime(e8601dt.)@; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **EXAMPLE 24** Months shifting: @@ -412,100 +355,589 @@ https://www.lexjansen.com/wuss/2023/WUSS-2023-Paper-189.zip run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --- - -Package contains: -1. macro bppipe -2. macro deduplistc -3. macro deduplistp -4. macro deduplists -5. macro deduplistx -6. macro dirsandfiles -7. macro functionexists -8. macro getvars -9. macro intslist -10. macro ldsn -11. macro ldsnm -12. macro lvarnm -13. macro lvarnmlab -14. macro qdeduplistx -15. macro qgetvars -16. macro qzipevalf -17. macro raincloudplot -18. macro repeattxt -19. macro splitdsintoblocks -20. macro splitdsintoparts -21. macro symdelglobal -22. macro unziparch -23. macro unziplibrary -24. macro ziparch -25. macro zipevalf -26. macro ziplibrary -27. format bool -28. format boolz -29. format ceil -30. format floor -31. format int -32. functions arrfill -33. functions arrfillc -34. functions arrmissfill -35. functions arrmissfillc -36. functions arrmisstoleft -37. functions arrmisstoleftc -38. functions arrmisstoright -39. functions arrmisstorightc -40. functions bracketsc -41. functions bracketsn -42. functions catxfc -43. functions catxfi -44. functions catxfj -45. functions catxfn -46. functions deldataset -47. functions semicolonc -48. functions semicolonn -49. format brackets -50. format semicolon -51. proto qsortincbyprocproto -52. functions frommissingtonumberbs -53. functions fromnumbertomissing -54. functions quicksort4notmiss -55. functions quicksorthash -56. functions quicksorthashsddv -57. functions quicksortlight -58. macro date -59. macro datetime -60. macro downloadfilesto -61. macro filepath -62. macro finddswithvarval -63. macro fmt -64. macro gettitle -65. macro infmt -66. macro letters -67. macro libpath -68. macro minclude -69. macro monthshift -70. macro replist -71. macro time -72. macro today -73. macro translate -74. macro tranwrd -75. macro workpath - - - -Package contains additional content, run: %loadPackageAddCnt(BasePlus) to load it -or look for the baseplus_AdditionalContent directory in the Packages fileref + +--- + + +--- + + +--- + +Package contains additional content, run: `%loadPackageAddCnt(BasePlus)` to load it +or look for the `baseplus_AdditionalContent` directory in the `packages` fileref localization (only if additional content was deployed during the installation process). + +-------------------------------------------------------------------- + +*SAS package generated by SAS Package Framework, version `20231210`* + +-------------------------------------------------------------------- + +# The `BasePlus` package content +The `BasePlus` package consists of the following content: +1. [`%bppipe()` macro ](#bppipe-macro-1 ) +2. [`%deduplistc()` macro ](#deduplistc-macro-2 ) +3. [`%deduplistp()` macro ](#deduplistp-macro-3 ) +4. [`%deduplists()` macro ](#deduplists-macro-4 ) +5. [`%deduplistx()` macro ](#deduplistx-macro-5 ) +6. [`%dirsandfiles()` macro ](#dirsandfiles-macro-6 ) +7. [`%functionexists()` macro ](#functionexists-macro-7 ) +8. [`%getvars()` macro ](#getvars-macro-8 ) +9. [`%intslist()` macro ](#intslist-macro-9 ) +10. [`%ldsn()` macro ](#ldsn-macro-10 ) +11. [`%ldsnm()` macro ](#ldsnm-macro-11 ) +12. [`%lvarnm()` macro ](#lvarnm-macro-12 ) +13. [`%lvarnmlab()` macro ](#lvarnmlab-macro-13 ) +14. [`%qdeduplistx()` macro ](#qdeduplistx-macro-14 ) +15. [`%qgetvars()` macro ](#qgetvars-macro-15 ) +16. [`%qzipevalf()` macro ](#qzipevalf-macro-16 ) +17. [`%raincloudplot()` macro ](#raincloudplot-macro-17 ) +18. [`%repeattxt()` macro ](#repeattxt-macro-18 ) +19. [`%splitdsintoblocks()` macro ](#splitdsintoblocks-macro-19 ) +20. [`%splitdsintoparts()` macro ](#splitdsintoparts-macro-20 ) +21. [`%symdelglobal()` macro ](#symdelglobal-macro-21 ) +22. [`%unziparch()` macro ](#unziparch-macro-22 ) +23. [`%unziplibrary()` macro ](#unziplibrary-macro-23 ) +24. [`%ziparch()` macro ](#ziparch-macro-24 ) +25. [`%zipevalf()` macro ](#zipevalf-macro-25 ) +26. [`%ziplibrary()` macro ](#ziplibrary-macro-26 ) +27. [`$bool.` format/informat ](#bool-format-27 ) +28. [`$boolz.` format/informat ](#boolz-format-28 ) +29. [`$ceil.` format/informat ](#ceil-format-29 ) +30. [`$floor.` format/informat ](#floor-format-30 ) +31. [`$int.` format/informat ](#int-format-31 ) +32. [`arrfill()` function ](#arrfill-functions-32 ) +33. [`arrfillc()` function ](#arrfillc-functions-33 ) +34. [`arrmissfill()` function ](#arrmissfill-functions-34 ) +35. [`arrmissfillc()` function ](#arrmissfillc-functions-35 ) +36. [`arrmisstoleft()` function ](#arrmisstoleft-functions-36 ) +37. [`arrmisstoleftc()` function ](#arrmisstoleftc-functions-37 ) +38. [`arrmisstoright()` function ](#arrmisstoright-functions-38 ) +39. [`arrmisstorightc()` function ](#arrmisstorightc-functions-39 ) +40. [`bracketsc()` function ](#bracketsc-functions-40 ) +41. [`bracketsn()` function ](#bracketsn-functions-41 ) +42. [`catxfc()` function ](#catxfc-functions-42 ) +43. [`catxfi()` function ](#catxfi-functions-43 ) +44. [`catxfj()` function ](#catxfj-functions-44 ) +45. [`catxfn()` function ](#catxfn-functions-45 ) +46. [`deldataset()` function ](#deldataset-functions-46 ) +47. [`semicolonc()` function ](#semicolonc-functions-47 ) +48. [`semicolonn()` function ](#semicolonn-functions-48 ) +49. [`$brackets.` format/informat ](#brackets-format-49 ) +50. [`$semicolon.` format/informat ](#semicolon-format-50 ) +51. [`qsortincbyprocproto()` proto ](#qsortincbyprocproto-proto-51 ) +52. [`frommissingtonumberbs()` function ](#frommissingtonumberbs-functions-52 ) +53. [`fromnumbertomissing()` function ](#fromnumbertomissing-functions-53 ) +54. [`quicksort4notmiss()` function ](#quicksort4notmiss-functions-54 ) +55. [`quicksorthash()` function ](#quicksorthash-functions-55 ) +56. [`quicksorthashsddv()` function ](#quicksorthashsddv-functions-56 ) +57. [`quicksortlight()` function ](#quicksortlight-functions-57 ) +58. [`%date()` macro ](#date-macro-58 ) +59. [`%datetime()` macro ](#datetime-macro-59 ) +60. [`%downloadfilesto()` macro ](#downloadfilesto-macro-60 ) +61. [`%filepath()` macro ](#filepath-macro-61 ) +62. [`%finddswithvarval()` macro ](#finddswithvarval-macro-62 ) +63. [`%fmt()` macro ](#fmt-macro-63 ) +64. [`%gettitle()` macro ](#gettitle-macro-64 ) +65. [`%infmt()` macro ](#infmt-macro-65 ) +66. [`%letters()` macro ](#letters-macro-66 ) +67. [`%libpath()` macro ](#libpath-macro-67 ) +68. [`%minclude()` macro ](#minclude-macro-68 ) +69. [`%monthshift()` macro ](#monthshift-macro-69 ) +70. [`%replist()` macro ](#replist-macro-70 ) +71. [`%time()` macro ](#time-macro-71 ) +72. [`%today()` macro ](#today-macro-72 ) +73. [`%translate()` macro ](#translate-macro-73 ) +74. [`%tranwrd()` macro ](#tranwrd-macro-74 ) +75. [`%workpath()` macro ](#workpath-macro-75 ) + + +93. [License note](#license) + +--- + +## `%bppipe()` macro ###### + +## >>> `%bpPIPE()` macro: <<< ####################### -* SAS package generated by generatePackage, version 20231107 * +The bpPIPE() [Base Plus PIPE] macro executes OS command +and print to the log output of the execution. -The SHA256 hash digest for package BasePlus: -`F*BCD89EDF856762EB8E441BC53933774483258453D1F7D74185F8A1861E414B0E` +Under the hood it uses `_` filename reference to PIPE device. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%bpPIPE( ) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +* **NO Arguments** - Everything inside brackets is treated as an OS command. --- -# Content description ############################################################################################ + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** List, to the log, content of D and C drives: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %bpPIPE(D: & dir & dir "C:\") +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** List, to the log, content of `home` directory: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %bpPIPE(ls -halt ~/) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%deduplistc()` macro ###### + +## >>> `%dedupListC()` macro: <<< ####################### + +The `%dedupListC()` macro deletes duplicated values from +a *COMMA separated* list of values. List, including separators, +can be no longer than a value carried by a single macrovariable. + +Returned value is *unquoted*. Leading and trailing spaces are ignored. + +The `%dedupListC()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%dedupListC( + list,of,comma,separated,values +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `list` - A list of *comma separated* values. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Basic use-case one. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put *%dedupListC(a,b,c,b,c)*; + + %put *%dedupListC(a,b c,b c)*; + + %put *%dedupListC(%str(a,b,c,b,c))*; + + %put *%dedupListC(%str(a),%str(b),%str(c),b,c)*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Leading and trailing spaces are ignored. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put *%dedupListC( a , b b , c , b b, c )*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 3.** Macro variable as an argument. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let list = 4, 5, 6, 1, 2, 3, 1, 2, 3, 4, 5, 6; + %put *%dedupListC(&list.)*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%deduplistp()` macro ###### + +## >>> `%dedupListP()` macro: <<< ####################### + +The `%dedupListP()` macro deletes duplicated values from +a *PIPE(`|`) separated* list of values. List, including separators, +can be no longer than a value carried by a single macrovariable. + +Returned value is *unquoted*. Leading and trailing spaces are ignored. + +The `%dedupListP()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%dedupListP( + list|of|pipe|separated|values +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `list` - A list of *pipe separated* values. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Basic use-case one. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put *%dedupListP(a|b|c|b|c)*; + + %put *%dedupListP(a|b c|b c)*; + + %put *%dedupListP(%str(a|b|c|b|c))*; + + %put *%dedupListP(%str(a)|%str(b)|%str(c)|b|c)*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Leading and trailing spaces are ignored. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put *%dedupListP( a | b b | c | b b| c )*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 3.** Macro variable as an argument. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let list = 4|5|6|1|2|3|1|2|3|4|5|6; + %put *%dedupListP(&list.)*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%deduplists()` macro ###### + +## >>> `%dedupListS()` macro: <<< ####################### + +The `%dedupListS()` macro deletes duplicated values from +a *SPACE separated* list of values. List, including separators, +can be no longer than a value carried by a single macrovariable. + +Returned value is *unquoted*. + +The `%dedupListS()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%dedupListS( + list of space separated values +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `list` - A list of *space separated* values. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Basic use-case one. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put *%dedupListS(a b c b c)*; + + %put *%dedupListS(a b,c b,c)*; + + %put *%dedupListS(%str(a b c b c))*; + + %put *%dedupListS(%str(a) %str(b) %str(c) b c)*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Macro variable as an argument. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let list = 4 5 6 1 2 3 1 2 3 4 5 6; + %put *%dedupListS(&list.)*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%deduplistx()` macro ###### + +## >>> `%dedupListX()` macro: <<< ####################### + +The `%dedupListX()` macro deletes duplicated values from +a *X separated* list of values, where the `X` represents +a *single character* separator. List, including separators, +can be no longer than a value carried by a single macrovariable. + +**Caution.** The value of `X` *has to be* in **the first** byte of the list, + just after the opening bracket, i.e. `(X...)`. + +Returned value is *unquoted*. Leading and trailing spaces are ignored. + +The `%dedupListX()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%dedupListX( +XlistXofXxXseparatedXvalues +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `list` - A list of *X separated* values. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Basic use-case one. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put *%dedupListX(|a|b|c|b|c)*; + + %put *%dedupListX( a b c b c)*; + + %put *%dedupListX(,a,b,c,b,c)*; + + %put *%dedupListX(XaXbXcXbXc)*; + + %put *%dedupListX(/a/b/c/b/c)*; + + data _null_; + x = "%dedupListX(%str(;a;b;c;b;c))"; + put x=; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Leading and trailing spaces are ignored. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put *%dedupListX(| a | b.b | c | b.b| c )*; + + %put *%dedupListX(. a . b b . c . b b. c )*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 3.** Macro variable as an argument. + Delete duplicated values from a list. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let list = 4$5.5$6$1$2$3$1$2$3$4$5.5$6; + %put *%dedupListX($&list.)*; + + %let list = 4$ 5.5$ 6$ 1$ 2$ 3$ 1$ 2$ 3$ 4$ 5.5$ 6$; + %put *%dedupListX( &list.)*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%dirsandfiles()` macro ###### + +## >>> `%dirsAndFiles()` macro: <<< ####################### + +The `%dirsAndFiles()` macro allows to extract info about all files +and subdirectories of a given `root` directory. + +The extracted info may be just a list of files and subdirectories or, if +the `details=` parameter is set to 1, additional operating system information +is extracted (information is OSS dependent and gives different results for Linux +and for Windows) + +The extracted info can be narrowed down to files (`keepFiles=1`) or to +directories (`keepDirs=1`) if need be. + +The extracted info can be presented in wide or long format (`longFormat=1`). + +The extracted info for files can be narrowed down to only files with particular +extension, for example: `fileExt=sas7bdat`. + +The extracted info can be narrowed down maximal path depth +by setting up the `maxDepth=` parameter. + +See examples below for the details. + +### REFERENCES: ################################################################### + +The macro is based on Kurt Bremser's "*Talking to Your Host*" article +presented at WUSS 2022 conference. + +The article is available [here](https://communities.sas.com/t5/SAS-User-Groups-Library/WUSS-Presentation-Talking-to-Your-Host/ta-p/838344) +and also as an additional content of this package. +The paper was awarded the "Best Paper Award - Programming". + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles( + root + <,ODS=> + <,details=> + <,keepDirs=> + <,keepFiles=> + <,longFormat=> + <,fileExt=> + <,maxDepth=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `root` - *Required*, path to be searched + for information. + +* `ODS=work.dirsAndFilesInfo` - *Optional*, output data set, + name of a dataset to store information. + +* `details=0` - *Optional*, indicates if detailed info + will be collected, `1` = yes, `0` = no. + +* `keepDirs=1` - *Optional*, indicates if directories info + will be collected, `1` = yes, `0` = no. + +* `keepFiles=1` - *Optional*, indicates if files info + will be collected, `1` = yes, `0` = no. + +* `longFormat=0` - *Optional*, indicates if output be + in long format, `1` = yes, `0` = no. + +* `fileExt=` - *Optional*, if not missing then indicates + file extension to filter out results. + +* `maxDepth=0` - *Optional*, if not zero then indicates + maximum depth of search in the root path. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Get list of files and directories: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(C:\SAS_WORK\,ODS=work.result1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Get detailed info: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(C:\SAS_WORK\,ODS=work.result2,details=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Get only files info: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(C:\SAS_WORK\,ODS=work.result3,keepDirs=0) + +%dirsAndFiles(C:\SAS_WORK\,ODS=work.result5,keepDirs=0,details=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** Get only directories info: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(C:\SAS_WORK\,ODS=work.result4,keepFiles=0) + +%dirsAndFiles(C:\SAS_WORK\,ODS=work.result6,keepFiles=0,details=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 5.** Filter out by `sas` extension: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(~/,ODS=work.result7,fileExt=sas) + +%dirsAndFiles(~/,ODS=work.result8,fileExt=sas,details=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 6.** Keep result in the long format: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(~/,ODS=work.result9,details=1,longFormat=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 7.** Get info for maximum depth of 2: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(C:\SAS_WORK\,ODS=work.result10,details=1,maxDepth=2) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 8.** How locked/unavailable files are handled: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(%sysfunc(pathname(WORK)),ODS=work.result11,details=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 9.** Not existing directory: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%dirsAndFiles(%sysfunc(pathname(WORK))/noSuchDir,ODS=work.result12,details=1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +--- + +## `%functionexists()` macro ###### + +## >>> `%functionExists()` macro: <<< ####################### + +The functionExists() macro function tests +if given funcion exists in the SAS session. +The `sashelp.vfunc` view is used. + +See examples below for the details. + +The `%functionExists()` macro executes like a pure macro code. + +The function is a result of cooperation with [Allan Bowe](https://www.linkedin.com/in/allanbowe/) + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%functionExists( + funName +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `funName` - *Required*, the name of the function + existence of which you are testing. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Test if function exists: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %functionExists(HASHING); + + %put %functionExists(COSsinLOG); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%getvars()` macro ###### + ## >>> `%getVars()` macro: <<< ####################### The getVars() and QgetVars() macro functions @@ -564,6 +996,7 @@ The basic syntax is the following, the `<...>` means optional parameters: an Explicit & Radical Refuse Of Run (aka ERROR). + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** A list of all variables from the @@ -793,1930 +1226,543 @@ run; --- -## >>> `%QgetVars()` macro: <<< ####################### + +--- + +## `%intslist()` macro ###### + +## >>> `%intsList()` macro: <<< ####################### -The getVars() and QgetVars() macro functions -allow to extract variables names form a dataset -according to a given pattern into a list. +The intsList() macro function allows to print a list of +integers starting from `start` up to `end` incremented by `by` +and separated by `sep=`. -The getVars() returns unquoted value [by %unquote()]. -The QgetVars() returns quoted value [by %superq()]. +If `start`, `end` or `by` are non-integers the are converted to integers. -The `%QgetVars()` macro executes like a pure macro code. +See examples below for the details. + +The `%intsList()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%QgetVars( - ds - <,sep=> - <,pattern=> - <,varRange=> - <,quote=> +%intsList( + start + <,end> + <,by> + <,sep=> ) ~~~~~~~~~~~~~~~~~~~~~~~ **Arguments description**: -1. `ds` - *Required*, the name of the dataset from - which variables are to be taken. +1. `start` - *Required*, the first value of the list. + If `end` is missing then the list is generated + from 1 to `start` by 1. -* `sep = %str( )` - *Optional*, default value `%str( )`, - a variables separator on the created list. +2. `end` - *Required/Optional*, the last value of the list. -* `pattern = .*` - *Optional*, default value `.*` (i.e. any text), - a variable name regexp pattern, case INSENSITIVE! +3. `by` - *Required/Optional*, the increment of the list. + If missing then set to `1`. + *Cannot* be equal to `0`. -* `varRange = _all_` - *Optional*, default value `_all_`, - a named range list of variables. - -* `quote =` - *Optional*, default value is blank, a quotation - symbol to be used around values. - -### EXAMPLES AND USECASES: #################################################### - -See examples in `%getVars()` help for the details. +* `s = %str( )` - *Optional*, it is a separator between + elements of the list. Default value is space. --- -## >>> `%symdelGlobal()` macro: <<< ####################### + +### EXAMPLES AND USECASES: #################################################### -The `%symdelGlobal()` macro deletes all global macrovariables -created by the user. The only exceptions are read only variables -and variables the one which starts with SYS, AF, or FSP. -In that case a warning is printed in the log. +**EXAMPLE 1.** Simple list of integers from 1 to 10 by 1: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %intsList(10); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -One temporary global macrovariable `________________98_76_54_32_10_` -and a dataset, in `work` library, named `_%sysfunc(datetime(),hex7.)` -are created and deleted during the process. -The `%symdelGlobal()` macro executes like a pure macro code. +**EXAMPLE 2.** Ten copies of `sashelp.class` in `test11` to `test20`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data + %zipEvalf(test, %intsList(11,20)) + ; + set sashelp.class; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Non-integers are converted to integers, the list is `1 3 5`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %intsList(1.1,5.2,2.3); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** A list with a separator: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %intsList(1,5,2,sep=+); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%ldsn()` macro ###### + +## >>> `%LDSN()` macro: <<< ####################### + +The LDSN (Long DataSet Names) macro function +allows to use an "arbitrary" text string to name a dataset. + +The LDSN macro has some limitation described below, to overcome them +another macro, with different name: LDSNM (Long DataSet Names Modified) +was created. See its description to learn how to use it. + +--- + +The idea for the macro came from the following story: + +Good friend of mine, who didn't use SAS for quite some time, +told me that he lost a few hours for debugging because +he forgot that the SAS dataset name limitation is 32 bytes. + +I replied that it shouldn't be a problem to do a workaround +for this inconvenience with a macro and the `MD5()` hashing function. + +I said: *The macro should take an "arbitrary string" for a dataset +name, convert it, with help of `MD5()`, to a hash digest, and +create a dataset with an "artificial" `hex16.` formated name.* + +Starting with something like this: + +~~~~~~~~~~~~~~~~~~~~~~~sas +data %LDSN(work. peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s (drop = sex rename=(name=first_name) where = (age in (12,13,14))) ); + set sashelp.class; +run; +~~~~~~~~~~~~~~~~~~~~~~~ + +the macro would do: + +~~~~~~~~~~~~~~~~~~~~~~~sas +%sysfunc(MD5(peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s), hex16.) +~~~~~~~~~~~~~~~~~~~~~~~ + +and (under the hood) return and execute the following code: + +~~~~~~~~~~~~~~~~~~~~~~~sas +data work.DSN_41D599EF51FBA58_(drop = sex rename=(name=first_name) where = (age in (12,13,14))) ; + set sashelp.class; +run; +~~~~~~~~~~~~~~~~~~~~~~~ + +Also in the next data step user should be able to do: + +~~~~~~~~~~~~~~~~~~~~~~~sas +data my_next_data_step; + set %DSN(work. peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s); +run; +~~~~~~~~~~~~~~~~~~~~~~~ + +and work without the "dataset-name-length-limitation" issue. + +--- + +See examples below for the details. + +The `%LDSN()` macro executes like a pure macro code. + +**Known "Limitations":** + +- dataset name _cannot_ contain dots (`.`) since they are used as separators! + +- dataset name _cannot_ contain round brackets(`(` and `)`) since they are used as separators + (but `[]` and `{}` are allowed)! + +- dataset name _cannot_ contain unpaired quotes (`'` and `"`), + text: `a "hot-dog"` is ok, but `John's dog` is not! + +**Behaviour:** + +- dataset name text is *converted to upcase* + +- dataset name text *leading and trailing spaces are ignored*, + e.g. the following will give the same hash digest: + `%ldsn(work.test)`, `%ldsn( work.test)`, `%ldsn(work.test )`, + `%ldsn(work .test)`, `%ldsn(work. test)`, `%ldsn(work . test)`. + +- macro calls of the form: + `data %LDSN(); run;`, `data %LDSN( ); run;`, `data %LDSN( . ); run;` or even + `data %LDSN( . (keep=x)); run;` are resolved to empty string, so the result is + equivalent to `data; run;` ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%symdelGlobal( - info +%LDSN( + arbitrary text string (in line with limitations) ) ~~~~~~~~~~~~~~~~~~~~~~~ -**Arguments description**: +The text string is concider as *"fully qualified dataset name"*, i.e. macro +assumes it may contain library as prefix and data set options as sufix. +See the `%LDsNm()` macro for comparison. -1. `info` - *Optional*, default value should be empty, - if set to `NOINFO` or `QUIET` then infos and - warnings about variables deletion are suspended. +--- ### EXAMPLES AND USECASES: #################################################### -**EXAMPLE 1.** Basic use-case one. - Delete global macrovariables, info notes - and warnings are printed in the log. - +**EXAMPLE 1.** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let a = 1; - %let b = 2; - %let c = 3; - %let sys_my_var = 11; - %let af_my_var = 22; - %let fsp_my_var = 33; - %global / readonly read_only_x = 1234567890; - - %put _user_; - - %symdelGlobal(); - - %put _user_; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 2.** Basic use-case two. - Delete global macrovariables in quite mode - No info notes and warnings are printed in the log. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let a = 1; - %let b = 2; - %let c = 3; - %let sys_my_var = 11; - %let af_my_var = 22; - %let fsp_my_var = 33; - %global / readonly read_only_x = 1234567890; - - %put _user_; - %put *%symdelGlobal(NOINFO)*; - %put _user_; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ---- - -## >>> `bool.` format: <<< ####################### - -The **bool** format returns: -*zero* for 0 or missing, -*one* for other values. - -### EXAMPLES AND USECASES: #################################################### - -It allows for a %sysevalf()'ish -conversion-type [i.e. `%sysevalf(1.7 & 4.2, boolean)`] -inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), bool.)`] - ---- - -## >>> `boolz.` format: <<< ####################### - -The **boolz** format returns: -*zero* for 0 or missing, -*one* for other values. - -*Fuzz* value is 0. - -### EXAMPLES AND USECASES: #################################################### - -It allows for a %sysevalf()'ish -conversion-type [i.e. `%sysevalf(1.7 & 4.2, boolean)`] -inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), boolz.)`] - ---- - -## >>> `ceil.` format: <<< ####################### - -The **ceil** format is a "wrapper" for the `ceil()` function. - -### EXAMPLES AND USECASES: #################################################### - -It allows for a %sysevalf()'ish -conversion-type [i.e. `%sysevalf(1.7 + 4.2, ceil)`] -inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), ceil.)`] - ---- - -## >>> `floor.` format: <<< ####################### - -The **floor** format is a "wrapper" for the `floor()` function. - -### EXAMPLES AND USECASES: #################################################### - -It allows for a %sysevalf()'ish -conversion-type [i.e. `%sysevalf(1.7 + 4.2, floor)`] -inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), floor.)`] - ---- - -## >>> `int.` format: <<< ####################### - -The **int** format is a "wrapper" for the `int()` function. - -### EXAMPLES AND USECASES: #################################################### - -It allows for a %sysevalf()'ish -conversion-type [i.e. `%sysevalf(1.7 + 4.2, integer)`] -inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), int.)`] - ---- - -## >>> `arrFill()` subroutine: <<< ####################### - -The **arrFill()** subroutine is a wrapper -for the Call Fillmatrix() [a special FCMP subroutine]. - -A numeric array is filled with selected numeric value, e.g. - -for array `A = [. . . .]` the subroutine -`call arrFill(42, A)` returns `A = [42 42 42 42]` - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -call arrFill(N ,A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `N` - Numeric value. - -2. `A` - Numeric array. - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; - array X[*] a b c; - - put "before: " (_all_) (=); - call arrFill(42, X); - put "after: " (_all_) (=); +options nomprint source nomlogic nosymbolgen ls = max ps = max; +data %LDSN( work. peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s (drop = sex rename=(name=first_name) where = (age in (12,13,14))) ); + set sashelp.class; run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +proc print data = %LDSN( work. peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ); +run; + +data MyNextDataset; + set %LDSN( work. peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ); + where age > 12; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- -## >>> `arrFillC()` subroutine: <<< ####################### - -The **arrFillC()** subroutine fills -a character array with selected character value, e.g. - -for array `A = [" ", " ", " "]` the subroutine -`call arrFillC("B", A)` returns `A = ["B", "B", "B"]` - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -call arrFillC(C ,A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `C` - Character value. - -2. `A` - Character array. - + +--- -### EXAMPLES AND USECASES: #################################################### +## `%ldsnm()` macro ###### + +## >>> `%LDSNM()` macro: <<< ####################### -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; - array X[*] $ a b c; +The LDSNM (Long DataSet Names Modified) macro function +allows to use an "arbitrary" text string to name a dataset. - put "before: " (_all_) (=); - call arrFillC("ABC", X); - put "after: " (_all_) (=); +The LDSN macro had some limitation (see its documentation), to overcome them +another `%LDSNM()` (Long DataSet Names Modified) macro was created. -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The main idea behind the `%LDSNM()` is the same as for `%LDSN()` - see the description there. --- -## >>> `arrMissFill()` subroutine: <<< ####################### +The `%LDSNM()` works differently then the `%LDSN()`. -The **arrMissFill()** subroutine fills -all missing values (i.e. less or equal than `.Z`) -of a numeric array with selected numeric value, e.g. +The `%LDSN()` assumed that *both* libname and dataset options *could* +be passed as elements in macro argument, e.g. -for array `A = [1 . . 4]` the subroutine -`call arrMissFill(42, A)` returns `A = [1 42 42 4]` - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -call arrMissFill(N ,A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `N` - Numeric value. - -2. `A` - Numeric array. - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data have; - input a b c; -cards4; -1 . 3 -. 2 . -. . 3 -;;;; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data %LDSN( WORK.peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s (drop = sex) ); + set sashelp.class; run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -data _null_; - set have ; - array X[*] a b c; - - put "before: " (_all_) (=); - call arrMissFill(42, X); - put "after: " (_all_) (=); +The `%LDSNM()`, in contrary, assumes that both libname and dataset options are +passed **outside** the macro, i.e. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data WORK.%LDSNM( peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s ) (drop = sex); + set sashelp.class; run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ---- +This approach reduces some limitations the LDSN has. -## >>> `arrMissFillC()` subroutine: <<< ####################### +The **additional** feature of the `%LDSNM()` is that when the macro is called +a global macrovariable, which name is the same as hashed dataset name, is created. +The macrovariable value is the text of the argument of the macro. For example +the following macro call: -The **arrMissFillC()** subroutine fills -all missing values of a character array -with selected character value, e.g. - -for array `A = ["A", " ", "C"]` the subroutine -`call arrMissFillC("B", A)` returns `A = ["A", "B", "C"]` - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -call arrMissFillC(C, A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `C` - Character value. - -2. `A` - Character array. - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data have; - infile cards dsd dlm="," missover; - input (a b c) (: $ 1.); -cards4; -A, ,C - ,B, - , ,C -;;;; -run; - -data _null_; - set have ; - array X[*] $ a b c; - - put "before: " (_all_) (=); - call arrMissFillC("X", X); - put "after: " (_all_) (=); - -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `arrMissToLeft()` subroutine: <<< ####################### - -The **arrMissToLeft()** subroutine shifts -all non-missing (i.e. greater than `.Z`) -numeric elements to the right side of an array -and missing values to the left, e.g. - -for array `A = [1 . 2 . 3]` the subroutine -`call arrMissToLeft(A)` returns `A = [. . 1 2 3]` - -All missing values are replaced with the dot (`.`) - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -call arrMissToLeft(A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `A` - Numeric array. - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data have; - input a b c; -cards4; -1 . 3 -. 2 . -. . 3 -;;;; -run; - -data _null_; - set have ; - array X[*] a b c; - - put "before: " (_all_) (=); - call arrMissToLeft(X); - put "after: " (_all_) (=); - -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `arrMissToLeftC()` subroutine: <<< ####################### - -The **arrMissToLeftC()** subroutine shifts -all non-missing (i.e. different than empty string) -character elements to the right side of an array -and all missing values to the left, e.g. - -for array `A = ["A", " ", "B", " ", "C"]` the subroutine -`call arrMissToLeftC(A)` returns `A = [" ", " ", "A", "B", "C"]` - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -call arrMissToLeftC(A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `A` - Character array. - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data have; - infile cards dsd dlm="," missover; - input (a b c) (: $ 1.); -cards4; -A, ,C - ,B, - , ,C -;;;; -run; - -data _null_; - set have ; - array X[*] $ a b c; - - put "before: " (_all_) (=); - call arrMissToLeftC(X); - put "after: " (_all_) (=); - -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `arrMissToRight()` subroutine: <<< ####################### - -The **arrMissToRight()** subroutine shifts -all non-missing (i.e. greater than `.Z`) -numeric elements to the left side of an array -and missing values to the right, e.g. - -for array `A = [1 . 2 . 3]` the subroutine -`call arrMissToRight(A)` returns `A = [1 2 3 . .]` - -All missing values are replaced with the dot (`.`) - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -call arrMissToRight(A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `A` - Numeric array. - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data have; - input a b c; -cards4; -1 . 3 -. 2 . -. . 3 -;;;; -run; - -data _null_; - set have ; - array X[*] a b c; - - put "before: " (_all_) (=); - call arrMissToRight(X); - put "after: " (_all_) (=); - -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `arrMissToRightC()` subroutine: <<< ####################### - -The **arrMissToRightC()** subroutine shifts -all non-missing (i.e. different than empty string) -character elements to the left side of an array -and missing values to the right, e.g. - -for array `A = ["A", " ", "B", " ", "C"]` the subroutine -`call arrMissToRightC(A)` returns `A = ["A", "B", "C", " ", " "]` - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -call arrMissToRightC(A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `A` - Character array. - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data have; - infile cards dsd dlm="," missover; - input (a b c) (: $ 1.); -cards4; -A, ,C - ,B, - , ,C -;;;; -run; - -data _null_; - set have ; - array X[*] $ a b c; - - put "before: " (_all_) (=); - call arrMissToRightC(X); - put "after: " (_all_) (=); - -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `catXFc()` function: <<< ####################### - -The **catXFc()** function is a wrapper -of the `catX()` function but with ability -to format character values. - -For array `A = ["a", " ", "c"]` the -`catXFc("upcase.", "*", A)` returns `"A*C"`. - -If format does not handle nulls they are ignored. - -*Caution!* Array parameters to function calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -catXFc(format, delimiter, A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `format` - A name of the *character* format to be used. - -2. `delimiter` - A delimiter string to be used. - -3. `A` - Character array - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; - t = "t"; - u = " "; - v = "v"; - - array b[*] t u v; - - length s $ 17; - s = catXFc("upcase.", "*", B); - put (_all_) (=); -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `catXFi()` function: <<< ####################### - -The **catXFi()** function is a wrapper -of the `catX()` function but with ability -to format numeric values but -IGNORES missing values (i.e. `._`, `.`, `.a`, ..., `.z`). - -For array `A = [0, ., 2]` the -`catXFi("date9.", "#", A)` returns -`"01JAN1960#03JAN1960"` - -*Caution!* Array parameters to function calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -catXFi(format, delimiter, A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `format` - A name of the *numeric* format to be used. - -2. `delimiter` - A delimiter string to be used. - -3. `A` - Numeric array - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; - x = 1; - y = .; - z = 3; - - array a[*] x y z; - - length s $ 17; - s = catXFi("z5.", "#", A); - put (_all_) (=); -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `catXFj()` function: <<< ####################### - -The **catXFj()** function is a wrapper -of the catX() function but with ability -to format character values. - -For array `A = ["a", " ", "c"]` the -`catXFj("upcase.", "*", A)` returns `"A**C"` - -If format does not handle nulls they are -printed as an empty string. - -*Caution!* Array parameters to function calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -catXFj(format, delimiter, A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `format` - A name of the *character* format to be used. - -2. `delimiter` - A delimiter string to be used. - -3. `A` - Character array - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; - t = "t"; - u = " "; - v = "v"; - - array b[*] t u v; - - length s $ 17; - s = catXFj("upcase.", "*", B); - put (_all_) (=); -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `catXFn()` function: <<< ####################### - -The **catXFn()** function is a wrapper -of the `catX()` function but with ability -to format numeric values. - -For array `A = [0, 1, 2]` the -`catXFn("date9.", "#", A)` returns -`"01JAN1960#02JAN1960#03JAN1960"` - -*Caution!* Array parameters to function calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -catXFn(format, delimiter, A) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `format` - A name of the *numeric* format to be used. - -2. `delimiter` - A delimiter string to be used. - -3. `A` - Numeric array - - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; - x = 1; - y = .; - z = 3; - - array a[*] x y z; - - length s $ 17; - s = catXFn("z5.", "#", A); - put (_all_) (=); -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `delDataset()` function: <<< ####################### - -The **delDataset()** function is a "wrapper" -for the `Fdelete()` function. -`delDataset()` function uses a text string with -a dataset name as an argument. - -Function checks for `*.sas7bdat`, `*.sas7bndx`, -and `*.sas7bvew` files and delete them. -Return code of 0 means dataset was deleted. - -For compound library files are -deleted from _ALL_ locations! - - -*Note:* -Currently only the BASE SAS engine datasets/views are deleted. - -Tested on Windows and Linux. Not tested on Z/OS. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -delDataset(lbds_) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `lbds_` - *Required*, character argument containing - name of the dataset/view to be deleted. - The `_last_` special name is honored. - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data TEST1 TEST2(index=(x)); - x = 17; - run; - - data TEST3 / view=TEST3; - set test1; - run; - - data _null_; - p = delDataset("WORK.TEST1"); - put p=; - - p = delDataset("TEST2"); - put p=; - - p = delDataset("WORK.TEST3"); - put p=; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 2.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data TEST4; - x=42; - run; - data _null_; - p = delDataset("_LAST_"); - put p=; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 3.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - options dlcreatedir; - libname user "%sysfunc(pathname(work))/user"; - - data TEST5; - x=42; - run; - - data _null_; - p = delDataset("test5"); - put p=; - run; - - libname user clear; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 4.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data TEST6; - x=42; - run; - - %put *%sysfunc(delDataset(test6))*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 5.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - options dlcreatedir; - libname L1 "%sysfunc(pathname(work))/L)1"; - libname L2 "%sysfunc(pathname(work))/L(2"; - libname L3 "%sysfunc(pathname(work))/L'3"; - - data L1.TEST7 L2.TEST7 L3.TEST7; - x=42; - run; - - libname L12 ("%sysfunc(pathname(work))/L(1" "%sysfunc(pathname(work))/L)2"); - libname L1L2 (L2 L3); - - %put *%sysfunc(delDataset(L12.test7))*; - %put *%sysfunc(delDataset(L1L2.test7))*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `qsortInCbyProcProto()` proto function: <<< ####################### - -The **qsortInCbyProcProto()** is external *C* function, -this is the implementation of the *Quick Sort* algorithm. - -The function is used **internally** by -functions in the *BasePlus* package. - -Asumptions: -- smaller subarray is sorted first, -- subarrays of *size < 11* are sorted by *insertion sort*, -- pivot is selected as median of low index value, - high index value, and (low+high)/2 index value. - -`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!`
-`!CAUTION! Sorted array CANNOT contains SAS missing values !`
-`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!`
- -### SYNTAX: ################################################################### - -The basic syntax is the following: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -qsortInCbyProcProto(arr, low, high) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `arr` - An array of double type to be sorted. - -2. `low` - An integer low index of starting position (from which the sorting is done). - -3. `high` - An integer high index of ending position (up to which the sorting is done). - - -### REFERENCES: #################################################### - -*Reference 1.* - -Insertion sort for arrays smaller then 11 elements: - -Based on the code from the following WikiBooks page [2020.08.14]: - -[https://pl.wikibooks.org/wiki/Kody_%C5%BAr%C3%B3d%C5%82owe/Sortowanie_przez_wstawianie](https://pl.wikibooks.org/wiki/Kody_%C5%BAr%C3%B3d%C5%82owe/Sortowanie_przez_wstawianie) - - -*Reference 2.* - -Iterative Quick Sort: - -Based on the code from the following pages [2020.08.14]: - -[https://www.geeksforgeeks.org/iterative-quick-sort/](https://www.geeksforgeeks.org/iterative-quick-sort/) - -[https://www.geeksforgeeks.org/c-program-for-iterative-quick-sort/](https://www.geeksforgeeks.org/c-program-for-iterative-quick-sort/) - ---- - -## >>> `fromMissingToNumberBS()` function: <<< ####################### - -The **fromMissingToNumberBS()** function -gets numeric missing value or a number -as an argument and returns an integer -from 1 to 29. - -For a numeric missing argument -the returned values are: -- 1 for `._` -- 2 for `.` -- 3 for `.a` -- ... -- 28 for `.z` and -- 29 for *all other*. - -The function is used **internally** by -functions in the *BasePlus* package. - -For *missing value arguments* the function -is an inverse of the `fromNumberToMissing()` function. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -fromMissingToNumberBS(x) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `x` - A numeric missing value or a number. - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data _null_; - do x = ._, ., .a, .b, .c, 42; - y = fromMissingToNumberBS(x); - put x= y=; - end; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `fromNumberToMissing()` function: <<< ####################### - -The **fromNumberToMissing()** function -gets a number as an argument and returns -a numeric missing value or zero. - -For a numeric argument -the returned values are: -- `._` for 1 -- `.` for 2 -- `.a` for 3 -- ... -- `.z` for 28 and -- `0` for *all other*. - -The function is used **internally** by -functions in the *BasePlus* package. - -For arguments 1,2,3, ..., and 28 the function -is an inverse of the `fromMissingToNumberBS()` function. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -fromNumberToMissing(x) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `x` - A numeric value. - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data _null_; - do x = 1 to 29; - y = fromNumberToMissing(x); - put x= y=; - end; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `quickSort4NotMiss()` subroutine: <<< ####################### - -The **quickSort4NotMiss()** subroutine is an alternative to the -`CALL SORTN()` subroutine for 1-based big arrays (i.e. `> 10'000'000` elements) -when memory used by `call sortn()` may be an issue. -For smaller arrays the memory footprint is not significant. - -The subroutine is based on an iterative quick sort algorithm -implemented in the `qsortInCbyProcProto()` *C* prototype function. - - -**Caution 1!** Array _CANNOT_ contains missing values! - -**Caution 2!** Array parameters to subroutine calls must be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -call quickSort4NotMiss(A) +data %LDSNM(John "x" 'y' dog); + set sashelp.class; + where name = 'John'; +run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**Arguments description**: +creates `DSN_BF1F8C4D6495B34A_` macrovariable with value: `JOHN "X" 'Y' DOG`. -1. `A` - Argument is a 1-based array of NOT missing numeric values. +The macrovariable is useful when combined with `symget()` function and +the `indsname=` option to get the original text string value back, +like in this example: - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** For session with 8GB of RAM, - array of size 250'000'000 with values in range - from 0 to 99'999'999 and _NO_ missing values. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let size = 250000000; - options fullstimer; - - data _null_; - array test[&size.] _temporary_ ; - - t = time(); - call streaminit(123); - do _N_ = &size. to 1 by -1; - test[_N_] = int(100000000*rand("uniform")); - end; - t = time() - t; - put "Array population time: " t; - - put "First 50 elements before sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - - t = time(); - call quickSort4NotMiss (test); - t = time()-t; - put "Sorting time: " / t=; - - put; put "First 50 elements after sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 2.** Resources comparison for - session with 8GB of RAM. - - Array of size 250'000'000 with random values - from 0 to 999'999'999 and _NO_ missing values. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 8.82s - memory 1'953'470.62k - OS Memory 1'977'436.00k - - Call quickSort4NotMiss: - Sorting time 66.92s - Memory 1'954'683.06k - OS Memory 1'977'436.00k - - Call quickSortLight: - Sorting time 70.98s - Memory 1'955'479.71k - OS Memory 1'977'436.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `quickSortHash()` subroutine: <<< ####################### - -The **quickSortHash()** subroutine is an alternative to the -`CALL SORTN()` subroutine for 1-based big arrays (i.e. `> 10'000'000` elements) -when memory used by `call sortn()` may be an issue. -For smaller arrays the memory footprint is not significant. - -The subroutine is based on an iterative quick sort algorithm -implemented in the `qsortInCbyProcProto()` *C* prototype function. - -The number of "sparse distinct data values" is set to `100'000` to -use the hash sort instead of the quick sort. - E.g. when number of unique values for sorting is less then - 100'000 then an ordered hash table is used to store the data - and their count and sort them. - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -*Note!* Due to improper memory reporting/releasing for hash - tables in FCMP procedure the reported memory used after running - the function may not be in line with the RAM memory required - for processing. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -call quickSortHash(A) +data test; + set %LDSNM(John "x" 'y' dog) indsname = i; + + indsname = symget(scan(i,-1,".")); +run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**Arguments description**: - -1. `A` - Argument is a 1-based array of numeric values. - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** For session with 8GB of RAM - Array of size 250'000'000 with values in range - from 0 to 99'999'999 and around 10% of various - missing values. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let size = 250000000; - options fullstimer; - - data _null_; - array test[&size.] _temporary_ ; - - array m[0:27] _temporary_ - (._ . .A .B .C .D .E .F .G .H .I .J .K .L - .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); - - t = time(); - call streaminit(123); - do _N_ = &size. to 1 by -1; - _I_ + 1; - if rand("uniform") > 0.1 then test[_I_] = int(100000000*rand("uniform")); - else test[_I_] = m[mod(_N_,28)]; - end; - t = time() - t; - put "Array population time: " t; - - put "First 50 elements before sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - - t = time(); - call quickSortHash (test); - t = time()-t; - put "Sorting time: " / t=; - - put; put "First 50 elements after sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 2.** For session with 8GB of RAM - Array of size 250'000'000 with values in range - from 0 to 9'999 and around 10% of various - missing values. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let size = 250000000; - options fullstimer; - - data _null_; - array test[&size.] _temporary_ ; - - array m[0:27] _temporary_ - (._ . .A .B .C .D .E .F .G .H .I .J .K .L - .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); - - t = time(); - call streaminit(123); - do _N_ = &size. to 1 by -1; - _I_ + 1; - if rand("uniform") > 0.1 then test[_I_] = int(10000*rand("uniform")); - else test[_I_] = m[mod(_N_,28)]; - end; - t = time() - t; - put "Array population time: " t; - - put "First 50 elements before sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - - t = time(); - call quickSortHash (test); - t = time()-t; - put "Sorting time: " / t=; - - put; put "First 50 elements after sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 3.** Resources comparison for - session with 8GB of RAM - - A) Array of size 10'000'000 with - random values from 0 to 9'999 range (sparse) - and around 10% of missing data. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 0.61s - Memory 78'468.50k - OS Memory 101'668.00k - - Call sortn: - Sorting time 0.87s - Memory 1'120'261.53k - OS Memory 1'244'968.00k - - Call quickSortHash: - Sorting time 6.76s - Memory 1'222'242.75k(*) - OS Memory 1'402'920.00k(*) - - Call quickSortLight: - Sorting time 23.45s - Memory 80'527.75k - OS Memory 101'924.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - B) Array of size 10'000'000 with - random values from 0 to 99'999'999 range (dense) - and around 10% of missing data. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 0.6s - Memory 78'463.65k - OS Memory 101'924.00k - - Call sortn: - Sorting time 1.51s - Memory 1'120'253.53k - OS Memory 1'244'968.00k - - Call quickSortHash: - Sorting time 6.28s - Memory 1'222'241.93k(*) - OS Memory 1'402'920.00k(*) - - Call quickSortLight: - Sorting time 0.78s - Memory 80'669.28k - OS Memory 102'436.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - C) Array of size 250'000'000 with - random values from 0 to 999'999'999 range (dense) - and around 10% of missing data. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 15.34s - memory 1'953'471.81k - OS Memory 1'977'436.00k - - Call sortn: - FATAL: Insufficient memory to execute DATA step program. - Aborted during the COMPILATION phase. - ERROR: The SAS System stopped processing this step - because of insufficient memory. - - Call quickSortHash: - Sorting time 124.68s - Memory 7'573'720.34k(*) - OS Memory 8'388'448.00k(*) - - Call quickSortLight: - Sorting time 72.41s - Memory 1'955'520.78k - OS Memory 1'977'180.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - D) Array of size 250'000'000 with - random values from 0 to 99'999 range (sparse) - and around 10% of missing data. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 16.07 - Memory 1'953'469.78k - OS Memory 1'977'180.00k - - Call sortn: - FATAL: Insufficient memory to execute DATA step program. - Aborted during the COMPILATION phase. - ERROR: The SAS System stopped processing this step - because of insufficient memory. - - Call quickSortHash: - Sorting time 123.5s - Memory 7'573'722.03k - OS Memory 8'388'448.00k - - Call quickSortLight: - Sorting time 1'338.25s - Memory 1'955'529.90k - OS Memory 1'977'436.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -(*) When using hash tables in `Proc FCMP` the RAM - usage is not indicated properly. The memory - allocation is reported up to the session limit - and then reused if needed. The really required - memory is in fact much less then reported. - ---- - -## >>> `quickSortHashSDDV()` subroutine: <<< ####################### - -The **quickSortHashSDDV()** subroutine is an alternative to the -`CALL SORTN()` subroutine for 1-based big arrays (i.e. `> 10'000'000` elements) -when memory used by `call sortn()` may be an issue. -For smaller arrays the memory footprint is not significant. - -The subroutine is based on an iterative quick sort algorithm -implemented in the `qsortInCbyProcProto()` *C* prototype function. - -The number of "sparse distinct data values" (argument `SDDV`) may -be adjusted to use the hash sort instead of the quick sort. - E.g. when number of unique values for sorting is less then - some *N* then an ordered hash table is used to store the data - and their count and sort them. - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -*Note!* Due to improper memory reporting/releasing for hash - tables in FCMP procedure the report memory used after running - the function may not be in line with the RAM memory required - for processing. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -call quickSortHashSDDV(A, SDDV) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `A` - Argument is a 1-based array of numeric values. - -2. `SDDV` - A number of distinct data values, e.g. 100'000. - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** For session with 8GB of RAM - Array of size 250'000'000 with values in range - from 0 to 99'999'999 and around 10% of various - missing values. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let size = 250000000; - options fullstimer; - - data _null_; - array test[&size.] _temporary_ ; - - array m[0:27] _temporary_ - (._ . .A .B .C .D .E .F .G .H .I .J .K .L - .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); - - t = time(); - call streaminit(123); - do _N_ = &size. to 1 by -1; - _I_ + 1; - if rand("uniform") > 0.1 then test[_I_] = int(100000000*rand("uniform")); - else test[_I_] = m[mod(_N_,28)]; - end; - t = time() - t; - put "Array population time: " t; - - put "First 50 elements before sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - - t = time(); - call quickSortHashSDDV (test, 2e4); - t = time()-t; - put "Sorting time: " / t=; - - put; put "First 50 elements after sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 2.** For session with 8GB of RAM - Array of size 250'000'000 with values in range - from 0 to 9'999 and around 10% of various - missing values. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let size = 250000000; - options fullstimer; - - data _null_; - array test[&size.] _temporary_ ; - - array m[0:27] _temporary_ - (._ . .A .B .C .D .E .F .G .H .I .J .K .L - .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); - - t = time(); - call streaminit(123); - do _N_ = &size. to 1 by -1; - _I_ + 1; - if rand("uniform") > 0.1 then test[_I_] = int(10000*rand("uniform")); - else test[_I_] = m[mod(_N_,28)]; - end; - t = time() - t; - put "Array population time: " t; - - put "First 50 elements before sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - - t = time(); - call quickSortHashSDDV (test, 2e4); - t = time()-t; - put "Sorting time: " / t=; - - put; put "First 50 elements after sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `quickSortLight()` subroutine: <<< ####################### - -The **quickSortLight()** subroutine is an alternative to the -`CALL SORTN()` subroutine for 1-based big arrays (i.e. `> 10'000'000` elements) -when memory used by `call sortn()` may be an issue. -For smaller arrays the memory footprint is not significant. - -The subroutine is based on an iterative quick sort algorithm -implemented in the `qsortInCbyProcProto()` *C* prototype function. - -*Caution!* Array parameters to subroutine calls *must* be 1-based. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -call quickSortLight(A) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `A` - Argument is a 1-based array of numeric values. - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** For session with 8GB of RAM - Array of size 250'000'000 with values in range - from 0 to 99'999'999 and around 10% of various - missing values. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let size = 250000000; - options fullstimer; - - data _null_; - array test[&size.] _temporary_ ; - - array m[0:27] _temporary_ - (._ . .A .B .C .D .E .F .G .H .I .J .K .L - .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); - - t = time(); - call streaminit(123); - do _N_ = &size. to 1 by -1; - _I_ + 1; - if rand("uniform") > 0.1 then test[_I_] = int(100000000*rand("uniform")); - else test[_I_] = m[mod(_N_,28)]; - end; - t = time() - t; - put "Array population time: " t; - - put "First 50 elements before sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - - t = time(); - call quickSortLight (test); - t = time()-t; - put "Sorting time: " / t=; - - put; put "First 50 elements after sorting:"; - do _N_ = 1 to 20; - put test[_N_] = @; - end; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**Example 2.** Resources comparison for - session with 8GB of RAM. - - Array of size 250'000'000 with random values - from 0 to 999'999'999 and _NO_ missing values. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 8.82s - memory 1'953'470.62k - OS Memory 1'977'436.00k - - Call quickSort4NotMiss: - Sorting time 66.92s - Memory 1'954'683.06k - OS Memory 1'977'436.00k - - Call quickSortLight: - Sorting time 70.98s - Memory 1'955'479.71k - OS Memory 1'977'436.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**Example 3.** Resources comparison for - session with 8GB of RAM - - A) Array of size 10'000'000 with - random values from 0 to 9'999 range (sparse) - and around 10% of missing data. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 0.61s - Memory 78'468.50k - OS Memory 101'668.00k - - Call sortn: - Sorting time 0.87s - Memory 1'120'261.53k - OS Memory 1'244'968.00k - - Call quickSortHash: - Sorting time 6.76s - Memory 1'222'242.75k(*) - OS Memory 1'402'920.00k(*) - - Call quickSortLight: - Sorting time 23.45s - Memory 80'527.75k - OS Memory 101'924.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - B) Array of size 10'000'000 with - random values from 0 to 99'999'999 range (dense) - and around 10% of missing data. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 0.6s - Memory 78'463.65k - OS Memory 101'924.00k - - Call sortn: - Sorting time 1.51s - Memory 1'120'253.53k - OS Memory 1'244'968.00k - - Call quickSortHash: - Sorting time 6.28s - Memory 1'222'241.93k(*) - OS Memory 1'402'920.00k(*) - - Call quickSortLight: - Sorting time 0.78s - Memory 80'669.28k - OS Memory 102'436.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - C) Array of size 250'000'000 with - random values from 0 to 999'999'999 range (dense) - and around 10% of missing data. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 15.34s - memory 1'953'471.81k - OS Memory 1'977'436.00k - - Call sortn: - FATAL: Insufficient memory to execute DATA step program. - Aborted during the COMPILATION phase. - ERROR: The SAS System stopped processing this step - because of insufficient memory. - - Call quickSortHash: - Sorting time 124.68s - Memory 7'573'720.34k(*) - OS Memory 8'388'448.00k(*) - - Call quickSortLight: - Sorting time 72.41s - Memory 1'955'520.78k - OS Memory 1'977'180.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - D) Array of size 250'000'000 with - random values from 0 to 99'999 range (sparse) - and around 10% of missing data. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - Array: - Population time 16.07 - Memory 1'953'469.78k - OS Memory 1'977'180.00k - - Call sortn: - FATAL: Insufficient memory to execute DATA step program. - Aborted during the COMPILATION phase. - ERROR: The SAS System stopped processing this step - because of insufficient memory. - - Call quickSortHash: - Sorting time 123.5s - Memory 7'573'722.03k - OS Memory 8'388'448.00k - - Call quickSortLight: - Sorting time 1'338.25s - Memory 1'955'529.90k - OS Memory 1'977'436.00k -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -(*) When using hash tables in `Proc FCMP` the RAM - usage is not indicated properly. The memory - allocation is reported up to the session limit - and then reused if needed. The really required - memory is in fact much less then reported. +See examples below for the details. --- -## >>> `%dedupListS()` macro: <<< ####################### +The `%LDSN()` macro executes like a pure macro code. -The `%dedupListS()` macro deletes duplicated values from -a *SPACE separated* list of values. List, including separators, -can be no longer than a value carried by a single macrovariable. +**Known "Limitations":** -Returned value is *unquoted*. +- dataset name _cannot_ contain _unpaired_ round brackets(`(` and `)`) + (but unmatched `[]` and `{}` are allowed)! -The `%dedupListS()` macro executes like a pure macro code. +- dataset name _cannot_ contain _unpaired_ quotes (`'` and `"`), + text: `a "hot-dog"` is ok, but `John's dog` is not! + +**Behaviour:** + +- dataset name text is *converted to upcase* + +- dataset name text *leading and trailing spaces are ignored*, + e.g. the following will give the same hash digest: + `%ldsn(test)`, `%ldsn( test)`, `%ldsn(test )`. + +- macro calls of the form: + `data %LDSN(); run;` or `data %LDSN( ); run;` are resolved + to empty string, so the result is equivalent to `data; run;` + +- created macrovariable is _global_ in scope. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%dedupListS( - list of space separated values +%LDSNM( + arbitrary text string (in line with limitations) ) ~~~~~~~~~~~~~~~~~~~~~~~ -**Arguments description**: +The text string is concider as *"only dataset name"*, i.e. macro does not +assume it contain library as prefix or data set options as sufix. +See the `%LDSN()` macro for comparison. -1. `list` - A list of *space separated* values. +--- ### EXAMPLES AND USECASES: #################################################### -**EXAMPLE 1.** Basic use-case one. - Delete duplicated values from a list. - +**EXAMPLE 1.** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put *%dedupListS(a b c b c)*; +data %LDSNM(John "x" 'y' & dog); + set sashelp.class; + where name = 'John'; +run; - %put *%dedupListS(a b,c b,c)*; +data %LDSNM(John "x"[ 'y' & dog); + set sashelp.class; + where name = 'John'; +run; - %put *%dedupListS(%str(a b c b c))*; - - %put *%dedupListS(%str(a) %str(b) %str(c) b c)*; +data %LDSNM(John "x" 'y'} & dog); + set sashelp.class; + where name = 'John'; +run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**EXAMPLE 2.** Macro variable as an argument. - Delete duplicated values from a list. +**EXAMPLE 2.** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let list = 4 5 6 1 2 3 1 2 3 4 5 6; - %put *%dedupListS(&list.)*; +data work.%LDsNm( peanut butter & jelly, a hot-dog in [a box], and s(*)t(*)a(*)r(*)s!! ) (drop = sex rename=(name=first_name) where = (age in (12,13,14))) +; + set sashelp.class; +run; + +data test; + set work.%LDsNm( peanut butter & jelly, a hot-dog in [a box], and s(*)t(*)a(*)r(*)s!! ) indsname=i; + + indsname=symget(scan(i,-1,".")); +run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 3.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data work.%LDsNm( . ); + set sashelp.class; +run; + +data %LDsNm( ); + set sashelp.class; +run; + + +data %LDsNm(); + set sashelp.class; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + --- -## >>> `%dedupListC()` macro: <<< ####################### + +--- + +## `%lvarnm()` macro ###### + +## >>> `%LVarNm()` macro: <<< ####################### -The `%dedupListC()` macro deletes duplicated values from -a *COMMA separated* list of values. List, including separators, -can be no longer than a value carried by a single macrovariable. +The LVarNm() macro function works like the LDSN() macro function, but for variables. +Supported by LVarNmLab() macro function which allows to remember "user names" in labels. -Returned value is *unquoted*. Leading and trailing spaces are ignored. +The motivation for the macro was similar one as for the LDSN() macro. -The `%dedupListC()` macro executes like a pure macro code. +--- + +See examples below for the details. + +The `%LVarNm()` macro executes like a pure macro code. + +**Known "Limitations":** + +- variable name _cannot_ contain unpaired quotes (`'` and `"`), + text: `a "hot-dog"` is ok, but `John's dog` is not! + +**Behaviour:** + +- variable name text is *converted to upcase* + +- variable name text *leading and trailing spaces are ignored*, + e.g. the following will give the same hash digest: + `%LVarNm(test)`, `%LVarNm( test)`, `%LVarNm(test )`. + +- if the user want to add an extra suffix to the variable, + e.g. to get a numerical suffix, the `%LVarNm()` macro + **has** to be wrapped inside the `%unquote()` macro function. +~~~~~~~~~~~~~~~~~~~~~~~sas +data test4; + array X[*] %unquote(%LVarNm(some strange! name))_0 - %unquote(%LVarNm(some strange! name))_10; + + do i = lbound(X) to hbound(X); + X[i] = 2**(i-1); + put X[i]=; + end; +run; +~~~~~~~~~~~~~~~~~~~~~~~ + The reason for this is a "bug" like behaviour of SAS tokenizer/macroprocesor. + See the following SAS-L discussion thread: + `https://listserv.uga.edu/scripts/wa-UGA.exe?A2=SAS-L;4b2bcf80.2205A&S=` ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%dedupListC( - list,of,comma,separated,values +%LVarNm( + arbitrary text string (in line with limitations) ) ~~~~~~~~~~~~~~~~~~~~~~~ -**Arguments description**: - -1. `list` - A list of *comma separated* values. +--- ### EXAMPLES AND USECASES: #################################################### -**EXAMPLE 1.** Basic use-case one. - Delete duplicated values from a list. - +**EXAMPLE 1.** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put *%dedupListC(a,b,c,b,c)*; +options ls=max; +data test; + %LVarNmLab( peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ) - %put *%dedupListC(a,b c,b c)*; + do %LVarNm( peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ) = 1 to 10; - %put *%dedupListC(%str(a,b,c,b,c))*; + y = 5 + %LVarNm( peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ) * 17; + output; + end; +run; - %put *%dedupListC(%str(a),%str(b),%str(c),b,c)*; +data test2; + set test; + where %LVarNm( peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ) < 5; +run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**EXAMPLE 2.** Leading and trailing spaces are ignored. - Delete duplicated values from a list. +**EXAMPLE 2.** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put *%dedupListC( a , b b , c , b b, c )*; +data test3; + %LVarNmLab() = 17; + + %LVarNm() = 17; + + %LVarNm( ) = 42; + + %LVarNm( ) = 303; +run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**EXAMPLE 3.** Macro variable as an argument. - Delete duplicated values from a list. +**EXAMPLE 3.** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let list = 4, 5, 6, 1, 2, 3, 1, 2, 3, 4, 5, 6; - %put *%dedupListC(&list.)*; +data test3; + %LVarNm(test) = 1; + + %LVarNm( test) = 2; + + %LVarNm(test ) = 3; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data test4; + array X[*] %LVarNm(some strange! name)_0 - %LVarNm(some strange! name)_10; + + do i = lbound(X) to hbound(X); + X[i] = 2**(i-1); + put X[i]=; + end; +run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- -## >>> `%dedupListP()` macro: <<< ####################### + +--- + +## `%lvarnmlab()` macro ###### + +## >>> `%LVarNmLab()` macro: <<< ####################### -The `%dedupListP()` macro deletes duplicated values from -a *PIPE(`|`) separated* list of values. List, including separators, -can be no longer than a value carried by a single macrovariable. +The LVarNmLab() macro function supports LVarNm() and allows to remember "user names" in labels. -Returned value is *unquoted*. Leading and trailing spaces are ignored. +The motivation for the macro was similar one as for the LDSN() macro. -The `%dedupListP()` macro executes like a pure macro code. +--- + +See examples in LVarNm() documentation for the details. + +The `%LVarNmLab()` macro executes like a pure macro code. + +**Known "Limitations":** + +- variable name _cannot_ contain unpaired quotes (`'` and `"`), + text: `a "hot-dog"` is ok, but `John's dog` is not! + +**Behaviour:** + +- variable name text is *converted to upcase* + +- variable name text *leading and trailing spaces are ignored*, + e.g. the following will give the same hash digest: + `%LVarNmLab(test)`, `%LVarNmLab( test)`, `%LVarNmLab(test )`. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%dedupListP( - list|of|pipe|separated|values +%LVarNmLab( + arbitrary text string (in line with limitations) ) ~~~~~~~~~~~~~~~~~~~~~~~ -**Arguments description**: - -1. `list` - A list of *pipe separated* values. - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Basic use-case one. - Delete duplicated values from a list. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put *%dedupListP(a|b|c|b|c)*; - - %put *%dedupListP(a|b c|b c)*; - - %put *%dedupListP(%str(a|b|c|b|c))*; - - %put *%dedupListP(%str(a)|%str(b)|%str(c)|b|c)*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 2.** Leading and trailing spaces are ignored. - Delete duplicated values from a list. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put *%dedupListP( a | b b | c | b b| c )*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 3.** Macro variable as an argument. - Delete duplicated values from a list. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let list = 4|5|6|1|2|3|1|2|3|4|5|6; - %put *%dedupListP(&list.)*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --- -## >>> `%dedupListX()` macro: <<< ####################### - -The `%dedupListX()` macro deletes duplicated values from -a *X separated* list of values, where the `X` represents -a *single character* separator. List, including separators, -can be no longer than a value carried by a single macrovariable. - -**Caution.** The value of `X` *has to be* in **the first** byte of the list, - just after the opening bracket, i.e. `(X...)`. - -Returned value is *unquoted*. Leading and trailing spaces are ignored. - -The `%dedupListX()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%dedupListX( -XlistXofXxXseparatedXvalues -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `list` - A list of *X separated* values. - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Basic use-case one. - Delete duplicated values from a list. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put *%dedupListX(|a|b|c|b|c)*; - - %put *%dedupListX( a b c b c)*; - - %put *%dedupListX(,a,b,c,b,c)*; - - %put *%dedupListX(XaXbXcXbXc)*; - - %put *%dedupListX(/a/b/c/b/c)*; - - data _null_; - x = "%dedupListX(%str(;a;b;c;b;c))"; - put x=; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 2.** Leading and trailing spaces are ignored. - Delete duplicated values from a list. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put *%dedupListX(| a | b.b | c | b.b| c )*; - - %put *%dedupListX(. a . b b . c . b b. c )*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 3.** Macro variable as an argument. - Delete duplicated values from a list. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let list = 4$5.5$6$1$2$3$1$2$3$4$5.5$6; - %put *%dedupListX($&list.)*; - - %let list = 4$ 5.5$ 6$ 1$ 2$ 3$ 1$ 2$ 3$ 4$ 5.5$ 6$; - %put *%dedupListX( &list.)*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + --- - + +## `%qdeduplistx()` macro ###### + ## >>> `%QdedupListX()` macro: <<< ####################### The `%QdedupListX()` macro deletes duplicated values from @@ -2790,123 +1836,64 @@ XlistXofXxXseparatedXvalues --- -## >>> `brackets.` format: <<< ####################### - -The **brackets** format adds brackets around a text or a number. -Leading and trailing spaces are dropped before adding brackets. - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; - input x; - if x < 0 then put x= brackets.; - else put x= best32.; -cards; -2 -1 -0 --1 --2 -; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + --- - -## >>> `semicolon.` format: <<< ####################### - -The **semicolon** format adds semicolon after text or number. -Leading and trailing spaces are dropped before adding semicolon. - -### EXAMPLES AND USECASES: #################################################### - -**Example 1.** - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; - x = 1; - y = "A"; - put x= semicolon. y= $semicolon.; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `bracketsC()` function: <<< ####################### - -The **bracketsC()** function is internal function used by the *brackets* format. -Returns character value of length 32767. +## `%qgetvars()` macro ###### + +## >>> `%QgetVars()` macro: <<< ####################### + +The getVars() and QgetVars() macro functions +allow to extract variables names form a dataset +according to a given pattern into a list. + +The getVars() returns unquoted value [by %unquote()]. +The QgetVars() returns quoted value [by %superq()]. + +The `%QgetVars()` macro executes like a pure macro code. + ### SYNTAX: ################################################################### -The basic syntax is the following: +The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -bracketsC(X) +%QgetVars( + ds + <,sep=> + <,pattern=> + <,varRange=> + <,quote=> +) ~~~~~~~~~~~~~~~~~~~~~~~ **Arguments description**: -1. `X` - Character value. +1. `ds` - *Required*, the name of the dataset from + which variables are to be taken. ---- +* `sep = %str( )` - *Optional*, default value `%str( )`, + a variables separator on the created list. -## >>> `bracketsN()` function: <<< ####################### +* `pattern = .*` - *Optional*, default value `.*` (i.e. any text), + a variable name regexp pattern, case INSENSITIVE! + +* `varRange = _all_` - *Optional*, default value `_all_`, + a named range list of variables. + +* `quote =` - *Optional*, default value is blank, a quotation + symbol to be used around values. -The **bracketsN()** function is internal function used by the *brackets* format. -Returns character value of length 34. -### SYNTAX: ################################################################### +### EXAMPLES AND USECASES: #################################################### -The basic syntax is the following: -~~~~~~~~~~~~~~~~~~~~~~~sas -bracketsN(X) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `X` - Numeric value. +See examples in `%getVars()` help for the details. --- -## >>> `semicolonC()` function: <<< ####################### - -The **semicolonC()** function is internal function used by the *semicolon* format. -Returns character value of length 32767. + +--- -### SYNTAX: ################################################################### - -The basic syntax is the following: -~~~~~~~~~~~~~~~~~~~~~~~sas -semicolonC(X) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `X` - Character value. - ---- - -## >>> `semicolonN()` function: <<< ####################### - -The **semicolonN()** function is internal function used by the *semicolon* format. -Returns character value of length 33. +## `%qzipevalf()` macro ###### -### SYNTAX: ################################################################### - -The basic syntax is the following: -~~~~~~~~~~~~~~~~~~~~~~~sas -semicolonN(X) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `X` - Numeric value. - ---- - ## >>> `%QzipEvalf()` macro: <<< ####################### The zipEvalf() and QzipEvalf() macro functions @@ -2982,267 +1969,18 @@ The basic syntax is the following, the `<...>` means optional parameters: to format the result, does not work when the `operator=` is used. + ### EXAMPLES AND USECASES: #################################################### See examples in `%zipEvalf()` help for the details. --- -## >>> `%zipEvalf()` macro: <<< ####################### - -The zipEvalf() and QzipEvalf() macro functions -allow to use a function on elements of pair of -space separated lists. - -For two space separated lists of text strings the corresponding -elements are taken and the macro applies a function, provided by user, -to calculate result of the function on taken elements. - -When one of the lists is shorter then elements are "reused" starting -from the beginning. - -The zipEvalf() returns unquoted value [by %unquote()]. -The QzipEvalf() returns quoted value [by %superq()]. - -See examples below for the details. - -The `%zipEvalf()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%zipEvalf( - first - ,second - <,function=> - <,operator=> - <,argBf=> - <,argMd=> - <,argAf=> - <,format=> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `first` - *Required*, a space separated list of texts. - -2. `second` - *Required*, a space separated list of texts. - -* `function = cat` - *Optional*, default value is `cat`, - a function which will be applied - to corresponding pairs of elements of - the first and the second list. - -* `operator =` - *Optional*, default value is empty, - arithmetic infix operator used with elements - the first and the second list. The first - list is used on the left side of the operator - the second list is used on the right side - of the operator. - -* `argBf =` - *Optional*, default value is empty, - arguments of the function inserted - *before* elements the first list. - If multiple should be comma separated. - -* `argMd =` - *Optional*, default value is empty, - arguments of the function inserted - *between* elements the first list and - the second list. - If multiple should be comma separated. - -* `argAf =` - *Optional*, default value is empty, - arguments of the function inserted - *after* elements the second list. - If multiple should be comma separated. - -* `format=` - *Optional*, default value is empty, - indicates a format which should be used - to format the result, does not work when - the `operator=` is used. - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Simple concatenation of elements: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%let x = %zipEvalf(1 2 3 4 5 6, q w e r t y); -%put &=x; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Shorter list is "reused": -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%let x = %zipEvalf(1 2 3 4 5 6, a b c); -%put &=x; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Use of the `operator=`, shorter list is "reused": -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%let y = %zipEvalf(1 2 3 4 5 6, 100 200, operator = +); -%put &=y; - -%let z = %zipEvalf(1 2 3 4 5 6 8 9 10, 1 2 3 4 5 6 8 9 10, operator = **); -%put &=z; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** Format result: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%let x = %zipEvalf(1 2 3 4 5 6, q w e r t y, format=$upcase.); -%put &=x; - -%put * -%zipEvalf( - ą ż ś ź ę ć ń ó ł -,Ą Ż Ś Ź Ę Ć Ń Ó Ł -,format = $brackets. -) -*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 5.** Use with macrovariables: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%let abc = 10 100 1000; -%put * -%zipEvalf( -%str(1 2 3 4 5 6 7 8 9) -,&abc. -,function = sum -) -*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 6.** If one of elements is empty: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put * -%zipEvalf( - abc efg -, -) -*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 7.** Use of the `function=`, shorter list is "reused": -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put * -%zipEvalf( - a b c -,efg -,function = catx -,argBf = %str(,) -,format = $brackets. -) -*; - -%put * -%zipEvalf( - a b c -,efg -,function = catx -,argBf = %str( ) -,format = $upcase. -) -*; - -%put * -%zipEvalf( - %str(! @ # $ [ ] % ^ & * ) -,1 2 3 4 5 6 7 8 9 -,function = catx -,argBf = %str( ) -,format = $quote. -) -*; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 8.** Use inside resolve: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data _null_; -z = resolve(' -%zipEvalf( - %nrstr(! @ # $ [ ] % ^ & *) -,1 2 3 4 5 6 7 8 9 -,function = catx -,argBf = %str(.) -,format = $quote. -)'); -put z=; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 9.** Use in data step: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data test; - %zipEvalf( - a b c d e f g - ,1 2 3 4 5 6 7 - ,function = catx - ,argBf = = - ,format = $semicolon. - ) -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 10.** With 9.4M6 hashing() function: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put %zipEvalf(MD5 SHA1 SHA256 SHA384 SHA512 CRC32, abcd, function = HASHING); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 11.** Use middle argument: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%let x = %zipEvalf(1 2 3 4 5 6, 2020, argMd=5, function=MDY, format=date11.); -%put &=x; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + --- - -## >>> `%functionExists()` macro: <<< ####################### - -The functionExists() macro function tests -if given funcion exists in the SAS session. -The `sashelp.vfunc` view is used. - -See examples below for the details. - -The `%functionExists()` macro executes like a pure macro code. - -The function is a result of cooperation with [Allan Bowe](https://www.linkedin.com/in/allanbowe/) - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%functionExists( - funName -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `funName` - *Required*, the name of the function - existence of which you are testing. - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Test if function exists: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %functionExists(HASHING); - - %put %functionExists(COSsinLOG); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - + +## `%raincloudplot()` macro ###### + ## >>> `%RainCloudPlot()` macro: <<< ####################### The RainCloudPlot() macro allow to plot Rain Cloud plots, i.e. pots of @@ -3488,6 +2226,7 @@ See examples below. --- + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Simple Rain Cloud Plot for a `have` dataset: @@ -3524,8 +2263,6 @@ See examples below. The output: ![Example 1](./baseplus_RainCloudPlot_Ex1.png) - - **EXAMPLE 2.** Rain Cloud plot for `sashelp.cars` dataset with groups by Origin or Type for Invoice variables: @@ -3548,9 +2285,7 @@ The output: ![Example 2a](./baseplus_RainCloudPlot_Ex2a.png) ![Example 2b](./baseplus_RainCloudPlot_Ex2b.png) - - -**EXAMPLE 3.** Rain Cloud plot with formatted groups +**EXAMPLE 3.** Rain Cloud plot with formated groups: and annotations. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas @@ -3606,17 +2341,115 @@ The output: --- -## >>> `%zipLibrary()` macro: <<< ####################### + +--- + +## `%repeattxt()` macro ###### + +## >>> `%repeatTxt()` macro: <<< ####################### -The zipLibrary() macro allows to zip content of a SAS library. +The repeatTxt() macro function allows to repeat `n` +times a `text` string separated by string `s=`. -Files can be zipped into a single file (named as the input library) -or into multiple files (named as "dataset.sas7bdat.zip"). -If a file is indexed also the index file is zipped. +The repeatTxt() returns unquoted value [by %unquote()]. -Source files can be deleted after compression. +See examples below for the details. -Status of compression and processing time is reported. +The `%repeatTxt()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%repeatTxt( + text + <,n> + <,s=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `text` - *Required*, a text to be repeated. + +2. `n` - *Required/Optional*, the number of repetitions. + If missing then set to `1`; + +* `s = %str( )` - *Optional*, it is a separator between + repeated elements. Default value is space. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Simple repetition of dataset name: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +options mprint; +data work.test5; + set + %repeatTxt(sashelp.cars, 5) + ; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Simple repetition of data step: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +options mprint; +%repeatTxt(data _null_; set sashelp.cars; run;, 3) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** "Nice" output: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put %repeatTxt(#,15,s=$) HELLO SAS! %repeatTxt(#,15,s=$); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** Macroquote a text with commas: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%repeatTxt( + %str(proc sql; create table wh as select weight,height from sashelp.class; quit;) + ,3 +) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 5.** Empty `n` repeats `text` one time: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +options mprint; +data work.test1; + set + %repeatTxt(sashelp.cars) + ; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 6.** Dynamic "formatting": +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%macro printWork(); + %let work=%sysfunc(pathname(work)); + %put +%repeatTxt(~,%length(&work.)+5,s=)+; + %put {&=work.}; + %put +%repeatTxt(~,%length(&work.)+5,s=)+; +%mend printWork; + +%printWork() +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%splitdsintoblocks()` macro ###### + +## >>> `%splitDSIntoBlocks()` macro: <<< ####################### + +The splitDSIntoBlocks() macro allows to split the `set` dataset into blocks +of size `blockSize` in datasets: `prefix1` to `prefixN`. + +The last dataset may have less observations then the `blockSize`. + +Macro covers `BASE` engine (`v9`, `v8`, `v7`, `v6`) and `SPDE` engine datasets. See examples below for the details. @@ -3624,94 +2457,325 @@ See examples below for the details. The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%zipLibrary( - lib - <,mode=> - <,clean=> - <,libOut=> - <,compression=> +%splitDSIntoBlocks( + blockSize + <,set> + <,prefix> ) ~~~~~~~~~~~~~~~~~~~~~~~ **Arguments description**: -1. `lib` - *Required*, a name of the library to be zipped. - Must be a valid SAS V7, V8, or V9 library. +1. `blockSize` - *Required*, the size of the block of data, + in other words number of observations in + one block of split data. + Block size must be positive integer. +2. `set` - *Required/Optional*, the name of the dataset to split. + If empty then `&syslast.` is used. -* `mode = S` - *Optional*, default value is `S`, - indicates mode of compression - generates single zip file (`SINGLE/S`) - or multiple files (`MULTI/M`) +3. `prefix` - *Required/Optional*, the name-prefix for new datasets. + If missing then set to `part`. -* `clean = 0` - *Optional*, default value is `0`, - should datasets be deleted after zipping? - `1` means *yes*, `0` means *no*. - -* `libOut =` - *Optional*, default value is empty, - output library for a single zip file. - -* `compression =` - *Optional*, default value is `6`, - specifies the compression level - `0` to `9`, where `0` is no compression - and `9` is maximum compression. +--- + ### EXAMPLES AND USECASES: #################################################### -**EXAMPLE 1.** Generate data: +**EXAMPLE 1.** Split `sashelp.class` into 5 elements datasets ABC1 to ABC4: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - -options dlcreatedir; - libname test1 "%sysfunc(pathname(work))/test1"; - libname test2 "%sysfunc(pathname(work))/test2"; - libname test3 (test1 test2); - libname test4 "%sysfunc(pathname(work))/test4"; -options nodlcreatedir; - -%put %sysfunc(pathname(test3)); -%put %sysfunc(pathname(test4)); - -data - test1.A(index=(model)) - test1.B - test2.C - test2.D(index=(model make io=(invoice origin))) -; - set sashelp.cars; -run; - -data test1.B2 / view=test1.B2; - set test1.B; - output; - output; -run; + %splitDSIntoBlocks(5,sashelp.class,ABC) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**EXAMPLE 2.** Zip content of test3 library - into the same location in one zip file: +**EXAMPLE 2.** By default splits the `_last_` dataset into `part1` to `partN` datasets: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%zipLibrary(test3) + data lastData; + set sashelp.cars; + run; + + %splitDSIntoBlocks(123) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**EXAMPLE 3.** Zip content of test3 library - into the same location in multiple zip files: +**EXAMPLE 3.** Works with `SPDE` engine too: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%zipLibrary(test3, mode=MULTI) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + options dlcreatedir; + libname test "%sysfunc(pathname(work))/testSPDE"; + libname test; + libname test SPDE "%sysfunc(pathname(work))/testSPDE"; + data test.test; + set sashelp.cars; + run; -**EXAMPLE 4.** Zip content of test3 library - with maximum compression level - into different location in one zip file - and delete source files: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%zipLibrary(test3, clean=1, libOut=test4, compression=9) + %splitDSIntoBlocks(100,test.test,work.spde) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- + +--- + +## `%splitdsintoparts()` macro ###### + +## >>> `%splitDSIntoParts()` macro: <<< ####################### + +The splitDSIntoParts() macro allows to split the `set` dataset into `parts` parts +of approximately `NOBS/parts` size in datasets: `prefix1` to `prefixN`. + +The splitDSIntoParts() macro internally runs the splitDSIntoBlocks() macro. + +Macro covers `BASE` engine (`v9`, `v8`, `v7`, `v6`) and `SPDE` engine datasets. + +See examples below for the details. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%splitDSIntoParts( + parts + <,set> + <,prefix> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `parts` - *Required*, the number of parts to split data into. + Number of parts must be positive integer. + +2. `set` - *Required/Optional*, the name of the dataset to split. + If empty then `&syslast.` is used. + +3. `prefix` - *Required/Optional*, the name-prefix for new datasets. + If missing then set to `part`. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Split `sashelp.cars` into 7 parts: datasets carsInParts1 to carsInParts7: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %splitDSIntoParts(7,sashelp.cars, carsInParts) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** By default splits the `_last_` dataset into `part1` to `part3` datasets: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data lastData; + set sashelp.cars; + run; + + %splitDSIntoBlocks(3) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Works with `SPDE` engine too: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + options dlcreatedir; + libname test "%sysfunc(pathname(work))/testSPDE"; + libname test; + libname test SPDE "%sysfunc(pathname(work))/testSPDE"; + + data test.test; + set sashelp.cars; + run; + + %splitDSIntoParts(3,test.test,work.spde) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%symdelglobal()` macro ###### + +## >>> `%symdelGlobal()` macro: <<< ####################### + +The `%symdelGlobal()` macro deletes all global macrovariables +created by the user. The only exceptions are read only variables +and variables the one which starts with SYS, AF, or FSP. +In that case a warning is printed in the log. + +One temporary global macrovariable `________________98_76_54_32_10_` +and a dataset, in `work` library, named `_%sysfunc(datetime(),hex7.)` +are created and deleted during the process. + +The `%symdelGlobal()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%symdelGlobal( + info +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `info` - *Optional*, default value should be empty, + if set to `NOINFO` or `QUIET` then infos and + warnings about variables deletion are suspended. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Basic use-case one. + Delete global macrovariables, info notes + and warnings are printed in the log. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let a = 1; + %let b = 2; + %let c = 3; + %let sys_my_var = 11; + %let af_my_var = 22; + %let fsp_my_var = 33; + %global / readonly read_only_x = 1234567890; + + %put _user_; + + %symdelGlobal(); + + %put _user_; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Basic use-case two. + Delete global macrovariables in quite mode + No info notes and warnings are printed in the log. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let a = 1; + %let b = 2; + %let c = 3; + %let sys_my_var = 11; + %let af_my_var = 22; + %let fsp_my_var = 33; + %global / readonly read_only_x = 1234567890; + + %put _user_; + %put *%symdelGlobal(NOINFO)*; + %put _user_; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- + + +--- + +## `%unziparch()` macro ###### + +## >>> `%unzipArch()` macro: <<< ####################### + +The unzipArch() macro allows to unzip content of a ZIP archive. +Macro is OS independent, the `XCMD` option is not required. + +The `dlCreateDir` option is used under the hood. + +Content of unzipped archive can be listed in the log. + +Source files can be deleted after decompression. +Errors of decompression and are reported. If any occur +the deletion is suspended. + +See examples below for the details. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%unzipArch( + archName + <,path=> + <,pathRef=> + <,target=> + <,targetRef=> + <,list=> + <,clean=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `archName` - *Required*, name of the ZIP archive to be extracted. + Name should be full, i.e., with the extension! + +* `path=` - *Optional*, a path pointing to zipped file location. + The path should be provided unquoted. + Default value is `WORK` location. + +* `pathRef=` - *Optional*, a fileref to path pointing to zipped file location. + The `path`, if not null, has precedense over the `pathRef`. + +* `target=` - *Optional*, a path pointing to target location where + files will be extracted. + The path should be provided unquoted. + Default value is `WORK` location. + +* `target=` - *Optional*, a fileref to path pointing to target location where + files will be extracted. + The `target`, if not null, has precedense over the `targetRef`. + +* `list = 0` - *Optional*, default value is `0`, + indicates if zip content should be listed in the log. + `1` means *yes*, `0` means *no*. + +* `clean = 0` - *Optional*, default value is `0`, + indicates if zip file should be deleted after unzipping. + `1` means *yes*, `0` means *no*. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Unzip compressed archive. Example requires the `basePlus` package. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + +filename arch ZIP "%workPath()/testArch.zip"; + +data _null_; + file arch(abc/test1.txt); + put "text for test file 1"; +data _null_; + file arch(abc/subdir/test2.txt); + put "text for test file 2"; +data _null_; + file arch(abc/subdir/test3.txt); + put "text for test file 3"; +run; + +%unzipArch( + testArch.zip +, path = %workPath() +, target = %workPath() +, list=1 +); + + + +filename pR "%workPath()"; + +%unzipArch( + testArch.zip +, pathRef = pR +, targetRef = pR +, clean=1 +); + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%unziplibrary()` macro ###### + ## >>> `%unzipLibrary()` macro: <<< ####################### The unzipLibrary() macro allows to unzip content of a SAS library. @@ -3744,6 +2808,7 @@ The basic syntax is the following, the `<...>` means optional parameters: **Arguments description**: 1. `path` - *Required*, a path pointing to zipped file(s) location. + The path should be unquoted, e.g. `%unzipLibrary(/some/dir, ...)`. * `zip =` - *Optional*, When `mode=S` a name of the zip file containing SAS files to be unzipped. @@ -3761,6 +2826,7 @@ The basic syntax is the following, the `<...>` means optional parameters: output library for a single zip file decompression. + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Generate data: @@ -3831,8 +2897,11 @@ run; %unzipLibrary(%sysfunc(pathname(work)), zip=sashelp, mode=S, clean=1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + --- - + +## `%ziparch()` macro ###### + ## >>> `%zipArch()` macro: <<< ####################### The zipArch() macro allows to ZIP content of a directory. @@ -3903,6 +2972,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Zip a directory . Example requires the `basePlus` package. @@ -3963,18 +3033,246 @@ run; --- -## >>> `%unzipArch()` macro: <<< ####################### + +--- + +## `%zipevalf()` macro ###### + +## >>> `%zipEvalf()` macro: <<< ####################### -The unzipArch() macro allows to unzip content of a ZIP archive. -Macro is OS independent, the `XCMD` option is not required. +The zipEvalf() and QzipEvalf() macro functions +allow to use a function on elements of pair of +space separated lists. -The `dlCreateDir` option is used under the hood. +For two space separated lists of text strings the corresponding +elements are taken and the macro applies a function, provided by user, +to calculate result of the function on taken elements. -Content of unzipped archive can be listed in the log. +When one of the lists is shorter then elements are "reused" starting +from the beginning. -Source files can be deleted after decompression. -Errors of decompression and are reported. If any occur -the deletion is suspended. +The zipEvalf() returns unquoted value [by %unquote()]. +The QzipEvalf() returns quoted value [by %superq()]. + +See examples below for the details. + +The `%zipEvalf()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%zipEvalf( + first + ,second + <,function=> + <,operator=> + <,argBf=> + <,argMd=> + <,argAf=> + <,format=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `first` - *Required*, a space separated list of texts. + +2. `second` - *Required*, a space separated list of texts. + +* `function = cat` - *Optional*, default value is `cat`, + a function which will be applied + to corresponding pairs of elements of + the first and the second list. + +* `operator =` - *Optional*, default value is empty, + arithmetic infix operator used with elements + the first and the second list. The first + list is used on the left side of the operator + the second list is used on the right side + of the operator. + +* `argBf =` - *Optional*, default value is empty, + arguments of the function inserted + *before* elements the first list. + If multiple should be comma separated. + +* `argMd =` - *Optional*, default value is empty, + arguments of the function inserted + *between* elements the first list and + the second list. + If multiple should be comma separated. + +* `argAf =` - *Optional*, default value is empty, + arguments of the function inserted + *after* elements the second list. + If multiple should be comma separated. + +* `format=` - *Optional*, default value is empty, + indicates a format which should be used + to format the result, does not work when + the `operator=` is used. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Simple concatenation of elements: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%let x = %zipEvalf(1 2 3 4 5 6, q w e r t y); +%put &=x; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Shorter list is "reused": +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%let x = %zipEvalf(1 2 3 4 5 6, a b c); +%put &=x; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Use of the `operator=`, shorter list is "reused": +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%let y = %zipEvalf(1 2 3 4 5 6, 100 200, operator = +); +%put &=y; + +%let z = %zipEvalf(1 2 3 4 5 6 8 9 10, 1 2 3 4 5 6 8 9 10, operator = **); +%put &=z; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** Format result: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%let x = %zipEvalf(1 2 3 4 5 6, q w e r t y, format=$upcase.); +%put &=x; + +%put * +%zipEvalf( + ą ż ś ź ę ć ń ó ł +,Ą Ż Ś Ź Ę Ć Ń Ó Ł +,format = $brackets. +) +*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 5.** Use with macrovariables: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%let abc = 10 100 1000; +%put * +%zipEvalf( +%str(1 2 3 4 5 6 7 8 9) +,&abc. +,function = sum +) +*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 6.** If one of elements is empty: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put * +%zipEvalf( + abc efg +, +) +*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 7.** Use of the `function=`, shorter list is "reused": +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put * +%zipEvalf( + a b c +,efg +,function = catx +,argBf = %str(,) +,format = $brackets. +) +*; + +%put * +%zipEvalf( + a b c +,efg +,function = catx +,argBf = %str( ) +,format = $upcase. +) +*; + +%put * +%zipEvalf( + %str(! @ # $ [ ] % ^ & * ) +,1 2 3 4 5 6 7 8 9 +,function = catx +,argBf = %str( ) +,format = $quote. +) +*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 8.** Use inside resolve: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; +z = resolve(' +%zipEvalf( + %nrstr(! @ # $ [ ] % ^ & *) +,1 2 3 4 5 6 7 8 9 +,function = catx +,argBf = %str(.) +,format = $quote. +)'); +put z=; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 9.** Use in data step: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data test; + %zipEvalf( + a b c d e f g + ,1 2 3 4 5 6 7 + ,function = catx + ,argBf = = + ,format = $semicolon. + ) +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 10.** With 9.4M6 hashing() function: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put %zipEvalf(MD5 SHA1 SHA256 SHA384 SHA512 CRC32, abcd, function = HASHING); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 11.** Use middle argument: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%let x = %zipEvalf(1 2 3 4 5 6, 2020, argMd=5, function=MDY, format=date11.); +%put &=x; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%ziplibrary()` macro ###### + +## >>> `%zipLibrary()` macro: <<< ####################### + +The zipLibrary() macro allows to zip content of a SAS library. + +Files can be zipped into a single file (named as the input library) +or into multiple files (named as "dataset.sas7bdat.zip"). +If a file is indexed also the index file is zipped. + +Source files can be deleted after compression. + +Status of compression and processing time is reported. See examples below for the details. @@ -3982,88 +3280,2043 @@ See examples below for the details. The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%unzipArch( - archName - <,path=> - <,pathRef=> - <,target=> - <,targetRef=> - <,list=> - <,clean=> +%zipLibrary( + lib + <,mode=> + <,clean=> + <,libOut=> + <,compression=> ) ~~~~~~~~~~~~~~~~~~~~~~~ **Arguments description**: -1. `archName` - *Required*, name of the ZIP archive to be extracted. - Name should be full, i.e., with the extension! +1. `lib` - *Required*, a name of the library to be zipped. + Must be a valid SAS V7, V8, or V9 library. -* `path=` - *Optional*, a path pointing to zipped file location. - The path should be provided unquoted. - Default value is `WORK` location. -* `pathRef=` - *Optional*, a fileref to path pointing to zipped file location. - The `path`, if not null, has precedense over the `pathRef`. - -* `target=` - *Optional*, a path pointing to target location where - files will be extracted. - The path should be provided unquoted. - Default value is `WORK` location. - -* `target=` - *Optional*, a fileref to path pointing to target location where - files will be extracted. - The `target`, if not null, has precedense over the `targetRef`. - -* `list = 0` - *Optional*, default value is `0`, - indicates if zip content should be listed in the log. - `1` means *yes*, `0` means *no*. +* `mode = S` - *Optional*, default value is `S`, + indicates mode of compression + generates single zip file (`SINGLE/S`) + or multiple files (`MULTI/M`) * `clean = 0` - *Optional*, default value is `0`, - indicates if zip file should be deleted after unzipping. + should datasets be deleted after zipping? `1` means *yes*, `0` means *no*. ---- +* `libOut =` - *Optional*, default value is empty, + output library for a single zip file. + +* `compression =` - *Optional*, default value is `6`, + specifies the compression level + `0` to `9`, where `0` is no compression + and `9` is maximum compression. + ### EXAMPLES AND USECASES: #################################################### -**EXAMPLE 1.** Unzip compressed archive. Example requires the `basePlus` package. +**EXAMPLE 1.** Generate data: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -filename arch ZIP "%workPath()/testArch.zip"; +options dlcreatedir; + libname test1 "%sysfunc(pathname(work))/test1"; + libname test2 "%sysfunc(pathname(work))/test2"; + libname test3 (test1 test2); + libname test4 "%sysfunc(pathname(work))/test4"; +options nodlcreatedir; -data _null_; - file arch(abc/test1.txt); - put "text for test file 1"; -data _null_; - file arch(abc/subdir/test2.txt); - put "text for test file 2"; -data _null_; - file arch(abc/subdir/test3.txt); - put "text for test file 3"; +%put %sysfunc(pathname(test3)); +%put %sysfunc(pathname(test4)); + +data + test1.A(index=(model)) + test1.B + test2.C + test2.D(index=(model make io=(invoice origin))) +; + set sashelp.cars; run; -%unzipArch( - testArch.zip -, path = %workPath() -, target = %workPath() -, list=1 -); +data test1.B2 / view=test1.B2; + set test1.B; + output; + output; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**EXAMPLE 2.** Zip content of test3 library + into the same location in one zip file: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%zipLibrary(test3) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -filename pR "%workPath()"; -%unzipArch( - testArch.zip -, pathRef = pR -, targetRef = pR -, clean=1 -); +**EXAMPLE 3.** Zip content of test3 library + into the same location in multiple zip files: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%zipLibrary(test3, mode=MULTI) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 4.** Zip content of test3 library + with maximum compression level + into different location in one zip file + and delete source files: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%zipLibrary(test3, clean=1, libOut=test4, compression=9) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +--- + +## `$bool.` format/informat ###### + +## >>> `bool.` format: <<< ####################### + +The **bool** format returns: +*zero* for 0 or missing, +*one* for other values. + +### EXAMPLES AND USECASES: #################################################### + +It allows for a %sysevalf()'ish +conversion-type [i.e. `%sysevalf(1.7 & 4.2, boolean)`] +inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), bool.)`] + +--- + + +--- + +## `$boolz.` format/informat ###### + +## >>> `boolz.` format: <<< ####################### + +The **boolz** format returns: +*zero* for 0 or missing, +*one* for other values. + +*Fuzz* value is 0. + +### EXAMPLES AND USECASES: #################################################### + +It allows for a %sysevalf()'ish +conversion-type [i.e. `%sysevalf(1.7 & 4.2, boolean)`] +inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), boolz.)`] + +--- + + +--- + +## `$ceil.` format/informat ###### + +## >>> `ceil.` format: <<< ####################### + +The **ceil** format is a "wrapper" for the `ceil()` function. + +### EXAMPLES AND USECASES: #################################################### + +It allows for a %sysevalf()'ish +conversion-type [i.e. `%sysevalf(1.7 + 4.2, ceil)`] +inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), ceil.)`] + +--- + + +--- + +## `$floor.` format/informat ###### + +## >>> `floor.` format: <<< ####################### + +The **floor** format is a "wrapper" for the `floor()` function. + +### EXAMPLES AND USECASES: #################################################### + +It allows for a %sysevalf()'ish +conversion-type [i.e. `%sysevalf(1.7 + 4.2, floor)`] +inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), floor.)`] + +--- + + +--- + +## `$int.` format/informat ###### + +## >>> `int.` format: <<< ####################### + +The **int** format is a "wrapper" for the `int()` function. + +### EXAMPLES AND USECASES: #################################################### + +It allows for a %sysevalf()'ish +conversion-type [i.e. `%sysevalf(1.7 + 4.2, integer)`] +inside the `%sysfunc()` [e.g. `%sysfunc(aFunction(), int.)`] + +--- + + +--- + +## `arrfill()` function ###### + +## >>> `arrFill()` subroutine: <<< ####################### + +The **arrFill()** subroutine is a wrapper +for the Call Fillmatrix() [a special FCMP subroutine]. + +A numeric array is filled with selected numeric value, e.g. + +for array `A = [. . . .]` the subroutine +`call arrFill(42, A)` returns `A = [42 42 42 42]` + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +call arrFill(N ,A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `N` - Numeric value. + +2. `A` - Numeric array. + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; + array X[*] a b c; + + put "before: " (_all_) (=); + call arrFill(42, X); + put "after: " (_all_) (=); + +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `arrfillc()` function ###### + +## >>> `arrFillC()` subroutine: <<< ####################### + +The **arrFillC()** subroutine fills +a character array with selected character value, e.g. + +for array `A = [" ", " ", " "]` the subroutine +`call arrFillC("B", A)` returns `A = ["B", "B", "B"]` + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +call arrFillC(C ,A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `C` - Character value. + +2. `A` - Character array. + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; + array X[*] $ a b c; + + put "before: " (_all_) (=); + call arrFillC("ABC", X); + put "after: " (_all_) (=); + +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `arrmissfill()` function ###### + +## >>> `arrMissFill()` subroutine: <<< ####################### + +The **arrMissFill()** subroutine fills +all missing values (i.e. less or equal than `.Z`) +of a numeric array with selected numeric value, e.g. + +for array `A = [1 . . 4]` the subroutine +`call arrMissFill(42, A)` returns `A = [1 42 42 4]` + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +call arrMissFill(N ,A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `N` - Numeric value. + +2. `A` - Numeric array. + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data have; + input a b c; +cards4; +1 . 3 +. 2 . +. . 3 +;;;; +run; + +data _null_; + set have ; + array X[*] a b c; + + put "before: " (_all_) (=); + call arrMissFill(42, X); + put "after: " (_all_) (=); + +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `arrmissfillc()` function ###### + +## >>> `arrMissFillC()` subroutine: <<< ####################### + +The **arrMissFillC()** subroutine fills +all missing values of a character array +with selected character value, e.g. + +for array `A = ["A", " ", "C"]` the subroutine +`call arrMissFillC("B", A)` returns `A = ["A", "B", "C"]` + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +call arrMissFillC(C, A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `C` - Character value. + +2. `A` - Character array. + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data have; + infile cards dsd dlm="," missover; + input (a b c) (: $ 1.); +cards4; +A, ,C + ,B, + , ,C +;;;; +run; + +data _null_; + set have ; + array X[*] $ a b c; + + put "before: " (_all_) (=); + call arrMissFillC("X", X); + put "after: " (_all_) (=); + +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `arrmisstoleft()` function ###### + +## >>> `arrMissToLeft()` subroutine: <<< ####################### + +The **arrMissToLeft()** subroutine shifts +all non-missing (i.e. greater than `.Z`) +numeric elements to the right side of an array +and missing values to the left, e.g. + +for array `A = [1 . 2 . 3]` the subroutine +`call arrMissToLeft(A)` returns `A = [. . 1 2 3]` + +All missing values are replaced with the dot (`.`) + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +call arrMissToLeft(A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `A` - Numeric array. + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data have; + input a b c; +cards4; +1 . 3 +. 2 . +. . 3 +;;;; +run; + +data _null_; + set have ; + array X[*] a b c; + + put "before: " (_all_) (=); + call arrMissToLeft(X); + put "after: " (_all_) (=); + +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `arrmisstoleftc()` function ###### + +## >>> `arrMissToLeftC()` subroutine: <<< ####################### + +The **arrMissToLeftC()** subroutine shifts +all non-missing (i.e. different than empty string) +character elements to the right side of an array +and all missing values to the left, e.g. + +for array `A = ["A", " ", "B", " ", "C"]` the subroutine +`call arrMissToLeftC(A)` returns `A = [" ", " ", "A", "B", "C"]` + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +call arrMissToLeftC(A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `A` - Character array. + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data have; + infile cards dsd dlm="," missover; + input (a b c) (: $ 1.); +cards4; +A, ,C + ,B, + , ,C +;;;; +run; + +data _null_; + set have ; + array X[*] $ a b c; + + put "before: " (_all_) (=); + call arrMissToLeftC(X); + put "after: " (_all_) (=); + +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `arrmisstoright()` function ###### + +## >>> `arrMissToRight()` subroutine: <<< ####################### + +The **arrMissToRight()** subroutine shifts +all non-missing (i.e. greater than `.Z`) +numeric elements to the left side of an array +and missing values to the right, e.g. + +for array `A = [1 . 2 . 3]` the subroutine +`call arrMissToRight(A)` returns `A = [1 2 3 . .]` + +All missing values are replaced with the dot (`.`) + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +call arrMissToRight(A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `A` - Numeric array. + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data have; + input a b c; +cards4; +1 . 3 +. 2 . +. . 3 +;;;; +run; + +data _null_; + set have ; + array X[*] a b c; + + put "before: " (_all_) (=); + call arrMissToRight(X); + put "after: " (_all_) (=); + +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `arrmisstorightc()` function ###### + +## >>> `arrMissToRightC()` subroutine: <<< ####################### + +The **arrMissToRightC()** subroutine shifts +all non-missing (i.e. different than empty string) +character elements to the left side of an array +and missing values to the right, e.g. + +for array `A = ["A", " ", "B", " ", "C"]` the subroutine +`call arrMissToRightC(A)` returns `A = ["A", "B", "C", " ", " "]` + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +call arrMissToRightC(A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `A` - Character array. + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data have; + infile cards dsd dlm="," missover; + input (a b c) (: $ 1.); +cards4; +A, ,C + ,B, + , ,C +;;;; +run; + +data _null_; + set have ; + array X[*] $ a b c; + + put "before: " (_all_) (=); + call arrMissToRightC(X); + put "after: " (_all_) (=); + +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `bracketsc()` function ###### + +## >>> `bracketsC()` function: <<< ####################### + +The **bracketsC()** function is internal function used by the *brackets* format. +Returns character value of length 32767. + +### SYNTAX: ################################################################### + +The basic syntax is the following: +~~~~~~~~~~~~~~~~~~~~~~~sas +bracketsC(X) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `X` - Character value. + +--- + +--- + +## `bracketsn()` function ###### + +## >>> `bracketsN()` function: <<< ####################### + +The **bracketsN()** function is internal function used by the *brackets* format. +Returns character value of length 34. + +### SYNTAX: ################################################################### + +The basic syntax is the following: +~~~~~~~~~~~~~~~~~~~~~~~sas +bracketsN(X) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `X` - Numeric value. + +--- + +--- + +## `catxfc()` function ###### + +## >>> `catXFc()` function: <<< ####################### + +The **catXFc()** function is a wrapper +of the `catX()` function but with ability +to format character values. + +For array `A = ["a", " ", "c"]` the +`catXFc("upcase.", "*", A)` returns `"A*C"`. + +If format does not handle nulls they are ignored. + +*Caution!* Array parameters to function calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +catXFc(format, delimiter, A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `format` - A name of the *character* format to be used. + +2. `delimiter` - A delimiter string to be used. + +3. `A` - Character array + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; + t = "t"; + u = " "; + v = "v"; + + array b[*] t u v; + + length s $ 17; + s = catXFc("upcase.", "*", B); + put (_all_) (=); +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `catxfi()` function ###### + +## >>> `catXFi()` function: <<< ####################### + +The **catXFi()** function is a wrapper +of the `catX()` function but with ability +to format numeric values but +IGNORES missing values (i.e. `._`, `.`, `.a`, ..., `.z`). + +For array `A = [0, ., 2]` the +`catXFi("date9.", "#", A)` returns +`"01JAN1960#03JAN1960"` + +*Caution!* Array parameters to function calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +catXFi(format, delimiter, A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `format` - A name of the *numeric* format to be used. + +2. `delimiter` - A delimiter string to be used. + +3. `A` - Numeric array + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; + x = 1; + y = .; + z = 3; + + array a[*] x y z; + + length s $ 17; + s = catXFi("z5.", "#", A); + put (_all_) (=); +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `catxfj()` function ###### + +## >>> `catXFj()` function: <<< ####################### + +The **catXFj()** function is a wrapper +of the catX() function but with ability +to format character values. + +For array `A = ["a", " ", "c"]` the +`catXFj("upcase.", "*", A)` returns `"A**C"` + +If format does not handle nulls they are +printed as an empty string. + +*Caution!* Array parameters to function calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +catXFj(format, delimiter, A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `format` - A name of the *character* format to be used. + +2. `delimiter` - A delimiter string to be used. + +3. `A` - Character array + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; + t = "t"; + u = " "; + v = "v"; + + array b[*] t u v; + + length s $ 17; + s = catXFj("upcase.", "*", B); + put (_all_) (=); +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `catxfn()` function ###### + +## >>> `catXFn()` function: <<< ####################### + +The **catXFn()** function is a wrapper +of the `catX()` function but with ability +to format numeric values. + +For array `A = [0, 1, 2]` the +`catXFn("date9.", "#", A)` returns +`"01JAN1960#02JAN1960#03JAN1960"` + +*Caution!* Array parameters to function calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +catXFn(format, delimiter, A) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `format` - A name of the *numeric* format to be used. + +2. `delimiter` - A delimiter string to be used. + +3. `A` - Numeric array + + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; + x = 1; + y = .; + z = 3; + + array a[*] x y z; + + length s $ 17; + s = catXFn("z5.", "#", A); + put (_all_) (=); +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `deldataset()` function ###### + +## >>> `delDataset()` function: <<< ####################### + +The **delDataset()** function is a "wrapper" +for the `Fdelete()` function. +`delDataset()` function uses a text string with +a dataset name as an argument. + +Function checks for `*.sas7bdat`, `*.sas7bndx`, +and `*.sas7bvew` files and delete them. +Return code of 0 means dataset was deleted. + +For compound library files are +deleted from _ALL_ locations! + + +*Note:* +Currently only the BASE SAS engine datasets/views are deleted. + +Tested on Windows and Linux. Not tested on Z/OS. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +delDataset(lbds_) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `lbds_` - *Required*, character argument containing + name of the dataset/view to be deleted. + The `_last_` special name is honored. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data TEST1 TEST2(index=(x)); + x = 17; + run; + + data TEST3 / view=TEST3; + set test1; + run; + + data _null_; + p = delDataset("WORK.TEST1"); + put p=; + + p = delDataset("TEST2"); + put p=; + + p = delDataset("WORK.TEST3"); + put p=; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 2.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data TEST4; + x=42; + run; + data _null_; + p = delDataset("_LAST_"); + put p=; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 3.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + options dlcreatedir; + libname user "%sysfunc(pathname(work))/user"; + + data TEST5; + x=42; + run; + + data _null_; + p = delDataset("test5"); + put p=; + run; + + libname user clear; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 4.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data TEST6; + x=42; + run; + + %put *%sysfunc(delDataset(test6))*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 5.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + options dlcreatedir; + libname L1 "%sysfunc(pathname(work))/L)1"; + libname L2 "%sysfunc(pathname(work))/L(2"; + libname L3 "%sysfunc(pathname(work))/L'3"; + + data L1.TEST7 L2.TEST7 L3.TEST7; + x=42; + run; + + libname L12 ("%sysfunc(pathname(work))/L(1" "%sysfunc(pathname(work))/L)2"); + libname L1L2 (L2 L3); + + %put *%sysfunc(delDataset(L12.test7))*; + %put *%sysfunc(delDataset(L1L2.test7))*; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `semicolonc()` function ###### + +## >>> `semicolonC()` function: <<< ####################### + +The **semicolonC()** function is internal function used by the *semicolon* format. +Returns character value of length 32767. + +### SYNTAX: ################################################################### + +The basic syntax is the following: +~~~~~~~~~~~~~~~~~~~~~~~sas +semicolonC(X) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `X` - Character value. + +--- + + +--- + +## `semicolonn()` function ###### + +## >>> `semicolonN()` function: <<< ####################### + +The **semicolonN()** function is internal function used by the *semicolon* format. +Returns character value of length 33. + +### SYNTAX: ################################################################### + +The basic syntax is the following: +~~~~~~~~~~~~~~~~~~~~~~~sas +semicolonN(X) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `X` - Numeric value. + +--- + + +--- + +## `$brackets.` format/informat ###### + +## >>> `brackets.` format: <<< ####################### + +The **brackets** format adds brackets around a text or a number. +Leading and trailing spaces are dropped before adding brackets. + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; + input x; + if x < 0 then put x= brackets.; + else put x= best32.; +cards; +2 +1 +0 +-1 +-2 +; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `$semicolon.` format/informat ###### + +## >>> `semicolon.` format: <<< ####################### + +The **semicolon** format adds semicolon after text or number. +Leading and trailing spaces are dropped before adding semicolon. + +### EXAMPLES AND USECASES: #################################################### + +**Example 1.** + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data _null_; + x = 1; + y = "A"; + put x= semicolon. y= $semicolon.; +run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `qsortincbyprocproto()` proto ###### + +## >>> `qsortInCbyProcProto()` proto function: <<< ####################### + +The **qsortInCbyProcProto()** is external *C* function, +this is the implementation of the *Quick Sort* algorithm. + +The function is used **internally** by +functions in the *BasePlus* package. + +Asumptions: +- smaller subarray is sorted first, +- subarrays of *size < 11* are sorted by *insertion sort*, +- pivot is selected as median of low index value, + high index value, and (low+high)/2 index value. + +`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!`
+`!CAUTION! Sorted array CANNOT contains SAS missing values !`
+`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!`
+ +### SYNTAX: ################################################################### + +The basic syntax is the following: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +qsortInCbyProcProto(arr, low, high) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `arr` - An array of double type to be sorted. + +2. `low` - An integer low index of starting position (from which the sorting is done). + +3. `high` - An integer high index of ending position (up to which the sorting is done). + + +### REFERENCES: #################################################### + +*Reference 1.* + +Insertion sort for arrays smaller then 11 elements: + +Based on the code from the following WikiBooks page [2020.08.14]: + +[https://pl.wikibooks.org/wiki/Kody_%C5%BAr%C3%B3d%C5%82owe/Sortowanie_przez_wstawianie](https://pl.wikibooks.org/wiki/Kody_%C5%BAr%C3%B3d%C5%82owe/Sortowanie_przez_wstawianie) + + +*Reference 2.* + +Iterative Quick Sort: + +Based on the code from the following pages [2020.08.14]: + +[https://www.geeksforgeeks.org/iterative-quick-sort/](https://www.geeksforgeeks.org/iterative-quick-sort/) + +[https://www.geeksforgeeks.org/c-program-for-iterative-quick-sort/](https://www.geeksforgeeks.org/c-program-for-iterative-quick-sort/) + +--- + + +--- + +## `frommissingtonumberbs()` function ###### + +## >>> `fromMissingToNumberBS()` function: <<< ####################### + +The **fromMissingToNumberBS()** function +gets numeric missing value or a number +as an argument and returns an integer +from 1 to 29. + +For a numeric missing argument +the returned values are: +- 1 for `._` +- 2 for `.` +- 3 for `.a` +- ... +- 28 for `.z` and +- 29 for *all other*. + +The function is used **internally** by +functions in the *BasePlus* package. + +For *missing value arguments* the function +is an inverse of the `fromNumberToMissing()` function. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +fromMissingToNumberBS(x) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `x` - A numeric missing value or a number. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data _null_; + do x = ._, ., .a, .b, .c, 42; + y = fromMissingToNumberBS(x); + put x= y=; + end; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `fromnumbertomissing()` function ###### + +## >>> `fromNumberToMissing()` function: <<< ####################### + +The **fromNumberToMissing()** function +gets a number as an argument and returns +a numeric missing value or zero. + +For a numeric argument +the returned values are: +- `._` for 1 +- `.` for 2 +- `.a` for 3 +- ... +- `.z` for 28 and +- `0` for *all other*. + +The function is used **internally** by +functions in the *BasePlus* package. + +For arguments 1,2,3, ..., and 28 the function +is an inverse of the `fromMissingToNumberBS()` function. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +fromNumberToMissing(x) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `x` - A numeric value. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data _null_; + do x = 1 to 29; + y = fromNumberToMissing(x); + put x= y=; + end; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `quicksort4notmiss()` function ###### + +## >>> `quickSort4NotMiss()` subroutine: <<< ####################### + +The **quickSort4NotMiss()** subroutine is an alternative to the +`CALL SORTN()` subroutine for 1-based big arrays (i.e. `> 10'000'000` elements) +when memory used by `call sortn()` may be an issue. +For smaller arrays the memory footprint is not significant. + +The subroutine is based on an iterative quick sort algorithm +implemented in the `qsortInCbyProcProto()` *C* prototype function. + + +**Caution 1!** Array _CANNOT_ contains missing values! + +**Caution 2!** Array parameters to subroutine calls must be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +call quickSort4NotMiss(A) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `A` - Argument is a 1-based array of NOT missing numeric values. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** For session with 8GB of RAM, + array of size 250'000'000 with values in range + from 0 to 99'999'999 and _NO_ missing values. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let size = 250000000; + options fullstimer; + + data _null_; + array test[&size.] _temporary_ ; + + t = time(); + call streaminit(123); + do _N_ = &size. to 1 by -1; + test[_N_] = int(100000000*rand("uniform")); + end; + t = time() - t; + put "Array population time: " t; + + put "First 50 elements before sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + + t = time(); + call quickSort4NotMiss (test); + t = time()-t; + put "Sorting time: " / t=; + + put; put "First 50 elements after sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 2.** Resources comparison for + session with 8GB of RAM. + + Array of size 250'000'000 with random values + from 0 to 999'999'999 and _NO_ missing values. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 8.82s + memory 1'953'470.62k + OS Memory 1'977'436.00k + + Call quickSort4NotMiss: + Sorting time 66.92s + Memory 1'954'683.06k + OS Memory 1'977'436.00k + + Call quickSortLight: + Sorting time 70.98s + Memory 1'955'479.71k + OS Memory 1'977'436.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `quicksorthash()` function ###### + +## >>> `quickSortHash()` subroutine: <<< ####################### + +The **quickSortHash()** subroutine is an alternative to the +`CALL SORTN()` subroutine for 1-based big arrays (i.e. `> 10'000'000` elements) +when memory used by `call sortn()` may be an issue. +For smaller arrays the memory footprint is not significant. + +The subroutine is based on an iterative quick sort algorithm +implemented in the `qsortInCbyProcProto()` *C* prototype function. + +The number of "sparse distinct data values" is set to `100'000` to +use the hash sort instead of the quick sort. + E.g. when number of unique values for sorting is less then + 100'000 then an ordered hash table is used to store the data + and their count and sort them. + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +*Note!* Due to improper memory reporting/releasing for hash + tables in FCMP procedure the reported memory used after running + the function may not be in line with the RAM memory required + for processing. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +call quickSortHash(A) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `A` - Argument is a 1-based array of numeric values. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** For session with 8GB of RAM + Array of size 250'000'000 with values in range + from 0 to 99'999'999 and around 10% of various + missing values. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let size = 250000000; + options fullstimer; + + data _null_; + array test[&size.] _temporary_ ; + + array m[0:27] _temporary_ + (._ . .A .B .C .D .E .F .G .H .I .J .K .L + .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); + + t = time(); + call streaminit(123); + do _N_ = &size. to 1 by -1; + _I_ + 1; + if rand("uniform") > 0.1 then test[_I_] = int(100000000*rand("uniform")); + else test[_I_] = m[mod(_N_,28)]; + end; + t = time() - t; + put "Array population time: " t; + + put "First 50 elements before sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + + t = time(); + call quickSortHash (test); + t = time()-t; + put "Sorting time: " / t=; + + put; put "First 50 elements after sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 2.** For session with 8GB of RAM + Array of size 250'000'000 with values in range + from 0 to 9'999 and around 10% of various + missing values. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let size = 250000000; + options fullstimer; + + data _null_; + array test[&size.] _temporary_ ; + + array m[0:27] _temporary_ + (._ . .A .B .C .D .E .F .G .H .I .J .K .L + .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); + + t = time(); + call streaminit(123); + do _N_ = &size. to 1 by -1; + _I_ + 1; + if rand("uniform") > 0.1 then test[_I_] = int(10000*rand("uniform")); + else test[_I_] = m[mod(_N_,28)]; + end; + t = time() - t; + put "Array population time: " t; + + put "First 50 elements before sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + + t = time(); + call quickSortHash (test); + t = time()-t; + put "Sorting time: " / t=; + + put; put "First 50 elements after sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 3.** Resources comparison for + session with 8GB of RAM + + A) Array of size 10'000'000 with + random values from 0 to 9'999 range (sparse) + and around 10% of missing data. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 0.61s + Memory 78'468.50k + OS Memory 101'668.00k + + Call sortn: + Sorting time 0.87s + Memory 1'120'261.53k + OS Memory 1'244'968.00k + + Call quickSortHash: + Sorting time 6.76s + Memory 1'222'242.75k(*) + OS Memory 1'402'920.00k(*) + + Call quickSortLight: + Sorting time 23.45s + Memory 80'527.75k + OS Memory 101'924.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + B) Array of size 10'000'000 with + random values from 0 to 99'999'999 range (dense) + and around 10% of missing data. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 0.6s + Memory 78'463.65k + OS Memory 101'924.00k + + Call sortn: + Sorting time 1.51s + Memory 1'120'253.53k + OS Memory 1'244'968.00k + + Call quickSortHash: + Sorting time 6.28s + Memory 1'222'241.93k(*) + OS Memory 1'402'920.00k(*) + + Call quickSortLight: + Sorting time 0.78s + Memory 80'669.28k + OS Memory 102'436.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + C) Array of size 250'000'000 with + random values from 0 to 999'999'999 range (dense) + and around 10% of missing data. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 15.34s + memory 1'953'471.81k + OS Memory 1'977'436.00k + + Call sortn: + FATAL: Insufficient memory to execute DATA step program. + Aborted during the COMPILATION phase. + ERROR: The SAS System stopped processing this step + because of insufficient memory. + + Call quickSortHash: + Sorting time 124.68s + Memory 7'573'720.34k(*) + OS Memory 8'388'448.00k(*) + + Call quickSortLight: + Sorting time 72.41s + Memory 1'955'520.78k + OS Memory 1'977'180.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + D) Array of size 250'000'000 with + random values from 0 to 99'999 range (sparse) + and around 10% of missing data. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 16.07 + Memory 1'953'469.78k + OS Memory 1'977'180.00k + + Call sortn: + FATAL: Insufficient memory to execute DATA step program. + Aborted during the COMPILATION phase. + ERROR: The SAS System stopped processing this step + because of insufficient memory. + + Call quickSortHash: + Sorting time 123.5s + Memory 7'573'722.03k + OS Memory 8'388'448.00k + + Call quickSortLight: + Sorting time 1'338.25s + Memory 1'955'529.90k + OS Memory 1'977'436.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +(*) When using hash tables in `Proc FCMP` the RAM + usage is not indicated properly. The memory + allocation is reported up to the session limit + and then reused if needed. The really required + memory is in fact much less then reported. + +--- + + +--- + +## `quicksorthashsddv()` function ###### + +## >>> `quickSortHashSDDV()` subroutine: <<< ####################### + +The **quickSortHashSDDV()** subroutine is an alternative to the +`CALL SORTN()` subroutine for 1-based big arrays (i.e. `> 10'000'000` elements) +when memory used by `call sortn()` may be an issue. +For smaller arrays the memory footprint is not significant. + +The subroutine is based on an iterative quick sort algorithm +implemented in the `qsortInCbyProcProto()` *C* prototype function. + +The number of "sparse distinct data values" (argument `SDDV`) may +be adjusted to use the hash sort instead of the quick sort. + E.g. when number of unique values for sorting is less then + some *N* then an ordered hash table is used to store the data + and their count and sort them. + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +*Note!* Due to improper memory reporting/releasing for hash + tables in FCMP procedure the report memory used after running + the function may not be in line with the RAM memory required + for processing. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +call quickSortHashSDDV(A, SDDV) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `A` - Argument is a 1-based array of numeric values. + +2. `SDDV` - A number of distinct data values, e.g. 100'000. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** For session with 8GB of RAM + Array of size 250'000'000 with values in range + from 0 to 99'999'999 and around 10% of various + missing values. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let size = 250000000; + options fullstimer; + + data _null_; + array test[&size.] _temporary_ ; + + array m[0:27] _temporary_ + (._ . .A .B .C .D .E .F .G .H .I .J .K .L + .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); + + t = time(); + call streaminit(123); + do _N_ = &size. to 1 by -1; + _I_ + 1; + if rand("uniform") > 0.1 then test[_I_] = int(100000000*rand("uniform")); + else test[_I_] = m[mod(_N_,28)]; + end; + t = time() - t; + put "Array population time: " t; + + put "First 50 elements before sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + + t = time(); + call quickSortHashSDDV (test, 2e4); + t = time()-t; + put "Sorting time: " / t=; + + put; put "First 50 elements after sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 2.** For session with 8GB of RAM + Array of size 250'000'000 with values in range + from 0 to 9'999 and around 10% of various + missing values. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let size = 250000000; + options fullstimer; + + data _null_; + array test[&size.] _temporary_ ; + + array m[0:27] _temporary_ + (._ . .A .B .C .D .E .F .G .H .I .J .K .L + .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); + + t = time(); + call streaminit(123); + do _N_ = &size. to 1 by -1; + _I_ + 1; + if rand("uniform") > 0.1 then test[_I_] = int(10000*rand("uniform")); + else test[_I_] = m[mod(_N_,28)]; + end; + t = time() - t; + put "Array population time: " t; + + put "First 50 elements before sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + + t = time(); + call quickSortHashSDDV (test, 2e4); + t = time()-t; + put "Sorting time: " / t=; + + put; put "First 50 elements after sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `quicksortlight()` function ###### + +## >>> `quickSortLight()` subroutine: <<< ####################### + +The **quickSortLight()** subroutine is an alternative to the +`CALL SORTN()` subroutine for 1-based big arrays (i.e. `> 10'000'000` elements) +when memory used by `call sortn()` may be an issue. +For smaller arrays the memory footprint is not significant. + +The subroutine is based on an iterative quick sort algorithm +implemented in the `qsortInCbyProcProto()` *C* prototype function. + +*Caution!* Array parameters to subroutine calls *must* be 1-based. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +call quickSortLight(A) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `A` - Argument is a 1-based array of numeric values. + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** For session with 8GB of RAM + Array of size 250'000'000 with values in range + from 0 to 99'999'999 and around 10% of various + missing values. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let size = 250000000; + options fullstimer; + + data _null_; + array test[&size.] _temporary_ ; + + array m[0:27] _temporary_ + (._ . .A .B .C .D .E .F .G .H .I .J .K .L + .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z); + + t = time(); + call streaminit(123); + do _N_ = &size. to 1 by -1; + _I_ + 1; + if rand("uniform") > 0.1 then test[_I_] = int(100000000*rand("uniform")); + else test[_I_] = m[mod(_N_,28)]; + end; + t = time() - t; + put "Array population time: " t; + + put "First 50 elements before sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + + t = time(); + call quickSortLight (test); + t = time()-t; + put "Sorting time: " / t=; + + put; put "First 50 elements after sorting:"; + do _N_ = 1 to 20; + put test[_N_] = @; + end; + run; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**Example 2.** Resources comparison for + session with 8GB of RAM. + + Array of size 250'000'000 with random values + from 0 to 999'999'999 and _NO_ missing values. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 8.82s + memory 1'953'470.62k + OS Memory 1'977'436.00k + + Call quickSort4NotMiss: + Sorting time 66.92s + Memory 1'954'683.06k + OS Memory 1'977'436.00k + + Call quickSortLight: + Sorting time 70.98s + Memory 1'955'479.71k + OS Memory 1'977'436.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Example 3.** Resources comparison for + session with 8GB of RAM + + A) Array of size 10'000'000 with + random values from 0 to 9'999 range (sparse) + and around 10% of missing data. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 0.61s + Memory 78'468.50k + OS Memory 101'668.00k + + Call sortn: + Sorting time 0.87s + Memory 1'120'261.53k + OS Memory 1'244'968.00k + + Call quickSortHash: + Sorting time 6.76s + Memory 1'222'242.75k(*) + OS Memory 1'402'920.00k(*) + + Call quickSortLight: + Sorting time 23.45s + Memory 80'527.75k + OS Memory 101'924.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + B) Array of size 10'000'000 with + random values from 0 to 99'999'999 range (dense) + and around 10% of missing data. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 0.6s + Memory 78'463.65k + OS Memory 101'924.00k + + Call sortn: + Sorting time 1.51s + Memory 1'120'253.53k + OS Memory 1'244'968.00k + + Call quickSortHash: + Sorting time 6.28s + Memory 1'222'241.93k(*) + OS Memory 1'402'920.00k(*) + + Call quickSortLight: + Sorting time 0.78s + Memory 80'669.28k + OS Memory 102'436.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + C) Array of size 250'000'000 with + random values from 0 to 999'999'999 range (dense) + and around 10% of missing data. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 15.34s + memory 1'953'471.81k + OS Memory 1'977'436.00k + + Call sortn: + FATAL: Insufficient memory to execute DATA step program. + Aborted during the COMPILATION phase. + ERROR: The SAS System stopped processing this step + because of insufficient memory. + + Call quickSortHash: + Sorting time 124.68s + Memory 7'573'720.34k(*) + OS Memory 8'388'448.00k(*) + + Call quickSortLight: + Sorting time 72.41s + Memory 1'955'520.78k + OS Memory 1'977'180.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + D) Array of size 250'000'000 with + random values from 0 to 99'999 range (sparse) + and around 10% of missing data. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + Array: + Population time 16.07 + Memory 1'953'469.78k + OS Memory 1'977'180.00k + + Call sortn: + FATAL: Insufficient memory to execute DATA step program. + Aborted during the COMPILATION phase. + ERROR: The SAS System stopped processing this step + because of insufficient memory. + + Call quickSortHash: + Sorting time 123.5s + Memory 7'573'722.03k + OS Memory 8'388'448.00k + + Call quickSortLight: + Sorting time 1'338.25s + Memory 1'955'529.90k + OS Memory 1'977'436.00k +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +(*) When using hash tables in `Proc FCMP` the RAM + usage is not indicated properly. The memory + allocation is reported up to the session limit + and then reused if needed. The really required + memory is in fact much less then reported. + +--- + + +--- + +## `%date()` macro ###### + +## >>> `%date()` macro: <<< ####################### + +The date() macro function is a "lazy typer" wrapping up `%sysfunc(date())`. + +See examples below for the details. + +The `%date()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%date() +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + + - `format` - *Optional*, if a value is provided + it should be a valid SAS format capable of handling + values produced by the `date()` function. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Get value of `date()`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %date(); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Get value of `date()` with a format: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %date(date11.); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- + +--- + +## `%datetime()` macro ###### + +## >>> `%datetime()` macro: <<< ####################### + +The datetime() macro function is a "lazy typer" wrapping up `%sysfunc(datetime())`. + +See examples below for the details. + +The `%datetime()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%datetime() +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + + - `format` - *Optional*, if a value is provided + it should be a valid SAS format capable of handling + values produced by the `datetime()` function. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Get value of `datetime()`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %datetime(); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 1.** Get value of `datetime()` as "long" and "short" ISO-8601: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %datetime(e8601dt.); + %put %datetime(b8601dt.); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 1.** Get value of `datetime()` with user defined format: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + proc format; + picture myCrazyDT (default=50) + other='%0Ssec. %0Mmin. %0Hhour %0dday %0mmonth %Yyear' (datatype=datetime) + ; + run; + + %put %datetime(myCrazyDT.); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%downloadfilesto()` macro ###### + ## >>> `%downloadFilesTo()` macro: <<< ####################### The downloadFilesTo() macro copy files (in binary mode @@ -4145,6 +5398,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Download data from web with diect list and then copy between directories: @@ -4183,1121 +5437,11 @@ run; --- -## >>> `%LDSN()` macro: <<< ####################### - -The LDSN (Long DataSet Names) macro function -allows to use an "arbitrary" text string to name a dataset. - -The LDSN macro has some limitation described below, to overcome them -another macro, with different name: LDSNM (Long DataSet Names Modified) -was created. See its description to learn how to use it. - ---- - -The idea for the macro came from the following story: - -Good friend of mine, who didn't use SAS for quite some time, -told me that he lost a few hours for debugging because -he forgot that the SAS dataset name limitation is 32 bytes. - -I replied that it shouldn't be a problem to do a workaround -for this inconvenience with a macro and the `MD5()` hashing function. - -I said: *The macro should take an "arbitrary string" for a dataset -name, convert it, with help of `MD5()`, to a hash digest, and -create a dataset with an "artificial" `hex16.` formated name.* - -Starting with something like this: - -~~~~~~~~~~~~~~~~~~~~~~~sas -data %LDSN(work. peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s (drop = sex rename=(name=first_name) where = (age in (12,13,14))) ); - set sashelp.class; -run; -~~~~~~~~~~~~~~~~~~~~~~~ - -the macro would do: - -~~~~~~~~~~~~~~~~~~~~~~~sas -%sysfunc(MD5(peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s), hex16.) -~~~~~~~~~~~~~~~~~~~~~~~ - -and (under the hood) return and execute the following code: - -~~~~~~~~~~~~~~~~~~~~~~~sas -data work.DSN_41D599EF51FBA58_(drop = sex rename=(name=first_name) where = (age in (12,13,14))) ; - set sashelp.class; -run; -~~~~~~~~~~~~~~~~~~~~~~~ - -Also in the next data step user should be able to do: - -~~~~~~~~~~~~~~~~~~~~~~~sas -data my_next_data_step; - set %DSN(work. peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s); -run; -~~~~~~~~~~~~~~~~~~~~~~~ - -and work without the "dataset-name-length-limitation" issue. - ---- - -See examples below for the details. - -The `%LDSN()` macro executes like a pure macro code. - -**Known "Limitations":** - -- dataset name _cannot_ contain dots (`.`) since they are used as separators! - -- dataset name _cannot_ contain round brackets(`(` and `)`) since they are used as separators - (but `[]` and `{}` are allowed)! - -- dataset name _cannot_ contain unpaired quotes (`'` and `"`), - text: `a "hot-dog"` is ok, but `John's dog` is not! - -**Behaviour:** - -- dataset name text is *converted to upcase* - -- dataset name text *leading and trailing spaces are ignored*, - e.g. the following will give the same hash digest: - `%ldsn(work.test)`, `%ldsn( work.test)`, `%ldsn(work.test )`, - `%ldsn(work .test)`, `%ldsn(work. test)`, `%ldsn(work . test)`. - -- macro calls of the form: - `data %LDSN(); run;`, `data %LDSN( ); run;`, `data %LDSN( . ); run;` or even - `data %LDSN( . (keep=x)); run;` are resolved to empty string, so the result is - equivalent to `data; run;` - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%LDSN( - arbitrary text string (in line with limitations) -) -~~~~~~~~~~~~~~~~~~~~~~~ - -The text string is concider as *"fully qualified dataset name"*, i.e. macro -assumes it may contain library as prefix and data set options as sufix. -See the `%LDsNm()` macro for comparison. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -options nomprint source nomlogic nosymbolgen ls = max ps = max; - -data %LDSN( work. peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s (drop = sex rename=(name=first_name) where = (age in (12,13,14))) ); - set sashelp.class; -run; - -proc print data = %LDSN( work. peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ); -run; - -data MyNextDataset; - set %LDSN( work. peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ); - where age > 12; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%LDSNM()` macro: <<< ####################### - -The LDSNM (Long DataSet Names Modified) macro function -allows to use an "arbitrary" text string to name a dataset. - -The LDSN macro had some limitation (see its documentation), to overcome them -another `%LDSNM()` (Long DataSet Names Modified) macro was created. - -The main idea behind the `%LDSNM()` is the same as for `%LDSN()` - see the description there. - ---- - -The `%LDSNM()` macro works differently than the `%LDSN()` macro. - -The `%LDSN()` macro assumes that *both* libname and dataset options *are* -be passed as elements **inside** the macro argument, together with the data set name. E.g. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data %LDSN( WORK.peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s (drop = sex) ); - set sashelp.class; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The `%LDSNM()` macro, in contrary, assumes that both libname and dataset options are -passed **outside** the macro parameter, i.e. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data WORK.%LDSNM( peanut butter & jelly with a hot-dog in [a box] and s*t*a*r*s ) (drop = sex); - set sashelp.class; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This approach overcomes some limitations the LDSN has. - -The **additional** feature of the `%LDSNM()` is that when the macro is called, -a global macrovariable is created. -The macro variable name is the text of the hashed data set name. -The macro variable value is the text of the unhashed data set name (i.e. the argument of the macro). -For example the following macro call: - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data %LDSNM(John "x" 'y' dog); - set sashelp.class; - where name = 'John'; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -creates macro variable with name `DSN_BF1F8C4D6495B34A_` and with value: `JOHN "X" 'Y' DOG`. - -The macrovariable is useful when combined with `symget()` function and -the `indsname=` option to get the original text string value back, -like in this example: - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data test; - set %LDSNM(John "x" 'y' dog) indsname = i; - indsname = symget(scan(i,-1,".")); -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -See examples below for the details. - ---- - -The `%LDSN()` macro executes like a pure macro code. - -**Known "Limitations":** - -- dataset name _cannot_ contain _unpaired_ round brackets(`(` and `)`) - (but unmatched `[]` and `{}` are allowed)! - -- dataset name _cannot_ contain _unpaired_ quotes (`'` and `"`), - text: `a "hot-dog"` is ok, but `John's dog` is not! - -**Behaviour:** - -- dataset name text is *converted to upcase* - -- dataset name text *leading and trailing spaces are ignored*, - e.g. the following will give the same hash digest: - `%ldsn(test)`, `%ldsn( test)`, `%ldsn(test )`. - -- macro calls of the form: - `data %LDSN(); run;` or `data %LDSN( ); run;` are resolved - to empty string, so the result is equivalent to `data; run;` - -- created macrovariable is _global_ in scope. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%LDSNM( - arbitrary text string (in line with limitations) -) -~~~~~~~~~~~~~~~~~~~~~~~ - -The text string is considered as *"only dataset name"*, i.e. the macro does not -assume it contains library as prefix or data set options as suffix. -See the `%LDSN()` macro for comparison. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data %LDSNM(John "x" 'y' & dog); - set sashelp.class; - where name = 'John'; -run; - -data %LDSNM(John "x"[ 'y' & dog); - set sashelp.class; - where name = 'John'; -run; - -data %LDSNM(John "x" 'y'} & dog); - set sashelp.class; - where name = 'John'; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data work.%LDsNm( peanut butter & jelly, a hot-dog in [a box], and s(*)t(*)a(*)r(*)s!! ) (drop = sex rename=(name=first_name) where = (age in (12,13,14))) -; - set sashelp.class; -run; - -data test; - set work.%LDsNm( peanut butter & jelly, a hot-dog in [a box], and s(*)t(*)a(*)r(*)s!! ) indsname=i; - - indsname=symget(scan(i,-1,".")); -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data work.%LDsNm( . ); - set sashelp.class; -run; - -data %LDsNm( ); - set sashelp.class; -run; - - -data %LDsNm(); - set sashelp.class; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%LVarNm()` macro: <<< ####################### - -The LVarNm() macro function works like the LDSN() macro function, but for variables. -Supported by LVarNmLab() macro function which allows to remember "user names" in labels. - -The motivation for the macro was similar to that for the LDSN() macro. - ---- - -See examples below for the details. - -The `%LVarNm()` macro executes like a pure macro code. - -**Known "Limitations":** - -- variable name _cannot_ contain unpaired quotes (`'` and `"`), - text: `a "hot-dog"` is ok, but `John's dog` is not! - -**Behaviour:** - -- variable name text is *converted to upcase* - -- variable name text *leading and trailing spaces are ignored*, - e.g. the following will give the same hash digest: - `%LVarNm(test)`, `%LVarNm( test)`, `%LVarNm(test )`. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%LVarNm( - arbitrary text string (in line with limitations) -) -~~~~~~~~~~~~~~~~~~~~~~~ - ---- - - -### EXAMPLES AND USE CASES: #################################################### - -**EXAMPLE 1.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -options ls=max; -data test; - %LVarNmLab( peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ) - - do %LVarNm( peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ) = 1 to 10; - - y = 5 + %LVarNm( peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ) * 17; - output; - end; -run; - -data test2; - set test; - where %LVarNm( peanut butter & jelly with a "Hot-Dog" in [a box], popcorn, and s*t*a*r*s ) < 5; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data test3; - %LVarNmLab() = 17; - - %LVarNm() = 17; - - %LVarNm( ) = 42; - - %LVarNm( ) = 303; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data test3; - %LVarNm(test) = 1; - - %LVarNm( test) = 2; - - %LVarNm(test ) = 3; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data test4; - array X[*] %LVarNm(some strange! name)_0 - %LVarNm(some strange! name)_10; - - do i = lbound(X) to hbound(X); - X[i] = 2**(i-1); - put X[i]=; - end; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -## >>> `%LVarNmLab()` macro: <<< ####################### - -The LVarNmLab() macro function supports LVarNm() and allows to remember "user names" in labels. - -The motivation for the macro was similar one as for the LDSN() macro. - ---- - -See examples in LVarNm() documentation for the details. - -The `%LVarNmLab()` macro executes like a pure macro code. - -**Known "Limitations":** - -- variable name _cannot_ contain unpaired quotes (`'` and `"`), - text: `a "hot-dog"` is ok, but `John's dog` is not! - -**Behaviour:** - -- variable name text is *converted to upcase* - -- variable name text *leading and trailing spaces are ignored*, - e.g. the following will give the same hash digest: - `%LVarNmLab(test)`, `%LVarNmLab( test)`, `%LVarNmLab(test )`. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%LVarNmLab( - arbitrary text string (in line with limitations) -) -~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%bpPIPE()` macro: <<< ####################### - -The bpPIPE() [Base Plus PIPE] macro executes OS command -and print to the log output of the execution. - -Under the hood it uses `_` filename reference to PIPE device. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%bpPIPE( ) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -* **NO Arguments** - Everything inside brackets is treated as an OS command. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** List, to the log, content of D and C drives: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %bpPIPE(D: & dir & dir "C:\") -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** List, to the log, content of `home` directory: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %bpPIPE(ls -halt ~/) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%dirsAndFiles()` macro: <<< ####################### - -The `%dirsAndFiles()` macro allows to extract info about all files -and subdirectories of a given `root` directory. - -The extracted info may be just a list of files and subdirectories or, if -the `details=` parameter is set to 1, additional operating system information -is extracted (information is OSS dependent and gives different results for Linux -and for Windows) - -The extracted info can be narrowed down to files (`keepFiles=1`) or to -directories (`keepDirs=1`) if need be. - -The extracted info can be presented in wide or long format (`longFormat=1`). - -The extracted info for files can be narrowed down to only files with particular -extension, for example: `fileExt=sas7bdat`. - -The extracted info can be narrowed down maximal path depth -by setting up the `maxDepth=` parameter. - -See examples below for the details. - -### REFERENCES: ################################################################### - -The macro is based on Kurt Bremser's "*Talking to Your Host*" article -presented at WUSS 2022 conference. - -The article is available [here](https://communities.sas.com/t5/SAS-User-Groups-Library/WUSS-Presentation-Talking-to-Your-Host/ta-p/838344) -and also as an additional content of this package. -The paper was awarded the "Best Paper Award - Programming". - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles( - root - <,ODS=> - <,details=> - <,keepDirs=> - <,keepFiles=> - <,longFormat=> - <,fileExt=> - <,maxDepth=> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `root` - *Required*, path to be searched - for information. - -* `ODS=work.dirsAndFilesInfo` - *Optional*, output data set, - name of a dataset to store information. - -* `details=0` - *Optional*, indicates if detailed info - will be collected, `1` = yes, `0` = no. - -* `keepDirs=1` - *Optional*, indicates if directories info - will be collected, `1` = yes, `0` = no. - -* `keepFiles=1` - *Optional*, indicates if files info - will be collected, `1` = yes, `0` = no. - -* `longFormat=0` - *Optional*, indicates if output be - in long format, `1` = yes, `0` = no. - -* `fileExt=` - *Optional*, if not missing then indicates - file extension to filter out results. - -* `maxDepth=0` - *Optional*, if not zero then indicates - maximum depth of search in the root path. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Get list of files and directories: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(C:\SAS_WORK\,ODS=work.result1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Get detailed info: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(C:\SAS_WORK\,ODS=work.result2,details=1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Get only files info: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(C:\SAS_WORK\,ODS=work.result3,keepDirs=0) - -%dirsAndFiles(C:\SAS_WORK\,ODS=work.result5,keepDirs=0,details=1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** Get only directories info: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(C:\SAS_WORK\,ODS=work.result4,keepFiles=0) - -%dirsAndFiles(C:\SAS_WORK\,ODS=work.result6,keepFiles=0,details=1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 5.** Filter out by `sas` extension: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(~/,ODS=work.result7,fileExt=sas) - -%dirsAndFiles(~/,ODS=work.result8,fileExt=sas,details=1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 6.** Keep result in the long format: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(~/,ODS=work.result9,details=1,longFormat=1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 7.** Get info for maximum depth of 2: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(C:\SAS_WORK\,ODS=work.result10,details=1,maxDepth=2) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 8.** How locked/unavailable files are handled: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(%sysfunc(pathname(WORK)),ODS=work.result11,details=1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 9.** Not existing directory: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%dirsAndFiles(%sysfunc(pathname(WORK))/noSuchDir,ODS=work.result12,details=1) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%repeatTxt()` macro: <<< ####################### - -The repeatTxt() macro function allows to repeat `n` -times a `text` string separated by string `s=`. - -The repeatTxt() returns unquoted value [by %unquote()]. - -See examples below for the details. - -The `%repeatTxt()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%repeatTxt( - text - <,n> - <,s=> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `text` - *Required*, a text to be repeated. - -2. `n` - *Required/Optional*, the number of repetitions. - If missing then set to `1`; - -* `s = %str( )` - *Optional*, it is a separator between - repeated elements. Default value is space. ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Simple repetition of dataset name: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -options mprint; -data work.test5; - set - %repeatTxt(sashelp.cars, 5) - ; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Simple repetition of data step: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -options mprint; -%repeatTxt(data _null_; set sashelp.cars; run;, 3) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** "Nice" output: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put %repeatTxt(#,15,s=$) HELLO SAS! %repeatTxt(#,15,s=$); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** Macroquote a text with commas: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%repeatTxt( - %str(proc sql; create table wh as select weight,height from sashelp.class; quit;) - ,3 -) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 5.** Empty `n` repeats `text` one time: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -options mprint; -data work.test1; - set - %repeatTxt(sashelp.cars) - ; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 6.** Dynamic "formatting": -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%macro printWork(); - %let work=%sysfunc(pathname(work)); - %put +%repeatTxt(~,%length(&work.)+5,s=)+; - %put {&=work.}; - %put +%repeatTxt(~,%length(&work.)+5,s=)+; -%mend printWork; - -%printWork() -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%repList()` macro: <<< ####################### - -The repList() macro function allows to repeat `T` -times elements of a `L` list, possibly `E` times each element, -separated by string `S`. - -See examples below for the details. - -The `%repList()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%repList( - list - <,times=> - <,each=> - <,lenghtOut=> - <,sep=> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `list` - *Required*, a list of elements to be repeated. - List can be space or comma separated. - Elements can be in quotes. - For comma separated list add brackets - e.g., `%repList((A,B,C,D),times=5)`. - The list separators are: `<{[( ,;)]}>`. - -* `times=` - *Optional*, An integer indicating - the number of repetitions. - By default set to `1`. - - -* `each=` - *Optional*, A list of integers indicating - the number of repetitions of each element of the list - e.g., for a list `A B C` and the `each=2 4` the result - is `A A B B B B C C`. If the number of integers is less - then the length of the list values are recycled from - the beginning. - By default set to `1`. - -* `lenghtOut=` - *Optional*, An integer indicating - after what the number of repetitions process will stop. - By default set to `0` which means "do not stop". - -* `sep=` - *Optional*, it is a separator printed between - repeated elements. Mnemonics for *space* is `s`, - for *comma* is `c`, and for semicolon in `q`. - Default value is a single space. - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Simple repetition of all elements: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put %repList((A,B,C,D), times=3); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Simple repetition of each element: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put %repList(("A",'B',"C",'D'), each=3); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Simple repetition with a separator: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put %repList(A10;B20;C30, times=3, each=2, sep=Q); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** Recycle elements up to 8 with a comma as a separator: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put %repList(1 2 3, lenghtOut=8, sep=c); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 5.** Separate number of repetitions for each element: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put [%repList([D][C][B][A], each = 2 3 5 7, sep=] [)]; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**EXAMPLE 6.** "ASCII art" butterflies: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put {>%repList(! $ |, times = 2, each =2 1, sep=<} ... {>)<}; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 7.** Data repeating: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -data A; - x=17; -data B; - x=42; -data C; - x=303; -run; - -data Times2_A10B11C12; - set - %repList(A B C, times = 2, each =10 11 12) - ; -run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - ---- - - -## >>> `%intsList()` macro: <<< ####################### - -The intsList() macro function allows to print a list of -integers starting from `start` up to `end` incremented by `by` -and separated by `sep=`. - -If `start`, `end` or `by` are non-integers the are converted to integers. - -See examples below for the details. - -The `%intsList()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%intsList( - start - <,end> - <,by> - <,sep=> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `start` - *Required*, the first value of the list. - If `end` is missing then the list is generated - from 1 to `start` by 1. - -2. `end` - *Required/Optional*, the last value of the list. - -3. `by` - *Required/Optional*, the increment of the list. - If missing then set to `1`. - *Cannot* be equal to `0`. - -* `s = %str( )` - *Optional*, it is a separator between - elements of the list. Default value is space. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Simple list of integers from 1 to 10 by 1: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %intsList(10); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Ten copies of `sashelp.class` in `test11` to `test20`: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data - %zipEvalf(test, %intsList(11,20)) - ; - set sashelp.class; - run; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Non-integers are converted to integers, the list is `1 3 5`: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %intsList(1.1,5.2,2.3); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** A list with a separator: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %intsList(1,5,2,sep=+); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%letters()` macro: <<< ####################### - -The letters() macro function allows to print a list of Roman -letters starting from `start` up to `end` incremented by `by`. -The letters list can be uppercases or lowercase (parameter `c=U` or `c=L`), -can be quoted (e.g. `q=""` or `q=[]`), and can be separated by `s=`. - -Values of `start`, `end`, and `by` have to be integers in range between 1 ad 26. - -See examples below for the details. - -The `%letters()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%letters( - range - <,c=> - <,q=> - <,s=> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `range` - *Required*, letters selector in form `start:end:by`. - Lists letters from `start` to `end` by `by`. - Values of `start`, `end`, and `by` are separated by - colon and must be between 1 ad 26. - If value is outside range it is set to - `start=1`, `en=26`, and `by=1`. If `end` is missing - then is set to value of `start`. - If `end` is smaller than `start` list is reversed - -* `c = U` - *Optional*, it is a lowercase letters indicator. - Select `L` or `l`. Default value is `U` for upcase. - -* `q = ` - *Optional*, it is a quite around elements of the list. - Default value is empty. Use `%str()` for one quote symbol. - If there are multiple symbols, only the first and the - second are selected as a preceding and trailing one, - e.g. `q=[]` gives `[A] [B] ... [Z]`. - -* `s = %str( )` - *Optional*, it is a separator between - elements of the list. Default value is space. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Space separated list of capital letters from A to Z: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %letters(1:26:1); - - %put %letters(); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** First, thirteenth, and last letter: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %letters(1) %letters(13) %letters(26); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Every third lowercase letter, i.e. `a d g j m p s v y`: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %letters(1:26:3,c=L); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** Lists with separators: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %letters(1:26:2,s=#); - %put %letters(1:26:3,s=%str(;)); - %put %letters(1:26:4,s=%str(,)); - %put %letters(1:26,s=); - %put %letters(1:26,s==); - %put %letters(1:26,s=/); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 5.** Every second letter with quotes: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %letters(1:26:2,q=%str(%')); - %put %letters(2:26:2,q=%str(%")); - - %put %letters(1:26:2,q=''); - %put %letters(2:26:2,q=""); - - %put %letters(1:26:2,q=<>); - %put %letters(2:26:2,q=\/); - - %put %letters(1:26:2,q=()); - %put %letters(2:26:2,q=][); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 6.** Mix of examples 4, 5, and 6: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %letters(1:26,c=L,q='',s=%str(, )); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 7.** If `end` is smaller than `start` list is reversed: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %letters(26:1:2,q=''); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%splitDSIntoBlocks()` macro: <<< ####################### - -The splitDSIntoBlocks() macro allows to split the `set` dataset into blocks -of size `blockSize` in datasets: `prefix1` to `prefixN`. - -The last dataset may have less observations then the `blockSize`. - -Macro covers `BASE` engine (`v9`, `v8`, `v7`, `v6`) and `SPDE` engine datasets. - -See examples below for the details. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%splitDSIntoBlocks( - blockSize - <,set> - <,prefix> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `blockSize` - *Required*, the size of the block of data, - in other words number of observations in - one block of split data. - Block size must be positive integer. - -2. `set` - *Required/Optional*, the name of the dataset to split. - If empty then `&syslast.` is used. - -3. `prefix` - *Required/Optional*, the name-prefix for new datasets. - If missing then set to `part`. - --- -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Split `sashelp.class` into 5 elements datasets ABC1 to ABC4: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %splitDSIntoBlocks(5,sashelp.class,ABC) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** By default splits the `_last_` dataset into `part1` to `partN` datasets: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data lastData; - set sashelp.cars; - run; - - %splitDSIntoBlocks(123) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Works with `SPDE` engine too: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - options dlcreatedir; - libname test "%sysfunc(pathname(work))/testSPDE"; - libname test; - libname test SPDE "%sysfunc(pathname(work))/testSPDE"; - - data test.test; - set sashelp.cars; - run; - - %splitDSIntoBlocks(100,test.test,work.spde) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%splitDSIntoParts()` macro: <<< ####################### - -The splitDSIntoParts() macro allows to split the `set` dataset into `parts` parts -of approximately `NOBS/parts` size in datasets: `prefix1` to `prefixN`. - -The splitDSIntoParts() macro internally runs the splitDSIntoBlocks() macro. - -Macro covers `BASE` engine (`v9`, `v8`, `v7`, `v6`) and `SPDE` engine datasets. - -See examples below for the details. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%splitDSIntoParts( - parts - <,set> - <,prefix> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `parts` - *Required*, the number of parts to split data into. - Number of parts must be positive integer. - -2. `set` - *Required/Optional*, the name of the dataset to split. - If empty then `&syslast.` is used. - -3. `prefix` - *Required/Optional*, the name-prefix for new datasets. - If missing then set to `part`. - ---- +## `%filepath()` macro ###### -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Split `sashelp.cars` into 7 parts: datasets carsInParts1 to carsInParts7: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %splitDSIntoParts(7,sashelp.cars, carsInParts) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** By default splits the `_last_` dataset into `part1` to `part3` datasets: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data lastData; - set sashelp.cars; - run; - - %splitDSIntoBlocks(3) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Works with `SPDE` engine too: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - options dlcreatedir; - libname test "%sysfunc(pathname(work))/testSPDE"; - libname test; - libname test SPDE "%sysfunc(pathname(work))/testSPDE"; - - data test.test; - set sashelp.cars; - run; - - %splitDSIntoParts(3,test.test,work.spde) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - ## >>> `%filePath()` macro: <<< ####################### The filePath() macro function returns path to a file, @@ -5322,6 +5466,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Return path to temporary file: @@ -5332,465 +5477,11 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## >>> `%libPath()` macro: <<< ####################### - -The libPath() macro function returns path to a library, -it is a wrapper to `pathname()` function for libraries. - -See examples below for the details. - -The `%libPath()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%libPath( - libref -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `libref` - *Required*, a libref from the `libname` statement. - + --- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Return path to `WORK` library: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %libPath(WORK); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Return path to `SASHELP` library: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %libPath(SASHELP); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%workPath()` macro: <<< ####################### - -The workPath() macro function returns path to the `WORK` library, -it is a wrapper to `pathname("work", "L")` function. - -See examples below for the details. - -The `%workPath()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%workPath() -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -*) No arguments. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Create new library inside `WORK` library: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - options dlCreateDir; - libname NEW "%workPath()/new"; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%date()` macro: <<< ####################### - -The date() macro function is a "lazy typer" wrapping up `%sysfunc(date())`. - -See examples below for the details. - -The `%date()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%date() -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - - No arguments. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Get value of `date()`: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %date(); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - +## `%finddswithvarval()` macro ###### -## >>> `%today()` macro: <<< ####################### - -The today() macro function is a "lazy typer" wrapping up `%sysfunc(today())`. - -See examples below for the details. - -The `%today()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%today() -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - - No arguments. - ---- - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Get value of `today()`: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %today(); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - - -## >>> `%time()` macro: <<< ####################### - -The time() macro function is a "lazy typer" wrapping up `%sysfunc(time())`. - -See examples below for the details. - -The `%time()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%time() -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - - No arguments. - ---- - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Get value of `time()`: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %time(); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - - -## >>> `%datetime()` macro: <<< ####################### - -The datetime() macro function is a "lazy typer" wrapping up `%sysfunc(datetime())`. - -See examples below for the details. - -The `%datetime()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%datetime() -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - - No arguments. - ---- - - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Get value of `datetime()`: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %datetime(); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%monthShift()` macro: <<< ####################### - -The monthShift() macro is a utility macro -which allows to shift "year-month" period by -a given number of "periods" (months). - -The result is in the `YYYYMM` format but can be altered. - -See examples below for the details. - -The `%monthShift()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%monthShift( - < Y> - <,M> - <,shift> - <,ofmt=> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `Y` - *Optional*, a year from which counting starts. - If null the value is set to *system year*. - -2. `M` - *Optional*, a month from which counting starts. - If null the value is set to `1`. Can be a number - (`1` to `12`) or a name (`June`, `OCTOBER`) or - a three letters short (`JAN`, `apr`). - -3. `shift` - *Optional*, number of periods to shift. - If null the value is set to `0`. - Positive value shifts to the "future", - negative value shifts to the "past", - Can be an expression (e.g. `1+2*3`, see examples). - -* `ofmt=YYMMn6.` - *Optional*, it is a format name used to - display the result. Default value is `YYMMn6.` - See examples. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Shift one up and one down: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas -%put - Past: %monthShift(2023, 1, -1) - Current: %monthShift(2023, 1 ) - Future: %monthShift(2023, 1, +1) -; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Shift by expression: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %let n = 2; - %put - %monthShift(2023, 1, +1 + &n.*3) - ; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Shift with default values: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %monthShift(); - %put %monthShift(2023); - %put %monthShift(2023,Jan); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** Shift with months names: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put - %monthShift(2023,Jan,-1) - %monthShift(2023,Feb,-2) - %monthShift(2023,Mar,-3) - %monthShift(2023,Apr,-4) - %monthShift(2023,May,-5) - %monthShift(2023,Jun,-6) - %monthShift(2023,Jul,-7) - %monthShift(2023,Aug,-8) - %monthShift(2023,Sep,-9) - %monthShift(2023,Oct,-10) - %monthShift(2023,Nov,-11) - %monthShift(2023,Dec,-12) - ; - - %put - %monthShift(2023,January,12) - %monthShift(2023,February,11) - %monthShift(2023,March,10) - %monthShift(2023,April,9) - %monthShift(2023,May,8) - %monthShift(2023,June,7) - %monthShift(2023,July,6) - %monthShift(2023,August,5) - %monthShift(2023,September,4) - %monthShift(2023,October,3) - %monthShift(2023,November,2) - %monthShift(2023,December,1) - ; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 5.** Play with formatting: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put - %monthShift(2023, 1, +1 ) - %monthShift(2023, 1, +1, ofmt=yymm7. ) - %monthShift(2023, 1, +1, ofmt=yymmd7.) - %monthShift(2023, 1, +1, ofmt=yymms7.) - ; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 6.** Read monthly data with `noDSNFERR` option: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - data - A202210 A202211 A202212 - A202301 A202302 A202303 - A202304 A202305 A202306 - A202307 A202308 A202309 - ; - set sashelp.class; - run; - - - options noDSNFERR; - data ALL; - set - A%monthShift(2023, 9, -12) - A%monthShift(2023, 9) - ; - run; - options DSNFERR; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - - -## >>> `%translate()` macro: <<< ####################### - -The translate() macro function allows to replace bytes with bytes in text string. - -See examples below for the details. - -The `%translate()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%translate( - string - ,from - ,to -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `string` - *Required*, string to modify. - -2. `from` - *Required*, list of bytes to be replaced with - corresponding bytes from `to`. - -3. `to` - *Required*, list of bytes replacing - corresponding bytes from `from`. - ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Replace quotes and commas with apostrophes and spaces: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %translate(%str("A", "B", "C"),%str(%",),%str(%' )); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Unify all brackets; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %translate(%str([A] {B} (C) ),{[(<>)]},(((())))); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Replace all digits with `*`: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %translate(QAZ1WSSX2EDC3RFV4TGB5YHN6UJM7IK8OL9P0,1234567890,**********); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 4.** Letters change: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %translate(%str(A=B),AB,BA); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ---- - -## >>> `%tranwrd()` macro: <<< ####################### - -The tranwrd() macro function allows to replace substrings -with other substrings in text string. - -Returned string is unquoted by `%unquote()`. - -See examples below for the details. - -The `%tranwrd()` macro executes like a pure macro code. - -### SYNTAX: ################################################################### - -The basic syntax is the following, the `<...>` means optional parameters: -~~~~~~~~~~~~~~~~~~~~~~~sas -%tranwrd( - string - ,from - ,to - <,repeat> -) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Arguments description**: - -1. `string` - *Required*, string to modify. - -2. `from` - *Required*, substring replaced with - corresponding string from `to`. - -3. `to` - *Required*, substring replacing - corresponding substring from `from`. - -4. `repeat` - *Optional*, number of times the replacing - should be repeated, default is 1. - Useful while removing multiple adjacent - characters, e.g. compress all multiple - spaces (see example 2). ---- - -### EXAMPLES AND USECASES: #################################################### - -**EXAMPLE 1.** Simple text replacement: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %tranwrd(Miss Joan Smith,Miss,Ms.); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 2.** Delete multiple spaces; -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %tranwrd(%str(A B C),%str( ),%str( ),5); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -**EXAMPLE 3.** Remove substring: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %tranwrd(ABCxyzABCABCxyzABC,ABC); -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ## >>> `%findDSwithVarVal()` macro: <<< ####################### The findDSwithVarVal() macro searches for all @@ -5869,6 +5560,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Search variable `NAME` containing value `John`: @@ -5913,6 +5605,80 @@ The basic syntax is the following, the `<...>` means optional parameters: --- + +--- + +## `%fmt()` macro ###### + +## >>> `%fmt()` macro: <<< ####################### + +The fmt() macro function returns a `value` formatted by a `format`, +it is a wrapper to `putN()` and `putC()` functions. + +See examples below for the details. + +The `%fmt()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%fmt( + value + ,format + ,align + <,type=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `value` - *Required*, a value to be formatted. + +2. `format` - *Required*, a name of a format to be used, + character format should be preceded by the `$`. + +3. `align` - *Optional*, allows to use the `-L`, `-R` and `-C` modifiers. + +* `type=n` - *Optional*, defines type of the format. If the format + name is preceded by the `$` then C is set automatically. + If the character format name is without `$` then set + value to `C` yourself. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Formatting values: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %fmt(111, 7.2); + + %put %fmt(111, dollar10.2); + + %put %fmt(abc, $upcase.); + + %put %fmt(12345, date9.); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Align values (compare different results!): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put *%fmt(ABC, $char9., -L)*; + %put *%fmt(ABC, $char9., -R)*; + %put *%fmt(ABC, $char9., -C)*; + + %put %fmt(ABC, $char9., -L); + %put %fmt(ABC, $char9., -R); + %put %fmt(ABC, $char9., -C); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%gettitle()` macro ###### + ## >>> `%getTitle()` macro: <<< ####################### The getTitle() macro extract text of titles or footnotes @@ -5962,6 +5728,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Get titles in different forms: @@ -5993,6 +5760,231 @@ The basic syntax is the following, the `<...>` means optional parameters: --- + +--- + +## `%infmt()` macro ###### + +## >>> `%infmt()` macro: <<< ####################### + +The infmt() macro function returns a `value` read in by an `informat`, +it is a wrapper to `inputN()` and `inputC()` functions. + +See examples below for the details. + +The `%infmt()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%infmt( + value + ,informat + <,type=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `value` - *Required*, a value to be formatted. + +2. `informat` - *Required*, a name of a format to be used, + character format should be preceded by the `$`. + +* `type=n` - *Optional*, defines type of the informat. If the informat + name is preceded by the `$` then C is set automatically. + If the character format name is without `$` then set + value to `C` yourself. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Informatting values: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %infmt(111, 7.2); + %put %infmt(111.234, 7.2); + + %put %infmt($111, dollar10.2); + %put %infmt($111.234, dollar10.2); + + %put %infmt(abc, $upcase.); + + %put %infmt(12mar45, date9.); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%letters()` macro ###### + +## >>> `%letters()` macro: <<< ####################### + +The letters() macro function allows to print a list of Roman +letters starting from `start` up to `end` incremented by `by`. +The letters list can be uppercases or lowercase (parameter `c=U` or `c=L`), +can be quoted (e.g. `q=""` or `q=[]`), and can be separated by `s=`. + +Values of `start`, `end`, and `by` have to be integers in range between 1 ad 26. + +See examples below for the details. + +The `%letters()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%letters( + range + <,c=> + <,q=> + <,s=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `range` - *Required*, letters selector in form `start:end:by`. + Lists letters from `start` to `end` by `by`. + Values of `start`, `end`, and `by` are separated by + colon and must be between 1 ad 26. + If value is outside range it is set to + `start=1`, `en=26`, and `by=1`. If `end` is missing + then is set to value of `start`. + If `end` is smaller than `start` list is reversed + +* `c = U` - *Optional*, it is a lowercase letters indicator. + Select `L` or `l`. Default value is `U` for upcase. + +* `q = ` - *Optional*, it is a quite around elements of the list. + Default value is empty. Use `%str()` for one quote symbol. + If there are multiple symbols, only the first and the + second are selected as a preceding and trailing one, + e.g. `q=[]` gives `[A] [B] ... [Z]`. + +* `s = %str( )` - *Optional*, it is a separator between + elements of the list. Default value is space. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Space separated list of capital letters from A to Z: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %letters(1:26:1); + + %put %letters(); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** First, thirteenth, and last letter: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %letters(1) %letters(13) %letters(26); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Every third lowercase letter, i.e. `a d g j m p s v y`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %letters(1:26:3,c=L); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** Lists with separators: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %letters(1:26:2,s=#); + %put %letters(1:26:3,s=%str(;)); + %put %letters(1:26:4,s=%str(,)); + %put %letters(1:26,s=); + %put %letters(1:26,s==); + %put %letters(1:26,s=/); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 5.** Every second letter with quotes: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %letters(1:26:2,q=%str(%')); + %put %letters(2:26:2,q=%str(%")); + + %put %letters(1:26:2,q=''); + %put %letters(2:26:2,q=""); + + %put %letters(1:26:2,q=<>); + %put %letters(2:26:2,q=\/); + + %put %letters(1:26:2,q=()); + %put %letters(2:26:2,q=][); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 6.** Mix of examples 4, 5, and 6: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %letters(1:26,c=L,q='',s=%str(, )); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 7.** If `end` is smaller than `start` list is reversed: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %letters(26:1:2,q=''); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%libpath()` macro ###### + +## >>> `%libPath()` macro: <<< ####################### + +The libPath() macro function returns path to a library, +it is a wrapper to `pathname()` function for libraries. + +See examples below for the details. + +The `%libPath()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%libPath( + libref +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `libref` - *Required*, a libref from the `libname` statement. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Return path to `WORK` library: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %libPath(WORK); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Return path to `SASHELP` library: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %libPath(SASHELP); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%minclude()` macro ###### + ## >>> `%mInclude()` macro: <<< ####################### The mInclude() macro is a macrolanguage version of the SAS `%include` statement. @@ -6042,6 +6034,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- + ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Embedding text in statements (the `%include` won't work here): @@ -6200,128 +6193,535 @@ quit; --- -## >>> `%fmt()` macro: <<< ####################### + +--- + +## `%monthshift()` macro ###### + +## >>> `%monthShift()` macro: <<< ####################### -The fmt() macro function returns a `value` formatted by a `format`, -it is a wrapper to `putN()` and `putC()` functions. +The monthShift() macro is a utility macro +which allows to shift "year-month" period by +a given number of "periods" (months). + +The result is in the `YYYYMM` format but can be altered. See examples below for the details. -The `%fmt()` macro executes like a pure macro code. +The `%monthShift()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%fmt( - value - ,format - ,align - <,type=> +%monthShift( + < Y> + <,M> + <,shift> + <,ofmt=> ) ~~~~~~~~~~~~~~~~~~~~~~~ **Arguments description**: -1. `value` - *Required*, a value to be formatted. +1. `Y` - *Optional*, a year from which counting starts. + If null the value is set to *system year*. -2. `format` - *Required*, a name of a format to be used, - character format should be preceded by the `$`. +2. `M` - *Optional*, a month from which counting starts. + If null the value is set to `1`. Can be a number + (`1` to `12`) or a name (`June`, `OCTOBER`) or + a three letters short (`JAN`, `apr`). -3. `align` - *Optional*, allows to use the `-L`, `-R` and `-C` modifiers. +3. `shift` - *Optional*, number of periods to shift. + If null the value is set to `0`. + Positive value shifts to the "future", + negative value shifts to the "past", + Can be an expression (e.g. `1+2*3`, see examples). -* `type=n` - *Optional*, defines type of the format. If the format - name is preceded by the `$` then C is set automatically. - If the character format name is without `$` then set - value to `C` yourself. +* `ofmt=YYMMn6.` - *Optional*, it is a format name used to + display the result. Default value is `YYMMn6.` + See examples. --- + ### EXAMPLES AND USECASES: #################################################### -**EXAMPLE 1.** Formatting values: +**EXAMPLE 1.** Shift one up and one down: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %fmt(111, 7.2); - - %put %fmt(111, dollar10.2); - - %put %fmt(abc, $upcase.); - - %put %fmt(12345, date9.); +%put + Past: %monthShift(2023, 1, -1) + Current: %monthShift(2023, 1 ) + Future: %monthShift(2023, 1, +1) +; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**EXAMPLE 2.** Align values (compare different results!): -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put *%fmt(ABC, $char9., -L)*; - %put *%fmt(ABC, $char9., -R)*; - %put *%fmt(ABC, $char9., -C)*; - %put %fmt(ABC, $char9., -L); - %put %fmt(ABC, $char9., -R); - %put %fmt(ABC, $char9., -C); +**EXAMPLE 2.** Shift by expression: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let n = 2; + %put + %monthShift(2023, 1, +1 + &n.*3) + ; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Shift with default values: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %monthShift(); + %put %monthShift(2023); + %put %monthShift(2023,Jan); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** Shift with months names: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put + %monthShift(2023,Jan,-1) + %monthShift(2023,Feb,-2) + %monthShift(2023,Mar,-3) + %monthShift(2023,Apr,-4) + %monthShift(2023,May,-5) + %monthShift(2023,Jun,-6) + %monthShift(2023,Jul,-7) + %monthShift(2023,Aug,-8) + %monthShift(2023,Sep,-9) + %monthShift(2023,Oct,-10) + %monthShift(2023,Nov,-11) + %monthShift(2023,Dec,-12) + ; + + %put + %monthShift(2023,January,12) + %monthShift(2023,February,11) + %monthShift(2023,March,10) + %monthShift(2023,April,9) + %monthShift(2023,May,8) + %monthShift(2023,June,7) + %monthShift(2023,July,6) + %monthShift(2023,August,5) + %monthShift(2023,September,4) + %monthShift(2023,October,3) + %monthShift(2023,November,2) + %monthShift(2023,December,1) + ; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 5.** Play with formatting: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put + %monthShift(2023, 1, +1 ) + %monthShift(2023, 1, +1, ofmt=yymm7. ) + %monthShift(2023, 1, +1, ofmt=yymmd7.) + %monthShift(2023, 1, +1, ofmt=yymms7.) + ; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 6.** Read monthly data with `noDSNFERR` option: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + data + A202210 A202211 A202212 + A202301 A202302 A202303 + A202304 A202305 A202306 + A202307 A202308 A202309 + ; + set sashelp.class; + run; + + + options noDSNFERR; + data ALL; + set + A%monthShift(2023, 9, -12) - A%monthShift(2023, 9) + ; + run; + options DSNFERR; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- -## >>> `%infmt()` macro: <<< ####################### + +--- + +## `%replist()` macro ###### -The infmt() macro function returns a `value` read in by an `informat`, -it is a wrapper to `inputN()` and `inputC()` functions. +## >>> `%repList()` macro: <<< ####################### + +The repList() macro function allows to repeat `T` +times elements of a `L` list, possibly `E` times each element, +separated by string `S`. See examples below for the details. -The `%infmt()` macro executes like a pure macro code. +The `%repList()` macro executes like a pure macro code. ### SYNTAX: ################################################################### The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~sas -%infmt( - value - ,informat - <,type=> +%repList( + list + <,times=> + <,each=> + <,lenghtOut=> + <,sep=> ) ~~~~~~~~~~~~~~~~~~~~~~~ **Arguments description**: -1. `value` - *Required*, a value to be formatted. +1. `list` - *Required*, a list of elements to be repeated. + List can be space or comma separated. + Elements can be in quotes. + For comma separated list add brackets + e.g., `%repList((A,B,C,D),times=5)`. + The list separators are: `<{[( ,;)]}>`. -2. `informat` - *Required*, a name of a format to be used, - character format should be preceded by the `$`. +* `times=` - *Optional*, An integer indicating + the number of repetitions. + By default set to `1`. -* `type=n` - *Optional*, defines type of the informat. If the informat - name is preceded by the `$` then C is set automatically. - If the character format name is without `$` then set - value to `C` yourself. ---- +* `each=` - *Optional*, A list of integers indicating + the number of repetitions of each element of the list + e.g., for a list `A B C` and the `each=2 4` the result + is `A A B B B B C C`. If the number of integers is less + then the length of the list values are recycled from + the beginning. + By default set to `1`. + +* `lenghtOut=` - *Optional*, An integer indicating + after what the number of repetitions process will stop. + By default set to `0` which means "do not stop". + +* `sep=` - *Optional*, it is a separator printed between + repeated elements. Mnemonics for *space* is `s`, + for *comma* is `c`, and for semicolon in `q`. + Default value is a single space. + ### EXAMPLES AND USECASES: #################################################### -**EXAMPLE 1.** Informatting values: +**EXAMPLE 1.** Simple repetition of all elements: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %put %infmt(111, 7.2); - %put %infmt(111.234, 7.2); +%put %repList((A,B,C,D), times=3); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - %put %infmt($111, dollar10.2); - %put %infmt($111.234, dollar10.2); - %put %infmt(abc, $upcase.); +**EXAMPLE 2.** Simple repetition of each element: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put %repList(("A",'B',"C",'D'), each=3); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - %put %infmt(12mar45, date9.); + +**EXAMPLE 3.** Simple repetition with a separator: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put %repList(A10;B20;C30, times=3, each=2, sep=Q); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** Recycle elements up to 8 with a comma as a separator: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put %repList(1 2 3, lenghtOut=8, sep=c); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 5.** Separate number of repetitions for each element: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put [%repList([D][C][B][A], each = 2 3 5 7, sep=] [)]; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 6.** "ASCII art" butterflies: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%put {>%repList(! $ |, times = 2, each =2 1, sep=<} ... {>)<}; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 7.** Data repeating: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +data A; + x=17; +data B; + x=42; +data C; + x=303; +run; + +data Times2_A10B11C12; + set + %repList(A B C, times = 2, each =10 11 12) + ; +run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- + --- + +## `%time()` macro ###### + +## >>> `%time()` macro: <<< ####################### + +The time() macro function is a "lazy typer" wrapping up `%sysfunc(time())`. + +See examples below for the details. + +The `%time()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%time() +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + + - `format` - *Optional*, if a value is provided + it should be a valid SAS format capable of handling + values produced by the `time()` function. --- -## License #################################################################### + +### EXAMPLES AND USECASES: #################################################### -Copyright (c) since 2020 Bartosz Jablonski +**EXAMPLE 1.** Get value of `time()`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %time(); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Get value of `time()` with a format: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %time(time8.); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%today()` macro ###### + +## >>> `%today()` macro: <<< ####################### + +The today() macro function is a "lazy typer" wrapping up `%sysfunc(today())`. + +See examples below for the details. + +The `%today()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%today() +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + + - `format` - *Optional*, if a value is provided + it should be a valid SAS format capable of handling + values produced by the `today()` function. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Get value of `today()`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %today(); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**EXAMPLE 2.** Get value of `today()` with a format: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %today(yymmdd10.); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%translate()` macro ###### + +## >>> `%translate()` macro: <<< ####################### + +The translate() macro function allows to replace bytes with bytes in text string. + +See examples below for the details. + +The `%translate()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%translate( + string + ,from + ,to +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `string` - *Required*, string to modify. + +2. `from` - *Required*, list of bytes to be replaced with + corresponding bytes from `to`. + +3. `to` - *Required*, list of bytes replacing + corresponding bytes from `from`. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Replace quotes and commas with apostrophes and spaces: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %translate(%str("A", "B", "C"),%str(%",),%str(%' )); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Unify all brackets; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %translate(%str([A] {B} (C) ),{[(<>)]},(((())))); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Replace all digits with `*`: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %translate(QAZ1WSSX2EDC3RFV4TGB5YHN6UJM7IK8OL9P0,1234567890,**********); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** Letters change: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %translate(%str(A=B),AB,BA); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%tranwrd()` macro ###### + +## >>> `%tranwrd()` macro: <<< ####################### + +The tranwrd() macro function allows to replace substrings +with other substrings in text string. + +Returned string is unquoted by `%unquote()`. + +See examples below for the details. + +The `%tranwrd()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%tranwrd( + string + ,from + ,to + <,repeat> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `string` - *Required*, string to modify. + +2. `from` - *Required*, substring replaced with + corresponding string from `to`. + +3. `to` - *Required*, substring replacing + corresponding substring from `from`. + +4. `repeat` - *Optional*, number of times the replacing + should be repeated, default is 1. + Useful while removing multiple adjacent + characters, e.g. compress all multiple + spaces (see example 2). +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Simple text replacement: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %tranwrd(Miss Joan Smith,Miss,Ms.); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Delete multiple spaces; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %tranwrd(%str(A B C),%str( ),%str( ),5); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Remove substring: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %tranwrd(ABCxyzABCABCxyzABC,ABC); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%workpath()` macro ###### + +## >>> `%workPath()` macro: <<< ####################### + +The workPath() macro function returns path to the `WORK` library, +it is a wrapper to `pathname("work", "L")` function. + +See examples below for the details. + +The `%workPath()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%workPath() +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +*) No arguments. + +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Create new library inside `WORK` library: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + options dlCreateDir; + libname NEW "%workPath()/new"; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + + +--- + +# License ###### + +Copyright (c) 2020 - 2023 Bartosz Jablonski Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -6340,5 +6740,6 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + --- + diff --git a/packages/baseplus.zip b/packages/baseplus.zip index 2780194bb2b951a183036e11e2948c6486eaadde..a062d6d27508c072d1002296fc55f82468932a54 100644 GIT binary patch delta 22284 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 eDUuCQf1rS7-Jmr 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 J)BuQ%{0E`z0x$po From 8638902ec3700fd0bb4c4d6cf0e6138766add7c4 Mon Sep 17 00:00:00 2001 From: Bart Jablonski Date: Sat, 9 Mar 2024 13:53:32 +0100 Subject: [PATCH 2/2] The BasePlus package [ver. 1.37.0] ## The BasePlus package [ver. 1.37.0] Changes: - Update to the %rainCloudPlot() macro. - New macro %iffunc() added. - Documentation updated. --- SHA256 digest for BasePlus: F*8155BFE82F7833E4B0DA24D81DBDFC58463906D6032B1F0161772DADE84BE790 --- --- packages/README.md | 4 +- packages/SHA256_for_packages.txt | 3 + packages/baseplus.md | 351 +++++++++++++++++++--- packages/baseplus.zip | Bin 299390 -> 302975 bytes packages/baseplus_RainCloudPlot_Ex0.png | Bin 0 -> 37349 bytes packages/baseplus_RainCloudPlot_Ex0_9.png | Bin 42001 -> 0 bytes packages/baseplus_RainCloudPlot_Ex1.png | Bin 36444 -> 0 bytes packages/baseplus_RainCloudPlot_Ex1x.png | Bin 0 -> 33305 bytes packages/baseplus_RainCloudPlot_Ex1y.png | Bin 0 -> 34527 bytes packages/baseplus_RainCloudPlot_Ex2a.png | Bin 47692 -> 46127 bytes packages/baseplus_RainCloudPlot_Ex2b.png | Bin 63100 -> 62152 bytes packages/baseplus_RainCloudPlot_Ex3.png | Bin 67290 -> 84018 bytes 12 files changed, 306 insertions(+), 52 deletions(-) create mode 100644 packages/baseplus_RainCloudPlot_Ex0.png delete mode 100644 packages/baseplus_RainCloudPlot_Ex0_9.png delete mode 100644 packages/baseplus_RainCloudPlot_Ex1.png create mode 100644 packages/baseplus_RainCloudPlot_Ex1x.png create mode 100644 packages/baseplus_RainCloudPlot_Ex1y.png diff --git a/packages/README.md b/packages/README.md index 94a0bf1..3be58cc 100644 --- a/packages/README.md +++ b/packages/README.md @@ -86,7 +86,7 @@ SHA256 digest for macroArray: F*3F3893F1FCD78719543703E4353F4CC19811D247C016F220 --- -- **BasePlus**\[1.36.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[1.37.0\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -116,7 +116,7 @@ format x bool.; %put %monthShift(2023,1,-5); ``` -SHA256 digest for BasePlus: F*B9F1B3243FD3956F0B68652C21EA1EBC19F3EB0931774A57FECE1F02A9448108 +SHA256 digest for BasePlus: F*8155BFE82F7833E4B0DA24D81DBDFC58463906D6032B1F0161772DADE84BE790 [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index 1e7db74..d9e11f0 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,6 @@ +/* 20240309 */ +BasePlus: F*8155BFE82F7833E4B0DA24D81DBDFC58463906D6032B1F0161772DADE84BE790 + /* 20240112 */ BasePlus: F*B9F1B3243FD3956F0B68652C21EA1EBC19F3EB0931774A57FECE1F02A9448108 diff --git a/packages/baseplus.md b/packages/baseplus.md index d03dcdb..ecf2a7e 100644 --- a/packages/baseplus.md +++ b/packages/baseplus.md @@ -7,22 +7,22 @@ *The BASE SAS plus a bunch of functionalities I am missing in BASE SAS* - Package: BasePlus -- Version: 1.36.0 -- Generated: 2024-01-12T10:32:46 +- Version: 1.37.0 +- Generated: 2024-03-09T13:28:58 - Author(s): Bartosz Jablonski (yabwon@gmail.com), Quentin McMullen (qmcmullen@gmail.com) - Maintainer(s): Bartosz Jablonski (yabwon@gmail.com) - License: MIT -- File SHA256: `F*B9F1B3243FD3956F0B68652C21EA1EBC19F3EB0931774A57FECE1F02A9448108` for this version -- Content SHA256: `C*5A51FA3E5B3A6E9AE2AF37D6604B49B8656D4CC50AFF1F975E546D4419AA0461` for this version +- File SHA256: `F*8155BFE82F7833E4B0DA24D81DBDFC58463906D6032B1F0161772DADE84BE790` for this version +- Content SHA256: `C*7A4A85EB6C2C23E6A171DDCD8F61D7ED40E9A6751F9579DF893E148A95FFE188` for this version --- -# The `BasePlus` package, version: `1.36.0`; +# The `BasePlus` package, version: `1.37.0`; --- -# The BasePlus package [ver. 1.36.0] ############################################### +# The BasePlus package [ver. 1.37.0] ############################################### The **BasePlus** package implements useful functions and functionalities I miss in the BASE SAS. @@ -165,6 +165,10 @@ Kudos to all who inspired me to generate this package: %rainCloudPlot(sashelp.cars,DriveTrain,Invoice) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The output can be seen in the `md` file. +![Example 1x](./baseplus_RainCloudPlot_Ex0.png) + + **Example 10**: Zip SAS library. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %zipLibrary(sashelp, libOut=work) @@ -355,6 +359,13 @@ https://www.lexjansen.com/wuss/2023/WUSS-2023-Paper-189.zip run; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**EXAMPLE 27** Conditional value assignment: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas +%let x = A B C; +%let y = %iffunc((%scan(&x.,1)=A),Stats with "A"., Does not start with "A".); +%put &=y.; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + --- --- @@ -441,20 +452,21 @@ The `BasePlus` package consists of the following content: 62. [`%finddswithvarval()` macro ](#finddswithvarval-macro-62 ) 63. [`%fmt()` macro ](#fmt-macro-63 ) 64. [`%gettitle()` macro ](#gettitle-macro-64 ) -65. [`%infmt()` macro ](#infmt-macro-65 ) -66. [`%letters()` macro ](#letters-macro-66 ) -67. [`%libpath()` macro ](#libpath-macro-67 ) -68. [`%minclude()` macro ](#minclude-macro-68 ) -69. [`%monthshift()` macro ](#monthshift-macro-69 ) -70. [`%replist()` macro ](#replist-macro-70 ) -71. [`%time()` macro ](#time-macro-71 ) -72. [`%today()` macro ](#today-macro-72 ) -73. [`%translate()` macro ](#translate-macro-73 ) -74. [`%tranwrd()` macro ](#tranwrd-macro-74 ) -75. [`%workpath()` macro ](#workpath-macro-75 ) +65. [`%iffunc()` macro ](#iffunc-macro-65 ) +66. [`%infmt()` macro ](#infmt-macro-66 ) +67. [`%letters()` macro ](#letters-macro-67 ) +68. [`%libpath()` macro ](#libpath-macro-68 ) +69. [`%minclude()` macro ](#minclude-macro-69 ) +70. [`%monthshift()` macro ](#monthshift-macro-70 ) +71. [`%replist()` macro ](#replist-macro-71 ) +72. [`%time()` macro ](#time-macro-72 ) +73. [`%today()` macro ](#today-macro-73 ) +74. [`%translate()` macro ](#translate-macro-74 ) +75. [`%tranwrd()` macro ](#tranwrd-macro-75 ) +76. [`%workpath()` macro ](#workpath-macro-76 ) -93. [License note](#license) +95. [License note](#license) --- @@ -2018,6 +2030,8 @@ The basic syntax is the following, the `<...>` means optional parameters: <,y2axis=> <,y2axisLevels=> <,y2axisValueAttrs=> + <,y2axisFormat=> + <,y2axisLines=> <,catAxisValueAttrs=> <,xaxisValueAttrs=> <,xaxisTickstyle=> @@ -2028,8 +2042,10 @@ The basic syntax is the following, the `<...>` means optional parameters: <,VSCALE=> <,KERNEL_K=> <,KERNEL_C=> + <,VSCALEmax=> - <,cleanTempData=> + <,cleanTempData=> + <,codePreview=> ) ~~~~~~~~~~~~~~~~~~~~~~~ @@ -2091,44 +2107,50 @@ The basic syntax is the following, the `<...>` means optional parameters: For details see notes below. * `catLabels` - *Optional*, default value is empty. - List of values for group axix labels (vertical). + List of values for group axis labels (vertical). When empty a grouping variable name is used. For details see notes below. * `xLabels` - *Optional*, default value is empty. - List of values for data variable axix labels (horizontal). + List of values for data variable axis labels (horizontal). When empty a data variable name is used. For details see notes below. * `catLabelPos` - *Optional*, default value `DATACENTER`. - Indicates position of the label on group axix (vertical). + Indicates position of the label on group axis (vertical). Allowed values are `BOTTOM`, `CENTER`, `DATACENTER`, and `TOP`. * `xLabelPos` - *Optional*, default value `DATACENTER`. - Indicates position of the label on data axix (horizontal). + Indicates position of the label on data axis (horizontal). Allowed values are `LEFT`, `CENTER`, `DATACENTER`, and `RIGHT`. * `catLabelAttrs` - *Optional*, default value is empty. - List of attributes for group axix labels (vertical). + List of attributes for group axis labels (vertical). For details see notes below. * `xLabelAttrs` - *Optional*, default value is empty. - List of attributes for data variable axix labels (horizontal). + List of attributes for data variable axis labels (horizontal). For details see notes below. * `formated` - *Optional*, default value `0`. - Indicates if values of the grouping variable should be formated. + Indicates if values of the grouping variable should be formatted. * `y2axis` - *Optional*, default value `1`. - Indicates if the right vertical axix should be displayed. + Indicates if the right vertical axis should be displayed. * `y2axisLevels` - *Optional*, default value `4`. Indicates if the number of expected levels of values printed - on the right vertical axix. + on the right vertical axis. * `y2axisValueAttrs` - *Optional*, default value `Color=Grey`. Allows to modify Y2 axis values attributes. +* `y2axisFormat` - *Optional*, default value `12.2-L`. + Allows to modify Y2 axis values format. + +* `y2axisLines` - *Optional*, default value `0`. + If `1`, adds horizontal lines for Y2 axis values. + * `catAxisValueAttrs` - *Optional*, default value `Color=Black`. Allows to modify category (Y) axis values attributes. @@ -2171,11 +2193,21 @@ The basic syntax is the following, the `<...>` means optional parameters: Specifies standardized bandwidth parameter *C* to compute kernel density estimates. Allowed values are between `0` and `1`, +* `VSCALEmax` - *Optional*, default value is empty. + Provides maximal value for Y2 axis scale. When used an information + note is displayed in the log. Recommended values are: + For `VSCALE=PERCENT` between 0 and 100, + for `VSCALE=PROPORTION` between 0 and 1, and + for `VSCALE=COUNT` between 0 and N (sample size). + ***Other options***: * `cleanTempData` - *Optional*, default value `1`. Indicates if temporary data sets should be deleted. +* `codePreview` - *Optional*, default value `0`. + Indicates if source code should be MPRINTed to log. + --- ### NOTES: ################################################################### @@ -2198,7 +2230,7 @@ The basic syntax is the following, the `<...>` means optional parameters: * Kernel density estimates and basic statistics are calculated with `PROC UNIVARIATE`. -* Plot is generated by `PROC SGPLOT` with `BAND`, `SCATTE`, and `POLYGON` plots. +* Plot is generated by `PROC SGPLOT` with `BAND`, `SCATTER`, and `POLYGON` plots. * After execution the ODS graphics dimension parameters are set to `800px` by `600px`. @@ -2211,12 +2243,12 @@ The basic syntax is the following, the `<...>` means optional parameters: ### BOX-AND-WHISKERS PLOT: ################################################################### The box-and-whiskers plot has the following interpretation: -- left vertical bar indicates the minimum, +- left vertical bar indicates the *minimum*, - left whisker line starts at `max(Q1 - 1.5IQR, minimum)` and ends at lower quartile (Q1), - diamond indicates mean, - vertical bar inside of the box indicates median, - right whisker line starts at upper quartile (Q3) and ends at `min(Q3 + 1.5IQR, maximum)`, -- right vertical bar indicates the maximum. +- right vertical bar indicates the *maximum*. With above setup it may happen that there is a gap between the minimum marker and the beginning of the left whisker @@ -2236,6 +2268,7 @@ See examples below. g = "Aaa"; do _N_ = 1 to 50; x = rannor(42); + y = ranuni(42); output; end; @@ -2246,22 +2279,26 @@ See examples below. when(6,7,8) x = 0.5*rannor(42)+3; otherwise x = 0.5*rannor(42)+5; end; + y = ranuni(42)+1; output; end; g = "C"; do _N_ = 1 to 60; x = 3*rannor(42)+7; + y = ranuni(42)+2; output; end; run; - %RainCloudPlot(have, g, x) + %RainCloudPlot(have, g, x y) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The output: -![Example 1](./baseplus_RainCloudPlot_Ex1.png) +The output can be seen in the `md` file. +![Example 1x](./baseplus_RainCloudPlot_Ex1x.png) +![Example 1y](./baseplus_RainCloudPlot_Ex1y.png) + **EXAMPLE 2.** Rain Cloud plot for `sashelp.cars` dataset with groups by Origin or Type @@ -2281,7 +2318,7 @@ The output: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The output: +The output can be seen in the `md` file. ![Example 2a](./baseplus_RainCloudPlot_Ex2a.png) ![Example 2b](./baseplus_RainCloudPlot_Ex2b.png) @@ -2316,27 +2353,40 @@ The output: data test; do system = 1 to 3; do i = 1 to 50; - x = rannor(123)/system; + x = 2*rannor(123)/system - system; output; end; end; format system system.; run; - %RainCloudPlot(test, system, x , colorslist=CX88CCEE CX44AA99 CX117733 , formated=1 , sganno=annotation , sgPlotOptions=noborder , WidthPX=1000 - , HeightPX=320 + , HeightPX=380 , catAxisValueAttrs=Color=Green weight=bold + , VSCALE=percent + , cleanTempData=0 + , y2axisLevels=5 + , y2axisFormat=words20.-L + , VSCALEmax=60 + , codePreview=1 + , y2axisValueAttrs=Color=Grey size=10px + , y2axisLines=1 + , xLabels="variable X" + , title = %nrstr(title1; + title2 JUSTIFY=L "Rain Cloud plot for &list_g. by " %unquote(&xLabel.); + title3 JUSTIFY=C "Rain Cloud plot for &list_g. by " %unquote(&xLabel.); + title4 JUSTIFY=R "Rain Cloud plot for &list_g. by " %unquote(&xLabel.); + ) ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The output: +The output can be seen in the `md` file. ![Example 3](./baseplus_RainCloudPlot_Ex3.png) --- @@ -5763,7 +5813,208 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%infmt()` macro ###### +## `%iffunc()` macro ###### + +## >>> `%iffunc()` macro: <<< ####################### + +The iffunc() macro function is a "lazy typer" wrapping up conditional execution. + +Instead typing: +~~~~~~~~~~~~~~~~~~~~~~~sas +%let x = 1; + +%if (1=&x.) %then + %do; + %let test = TRUE; + %end; +%else + %do; + %let test = FALSE; + %end; + +%put &=test.; +~~~~~~~~~~~~~~~~~~~~~~~ + +you can make it: + +~~~~~~~~~~~~~~~~~~~~~~~sas +%let x = 1; + +%let test = %iffunc((1=&x.),TRUE,FALSE); + +%put &=test.; +~~~~~~~~~~~~~~~~~~~~~~~ + +The `%iffunc()` macro ca be nested in open code +in contrary to standard `%IF-%THEN-%ELSE`. + +The `minoperator` option is used to handle `IN` operator, +but the `IN` operator in the condition *has* to be surrounded +by spaces, e.g. `&x. in (1 2 3)`. +Condition of the form `&x. in(1 2 3)` (no space after `in`) will +result with an error. + +See examples below for the details. + +The `%iffunc()` macro executes like a pure macro code. + +### SYNTAX: ################################################################### + +The basic syntax is the following, the `<...>` means optional parameters: +~~~~~~~~~~~~~~~~~~~~~~~sas +%iffunc( + cond + ,true + ,false + <,v=> +) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Arguments description**: + +1. `cond` - *Required*, is a condition to be evaluated. + It **has** to be provided in brackets, + e.g., `(1=&x.)` or `(%scan(&x.,1)=A)`. + +2. `true` - *Required*, value returned when condition is true. + +3. `false` - *Required*, value returned when condition is false. + +4 `v=` - *Optional*, v for verbose. If set to `1` extra notes + are printed. +--- + + +### EXAMPLES AND USECASES: #################################################### + +**EXAMPLE 1.** Simple test: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let x = 1; + %let test = %iffunc((&x.=1),True,False); + %put &=test.; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 2.** Verbose with `v=` in the `%put` statement: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %iffunc((TRUE=true),TRUE,FALSE,v=1); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 3.** Condition can be with decimals or text: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put True: %iffunc((9.9<10),TRUE,FALSE); + + %put False: %iffunc((A>B),TRUE,FALSE); + + %put True: %iffunc((1=1.0),TRUE,FALSE); + + %put False: %iffunc((1/3 = 0.5),TRUE,FALSE); + + %put True: %iffunc((.1+.1+.1+.1+.1+.1+.1+.1+.1+.1 = 1),TRUE,FALSE); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 4.** Macro-Functions works too: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let x = A B C; + %put %iffunc((%scan(&x.,1)=A),Stats with "A"., Does not start with "A".); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 5.** Simple nesting (in open code): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let x=0; + %let y=0; + + %put + %iffunc((&x.) + ,It is X. + ,%iffunc((&y.) + ,It is Y. + ,It is Z. + ,v=1) + ,v=1) + ; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 6.** Special characters have to be masked: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %put %iffunc(1,%str(,),%str(;)); + %put %iffunc(0,%str(,),%str(;)); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 7.** If you want to call macros there is a price. + The `%nrstr()` and `%unquote()` are required: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %macro doX(a,b); + %put >>> &a. &b; + data do_X; + set sashelp.class; + run; + %mend; + %macro doY(a,b); + %put ### &a. &b; + data do_Y; + set sashelp.cars; + run; + %mend; + %macro doZ(a,b); + %put @@@ &a. &b; + data do_Z; + set sashelp.iris; + run; + %mend; + + %let x=0; + %let y=0; + + %unquote( + %iffunc((&x.) + ,%nrstr(%doX(1,2)) + ,%iffunc((&y.) + ,%nrstr(%doY(3,4)) + ,%nrstr(%doZ(5,6)) + ,v=1) + ,v=1) + ) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 8.** Traffic lights with `NOTE:` and `ERROR:`, + Remember to handle the `IN` operator with an extra care. + Spaces are required around the `IN` operator. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let x = A; + %put %iffunc((&x. IN (A B C)),NOTE:,ERROR:) x=%superq(x); + + %let x = 7; + %put %iffunc((&x. IN (1 3 5)),NOTE:,ERROR:) x=%superq(x); + + %let x = 1.1; + %put %iffunc((&x. IN (1.1 2.1 3.1)),NOTE:,ERROR:) x=%superq(x); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +**EXAMPLE 9.** Mixing `IN` operator with non-integer evaluation + requires `%sysevalf()` function: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas + %let x = Y; + %let y = 9.9; + + %put THIS will be False: %iffunc((&x. in (y Y) AND &y.<10),TRUE,FALSE); + + %put THIS will be True: %iffunc((&x. in (y Y) AND %sysevalf(&y.<10)),TRUE,FALSE); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- + + +--- + +## `%infmt()` macro ###### ## >>> `%infmt()` macro: <<< ####################### @@ -5820,7 +6071,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%letters()` macro ###### +## `%letters()` macro ###### ## >>> `%letters()` macro: <<< ####################### @@ -5938,7 +6189,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%libpath()` macro ###### +## `%libpath()` macro ###### ## >>> `%libPath()` macro: <<< ####################### @@ -5983,7 +6234,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%minclude()` macro ###### +## `%minclude()` macro ###### ## >>> `%mInclude()` macro: <<< ####################### @@ -6196,7 +6447,7 @@ quit; --- -## `%monthshift()` macro ###### +## `%monthshift()` macro ###### ## >>> `%monthShift()` macro: <<< ####################### @@ -6345,7 +6596,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%replist()` macro ###### +## `%replist()` macro ###### ## >>> `%repList()` macro: <<< ####################### @@ -6461,7 +6712,7 @@ run; --- -## `%time()` macro ###### +## `%time()` macro ###### ## >>> `%time()` macro: <<< ####################### @@ -6504,7 +6755,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%today()` macro ###### +## `%today()` macro ###### ## >>> `%today()` macro: <<< ####################### @@ -6547,7 +6798,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%translate()` macro ###### +## `%translate()` macro ###### ## >>> `%translate()` macro: <<< ####################### @@ -6611,7 +6862,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%tranwrd()` macro ###### +## `%tranwrd()` macro ###### ## >>> `%tranwrd()` macro: <<< ####################### @@ -6678,7 +6929,7 @@ The basic syntax is the following, the `<...>` means optional parameters: --- -## `%workpath()` macro ###### +## `%workpath()` macro ###### ## >>> `%workPath()` macro: <<< ####################### diff --git a/packages/baseplus.zip b/packages/baseplus.zip index a062d6d27508c072d1002296fc55f82468932a54..5fcc8ab3aacb89451fe76ea1eacefc7def72fc4c 100644 GIT binary patch delta 29719 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 Lg&GfrW(oLzlrFLQ delta 26121 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 NU4z<5=?7(o{ST+_Dh>bu diff --git a/packages/baseplus_RainCloudPlot_Ex0.png b/packages/baseplus_RainCloudPlot_Ex0.png new file mode 100644 index 0000000000000000000000000000000000000000..65a46d2469feddee376744d0c54d8611ec34e71c GIT binary patch literal 37349 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 PuD=iPMepZ%M_>3Gxf>Vv diff --git a/packages/baseplus_RainCloudPlot_Ex1.png b/packages/baseplus_RainCloudPlot_Ex1.png deleted file mode 100644 index 4926f022347cce3502e7a880248d0965e77b1d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36444 zcmce;1yq#l_cqKi2oV`Yq{~K1x7`# zUV5qY=N_rA;!Hh~;W#n|H>Rpp;bQ-OA%O3XeMe;cUwluFRZ5dGJ41f))y&L{W|8si z?Ckj>4|n%UskHsy4a9=BODiiYR5sP@tgKz8T$kuXj>_tett2EQGN~&_Q8hcUQfV<< zX38Ee7i$w8=DUQ~zmwS19Xt1B=H%qmo@}FlwPi%#KRGbgEdJmoKN!6jWW`VLb9S`xh;ydtkl#73XR%F#@4^T zCMjh0*^HaCL@!Qw?T!Z!l9_YGP9Dwi!mSz^87T^_`y;Niv8}=Ar1A75T%IT^U-$ng z;#GN5#^-Q!lJ)pSFd5s9dyU@V2-+WkB*BkFz3HBJ;G<@%J1Ruzk5@WH5Ajo!!dPCs z6vM|!xqkh+{#-|lagipzlDc|^W$`FRQDlGStM6GNT!}jGV_LVF_e)FWv)NyLBeJuz zDMO5B+aftly57EfrywVHG|T3*xVayjI2);U}$(D*4qE6<#vypGNj3r%NyoYot9^*Si!$&cMQ@wO z0@`;?Le`{W`kf#bWoKHb$dZloxD(opD^~P$zuWf^YY~(oQn>@Pe70ivU!K*U36UbX zeEIUsBQqSaJMG=w(SPBXlk?ku!e3y3IUgP#ZfkTKE;MRuqC5E=7*a4gc{s5fk@<>< z>b8GNS67tLeok(|6>%_g+)|xlQ>8Rct$g*_Z235z66L2q--{kB+{oYYIdLZ^B`xte z^-ecBJvk0QSPbSV(RL*WYT(;VdhIe2`)sAronOuBTl7bu^?bbgIB(y%L&yL&aAuTE zr~ET=d(3q@Ja)rzxoz3 zi|)^S5D$V`9rY#pGjTb$LTc|35fOC@@5Uppb8`6j8`^xM-CkZkr2bjZn>PZE3t{cE%2EX2S9FGJ%;>2(3|oGrNp~lS zqJ%tu`r=V0tpBX{Yh!#zBRKf@`N@qcor3S*A2NI&cbP23QfpRdwRU4p`qck(Rv4*$+djkZwwNzo-$v{9dIADD%+n{uUb;#n383y>EF8g z_@c+mduc;W>rKALD>3(;_a*~;B z>~YS`J9p>=99t%(vfXA{-rrG71fyY#EYlzQ{5+qUr)5ndS-neHL&Jn4#vkFav+~}^ zt^VbC@gTeDCT?Nu4HDt{ZM-IAkP4xkbrkrwiK5`RfWu(;^~GPCbDg85R&l*&Nyy0V z$n<_OXud=%w6~BJTD#RNo7#$~7ju~FpkUYk4!b?_wUs)=$xB^V zx8R5ATz67Ze0+Rt?7@fyih$t~HQy60t&xM;z)Lh6u0mS*I|CYenDMIJPck2l(x|mJ zw)zx9X@vzC8D%I8U8lYUNRiC2rYByap7)qM)b;fAba!`88%MH6_eSSdcVmrESvh>% zdKcw4(uRkg=q@Hz&)p6n)3xQJ_N7X4n~O=22;5mlukFt#k%`9(xfLq;iD8aKioK(T zhK9g!E-=7e_DAGupstCJxlDS=yU@W66?Ka+`SW?~ZI?A)B59Jb-qNu8xRoBrw3UD3Oo3$a}c zTfF7AQ{wka7*!|^w-(dhE|Z9V%E-VKN&nqU5ZXLFnKgEq0YaN-f(`77{G`=4Oa-R> zg&7$cXSW>(mp9OTE#T-OmiZ&f#_WUbM+uBjE)#CelNpi31;`|`BZYP3+cY9t}*lF`+EE zlF4v-BC(;RHY+PD>3GEi78cy`>Cq;Wdft;#o5|Ya{IUt~nQXOtzrY`0-Ng^X19f_z z@P1RSPM(Fyx;lAKHsZElypO}bjAGiF zzH$v@D$+4Lw6e-S)pa9d)3wAP5x>BBhG^ZxBdAS`(slLFix#KA8IIu4EXejc+@TTm z)+s)yFWKd^ifT2iJl+}2R7kkzZ(97b6V@<-?#-Jw5pr}uX~ zT5pa_wm&&?V|eK4c?4TLAu;h}y_qg}Cv?@~Va!~a?bJ8XqbXwb+>+|*BaOO)fsNVr z)19(97R|y>O49@+x4$PazW?3AEsOTo)9w)jf`gRBzgAE)llfV%|=QDUQ$z4g}_~RS^Ode$0xlyZ%mGK zOvzJa<=(b88THiCKP;P(nwrDl;{6eTR4&H9Vs~74vYw>yO9QqS7(Zf>yZ(FAbf>OxAI>#rab74iq;lXSM@h*_w-r`vRz^<=6vq7lvoO4xVwDa*c`Y>Ad zJdPv9waC9-^w>AkxZLISi37~w?d|REesH)}=QE(DK@rlVZCx?D*)6&@T4v+qv^~`j zDCl`1M5@U2M=I=6lW+b6N=iy!zI>sepzt~9ODeS*y+%VbUVPj@EL#1%;Z>Y9M=o+0mhz=(SogU%Q=e)A;@S*6R2npvyf#nRMlANhe#G;9Yqj0E&osH@&53 z`^J(FVV5^UKF;_)IW7?;m(R(O@tPmnU06|gJEE5}CNXj1;4w=+T_$Op>yP0g6JE;s zY`Lf+t^DP|e2ZB>!Z}VWho8B+s5S5(;D-lMdOnyEG_FWwLW1z~Z~iSUE%knQb%(1} zA%l))?lU{ybR$CT^1S1p9JMBF8;Cj;zInoevFcWTjELC!M##3XeZV{Ese-@0n3+_& z-b9sOXO8oAHo3LCySt_3N!3Lhv8SAIo$9$x4X=p$GUQdNu0_Ul&ds(*Pr}*87g{bD z$)v!p2XNA9Tm-n-`e17@dQk_=?)jIe3k>IQ=vAx12V4rg@$p?-4}ak#>;V8F*uWmw z$z$B{QE;_%*PqiO`Biqt!5#`2aUwlfS5!Nb4@*467$C4>*Mw7=*#LgZenTC1(Du7>>TPNJ(g zYM%1tH9M;ZVHXGqHS(T5=ZHDdE+0vDlCR^`vF*wG_3Ia`hsfSfKjWhPju_7NXg0-1 zkM75H>KLA3H@uo!SXii-Bx0`N`$R)s-MB;x+_X6tWl>?F+-;Qy4}3=?89u?u@7p^# zM6)6(hhiEAaPut=5-!8JU!EKvo^C|ftw1bM$fN>L26qA{>y*s6e1@U?)%CmS>FKXu zzdor;0%Hjezv3h-9t8973=+F8hyq&+KTcS5ta>UlCMoLA8r<+@{05|&TBLd|4Yzr}Fof0hUyY$62X|p3@BN-KM+b!6 zXfKpXBN*#lU_b;}5DL7_B^n7PyfmV!q_hqh<6)QJ8stH9*Zc5&?^EX^t9Iay#qmG1 zZUG3wMijMDVp<{Bj*sjB?Pe(7WXRqAa8u?aF#Kj?b93%fVsRa1%g6L4=pisHv%W{jSG@Z7Hj$s8MSB-ppUp=-W7W4ea8?3%Yd8+9wD&Ed{gH zwt%0iy6d0%>C-2Fe}5M3(nsONHj^TO4ez6(GMtt0kviHv&tXM$VRf%mjn{%ZjI*g7 zPQpD;7IPa*MSwpvkN%6BhR^odWUW`*v4BnG;_X@Q1TmF?fq`80{CljdkR--)Td04W zY$Ub%1x62-HV0f9Dtc1B5eC!QzaZFf9OeAT;%ymlFas7?S&(1$)mqrg=kS4n0q}|Erl!g75xQg z#$UJ3ZtU;r5!7$E*U*MaWA2Fu>tfDSs;*8Q`MK?zYy1V5rk{CR<=!#W!EUbcW8fPT z;vM{7d2Yihr!`V0d;9BD^{~rWfiuGbPZaavo&{${<3s6OBz|S!F&?q>!v$0qc|Lqe zn`2>Kwld_lhOW!N{#Ly}*QH@w^ECm1IoZqAsbGWVx~y5CDzxB!666v;8gWq$zzs=_sQGbIp6mrZgJHwLzI#yOJ6&+L%goK1eMMYjBNj~ksc0i!p zf_(ov6Vo!p(TJPbgtFFjXBe=DbEW0wb(ohZBnS+cav2*L#mHs6eECw!>TkCrVAz5< zy_VUhsj2A(VNOa)%GlWWUh`sa<*47^e!dg-g}j_x|8iZdi3v{}q?42-uR}r-zyZL{ zKi0m8D*;)9wROQLM#O$5NGeT6PHv?#b@Vm=ALgv*qD=UiwNjW?noH7YJP_na#KCdk zS;vcb9sFtxc3GQX@h{)(5|qE)H_KM)2Qf+@gt@(tnUF!py7i8SKccCHe3mf;C@Rx_ z=1Vv@$qA4fZV}4euj}qdquG#^TcxAc?JX^QFg0R=QBIijhTbPEP1qHRqRZS1tiM|b4 zvPf+}Kse9&H-{q^!*Pp^t$WJ$Q+j$yg@(EL5`dtc)p0@Vv2uWx)cp1{^>}nEFUwLOo3DRmuA$h%ubA5{`g^=FG=ng?fflT+y0-~dU0Frx<9tB|9_Y(vh!^`dFd9~Wzlmn^zW@Gr)+;HNQgIFkJY zR(8RS`5GbY-{J>RMpdeMT5bo&A&Tk)WG<`qULtGr%_1UN<;T9-x^fuNdc(IVxiA&U z?f0GV#4J2Tk|fNZR_)rLSnJCA`jYkh(%esC=~%{hEUMBbmbZ%mvg6*64f)hRmc$7@RnRQi|3PS+I3>y6;elvB^77m{{y2+8JRL z;l{xcD~BmC?O4s4w9>40-Bb}t(uh3cDYDj^-@PKd@m|9GNjjYC#r=9}ah%h%dflq^ zO`nwx4?T?d!>&x9d>7RT_NhC!4c?BFz|Xeiwh(9bP(3n!Z!m$^toM$b4hX>Wu#%i% zc!3(C*=C5uB^@PZ8H?QY4dFJ116a?#dV2;Tjvtq1JwN3l!9sLzaMi1koPzWDcQl0{ zpuEbb^78Tu3JQP~#Kpg@3>T>=E5}-?tEv{eZ!baYyh|KPCt3?=bZKb`xaq~d%-yxg zI;^j8$NvjIu;2ElYuBr8J&mfcYxzUlW7)wTw=$6!@M2=FnqTxKA%~jlN{EYziAhMn zth>gRGBPuFban0Qd$u(|J`c2k{59E| zsh9-Rsqych_3z)mpKb~%8n)!-=0<9}3L@}*KhN0<$}%a|RZS6;tlqyYl++D3xQ6D5 z@TloLGQzr?zR0Mk+qZ8oZR>Rw0a(9v>sH9fzauSq7niE>B+m^QeSLk%l8sO$Y54wP zdmHY;Jkp&@jRMQ0|n<{`8>mKQiMpIN~HZ*u;rsHq2RH6 zTI7bRtUM?|>mJU0P;3gNLk+yLUb!&dhNGii$SkXH7_`xXCQY*NTbYx=UUlav8rD%#n$o*bTwL65$y2sVPZRVW`C1I$pQhD}jhX*y z8*dDLQ*VAQ_o3njxpfj#k4zk_3WcJDDWdoHF&v+9)pw69>k zCj0#Pa|lUfs-x_c&9olOKyzX^a2zkA&?=)(b`IL`YDCILN_4KEy1kB$R@WQqE~oIG z6OE;VB}2ZtND&?vS7p|had2=@wOYvp_z9ogWQwxt&LPd@|anNKk>saxkl2rA`TjcYm#fXZcsBB7gi?4Au*Jf$eqA+ww3^9I2{#eHjVRk&^Dl zjQLoS{`ndSUlW_S^uxGBl*?grvR1*i`chaLBuD~lc`j58f6LH1G&ir(wsS(GpY;>d zp6A4Qi}^f>AbMDO8pn-v5EoZCX#pPtxgw-6MQeSaNfr-Gs;EP!Jax)VH z4tsDU&z!6`ed7WTwQ!k={m9=pNkxx1BmALLsf=mOkA!R|3mJ4lWNatS-6OJlUZo1| z;l-0ojVc_Rgzi~qZ%sS<<9SpzGDsla`tW5*sIZ+&X)8Gv46x$CtQ){KhU8yTQj&mx zpva_KK}LokqaG?fJXRyBy1LdpaV8xffdk2t!aPU`L@byYYDUEqty%Ax?a9$t=9K^X z9$SOrySXZkb)2pL6=;QKuDj34Q*m)|F(WG-A&-G_S^}TlFTgFgWR%nQo`LtEm4xLm zjH{c&b1Jnju}~VmvmZ<-dx;-;se}+tI_(lvb3FV{6!wm^#6ihW(ysx6*M*3}7*wd0kd?vn#_ofdNxyFt@}V`ahJ zGKr@~R~HBjHJu-A+Z4DDVeE2{vMs}&&n9~QLKDkW2ylEGa<+iwKE(pA1dl(d99|zi zEGaj)+Hkq&{sv$~N0}O$2gD3LnAXCTFv>a9{)6&yKM~h8tG(=o)~`xX&=C0tS{<9u z?)3I57Y&aU;EE)z9qn&w=-5f3ua5n7PCR+kfsZN*;~5oTsP*G#)(JY6PT(dLc1N6J zV`OAxV0hjh#S(rKGg|f!fErFNE!}A()2p_fdf7g!Rp(t(|ID;lfIGgIXCdHv?$&q!St-sGWF_ z+veObX6FwBiz}7(MFXV^Wc65yg@&Qw3=pg|q@?LP%ch9~<^wbH^CpIdSxABx?>@_J zOB1?O*R9XPezH1xHdvi<_BJIEgS!%xsTUsq?Rs2p@mtNyvd~$2!-7?Q*yTN`p3q&~ zcK@^M=x>6pTDQ(RN2w<2e%@hE>dtj$8Gqep<-;_8xz)^sg8>!-Hs<*Ib__F0m^7-QR;|V-G`g>@MaT2}{UfZE^MIFV-}u1hvq#kXEYsCz zx;u6Me%ZgY0J%$#$7rMfIM=LKV)%~4JkrSLG84;8bcUZyP3$T$r$@UIm$E13H?xt1 zFnB1{i)DQ<8lKB)7p+;(j}MgbOUUg~KWVC~Gl*V#>Ili0{~d^By;y@JqS`t3S{&4K z2z=e10$#v_%G)@4sTHCj{l!IEkCiVoGlrlC=(!j@YUa{kTQqeCPcdJuDk?EAbw@lQ zUkLLiuLa)^3&URYD66P!{*a~vE@*Y=ivd^@u$%R~kR_iU&5Nd`rF{qwuPj}9rkStq zj_>>A(?yaRQ{jX8bWTO&Sgtd_@Z`xfQ`uZCCajzv)?kkgstgNg)Z|!&11BdZb3$0{^=-evPx4x+e<-R(PlB&iv2k zr;*)s0wwRfVXc$@mHKVBNkE7Pg2m7eO2Csqu!7|>5w7CYjGV{Wdoxp9CEPWTbmFx3 zV-}E3Z4_n?Y3Og(p;i|Amfai;VMX<}jPkQoPRbB0O^FMHQ`pVLSc`(z&Q46Bxge}= zRyW43V!XhsIm!lbY+#WB#{Szlpkngta*Jp0ya%s^?@-8W!4>>TK zi5fu`mVDs$ks1rPk^>P>e3{!7qQ~by?9!d?c2&DDnX_dfFH>rlPP^zP30izdZeh<- z+F|SVGn0Cn(pEmhMshY zz7`IKi81!UB1x*rtO~sW!IUxIqQ+)?AqFsf~wUw!NDZr9dW$f)@6E7 zXJO&~E$I6D=ZnA2itjgV{fpXQ`pca;soNxa2@;h|X^}AxLrpBOAWa!pJ`6oQ=_r$X zWt#9#i4+WG{_|7jBm1*D*B)Q$H{WVzTRGVZUQr?2%|TukSan=Ki55LNFmS0QAxkji zdYFv_Y%P`vkSC#aeiPuSK*&ivx6j&pqo|^|aoWrg$rKXRe%-z0-r>oZowEKDl8?$@ z-0s-X4KeJLsyb)1+IQv(}gQiz(?K%Ey$MHxkFZ@B8{Ce1&ZDn06pQzXS0C6M3kikuUz zTZqzb5^>+;7VTNye)Z@YJ){ZaP--=mi!w^;wuoN3?${Kb^YVx@?p@-zlCoN|GZJ4? zB*|sd*X{6~m(bxsCg-a${U9zo6ztxfkl(?C^xu8NlN*MU(UR(exC zN{o5*E9>Mg^;*b6y{2)y%2!)2YfO++n7!?h&Ow5&6dT3&$5&~K7mL=m_lSS*ZXh$T zs6r+x=w!#nfS^%V@|XgEw-Z9eXZ207NyjM{9L+;1_A)SG|H3E4{=}k3zX2w}3m6&5 zcgEwwabQi`F+n|4RMZ1x?eDH$_0oN6pH=>=yn9})N^A>3T0(Zs#@jrSQN&_KSf$BR z8pRuX@rPFaJ42Xm@vz&XqM|o$NMJZ(@5m_souSn3ciNnQlhvrAcD(cWh(w$(e!Gxa zdf{!!PGM@HL1yr7v^uE{v*42LU^eo`H*xdRb)!e5(IY;d#!ED5ujIHNJ|vvtq|oQ4B$|S$$YT2BfnT>%g4$l}n@883Z1^D6gK=F+wWk zcWS9==&0#+Y>7JRU3T}YP>iimTq1qlpmLD08$yLJc#IHt^`h0>S#oqw;JGet^SjK3 zl8hh>2HGI*-m-wDF+maGwqeNd9W+1(MNoSOJp?yp2#|)k`S~nNOosq6AuBXAGz0<- z#usaC>D~d{hx7h2zGNZup{GbmE<(KJ^jLa_fWcGmRs#yx_X30A@E!lK#?zZpA?kf) zyDw^M@N@=zbTpy}bwt9erYvPvhr@Lk{H09&rP40Po_-e&QJ3+e#Q1#Ei+&{rfo{OO zYU3>|<*%j=o8{umSoT_+7XbynJ*fHk)&=D0RBS*+5=0ielRl@wxq*a)8#uS1AbicJ zxbdN_k0jDwMTB|}9#v8Mh9zF0?=S9WnPmO+07vX2egoHCaUMh>l&rBbi@SFp$;+#i zVr#o=wTG)9cKZz>4sz1G;$kkyU!!KBE=b4_J3bV_Aq(jbm@gd7s#!P#!E`b*f=&ZUPyz{E#=JRCMX|^E*CJ@}iw#@DZM-*qUb!d$ zcX;d8EZ|Qs5Z`cca`yH0VXg5)t0QQgz>MHPH6iSQj)W;yZFjMM{oMHSl$l{f0yZZO zPWhO)<0Xa{1%UP@i%&Zn&QqZj;&|-(y}&s?+TY(d+u z>y>;oR=4)~*P9O~Nj^s*yOqo&xO2*daQ?5e249{!h6?XIwYM)EiNqKYDL27uPDvYal+DQ!^Z5UE*G50-*%-gLeiJ(SA zF|LX%I?2^w)+Gw#%3AkqIxON#P3mDO1tzu=>07~NF@rqmb256A7JUU);Vc%9z6=#( z3Aig6=4Jh=W#PSF=9tjV;SD^+MbdE>xh1Q|A`t;A+ioLc$03oEj0Jp*{yH|O4yLD~ z-g{^(WhW-J*VpVdp0U<=9Z{d=uC|3;yHFDWw;ByNap3~Z>c|C=GbLA3ujV&5M(u4r z2k827JR0NLC5q{peJ`Yo#!SzjQ=fGlrK%zBoGbXML%Anj$??f)g$Barf-XR6jRjk@ z`tQqG>4%yaKiu?{US*9Ne2BW3c3naXxN4?S7!-tFqTfYdRY) z#S=1|z@4{sWs)6Gvb8Tj_<&0;R!-`ok)o{k>X}=rXNWa;vJb#EA{^0etP;vibEJ7L zZl5yFGrb=YT~$4r_c9fB;ePCreT*WqtTsE1lQ(cSA!4!;eg=cvx_D09zp6kp^HW1b zLEmBaNM!T~Re`(YE{*8Xa_2Q_^4Fwohd&)hyRXvS%@#6pP_+>(Pp&*^|EkFF`Gq30 zY=X7+Ggd1eW6oV-SXtNqb}|7(fz~~~`&Xo;J~k28^(}82+8oy@ZiwE!JF;dkxP*yh zElc~6iFo<~J#V&US#;x3cjVmuAw$d|?8_d3T;R&9aK+>U33+%99Tc6MMv9GnE~%O@ z>D5kG=ylhz4)$kuHa)2HI*O;_q+23Qa5b2ds5_n5X~FNCNMnN26TOR-VmT`ska35| zljrxxlgpo2%OvnGQ#@DZDLpw8z2;ibrS8p$g3KqmsxKFblbn&;mw^F$Ki!<=lT64z z0&`)(n#+?er*8Rf-FGD1!fP4FHnglmt}vR>=58oe-1UFL5$}?jzl|9D0q^rV};;-FO2fFXxXQI4epyl@AnC&x@DB!mjJ>SEW z{7YD$%Gtwy^RaWTI(;53Z)xGoWqIG=$yq#ebFL9G@6Q@$)UIDi=6B!9)Z}-T<)&Y* zz(Jv0x4C_^6B$Q_5}C+*tSH$Br$>rJ^+L3yNoCYMO)nO$S6{NbeK=0}!+Cnl)h zHfYo056zwyzp@TR1UKII)++59q;dn|&4ZSQGv4YFbooPJwBdo7{5drD}eEg;;Bua5=--=?epn9={v-&T30ZeN2_d!kmo*A&=U<`z_4q-g3=X z;ebDF8?cwieCz5th3BzWu{c~n9WcZs@MS`Yv^>4jNL5>}FdZg2v~E4I@Uw}bKjX)S z(yfs=YhvU5zKm{N-VN(ndf*Z-WF!ur*Mlu67K$Zi49>qBy82)&x_i181ds?YYzfCAAu=lL8)%+!C3*u^-9Imr?#&K!W0ozx-24g1^N03ZF7} zfCdImd|#6O|NA{1%PFSJu4||auud_ZdTtbt+=2tQY@zNJg4Dm_aWv2`+ijonK^F1= z_xn&PS)jHKRl$It2961Sl<-r|ZnbDlj$b7{7h8G2F~vK>@NGOe*n~8aPNVA0Dh9s) z<|JBy8KHx`^8@V%f_;4$neA7o=0rb~@eA#6JZFVWg!yNi@hWdlyNSZN8pmSbqkxVU=5SFDNHGuByVyzblc-J#hDb@hOxW1 ziF>v$If*0bcSWF!)B+KWNWhXy;?Sn#4sYhkgKOzULGF`$Kxw`+)%Uad5s}1ySt(iT4Q5QeaO^ z|8StcAL?#bNlBr2(vc`EcSrUgxq>dHVDt6y!GdkF=p)#ADi%tatQ_3={#N zGEccFgM4a#2x|q`Pp0^vXeBQ54^U@uT}V_Q_<70d81< zb%{p65$fG;Zf?;<9kT!EX^cO1&b@ha0fo*LVrF6Cj_b5qO-C=ECA$G?3oWaKrh=aQ zi`YS^M!+j9?6Xn(HJR`o%;>x=A23HFV@%xKB?Sf6pwP80JA{Nn`W-a|zr7*0kBiclp6^$C1lqicg!9|tZII|5Uw|Ebs#G6I|z zD->`*MtH&k8v~T^CZJHKrl8=r9^(V?rHV>lNkG}zf6PVczgAed%t@%I1Wmf)p-q5y zd>rG9ZDate0UkBFX7HWcTssi$vBy(@J0iJCrl>c^nU? zzLc~C@Es?%XD<7{VIx3$Oikp!^+Ca!h+$rIz%AOn}eO37jOO}b?HpQ zz|Zdn<`0s>rIlU*qJKvIoF|Uy-n}CWf6x-ecFyh4emcuu$n>}TDVYL9*H9$WF137r z(+nhLSSt2?Qb0feTg_H4RLpc(qZ{?H75SEy1rUk6`bWQ0?Xg;60%#U`p6sC!>3DY% zmB%MwGf{o{hLl{QP{lA3rqZ)do_BU;rhj1I*6rKg%i5Dmp#H_K%fG6ph(}Sg8B~5r z6GU(`ST!0k!;2o!lQFl4_s#F@ISM=v>ggXgWbkiTw6NX#W#HtVAeBqXemkU(MMzf@ z)h9(!B90#-CGi*n4Yooi*0R3u>D-z*u(xEnL6(^yO*lR;E8J+b`bJAnwrVS+FP3EM z_+Y7EC6i9%uDz|Om%r}xwwZpaqdy?Z7g6BP{4Z!mVJ@K%wP^vXR(LCTisd;=)ely+ zm6mg}oM`wDCt19vix>T_qiD^^1;@gMw3l~+KHe3c0+&J$j^)LHkZzL1hI+rN#;WB| z;<7DYT+H1eUDA?T;r-r3PZ_|qz3=2htF4ReEGyYL#M97bZ*gf_;pi7)_+s+bWg7PT z@8X?m>k3Z#&+i%u$oe&uEq^Xv{(RG)JS?wHq=ApW&(%n@W;E^f>t3^xu@{h5_%lLS zbaJg0XBNHxVcpfTPCs_NCAOBS%N3IJ7f?VVDE)fDTrP8?j66K$xhV0 z?3Kz!0|BLkPM3|B9_`-Eh51AP{d*rPe$rhfy+y5n>b|pFERJ9Q8D`P_Q)4iho?Rm; z5IxYdb$qZ53V)j|>8T8&73afm0fbNjz_!SMu-Y3c0B9YD5M8=ANIUgh?yK!*dJM|P zb>n9C+fzrnLtnMMt(TqJemy;})7)JlGBN_qS~)%srOanaZoFO8SlV{aXAU;~@Qyza z5Gwhfu)7UylLfk{?zT3N13!82pdKnY+BQF(t30-sxXpTRGCTwsK9nLtfiLRhMrZ8` zXi3nYv#sD78kbbxU7OQT>p$o(m@VW}SrJiLIoV~6LtIZsS(39>5l z`P7oTP4`8=5HHQCa}Q_)p-L(xgHJTvl~J`2pQc*x-*v-W}81{5QL0gDoORHNQRaYl!w3i}4uS?;3GW zP`^k+9`l|uhPy3{hyEMpvXmby$IC?62b%pn_w5E)-6XPK>;)wDj-lG|s!fI!d6`>)EtRYB2z4-e_Mplt?vvv}C@ zEbhgRAh=2M%}8m`{{k*p=ZXJ(D=bqgs+CdL7TtXs-WCsU>#dt}qRZD%k;| zo@1EAMm(F{@f>C;M*yTUTTi9CD#7W-T#U`0mYe)|dXL=qQL7m# z@lQ}88}rdsB{AroU}s-Sj7z(*9sBWajk;_gpo0Z^unFfdC{F+G(AI2!nR?IMb}!1t z;%P?!&b7~P4pS%2PiA)s zcfCwq+C2E4=xL@{%jNj&yI-F^XQ0%QlUAB=#AM?zSNGo zg!A&3qnp*GHMSEay8{37k`nFNgsb5H9!And{9P;B5G zv-PWgwlLPfF@H{s3g(neLC|O8@p-fRTa0~#Yx^bJbaVr{%ua*ch;rvPo8E=C`4tp&=o{fci&m>c+DY zFFk|m0BX-uq-thgLt#8t7^EfjMke_itS#9-F7n6aQ%yE9q7x8>7|Z6mhAcJM^&~`v?_^r?Xt-UOGx4cXn_G@C}1Mb9=~%gyj~*HtRAE zX!L;YI-B`xDmprzQ201+4G&W2g=E(Gbs)^rltM+>_a8+CqBYv%Kc6i;`duMW4&>C1NpLdp^t<5%!{>10O%o_{tdEo$C3K0|lD+to~O#g}+_bPIWi?IqdD<06GNV~c1`<}&%-~m1MIwWGCMeusvcoFhf$i%Q+ zc#v)eAh3NU8Yl%>*{bgiSMYs*8$}C6mL!TYXNjnE+*jf<&fhrkh{jA-S>E1_>%zjw{gh$cwjvs+ zL;=&}e>oIAA0`yHGrUOtJ-y0wTc_B4(94`m{QJk^8-WiqbW^&i&C7G@M8r{c9<6}e z9A82eb79ydNzL1|)OW)&5U4)?^RUrY5_=za>xpJPZ=z={6RB}DJ9}Lj)e|bic~RkY z5XXf~ZJ1xcN!XEaa@VX$R`p;HteUZ_sNU2VI2HA9p{12}`ss11s)o|ivasNt*yVop z!tN#eZGu{b-$oM`&t2ire05V%D8|rQF3LBMm$$pau*JWXBW7v?KE~G(l%Uop`KBL* zDB>R?mmPXmO)wgsK3EXd@1a)X6QN`6Ql`aH^2s{8HmR;sRxMM3<=%kee1CT4?q-vl zTmWs|L3G-Z-n%!ahaJg?)E1U*o6p_3MJ#diPd#I53RPb}bdm`t9G?LU#<2~Zuuwvt zqWhJ3?u;+CU32nau&j^~f=Y+sR1jrwwvVfuX)~upwE?1ngS?+o(Vt4u-{*9mfx-WJ zFn`I8+ji-#A{wSSL31WjnMXOdFO0pp{(<-}obvDRPyl#7h%m!LAD>fb?49=Ex_>|H zcvAih!+lQ4G;_Y3RnaTnKiPdk^*WuLUIeSk$D4;FnumxSy7zok*2wP2En`cXf9e?H zL7bPmT!~0cPj8H8l?iW{DqqZq1H&@G_oa|TZ`(c$$sRem zF{LLwB|0g2_4}5J=5@AsBRzrUFZR9$-hN1Y8MI_d+^#kb4l@SZ6Kx`TIQ*LB0~{VB zf!-E-GT?}*K>MBU#yrqE&+g^4ZGk+VLchCMcdgM>REK}^i+f5@%H!ABFX!Ptul4u! zO>e>jD{}9YK80JuG^(;7-Vz0DNheWxo`{8+oM&%{UsLXO$!6ny^%mt|ZY66h7}ZsR z(p=bzVw}oa{oJa6w~xTN-;kZ7rK2M>)d*XC@o`^qy_nql#*?(EJGz&CN4Y)y?qT(1 zcSK)tjZ7Rr5E-jtp)G>`VxHnK#q6Q^<@+HE4i4u4wB37e=jzq0d95+Au&7;ajK{XI zS-we7@U^wI?dkabCKVU}ul;ttlV+bIX@>9cl!Pc&q`8neLC3So0xFxU#f-mN78fS! z&gptEUA^cq*N}Q$>3DB=VZBJn;7GYlC05TykE8jEyRU(DP0iSiz#Ekf3Wp3h&u+VJ z4`>7+2+oGQ$g?->mk+D1%<#?UXDe#uS9oaz~nyXa)dXq!^+1)&|O4?vE zR2|L9X3EbglFRn=Vf5sKq4Dpi`Duo?Un0mhrmEc!3oCXSi)aRn>{TNjkypzN-S`-; zT>cBEuL(-w!W4}PV)RFyHr^lZH(Q?=JF-i-Rfp#WMx(pzI&wKv?#(OaH^^fx6yjL`<`!7U27(G>rRiMO>FpDoL48d`x)e9>i9~k zsyAhNzkYqOp9UGn+IUr2K>_Pw$;~Hf+t4;3=)Sd}=)FPW@T=~4wC?z@?zF0Tx?;JY zN@Ta9TYm4cZ|gHdQHF>2^CS&o8*X1`KbF&8f$7)Iynd%k(o6U)*#)_a)B6$*o|FvV z^USr8>G=i9F)Ai;NCQ;%lgDpnOy#n2Sb?%(7>x*Ke4huyP8l2=gcjW_knh*l>Y}$* zG8G`qEI1?`>R4G>@%)*=HjUa1NWPDMk<~pdwTwah+FPH7#}YIHRPcr+vxX-sK=OB`bLnxlAa|i`UzrH-Tpw&0-NPzYzpY zco54Nbf_$X&A%Y)>rN2dt(Z@Y6ZNU(Pp_!hZ-B?mw0^iVIx>PKGRMagJJjcB+W$%{`766uy~P9yPuSJS z^uOQP3P&4H?6vm(Hc=yqz0HLTeHf7O+Ez7KYWs<*{|$Gp3~7D$yQzV$_=u0zS2c$) z;q45Jg|X2u&!;*{p3grCxc2Ubk^RCz5U^?0fniMf>bWqo51Ix@;fJ2=~kvFsko}DD!JJce7j+z=o;u!Zc#PI z7DPf?q@_hE0g(pj?(T*yh;+AtbSd2((j_G=QX(KA-EhZp?{mNB-gD!e=f?WOfOowy z-#N#ebNpfm?7f7iUWMK)blfc~c(EN$stp-n$nIYrr(PaE^giz0@;a?3FMczBnsrdN#D3n)yg~7S&jLLtJ{fcifaL$2@|FHgdD_FHya7}}~Q&H1} zTgKuH$eUoL8-LEQK>WH#B1#eTn$VrRw%q5~v%y-2kdSaNMWC**aC1I@LJP#~p9=}$ zf(W~;43h zPPzA7TJxKV8&%c^G45i-Smqyh;S_x?gZ#UFN-CO$7~kmqzBqa!9Z3ZCM~ww{6D@*Z zX`SE@&c88tzTktScNlyv^g)}@Q4qIhM{ue(%J!Ig4{biJ0s&{}orWW^4Jcuob#>>Znrw;a$5*H!CI2fi*}ehllk4U4Ilf)f))PG>j3vD_ffwa6f+}D zr|rHvszL`^)H0l<#vkeMhfdGT=-BFOv!iwGH*SUb7pZN$n8@YeOwE<)G5{LvJ?y)W z?LM#X$Hm7dD?pNEAVt6(Bu8O&(y4>Mo@ZT!GwW}O_7&X~SYxKx$$U2=!MDBD_tl?> z{x~GYa`;*Hkx5cENg`<;);1%XigPw|5>5!=fZgYZRve+(*zRgpB4-1x9&eKoDihO&P}zfPNsbsU#Mrl_I* zi^ga5eEzd?Z!%wl%-@L-zM-E|G|gpEI?kWII$Jo!x*>+?zD+Y{<0zLz&>BO}=!M-m zdb{laKe;px)>W@Z+DI8kl8sM-q#F#JzZbZ`@~ z>osdy8;;mI*Tw(ph_ts?uNu!geOTXNA z6y3(-{>c1RdnPxwMs7QqY;fZGE^#Y|qf||F^r4MMMdyRlP7?8{P~fCFK>U{$D=Ejh zN>nDzdqliDbGn|Ak<;2z?6sp|(8AOy+o+;$-&v)=nHp}Xrfq^>Y7<9=iwCWk z&wHjI8o8El5&GahU&^NShCHkV&Q>xSx<9>j68+rgk{jH=9?a{esM*9bWMX5_w_Ffc z=h?7!k^P|tjndEi`$GJq{Wh|^Zrib|E8>Mr995#@?cMgb)gm{~3|y&cdEG`y3t4JC z%W}LW*a?e1l_sm%TD@Kzkd4ckDe0h{*`W+Cc`!1{Y`8MKB=D{=@e$r+)t2G6U#JKl zL&+#uXO@At5tupccSTZdY-|9T9l)XC8;f+&EEx#4s0akR>u5g;>ULT|JK_2058Oq2 z55!BQS&xKIGZ`8cGYy8GX_M`Ww(Y2T$K)^ZJ8;%ZXIoIXNor3g?0frGsod zU8-}EIz#ZcfCdS@YuGn4l;QOwg9e7N_s^cz?CAMRkMgS8)=HhYj2!KT`L%TY{@Z0a z1x%kq$MFr1RW*BJ441l@*U=a4P2&cCh3=PhEP2xr)!C-6T|+d7j809RAjR|eXpp=D zB_b%>>vwt>(FvI7SXjuN6CnXjENODJXGyMV=}Q(}>14a@JX7c5>COHhb$$VpGcS(k zg${B&5?+prUVbq8(aa~LX7%i2mOTq?Py$1WizzG7*VD87$HpFgZ)Kme1niZV2W?fC zJX6jLBd_Q%x3&s2_%^{QADvO7E}zY2@14R=DCf96vN1+FPH^P*Fp=F$Vt8pto6R&+ zCc2c(+Nkdt?S}jI9k26^2wR`N_xxs_M2?V|0ez&!P`W7iJxoJ(Cyq(Y4noe&*DY1w z+{|IuzsM3TjB<|(RYsWfD?tbeB1&B8__vZjg(@e1&NRLAX@wv0!Y!Y`EvZCl0=@Bu z{q1>5LAf)N&h{zVL3$RM=a;AGv2a5%uK4=fNB5Fk=Z2Q{%s1m=@|c$0dFr!z)cbE= z`tato*mj1}2+fV8vYzz%>g$%RveiU#J!X@!Sd*fPK4>_)q%S{8N7Zx{*SwK2fI$2P zAINRsB3Ddr{D^@_3GQ%Ou(1Bu&B8PSH@k2uPlCPgd5}S~ji~`kdft^_RLVVc$>&Or zyJ2%0?X^lb?lzcl#PM3uu!;;#_ebtwcV$UFUvy7kuIV0{VWuCC-4P(e7TTDb!yonk zxm!?rp9Vvc!4LjrN@8kHl!#ktJ31tDN0fXWF9h$R5m379_t$P=eN-)J-Do^=9@#pC zJlYYsSbeYVg(%u3A%gev*#DrMLq=9i;^=dL!1za}(`!?WPkk?{4||1RS_zE589JoQ zFBwftJ%~L7eRc`XXSFPS;y-ZR^yBd9FH0Iu=5x*={-cQQ2{w@gX?S4I zFM2l~$-B$o1+Va^Fx!Mpy?)dvz`Pt6Hgy!|b(#6A&$ZvIDw484hd|$UXzNWuFjpZn z(dv_)n9%ZLyu`-Kb#i-$cL!GccoYZx)j8hY3SSb~s#>-;WaF(h)LF9|KZfwas02q# zV5^6M4bTPTOo5BM*88wY1JZJUG{YFRjhBRpv}K`e#8-dbT)A#>4mZ*+_YUQ=-Q$VN z+6rl9>P1JCZT&v#J~eg2%hYjv8lf`h0YW~vwJ6D29QpwLN13LwQUlg%T#Z?M(ME4V zWIbO5Xvov$^tsRmJWWxu^#1PbS!TZB>|NMu5!#p9RemVkY=I#ys8x!SdTi32fYx^* z06CsML{he<X+@z9ZF_0b z)n_!WrFC=?`N5TYPAE4~&2ZfQTIqfNhX$k>)@g}kznmt8a!HI1c8@;D)}z>820y3TfyGQ(kxVRHstqGRUy+btZ&)Pms+V`PtBkw9$Ekq8uX zT=c{>v=tzaK5e9pPkcFjRGpRYCURfKB&}bv;FZVO>BKEG3a_b4ip$w)iZ6drdcJt? znVG{o(v{jt1?#so;d{TqE$p*iNlQx$4AxC_1_p)>&FsOI#TpL;A+e>lfR`gIjbWKA zdknMOU5}HomY7`>${vB9(wc!IdI;;(MY%OJ!;32CuL-9Y+)kDBx1pa^u75jeNedP- zGYzjLljlkIzwgGA#9L!oU;n+JD&|ftwSACGr2If4lOd)*&Wiw#(;xVua@)HPnCiA( zHlKN9@9RnBc|*!-Xa?7HAvR4;ML^yY1Hy7O86h{bS11*8GV7oLJNAN#HN89he)b{O z9%gPob7Z6M=t^I%)!eTdQ+?YSapa#pRDko}sXtjOc>n%A_;Pvf4T(E5W3A2v~U_Z2!Pun!hGe=eGx zkD#HXPSb9vZ8nY962j%^Ah|7Kp{ibd+I~f!OHCsrY+LEM5!2}csc$K6Rs|J7AO`o7 zi|~Da`p$=sesFj41YXK{+*sgli7D>vQ*sYlIadHX)kfxLne8Ak&z-uY~0Wq8Y;;uzp#w5(nZNHgZXguJq#d(v#i~(;`C6(Q(QB zf+_ABTD^YS_?z7SD8-L)>zn_O(Vc_oDR>1zM4=XU?gjR>r`TjXHh`I2TwDN&Dre;J zNfg!Yv4_0A{$jpT0d0O9BD;cP@ibYe*3MrYMYpn-rYbG;B+AFOUR1}7Ad&i5Av(|4 zqHgG9YP!g(e#XunHjaUIuqPBJcg?J>uCA<99x1P^thC`dn;i721oN#KLoQCvf1H=* z1i&N>f@9sq$$Dr}Z6Pvk)zEOxo_gF@-D_cHruPzJ5(3fX46^NO6h}VCN>Q1Zq+F0w zGEigso7=Rb3A{Uzv-MxUfM(ZUswzed+Bk%d$KeH}$x1rO>!4Q|_b1Wx+NrBggOhAI z7}@D}h7q$fsg)X#LDKWjo_|i@kHs$dKT>)jJ(a;9w}?2kY4`nBNCsqAkvFkaha^0) zAvdL6+R2sg`yKCOPoW=b$E`CUuSeY*&31tf_^(!Srcb%)^dx_X76C>xZ2GE*4Dk{2 z!O!+Jkakx(cJS=?{HtF03%L#+!(aBA0Mz+Nf_;Kb;6sn1a|0>r@rtez_)XKP&bTGF zOXH~yVIr%njnP#ED>2Y@Y*48%y;jg;DVhq8__TAWk-B^05HMvTOf zRIvByzzUTpF5>1ND-hP#+f%5Bz>D9*-zl_6`W%_FUs30i4q|rXJZbAWezEAOuH&}rIr9rL(n0xzU{!$T(O77yGqcn5pJ8XGG-dVvuTLJ)+H*WWPow}U#CugP zZ*UOuRG7$z4<`^oxLWRf<8L9ogf|6kv_trC8PW?0iZBM@Cy3y`IgLJ|e|Nm*^uLLA zI&$z}@F}MI`yH$P!_;N^$IFo5Z|*oExOBPpszQE&EWC8&@k<#&@}fPCce7I}uFh+R z-L%*IbCu(tZyZIrXvSj`?7pJ;QJf3Q6&4^5M;!lU{HLG&r?2~;yzQR2b#UteZbS<3 zS*Od4Wu>H~L`B=beo}}0jr_pZ;o+U5#c=EC%KoFNp&>w-Wy`Co;^X6imf;E(i3%!< zkJA02=O7UB)8IS+W`K~h8iyqp_*;M+l3&)|eit0%IAz##kS_4BhO7aHuJKRmhskqi zwD@Q;y0M)=m_VL@-oe2ESSrA*snI9|1C^TDO}qy$sQc^zd4rTEQd|5E7b~Eyu5Rw~ z;*gIljMMxp(XzB@Lno|{{+s}A&AmY@+4AUd9q>mXhWNRHEV&90cDv>0_CX`79}5eK z89aueGyLHK2)g{%;UEzJuQ6&#ts>_&1_3ch82mYvp9p1quc4P?jYf+Ot8NOgwa_Vf z`S=zeSWT8LM~ahAR#~UwEP!pgUEOT7_N47U3|O?JJ$(T@ia`JvOu+mKgxf&E zdQg_62Et~zD`7NX6=-T|=I4`WPft&qo0*Ae_8675V~a6JMlr2e|LU1bf_Q-t#)91^ zxZLuC$T97u3B>Fc9dOt6&tRzl?r788C4?%`j3H!x9r(e=JIe|$r?=;c|MY8#jUUO@ zfPo!?%l*o}n|0j=m;UFWTjVY}fRvMRSxD4KfG1au;C^0Cs@I9E_lbg}WHydyrQDiR)%m) z=09ZFh^a!&Ix}-KZn+1J z$zSD378O~WF$&)NJBUc6H8jkw?@w8@4NgL0xV)l*rVsc6_0VBs8C7T>l81_E zyRFg`jjJmwbFDhweVFpMKm}hU4V=~4nrbx)byyQv2SFX}j{^%K)Dd@gckhec)LXAx zz&EnX?xM2opLz3!<~WUHP-@g~&QS0OwDwpeg$Xjg>C6ybAEc=tr2U0=&pQL=B?wg! z(;Ha+B0t7o(k(gFbt;MgjtN%)zb?TcrDWEByLE8UE-2_Fqbi41&dxUa=pRBQ_JZc0 z=6MMn5ZpKc^mrqZ23c#kA!#=+E^hA2@3(}IhBef-%173aR-YKfarK z74ADaF_AFn`zPMA5<>()P8RU_uQB;Q+2j64AsuXyiW3(av z+&TTf3y5;YUpV@$s*-mlqLy}#vp){#|D$#KZ@LuE8U}>#jbFb2I^zZy0-PdXaO~Ff z(!K6MHh}QI!dwqA5I4Z4ISyG*qWeLrMyWwJKn>BU{CyPv^c1MY(aF8(FOmiwPufTo zs7rs{Ko1E-RuKTNpq$Lc#V3&ShmSrEHyz*C`$?248ZTy@~Zi|b+hXKiYy ziKL7py7-{Sg7LqVrRBa`11Q-uw!aEmK!m(v&Yh3^4z5#fVBH9g&+Rn*UQ_D&P*`_$Fd->~z;GIw0d{ZsF9QV&}A zKf(ri6n~NJK(MR@Fbz7s(=Syz{8v!vBSy(_hDh-yg0*3_Rxo>&Ui9iz!jC2gnW$_t z)DeSZj)7sZ>N&@?`VmWyyI-NAWUw%ZOG0+OuJPtO@F~)fG@q-2nor2i=PX=G#D#cpL z>xu^9Qj78gp;D6#s=~ozZWzI$qecv>)*+qSq)pW+Nbk z2&v@LyaUUaQk*CQXLLs)Z|><78Ts+D4;>GNSJ7Y{Gfx!U zcz9RCQ!l(CL)b31M+C(=&*IrLD&3^XQoBY?6uFZD2 zF~T80GFqO%;unE0sqD~B>3?faRRVi2w?#{UE!UY_T>r_V(X2N&%ey`Zj%MZEe(w{I zcN_I5wCqKWj{Wl+cS;u`&=?IfxQiNu?c%$|dNb=p?C>T0wM0v#2K2g30ys!04U_Tb zD#qRh`-wH1AvtG2x0{32nO4yu7{s#Q#P@{aCBPG@1Uu_UqXe-`h!;u)%FDGR2p?3V z&;0EB{sE)&MgpSp7PXlYx=rLHUs|tCHM?3CQxW_eyX9$CEE|54^U{@*|3jxx_$^hx zGF2x6DgW5gS!P0|Zn0hcWskZH3A=bnf35b-s9!hanW!CP#yKgcsoN>1f5jV!ictBi zrsu&*WmyH`Ln*jLJj+v&z#=IkPn|6F?3$YavN>Mgoq8G1HIa6r9+13$wxX2Ma!m}E z9Bw3oTZBNVdy{Qajmh2Yj&tHKmgwiCzx!h9T^cKp~6MS`48s^ljl;q0!IKe_I zws7C49wcf$9x-fNsFGbl2KIqn9|(x?Tf8bR-*HXcCS4m2s2vrqBKS4(mnVrQk8d|z zmIi}4`9rb1ZS3<+`ALNWd}Rjz*r=QVWer9`w>#o#)YH_Q_Z^ht??{$lA3mpHx!Q#a zuXjn<<6E$|i)^Lla3lAZY|Nw4G#1M*IX7!7(yTZq_9qNl;fY=RR#o*dRYm;7&>3Ii#vMDk3cYd`He^e7Rof?kK^WYQwY$={st z4k4x+k~8JZvR{#2EKi>wh0YL@ZdQ}~yfDH1VPSM|eb5M1HCEER-dHuM2yFZbztw_@21Yo&nN@?vfDJ(JgPf!tf}tAnUIxR{Q4 zPc`##hL$L3IGE%5c&L(m!}z1 z=3y1ag9e=<0?eNmT%06dUVFa!pdRe+ih0c^k*U8cmn%n6k%mx-QBbT?PMwalqRtyQc^5kUwG^ED{F!K!eIXD0itGFf1BE2i|*!2+{qU$So@GJ^c~8||sMn3DwLLaS9@KH{g%uX|?eM(ys4kBO#vm;Aw` zS}u`PB$4l`-ka;KuWw-k$70SC&@Mk5;MO+5rVY&cBiEl_A>foRXV)sc$CAlMi7FXq zAgV$ZMSvIiL~~>>?S+y;d$X$y%8(-igWvC}d=V7yWQNbb3(|>WZXmMdPf~J4P@t=- z($_u5cg|bNQwhqCxnCszGZw8OXx5SPky-5*e~W1RItvHMJAPvKg!;ho6>L^6$F$GK zKxuLcd}LJ0O(-XT%rXIj0oku!$1xvMdck%YZ_Zl7ASwIzIIWumA}AT&*|#_RaGd?5d_zrtzp-2Hv%lCdRYV{xA5G^(T!6c*kn_S5N`i!?Ry%KLsm0kV(cBAN ziik5hX+NX&E7W=?u1xKD^tw>vh>>WG^un}Qma{_~75it$GxpxR`FZ0t=)-RaUQ(UB zjNkU{+&~~6vrnX`Oi%E=qx59l9EQ!4qwAABO!tuHM%&)lmaC=IXO5e2(~~A529{Hc1T1r?Yj0E z&$IL~o37EkClBS~eyulRc=}sqQS$Mw__fA_LU}iCJH5E)NJfYihZVp$B;mQtUWQp;;OiGz> zZCvCc*!V30p6{mAi-eYeU>XxSfeHKVocSvPygPyMG<8y?;|$S?JU|HbW%0wgwz0T+ zL*H3)Ku;2dl0N-|-4V8xZjHs+%J>i5!l-$5Oy|S}CX&V$8v^uB|G`qGnqHQRtT=pu zG+Q>37x~ut?&NBc@2M@ZOfxA$V?|rdPMoNcdvWxEJY$6vx)B73^|m0rzGWXNRG+tsI;e%^Vo`^j!o{&BwwWF&8_`SWm36o$FP zCu+$fh}Bu7gzVQY6T=(c5kHGt<`_B*k|pdt$ou$0E8)P`2GS&OF^{A90OSTI8E*@& za=g3p;8rW6kT!os1(F5jbH=%GEe&TuTG`yGp;mje0obVw4%8>*rU6Ls6tY+Mx6_yGmuYujKh<1=KTo}Xq=qQf z*KsH8*cbMs{v|WO2tV55A?Iv*(Lvdz6?coKC~UP__Gk|s%Q0`zyXf!&Alyr>t(Wmh z{Xt@}DyMkD1IQVfHu+aMt)J@IZReiB>?OY0KxUy9d<#1*$%zhWr=d}}Bk6CC?sj%R z9!7m^Cbv4cv=qVhm0ieQ`Sk9U2y)oQ>Co<`hF3J)c_dg=pJ&6yi>Lh1G57ZDTy`P+ zca~6~dv>t&*D;sbF>1C>blIc%hW&-ADznIQs>?clYP+e5^bUs`9ojEw)t$&-#{+w@`fYVAJh_O^J|}f=0MVJ)WB-)i}F-So_co zjWO23C|U8)n%|l$0ai=XS|5``DiYLrw@Bh6KCgPFky+W1AY0)}*ptQGDOmzdZxyw; z8$a48$(53x8V}r1($77d^sS%f-3=)3Q{?>jR?OAxW_^K8k z@Uq9C)xUa`<`&DVopz@?YLgk8tHyN*py};2zgZ+*WA)PMX#5(y$cyD<+RbjjQ-9%y z-JHOBWT2a6cdls&@2Bpfu=H$;fT-yfuWX0>i*W8WtnfL~_nlP8*Ob--zHx$O1#UBZ z)V)u+TwlAsI9MZM!f*D2&0=$T40es)Od7|rpo@od$2NCMl!NU_RR87@ao^yoHa6@0 zw$7`jU1l$A7s3hTna!RB&XLM`)ftN%NXG?O1YK6K`4%KE(4p&OrvqG4kQ}mN!?a^D z$dls6M$~ZqR9zq1rsBE*^?~P$4|=zfm^9-agiI%uVI1)nJx({#u)v{v*-!rFe%YN%-LP zLMt~%p_>t@E*sZ%DDl|*W<$tsS+j}dyknu#df}Xr5VduhM89rF%5S9y_!B!~E@)hq9&N9T zjF_#*HYk(+L9gXt)n$l*Rg{-M`wV3U`D9FQSQ2X)nXU6H>}%+V$&6k) zojZ8L*33n`O@SX%2YLchj2?S5TePaYf2q^9Jg^-rl#P{WilvuiS2}Z0@5W>!O}nbX z({`6_Et0dB-n^LD)2)5!(&~r0tP3LHc?cU?^RUs>eYdfEglZtpqdnBeBa{j064OKP5juTLdE3O=Qw8;eJVR3KD^} zL2fw_3TewPkBqs?E6C7RYVRWu8W1v>meRtjoXLWJ)DrmIfnNw+>~9uq(s`Y&&l-p< zk$Gbw5|C)1Gz%4`)wyo_auuQVx$X@BP$Pu?{QN#UCf7$tG)j`Myx;@vbM^$%YdWRW znNP0$IR-gwm_x&{?s_@g1I&|&lHhCT%FV@*4{5reMqE;U2M>-;y_0{DAAjkx`#ICh z!{KM!rL}3H`IUQzD1JT_9~-kG_z+8Rj+;A{FS<=oKWhDu=<;I@X!SlmZvIN49C35x zduUkn3OqwmV-_o1A%YOus?7$H|AwmCArZ4?>gQd4fS?L%At6^pbZ?)Z%B-Bl9zG2~ zq&tuhDvlUDE2M=6W$NjJ1DCE{kRe!+ctQdiruq92dNf2AHxe&v#-~Jn1BtHqx-^;w$c(KH(G^tWul`TrsQ(@u_zzTSE8Wn-Ae_|=iXq6~K2Q0RpTTsLptaz8z>*9<-rxmRAB z@~!dw)?Ak(Gwb`a)hw02(q6*ZOc!VIa$ayY#UoEbL`3GcIyP>ni7x%1=$CiH+}0o* zZCUSpFvGV+4*%W(=D~lc9safDQ&{?*9BNHw1xx_sH<#Wseycj!;Vgi=qK74?K`+4D zqj$E{J=;$|I)?mdZ0i3Vn*NnU@h1H_)T?%d!qWXkNLk+sh!fgQ?pec9ePgl=bgo(H z>3UF75h{q+6yDw;87D9(%*t8@y~P}q(cO+Mz!ZzM8L(+-kwDV?kh$unrY4ZELNXC_ zKZF_vETZ@Per|4l15!8$o08Xq?#+SvY8|+0r=K4P+QN1b;61MmbM3Op>Nh&iG}I%~ ze*E~MS?5$UYh{n7LYf)x0jGcR9JUWg)ec}RS_%sG;D|nVaZm+71Yn#R1`7alrUNz& zHrwMB!j0=cfBru90FAU=jRxGiecdcrm3KL2MT}Qh-ov|vO^(zkdFW&PeRdQU9-=3n zp668{&H|rRQ8_?=IRNN_f=G6elCXjwe`%2U2P;gv6e@tspSgLjWo*O>@?20y3Canp z*Vtt}_AkI3mJ&3+PDo}zi-Q895SvIzo!Lq`BE1q-kTycO9f0f?0k8z2H6%Ge;MOIc z_7XHPiQ1YhDy&3(x}JZ|`4ozk6NorCIVCAnPu*)+vVVh)#byf+45f4c38xTniwTzI zznV6-zqbb-*x&>P1?Y~!X8!Vg?otx~OtA3M7)N&%9|!s7LJl<$qiii(s%eOtzb?XfGSMk` zP!jIRv>cv3lpA|XO@!p%Ky-$nRX3Dn1OoG$**Yt3Brcl0X0mO0 zQlFBN5SAH4ad>PnrN>M5O%)!%ifeTBaxO`JiaXPy0|MU*xWu*+)T323NX zt8sv0#ekWTZmrjE)~<&fI$rH|b9V<+barYA>|Cs&&}48^`<)CZ+}8&sd_6z`qkY_? z5>f>1kne|lS@I{lppIAwe%K*f18gRtoyc&T$Vc$tf1|<8LI3x`(f@G#`}a{twHI0b z9lXpoXU#okL2Cl9oGMbn%KQdG_{D^sCPb3#QP?MYfK2IPcJ6!@ntLB=LJLA6OR={uja!>Zs0p2=zVtH)` zYxg-i!YPSi718{vb^iCA=mu>o~@><<1qr-AY`e6 z08EvT-)%3qaJ|D=G75D0FzCRpp(ha_RuE2)6wwf2I5{|6zj}r8*^?(v933lqm(l!1 zz~$mqqsOsofibV`!ZSb-j`EJL+Xrz(nIR7@CurmE}_uM zpHj{*EV_Th8QIm#vs@fZTa%{JNS01o04o|uIwEUan{C{A9aS07LOy|<7s3gl@E!>W z2+$}wWY#w~txQdA>t?Y6^vOgqv9LfdRS9Xqw6rHEL%;=@nc+uPKKS&z-gOts)A-@! z=U0}OBi;Le&y>M}EOYVZ&CRN5fs$C_s)2zQK)sNYdo)iY+ZD&6THL&Bw^~b%a{ccp z3e=(pnQn`G9&jVgA@PeW8Kq1}`cXd@4^M*KO(?d|cxM@&2-*v7Jt&lW6Sw3U=IEE8_w@7xu27`Jv#3m@ zJ>b-_j~L;5U%q`KNAv&X zO+!H0F4vRU*Y|%1w}iPc2rihiY-tPl$1iV%Z^CI?nlDd z0Xz>{PcjNvHf{4Z&dya#y)b=?C9Cdu;fP>hViFg?s1>tpoB!>;)u8h7B`bW)zcPu+ z;jZCmw*l4$E+CDNeusvG33ipRFEc9ph?$dQ0p^a{x;jo7#)l7!3JbZg!~vvcCE{Sv zR#fB|?*6du#!7_YFVdkLUd|0*_UXxqgXTjzI-uQDOP zvyJ_|9j0U^qmP?FZUDPi6dqr?q_9$J`| zmR4OoQB5!VSQey`P*~4{PrXM8XmMNboxee)-WNOMP&0Gh#s!Mi3J3_m{X)~hOuh+Y z!rYu)Piw~u8Xdd`^8guUWF#dcyg`j!dK9h45fry%`^@nu%?_HF_y)hlZl z%|Lww+KGao_{!nwtW}lV3QXlGDdfB2Q1g#V5QeX+s;Y_#_Zq`On`-IWnwh>&^ud7> zlrrco?Oa^_`4dM3EK8Tpaj*hll*?I$ca}lr6-vLMt&)!)rR8G2efw7Om9qb@4j&d% zhD0q(%TG+bP{8X&4ivL_BSH!0k!otDA6pl<_YMw7m;<)^j8Q@j;7eNS>dAK2bV0bG zVsLv<1_QWuhD@7>r{b@qPTJz5n0mVlB$QQDjNe6c9BZqn#Lt(o4}62}2#hu30Wzu& z*-%3?jk0Rml7kK6Q-(i(e+RM~C-ySnOj&T1 z7RnMYZYNyp16B$K21d08OV#xIQp`>Z3=ZoLoHD^;8Dc3M*Iz%88R?@Y4sKsie?f-T zDKW?hbh;zEg?Kh`8e-EH43)@Y$_`~BCC)1DWiN@`A{)fDC*T( zE5G!kAwlsIS>KYkz|sWkS#xu!(;!pB4VIlivVe89ry#snZnu(bHRMCf_b5?YXV+w5 z1+?*Ovk5tgpirGd8)gu@X13#DMO1&`Nt_2_Jpv&XrF2hGNojuWA5#&P8s+66Ws6$m$TU+~#5e=NB+U8l4>iyuw zwz*LG!*HCisPxm(4++$(nhtpLrY~^F#9>d9b%%jXgG;UFT&HYu7<-0olULeeS)p`# z175N|$;61uuxv;%EN~%g!>2^Gk0{G&bvSELHJEa_JHqY`D!N%xoDFCSCi)ZEbD-K& zMTO(V*>T4;ziyDq92{*shK$(Fkb+G+;&ZQAjGX2;kU*7`?h+CGK0OyJ;(`}k1wWa_ z>u{6oHgSgziE{Hb_`)P*=jBg*{hFP>Cec>=8JZP{UB5Orm6bRNf{EKKh%{F*I&jz^ zVkBk5gh>*vLp(W_Ffle}xYw}f!ar|QT~(zrQVvW1zH7QYN+^`nl0ofyi58;uF{dpi zSJ;(rqg?;yy7K-=&VG1QcP5r1dQaVqpUCths34)j-Tg*BD>i)uss77%G42^TIbi;x zAT}qrOF3Lp*dDWEAW;)^{l~Eo56{Hhoc60%ykGU9CJU7RF8LP8RhgMdO@wi9ct~32 z-!^aYCknjfzM?6H+z`~we*5wTYCDFkLPQ1fBk_SQ((UZ@90DIK*hwLR+AjE|Bg>mZ zgf&vB<$xjn5F|=4F{N%@T5n;!!n@VViXe@uB%n+p_j_e_cH`o*DUI+6PQl9!c^r3~ z?GLk0@5ST?Gg?*E?edFb@5<0VK8ou05K5FU4xi<56089idI}NN}g4` zVlHhdTCw@IBzq=Url_^rl1?G@+4h~`WXlbD>{!XDOsyh9?ay~LLcyeI(gF$?JJo$s zE@%_*!uBxiy=H`Cztpjzm;L}cBkF3H$$(fngvX> zQoWkI=R5YcwzleKtx8m(@Y!S}rF6lV87q+mSF&EwFW9!tUbBN*9tr3a6s1~4sVOPL z9Ot8V?()cfQikzM8s6FdW6Y_}vpAR*fp|9`Zh_?4e^0JEi$jwCF76u*%x9J8Dc@YUX=s;hGvyhR6noA Vk6)A4w&9crNzoV23Pp7O`Y-k9C{X|a diff --git a/packages/baseplus_RainCloudPlot_Ex1x.png b/packages/baseplus_RainCloudPlot_Ex1x.png new file mode 100644 index 0000000000000000000000000000000000000000..7d9d7748b6b43b5fa0a578649ff232820a2ea8cf GIT binary patch literal 33305 zcmce;2Ut{VlqHH01d&paq>>dROU{L$0xBRmgMfhKoRcUB5(N|lB#Gplv5FudNpj90 zIa87|yj|Yze%(DYJ@dVpH-6u}MHR(4f7t&HYps3WKbMsx#HYZ=!NDPvmU^gwgL6I~ z2j}cZytD90Y_7^1c)4UPrEZ6VbEOXZ-!hgYN@2%Nw1=ImG7a38U2SJ>!3)UCBs8qMuC4zBVJ`P_2i9U9mqqAKDVXm{sT z#~s%i(27F9xNu(k&|jjl*XBcC#=aAKCLR9rKKkO{-w5FOU|&BZ{$G53ad%NyJ*U68 zxHu~pwbUg^wR$q*=Cnwv9#%mgw_R(Xf)xm<~ z^78T`i2)tAoR--q($f2_#-cqv6oMPh!p+Ui;q)orzBvoWS0&_gtyVF}rg0&W)y2h1 zJ;ja|u1+Vp)t7HGFODhW;MhoA6JJ1CI+DY@QG4j^Oy#Vq%{Ywx{Ay)+F!IljbIhu_ z=4D(00xpdqx4Dd37h0m(Gn|aqPSB`V0-i^ED3qYVVW95O)NqNJo05cNhsf@zYSqRK zgTp+p<7L*e(eB3Uj;TeM=71Z_l&%X&O}yvU4HwiddD-E-PI?ed?}~Tkhx-9CJ#)CT z^G`{hhYa5O;lycGtkufmtmDdHf$i**tiFTaZ;ASQdy7j;Er*Lu;8V)b`EfVQY8x&Y z{nGNXFM>fXerw-d4tZ=pA-6YBeWHwKvz$}*t_=6%`f@*aPEO8hS@m%aVk*?@$bhON zI$!r9&JW}w4o<|wN}{sTQhb{5@bI9h%*>M&VH(v8W4vS%KzdD=QPpX!qZ6UB=7?2CbXR$i zoui5zsn?H3BKFN4+ucvu4ULT2WjSG5It#)>R0W*YzKmIRw6<=! zR!%nPa_{zS2S0C6;O-&7>lN>fLbsBe>5AQpRb3p2i zz1-(Q&lM`|ls#lzlyG zxP9wKVScF1??G>no6#NiEPLyXR79sf)$74lcr@|OQ}6$Dv3Z(l-&$(Vljtd)o15$I zR-pOW8qGCQa_Q73cr{MQ$5y4*RXxzqgAJ=q}5 z8#vq}S85viPh6epX8sKxB+7IGLI#!eii zBBmk|j$UeG|Ha)mY=N5%6&N;(+_`f{-2YJ^2@f~+pHG_Y;z|GkDO+|{mf5RUYUS2R zh$%Q%`V-6VHPrYz?BHM(mz4DN_Sy@_c2!kWXbo)VXqMsAkg%vBM2G9Gasnmd7FXOh z1`R?>%!-`Xrxep@k##)N6f$$;1K!29bAw6QM2@ea%V z9=qrXo|AX1(h4&pbY*pKDR17qNvHXk({+;g(f5~n4Lj-b$vy~7toMj1ZrEz&nOH1c(DFtaL)UdP3Q92hF7h2TLsR~@% zd)FH>J$IjdruK1OEg7)a_S)`K^+oig$^^Q`Z*163D_thJfOGvS_@0-Oht_s>n@fFJ z!D}(N(OXVnwnlkogc0gskptiB(Gdj6npgfzJU+I@5=2ZSv^$l$f_fa zPsco$&Vjq=G-f@Fl}84CK0XP-5ULthlm&_nt}($Gb=ub2kZ{-(wy>~}m+Q09kgdab z?g}M8AgwN8yW()SFgVpjCvUeYjP5bfJcH=^`zGGWSH|wQ{OY>4qtTn-DW#27_ZQ{7 zn0)p|=S9<&4~&tA>NG!-Lq#dJg)=iDD5&7wciEWv6NQU|FnHsDcZOQ_TS^KXMs4=0 zy|4B9LzQl2>(62)WPI12}|t zd$hd_U+rK=i#b+N51Q} zsX_OEgx?jB^`F7?HCLM26;p`r1z<;#~ZJ!x_`C4(IZ zYHNGGP)JU=VMOSX$ZI3~9e0xPcC9H!+;-PiO+*?#vQAN*BSr6d+k3>bdAcGGhdO)^ zyQ6k;=;M}1*6ZR&NAt)5^iht(Ch2g&M!HI#&h4SpG432p_36nSWc!`J$;b*5Di`8l z%cR8NE+*8q-s`Z;>$>=;P2+7;uGb`iE<)UWS#u&__!Lrgoh?|db zTiW<0vX>8{xr{AQi>X0>|5xiG`##AW`%LiWV76eNfp`dRkWLHm6nll5RBX3 z-*=kuDC;T#8}%ci(kXn|oUd1>pr8=RqJB+a*+@~bXSHlX)O;`>4A5nBPFY2z)XmDp zWgi<{ZND3}elCE6l*`r8pQD-fELy*8BrqVL)N*V%&=o$3ii(=I7lf0 zTe0zk<|iE3;nj&M5ATFDFZD50Ud+yg|R}M06L9)8#)Z!xJ4od0p$04^&w(wD7Ybz_}f%S#P9r5X_XK>C* z;?a?bO^n(a&NEnTX>qYIoTaeP+Os%Q zALykwQZ&!ty#B0K>AGFvvUzbJn$8#Z^8C!qsOxghIS&CGv5EUFj5s*!Q#obhoc*R$ z4~;{(ZD*vST6n-pWny_Ds1a_>;^25R?%l#B(^3z^>ANKGus>c35c|LL`h*w#`seJn z>*-hOD=xIcRINJ8Rmy?!*m&D7UNfnQ`9%2FNid{S-DV-U6Wh6k#Q z9BIgYW@ct~_w+=u>*g-I8X6iZD=XXB6bwDmdp;H7Q?+?`435dd(((#slG0aadGGJl z)rySTz6jV^R_z`92!|vL$$67zJ-^n`K$Y z7lERxs_~To4mB9}gve$q7vu~KP~Vp^Ua3}7kknmKBe`jYiS+T;8NjP z%G^fa$xJ(N`~Bu7Iet`-QRo0yAwOL!`?JehZfedS22zYok;-! z0XMBGy5M5|(&6;d;X}$V@?qV)8$|FuU`ig7>&_vRBCeZld}SjYIno?2xf`CGKEPW) z#&~%(1d*#`^%)h(M03vmnXEHX^{Z)Iw0|c~W1y+5oYrIV&;0bLVO~h=o+>K$?UA0( z>SHSBaS$WYd*;B4EKD`2dBM?8{{pY+*Dt7_Ab^SEJ(4dhENsoilQ;ttB3+XwqlSri zkg{nFmRgJ)?Qbe7Ch75h!;>xtc|=ZcD(wFK;15NX0PLNyhI!V%&F4n-|e4<(R8-t~8p(g_N>N~K;?LWcj#G+@ zxrJ}Nb0a=r-1x^7O#3pM`dEAs%qrQx`-vBmjTtZfQ{%p(m)38BgN%bi&v=&RfAX4S z@}}m+)2D&3E&i`eP4!VPwg~bDmSMkh&q{b_W|Fe&aD$y*g;yozz7-}8V#a`}b?4Sx z+LMJ#bQK>7vDbeH#h+hmJ9EKZwa?=ZVRl5wqd!ogw6dL-c;M)`Q}Y%VY6CquOIwlb zy795Ghm{zQjuml^h05J=H{JbTs^cEJ+C>C4&#n8ERYmq^BH&CIk-m9=ajHJlwy;=* z%C(h^UMK&`Kht6RA5H7-r~7SwRGw;zid@F+x3Cw?2Z!rRKsvnY2=5Z%ZWw{M_S#x; z?7M;P?u~v;D^|7qA21eT^D)$RW>)SKIXONw;<77b1eBr1P?H*wUSp@1hHM#TDn_dx zDUY49lvd%;1?&%E!W)Oj;1xBq>>i<2g`YWWxAgG zv&|6utzV3x9LmOB&4QTL1l|Sx9TD+=<3dDDiy*oS#kK!wfm~2FPEa}0 zP(2dTZXHd{n^~@IZ~t-D^4z?4l!Ba^_H+3 z7ff*@P{S>dCK)?ggzr~Ia1DczhC}n44(8x>-qyU3m6dhwfQ;qO-gIc5W|=IWUeVAR zYB_gMX+-F}_zR9M2kn7vF{v=0{AO9{gIDWhaG}fT?I+_U;CP0Lj3w8G3JqHzCgoP{ zXvp+9t`3)2jFiS&qVA~}?vQyS$Znl|P@Q=(Rzr?TVE3?uzy zF+;@VGdMU0Q9X;7eZ?O$BxPoX5#dwB#KeqRIz4#sV5WV#F%+9-d@xkUyKmN?J#n&A zcAvSN6wgPj0$c{wpEYEu$);u~Pbqh?P|V7+YR3&y()OcLnNp$K&8bQd**NH7hoLmu z+Ontd`N{~j%PNKWc*W4FV^m}$1^d&dPgS$kCaw8b9MJ`m;otrw_U!!|6xFqV6rVcx z4yh_^jaq+2+IFk-TZiWnuBz_3OVrz3uz}Yn1qO{*swa?E01Yygv2#?xZ|)$@t~W26x$N#`d3mfNm3Ri@b}l66 zRoSgmX|*fGno}(d!&<+qC@n1okN57~MeTvjjSWbGrmXoNKHLc;9w)zivCMqPcA=Ao z<|pJ^-~-9Z;(X4FQ_C)*))a?JF&$LBZQ4$3&N#&92QSjFhsflG)Us61(@`tnfut(Vqm&UNE)`6jGaTe#(o@Ta5U zu}|7=)n%$m3#_^_qtf?#dKn`)Vn0gtXZxuIe2dH#yQQ5D+UstVn!CYb>0Y#29N&Zw zHg2=VZ)Q>~MO}vz^TMA7R;@OzSmbori@W5@Qlp*gr#ZhxXH3mAE0tl?T1?-c_9h znx}TH{>|U(2wo2Hb`HQz$j%;ldV!%q4Ms2R>+1{Im$bBW7@>xyW=l(pnVA`n44_$z z_wK=`mwd&AoYsV`f4^>=Zf{OTq@3pwR> zC0135Lbb}uDib+tmizs#Wltg)+vmH)`2A=i%JiXIErFETW2J|`pFZO_hl67+4N;Yx zoV>x&*0ykDbuBxkaeAoQ>-3v+gb#w1l{Hy1G(`TrM+2A7YXN)hUEELARXfvzx~{Nk zEVt||a&w-S+QKT}EPMp_HX<3p{x{|M%IkKrKMzaopskCt&%gpd=&>~(vwi?yr6caL z>QoF)TK~*lp#18G;P9K;RiboGE%<)?<1N|qlFsWlBky??7!<iN%`=D_(Vd?d?@kk2G%o;^NdV8Z^!U}BUVk}dqq0pXuM^*u6> z>47rI2LV>a7S%FHetNDD&Qx|r=7C<%I$6h^>wN^8UQ^03fQX=BJ6}70jEX9Qg5{CC zcv2^Xi_Oi=5gu%bktE@#q)d4JEZT9Evp<3CzWz_|bGUD65+^Vdm2SI$P_?F4qSgEm z{yd?1+fHUyA|5CHL%w)4Klj3V)^s+~=#80}v4^d=r@tSfVt;36;Z^625&Ucilu|TafR&3G(k;NAQ#;a4|Trg(Iw;y3YmE1^s z$w#bp@7%8{BHojUNU9j^CgdkAH(i^qfe5V(BT~5G>(BanuGFda+C;u*^D5TOiU{^e zy(TvO52xNgXME*|^=ke+XK4^Z0TY``1DiUJDSKMVmd=~P7;234Hy3Uf>-BZZRsgDI^gLarZz98 z>WO))zdM5S6AvP$wRfUzzN2R4Vd9Xl)^NeQF*H%tjN)HcdI=8FWftv$w>4rz?Yf_} zrJO1^8uHjnJ<>BXhkRjlFMeFb^Y%{J6B!wI$*i|)UlB(!f4dkzx`z>d2C?u19-hw+ zoNfp0OU^nYht)=;-CV}8nJrnAMmK;qdQBt8i^h4uxXF}bRvL9t!n25AvEcUMDL0SR zgYk6Q*cA>m3EabO@Aw2F((tf`bT~c%!P6&CAgIya1hl&9>({SINj3Tf&%W^6bbWmU z^oDzJZtmJ*T7pi2{-ag`%o$f0-q*||u3)N)n-foE>>raJ=rU1)NnZ>(3nUQKXP@HZ ztK9cDa4DT%4Cd>>2dfm|UW}G{Gl+!${P5TvgZdr3C|zjP$-(k{meMGglGr+~dq?%o z^`fkWN~6%j)6%04`(=%sa zU;u~0Mv;Xr#%iI2Wu6C^DSvw#_bg54DOlk7Pr+zUGe?@^7pps`19KKiJSs_WflHF| z#IbEg<}KL54D|}@Jg}g`2xM_&m*-|?E<3;Xcual%AmM&g&^0pr+h*P$FzwAxA)fT2?z_Zcs0AnbgQwln=wvm< zjxU86~~RNR;OJn;s?5>-G8VibmGH5cGbVQ z1m>6Y61XhSYOnDMmqHfINLdGFw z6+nz_ZEe7#U9P?pKdq~@1=E%oaLDW4LGzS-u@p9SWIeaAnc!^Q{*gW65?tvWj&!*5 zJH!H&Xo|zg34@;_1+jR=#++AznJ78_g*LYHur|l9#qhSyDHHOPei^Qqzh6W^ZXJ_) zf;li0{k!{Q*T5s|E~0YxD&;Itsy)~Bw|4?9jN`{DM*r0ZY~AoiEHEc@Ym{!z&$GqD ztOf;~^$&A*2b?{!v4@zW9L~6?{Ly&wHrkO&15B)-bS+r-JA3a%3GhcSP%#XAV_Z?W zq;F(zWeyXo?SF||#>2f%JD@t)4?B~K>|iNRQMt^X9aOsesmKK$G>KiYbGyj*^@&RS zXb283@*$R0&TN()gQtzh9t8xKa)N8t*CoBY+B$4n_x2i$lMphJh#oa`zGq+1iCI{|=0R5_)=Z;}Ba34!&&Mtvc#%Y88$(=firG*Phe6 zhb_N;nVOkFNMvDQfyC&^lchlxvdf|yO?0~xUe)UxP}<+Paf6VMkR;G>>gW4F5>{Km zxB}J+^xyJMWSVGiN!0z6$ndE$&nrh(o0n>~J4BXlcX;mg= z>7}RgEX9Z*{(KK)P|Z8MXp$cXzNR1wvvt1)SZgxz|28{nTF1&f7__VH$eJnn|C%`dhax}@9&ugMloEWwt{gt_SYf}?PX+%WCn59!AFAREU zXeci3fwD57d(Z#zH>@YGy9eEuAQW#ilD6gE@vKxm96sPXX-q4Q)&`RiLp~?2H!30@ zDP%cxuL`l)*xW?(*8!233Kb@G{Wdrb0ho+h%Vs$uMP7ZwniWrqhDt79x#@V^ zabhs5Llp=a!Rwl~f5m|MC}l`8Gff{ost@KHe^sJ^n~FN2iPgqIR6~--l!KdjdU9lj z?6U7$vAq~EuY363+~HZ9=7*UlV5(p;I#BTb2S^CD-vEf4IS{=-_X0t9PW=Tk5mFRc z?1?U&Y?~0>T?&HdS`SfePekAzR#Pv!`-in!Pe_OL-hm>NNw1oh))nXkC_w$(}MQs>0yC)^iV!W}02 zoII8?tpr!uvOXDF!IWDcQa^mt?J%}%b}7R8E8+9!@Uy z=IAG?G_Ygpcs^1rsN5`5MuZYuas0`lW@x3Nb}j(rF-96EY1JH{)jEE{m^p&GLLL5)J@L7wlnr&NUv`Ml>p+uyGJsE_@ zpOBnML<4O2oSJNdfaXdH5w%Zrt!_p7#E%d?YE$7?PT?<_sPLFn0<)Jj>h>l44_kVwg zQ0K5&`NGW5O7+R%drKI_<$YF?KpDp-74+T!2FKV`2~w9)$OQu5vm}9i zMh@pCP7;^UgL5R}++`kQO2=VV1yYf%#rGQ=Gnso#O9*JpRs6>0Or2~)ZRPR0rfl3k z63oXgckn7FR67?=j!qhN_}$-oMfP0Q?U(=7dR1VIq;~*2xLK0YS`Ls}qWIgn!lqLA(g;r`jpPRhq*x=6xY6s_a{UWmm zPUIac7bLvJIvF%qY5KfU3l4hs>x?M?S?Nu%%0&-4Mkd8BkjlE*hSQDR6;g;O{IWwF zMaRnJprrAuY0@OQN71%ByeO`8Myx4q88tRn+0HL94+QrX_@OH-%_Dj{Nne zZHw*(H^&IO52|I=Qz*RUjje013jpi)u6Lt0fAtFV4k|#8>FG`8YNG*oHgJ5j=O2c{ zBeT6fl1&nu=_?zDR2qA(Jnwn>bI1wnm@b^vmbNjRxsvcXLY?2}=ghi550|3kviLyp zhq1ZBW=C3DfC&-nlz3FG3pAiESO)eJ0DJrIS^(K{?5HX$V`+9sMx8+0f#n^s%8H`6 z1=7by*Tor6c$F0`3VY_Q1V)s!?G9Ei?$)^O9=1`I4e^}y2#*iv5?tO`32JFDk|P(H z3fTInB`uXnQmm1E#m$zV_8RdSoFC7x4R}9S?rUK~uk@+v#sS9xI1@+;o@;8Fm1z7e zjZT1lc0Jx6KmwzOJenkeRB2#H_F>;TALaK(sx8x)Oq0xd+7=Z_>IJjyc;tkF)4@?! zQE;PZh4s;By~ds2?=70evQx@ACBKDsQ1Dth50{T-*G`%kz($7OGNIu~U!>6<$W|Gm zRi|SR44@!w{s1d(S?@sY4k8)P&DaSg6%`8h`L@{Iw^T>J-`%wIH@|-Q;;N$?`XG6Y z+k9+y=Esff%%vZ3?$qRpukmTP$M!fEP$ylotI2dYCl9WL1Ft1@b@MYtG`nr$V&Y}* zaC&tXlAuQ`gTz4Svj?$ybpnur zljF%`d8bk?<6o@jRP$3!&N*%9BMRXbF7}m zF=R7WTrrgYLAl405=Frw%5KT zTK|4#o9e_%?|>)uA>=uXvFb&nJT$To7nDH6?YCV1F`y+WpnQ*S-hR})AKTn?qKau_N-5#IwY#Ks;pRR{}$obDw zS11LXko&;IBD80e5=a7-dz1`DOyo}5s;L&XP29NajL{7pmM8M%-#7y6GnZ@0-ZJ@c z2p$KmhHOTa_H4gQd+T8lw3i2Q{fAa7C%*lXu4^mpN!zzj4;k`|WXsbn_TbzKV?N|y zGQ%$R-G*dGzFKwza+Zu+hA`~`jZfx|eTtL0QW$iqaPCI0ZSzPFBCzF42w2aehS$eeA#_sP=_2T)qADWHu zx^2L4+@GIA$DxtOv8pDrwpY+@&DY`66QvWeHtfprr0vXw#_z)h+}vIo)4gf1K*$H1 zCI#un=fuPJO%G2G{9kyb_OD51v}?ShIvaFr^Bx>(`a7M48};mbe~#}r2d8K- zrOhMKJKDCiJx%-Kz*X3<&J69E%B}|AYF^ybyS^q4u)4$CSa9IO|(Ednl8I5#(ETxRvyL!*NKSU@v zf7SMz-!9q6b=$yNH`=lh51)2HDLSr-FmW@uTSp@v9M?|3mY#LyF5fc}U^Nnn(DwS; zRMprsf5k~&p*#hlP(Fc?n-yKG~r+B05z)?_s@$u;yv0t zb#1nCJGlCFM|pz`5~m+8escM6JlMO+FVSkN(MpoKe8ND%Glg&9D`9{xGKv$~CUvo0 z)V(WlW6~xbHpa8kJg=Z<0mXfA?72}AkS?JYTvbD~G`_Mz=aZ0Itg$+IhfV(v*<|A9 zK&T8}SSR@*=Fl?{w#O+&ep3h9qzMbK+el~g1`%cg&p(4f*Nt~2MQhSBy&ccV)Je!W zB>BcJiW7uV1Pgy}+3!e7ifHfZ$2$hZtHEM(L1-k@GpxoBuZx~r&Asknx3l3cdFeLwY}CQHTh_U zj@^E`u^N36{7L(iEDFgf;x3RTvd?$wnYhe5l^ov?+TOn{zH=@|s2)(-#KXV5Y3qRH z`9(x$J%cIV{QS=Xs#D{cK(Z~9pzam(hp(Ky&;;5Wje~Iyioz_0Q$+0sD1(Olb-@|@ z1lLHNI^4ETE)c+DTPsKR$DWtAc)%uI=&cd@)%Bv9N)cA9`Bm0ozbE@;?DW-8waceD z`uTixl<<9;`2?E$X|bO85WL&3B&@92!Clfu(7*qOse3OKPX8}#-m_>Q*S(e-zzFB9o_(YvEKr zruGpa%NsOnq}UNIS=XWYsdy7}=elEX9ywfU01Ap1`rm4V^1RgWZ05I#{=yoaqyTz# z;-%Hp-XFlD!Ee-(xC=?5m@ZTnHA&hO+#j%rK_@ATkav_6E;~EQX|m;@Q=y z@S0XObWr>c8@jZT79SXF#lg<$xXW>!h|JqJzKd|fYm^d?y=!Qe7CO_XrQrQ*OIW?P zkI~PhD6pfW0)(T6{>vp_1O#}nt*hRMx!;Q=I$WGdh&SBM((Y~WDGGqJiwS=Oef|N5 zYl8o?(!~MKySy`yX9~Baa09;Y4?xvlrXPNWHU3C1eVH7#07BX$YPjkD#_OF}ZLw#S znwyzJcd(cCmsH#cU=0UOUZ1t#te(*@W6@LW=ZH{xnrQ7em*{DHa+i&wVA}9q@Roo& zVSl_v3|im+KVCnYJN~^FBJ{sUT*+(p_w|V!Z}mX#ix39_Wn*IlXjuXpe0+QoR*l{v z^wgPu2KE(jXyD+16ZxLI3=&;HZvn56*Th1#ldDm>o}h?qPB=Z9_eJ1dxusTSIR<(q zisS&dkbj}5A3+)~FCW%s1OOt)0J8J)LWfs?xB?{kuNE7`v!8$up9LY!K!1Nj=J+_A z4px~0BnhZYqL*^g_Q8mw81@aKP{#tK93`6fQTK&Jmf&Y`pQRDv` z_d`cT%+1Zi^L=dX&6_t(agCu=)dx#ihU%pwtDrm*bX-vj`n7uFpF2Ga`}Apc-8snO zFVZ^9Gx(pNRR{iCfMdU+mR4}?G;t62L7;MDwSnIS>y5fCXk|Dq~;?@uX?y@-_7KT-*)=l{E} z|Fvd=_mzbOE3ip9IepwYiHV7zBZK)6X$ zII%;du7X15{}_LYy`ukDC^XX3n~aKvR(C-C*gr5(W@bGf=hPm<(*jb1TOlCvqaXwo zYEfY!;6pFft6*WLcnK-UII-nZ;Dk(lP8f6Q$NeQITidPGY@b?BC7Fk(j?kB z-(4ILAM79ykHEXRx*lxIwop0$_6GSYye~1!H)@LkZb=lng#f5X=vic8XAc!V0C7@d z{-DmkBqRT=1gT2>5{Vh1PB7@%J?6l9?u=^?618XS5{fD;5U2B3q)eOm)!<}>X7YRJ}? zup-0WA^FfoJFsx@T;%NFvIIb^r}n9z0V<-zMl2vGa>Pm2{gy@sPp?e<cJD()YL$(Ns}JJ~&8Xq24>S+1Z{mc6tg_w=X2((s`SA|l#& zNsLc`?{4J%PjbXqJ}dCjDJdxpEpXbMbzH=+i9bAfip0T#mN!+Nv1!5~i>c8^t3U3a zc16@Iy?gOibDK#+t|Kx|@3xQvWgIJMP#8Ov71bw0WgZ%zk1K`YL_lti4i^~sO<)rE ztm0W(fT{pBE5xHZ{t7jZYFNQO0E*TXm2I-B(yKDtf6OdSuH2b^7OIah+&+V z%@~|Dv-WGvY1F@Z!N8n~*}gSq>N9^kiGpvPWkK^_;Pyn4`usIj>hz0mOdUL|+srJK z{f;zr{d{+jfscqoN@UpWTjQq~Z?@s*0pKU2=@5 zr@aebX13Q78oF=uMW)Y3#;6?{C|`>L>~ZPgfJ4I9cS;u8Df3n%B5fAy0}O*A;q)7i zhf-%o@~UcW_Rpj1?kdSVaa3m|sf7$dj0kdPpTuR9s=Ne^!>Wqa&=t7}W5QtOXp_hm zhQYMiku;LQ#^8@U+TFfVjv9BQJH6njbY3`1!|{{++{3pt7ON^96Qx8YjAVU-VH-YL zE*s|$f3BCdJRVvp#Czu>Q_6pvgvQ?=OVbJ3&NRjFm=#~Sj@&X#B7jSLym#_ks!wNV z(Z#bUt&MLh`GwLwwwA$L0#+Y|X;j;98s6j)ZC!s6~&r(vZj9 zQC0T)vr)U#0_vYB$zsH5l-IL_h#2Lnx`%tOp>JH6ejY0)q;->D>n0v1j6O_gG$!`W z{N=I`N}AA)lG&FUoZT$aR|1iYO3G1&fjw-#2~r?q1))iziN_7 znxtj%NLDt%8=!xn#;el|n;1DBE}+Ke2zhw@Ja@%gybU~yTF4c?IGQ|s z$0Jl11IH*#FZzR7OIx_)H%&#YaAdk!O#TpytWXDbcxSfO0Gr!v7lMo-IyzbMJ+C2ml0Y&paY`-)N+E^#7%M8I z0%g1<;duw?@NjLF4KTR3Qig^p1Iya^FTDTe-7p2{Le;(rfe~UQG)r1@xUCd4f&#*> z{)Xx+F#SWvgpRV8&EcO1##!N>m-QQ_-yDW8hF0|2u8E6x+`6vHEz|2kmU+lQ@8hf& zh!9s})z=DfA7UJtowiWbGNMYLBcL%sf%VoY4!}X-R{}j0pwT1dynh@1bX{gYg;>P9 z%td#2?i7K{by5U+P6(_>NlEiGN|-LD>`;I;xCb>}7?Vl*)WJs;@ELi1UAph#>f-a& z#m@dRkB0bB7PFdHBOl!ld(R%0huKQqP|2#F&BvY7G*{u3wMH7jvE# zD1X70*rJ{eI6RWSa*O}Dy1EOf@XHnc(RopOF)m|e@pu-if)himb00KwfF$K`7Vx7w~kjP1fQmz`jAP|C{8SI>_ z#bjh z9L{Ym(sfI*>*iM{4ez5BAXmo+(v3f^{W;^ymmJEn1mH|}iU#d;M$?~%5P z!|V}n;RfZYCNYg^{a^5fkM!+UO-N$o08>M{(^~I6e6iXOCICL`N!9TZ^B2X9701|b ziwcE-)_6ESaQ`x29&=4N%#i(NW@o= zuZ-FL33CIYpl@{amP;|aStAi6Nhs54w+~sL!_=3o|beEqL9t${Ca){wYQ-+REwj#zP}%+Ti+X za$)wlpNxVK6aGFIz&p`;ki}6D5)P>sAV_@HaQSPS#Zm%aspZ7H!D~kS$B`*VT^lo( zcD_o7yq`9|#|8-!TblAo`r!w6IH;qGd%yLeyQvP^3X-Xg(+B21(!W;+zT&(@=0slq zmn)*GT|51HMu;iT;9hJK}IIoHBv)f=<#;2tWZptTtVE(<8SD+)F@7G;=>7Iv$Elkq2 z`URi0Z-c-O+m8ZGnEJgESNsgtM!#d*2;Dqv0Z}V}n4M`Fpo{LztSTPcT%t@+)pKUN z82sg#*$LUmOpCedv;6tsQgv3^Z=6*y618Rim&F(;+Ag!m^k`Jl1R_Ru4|yxrL{zA_ z(X@$;?YtSrvAulb%0W>O`fCeHYi)Ki_IFxrXJ1AUsbL8Qv)!?%GC5%YwOAc z_VjuJXAGj>@ek%#-9j(^n%G(qxrUdqRc8QQ9$lGN4zjLzZmpOVw%86a3V0Q-Za`wt zI8wyLN~7HEYc0T{LZA(q!B#BvqCvO#&Y=l8C;k=@hz4n7*0aJ9R#fZNJCRP9u-C|@ zQ!Od}>BqkeB!68nm}!m@XbAbprNH{+d6|>~tXPoo4Q!6FH9BHdJ=WRD0n*gg)@SN# z2_cm=yO;H5bm_pRpf^@7Tcad1KfjZo+g}v#-8*aJL~Rl(UK6W|D~EzbKlm^jvds$>xfSFpz{kvue=kD zB7BjIrm`1^+V{MH|OAH#IHf1?o2ucxCt?Y7*y&mQbCmg?Q(;iDHXSt1I0? zLzAoEuaDbXb&7}k#!za!HBRO$f(;kXx||<4FS~Ny_K6%7cPE0Hft%=7IO42{*CKnl ztmhvgZ{i5iCsNY2vsc>%OsE}hC+?gZ7QeiI!H%&e!@`|3^5rs{+nrSp6Uh;bcVr@1x1T&s?$=7= z?Yl=Xhti4%#i&O6z0!kEHADSdA5l}=Lywm%P zvSbQ){_RistlCduF4M~ww-wJdN1Su*cu{DjhU7`_!NF5vNl?uoYDyK%DNxDSW-jTo z^$g4sO;l37N63@e$STZ69vGYY0i}np_$r3hXVHNj08|4EK7X8r&z(D`K9Lei zbNeZ|{6$>F zR}q;R=9p2C|_Rz&V+F7ghC$uILhCi^$yvb81@o& zJS93rZU*NbdJRq>zqA^*9M?%NvwH1YW8D0{hJ7}faQ1cH+MiUia1t3EL4GM_-?x&x zlIr19vHI;wzaVlac*d#8}W(N{~f-&cs_ zFR&9aK-ZEP59`s5gVd-^G(w`}Jc=3Ii6^UQo*HS$(VMeQIuUc(C6dDX$>39U)4 z8b@#?bK~-fsjlVi;f=ttj5|DizoeSTFzB7tQEOc%e$!_tjWyBD;5Dh0m5W)zznDkn zWERU)CGPD4m9+wm@Ph03pn#8F;w3jEwoY$t9P#|KZREyM>~QOo_!k*_g#e}Ur#ws= zIcnnm{`^!&qI(?i8u5?uuLj1#f-`TYs020;(zLJH$LKdW%QzCbS52~0t;wVe&61*X zxXtQ&)kZs&qI=tVor)~ey!bPQP+H%3_2Xu6MJGN;*09Mu)SuUtg8?mGYN(ABfppe$ zqsi@iVhbaOkfG!1Q`Y@qqJyff=aCEt*=h?m3DqnWUi?PG`tcofH|~8y1kg6rHVk-n z?nYbLS9s*25q3 z9d~D*lDbOPJ!YW^N0I-zmw_>|l*C(K*sRNt!oCfzD6}{ssv7^IOZk+(Ejy1vge}a@ zsVCzX3K(4uyDo9O){D_?4>BUllwvhao2#ZtAC?#67-1IDZ_W>2^i9uIXrMJd7i!`! z5vQ)N`6G?qp~n>A1{T@txWZ~~B2HL>u-!EVe+ zxD@ss_R5%50Waz1R5YeoWMgv@W>J(rR%x3wKiFJex!6%<%WpcqUm0H;JEy|(=bLPM zz=e3}P_qhG{MJDegWQ-@fHSY-;LI3XTmJ!F?ZV2+WxqO9E&+|Z=mhrpNYJ#=WaRP= z@tKe_VdaTi{OWAu+)&hDipZr%)L|$?JFYm0NTd#&?lob|Bt; zeW&*=kK=YXB}MVK_<&Z_@bJ?LNYkUvBy2=jl?~VF^jjF^-c9X}F8W}Z@aPNs&+&x* zVPY;*9GvH_@C2x>J5gGN5b~g7wud{pYhk?74UI-yRqfAJlr5I1B<>sQ<;;L*4i&|DJ9(kH#nZT(6{X{uJqPX@ z{lUiZ31DH?L!4Hbzgughat2hYdyX5E&m>GaJXH?c>EkrcZ2B^*Um-}aXdk0;^l>~^ z#bOSxpr@DW26S~KrltKqt$hbnl--hT>#qnX0t!eHY>q?mzSHdc#^O-FAQ9`A(=)r}nO0bL;Kg z`FVLdWHP7$h?ul<*H)#Zq||k;Pgd03xxMO!J{i|x@3VC_TnazC#oTH`HEYdUqjJ_<{g?To#sIoYsk4Z>yraEc$tg7<6Wlhh- zz{k}H^PZ(@*=5ETgveA96kQWf-&{z6L+647n-67veK3m><0L{SP#A!?sS5qGS#yC+`*$3u@ht zWL4o*pwXPM<_<~i$~w?nvNZBmOZQrD?)VY0t3BbYoxr?N*t<6SGG2gV{S3sbu-1RO z?dhbo6K{|lFOKxW^iP z&Da+~Tl{R;g6)QqRc*q;*`IwLb1V*I7rH80eQfMMChR@1d!j`)i!7E~adVO%nMCE} zr2}b1QnL-G?gn||>?>AO+IZ2gn`w?UaXE3hn9>BNHb*`3`be}K(&o#^$zt!&5JoxrDV z3G=`(adS}OF4rdagt~cWFPD$o?De}xPEJ||#6C71!7LpSr@I}lspk&UM{1GX|HPM1 za-l;PIdd{3Fd#LCLMi7lX-H5{0cl7a?4c8TQ<-bMVF!|YLJ^ykEUMfw0larVxM>xp z6V<}RA)+~2{%`}?I63wyIx?Qvxv^QvYZ|5JhEWN>W|etx@3=Tq3sQkf0}t`I=-cx0 z+XOmJt_0)>t7nIwzaF`He3O(@#{ay*t}t#S+I?WE#&A_OvV7GfcbYxIZO=Kl5EHsbT7wNg? z7h8MSGi5W3zk@llbLw07ogiq7)I8ijzrkN>q?H@&QzVfpbjz2?O=|sTi)}P-vl|O)DM-dztSQ0(gll|#NY_+DWsLmjwiHh+2%vsK(mtD}= z*iKaRH7hHft&gwd6IM-<XkVu$!L5(+dNsUBu8&b z;jU*VU;aQL&)ZKq#ncv7G!Ln^5&~t=UaOp+Owlk06SY0ef$vkTa-h69<&WcK>G1B$OZP;2+)PPy0}#D zdFi~C+NJO}Rj5%#@or#7Oap8mdFU2-ZW`109HxAHOg@$pJ?ji z$j5A~q8mn)VxgZjoHK$Ua}+)@7C3C2Rh8YkP;FuihIQdjhQ zU~h4L&fp4q7~1&m(D}R5&?)%mrLrEyi@mC22%aENmFnQpp&nburp4uFe_F>f^MS3E zoB*1D)hlgkqv}RRAHC|vU-Yh4nkOW6!C{ejS1jPv@VJV1`2^2H(QU==<+@L2^2{n4 zzoc!BC5aIk=y0#;b)P@1os3(&-(G}aiQm>6cgjEEaHM><9LMT92?$wn%W`7o>p_|y z>v(jbh6Y!jw2OaHX!n73K3W_37Rh}zf|rQUUq#t_c~-Ue5&}_-09Uw!Qvad9)v_F% zgB}|Jub|^HI_9MS^rbp}Mey-xQ_UFM6Xqnm!4bS3|NIE<*SQxSk2~9ZQs47A_RkSP zN=YyUuA>&164qa^!F6~}!>4YiF%ZFMl0Aq2(^AL8u*3_R&_g#gy^_N36KMaFjSx7{b4|%~(=_D50m_ z7&nI=EB5Q9w>b`}dvp={Jlv9llk=~4e`JR4UVS?zgNY}TicZsC`NcdzFfn1jQbGSi z7X1HooB#h-;%D_tR}vvkZ+DS$me1O^t`AV~oLhH3ZRR}05_6ex;fh5^@Pme~H#|Ci9;hT>+;d~6VncN{jlnxFK^mRueAsv?? zu~$@G?FIT>5IC)!Lv7?(=0+ECHat*ow^0PzO&lBQcgRMb(W zZ_IwXMSQD}QSJpMW31{At0oA-wE(_UzmQD!yZnbn83{Lk}QI}#UHDb!nn#`Op+16K$jBV0;Cv!Oe5@Svy>S zJ)}H*0nJZ(Dk>b`OHuPqf(;TkFbI}6zQ6b|@qg$c|6Csb=DbzpaK)`cgnEEk;V^_+ zu8WAIVjz|7Qwch}d#*U2M?|CoSPn3K8+a%nj*ISNuANL&W`?jzCrkxDsbtVgp|LMZ z2K7KAe;zhAA0CzBv0poYq$OxBx(d_c!b9j^Qx}E8sbP5erYAn~XbL2UfC{Np)$VLu zy6Wq_`U^GR;Y3hrlm|Xy+uR0D?dWJX@yH#hG*R>TFf&qdifhno_kpVd!V+ahT&1Jc zFjRSYc_rjEAba>|$((+}O%%9W=M#5)-b(4}>S}3esi=Uqq^{9@nWnTGr@;=wB`yUe zCnxXic`O24>Ei8uTw)FA-psT35MQa-9R z0he(X_TU`f2#I8%1>pLz2((o{Utg^{A0iw6;p^eSJ^Ak-#4b5}^a{IulA8mZj} z?W~A`VbR}v-lZU5$>!-7H_tc%D-|?kVH#p{@4-yZzf}$LTMw%zK<|@Q+*5cn7Z|vo z3{P`V{24SD|E&D{(pxaMx3{;|3X1X;fqRz84Nk2Wh`Xvecr{7>nFw!sGTLW~ZrR0B z1V}UM?E)DW8dh`*zQ%Gc002`ocOf8*xDJW-!DuR8n{d6E405#odF8Xzi|x3;Dek0( zLgPFR_>d&UKg}%tYK)}ukn8e@%XEkk1Q>iM|6z0Q&l6rj{Anu0Q3-ve1{ZAvM*90P zBcSj>Vl$cs-bN*pVUuph2 zB_j}j>va4-&OD6H3a+aVN#~l(3YSMqU7elf*+2rj2+U?;cT~9nLl}rQv#eBa-&$-3 z^KM-Ez{S;-Be2MMzBhzM2m;2v6yhf}@l9i`%G+@ldfZk7Ov`)1KLIK473hTBJv*xc zcK;F=FxNrcHEv)F;S`~#l;FAk0S;asAdTi{S_O%wVe(&LA+ozKUklUh{j)0zgM@LB=%q766Q7+2JA~m7dP#P3qAvEi_H?E|6`5JY-}<> za?t}qtmBiDiRE2>L^QE+aV?`ye@($YlnL)Y_Ej4J(CEk+icOPY2l-Q(c+P9^i{2(g%03J)e7Pwl^>)flmNvMb{ z5~&P(eTk!`$(AhH`7H&c&%&!3zhZ|U{qYyE*QxkbZW1Dur#;W;2(bC6lg(!-dUG*e zQ8>qWEUEqq*k=&lE{EP0P#J|>&c@KwY5#RWrB&9~gPFR`tbncT50dWZaW=h7g!IwI zE>Hxrn=xAP+57qbkRCom9P`;!%yZ;9UdT=~6#;cX0Tm6enYk6i9oa5z=SYsgk98+o zD3=C<-p*u+G|fO1uT;%rkqqgRt*A4=CWYV0=%r#E)!#MXLlUd2(;WuyWNQzwOW_YN z8lfO0+oEzas(#P|ebrbIIW{nVF+@HBq0R>zx(S7selcO+5VA=rcN6uvZl6TxGcN>s)ygo zrd7Bv;tUaWPZH_1yTP0Dg&J}tvq%ZL+Ao>#@ZQB)Hc}gkCe;i+8TOi}(2rF`dB*3Z zb_~e|ylMh^wK%Y3AIi`Rn$c-!e2~>+lZuWtER>+O4SmrlkBGhsOG@2hs}*i1YDTG` zC7+xjwbAyCivOHI{Y?*>kCZF&et5vspu1-NVr$_ul96iKHkj}GAp44KW`*=7ElRIj zQ}MH%c8>PEow~93yd5TxIhzKB^exqangFDx33e|_M9N0wW{{G{>w;l}dCXRMX+6eD z)RSu+E#=a#_wfwTeDV$R5;^+$9=V4$L?k-KFm|o=Fs}f7aZZY4JT(+)Af#Mr?HPD%JJtw%KnKGv!NHmu}~Nl|`_MK<>v}kz9?% z*vIL#q7R?dyEKFzC}r+TDqTJeeERlLj(q{VMjv&H@p;#jer&qaBL1ZFGZ z8K4|qe{s-0$b}a=LRkh8A4U17$kR+?@ybaN>p+*~iTlKum>>|&+b2)085Y=%k!qCf zEIj5_(t`hhMQ%U15FWrL_{X>8C&gOJ$1*GqDVmnGJVO-0P~}BF(HR&@+F2Ngbq^d( zce5jNl~iPVRp>-4Vyo$*(CKx<{<6UFd%_Umh`GYJP9@um2~-zI&gc#FOg?7*RogMO z1)t~}qnL+{Br#FUT3dqrMM({?9pkCm0~|2(9CWJQ299#mTqv))+H1&>J(m$HSCMTA zGPiyLL|W{c8t6MGrf|^_@+)`GZGkN~XU#HG%#3~>8d&(`t6nYdNJ{7yRWdw_E{p`s zD-o%$f4vM}U>-nS`RSzXko#jNLNd;lDBqwjuPmF~A>_-JQsyw7eLtBDITv?1Xd%6y&eaa=J;<^Ddo+S@M#^2p_9UsyFsW0pgne#1{P>qwAv17TeUNS}wq zbI^YCoO*H!)c=iE0ugdbcAw7c4EOnl3HXo&GQ4FE3y%GeLAk6X`^*Y%_tTV*?~Y!W zLyk#k0x$Z@Up&(pT>4^iYbR1!lC--u1VYc0WKB@dC#LMq%17z$#a$g>8heDktSrXH z^13zb8~$wr1-7>km^cBx?vSzTIF6A8g$&*l7jHoBhX!gBcl0e^JZ=@&5zXTB-2Y4; znV&sAY#gXkbuv<-*nkXDn12Vdclt&9B7zgZwt|_W!`ax`RyM1zfAO524=~Di7?jV_ z2{(5Me^X(Rq=FLYDXYU)_}0qwh!$n3qKxW|y&f>gnZ{S|vBzq|R-mbAn6gVMIbn74 z^k+C>jgF1|gk<^Ay>*cIJ_HTtt*+~DVkxVLh zlg2|im}tI-UslvYwwp2_gX-Gd%jQ;Ytsl)91f-wQAv!L{%I#5;Bc)a1*i*j`%DcXO zQ|42vPcC)BKs(eVEGr`>8y}fteaV-^zE)cR=_4=ev)R(n24-Fc{;;K18YqnF4#sh< zG(M&>jXWWh*gZ5fbOHZFn=wAm2Zz2BlPb+;4vZZ6iA<^I1~K&>snUeWsMp36#4)l` z`1jvctKyRq$Auxa@JR_4l5gC^hppgpeHw{bNjDD>KPfL`IuWu_uQn|3Ih=FJZM3jt zf$Tr8WEC{`$E4sRQyGrm&3dca&=mVd5h;yIao$gTYv3~dY1M!zVsOzyJM|Eeb}o%X zN(1|H&LkbrzEc2Qb=mv)ZVc0tf{F?cAYy<3Q18|7=}-k5$}=V!`f1bVXlg67`iWq_ zgo8?*Q3L8urmw!<<*)8*g&G%JrtWt!+zZ6(l-~L2`iv!fw!GWevp?9sJCBN(Ds!kO zDOs-jY!elA{HNM11j0JY_T@r(ZE6iODr+ush<%~_V}`qL>DJFg)DbOeBjIRz(T*f* z?q^i2;o1qV9hw}EuDR}F<*?`0Y|XTD4%M%g9jav%=hrE&-FtPrU0$R4ApcbEu*A1E zAtk(sa)|zdOmf3adz7JxEJGMBJN&aOh?ju?_maZFcyaIFBkM;mA+ zPqsQyf_?ms4U$ai=T>QLHJlTVzWYmbyuQBea5(F*Qa1g< zQTJCYhx~5j8TMbCm}qu3CUaffH~%9%YSoa$hv2CU`SGo?hJS3sUvHG&UGPzUa@yUo zwW8NL$}3hjpSm#Z#Mw&{AB!NhpsAi8oB;;+$s333c~8#Q1{vf_I7V#GCU(TUqfRf4 z?w!1uzLimCAz-6-y8Y4F4fUs5y4MI;qPq1yd9$_Ml6=BG*Fuz3g-d}|v>tlaz%uco zxnVY-G^LV`w(B57%=@{emobGeS@I_HXy9+Rn9jZd9OZ0MDK-TPBVH8FBrnY_Ex+EQho z_!Iu7sU77Z!V-jS+;v7aVbeN#fX>Lx>k?H( z*Xcy|=jx2F)Ye$vdP39TDW8c6z4D2EO;elq$Z<9Jk$Tqibo(m*Ny15)9to-4yZ6#0 z#&xLyu&ApC>_nYmD-O0qv&$WdmBbu-cb(l=L77$6DrEjTzYOu`@JBvHY1D7dBEG%= zACk$e_Ox1N#%xgk-5>Fm_DJcY_hk!_9%J#975K|Cf$Ud9Ti5WaS%rS=HuWgDik+@+ z#&mUHUJMzOZyW{1RK!egu?WsjTpXqpJ}v$P!A^+lv&Khrv6?YgbYrlyZrQINWLGS{ z|J-qt&OvKyn|XTn!?u~$$YyHOSGP$~bX~N5u|3%>S-KX(ws-oc-u-o*=dZt_b(BFk zg~^Pbh4F0xUyEZatv_Q+*tOnfGKGspW=gcvciRpp5~{W6$Syl2VPXY0XA`@2_pWc) zAI`^*r3|G`hiP}^(2!p*mtvFSxIfj(8hn;8=^Ji35N3Kh?g!a9YL37 zW!_Bi_I2%5`7~)q>6lf?r85{Sa2t04clveAM0Cqqq~lI!jCj8_9c}cJW6DCgVzX1#r1JZBpZ7w6~_ zYn{qPIgYs$77eCiXB|1GsaAh}Wm&zMuoHr&UlM&$ib?$5c667$LJE5FC3!dCFDAaC z<=VI0<9z}W2RF_kQwm3F6D-KuUxvUhqFxFH-&dO zYU|2BoptWFkbQVK-Dluu{3s>i&QJTBwqqCj$XLAT+p(=<{x4(T9-hOK5?lX_ly zh@>Q~Iu@1Vu=Zcz5iPn5vV1CfVa0oYIC_xv z)qbWh>d?ViU48AHR*o4yEUBEMsDH2-AIdkeP;uXl z|2sJX6NGu?4rh?lr@9;>gV;J#qo%KMt}J<~s_#%`mxKyAEgqAk0-6${b-=lV6J=nB znwbthh6wb9FM$cKOOF1X*!{OLdH?|tQ^!N|me^ehSi??jb#l8BARhC9o-Lvm<)-T9 zY^m$3E6n)v=P|@nAOIrd6r^L&@QDprGl=wW9zt9FM}vKv_Bms|5W#1|_j%0tQRocr z{l$I1ydATtp>3itf@6nVhyq+_rZ_PIPhwwhddBsH_`V(^PS5T%*ae<;Z12=h7dm7k z{Dng>Dd0SGTTn^q8O5(xX|ECSU%U@&zLrW5MphCgrJmF1^8l6y-j$6Z_nbL`qxAv7 zDBVbGRnasXpZ~sz1a-NGlL~;9>Q<1zz?L^*)Ik5}tC^thi6~vbDswr;(J=*!uNy71?jx#EfK;anzk@^ur zSv>n#zR%<)XY|BmaPQ$8;2-m!Qb5)LQhB4Ue)1%O0^UKW@_N5+`CuLh@uL8MCLce0 ziFXW9kOHvD%e-~#gp8kr#}Lt^sU-CRosPeiA3z|S={G>|Z-bJ57auezKh2t1T}#UW z0}DUwJy{Z)99@BOQus(;k~DN=W$-xyBI+5g-%drAy|xdhD=C%<>#XxDh>Orm#r(m$ z&;Bn3!T+wMzoUHr0v6R11kx~sv+c{X>p0g|j}BMY+^WV*;zYVAsynTm9P;d(u z;jSd?I9GeH>>wvA+hz=0DqL-gXT;*HuH+HEl6r!0l@)lYx5Cb&GzJ=8?{632F0=#6 zYJ1&BKf7o0ju+pMlWT#bp?3Is0FHGFXeNg%c{C9eL0k(x+6kS>dsFl~&iFqLQipRe z#6~gu7C7H3LmF2}$#A7g(-s_gpMqPsE=R=QR8)xim6-o8o*Wue}$BBxN1a)l`$lb)75IEF|ed&O0a(q8)it6=XfE)_Js zk7eKFq&Ik&lTh1hhU*0X@IQftM|}bi)~^PMZa@Ptm8>1|Mq%n@dYoHdg1GUXz3)Gl zr_pLS+Y-=DwhpKRw-EpU5VbEhrG#>J%}^}Sp<`_9oc&1?)@)(zM^B`(!wze@~HuY0>(9@ zfKnL6@{!=Tr`6UbE>aUh(LQYx6NhSm;Q)8#b`Xm$hkm#RSe1>v{X6c@)V@`gkK)Ue zlO>^M2MR^Nr9$~p6V+LJR5G+6Bc~v>Om0R+>9)x>o7737j!t(20dq1GV zYyMy&pL;QW6!k^BYoXp%-bas&hX9xZ-X^H(x5E%6z&Qh#H4BuO80D48T8WK-)0gD_ zQ(K5(t?Z|J@1-y1Rdyxpl?h-Wu!y5z_?-tGUr^>K&dyfSz(B3VyTb*^g@uJo4h6TW!W?5eUnhxc|kNQsT_}?_HgC4zy9!pwbxV z`{NKB09rAXP#~<$565EaI(OE8DBt7=u8zw&p!fX#9?FZZ0pno|9|jNA0U>j?ORYR&!Imi~Y4Rsd!Hj;5o?@wF3BU_($P zpj%a})*-`!WvQ+w|b=Fk00pKY&Z{9@CSgr`=P61f`?wueC#WF6# z7ZX2Krsx3Rdv-Pl3BHkYkBrP%&H+!*W|)ngom1tw?@;7+w|zx~>nc3vW31?XCKrx7 zl+9C9x7F0TL9Uv`_*%9F-|lCBdXO#eNR$A|iL;9f0a7#Oo(Q2h4nS8%3EW|?I@+A`16{{e}=uCbno>x~VX>C0RG@R31%TKSU&0C*>y9wWjsSIWh z?CtLt5D|&proh9)gM4yW*km%09t`{lF|R#mQV!)5Rz;}M@#5rSg}7J5*Y^UQv9Z)_ zmiL7W#~QRzZ_CTCg~^lMkBekGSb~cpSXfJZd8k7kxVi%C0Va^X*xFgp2!g!;l|IPutj9)M0|Uq{6dS&8I@AfA8_2$4J{JHP?nC|k_{iqw<|QI= zkkE!&0O-*nm+H#O>tuu|UETDBlI>4QV8N=3i}}w5K%vtR-CT5R;48XRepgc$osJRy zdjOa&FE2x|QtCOhMS%_2;x5K&7qtgBk{0)%u2M^LGt>xr`0yc=40xLftPiN01cVUb zMbi=2*evT_R}}-(!A=9Er|+krqt7(R=iZ_8^STgY&AqIAmWT*czFYSA7BdU>Y6y|Q zJHnL;adCO^@WWnl`<_B;MNkL5nVOm!3N-*jnX6h{el(>C-F&9O291uHS_V!c@GQ#9 zcl$H7blkN>u+V>XZiLmLw6wH1APApWjv$P~oQwB|dvLO=ods z#opG|pvKc3st>_UW({ErhasNpPIMU0IgNxpJC!&NiWTf094c{@r>3PbqpWqHD+Xgh zJ!p~8&-4s2F=+g#R-9gJ_NqF}`wU8sMV8QAFxv3@d@pwES(^vl-rgQ)szdR+iQ!>4 zP~PfKOT}C;@mx#wkJ0H)U5zcPUlWY;Nb#Bh(hn5tgZepA-vy@q){sL|y{}F)_%H zNh1U{3<3-Y9y~hg#VWB( zw5Li`<`k_kY{)|uh3xF>j$fa@wNR8OgDD82Hn1bBrY$MMjj zwUeKGoN**TlF2AAhvRy{!G$|mnjz-mGUwp9HxDH(B_-GvB^S3o7cVzAVd%Y-o~0S9 zGb2#g@?3yV%XDFlz!`IAXMtRD)-ZX!%9omH3mu9>E_N3N?_c3%itUY0xZ#f;T@*KT_BvQR?Pfw|$49e7{02?|Moc~p%T zMq;7Uo(vE;RaJi#inbm!PF3*Q(Nfb;oj)ZcD44eB!4M|zHC$991_U>UQg7yTXGO5` zkJrek@pDgDQpzsaqcq6!hejtSO`w|UTCOeBK-zRe*;4obt#8M(23Sr}?JmF)Fe3cE ze*oi>Dc1#N0%(1`$CFV|{wob_rDC#mHT*+r`%D{C|4dC#Cd_15J1S03wPH<(nsPm> zj5&=f1h&V_2F$DJR<${y2An`AsKr6ikuR^5xIUP3$MlL5#8k?gduhYE$1buROo0o3 z;SApX-X8oSv^JVMSyWPXYwA62UcUKmjStKZq6SJDn&Qx_W}DQVmLAWb;8p{VtgLJf zHxxLAhv=T8p{8ytd<=~Rves=L8%kMW+Lifv1>Xh?lSnHzlQ|uCA^$em%gBF+XNsy8kAKYhig=%zZsI4GontV)lvFnwb!YV{r=7 zH?;4f(epsAUxadlo|#C6Tn#mt)I{^9xt|6GT%alTH`eOIU*85!v(W?Ia&ad40T z!6pSn?mX!S1+A{d-r-j!;CnqP^GQWQ> zxXN?q$*I%u_`?dwMhu?K2j8puo`uX5r`Xj831reD@)kk1{*s113~*|~p#Z((Eimji{cijb-dwi1DJCTt6G;_G2=9H{Ok!M3;c+ilf<$+ P?zMu9s&t;z?Wg|-)M8Aky7Pg8~B53@P0LLzi?*H%Lnj-K8R+G|~(M(lvy1 zv)A~4zjMBC?{}ZyIcJ}JM*IytGtYWf-0P0(zU~$JMo|X$9{D{81cECkE2#p3+^T>; zFygT=z?C$(`UmiK*Iri35dyj2f&PD^+wSu_2!t9UC;9TNYdQ+)=J|FRd40XvCz65+ zP{V(XMNLf};)`v7^Le;9zfQd*zt!g4ruGPaxV_l6<#kQfc`BIzcL(5ZyZP&e39`pZBt<4 z=`GMJ2sI<4I2L36lnMF|2xfc^197$0-`|t{#jw!7$c6p?_-?Aw_QSHaps;W-oqxZm zFf;6WH&gh4sk}u+S69e-lC2pj0z*yO`J5wUqN%pxI97eNjvpO;n>9Fb{s2~hT>ZZMetCI0Au(~IX%?<9I52k@ zoNfG6*nzo^p7QH%&_PJPey}$Ey;=~_Mq``Ws3MME_H5i2Z z$h1FoER8cuV{m}tS{YhHA?oev>|9&vg|MkF)2z(V;dVOs^@@VkR^(tvA|WB6tgOsxyp)XBHhpmQd^p;BG>)E4c64+Uize!^C>7SN zOpoox*{oeKQ)&1M1A;pdw#Q71TjS2i&BLo>pX+-31)r-`A9uHbyh}C+V6nO#+k0TT4OOX>$%@Q;O!o9d419?TA-M*Vb2%Qm61_h?cQ|a7w$IU zmNl_i-kzC}A#69>5_OxGhi7{0sHUdIadp7N)Kq{Xs;jGOtrgm01)Uj7iBjq&%}&kC zoQ3zN*|qW8Omh{E@EdnUa9fQ#d1;f)p(ma4@p4}Z=lx(>K|#dMvCO0M%PSPhx^Tqp z2&HALl->`4+(d7HXI96;6gZenOib;UTXxtqD+3u;sEe_3?=hCX7rG4{k93z4{Y9tZ^bZcN&Fnbh@`Z?9uEx(bT|{ zSuZhhxU#bH>z4|Rq@kfq~VHz7E_r0q!%Uq3p5nAB8lJw4l+pS`^g#D%Ue_PyJEx}zw?L%^)o1=l0> zYRrdYXl2MBJ-XhSyHdc4NlBUd^AgIEg#U!-UPe8e@wvy`c_#issujElj(+hJSU0X_ zdI;2^8Vd9BB(WSiaCt|^(J$%3_vyaJmtnZH}sen4+zVfWwDkaVLgY}Wz$U>zomVlGB-00~{ngLUY?+r2PTaY;CiwAR- zwO4c3=RTsB2P1X;o+5MT#^SOrzMqU}DaWIS9d+N`+T7e6QN^4~!a|CZ2?pxXm&`66 z(&}+c&U?ItpbsDwc6aJdq&y~t+7B1sr{EiMrjCHAQ3|=f!D2W37BD;Upt^!@&~a@j zJGoH6Z7;9W=;zO$p^{HjmdHIE-cp>Jo0*M@Ulc4m=v3Q|&m z4kNBb)z#I_B920jgQ60?dlEq>=wByO2WZyYX2kEc9?w1y2mQ%Kk}X(cLP#OE#35{2 z2ObTLji)JQne0tgKtd6tqeM2ZVl}1?d9a; z06pnsE$VqV> zk9l|^%u<1bBi$EB2Hk)S=`$8gQ{`%E2V>N+GnWa=X+UoOjHAB>TZup%HPcwV)jC{g z{Gx*0cBTP7IF7`Vn26qEz20M0FL53#R@)pe1Ko87mI&!Ghy1h4mv#e!88X#K1c}w? z-kF!7a{E5nXw-SnIJ$e0K)mIAyBTQoXyKz|hjMn6%B^`yrLn1`i|JacKzz{P`mg-% z=*P$IttIMZgwv` zB)HPimuD00ECCJMO`FqtWTe&4jjvnW_M<2TVH=}GK>n4T-s2ih98OyE&`2sMC?NPn zjoYZ9S%u+QKYDuPX}$yLmZeyisEJ%m6!#JD@k`4aBzpkX%sFxNs`LZZXxa>C~> z%`?UH$?e;vpFe*tDQR9WNDIJsnRPQGDNOj|1@`B!&Roy+SNeqF@7}$u@nRPYt0sed z(kH;W@#P(5doZ_xPKALVz7co;Skf33avw(-GL2<25{JVV_&tNGsupHIiw!{|*g~z+;+&H71Y4;5kRy9?1P~jPt#DU7^TIws zD75A8pfq-XUCYN`xH{jltG}N0*m)>^v7yl(3vIJQfu1unTYA48gLo7va2fp8K({SlEf*bD4?>|L3{jAPgm? zj2L!SHTq{I@6r%0u4Z3~;$T47Dk7{1;x6cm^7BoArqU~S!Ov(cv*+^!3ejzUrM9N# zg??MhR(^%BIVNPyE-YtqU=Fy>I3Z@4Zl+*({+oR^Qg?8o$+-Lcq(KRWsQlPizz5%egVzVg zz<>Dg;qBYEVa>>Sdm>`u@zK#_D8UzAI>H~o4tcESCjkqR)T{RPt<%yEf@&u5s%GE- z00Xq?Bmmq-pk+?xr7?_tnCpgxg-J({8p0m>0^17I3P+tVm6DfNYvUp01L*2=1t7@v zQ)-Z`Kc}7^$J-e~ZdFr(kSzkN#n_}IGuT~UeDPcUFPo9J)(Go5F=_)_Vc*}62tzl3 z%}LUI9}4ai$NIC^%c`NKCdZicLdyuoEarhjb{msPN|{KCz4;zQR#GHuXLr71e|3J-Na-W zggjOD^Ws;nICmF-LgKgo?OR|mZ|}Ol(hnBIRO1%tEe%_8Un+M=X(=$3CMrFkrOt2? zu!s=4k7_0A+`PQ3I(09af@wtACbsJ5+JH#$&boH2I}sBR^`-F+qQZQSh-d=hf1xFQkF2feN?fm{`3XMaTz`uf}p6xS=CKt1>Mv9z^SR~rMr4VtF{ zp?L>;D7O0UmjU||^mEvSLF{9?n&1blKAWQG#XMf2LK+Mxz!WIfE?HVX@x8!O^%5|p zU`bKcgSN9RZovIDCBg7C1$#zG+5K{}s~-eJb;r-c_V%-`J*j)P2>vzuI6%RB zx3@PmXv%8=54~19JS=Rw_HLj!lRDbGYBo7pbaPtIwL#_iJ&sT}is})h9BAwTQVDh< z5fRbk7A&|!SyNL}RduAYAMEoA^WmK2;EC~Zbv3o8*5q9HSbzHp;k-nzw6QdqdjrH8VuRiKSJ=NG2>%7S;r+Mk?c=q2)ZaH zv(Yd!mp$Ix#0HKic=6#$DKF?_Xv;TRj1(}z8*=ntZ9MqrqmZwE_mj0%>dO1Z1)++n zs`rx>hM{x93|Il^Tk%yD6{7}MIqUqt8Yn6%rr)6w@pSEpXS`I`(Epbb$7yVAMAX?} zWBL~tZ_l;2SNGl)EQZ6W1Yy?gNv; zRfWM|*Cdm7G?S^&&x|F&9=QqL#rFPJ%>+>Y=msHlId2%=0?$iLEuTT&+uK`CP7X|E zw`q**(oYcU{r0;Pk%kW5C*Wnp#lM`rfJX}KLQzrCO&wQWhW`_b5i??BWj#K>?Ck7R z>Dk+RUoxis_U$NKfq_W7(g>)XPN1YBh0%Tl@HT+KrVf~Fa99K$D$sr$L;2k@|Ho#= z`5%;l{$8}?K zQ?QQl`Ezo1BgwuFFOj*~Ru6im%$ew?N92C^=x-ZgVfq6*F@y#gbA#ijPE=G(8OO zw45=ioh&8xs4<})Eq+y29cQK8z&%9Tx(+Mg-^yeObC{fgrE$8eCZ!e!in1ytsa%(0 zmO!zJu);@TejV+aXVPh6KzswFsBf{^M$SeT4GVq!*WufPwfrCSc){%pyZ#P1Ae<`mi*iAQufcx`$ai>wGRt79h!pWzV z76S3LJw++uV$k@`h8&#-e)CofpDcwzC(^tMH`7Ff9aer%t!#89PIryRNr>znssx!y znr?jVs~MiMFqVF|9QC7zGST~Gs-VmWZ7O`)=6*0z!37whH3^`Sgbkf8rAF=f2rING zi;0V@gxnYUzQ*AOD{)isj~o>7+7F<}gQIW;f5c3=(QPbQ%L&l&n2a7bw7EjW|oc#joYc73VrX`=YPWv2*HAnN8rG@vdpfiz_BF?DY zq6gB@)Hr@Uc_?N82cWn@^LU}jCH7&^jj2OgRSQjD2DYLI|82+%Z)i~?6IYYcJrbAVQ{yi z*UXTvG0Y+)DMzylCymR{>Fbh%29&Gmi^Z{Q_OKhUlmbBM;frHICnOBp<2gz(@2mMZ z{T{(hps(XT-{^;9dr^0AK5=pd!Ce+!Ci=mt~Zg z_hqRS`|Nx?Tz{liCJ1|9SWsd*5$MOmA!xU8a+;*@f-H_xYpjDx0}~kpfz&*>7ueI& zQ(Rn3B=vJ}kd=`UC{}(ue|x@*BZS>!A=e?`MW=A&H#7k2mv%_hBu#xQHW0q~wL*y? z@yxLsMy1tSxQDFn9|InC!0(FY{q6zgAMFm)0k?@eE$f?6Ja>MA$)u5Vb8DR2VP#=S zR7p%q(kUB9$4xu{dx5@u`O?(Xl#USiTD<^;Ks%Y^s%xn^3_JiZABxW5uQ=+vV!op% zy1Ra->v;r*x2-Qu?syF+BWx_!{1>+WKDr?=0!Ti zA#F*-frAa#ZRE(r1V){ag@st0FJqw5an%+?YhSQ;FfnM@Zml;_-8&DccssF!a5w0j zHQvO?Caw36XWMuvs83rWw&41SA2&G1n z>X&qc0F#oIe+v}!gR^N0(7qE`79a@=Z##ygk1lO?DxJL(BV?k}ZA7jHjtb|duAE@g zw>jzOxXu^K-?>UpuW{aj(4`o#nJ)>@1oWF?-@^FAmCR-F3xsK`?H7B%)!A;|*=Q2^ z$n8SnhfjKt7f--lT0C#6e_7yFjuNUW?sVxw<*-R|)n&Tcbw8d%{OL9%TV%<4znLCx zx8J~l;wg;W#JK^HTWP5-mwGf~-+>E2@6#xKozjE zB)w8o%f)*$0z&bJN;i{w4-?8gJI&u{XsrHm#jM-droqSXkB;ZS-@8{tQGB)A(aK6$ zhJ0cojwkiy&HFu6Hm`_K&0dELeN=|m@);7zW=&bSc3W%CN5)saS*L`US%V!gMM&Fpy?UuQ7V)uHlAqDd}}P-%x;#H#U0&`S`3-U=O$%X6 z1qx~7Gczp!s|my=Nmce}0RS86Ehp&l9i0Fo1m5*xZY%2qw>pUChV+8WmS!yUTQ_0_ zDS7G<>y_H4cVr-6KCK?Q_xAKyT3O}C1FtKbgcT-`Aszx;R*=1bjeml}Z4Wob0NgO} z$&)V!K{>bmmf3_7@V?bKR8e;{A*#Vzt@3Wr@6lyl!MR-EG)2Q&>dBi%jd z#N}6jIRd%xYFPDoq;1&`$69*@OWXg|vKfAFn=F(2t8Hy{1n5eruNYSHYx$z$m=IzS zq~_^W_uw}F5sSuMBlAZo2_A5 zY4I%+zeG>Q%_uP}912DgHdIp6j7F{PC4AL#1H?rH9~n?Qs}U`mVP@XE^!wt?V;0p@ z>uk3G;(?Fl=l97%n{DYZSeplR)jRHQ;`b(e>fw#MmT!-~yK!!_qhc@t$yeNM8q79yg*vm7$W-y(p-Kbbq%o~Y_I-Ji1YLcb8KvEQ22NT2+Ez7T~`7uzqWTycQ;h1 z1S>E7kv{yot#bFS25%oE_HQJ|xFETcygc5*GW$*I5$WjZ!j%3uD){743&^H{oS(w3 zm^o)NrUAo{6Eprn(AbwQVOCq=UH9;v2ry=eVBkQBRGlr-mH^kH<^36@W1%;|lJgpV zp=ax$9^epZwoN~6>#=F>VPk8+b;*4EsrP+5Un(B|Scs z>M0N=XQQkg4|}4ipslC%B+*$u{U&p%Y#SU>%IQ%=0zf}q=4EHoFfsK`9=Qq~9v=ST zWng7(UrDt(+C~bpo4* ze>e5RY?MILO0E}cbt1Jv4)I*dG3;u+HN%G-m>spG88?gBLzOk0r?(*o52Tcvu9CXz zaCvNJTst3X;K)K-fnzzq+T<&FxbF4nxTT?d!%Gc24NBxYNFmy~da^ED4%Zjh%E@s{ zn&I{y%@-$N35vylxcC1J=MHXIrjGwf{gR9eGDVx4n*gxl+r51Z0b`Dj=g0|CSOg0f?mX4E9Ithr_;L?8w zqJ$QH72Ii2)z{b8*0!u+WM)=a3zfdzs|eAj%O7=S#^1ASYT7cGs`ED~B#%l4J-6-s z*B_yi=ZL8BZ(?gqljPydGp&>gv?x zQ-Csd{bN)(!Z`iCWq@1~2)*R7+kI=b0F&!Kcy*Mnm$F;L(1|`cw%A-6+eTGNTpO3w zUXrzXbH_>^?m5?gZ~^M3Q0NKZpv8aUCdbGP#SUr_X8=Bgo#;U{Fa=yt?q(LqO~Z>H zWJ!uG+4g(=ioxBc&U`3Ebbsy=V8uA0Z7h*;M=|*{^v@AI*D5Mwrs&n#O+PyB=N=0t z59}Czw6hCdV$e7hc61a!g!nGKq?W82auy~%V*K`N(%lH{kG*YkTtLwPjr~#VmvBd+ zLWAjeURrl_)7!CcjBqY&Cge>>kN^fv5C__HNyPYe8kGoDdQA-11{d?zoeU&HNqhrL z>-qP)biL)azpXb;G*McFZ@N=?e4lFW!~)6kEcC|E z&8c;g*HkWJ`EC=-Q7Hh1vvr)dQT#>&G5A4^Z^ZCXMV|3ywtBeHJ|;OH)tu|Dt6OJi znctg|sr(zHPl&Q3DA}2P(4ObR=tt}dBeVe$kT3XR)ZY#AH=EF|>Y%M7x5p;h&CN4a zUH(ZqE0&ACbKyl8+B0_}AyQ1U?{6R&2?QZ3aN3Ea=2Jlnzs0G)e=>Bsi7BDSn4hDm zlrD_EeXJ;2vlOSj~YI174x)ha?Fi%FN?0>(x*VZu>IQXH_VjgYdc**qx&E~z|~BAfO|>? zBw)SCwpu`q8N>}xkE7qAoOhJ6N`%~wKB7Y*jvJqLmfz{}0r&i!`fPx5QWRBUR*ZnW zZ1y@q+Ss;J9@b)TN<0>Xl);}GfA)PZGp%$4pW{j&NH7_~nAb2DB}^`OiSB;3)Kn&F z9wSrtXKp*=ROq%Er1&hV;at~v_IkhY^__dv7Ww&0ID_eIPaMC6l!kXLy{1YOVL@_! z%hBW(rVB8t7NCG7;eR`6ea3_VIaANM^KE*18hFX-Z{IGht^#g=8)~xBR3l(eQk1hR zs95SPbDl+Uj%F!wnpEZOZ_Em_Bdgj<=^`3qlkanWdK72pAL;h~tRQErwTF=2ni;4m zt--GPC2dw1NtP&L>$(!qSEEdp8N)c>q!zxWlAuzrZ38PAv8)Z}c^UH^3$m6di5Gw; zdQmaA<8v@9^VofjrXJDiw60=&4S;!{y|^sYR5iV@@a07N)gegM2_QmUYtA7xtz^m) zsZ_(xP}0XQF6rVef=mSgQsg*_LYN414WT~ICCjx-UZ47VN|Kf%+uWeP*|dQ zNH*w}@4Lhyzc(W_;VeyS0J%>CKKgL3On7)WfF}Xgif;rmf$b-qthP<-1xb4D>!MeS zq9C<8GBxmhVv*#!>(1DWu(;};`4`>49Ag)Hh0za&hyVn z9JA>V%HR0%;w~i?Fyg0^#?c^&_K0_NFzb5f`f5l2>{rrs9SCpk2j@aB*hJNq|8AY@2yr(|n={PBzTsO+RdxG4`n`MQA9QPrrW6iu z+v@=w6Q&Hs!b*BloR#He8xUvCG&lgfKMkZYLE@k*`mv~S7f$X~vfvFgj>gWYPeB|j zmdL7qwfOj&FBLNopCxG%q&4;1JR9+iKr+;2#-SUe<1bGZqh%g_pSg>^Ywh(DOmT$~ zbh_vI_Z?C5`fGGzz0xSKz+zD390djbnAaKLP!!7SL^eJ^-!YVOi}D|Mc}*i!@Ey_L zYjcDyAR|{GIN`q6=|XjOFuHv=m$mu4N#86#a$V~Y_zvAOG(a@^pxkHE{!pgtXbHRg zY}m$Ut4Se@Y2VDHobEwth$jHf7P>zwQ?I9637>x7e08;j$C>Hs^|Nt24$3Q{S1-5% zGqbt)T0k;)s+Bcr0k>_Hzq{P&;tgwXS7lfb)oryfZy|yFO(gp*5puFQCHizlH@#Sa z>1-XjBtBY9!ZNhp?J9QV@O&&Ez>5um9ANt4%d)WFlrTG8-QJ{1@tjXk^ymS7YdLR{ zG0NNp*W?^br0rnf=80Z5;z)*Gz00#IjrQ5%96?2u8k1C6$Sv90eB@r zZFO!2eY@eg=ed5_)faIIJS#Hw!qb>s+QCd$korshs%-c5{hQdIOGLEC zJExkw6)^W60ucVDoH7vrAx@l_n4MfQzEE8sifS5lh+$5^EOZYR5<<0LB!l_LbGXGk zOQsz{Ku~%dzH=J_@h8~?@wrO<3YLXnudGl>*YSya^;eE|Ss~8lgM_+8PUf(DWS(G# zg53j0pFZB!a3%5PLz?ER8Yf}iqE4geDMFBYzHv+3U^kT0oy=$Gdas-pi{>iJuJxhW z75~nyv{tPewy7G0#r(O`Pe`31t@Q9l(Ur8>PI{UZouR41{LMzW%dgMsIgv({+C<^S zx3%o>A->rGV3I}tNU|EgA7&9C6zp|gg?d!*h7%u2FO>RG`8r3$yn7(Dv@%o zbb5|7pU_FpMZq;fQ49LG(}@K4&Yhqm`Fd_f^qaUKsUB~S3+Cp#<3ru%_16M=XJd=6 zuKJpCN}*r%)92octyZj;lspww>__PNsR<86w;Usw6BwN_X^46ZDkmSX6mj=izt$MD&_^_ZZQ)Ht)~880L) z{UFuR*`NSrX4lFzZLQ9;$g~H-ySke{mrHz3HqKuGd9-bAx64wVyHO!gdZ&!9GI#4PiEiEZNm208wn#Y4PQ9jX;Hch< zWl;v&v^dnWhMk z0~?F5wdwV};m%saErFN_s=~XuW@rBWhTQmr0SsPO5!-FsF;Pi_hjS7xP&x68ifXF% zfjWdp4N*=tNd>a=qrZu?76f9i2a>-*1^f4z`sE+xZpPGk2%PtdtdI_GV@A(f9Y?ge z;?C1vo`Dg?zM)51i`ki-BSa3AvRVKmX_I8A)UX3+y}@A#EV^=-Pmjw{l2_kV$-qiI zMMWpQfa33;O(Z${16{5HG>bkr&OOjiWHU%MA(GVt-p`fEmQu0e7O{#RSHW+@)82(F z%Did|sn_YY0V#^^p(H?h-{msg`zINLW>SEz0)_5N2g1bv%lFQ22atvL*HxjWNxrrx z9ZJvpSb(L%!2t01A957g;+4sRJLjq)57sFmknf=&$rP)tiJJ@s8E0P$0D;F&3{Ts< z%4%IP-{JwuSkUD=05pszeK6?(w#nsb|6}GC7qeM&7X&F4-6srSPkaXaAv#)G+*!ww z2c6Yz9)k)>AMXMM`X1ogvI4_g$)d12{3kvrYYqT@$SQ(<{LF`vbN%xjqp7y{4qBJaTE#0?KVU=o7? z;%MN!IO9Y4qy1ZO*9^`5G{oB77W<_LSjw*XR^2h|Vm&i0lN7_^4bJbJm}Ay7S#q%X zc8z{8_%0DTI+^!5n0ku7E-M-KrjO<8tuTCXc?%dB`jRj3qV7%nZ|3LxKS|62 z_J_@m8qxBq==G^sJc9N=_4T7>PjBy~w~vEEWqegj%Zz0$@xzC;Rv;~*UaAQal$B2F zzoN`0+q|0N-vfa6rixuXW7xNkfVKpIgk*y(!lzGPZ0iLnqP~6mmYSLxWuxahA1D=0 z+$q#jS62tPK87Qo{Qe;muyb*7y)!W(L;Qc9nJ1D8t*(rJKT@Eeq3a;ko;V7ib94vs z{d<>H)W#;qxd5os>1F^3D1h@#*zWP>UsQpDzc99$^&S7O>FMcwctU{G4G`b6GI*Qh zKU#tGy`y8j4T2a4Q%w!o?&D*Ygbf39UtvJk_bw|d{}0N6R<&t{h?hHXZlguc)&LBi zgDqR5)kl!oQ^f9N8Xa^P>@9jqEYj9Sz`A%*zrp|kt=X#_`k@u|=J35trE#)>Cx z#O2rV!icko!+tbjD#$x5M35^7;^)9$+IR#xmbowOQ?4_H^_~vqtyVBit*g^WT872O z8P+1=(_e>=!1FvxZ3`>365dFzH4%wV+7QzUkiU#+05Kstw+IP9OZmHYFH$v2KPzzu zs|xZN{65C3@S%tcJ8~HA5fFe>;|t*Y%c@9YL`WVOXu3>Fg)32s=5GrUi@-SE=jfG{ zX>ea&(381>MuqzXOdBpg%#Vk6P42N&=(EjO)-w_$gn%Aq4tleJh4-a14EQ1@JK@Zj zFQh^_<;~`lC-A=J*#h3PcUR#`sok-HUEaf_h|zG0IMy1x!J2?4-)!p}egs2&2hd7J zZhk*gOhNg3ThDGm>sR52^Qj{nr_mJYD4yjU_PTI-K9;nl7S|8LV`Y+DF&lMSFVJX= zDEdx`6p&5%l?UhL+I;LuG1(;QwC2ip*XMvkm08u1l9OH#n-z8+JdgGXcc48Mgc>Yf z&=Y`)=dCw+@0A`M5nl&q-P#OMQ_Dx-L#CPjS4kSchlb#|tH}GjiBq}Wjr-m6 zelB|vaOub?HU=%Mc+V$nj}SIJ5us65rcLk$z?#2TIAU3^1yUhzl$9Mu6nLk$VCXu4 z`JMzO!8*73KoZ-=GQuSCG-@FGnn33Br|CK+aL@a?cme3Jkc)^Q{V^yA^T$OL4 z7vo0&tu|lImJq4Cw}RDJ5lypG!1{9~N$``{KJ5NSDr$4Jp*&@s_*=ukM>2B=UG6r^ zrh7M~i!9@u`(_!S!y!F(S}!#;S<&+6FHM&d_++|3IJ+Hg!S9@S*BJB1*Wz99^H|S{ zv1QU>^I~+}4JM^I!@>lTJwZZAz4^t(!*ZW3QhS#-#^=LwK(&zrE^sPZ^NY3F@@$0h z-C-uLpf{C=ZWTYPM`7Dck@UQ-B^rdWX70%CYa&@n`a!bGmxhU+zI$~a6s+8%`S6$I z^q0Ew4bE?fmT|&V_~z9oSjF>;rLdKa5gdGO{WuMuORu@jopYA99}WoaO#YGdFmcdQ zHX|>u3t&P4He>yi^?xS00B~C=Q%Gy11|ZvyHkIgJjMD)8kbyCOqI{gUxZNY)ZLYFn zYMHu@D|$JIe;WZ;aONk1v)y9*4%q!wRaMi|+KeWEKm$m~0F1!T0Sx7)jZfKInSg~1 zFbz-xB$zSq;R669i0M!+v}pPiVZ7+4pl@fYK6ZNbfNgCn%N6#7C2QmCOkC-TuX)6_ z7EuNgdJsNQARyH9q?>Z3(`!D4HdbtXtfSPNws~7eMuXg(NaFC$<#!Z}5IQdO_xxlT zy}WDpBu^@@Z3G;GQj9SxouZe=Z)cXjkge1%qvEXu6$3;-G(IwXc*#vV>~k$Ya_8|K zz{~XNFw}sjEw-Hpan+B+rW(-_V~FK|94@4fKL6nMD4ytDq1v3zM??KAcf9(H2=-YW zk&ce;(#2zobH`uTdJ zd{sn*h@+X9?v@k*Hmi%zPVYKPbEm|MTfTm1^N53Q9QhR~BXK?-25C+I5 zXFya!Q<*+rAKtB1nUB(#Gf4g3tFq8FPOBMahsy}tc z+Fm->(7SUO$Q_ya4)Uzz^JfMIh6=gLYAmG&uu%E8in+~;t@v5{o*@rira$uMjs?S?_lf6->$Bh+Xf z1VJ;BCEyLP1Yy~-9V~l>n}dkT2)Wqw$?{q%k1TxjP0uHw zR|k^(gcOIoQ4!0qdJ4nuNCIla^Dq7bZA=KjgpZLf&cfL~x9pqkBAMhMP!rlJ+SlKv$JO=eNafdjjP9^4F^2s*^bIuke`MQ`4To>ngSxYq;?KdVNca{1oEUeTLvCDOEgY1XHq5Z3jrE9{-6W;{ z%Wa??w)jiAwD|qLv28D*oD_FsV?&5)@QXT9*fSr%=&z|iXWC+2yH08SqCQiP)41-( zR=~T0XXiYd+%Uey=zAkJE^cw(>nI#}caHDhHz9rlSQ~H)wsr(O&_!}482*nhRPSol!Bige(NEH1v&MobIB^pUTXlXj}Vd?$6 zEJA6g=bgnp$Qs&Kep-z%!JM1g@M$WQQafezM1Fij~sUxAx_vpIStvU$Y<#b>yfy*x*1D2inG>*=W%$)Z_Vut zPzc5nvW&Pw$eF06vNPVZ9H!)H|5)kpuX+9kLKVu(cr6id2h`x zuik$f2$bAfe7DW%c9}(I^$hwue|M_`dr;`M0HOOq=QDj@!yM9E&!TFt58!>n{OGwN zCBIK8Z~&;w>+a|JhQ>D{GSND5KncCW&pX0aTq2r+NM4Fub^mAtB$i^%=69~ks>+u^M&uP|7L6?t#PucRId_70MGss9H9oX(L z`m)3)C4th>g#{x<6Tn*-vt)k$JgoieE7n%0gSFwddjXd(m5HtlaUj$I_)TyRuX*mY zmboh_VGDc-J?D(GFI7SM*R_B88Y>3N_o5deM#cYw#=F7m=noAIeFVI9YY(B!v$M04 zN1&tnj{V$#{k~OVG>|EL4oZLCYG|BadMk_s;Df@HIZ!4l6G=XnHnP`w2O_7SR%;;Z zVUn?v;L=(wO@B8ws<=mE_OPvX>Kdu@ik zmEl}v>1UnJ)oaW7%bNDtY;ejgfYR_ z5E!78()n~b$wP<=5DaUzL2Wkh9rb`7?;ZICssZF=07u8t@8i|EMk3n?#MpHu@ASgQ&i-sDWpM{MNKVIL`-2sK<@!*^-E)8V=u2uP-c4Gk_;meI{tY$ z2+Fg?-iLlpWyNPa|8$s!m-P%6gL10`=lVCVnfK*H*Mq|s@9^lF|4XFoO5U`RB(jG< z+o|y4b#TG={AQ=@I842k7f`T67rCOj5sQ&r~067;^`KaQ4X$kc|`(Dz2 z9#xrlYY108oS|*TYp{Rawh;JF^u!o)otuZC2x4q}T%OU<(Gk?8p_~My(vl~%{6CA} z1YDwl3yE~FjM1)_d+Y7IK0hGJp9)KfmAQH^S$PW!n;u3ZOe^h&aecD^#|k2mILt(f zv)QXrSBjuA_$B%280>BC4rlPh4vtc)`UFiZ1Bm1~sbDj4C9m*D5KohSh+tU5+wgI# zUT(Fy5y^mcQ2Rk{pxIV7!zmlNUNNmzkN@QpaD;qmq$Zs8#jLD{ud13%7U^HQ-}du% zo@YQzzz=mfN6HvLc-XTX2su;h?j>l|+j*cQ^tWWad-W|*pflDDgP}MT>9@iZ!%-B` zEeBD@iybu8Oc=4^V5=gMQm+e34}+Ly>L2DeWe`UrENeNUh`vDnoL{zz-W3jju!WE@ z$;mQK*xVY<(nhKj?{P+|9c*%$-#R1)GU(naUldJSCm$)MOZI zk1i`e+?J5OVZaunVwt*)XGx&eQrmevZYm1>AeLisxLG24P<}NeYMFf4#Lqa<4=XIx zwowm!hxI85WD@5lCzCTWkoAR6fdu4mvJl_|I;+KjCzc`zCI=Vx#J-hS4Q1+&oL!`j zJJ8x-n>LkaEK_A#5PVyJX=#>Yh~bTnjRBcHJhdPL$-z)rdB*&MJI+#TtJ;TnFif5; zTq*%7cED8;=6%t@VU}8Ao_M}+_bBA~3`+^pG#i00mJWa+WgQ)l*GMJr z37p3IJU=Bf)BA8t1Dw6E2#V&qp#E#25HT5PESw-Gg(Q_805n7&-EyJA$+R&&#WIks z)JiBKnKDy^={ba2q3o?RAF>pV*{ZJb-x|72TtJeeurcD?T2!>o+kV=QuxkhLs_jca zq{kw=`(`9h^z)R>x5tEcO1>fRFpt#(q9=+>HSQQt^KJFS-;G*tJo@l+;KBhWrR>Bg z#8Q%jC8fM3dTXd0(}9}n7KR_lq4NU3pamO37)fv)fdBO)m9ld%^p^O-i0VdW*ig*I zZnhGw!t8Z>t6+3oE_`3~s;szeWv!9(=hBlDx+Q#^xLbsH-|h#0eB5oTD<$?&fZo3Im5zdDNrXNn<=wX2%35yI=E*b4naaFv)?hZ)AY{u}e7FA9k(&uk zNC>3rg`gkXI_tCOZcgWoQS?a{=z}UiW!|&yXu%}4GKb@`6N8s8zXE-2dua~J znkV#qE`gJl<+>0GO0KOlh#UIy4hDrEDy!45p`SRI(Ds~ z?pWk(IC>VGx)Do<4*63k=2*6QGw9^dXL*3DX2NY(XPb|`Pv$`su$tv_l^smgGcI?7 zPiw|b_FPqglQz|m^c&l2DS|3GAzKUTcSpA)7QNg(qGx{wH zm=x)%t{21KJWF62DUSb{0Ds@EyR8w1P1nK24gH0yiZ!o7CzaTesk%t`pj{@?c^$&B z3(h290ViYpS?C1OQGrEJ$2{Qhf|6KWufs7~5mOk(JU9~L>S9$?hqGA|IBZTopC(ZV zxmL8cdVzavY;4d2f(Pz`S|ao$R5-3GZpsATr%V<0fc-TB-eA%ews*EQs@3jR{a`bv zdr6#JVBvL#+_HKJ*}F9t{%(CqRTWF2nkv~+5{rfl8DUva5dP6}BPc`?SAmlo8bDhB z4-b*71a>nw68+o~I1T%lhY?K|V9)f;QlsW7)`b1F;q_SZiIqyM zq`;{%A^js}KZ4$Ql)PF0pOyVlMNk30s?mO?R*#_ccuF2Q3zkd&e0oCKvk&#+_2YYi zfTnEfW3spO6Ufr;x6jm-n0>Y(>gwf4XrSD}~w2o{!Vso%b#u^f(e|zbQ5w^O{qKJ*r&i2mZ(hoUYaV{Iv!y zBQ30e`kD8==xTMO(})6~eex(&my~SEh@K7qJ(1w#u-wOMT+7VFJM1eC4i2c|>dJ&U zJCBWy26W5=%svk>k+J@$)d+yk5QF#^T2<&mL_NT^s1@?k*PjDS4Nw#iJ8xLc*}JCX zy%z_H{NI5SHEioWhI6FQkLI4xr42~tv6%)1fLi+cS@VC4QL3Tf5lB$1{ncO>kT>eR zo%Z{AeO5tLW7hR)7B~vw5a4(}frNsGQrEv8nE^%LfLr9@?yk$C@lP2T`l&x%e>*gy zBvGJ@bgWSHavjhmt1Bvo+?TEuMR>_9-K0d-ajDrp-L$AbJ|r4*ia$y}TA(uDH$o{w!lFJ}66 zhFJb_1SrleC&(S|LWZ7Tk%MgD>d{Ct5V@~rxM28w$xqS~STL54jqk>`fj}tM2fCZ) zW*^-zT0wYpxQL8rtmwIjPCYKHcwTk^(|E>}Z&I%8_w#^?51UB+(t&ZZEt$4;c%2sa_ST)T$d)%KWQYw@^SJZs+ zQEpZ2R}~`rRbymjU4!7`P4C}Kad!kQWTIE9E}z2YOI1f8U=HWJYdkb^pVL*ECmvtV zzDY6l*DSrua(h$KZj0Zh8X8G}WRvQtYwoi{e$&dFblaK`Bt7@4%VOUaewaHoeh+fG ze!7}PB92DNk4U1agwMcHMq1Ipi4^?MK?q>0#(2`2tIO(yBaPC270>f}nJ7|^L{i&l za?ho1$elMl6JAFu9Ua`p-K=bX({?!>HmPuu)I6Kq&>JK~e-Mr9(oH z5E!J9P*RbWE-7h{7<%BW8UMXc?(4+9&RpO1A;Zk`zV8$3S4FIcd7DP%gkVk&H5PqVoBFY zw{~1YPN-$fm(fG@NF5scV|nVp)jP|?^BuS>)UA-7t%F&g$pvcm7{r;hSj!DCx4_0wx-;sB+XmZ3@ ztgkQNATYPL8hYWOLh{dbpHk~KM$J%-H4__L&ZA1-?K<;O=^^t|HKxE&u?SnM)zuj0 z)x^2o^LJK*uK!lBYfj2Z)=D`3_SAb&b**LCPI0uYyyh!vU`2)g0QyO1^Kl7b?DJ`4 z`XyoH_q8D{ucO}e)R2c7cui#JyXH%0((7D$eg5EZMhAWRJUH782`XHiHe;#Y+{OAN zQeM0IAI*8HU!f^Dlh*2Bv{a{hZC##_=epHvGUagKuW(;rx=?`Nsek6;QU^RW5DEEW z@?gjX3p>D`DhTI0rAq~PjGzVOVDVlC;TP)-NWde%ME+;lrK6!I8BHJ6R&r0Ibfa6277pt@4DYFZ z$wT@nQtn@(i%6sDnUWaV^A*>)a-=qX@t}R{+RDvB&b9L+HG;IY_%TG*10LpW3ZnAk zscbi+PLHkr=nUoQYR(i5`TUVee{85?SGhZr)A;88(1h^^Bg2hKW0mDPqfxTw&gL6~ zb<4um9;AEsHRK{IcB6~V`wYZBPpQ&>XgEFUBN=fNs3Z0``3}DZUOyS%jau!~R0)*n zKPG1|(l=J!Y2I*dH3k%zUAsthKty#D0h^u#IMh{mxO^|I) zPwXyOyW2NZn0@my_Se?CC83!sQ?M`{b6|8-zsskG^Mj;2VJAC)j#?EbplS=+p&y9{>~(URH#lw1u2O&;6twxaXNdyAcXCbo3iOy~L1qJsi<$&}S{-$t*>snj`yB}ZKw zx#2w_uB|-t#av9!9QQ(Er1;bj1Aib9`fk&#O6ixP*7i^w9kcJsPOJsnYhQJZ3bvof zMc&pySS4LSkS2F8d@4pV2Znlz+)}T&bQa-QMa<2V*7X{hs1`^BQ>M`0x0bre_F)*B zU28Emy}`jFjI@QWnflS*d(Sa*CPa7ItT)))HB@seQ7iq1En%(UCTS(JSdcev{7*sV z7CQN3HId?M@!krwDY_1~;!D`)nZY=d{W;llM&G`ht0_M^{8nqI&MYTDtZqKmPP4A+ zvVFc*agfGT!f@t@%1t}6Om;1{{A6)OVpct4oAFiwQzRYao2-iZ^yavxE;656vO7GCR6RN zDt%_je(iD%z}@gqWq8i5Hrh~=xFAbQ*RM|y_V_rJ2|zZBz*cJV(6LQ z3!+ap#TX0yqN-fomjiSzk8=_0uXd$w8Mic#u1?V1``YI|$hIm`w~buS?sQt(b6H*N zogB%{sdiGD2`@(4Xct$NUtj8t;Yvn6su&VKw^-Dw@pgED;J(_ii9aXGIViW2*Y1ug z&*RYrak_O9O0ZY*F+2X3y?)^^>`S^{?x2!FG%l955wd@3d1As~XYKo#Qt(EPxNR4` zjQaWPY@7>g3RWc#%_9g2{iA%mOLfG%Q>XE>y(`qVu8aB4wISMx%%1&{Cwn+4* zNwC0!o|FEu;*SsJn0-$NFUGQ2AcWdfLBS<0ZS}M!D+s{Onwc86OLi5JUq;`|#O1z1 z4rVbtPB8AH$ga{V&bA!Zwy7K*vaPJ-%_r8t+Z^`&*{qUO=2jp-NNas@?bD4@(H;_{ zhxw?sQ@9;HSw*7M$FzdK{(voK=bo>_2PM4#F|X0wmGDm4*eWfH!d`)O+#LHsMelDL zs~X&=&Y#dvlzU?g45vjFerPzvHar-7#z#W_a)tCv<5^hoRuS|+xb(mYNDR~WG1<%b zGc`5nJl(16>#N_fEp~QE7Ym9U$;ne}Z-H3e zz~k$I&pjQ4Xo=BxnP?RX)>w-M*q77^Ub;6eM4R)y7#$;5CT@reaPdl)+rMDh4_o$S zE3KX_50#1QN6wVHmgFRSB_$|>2`700B~vPvfD}~!F!eez(U3HfBe3V9siDevOHR9< zO&3w}P7Eo{o_Zy7Tih4cT?LH-1F6t!Q-5ywo%7pVpLxYS3Gp*IxsaTT=I_%PdoiBw z!*QZ=bZ7K%*tye%^M(*IIAk(T-{N*FN7e0_jmtND87*#JV*D~meM2SE)V^}q@s!Z% zFtnuj?1PyJWlr2Kiq4O(g!`9NSF&9T#KZ5my{Yucn*`BX z3n@%^jG%5nv3Cd@b3S1X3rXWybPxg@#utPEQzkmDXE4_nz}Xd)BhhA} z8liT2x$+w>Eb_U>gBPXl-&7N~GgPWr_xr9^T)U!o*q2tK-_y%p0fzGVHu9u{$3*T= zg%LbH$V&kFUYMzGb4%|zS(`38c?Y}D=~SoY1v~GTV}$J45%Y)6S^N2wBIsL-O z)@8CX9QK5OCPyGq#)HLFw@Li7XD~Srp^6b`z}P3Fjw$$1OA2h_76V5Qwc+wqUEzemT$y5 zz3$hG3%5i$%wf^MDQ@bcekB(Qmq{o71qNUMI$j2|f?25*qVeoASVz@drsGH3O?*#* z8ENtp1H+Q`SGDs|PL97xcZvD%Pa|W(LtKO(tp-#01OhRK3lqT4V6?&*{nM9rtirg{ z1$YT87{XJjAAK-W#d@1z`sd~b_+jz&$ENUEziG_hqG+_v7@;vrXxq!MxxSFi_V1njrWn7e`Tmd1<@X8bTWf4Rs^-GMyv>sXlZNpB>^lGX+r(TEF~_8-IaF*6!DCj1KEN12w?$J&C!tE0 zpV}LgTmV-v7c&HzN^~v+-<;a$%+=OI<)!fY`JWo%V!s~`K{peg=e_qR6LUs-dfu_# zhjiBQ+xhu$@cnfD60J_H>ysJc$>*~d`}w;egu$EVHq5M$*?|>~VaCW-*3^hpj)5Re z9H%}cxTjQgLImFlVr0w{br6n5B6%J9-$B|p=4uMh+}z?p!yyvnlSD*BNGkJ+i;Ihj zRJ;s_P?Sc`O+oc5OW&;Z@6bib2+;!ZVbB~j00@FeDiisvRr$<>cwy4(MGqcbTWmsB>SE))NB_G4ApnfU8Sw^rhGR`KcxZ&hb;&fXg z(pEtiYaS$hkRC)p=CZzdb5tY{lwd&#-R(&NRPuu$C5j|d?=!sm$JYm z(WLqCx?TR#?su+Yj*e%cP3;F>;>!JnvQmaa-r~kdcjzG~SXz4PH2M5F>?AvAB=DaW zH{49XNtNyY-QHWtlxl;>Pzw=A4ijjCs}uHE_Y=fJR3se>^XB#3Sj z;k|kL7N7C!v?H(|lJ2Ze)Vh6naV|?&ZxGAbjN;3&u_b28r3VXz%2WD-UBm6xb8nP1yU>q&zp@ip+}kB%ZI%)m`S$uJcJYSa z?B^fwvnR;f)I?3>26Q^eIP0t4P5eAp^Yy8?W_Fc@17qs%e=YQIF2jB%M)P;lzAG;q zCnGZCuSV9pQ@r`sar%D0aNwMM@yr%$HP?A6yT2_HK+Es!lUlz>6gWs+c{C+(Q~KN*KjcpeMR|-h?N!Bp3&h)b>o*a z>^bMzQb2?StjOwfhnWX;Ppo%3({V4IYIeHZYs#s5PoB=6Uz^jev8Ya_mD|`Xhv{s| zoI-qa!lq%A!QvXrnL197BKGg{1ENFZdvA_%tGw>oF4{Vr}C^pjchuL;E4hw~j9T*);F`0~8GSTn`L z-_KwEA>&>+sq!dImhsi~=7eED^c($FHwN*W{14H&M|*oXW>P^6<5 zax?+j=pZ|W!VE%*z%mIWDy~0V20C*Qta>Dum{<%mZz>mDXC^V{3cg*2zx+zqpY(On z%_$U}@1a(@dH*}2nZ?2OZt=l^YKctT6i-sx#YTS|7Z(@%N}ySS)^}lbwXjn%OWN}p z&~QXHID?vUp$_uv3d*Bya=TkXV#(+r;Ga^sgwQvB<*1ymJ?$Yo_QIVHn667D^__WT+DwXw?XbO~QF z#UG$n0F8d-34f4&gKeg#V|jP#to~&9Tur7|wp?d~u>^AGF!S={>R#!!Ae_J^)5@_Y zVy@K&84p;Ul7*lCW}ess4HDbOkNK7P9FAV;Va;ooC6#QIYOFz~jfO>=Lx7x7q>ybz zLbUsewg0;G==`bXZ+6#j1WY93CLbsG0b%)&=y8(ApSO-3$xbTFvjLZYFDNFp;W=;^5$5R)~!aukt4_!ywgSRIH7M1WoAS`~Zq0b}=zA8bSNV zwzgXybuj5D4IKSB7M650u$=n@yvYmxHBp_9dLB=b*m!9^8O_8Mi7<%&O~!DdzA2o} zVI@ou&W&0Aew)j4N&e`hRpJc#PwuZgEMiBuv@G7G5+%?qc$F?T*&U0=Wi{?&_dhCC z!ls^UR{VwR^iG+&4x`z(8;FG~1gO`qpZy)gCoxlNVQ6y~nXDA*gw2D98Y--R7yZtZ zDktj4>r}m2yXir<%(dD~4zlQUj2(10*1e0LNHhyd6W~*CG+)FMJ#?M>v$BkI%M=Sq zpnK+(@VOn`d&cq~WA9)OlPzXf(1tbwGn^o1&|YCcW*;7K46)D` zaIk6^*vEa8JHgtkxfoNb=qS@9EB;6HBiXla2f`}At=Tac3gY;q8ZEKepFg9(RT-}o zDvEXMsO)lVsB4Jnd&nyvP2{W{NiVkFD6b4668eW+i^sj54~Eju+YO&xV2hL3m3JR7h^&lK3jGXHERcm}m}4U=Rbxtp ze$tvoDRp#0B<_J3#sBIc~zU!T`T0J&&+)$i8(Gm#~ ziC>K=s;Yhbo4~<;Ds@HAPXoI!M=T;PKLk3o37CyXLmL5ga^L(x5ln$1zK~OFo9Udz zS0@?G0o2M62=3pH;Rm_`P^rl&C@xile3Ux~z`AZsa&~M18yGUnGl3RtU?^paeY{m3 zLZ0OY=f%udO8p?Z{($U# zeZ5cnMPNHhfQAfcC*RBJg;D}^!p?JtE5+Rd*RyXZkl0y*?;M_DlhhkZzZ_Y%MsT{+ zMS6;Mqx01nQ>1P-prRm>2nkoIKoTO+34wiAE2%O;njQTCQ?Bh>8%26b<=){HZT<$FzQBeVvP&yON%g zoZRKvv+PfI`Kcphv+OJN@iJg_&ZD@`W9&=gAF5#D^`W0W+YxQJu4r+xi@iSsrbm$C zWXl3vwVw*#4J+UHVLk0Q{M|(g59@XIjr{t-*X=bMA&3d1KH@)w+;Z5xkcIA5*uh%r z6A+`mJ-R1Tam?ztFCZ{9Z$f)#-x{@NEb24h*5U0F&%qaNM;pb==He0g#Bszjz7CKw z5bAXR{Jw?K_%rYwCz78*CyzklDt-wB!$0|nZibw-TMQ0!t5 zV6S0Zz}~whPQ5%mJ#B23FuiH=<%NN9+dHh1=&v_AWL^uD{(=mb^U*SQ!|6t@e?06i z9bwp|*q^8_I;VoQfI@5}ea||Fcc1-2`~+uMx>ve^tts;Zhthu$!1i&d&;+RTtB-?l#opZd+unIvHHk@L=RKd8hXZ2I9JaH8ktPltxQ{ZPz2 z|8&+i??pSj@pxqr_DYjLPWyjhti;h5F?9`Ary3->aTwF#mU!+aOFeMRr^^6~NBtg6rFl|}t%1MRcnMUz>FvFVFGdx?^duHJWR=ra}DboR8b%c+{$Zb^X1X77pm5~Hr-kbUnn#q(YHEx1AG+rb*?>% zjIk4qTmHCD$15%fga?DtIEtT4t#+4D8~e)gk$v)KSZv+- zwuaxPQckJeI`X0@W&qC3`}(@wi$*|Z!NlFo)wOdlbJ`>YnfZ=lpz>I#YAw$%hveM! zqh&wjbODR4_8}KqE3Z~^mtyOpgq@dodX9}2&AXzNm*!_;?R)zB`+IwN-PXsE+|SQa zVYHoFAu!N{qgNtWx)goFVBB{wIE#~gx6%0n(tZNe3Q<#^TYzARFrnp9)}ZSVQ1+c=`SL{dT&8J#9palZ9A7-F zZA`1BF8BRFgFdvHrpx^Ix1g^9G$<`i)bVyV!yqnTbRFB4*c8gE#V}sWLp!0>2hk^M z4VQYE@dy=M6%>ovMK*G-#mjB(zcGmCdwubLWn)ZVxd%KU`n$_BHt~GL@u<>19c#kz zyd8Wo!hxfahfI^rcTe+lb-ON2Dn64(olpUDMwAqX?SSM~&EKY47L9HvcCMDSw@Y%%N*L#XCkJ!EzzT$>WmwPWdACGqfKq^40g2 zzV4x=Gnkpv(|xjEV>>OYi(k2)U)noqm83J7>5dN#=1dUz2Zhs4877ycv0>=^L~TGc zo&zR&5Uz9xCezBV*DNWALg3n6!O($24qcqfgKDhkiE5SV{ zMSJdVj@Toy-{VqhoPmF&)x#xok*BKD(!Oeub)>vk81cf{=RX--IMM#{qQmRnKq<3@ zYKD?SAHL1Z*{{Gg^qFTjwt4jELt)`(NVCDHE3@8pvu9U$s zRH7mX_dH?SD!hF3+xT~Z@YqMWpj=5O_XK~dnS`tUB_BVojX&+KTPdo=RC@pumZ$2y z{5#psUOP0V5p)jQ4hu5{FW z>fU?!!)b|l8XHRgYE+II$h52v@< z?HLXnQxc(hsOz8#MRy>p%)B@u=i7N=gr6z0{<6+##Mz5tw(VRBo1v2NPMHcT!*pxI zq-)~Y3=TgNsBryKb9IW6R`QL0C6zUbxkuMNOS)DYR79W~JrNYckxoeGCDAQS%1lH- zK~Ygz2}FDY$}Lx-=gh=pX<$)W1CW@Tar z-NL!vA%Z)#uf=yhyl>5F*>Cvvsi7s`o0)H6#Sd>k>klXBCo5G{A202Adh1$i>9q`} zaOEgT9nj$(7|?w1fM+gF@41&T8zPsN(8{Wr=u|1W=8Ct&T?uJl2So+>QfB<=EdoXv z=0^!N*}F7)&3LX*#$lJfe?Xj%n&*5Cs>g|`&mr(=pM|9H!}eSGN%iV?54n=EpDQw} zMnA+X9}4=0xo!3^IcG||k?Tup{X7u=J(w&O&=tNyMjoGCr4iK1$YdF|q;4qQ)}p2m zV^Cehcme8?xj?ZL$ac|F1uFQ4@9B}M*9_@P{d)8(eE?4o~*8OwjKbS6GwJwWV6n|H@$KkPjeq+9rd3t?EJ9zvmNI?XkAC0*9 zjEFU_lXlBIVm#i8ZxFTV%O1|Yh2bs%yfOhoSH;yIv2yfVBWGr%?Nscw+Wdk6Ru-Vz&T(4nWu4zo;pRRpDd+2Lp=j{ z&6VTd%EM|Gm{dXBn^hR|=D)|+ZLcZagrGPNBdUCv`$SH4rPj9ds4m{SAT!&lXK72W z0=<7LPFrxU`qmVpoirTd5VpTAwD!w&SQg!?EJ5vuU*0b|>CIlXPp{^ECFcF{aF)UD z!XEWte{+GN-nY;Wnk|(}b~w7kd|fEw3(+Ciy(mh6d$RYbg@zCbf8=9=hUapszt2DR z)>b|g(jT+tT8U4YkwNma#uys*-Iq0(jB>kWA5gD_UZT0fAXGdLKaTWJRTl{j!*|jD z$bv8@NHNgqcALXVZj^x~=k?DqYoo@fR*n~~bfTNfF)ayyVn)7j$ zGG|yCD%``exu2w^y=}6(b;$IQJ`?8LF8mqU4qoi`; z?xvZWdO(06Jex04u|oX|Yv&cdU5(yswpfJdTzx}T{p{ixOEM~lbJJ-1(=uaZ;KPZKexj>RTb_G^AVuTMq5h>2o;!2(Z58)|^*^Ie?1=f+#p({*HXYbI1E?r5co2fB z`dQMDY*s-o`ZJpfUF@}#?5FsNmDlvn@z-S})g(?Nd0RT~H-E#I_kO=+otCPuo|Ro) zYA6OqyK0*cIg!a(kZ1vyWUjDh z>pf?G@yTZPm&3EKTj$c97%kf6|8iw*)V*h`+W-6`>&J!B_)rL+-^pNN-#93C&6Nn|XCX8kC+f>j}cGMAuG1oeEBT zY#YjgnK$Vb=y=StCRVe4wl0~Jq=dw7qz#c=O#7U^E@jgh*Ds}a=q|7n)NJ%-Lfzn& zk|?$GkslRylBJN)EKpob-Cc0@Yz;+KDzTVZQZ>!EQeG*15@jYjIsC!s*Gtar2X&34 zZZ=Ed=4IJwrRAlAoPmqOq|t`z{ErAsZB0KFYgSIN2k-vlie1q{HYLx0q0$e(lhF{y zb(K_3Uy4wy^9+_FmD(v^R-GC?XmsaC;V*=QI2YgF!Bn-cT#R*d^Tnx&J-&!x(gfpu=jp_P|bA?MN zy2`UJ>-`k3%c`g1sN5dD(^gSVRUG5>H3QoQwNk}pyMgOYwlRbXDZBPLi(<(&5;u9U z4t6XhNrcnm_`H{jM|gHA1;$a#r7oG> zClyv_wZEUucBHn#$p6T5E%ZC*aHC)6nft0;aZRGzd@1Yteo57pK#2;w6v7=2#uJ3C z%ICM05nB|0t7`a3E5tPar5FFl&?p8;Mzp5acH4Hj;LkR#-LaahIeWDjiv_g4e@W)D zE?(fy&lNIENca*vo!d(vC1`f~ZDON@evfT^G`#1SK6X0fS96_h?7_(%Fk#E&Td5Gsz!_M|TRq4T@EmGq>8!FF8S zX4S4Egwd;5VtnsQvZAx$xhPtU1N@7h;d3?fX+!;jbk|F#Bj$qZj^B0Ds+5M0b86;$ zPYTuxekf3rxtHk8PFM>poVMYs$YQW;gvCvpjh<|@{6BN#*xM<+%0(K3>+j_Mw=Z7n z+z{QsZ5Ysa!;d#7jA7*%?;(2Ay7|QgC5L^{LW2#5*v6umQC*nhzh+G4w7V==zxf+6B*%$^2RO4!QA#Y>@{A#4q!MLaZ zp&|mwVwClNf}kO0EQE*n-;M-NKQ9EVl2?*1LjPW6@SdfaYIiZZVh2%OJkwI3K*CEX z{C_{NMFx~S_A*($P$TOR91dV{z0S#BK18k1(9m30NP;pb`I-eFqW#p6tkFS!?iEx3 z#S~(E|NdUwJYToyc4-IK_JLP57s2bnsi_9g$ZTzuZQ_CAV70ab`7<*!29)Pgf+@b1 z0j36mnR~mtziWtuCLoCdROjt$*D4^J2l8T`fdD3)ReuRGZ?!|KPj^SGF`&Hh@eCzY zp=phvfv9rII`HTd0egb7MVJD!kd}nWWreSW%3W3J_!mO}x>=I;e~P>;)LiqMifU&{ zKRsT+q&03n_YyaT%+Gr7Bk(*^)}bn!4ya=eVPH4Ru$?+GUGBBy=L9$qj!V^0B5h(~ z0u&GiXF=lW_3PK;gE)9T($|caYK$H{h{DVY$bkS_F918~D^h;X&wed~rmZ_ z7|M~@SE7dJor9z@{_TrvBcB!kW9)Jvhx%5csGk}TzRCfkgGNCZF;p&I&Ezxi3}Uij zMj#GYiSSkduZPeC3=ff1C?@OVbl2e&R66$HusB~sah0Ak@EZg@x;#pt{@1wHnc@G+ zBS;jxj38O6Ie{5$+%2 z2@Ua#s>gpqB*x3_;)_bnmntLi^^bn4^^M`qT6dQ;^O2+X4qL zA|^pq0jfr_2SUL;9_6QibHGwW_>E)2AAlM;V^W|%o+6!S2Chcm833HI*g&Ejo8L8X z%4$`yvs*bn*am^;-+DJp>{~)4pVwf>ZDaRB@6ap*=JqudFZQ{GUeOD2U z-!QJV5Y%dFf-IIlkdMcyTgp6C4rZPPv(eDnLPinrHL~v_{F*S`{hxE@Wh1u< z7ns1nY0CoNveD_-=M(@^j6fO&Q5u31eV06z;|x8`@^74{zc~JX%&q!=99L({QcP{s zE|HZ&;#G1_jt*xvwO+`%GAO#ser1azKfj{9{M?y;pz0yKpcbiu`^$w0cIck$oE%xT zH;k$oHhN(z)Sf_Wf{Y%Y248q)UC~1Htxu@v4|#c;&qWi5ZqMx5m(B04!sGZ|7j(M5 zs|h(TU_XIedxg)6u-ZvIDTfY zvEB!~n4h|HhL^L+V*^@6u(X#2@z7qXEGvT=xgZ^^FSZF5Ptb0VBeIS3rOazu;adP4 zGF~Qm#hUTpLwUIX?WK-VQAipAMBT|_s54I^7jobL>w|}X^X3g6BQ7rP>P2yg)q{Tc z%RBW&E1aB=fb|Zf5wvpax{X$mMJtel0&V5wSe4i+_rICnznc1-px~2PUz$JUfc-*d?AeMg6<2~3Js2vw<+I;&qVUtf-b1kJCOKoi}i*k~Mn6d|ZVSTX_UV1ks z`vq)2e|OAIo#LT_yhm8GAQEOd)Rk-vzoL~pvNKhc(AA~V#B)P6EyZjPL~JxQ3knLL z60_A?!9smZsD$uF|3);}KlmCH1X^2L8)OH{sTPxxudna&}I&~^TDvV!Bq$2AvuSin$EdI7w{@4r%eE8f$?hQ zasyKMt)5&V#ErE#p^{ZqRRt_7Dz~J*>hj=}02N^uP(YyE5ZnM{BLWs#X8f@4sAqE0 zNKdcEar!G1V1oW@y>wln4@&F>fBsPgy~XYl6hL>oBFlSrcXt=)Bp?j6k3NB|Fk8@~ z%@gq9iQZmfnl}kMT2MW4=;u!;JNKwBTLG!hJEx25xe;^UBTUF&(gXs8yGOSR1y%5R zCng~C_${u+s*$=nX68I#B^%>S{o7G&{S;r9mu>ARqCkH}x0sBQa&Kn`GBsgP;r}-# z*l!Pn2z0kW1nFZg@^>?&k!DYQ#f;b*!0m_k;A2Xljukf#b!>i4r5zm|0d~mLv6Zb5 zyK1Ovey-Mlt6?gA*e3x}zXn^O2xDHJ4X8OfQNG;~-$9`u0r_4`Hke{~4QD`)7Vh&G zQe*poO@{&hs1^AgBq9NR1Z_l;z0ycVQKuOhYwO$r@wgo=&wl5((ppg(azI^%(v+?`jbwT8;dN+=)>(`;~Bc?gx3mInQIDI_*Nna3t~ zZ0)sd78L39u%(iPxn;oqfSZu$!g91RO!+R_Q3+a@e}Fc zf9DAwuGG|x1Dd0poE((hS}x89Zs*{i{NbB;a<6IGI5;@Cx!r0ffG{eb>j%9FS;NCo zpZxv(*VospBp+#hUy}UD+8{$uI?n z535`9+dM>vKPHHIR@fwA%9l9LwZnRmb&Qj7N)K$-Xhw?P1S8OgDw(VT>js`Ggqi`f z7DKHMo?1FNi8Z}~12RJ9w>jP&5fQ>BDk`dyZUHkCwX(H)Kv)<-6Av(t3Ul-G#-At-x%>0IOiUVAP&Ymrq=@$wgKph!4s#tjXr022prfexis+iwQxR*0 zn@cQ=OKdZ+1&Dd>g8gVy5qu$N4_hq&{DWsD6x@I#Y!7wYmzIz>f;<11Vcfer3V6JQ z_uQ7S5~TV$@NvdYLCcYVfTRxp?^vU4rV#-FBLPD8j+$%i;;5Ua z+Q#V7!AewA+x^XxL}U+Szr1?>?uqX?o)b9_vdYwWb#h)Q7H^GmmS~$7)AlUbgjRgX z(Zmc53{10YcX2TPJoQwngy2lj^_#x=R}Ib}OvD{KRzgx5>#Xiehw+84xgUO=Y;);Y z6;XWY)+sXM;Rih;AkYkB^?QKqU%d6_f4cX=SYxmPfBtT}!*~M!M-Vd^ehkm#E)X4q z&o9YDf1Z4zdO{k1IiG`&3IC}{?n{RMydEe;g#VWJNOLgSu}I_xV$qvURh zFX!H+vA)o>B*%^o4~x1if4^ziKu%7cnwCaENvRwsx*>VAqtb^hF}FoEs0&!CIO7~r z=p&q+on6M%P=OH zmy4qq4Ij73V4;S!NI{ikz6$BZwE?r&37P32#xQsdvjvpPm7%J*)nV9ascAieidEH7Z_5g{@$;>RurPaL$Pm|mFiD3r)m;!9d9Lj3m*^^dWg#aq-4$_V_Lu$^G9lUVf{qs|&f9T%V&u9=9I-fx*FXmvOI|c#quHX-*!Vcu61cY+Dm9^=#LLoKinB6y{(efFU?6PVLp?n`6l&8rQdeDF-NaL9oxUFn=eE+lse5lwEiJfv(xT-{IsWpJ`&l#jhifPs5#uoYY4rBjZs}1F18#lGLMRi z68G4w+*`(kToJqKXJ%$*SN=GRbz`oVo&4+^OMrCJSe1uj*px##4K3|t=gu333qe%8 z1M(kl8ore1U!UtOmNz`GJ{Zv;pXT-1X`Ss(0qKA`cz_P(=+}%1BLWsB4)XUG3pBPy`O!=c#N?+lYvD^NlDw##3X%SwfioENL)t~X#$m=E7QE^ zdL+!E%@FH3DxNpm&094`UeD|5!RhzU&2k}&xZ7yO*N^L`sYk58g3r)k`TbS{B z{r3EZfq{V_-s&OY0D5uvZ$}^d$GNXx=U3Kz`0(f2&aj5{l+I^L8bRrww0B6~g|n-? zt6%F>ec zmbRv0?9#h!!8e7CNMvy3(Hiae_Dg#|RJOUMhqCh9&4Q8=bq3SMw^y_cQK*u!k4~P_KO1-3?cvc|0f#At9Iv*IH>F=?#Ji)@(&}f{y!LU8!$dLx zB*CH#2h;fmb+95F=KHRRujqQ>>Q%W!j`r7zFQAr&`_rQ}avx_M?E4(<%-D`sd%@6# zvsn?^#TLjuM6zHM1ckez+;L zG!5#NLh05Z!y$1&BbNIT_Ohi|kvVMxc9OSdzhJ;&+-plfK%hNZK+!`4OuAr>`97-3 z@MCRltyZB))zRS|H#fJc>EC&PRkJi!HL_iL!*=ZU5xf(YxI++2abYmwXn!UjCuBABdk?HLSgd||SZfArXFRfe zxJPPyY6gCyFe&O`p`l5^KeqNRWovn4C1ks9^lKDHXy|((Ez1vg7gCfj7TbfdA8suj z_tvr0s`hl-=e5|y*j8;s3>3KHp5{!~94^#|mJADjD0MEeg^p#5ST2{(&|BYMT95OV z84mGYXYryd9mx?m{7F?K>@@p;S!{2@{ztJVJ!NNwL@lnVVfK_S6Pk)0M)TC{J1k8%GWcW{_x1JN zj}=z+!A@XSzP-Lw7eFesoTZu~&#hI!diYOKj*$9n%V(XXH zRu;nY%n3qV&HAhteLSuwJAVfZ)Ljp^?cWAD(_Kk2+KL7S26#=KAN*lH>H#4}<<0Bf zY`d%hqznVvV0Fd*A-27(l@I|_B(hlSs~;Ijz$DmCG+IzVz}zDP^nSP=9#xLIC6|!Y zZbB>Rz5hr>ynkruaz@j3zyr_FM{;p8eQqxW8iq-%hhN%nmf`Lhrf5p~f75Z`Fi_2TQcz{1LW&;Yx= zFx?eR>wWI70c=T0NdvaB;jIDlT&Z^dz`$ENkz0$S@D>U#by@D!Hz1xf@SXP5+qcD6 zhKqJMVdOip#uHvLWj4Kw=U3Z_|0!FjU0h5`|i-ny&FOUVO!y*`g0Gy0h9A5 z2tTVArl-qe9zVid+=#Z!y&$a+ruOL3C7*Z$-bo+X{V8_I?tzNxYQ2#=_*i4ZWdt{v zdK7h6JUAw8&fb3_4j!m~b2RFBp9Vfx75EU{4)B5e=`xvKt9&QjF(5R4-(C{l* z>SItj7TW_9I~zRnt-`^gRY!IDhpUkdo8XV}GZrGTYnH8Syw1n^I+m@gMmYYq+bt^z z?M7PZSG&9JInzy{ET;SJ86tK+o((ws{B|ZM4Z=}Ved|7d`723Eg~1z0%@nVbA=6(^ zGxRm8ksD99eBd+fsQg`fZsWpBQU?0sCO&#;9Gh@~gm&zeEB|5Vc2#IIl;iFh_18j- z`zXe*~%qiEb@oQ;Z9_@+xl)xYrM#vu{vEI*(R3Yq!>sN@f#h>s4v{lwR>s+D+I2>y|v= z7J=cNcc&ij_etu)EQ(I55s)SP_w)RVWcQysqm#ww6ZiUlayU=*0VdGoytZEEQZ9>&J zV(TB_DiYnN)(e^8`~Fk6`1p#CRS9`kNy?9cZz?)g6|)V|--#goa)&fQ_~vDPd2z}x z>h?XcQ0%-_iR+Pl<<74d`!NC37B8X)tOz*Axi~SGdDH!;;&gfENSH#0-VXR%2MAi% z34826KgZK`s>FI^U|`oDAJg}pTCUz(4yF~_Jvbc2xOB#fJhJR7-10fv^07P)!GDI} z@I+m}(RzlYdGPL4B~M%VG}~idM>M314EsM$OTUt0yy3O$wDephC+&DJ#2&wYe3d4$ z?(Yzpp*!fNNe;%`=X?5%$XZH2Wqy9XmAB?`!td)Y`l%4UnRixo;}3fKMHU4z)2;f0F$MqhWzT?p!I=O@idfBLnv&u2W^54kRSuO(_4}=HAIT0gaEx0cMM8$wOZY*2FUPNS{dUuM zH+hEknKkN1N_XzuiKTsZ342bJ)@Lnde0HhOq}^hRr&rHHC4fr${1s8P1!FagpuytM z=V2n#@;&D9ew7{zkIh~c$$q^t@aH%UI)aPe{=`KaK~1IA8{9dcVQ|9&h6bJGl+v?Q zC0?6Y)6g}<{z!Z`ZnBa6{zt~-o&G#;3R4Nv+rOozSV<-K^ChIGWY%^!7N`UnYQ`lk z`Zy+qwQcF_Ee6JyMoRPSYwaf+=7g9_QnagBWSPDR3_cG3p(i$JHJKOmEA%dXcf$^3 zIAogxu_BH|rA1z!P1E7+Q6{OYcuKi%P>i@< z4(X_)qa$PukTxCdF60HY??jo#Q{OUD(AL&gRqY1zQVveHX@?FxZ7ycHrMdG7nM zuO)s_yEyGHz5DSu+9y6i2&+*Ifk4R1%O^;9L2iF_a`R11IvNdjV`pt9gjOgwG4acU zosp?&WJJW_;Z{w^B5`JR_9Ap;9zyzPB+4 zWQ~v{UR93O)YY{{G2L|TqgOc;Q0kgV@R5M%km(z^G9lYBE0l;XYsYeskDr+evH1et z1+XHVIFA!3xQ&!pV-7Y)Y%xoMh3Dp+Mh%rz;&0BKRk+7Jxm;D9}{!SY5ruw38kY78n!+OF1?w${eLS`|>t@ z=VXYajTPkKC9k|rpwz_36gkMX%j_mpyjL$(r4@$AzkSHcyxKIicIj7`v0Hs0g&1n_ z0n!;3-T3Z6DTHPx5~8xCE=p&jEl|`7D8MB)+^ZsWQBlbp)6>&{S@D^)-N0}-$rKkC zCwQ(Rrn)H>h!!(ZjGRbhB#$mEvLvt115TUWO{#%>f$m1DJ7*koG(SVGY1)^mD*X!b z-)w+iKyfd6np_n}gq0bQpUKM2<>BE$3DYTO6haJFQW7zKp^KV^hQ@tko&rn%_XTK( z-PXXrkXkM-ri7-Do04z*8OCt6mj?h9u)wvohr#IwgVnTLg2p8YnJ)GW4Sh^V$Rjp2 zGRj1^Fwlz1czJn2;BMrR&61xo?3;P&{AD{_Jyn1J>OXZ^{P&mR${CMnOGcKG9w^ZM z;^W(aiNE+0=lb2IRB+Kw*pEz*w&rT$qyRsEtg!vhln{vmtQ8v@TliI_p0`Dscc0uX zKCb#9B0^s9UmJcsWk1yvdU&vBS@(|)GPf2S4zeM_%IgzpEzQizeg<;kP1*wvHC0tr zJv|A7+7lP{{s`DU&WqpSeX`f~zU*pdX68p>`((j3Q3J3ln!hdNZZ2M;rFT_5e@EKK8FuV&yq3_z-?n6FcpcS!% z!jx}(Is2GLLs2nEknZmU{C)c8B5vnQA-|B2hML-A6xP`NTtZZHh}0`Ta!N{fKpBP> zHs*zhk6*Do+~3)ayqq_v^WZ@uaib`q82XCBV^fA;x->He2}y&Bl)E83`qiF*8#VMg z{X-hJ%(@a=T3VjmxP1N;7Z=yYk;${S0-oEy!NQ*;^nG$eQ&sh*N!#Td@qr6Ns!LKo zMfc36IOO(zgOV))q>-I%1Lb5`uu&c0tc<#o-jzCI(X?zbw? za%^f`C);0h(612ojV%QaZU1wL{@c)Zw;(KCe#{BR$B@rD&%eha2_~L@ePU_(3ICU; zM8e>L0Ol-XY~v(kq9z&!NKVlXKxNy<67VlnUYkt`iM~P}7D^_4QQA!A3-!*yAvpAe zPE!=q7jrZkZBw-|0B))9+%e@sqvo(keQ!71&w3Lo!dMfqZ0yRhc#yP>=Y()OsrT;} z5TA@Y59*pwJ>>@MwwVL}j{gzA?{4K7mO}R9WeXk#-}KeX=K(U^S{UqHlz!IhdOIHA zYJmM>bcyVu)6>&Iu^&8mg6|+;fVw;y0A^wRHG^0Y|0ouqPoj$Wk0pxPmczN|JU2$)y`I6tdtxh#V;7+46zp!wcgzmECzS`Hn6MY?BQBhG= zHZ)-;9M=H`b9h)AiDbF^2w4mcdHz$Lpr9Z>|N4CYr%#+q*Z+=+5;FRKnjsnivRv)r zc}NyG07eu9X$2IgGV@U5$MHm!KBRF8Wm!iOAVXwO=%2v%>CX>lsbr*f7*KNMSYaH% znpmrnu&^*h_*FUOn0+F@FHv(f6eo>+6waJwqC-X2#b5P%$BGDJ4PQ7;Kp=%_D#*?# z%haFW_dY5xZpGV|rc$u3xnON{Y|7cl&mz^--bY5Ne7uq5*t&G$gf!z-B+|<}1kLHd z@j#>IVD>dHP0XgpL53e0mRfwRV0XQPL9=hI*2%Oa`^2s9B7QP30ew$PM?l!swR6Yi zS1Q*!0OxRYaA3}e6R?bs2oGhs3vjUyESpikWDY%_pvJ-V<^dlKZ`{|<=@r5(85oDa zPHG{C-$*KwkBolN6CH^9Pk4!3=iuXe6fs>?#Lwh+y%mKKxAFtkhM)Q%ss(PxUu~~F zEB#uhEzHg57A?e%`;rO6TBp}v!#z4pmA5-yb$XEf*6TqZi`KDeolPE>p}5HN(GGHR zr0&zi3NFSM&VjatJvJ~%8eHfngkR30aRw}Y#*&6Kv64QA5b=b6_>iUqHmr+{&E*Cm z)9>O$y5GCnhlLKx_3UiNA2)>7g-|T_0 z@ib&Oeq<0BTAy`>JV_r=O20FgSP|&V%r28Khw4hr0VuVtxm9M6Tp3yGH0F!ZUJx^S z85t|N<1xOkuc2Kr@&U`l2ZcAO#?>89V`F1LCedg})m>WNUxP?(SVxtYSU|9)V1LYG z#d^G2H!Kx$JC#`B&x(pGL}A`rsn`z$SJzx)25o!}+Eo}HA=8eVE}%^Gj>bdY>)AP1 zhy^|J2U#m{o{*NxM9*&&d*;vOaS7fYLefg^~E#Wql<@w6MCXjat;Ha#{-4Ei6+XZ$5ccUcUKT{T4pZ3OnITM#?L@t z<;nzO_K(?uKY+W4WElM@+`PDtW?tyi+e(Gcb-cp2kMrTOm?=`zI&%2$K7+Igld zxk@X4*C#1C-GIeP@Q94afC7y^^}JeR>?jTE@3*(*L0aOj!WsA!g%?OZ9U)V8E!A(& zf{nEFffN&}iyaHLhclS1J;K{L^l*c2uoRIZl;p-cH0k<6Qu5KJgn(ymI+pybmy)yfvbSI^Cu(fKFC53&x?PyX?$9E?)6=g zlZQLY2NFK3^6JolljI3$Cm;HitOAvpYZe6wo}WIAS5K@7d3oDh#VaWl6IpT$*u#34 zzNul-JJB+eIGq`y7gzC>VG(AfLO`B#p zyFYleQGa?bM7@~_yNE9-cO6_H>W(XRSE7;tbD#$qA2iB9TNG?mZ%|# zo5uP?#WT%?wJ^|e_edCwlqm~Y^2qA0&e-_xnW>e>{Al9@ZlV_NzZWx@$&x)DB9UkO z!}hT+?6(QIK`3`t@OAH5HRy@T;WHQK>DFT+{wv>fN)10Zx`c(}3*ED~@fQOxY8P+l zn`qdplMAdTe5jdZ#ZQoENZlggv$yQ6U(vi0RycYg%)7$kDwJ{EYwgm7r1x^hZ&% z%0+2AC7KHAkW#m=J~kqK+vQk)r)S5ic+0oMj#?Bt1u;-`e`aF_r4zlpt%6pbN91Xh zm6cGUYzr?`V^FSq(XhQI^}~v z0GF$>I9`gG|20GxT(!bN#TUvk3r?cCJcCfM0Hb^{K@cLz?on6IjIr@;)51@)3bxtt zt&a0B6{0c#ReO6^3&uiK0&QWG86)Co0^qb@Hpjh~bR};PDHj^ec`tK5h_sC-mF0>^ z_14RO$}w%A zc@on1W`ksCqqP^>c~T!$7NUIHkocJJ3Mbxm)ht%2L>Obl#|o=i5z)f-Pay-r_ZWuD zpr^mqsH1lS6WHNUF#Y?Ncq`!@uqyDV6NA6Mzurn@)s|b8UIt&w716bsPFo9$o|hDI z%@EUh4o}^MWdvfB+FTl|X;_pN?JnqykC;w`&=LRmi&Mnt?CkRZtv|_!vPohhqeJWk z7Wr(QQXVp*6NJ9SmV*)R-?K_suTFklpS|jNI552sfAFMNABNyK>REr}Z8+=lSh@6X zZ%#`jdlkdvHw|91ioaWzJr667OgeyxyeD57#jnQZ*hN?BEbpi)Z0kp^aDE$ zU6*C$hRm!Dj?rLfHc^I*D0G$Z&UmzS9vThSQ+H<6xwC5&AK7-$`;uMbB|n>k-HgT} zowCBY@0Kj;(i82r^MC~-$O@Kv)tAoE;`?%mU56w_S3$$WWt6Xg?gj?Wh2m&?$N6!88@a2@wS7*|S0^M%lBy^hxD8zgP;--E71p930(Iz6kyKaUJ?o zYa~);KKQUz;>E;J*6|Tb$v=K0ag@kU!Qc*7zj_H-_~}Nkm?f26Kfa&C&=IvX^n7zf zN&tVt8CX$W5-@hoyqf9o7OM8#T2IBnwwXURXgEOX)%&!2F{mnQ z)P-M`R>P%^;}-Fc@a7lANXE?OFP)_8Jgs+ht?(S;tm2>q1<`I>E_9I~3;*EMhEQIv zXY(Rwm|R`+aNM4{9BhdK z1sdzm8rqQVHDV$0cW_EDIPs)+m8iW16OB-(h+MC*PxAQgUxn^pmQy7W^!85Pc?XZh zO=gg&tLG8fh2d#KXIRLX>%o$!Tkk|-k*ry1mNTuftauMo3oWwYgTPGmP8al~uQ`Hc z0aZOg>iUoQ^98Y8e1DwQrHcA2j%@Sem`=?Dl9R{}^e)h@oe8}6q6qnR(frXzUAc#r zIQk=_)}ZQVjeiWyJ3?rk8ftX$*<$XM!_fR_0EJKZG{GO4+sVVj=kxO1`Xi{?a+yzp z&sfRPpT!A4h68PfT>(klSx`1vi+5?~VHL>E^~5rmP5+sdpN=1O3Eq)ukys5^@iX@N zm`F!ExmNy($60D2(5R91RI76>rTD>@})Ka^Ub zn%^^|sjn|-_v1_EWCj@zwcObUb@f)%;=8;MKn(0%0_LhArB*BvMS-2X}hPW$U^(yrATpt&1rh|`O#8cr6wbv95^8T zyq1OS-5zU@baOia5|ZLCxV~^LH%Bs2h@T&D|8*#&0SsUQc&wY78$0>X9E=E+^k6nT zhc{YR?yOGnj=#x@y__l}&miBqp(WG-jVcm3^8Sn|R73&7$BZsJi9#W^9EwyOS)UyN zUFnlf>Kc2o5Um{&t*dbM+_lx974fNaMSs0hPjg$_dt)uy2xF{`t?AYxPvobxw6w|j zdC?QntOELp8!wc6_%MO*H9U+I>z9osB*ou?vc#t6=XWg}tRe>W@&@Oeu1YNJ@2qW* z&2G4#J9}2Ny1D~=#Og!jhMMIhRe&J8*5&uF`EuVxA&WdMn9vA;{|vW`kk3Q4u-ay{ zLW+?L02oeAh!=X@oKf_IOkt6YF7pS(ol&}SLKEkTD)+zE>FM9oYlddJ5b|#>+e2-N z9RNY#RSjWWR{F9YZIu3Mi@M}93`y#aXZ6W*fT83wlArzX{=JjK=Qw~Y?0N_g3dsIn z1Cup7d)x1rV{{d_ZhEa&hRUQ@=u-dj3TuRyn!)xk13ZAvitV=IQujT4NQw72H>iEd5RDAKt-o)e9$8jFfTe?epzpfH zo>L7N#$Oe@0l+WQ~=zez$^?@e%{^E!>2vZkf1QKp5C1mSB@r@zvixE zH;*dUu!MiE3Ba}M5bU-bPA^bJ>%N-K9$wAc65M}%9}LiwJ0O#DA$dFC>RdgQ0L_tO zu-P3EOW^*!+x(|r(u}eXf!w(uiPYN&1ngxH&3)wVR?mBTT@0Mt6E=AMBs{+n!a#hj z0Im;%LGj_i03hhfI4gvqgt0lDBxGu%dVf$HAY_}TYmQotJ_Q+8``rb@(bKO;JjmZ2m7w>`3_m1&h0q|u=ow$KtKrj6bPqN&C`VJzlGL&~H}8bo z#%^1da>Z!E*t^;xcLL->=eE+CUKFZe`W3dAksi}-Z;o?*)Yx&~#Uuk$Xf3!behOYn zLgaTN9J1KFE&A_zYoD?Hj7(wgc<5d0DbidvR-8jem+jKaMGTDALC+fRtfbA*j>h>p z$$<|MNoUzcKPU-(Bm`uF(4~A0qorpN#i>J&@P8>+qR2rD`td zoUjw^?P(4Gi8a5Jdc^~|vq>ioQtBPeM{(HVL@wdQj%51!nN50$#Lic1yKkC0InQPl zB>O$?I3FOcw71X12GaiMFZC+-6495HF%=ETv6NVn~J~MamVc+2Msi)zKJ6Nx^ z!l2c{y1n5p^3a@U^pLeV3d7Pq(Q}oRANmr@M#v-@ zheqr9v<_S6MS6*0IzL&%6Y}9Qt>f&OsVxu3zWBSF!QUbWR`Pfr3M&lzUT8OWG zeaFldc-_yabVS#jI?U)&tQEX!^!+rU0Wg7p4O-^1GKMGqLd6@3m?j#1kktL$5IBd> z##ncsjyW9oDQ<(3lcFu_xpixFr(DZ_E;shRi}xMnn#ybmP;BUj<1KfivbE<0ys1rs zG3|49BXb;(XQv7y!l1I&m4+`XTIQBt<>j>nyd6(8-5T>K-V_>horDBQ@5bdt;Q0a| z2le=u#I#q>N4{Cc7S2HU0e3%=k*Q0(^Mc-E@iUP02HFG=SMh<|JT9(aq=$rIWDQV3 z+Z?^GT6a>JeYz$|-QNl^yb+MrQ%~4mtaj7#I_I!U@r(3&8-7ak)!l))$i!w=i0z@X z0qu3#3J(mGWQoTG)Hf-0>k5%TL|dXe1Qfe*>$q7?sgm4vMhi zIU@#SKHlo>pM{+g80!&110p~0zQDZOS}Gj}W-KMoV<@530_oKO)J@q|8?(~Q=A6djw?s}tYpvNb%2kyU!Iohtgi|J?QN?{z0 zy7In?iH+4Se`LuV6*(H8uJrVcOuB5!c9OE{`)7+6AeSm2lMY)9W5u!sz-105+e9s* ziF5pWggMega%buh-O@y$9^qP<#HOa}`6E46Vcer1Sp0~ZB$(8eNK}^Y=^|oL;Tf-n zBv=uUbq5ynPy_j7rC&q8%5sorY5FA9<9sV@0gxijF+qV%z~^v(t~Vn<>0YDL{ z`1o9odwpryNBixXC;g5rSB=IPQ7D3XYhLRv>5}UV8lu= zCLa;jZc=!T3A;psP!Me9@yo|9>c8DUHoe~U{XRgHdRAb5Jk4HWn4y?VS{0eZ2?HU{ zl1BFPPDUmB`H=-4Mxf6^F1sF5jS4SXV#KmGUj_6U5bPp(Ogj@R69QgwhKV&s>0*z@ z!UbE$Gt!2Qp{&g&g;BaE37np(Qr+*RcR9~use5Y|%3648#%`+^fY52c4`1)T>rV!B zNy)tOU(s?wlt3od6^vP`SjY{E^@M1xHIjE6vSGk7CS_;W_TD$RbE&_)Z{nFnSfMv_ zpfJdNl+3*vlMX>GLB;8qZy8!nl%g`iuD^c(=O#Y_2+wA9Iwe+GHQonMON->yKO8a) zF*iN8!RH55g>eSZb39oy^05N~YWp2xE4PEJ_`x_6jDGOvq1FX1D-aOt0QWGQ1Oie# z&|!fkMMDe0mwYfyn)M}dvQ3yBAooGSP4pQGEx=OJGDv~&hG4dVwfUB*vOX|t_f~2o zvvEK+@_=HdKUs==usiTHqhn(H$$%fFqNsR|7Ef&lM%Ma{Cj|usP!uc&`_AM05!Z6j zl<39RAAiZZVe#=cR=}saBH}OwWONG)i)CQp;~5sB&YZw=Td-HV+(DMBSG9Xra#vMJ zsU0{Nz@8TH+FiG)>BhI`WJ_6LM2`RKiBXawKF=c{fCcsEi~qVkLsP;t91iOH;T9I`4EGZwj#pZQHV;Zl2mp6ixxbe)bGGSrVhKXdAB)|x+= z!MXm{S$$zOBKt&dQ_RBL8)qcAYe|J5)IeSRkUd+3Z4Lxa=% ziH>vrgolZDJ?2m*680+tL)bRsH^|w%}s>U-?&t%pmrA&WiXMrs{NQ@2ypLfOvH{_3~{Tl98^<)M$vP zB3dRU&fMm}cqz2~b5EimgSg<3)r61O@WXX0^TM<^GYS60&ZZ`EPF5!6qYGCH1Pvw1 zP4vE$Od;5YknmKIx8fsv$8&8&*Ba%>HS~`N0iy zfaN~9fCtWMKfdxKV`6*Yxh$-qEsraoga>FvY9mv7hnECRv-vaI?*0O`H|yaQ9?~fcTEcR4-54KpMtjmr9SWW*cVeSG7}4Ng{OMcJb`q?r)gd?z=G( z#>}oBcn(}-kY7X@aUOh$XP9Zli zVo741D^YfB(JFD!hqHaT?|CdMLa_U|vrf_v&UO=e-9Ef|TzPbf@w$EaCAt z^+;yao2bzf?+!%fdIjp-^<67-i>RbM}Mtz(buUZ)it91 z-*sH86juLrlQLqWBL)=f(unu9yw-~2Y;F)sasilDZ`Q3yJK#Rqr&3G|>Tr3LmgQ&e zf#sX8oeB#t*FWX$Io8i1CcAwe8I;vGH9Kj!B;I}nFVs91*TU!zfxf>p>m_V(5am8= zGyMQPmN@ICt{=GwDwRlw2^JVfm%<<_vAlENv%L2$o13$M?2cu#VyzA4^ zoWtUN4b{k^M;4H&W?66yKQ7+!8&9QjW9BJHq4LtUO*B3VZPDa&5#j4t;9LFFVYOet zOv|8e?_HzFu)qAtApG0h_vx*pc(kpbaOqw7KzENR?CfvqK%U!2Sn7JHeX&w3Gs(Ib zR>nUf3Z3YvGTB%0CxdvD)YC;ZJ1bt_eY|?eT5 z!MKTlFxFacKao6@*AhofYFXm`%(sZ{_BlYuUrlcVTA z0(H{BmmP*9T@M~7KuH?4^PDe!1nZL8vfc9`g8rS?Zj@t8yLbC`g2h4aWtGO0#6pKl zVg>cCkxy9le=N+XDAeW#=BdcRdU)f;a?kFe|Embejk2enHU?n5YvMmwdLhzB5e2O# zLmw)x<5lM4D@FOxdlxGocezf?YG@eBN69AWFwS-#onmE*cYBhD;~!1*j-;0;(O9Xt zy2|7$?NRh2w0+l+(Mr%Gdepd7jM(s={wXo0QyUmHB7uPy$5=YaNakJUj*olwmp!yG zO}}Z0wK5O9*w?x@86p^nn*06fCdOq;5PVtI+Zj+-R#%TE6+RLGsYdP?J4#S107Y z50^6ku0?lD9liABl4ZOfTTA-Ps-gXIGx6LP@_m33q|Q#zOQ(L++)DNLIxTQmYp`f2 zuksSsV->ikOqXH`%JbyXkh>`*tbP>i{4v+*_n<$obHiLR-Ha+-Ug9*fBt}8fKI75* zC*CO4Sl;%}xoYPzY3(0PdUf>^iq0?C7x6hA2zlRu!mx z7m4f?b5R89HnsG*z+J~%Z&YfwaW03H3y8~cNuwdf3Q26qqppungDCy^0D*2OGz!0$ zezae%N?-S4Qb4<>w=*6g7+~S*_rgXhA$0fq8=<|q3mx0K>KJ~tJq=4$|95`6L~IT= z4Y`l2E%sM;J00EiSpz&JbzBje0sODCJ+c)M#V#Ym2hG@6$Aw+n{f0C%Qj;lGgPwbH z@eo4gGr|f%@9sE8%A=N<{Wu`50n4XSL8blaayuoz%5WqyX}gOJt@rNM#c z;4sK2z@}}?>Z<#FMhHgowJu0fJe-2)0W#2UbG}_mZTpiU)t<^vhS*-=1vQmb`-CG= zH^gGU-snM%YQxyq*b%5IwgMTN;AFq` zv3qagA}=RwLQaDy`RUj=dUGS|ZhB4s0R7`P0st)-A`MdHs>FHsCBzZJSLQxP#Qz}n zZjdk+&1Z=2SU5-vKMQD6zHkSuyvr)qx^^AHlhijRb!IlMMS(X_mNeLK4(t+pc2lp8 znm$3fhOs{?A~%83(vp;?p%(gUxoF<7VB77OP5FqW^940Km2|AW)7*=3FM&|wdXaF- znd{@&*~&u`(X1yhuAoW$iW8<{E17h!&yP9d&lEyD?~;X^?<$;YV#P(vz40J|m<=CC z`=Lp$bCw&<@1Kabv{jCz*Bu|nrvt;m%EnKeacdu6QFfA@7QYV`E0ydYjJEfGIl6Gy z|JQxoEe5D#QV+{)51$k&5|#e;tul#()}GnCl_K)Yk|7-OT08C1=h@+X6~2}7e0&RE zZTs(D=BrHp?(ee%-((q2h_=QbUobuL>Vc2H1)x`NrCyPTbB@|Bi{u|Nth80G_IMoP zI_}?My3U3?R5(WPjFF5m?vCOM7u|z4p}V7AgZ-WF@R;$tSRy~E)4jbv-W{g+lgaFc z{3&5Eid-P_B{8}Gg61zNB^;l(2fF)&4=%t9MR{KmN;hY-Azgf_SSk#La^?Es+dDms z@ZT`X$Tx&nR66}M^xQ*GX&mNwpd9fE%+<{-2h+HSGl&=YiE2A6Q1*Dv=O;A-{dM~3 z6$tZ8pc?{Turm|G-;7cJ)5iX)H-!2Xwue7bqoJxu(1m4X0$!F0o^k=f=EHxVLHIwt z=ij7R)0t3pjV@;D8l&*?B2admcy?5RKox#ckUvpN0O!vZhIX#aO`|gftNn+0Fxr2LVCFFaW|;dMj{D zLpsMjDEjK^jsg#uxzXIlCZ69s42_19HgG$hAZaDLVb(u<6}-vJ&jb|k=g+4BbrVja zii(PsmX<7?5pZ0GJ!~3N&gh+X01|O7pnEv;a0W2Ue;)al`Zp4O*bukg@;Uyx@1?2w zUQj7!Uswi8C@`+u^dTcl122okj$4;}ywJR|l?NMiVY~g(M?rHqTLbQSCfAH-_HMIp zQF3b+*^WzO^ojrwho>bytP`BeysT;|J2cK z1;#(7`%@^MyY^QZ{u9u+ufMr`TVj5G>}Y$3r;s)L#6<-)X3HVjtO5=_jR&8#zdg0( zTIwJEgfzFz+0r&!DyF!mmSd(Gv|qVgqRmBlgSm_;k*EbJbw_G*^vT77c8T$&t;Q#G zeBtl>R*Xsp*GL&~V&gmUeBu5p9vvbH#~JTtWi10zMW)MXrKQejG+%Me?|~6h^{_;L zfuFe+nz=l#;JTt})*=s#yaJf5P1+I0QR&m?W=W7{6~(3Z#@!x_*h}pdbdXD{4KAd+ zt=|ve+?Y*&PtlrIKaUXq5U6L7a0#hIWfS@HL7LeWJdx0d0sV#$+fZ;_iLWl&{Nups z7-_D-0Euxb+-|#}B;QM!4=>m4JuTm@WgFxMIs_O5KKK0ar&Oslgd%L>d}(k>`sJW) z<(j=+dwN%iS2TB|b7l`VqdfQaIA2kM%teQI9RulWph=Vp_ZS}+nRQP!hYN6jjpJy( zq;RUWK-!>=zg-0-d$?0#ySA(lMl-L+7()9&2%_g&YL)O9%km2=0n1y-Z?y{ zIu#LaReALpkhxb+I`#7F>r!NTcIprIeRfNV6U?qz+vPeNu?SFucH zx2Un?lGLgE>s(~~(S!|)Gqe&|dSz#qw|64yT{@bN=DtZsKC;L3skuPDNst2vF3l_B>^z4+5PuEiRqtW==FVBLUd*Hw&1^o!)o#VS5FG3}cswP@1 z_~TfHOL|Y2d+$vy`_r=}R4w9f42ko75SBXYtSLi8C#fVP%{2MCC4Er+^uy7}$z*g- zaU_MOZFT@nD!hB{Bd`!yfe_em))w`I}yt82k^Z#&hm0^>Y(803c}{HXc6oJW)u!lrPpoSdBatq5?I zQFFtuXW0|y%#g*q>x~N}roRHeZgTJyQi5cGo&Uev}KG*8#zRkj;13rQ$)G z?`7Q$l)i5$&(BpS+HZw#=xoV?pmH4@qTB~nf>f>>Aeo@07FOdHGjH!h*wh^q82FSF zPI-v4t33n8kd6e3vf`J|4-YZFOZuZ4M6wl>V4~5U96X4bG zEHpHml@VWI(T}D)t&yYcJfD?umWj|;3iz}5k=+%#pP=tCn?PI`pVf)a6>ccu_G!mP ze)Z93zukV}j>dpndl$4w>IZwFk6>f`K9oNhZo57h+=z~jhU0K1X5dgN*i7V4hOc|V zCRuZj6e$zj=?yP^KOdA&`)Y`zSCMBY)vnT3Uu8kh!rI;Yd{i%P;`_#CJn|a6+8ESF zSE~1HtgWrx+;*U-_#1x!&5P5dl+x=9gSN1f6sk}KrE-jqWHVk@<9v^B8kH4a-}36y zes9DD&;|yb>)*dE(C-Dx*mP!5hR7-F74Y&JsyYXJiUeZkt5aD5I1koaYFGAkyuIT& zTeCUA*dsC)++jlnRHj%FG`EbJV3UbBy-F<~aotBa>&d!wbik99j7Zk>j$n+0m%9VT zQV0>Y%}PIe7M29zZagouk0&}Q_gailgfM-yjd)4^+$eF9vHo?Kf}2<{EtP z5GUHt-wt#(Ud{X;_)?){dqH-ZVkB(s`9`0eo4Y(-<5RoFN0jjOIKosbLNf7S;R@R9D`O;_s zyF+K;#ux#M?v)a+n$2D-&OYUx2Zhvw4J?^gvUxpt{lLYCMMZh>Hmkgzl_Uj zi`s`#Y!C^R?i7)dk`8I4q#L9gl$1tEX;8XB=}tibMWq|*lJ1i3cP#hwe}Ct^`R$zj zVWYC{wdOt7oMVo-u4~)`0%53-hO)A zdC+k+;n!nXZ((=0S94p7q?8!WiMAR&%sW#DFE&zHn)Di*m*l{u(W@)w%K02FZ&8?+ z$FuN3*%mmv+IIDvLPFmAtAo6K@KS z#RRj9U71~6LL>VE} zG0-DgveqQGMjdt4aXvW=zpB*{OzUazaw0t~s6)hJM1sKF{1W=<$YRVT$Ntt}?qZ2} z$okHwI+oGA?^c~2br*Y2i>GzQ>wBr)|ElDx!f@vl)zt9r+$6;e#HJ#+0}^xxLM{-l zAlgeHMzB{41k$!u6Sh$y5%a3%8;is? zd0)lqFl^wYo;4HO>3|LugaILeaQhHYl)D6A;o;FG1Giq%A zysz*TG!I&)u_M6=JoY^aOcKGW|4o3(N)Qt+f#Ediq1yM3*0KRSC_^|~TKNHFaJ>Bk z3ugB(0Q%+a0$#~F-)sW3J%Brq!(}E5gwFtjU}Pp@T=!f9E1+w%hs)!L@RQiUq{X#l z*yr5VK0opv$f>RzC$e2Bi3ZM0{0=iudv7 z&D~yoJ=k%C1f2wQ2hShqE4|!V=GTnfow$99xLO<)6}g=dLL+)sLu8((8#SPSVWX}s zjE^3$S0`aJ#JsG*I92tWS4PfyI`8+hhd4mt*op38e0Q9*#?(>bq}L zU0!TmUO))%21;zR8Rm)!AS`AHkrd2QZ;b4~oq$jmK}`OO;5b}g%@=>#!qJu%!P%tq zd)TT@&kyghUkwLW>Ki;5Nre!{Y zWcGKMIopSLIY?0Uw}9dcf`|g04h%B>k+~fp)ga0pI<@wo839C$@&epbuI$Ub0R?i; zy*>n1^zF?xksy$!aXmZQX*?M$3AjUOsD57=R5KO?mC|Ii01j9HbCnv95g^Eu6RE0-pgE0{jcv1h!wrYBbVH8+B^GS8~z- zBOWpCE|<=r8M}bBtbHJ{_;qC4BqeHflcLsfQtQ(7_4$$k<LNvDaH&uV5iDLqNE z=}Gd}?c1Y&wjxh?b8>QWG@1doFUrd+tD#J~Mj2Vl*l|1Hj(6`7crR956$N75qY$;Y zKG*)-&*GQ+&;?=*ho3Koee}YkZSA=Yc~nL>qO)cqgCMAlE~>0_1g$qF)4)xbARy6B z1z4xD-8RmB`Lmb9==-zF5W8b4qQ<*Ni5>L&0*a*lEv&gUSzGVI@4G*oL|=F@QqGw1 zP-%)wnM(663d)EfSUCiJ2K(|RCJ6|HK|%;zgIE@Q!B?|CA|4SvRl}JowQp3WbAtY5(JLIt4rt9Q?@}am973kFHYoCm`Qt z5lbtgvHxf@09z=(74z7(_M_BhpBzty1~Y@=$)Ww;YF;cJ!wpxZhlZN5FZoOYeKYfb z??SwO#}Bj?&t|Z^b1iJTzED4;^3TkAI}>y~Um({ZcssEWPYm<9v7%o7!6Q|9W{174 zPX|KM0(m*J&uQiGyPTBYL9OOv1R+qo(gX!g#I2UZ6iUUFg4-X91UVWdW(%2L7g?Ov zKWwOal1qH%L6w8+Hs3&(d+wfht)0}@jn6GDy*;`YW5$^tQ9$I@WF2 z4n3!iPgtwKitWO#V#hn_S7R(XrQZN0vcxBlB|i82O1GW>&g2I_>{Nb#4^;57!4Vt3 zq^$P#1NzoqIFNvkun4SS$dzD{3w{Oi8KA<1PS-2$KaedgqohbR(R>qWkg(W}@%=`} z`6=dF-sas%jFZ&dgRM`g{nI>!X%#*1@@f1mq+OXc72^$Wqxhr%S-2j|291YQ^hd~+ zg8c%Ksj=e4Xf~6*-^vR0;N63g3&DT!5WwaD%V}+m8e~FXN|EdCJJhjtGNR%RHm#?C2-}8X+TNsKChY z-zwk=-7cFUwl+=7W_i(CzCU9&^Q+)2$yr=!lA2-(XR!m9j_>49NrCte$?x&LiZAzu z7&W8$U4w%zWJJZTqon&Hf~5#}6Ul-qX-l^gH32rR2&natl#yTm4wzIs@C2%B{F6;I z)gBvb#MZ7w9<1hnTU8J>2n%KvwtRhUk#77)nl%=S)(XDJ!}4W^%&|i;Cv*L!KZ4<2 zbb0c(h@tAz%L-a2ASs~R8+lIc2dLpiKoB102%WD0wUPm}fs2d1Kra?S`(48EwWX@A zYhonY`ZU|(rbsqp0=x^mVvL4M>C)nNc^SfW46W}^lXEd2sx$msr0p^hoBjk$#*YZZ zucJ_O12GX)9bbYlFc2j`1C}-~#@L2$2egbN3qmERqBbYLAR7XJv?_$+OB%5ziLor{ zd@5x&jR!+xe*)9|i9F|pDSUAkJLux_&gGR(50x0?oj)9^e8F$e2%`0yw{P#;!1l-f zD25{3-To(R<;@(#FUaDdN2{QJ;aN&w>Fn@&uKOi-Q_rKw6dcVDarq0Mp1CF%3A0ok zqCpaB@GU<*P8p*NH)(lCn+6pM%9D;(;gPW-Vbl8CKPwnJ9y56hyW}&3A+ zZD37bMNJ%vNm`UC={$7*YaF3{Taxj|y;yn`RW;+gq`EkxWJKC$S%jB%<{Io6bIVUB zOMj|I$V5jjT(=AApwx0tbNtaC78{YU$Tg-im__%n{P!7?`OvI(WX$wk6!Qq1@#^}M z)dJX$#Qd*If#`JX0dXCO)Ga{r>?Q`0u{wkFs54cS*3VyymoYReWi4c<8+P7&hChQ~ zKgVagf^4YJ@%(!X3=9b1JZ9g~$wRocY@xuv^AmJB@+`(c{PrAtp;A}TUjXksg`gK^ zh)(FZ4Q!eU=lE2eyp`9FBwzi<9(z+Fs(y?i5^1W+b{>iaTf861^M^182?8x0eJO=e zq@NGG7~-g`Be#gKeWuu;qLL2DN;n`|spH}v`ICM6{QOa8+@$>I99}S$KXuc+rpHVM zXyQ>caG=dQdQjI@;;DqQf2-ViXLcrUmf~{FrKIp^dDzvqHc1jsWS-|2nt%$W-#9%kew#?pa*ZgeVkApj^kdnK z6%mhpxx3NNaivjbo|^=Ysrk?-Ty51sN=7b?r;|{2k-V(YuCWCbIa4?Rz|*ibqQDUu zNwd5c{s){sJ2(u$4X@@J_CmCo;d&r$Gy26tZAMvn031ae@dVJn0#(;@5N#D#NCKTk zkhTV^z6p;&fWi=Je8rwcWX}G4_r)UPH`g43S9aVhiY1rA%jsY8Nr0C%d~8fPQHWpg zq^*nwM>E>*C6B*>)K94yVpob!^0mr#UJ=JmDd zBR-ui&b^Z6&DDCfht`mWGAO9)#ukZ>%`G1A$IhnD>?oqHgD0UdW@}p@cm}@^jzbAq-PdeF0 z(?gs2PH~{f{G^Jp<7_o7%0&8NRXgtGXSP_TQMQh&mTachRhNluPM!;Hcd3{-C4fA^u+h~@Ni2HCh~qj3aB1q zRLF$GfIH@9(>`Qw z;B62HZ0rx~H-fIVA2wj>8^H5C*qmhWQ)ilnE+PxxLu=X2UE?+U~q~RD)0#R z1BK2gXGF^x<34=oOy=1&6FME;;re~>UZ0U2g3NzC0*IQPTs3%1;P_>-Z_c*nOIcap zf;}3gqb>``P5X=V4S;$L43pUpHShI{Ux%59`(-+qoYQkq2GeNpI0m)7Kul6gFgf&(-mhn}Y+(7-74wmV`%wpi$|oG? z;WwM4XlCte6BTyd>ieR;Nzo|j=&T=}`eTDM2_&MrTmild&c7vyNcKI-3NZLQxe3Zs zPz@bEc$9TeLMfYeFC9i{yO9B*7#XjlIh@)eK_eMLls|LQybvJ!ZAvJ!Ws3TX1VM2K z{s_wbG!>1=U0?o&SPBGs;@8#2w1g&kARMsgO;Mt%uE7N+6r)xpXy3qluVJk{SWL3> znvatFs%J-meFS>AL!kS#7>MMc>fH}-UVQ`NgUBWfAxma6X@_*ipWS0nmENjdN|j-* zrCBNYS8Iyyyb$IFaUiIGX}=p86eG6SMRqL|MIgTiLSTq+`B3r80XZ&E9*1Fqtd95g z_gi+2=g!ub&|x7Nz5oQ<5Z69(+lCR@T3W6Sm*`(!oC7K42Uz7T=X!)^_K~ z3V{+CNP0nax4WREVa(7ri)me7^j|%MP%AxFck2pV{BZ*O0(@p2Zb;2R2~M0Vdm3y_ zA}5e^78A?M*}iB2TjJtw)0JyCE30WCPzLWj9?8dmrf)czKpj}L{CwxFDMZa1#NI|B zDQ99QdT^@=JVZoeW^K46LW~MhXUHeZ^&pJ~QJgjj2~c-I%xuG^_2N+$$VyjX8-mE& z4%Vkj>(0F`2p~~>3PC2U65>ZliMNm;n@LYEwI0J{xB5OxBzpeZ-sz=Yjg#Hc2e0Dk zv(Fz3Kfd=K*{Fl8Jh#_eO9W^RSX){WJ+TJeFGULMky?i(&@W>Cx-H^PT;7;_$ER{| zHe4SyO6`h|aDU>F%Y%cUZ0#gx|17g`qSe&%0(oYRv;(RAx*pLM@08-7J$Fzjv>}Bx z7rz7n#W}Y&Po1{!#+z->^8_t0cOejyg{34$6;%NVt#H0gq#9sm#~}R7ar5ThYg=ub zuM0M>T3GzdFQ%J3j^ADKlx5-996Iygza~8#C3|Kg}wcfR_*M8 z@0&>1v*DFzXPqC>qIpn^b3dvO>Vn7=uDT8@#Hc_;dOpBG`4dVQ2Q8pC35%_wo+*8; z%d5fmy!!cL>!NAA#B&c_r8K9ro}%J`96=p{nMN#G&(C#r^3!#PYf1{*hZ2UD!^DsI z+;-;HwZGy`@^u%Oy#F^Dgu5A2^ykSbwzLPeEe^;G$R?H^DqKNHXBfRCoU-#i9Y;z5 zphRUZ$Ywv^YL@2d3_>K}1}IqDVJ;h{e7Pc!IzBYAJM2xCc=FPz3G2^&FA?&3nfoGQ zTmAAYOV(ua@1}ORF6}}>YIb+M-0fQCz69nX&z5o^W9*E}(bevst=%B6OK`T4-c8sU zmR9(miJ%evzs=ORYnMSm210w-pSG_`Gcyfgu~paHaIEhR%OvR;ky$?;QtxBFsPs$g zZJA2&EEo9d>XQ3d-zVkM1MHI7f;ygEy84w%yBBjL%9gA? zJR4)taHVT;*5ukU2w;kn*JbyG2YZ_(!W;bUk!TQn^mX_mBdPq}{+sdk*v^&nZ#E_g zYzr*3LhPD_1C5vo++XjYSb*-Q4I&IGF8&LHYhoL^hHS!yCgU*g1u0$-BF2P8>Wwi2 zvam&nk|-zx-UESYocbdqOau{mPrz?Hd2;=un0hf~sGwCxYNTk4=hK2?bP>Pkp&_~@mq z4q=eW%3jGeD^SIB-d*ha0!gl$SY#ybFQJVBw5*6{GYQr$qA|gkL5vo?ayB@G_d#0* zPXzSmkC1}XLag=$aHYnl@FMAXxeo4;j-!eDalOD>^cKLz369@Mn{M$I(bvrhq>g1o z)5I&AlPdcW&=(#?GHWSl*z82@R^@k1t}iEz_uB?We1=qD9F~(?qNaN@>lhDP?27Va zIFDF!FUDBO|2~Vw4Gn@`&gSrnp%AhTmPGh9)L&VUZ0FwvFv-Q^8)R@2fh|)j(%J_v zcO3HK#ltaG_YLh@IVOpCeipTgpc*8iJqT~U{-oct<}WgPq(!uOptclFpWV* zXkvxS7Lz;=W{PJmY_vKkX*bNd{8gR$vSBDzKtBz;uMpN#(IEP}fZ*lf z8i6B|-E3zO)XCCJb?1jg67BN%2l37}ZG|}z)}#0FqERIaS9$AGjL^$UJUddie+L%K zE#+5LsBaX0jIL#$HEgUE9%m~n#YQnM09}OFeVO2;IQGFgCqNc4y)_N|Flh1s@_puZ zqSmrlj_D68&I%Y$kZh|qLUv$UfI*!P0p^7+bUw39AD<~eYYgl@z z{Ac;Ts(62+ma;}X%US^LQQReDmE^uYbcTS zP+JRCBjmjEW5YQvE-uY|v-UuZP_Dgs502YJeph?PTTOUUsjXLSCjL~nK1mr_svjtd zxLkO%Sk#sUxoo@9`?p2Gf1F_5*bN%w33P`m?%)gskv8%Sjwt0WiFG5uPDwW-$93;np@cU~!_D@XgUyNZ^lWi5B^vy5wW#J#k&Is5MSo+nAc zYU8AA>qqH@jZKHaaMJX_*dyl!+l{cUy+i>xP}|{9AZ6-Lus*mYqB{((|JIn7X8M{F z2Y+QN=&vXG&CGDS{0PAiR}5yf{hax*p;LC;9k=?kNrb2P4O@DWvW8v#(?-7iKQ0$* z=0Y{=$8J>y>%*Bb*Kxf|Yv-lc!-KkVs_5j!N+_h?b>vnrb=gH!%TySPtxKKFG;GQqhat&5rAzyBWbMLTcS~Xy^FAhs+!CKw1<5?`!?c?s zMFO<$5+l`Jjp?~d2SblpONHd1X&&l>&V#SV8+`{O))GHc>i7^9873lL<3$Ywir1i$^5MGjAjg`3g!$_!Tl4H{EgYxkxf z10|flhV*M^f-}wcJC070cLrJbh*UDU4n>0Y$3-q*4deGcVl$y##jPQ?-V{A^x`#Jq zomKpTZxmN9JJ!}}3> zz*M($4)J>)mU>OKNJ*9Y-OFe`b?hpel-#b7{SHh%(f}jx5mO=kxR<0atT=V^Ufrg! zs$7boe37+WjFIMj;d&+t4Cb0L%F~c`sp*NIjCdWWQFjeHUT|0`2!!G}NgCQk8LgS! zrks5*ENNx;bJ*~mAj1Lg4+b4bV<<9ZyCwx1oa;0;W=Oi*OEq!PjAaJ3soS{lRsRTP zwn%+$;bzqFO@2UJdGY%BghV7`a3%IT;nt_-f%p4!+G6_V=|ar+>wWN z;9k?cv<=J_uWzHx7@lY5N{(hB=0ZkaCY!})`6kAGjSJ>vG3?Ds<|=W&z&%|lr=ru_ zd&ql4>3FKJxrgVlG1}J`8zrnn>*F}IBIojkqeak9SSE!`%HkF9NRR7A)_zWflV5h( zI;D7Z>8h4#%l(XCtKz0~>xMVvNB**T)0q2f)Bbjeg1MJ?+9oO?t8bLedTw909ML!d ziOfT*YG(7L#}*-28EF^i?`+QI9lz5J>BbI}FA|5D`gs`N_e$;C2S<4dl*Yk*^cSIw zXi-*FeD(bXzT?)^Wb=dQaxBWoyJJTcw!`{o)w>2~UAB_rVbcfCe})eK3Me*ZdQjf% zOzli3DjqwPI<8&GrdjFwyK-QL=Hyux!!^!HqM=KI5-!@yn{-)y)pUCg_&4Hr?JMZT zSVT>(5$Eq~e!(<5IPw8P2TrwBd%N|igXNN-Uzg0SPeY@F zcrVY!lwYxCYF4BQ_OG}ZGOa2#%cGweyK`T>C1tuwsNKlQYmD#i&*Xkjwy5x-i{F0- zXbuMV!PoD8yX+VP&qmr-d3D2%L;9N?6PNiMR#9B6zxO|>>${l5xA_oSbi=68#6@p9 zs|tTGlg(_L-LxVv)Jy`$N<7f`XE-BDWa|H`Ltj0q#finvHWd`w+ide}H?y$EnVi(1 z;!~=|dT+9U)((E?MsuvdjJbdRlYpFAb(<>ZMp`rjw2W4z$HtrdAJHiNXlYi67gPiG zU7kcdT&(>F$5^3QSV_qJKCxY4!?V*NoX1HDo6pCrFH;QT!tfrkSJ{`V0}99@r=|T2!tU-vbIBCu6)u=b#LmN z+?xgtPibN&F)ha*8P8fsQiE-SaK0#eh}UKv_Zgh0^u3{0jmo^z{kTY1-$Q`0)d>ho9wQ4oeKui=|vd?n~PZ(4QF>_+@dx5!<;c6rsm{G zSKw#lqkACe`02x)8`OE_7T1YU>LBjugN&>;$^Ra?IQ2DthIFtjp}3ZX5hIm>K<8Y< zbud_jzPdIZ8f4?24(=#$Mi>V`BFpf+x_A5ba4Y2|UX}#@v^~(pD%pG*VR+)l3FcWl z)LI)J(~0`J#GH@$xJZ7Ru=hrDX~k>{SQ!0enfXk`z7u(OBH0*aP?g)wnSUAmvAXu^s4#)mE+pP$-Z^O*>yVLyF7RT{Vli3-Xjd zi$(8#F-%hA1bG~e$-lNkV1al2+}(BLu6 z;+D$xjdWVfnmcrpH9oX1v3fq1QG+iIZf9=a{qJ@kNyg<-2n(~4xJY)D+NAL3V_&09 z-O!~df35eE7<&tpw~JkF*6 zM-^ECZ1d?MB@&myX0UE#MB>$NdjE$&c7zBW`S*TxrRo&(4a(qlkq{z_IDZ7q zMJTtU9w_`1NT)MI_aP`;l=Ol1G&U_wO{B{n zpgDG-D+4_P10U#CgYs~3!^tWVS2g*eRdd~<7!q$BNn2(9n6j{Y^05vXhei8ECL81f zRy_|VxgaDQ@r9;n4bYM9iS@_}BTZLSeor(@)$0c|h(U0g)u{Qzq0G5df z69PDYh~KN~5i}@@a1KCd0x^iI{~^bwA%2GqHZt`ur2yjuJQ(!ifE3o{{Cfp5{?`CZ zBj(&}}Y47k>eU-R_Gjz3@sXhC6>?WzlA>$B<` zO^A*zl)pieqaIp;7)2n}7Zw(lw8sV_j|nOZm{16r5^v^AkL<3>1ZPi=yhpT=A|JsA zp*!6c#P*-zCm@jxAuI3r1A{9Ws&^6me}e#d)vD8FvAy?{neyj~uZ}SSSyU-w!frSi zvtnw#X`~A%1tdj_T=<-+{{;>r3C)Q>I}%6cp)k$lV7+l zG7umj!li)j3&^#LmQlbJf-C6(m&QLA%5K`7>(%HDF(!!2K;MNu zJFnd&8J7Cr#nmXrm5Z|6-kSFj>Jf#%wYKO(zawbNfB>M17bvv|>fN5+XTJQCe{(cqkY~2~mNB6^IF+Dy|>C9vLG~KL1QY4&hBy zrr9Vas8a_Q**AnuW%nQn-IX@FpwI7Kr+UC;fecSH z4F_3AYne~6hTUu$Voms@105d^8{xRjj z3ph%lV}$xXhvt8CX|Dnx)>p4y?X7_>VMqDBn@s@HaREg;F!g1(K!9DFq)qI9-Tvwu zpYe@wucG{XY>`;)@B~t@pAefPDIRSS=z)}1QUYxa03`#BR0#N-t2Dv9?SaD6KDV=6w~2JBs4Hd&?w|FOOL_vI zumE6gm!xTD{N2WS&`k$D@wQDHHtc_GeCGl6R}Re=F#Nv1=v{HF=FSj52$AyzlUxfb zS+{TB&g_9MGb_=|tWpkxo5-wjgYVkmCiN@xF+$_Zd2=S z{#fn}Vn#}_KIy+`IlPaWYfZ#IqpN5dU?UpYD3DCohq_?#b-@!$v>qPU z54*|wcposF>iC~MuvG+?!l%&1QH}Twwt1seYtZ%3;Vtu#FAqFA-@B*Gd|gkqO}#g$ z`^}sm?%0q1275U^U7hbMPr0#{Xz7&ok}^)OKgYN1 z*Z7He2`ZG>SJ5`;79Z3)C<2DVM1cWpxTp;N@PWY;4$b!MLm6zvMtR zhOPNZLAkX>0?`_hx&n_^qRHLT!5h0Y_-vIpUe5jb)f=JZ!MbcjV=x`$9FKsmLPcq` zus$!3XJas^|22?He54dv4!WVhKNf8*Xyh9wwp{O@O^c<+yR7@JZ}!{~xw-B;_;uIg z&bs=s*k9j^?ReKY@h`qIuMf~8itRqkq7>H~@X(g+ddzX?pBX!S*{?C4K&#Uqx46-TpYO4f)8iG@TLPP!rI|vgiaV>Q>r;b|k*sAkW zqs5(LO~ldhnFqEA)%>7(&%R{_2T|1cp~36(T|vBm6A9XUtxmBf;%AFy=*p#oV&j7G zO9hh|7K{(Tr55f7jpDVpdY%iua@na8KYSHoDyFBfcZmP{bu|1Ms4cgLh{vY^=}i6Z z*eYx|`$=g$vbv=+v+J%2Ke|zW;_hwnY*2o0qs-gp^$+xhyO)ZQ>dR72`fyQsSn(P} zGmz4aq_Kc5Ur^>be9h0)UB+kyZ405$H0a2Pn8pl^@MayCrjXe&US*1TIWgfd|->?=QBYnDJQ70pR3N6#Tqdw>I0e<5myd z|Ed_RK&A>bT){=PTXGlxJ_!VIo6jz1zCY~1DY@X{LuO~h4(bk~0e2Kt2Ui@SyQDp^ zD|cLU$e~aR4N5ouDV;+Rufk#=`#^{bH0h(VU^Yltor~_kTiBQ_VU4?}W}P=;g@f5A z1=4pRAt71%OG``IvAE=`NJAD-@>(9wws2mqU4gDSB)EI4TSDt{FbdOCK~!(v>7H(6 zJ3WCQ&$fo|#L3Ylow0@}s%d5$nl~eItnZexnS$FX@HJy`Eje7izR&(8uDyHlV`|Eb zSApPB1@a=k;UPGC5bGP`MikJ-YV6VmR=$D*%Xc#280&f$kK5~MNyAAAVX0f`jSifc zn!&)cf3LSR5KbBwwOEs?sI>>cpM>K=S)Rvarpcew)0P+1m;rF~=|-oGo$<)_iw}*> z9_KY->;F_o{|75y2w3?K)r$tw(T+3z_-g9vF0-{3A;Lk)_y4Y1ExI!8j+kZV)LS*B zoei`gtJr5w{U0DcOaGSdQy|NFL-^zXjbXC%ld^$4*n6>*4PBhe^UI<@4vH7_tix`49ExbCK`;3H{BQ!+*(P+B(4lCHx!MGg;HhW#P@||}J#bhm zgq94w9o=U4{%gMEa;cT9F8ptInL)dt51^hW)q6DmOV}Av+5a9vO)j*7<@%p3k*C6@ z3XBh^o$(J%V+zhgf3!x5b3+>XKgrD;x+m zTID@Q$%#b;A0VQ_=|*56(6mO*{;=BRyGMzQPoa8NKm7LJCqW9LJk26LP$-0CG-2VI z`Ica>%DF4ez4pIx2*80DHpF?8*PQQVoPWVB?NZsDRU4dmm{{RkU^o_J2dvLTgesY% zSHm6spTDpDvsf1yaTPg*%<VL7J@>bi_2=mG$bsDww1N~04dUEl^C*$bfFSnGFwi)Qs>QF>MwgYgbJ{t zk-=@tT^BK?6fi9GoPgK&F^+}HD#SJq%k7_p?-3C^wYfL!oLqtkifLRp6c%-SDuE?H; zDE~(8!q&v?Vx5f*0B6phRsU;7@n!HR$;OR)L036sv$piDiAwYOW z$==Il*ZaEI+EA5|9%rBmwm^pljWU-jh!NYm|B+n*-}c=%rE@f|Hd)Xmbd>)bUn173=h&si#(!?-mP`c}E~r}~)@1+W4GaNPDw(XkW-cD#VQ^EwYC@fB=c zHb6`=aa9oI$z!<+uSN-?bsCw%i-N6fvoVv3x-Yj?#0_TQzOA@`&R2Z(Y6rBdYIfpARG-=zRo<0j`<7HYk^vKp}?-bLjW)53#Y%(p>L@go8rOh)gH- zY%a%M!o=>Z9uj(AdTkuk_&#Of8@`6(ll)v;TU$qm1S(e1E@AUbD$|3j#6z~4Of|vWD z31K8WY!^s8!L5t8r%o+Hi9n%{L=Z5wp~|GkAA(I(>>mJM_3WnQr})j%zUTW9wxYi zjgTV5d7X$l3cCQvs>05Y12~?u>nP{_fR+Q%3FxMaD<;b?5t=2J0g`uqkF^$-^dO9p*-1r&0puWS7E0+jQi>Rnu!i`Tu)pS zCng$vHY&Yrwnr{+Q#=-ZC`l%p^Q*m;?)e*3c2Iy3j)f#0`c2=y65sFX11r{-4ojU0 z10+|0yDlyL?)+Rv@G2#nDvj~F2c1q$;Ap7s%%7Ghvywv1^Wkh^BN~!F0zj40gyY;0 z0v|Yi5~~5qh3Q`hNS6}bFHi2hGf%7rE)ATC3JO7B2tf=*o zoE4^v0Bqf5n=tDW@cYbo>{d(G)o0`tj?9JQz^ShS?xrT)uGioZg zw3T6|jA`h##G%7OC&2U@<=t2Ru1fikPpYg=sqqNf_|E|q?B@-cof`TV>k-fA}r!LzchKD9%_A$u;Ha&{S;bT`=Zsv zRx>um^_k?M6F6o_=S-^I>z-qcw!HSQ@4I7VXPwS8C{@69{G_IZYE2U z>wO`y-6h2Fv5wk2BZ6W(b$r=GpKLsfqScGtvyHz!MmNdJ^w`C^CMT`I9 z9*$4C9em20>{_15_U}RySfh8oKd>1Tl}qc!f}xkntvqkh6x!btn*Q{#{6`m(Zu7x` z!~2@K!CWt0Mx0%t(cJg-xs|-o&kwe=g|;6)8drf~Il?6LrvMcD=0>e_)djUg{^?s| zMcsaj=?=cNoEzc%JS9@J$ZR=cz=gWK1@%vgytYnfR9vo0)3q7)(r!9Sj^sRjq_5f;~O5?81(xlc%ea$Kraw8fLuwP-g$A)Q#+0%FtByP}` z{QFdP$@NloB&*REkyMYQfo>P{1CKo=D;v+FQ6ybX@Pu{i?DCP4ZuEaD@S5biB7=cO!0k;A7x1nxBnIoa5Nx-{uL8^g0t4%71*iO6anJ1EK); z9#dU$SlJ>v@NPBrmAWmBca6n9qP8~O-EMFuRy8pCpS}1Uo3{);)?KwaV0xBIF zqZMXx`}_k5*@S;rV=Zio?|7XhPwR`~h&^(Bw(u1HOQ0uLNejy0Z(1-L(n{feKm5F} zDfi!pF9cwJNvznIm@Wu20M=L};0d=~8!B>#)O2y<#R+uHo3`&@YTK|40476k=gV)A zs%4iyS{K{DrK;Xl?ztdmH^w%5GqFXo|-ZoRLZvKNIx3Q{L|$QR*btl)n}wCI!#e7d)GxPWOeU}XaI&i(nPvd#HlUVZO?Df z<$>}P6~I|#uQz4g0&JGhG>BNkIsZ@2K=5=OD5&00U??+7g?bF6+y#Lp4Vn8%C5Z$+h=CXq`KythQJDo<1#8)2WyF)^AY5~E@u z;WrzZa$J7&=+aT{c5s9%RpOp(2M41xUNmE#ZN?2IYR0dF0gGJMBnz{Dxc#(qEx6Nx zBc~dG-E{cLfT#%-{W9vnc6oMBYSXqHJ2PD+ij=BE!}&9!~rv)+I5`}K3XBCG_xUJ)#9$++2T5{- zdJK6IjdJ66AalI8Vq0?xBm~{PKB($(kzgXPAB}kI%rd=7kU&Cft3LH8=iAxk#-yh; ziA(*~&Q_-&Z+P0!4)0nZw*qa3^uPnpS(0ZV!otk?y~o#7@oD}{!i@~Xba;qu6) zd2Tdie`IQ(H}!BW!kM2Bt1*Gp?qF{EeO0^2c~ANIf%i+F7>>J9_Ink^391Y~)*JPk z+xN#$)!W<#e(p3_BnEB1Ca;R&b4%!HA$f#SN)~vjjqV*(IG-U*5GKK*TlX7O42q>6 zya$A$Jk34TnzZ=%5lHsW&SnOY@W0-M!qJdA*ofDF6b!)omtiMr7v04sgXZoE-Y4&! zx)78jB$x^oG#C%SP-*B-);gFeC`1H(g`y#7{x?5^gb-NEB(>LIiBQb1mt1cGZm<9_ zXB*Eq>;_gG*%CY;lOdnNyB}ufAzFU|v~7=riZoC7M+r$u=*G^h_w@+cuJ51Ep68Xm+87L-@aXg{8p~6^<>h#3ZrfK{9A!Cb&8&Ae+E%92=QVP1 zpVIqz1=&!0r_)e{RMl5AzJ^C_b=Q(QNQp_GT9J4UwhHWV8QdM6_k)D@A30gRHyc}> z$^*mQ#X&Y@MwGjaL!4Ci8cTI1b7Fh=Idv0mii1Dj?X1DD%RN*v5^jgrb*IEU6S66sUoTff!xPFyi^@i2DAU=!WrN*q}VHo@{WY*gV`|kG2?h48_ z{>`c?V8F#+Tk&2SvzU5*L|4;Ma&3uw8`;Ou2yKE*FUX$-JEj-7L zG!q%>#U*ff5=LYVMZ=SdKUZiL1G0oqx+IlK} zXmJr4e;O?1-g)>*e?zThod<`}IFx*n%hHC)LZE@telBc1At$?tf#F(`rIYKqP=!R_ z^Wndhl5EELHl~*Av6qdhx`;t%4tqRiCqxDxTLA^L}ph;71CdQRSI)v7MFClC~JhSe$D+`>>V za@X0njUNv&QBjEF^sAnCUd&smQ(;z=M%>_pc;~C*X`EkI1UEX&3}g1?<-hj;lho=W zYC+F^;hV+5X2puoU1+_Pr210+joDx)p5=fG=^Yy8g-(sNhWmf=nN)NSC>>p|4Yzl_ zA`*B9UWJbfHfq`V=wH>rXCiB7f6wVe(k>en9ky{*<(AMbhbVH0hE;D0S&^oPWw%W? z{yyAo3`u%JS1P*3hnIinNz7nG;)6uyp;3Cv->J2E#@bHAaTy&GvRLK?H+8vIl@QbU z`6s{M$c4NhX_@ns^6sttvVHxt9OH!p<+xp;I=ej~K|Zey>j#a-#-=i!F8;x;KkWSq zS5cQr2!0JbHuM*EfKuiZA zYG)T)#iy5ndUHO^MOu#y9?Rm#D?)(rxh0)#WO2->;rnS*hccfAoA#N9+Tbfq$)MWN zwI1kVRmhT?@Z&w6!`~1V*$2!E!LSYBaV<+YWHj~Gk#YRreooze~#*gey{nNNRTzb}E@*&JUMGQSHi{@MU${6G#uNt32wwdFC`*rV87iY=$IV*ujh5+10FI%C)%@ zgR4umqvy>oqg2bLkiFG0d`|dUe&hIFa-!8uXLG@h z&-4%E2Cgz0R-+c(QLG-&ycN^uskPpnKHzwlAt1Kwx=0N1((Et%OIE_h$os5@Eh1Q# zRyDknTJOJ|T%~a}3NfNk1EUObx8v`X_44aX7SxyW?+e9GUKUoM2aGvpng2c-v+0mG z%oE31a=p7@QhHqk_giv+Jd-g-&ZCz6A^eS1&NjdMf5EhWTcp6AjjgnNFRrbpWyKWB zxow`fH)%pnY&uwr*D0n|-YJq{dUiV6#%g6+(S60d{<>4xPy*9$l08e}@!vSAIbTZU zlb1i_4dHC83c@`tDd0$Za_bFt&Bt~keof8sC(e{sn71Es@!i66keE&>woJA@zjIDm zWGR>zm7O13T5hj!DE%@=k6MQ(rODZ2vWB0bh~?=IPnNMdmTFt z_n4-7GqO4h9-bM!`%1er+B{Mj^ZY&>ELi+glw7ykfR_^VA=q#uPQz8V+JJxX%wFiL zi{n{Q@+Rp1IO;l+qutPo^NzZ;g`VPO^Nn{tZ@+uw0d8g3h()*lA*}j~S@ieS@74={ zF)W6Sls!KaIp`Ep81~Hml6^-HvcG@ieq+xLDOX)|smVN`lE@p%(#;a-9HOYO4^mts z8qEGZB-fYcCvPLj!1dh9^3EG0J%5c8+C-zsu~kZ4XU0M;>k78gNcPTPmD`1(QQy_%#0mw-4kyT~FekkQrh@-2On?n2%pGpE?c z7HVi(Ia#IQ*hY&r?X0Gq7{&{&pOkF;h~uslIv=O-vT7+TWh)zQ*Z_eXTo#D|4)2N% zl;4tYpte>Bl(X6GO%k&01~@SX3tPE9#2+l`9^>m?|6P+zkQN>kcB{B)lCpbGY`M+jfFL#WRCw@yiQ zVId&{Zm4nzhK7sx{Ai4kpB7ujZ5h>wEI&TSHQB?VdTW#F>TM3L(wlVN02q%uEov#l zmEEWcH#P~d90*pa{cAc_&7ok!(5zMS>OSxfP@c1dvITEQn8d(M`Ttr+C|AYXkjOZc zc7X+UB7V=AdGywhG*ej&vHN6{zq1d?vGOn)_6jD!`AK3~5oA3qk2#*%avI0f*8J1{ zcC;BihL@Isi>tz!b*K(Q6p=%I_p2c%%A^hGqn9bn6B3#iU=P> z;fFr)$WO8bJLfAt+Rf~el8L&0s{F@8FDj6i?4u1W1~q*5X^YLm!>vVB#!p-kaEUgC z+<)St{|~nxdGwbsYgGJyEABd@n%uf{Y=~Zp2uim^L_k3flDNGfvk^zrYGtPjv)BN7p= zP^i9LsZ1$*gR{KQ=|`I!qR=>Gy}Tm!=k+p1296xqgjwUrbHWH$ANg~Ie|^oM=rrzT zh@r{Crqvk>_4UQ0lWlTfZPevKfnm$e{@{!t;@s(=LGuGIbK>iI&)q3AJTdFPSo%}( zCv>Pln)~5B|pZA@=Yv&h)?SF{I zKVO&rm%l$FGq!zp^ZYFXF9_p=swwqJw7X{K4!{Zb^LXzBlHC>Dz*30&!nRU;tnJZH z=(qCWctP-=!>r^e8KsY~0Ve+?ng7Sv|FdBKyZ`={`F8L-Ohw^Qft_LK7mN(VghHI5 zOtiDNG@=SPgaJW}kKJ6Dkd$PUMQxM2C&%Eqq6T@cU`9J9kx1-tEb*+_n5NTa5Oakp%0+pu^VIhj z9-5g2DJ=g$-#i6btMxV*+10>W+oJ3kc4J@(TYMTNoDego1e33z2}xwh)OF~gO!Ugy zbV$MY3WSN-jC`acZKFG0cKN50z+a8c|L^U-rT>mXq2%RLHyVWAWniS9lda-2mCNNn zH|-94`wq2O^f74aW~1$Qa7MF<_|Bnb`8F~QlzUqB-{zFdHD-X|y`-=(H6|&!&OdK^ zkITj+MGS%zDFCG=xVAw`+AlXajL^>=xO=q2k>KQ{Cwp90HZCa?nB73QY=Xm}lJ`S2 z(wVU_D|Iy+vWVM{((EAc^Yc3Zp3p5C8IdbvefC5I114e`^!`KdMgG!y&#k zjKko{c_4`ly{c3Nu1a3TL+#ou*PnCD*<`=5z%%)MPicvEuXgk3`D9Iu^QX8+*T7kd zFrvcI4yQ$OY;%j~v_5253`XqGYisE(e`IXA4{>@6`+Tx4^%`U3hsRLAY!4kO=(78H zt6EcLH2m@-O6@vckOxti^xfwi0ueuu77)YlHNa`(*+N7k%t8f;AwBlK+teRe}xQDk1z7jb~_6TzhSJt zn_-LAB`$66si(JlU*#6JguT3YG&0IpYh-U@mVsq1SL2^~Udx?-+s&o> zr}pBao_t}40o_eb;2{!;N?O{E_{^@-P-ni-bTaA#5N0TN+M@|ZD=$9v9t=(qcu3jf zf>cmEg8VwC_h))Fekt_wqvP)KRR@ZvoBM)=AF3sPFKF1EB6D2uQB-0iEm3Us7GXkw zPg-EO=VVlKjOzOliR7oF7b{l1ceqaUQ-fLNllMo}em? z8`V8eP0>xek;qEx{4K4+_6KE=ub#@W>bpBH?z?A?uTA7=I9S1Y&=Y`tbC54`Kvd!6 zl{Es9I;`}WiDZdI^7bD-Wo0VUyqZ4Dt@DoJG}CVF_vJ3v)Ly>k5j%oyx`jH;!WzTJ zdUM4-P+w?^7^2;GW87Zd`xq74fhdM1#=4kL?ENA9fy^0MR{gl#@o=LU!9^D3@m>aB z%$n*s2agu_?`Xe)FZ-OX^O3JC^6ENt&lbv2i-+&&-d`dxidXT%c>6o*-9t0A!+MgY zH$9zj>*HT%U#ElJ%)vHeEjvGm4{s|bTIXP`|KUosIqm5emmFQ+JDk0D#=yeT?+)YM ztk$`Np!&dO{MDRl8*dS=`$HeJDWcCk=A-A1dMkCgqut91J}qd|zA9_$;@1*gO+#gA z>S90*vYiIItxTr4$&fm6+$nw@jYf~`mAE41P@VjKHfCANuYRJ}K`#5YrOY1pe3sge zLEN#t>uZ;mgFfxw!&k9(+RwJhsPG7@735D0nrKS1?y67Pt zEwqHdu_xO|CH=08PCN${72QLcn_Sb>%W>AYmX>7$%E{0_hVL~V&MC0?i45_zTA%S( zdmAr%txa(=qFso+M6w2EJ4l(y^szI1jNS{@ul=<@3F|r7E$R3ffoYdM*=J_`S^@dU zz*Oq}YPy2raSQjy3Y8jZjn9XEQ;0j3^?EM0WxVsr$b9IOSAU|o2T~fT5TY3A?St*# zhq$Gl)+~ki60>L0I@zgxFK5+ByHpFEBX-h9e=gH!SL%B|F(l0vybYXECzIql-OZ>6iHmgrI;o)+d*9x_bdLDDRR->^oAr_6+I>Q*$um>}A z0c>c$GX@^Irt)(G`0OD`ao zt0^YoImZ^yuih2=VsoC^-TcZjcxNm;Mx@8=*`6b|*}-fRx#uPtRM+Um<`D^@r&dV{ zwDOMSsZ9u6gd~#VLjPt2Mv#$M?WZ?IZt&Prd}dUeb;1oZn894#j40e2pZPrt^wOA} zhhATmTupDjiuvdV`x47@WHflAY%sw3J7#Bh8MI4Ugx8PsMP5W<7+Y1P8uLuMu*YF)=aRF^n7ux=V*r+ce9EKtQLTx9aLmbaQjduc-+d9Ck{qsHljH_s?U}7KlW#QNvMr0!(IhDwH>{{dsp=8T9mVpP7y9KE-ns&V>JQgl$ylw z$B#$mmizkp;BBTkN~)@=8X6i(N+p1TR(}>yY8tJdF*-WxtI^lrKaKAP$hG_T>2WY4 z@7%cqc`y+McTBrhZT7vB4-Z6XDk~4KPvYKPw3~EShqo3km$?zoo4o_e$~1?@!Knk2Fu)8_E6(I#D+8Bjfk!O}b!Af9 zDITBs__CbflXr@7hG`g1jyr7LC>IxEG`I404i3p9M{ZUmW;($@Nc98r^8^U>$<`3O zyrBBJd9sJ6r>DPvC06EM!@&CbIz~!jkI_WyeuIopOG`@=6E8EJYHDhf<=}!w614PF z@0`V~b(w1}0;G+dAGhzxH_r+i`Ru9d!wc%YQhago@%oa)Mq3X^Y6=Pp0&`Tntf0W% z))pzoGu>VOaa0ob=&EcQrPpe2-{`TiAVWza!K;gpk7sU_M*z8i_-ThD?c1Cz;6i};_`3Yb zldxEq4snwfUn~a(gWMGtU&yNtUh|jOEi5J`5NW622QU&yuhH8r&gz<8WK@YGPU;0n3#(&we}CpQtKYl(dg#^G*4FUwaIq6NPK&D~ z8ShsoWMiaWSL}#BOsJ?zc++))0`_owI|dRw-82;y`MEecw;3B6N)VfYy{yxh!qxD8 z*b}T){4F2$oVo@C1ms{%%g4*Q-ER6diMUttXHgl3Mn;f#{&AW;so@b3++19=*LOvx zU%zOPdQc~tgdsml3GE<(b^cC({{-r%R*%~>{R_Z5D z5}WNNCj|usS65ffj=lws0bX8S3+qSzrNza?v*WXuOdM+JrlzLC!oo;h=YFQKKJ5G$%Zu8Z)71R4^2Zsj=4fVj_q%uO4R}J#`toIgNK$&m^GW$EpkB|) z;uSmbg;gMRRXxcXhkK7NhLT8TCRPljF**=+r3hCdP9nkf<=om@gN?S}ZnW)im2|K! zUAQzBpw9QZi*jfAj~0F7jIoFoe6jJM^Q9-nk*1w}z4il1&+nJE40{S5w^j-vIF~w# zV>4k*Omoo4tL7++8mlc^wm{+r_!Z1b1M#r=S>o_`IFAsL}S@)w5RKo}&5dRa`~vt0|0O3p$}pFe+2J{8cqFlG=4 zS6xfXg#KwVVbrvf-z?u1?owIQ=>9@T?r5_%HS;OBblu*{NhtKHkaK}o;6d-3mCP#a zFd^M}!X?P*P6nxHl|xaxvzNQ!1ni{ML%H=2VM&i1InpVT)!j*_12uj zBNL6ib$MLarLa#di)t1__8eC4`%X{~f@h9eKX0jA$eOk4zqF)1_;d z2P<~oZ-~_WlS~eQG6Cu7>7r`a%;*lyqXd;x;LdHzDxnPb_GwmmX=y}wcu9GARpPEd8yg#E=awIz za>iHQy!qp*5J(anQBxEu9Il*OL43l!0+p@%e_5 z82t>;8a%|RDW7Uk>mV3w+p?O@kWfRS)$HPkpLdFUvMWhX9|VMT=+%<4GSc~7(Yg|z z3u9)iIl}hMx8bPv)yUUD!DWBHDEkAjEGtrSUwD zF{H5wK(L!?Uw}T->EVhmF#`>-8V2W zuo{#|m>iv;bHw;#6etjNb#-872`aT&m$^P9Zb7yUU`=_c>pD1ORa&Qf%*ss4rmz>e z&O9}&%GlN`k}@26|9ww48S|7sc0@}4rj-5p~h9~L>?}>!`Tni&~t&_vnLJv6Y2L}hQUAtD9 zZ~1K-+o`QmnDfhJkFb23sq)Jq>?#e0JbeBg4gd(R{S}g6_W)66u&yb5>iU}QkKC@4y(h%`fplF}UxEhS2)NOuoiN+>BHAl=<9451+1-5?-6Fakpj z^de{2im$mMDkpKLz+}GZ}{o8wAA73iT+`Ub98w(5TuAHpoD=aMR zaxARt0l3$|UqlHEO2Ef0ds!_fEG+ys%zyuM+T|N#VbNg8Nj_I~OGeDQd#N5?beJasORr?ZkogXqorb)RA>9ex?jlz|9oB@*PLoZ7+}D#2L|(bO z*Mk9JVQEH6;Hv2ATEj>&|MJ6Mg~4r1Co#WcJ;U)Q#C)=Zh~r{DA4<_+V?IM^2{Ci> zlOn?X2Yi0Z#0|jw`Hc!T6!TgBZY!S1CX&;Mz67qT^L4ShrOJEGYrU536#Bjwhu~3NX(`(Ty+qKR=_<3x zz5O6^+YiLowfnaZVaSE~mAwu2s;a8(?QK0ajb$hE*?H%g#U4ugXU<`ov#iBUxw)q2 zCwp*LWJGdXitEB@D;|45ZMCyqZKq5zomlN-Ha>*-ICn{LF`}}UO~`%U*!*lLLxRtC z?n^=fselj8gInn_4)FP82=)+LVq)Uu?_e={{>q~oF0JKii_y&7=a3&Okz$uKR%I#O zeXqL|`Q}wMG)T+>nmmuUuAdzvkKKd~TP|mRz>&>Xzi=RuuV0V$#4_t}2lEQh6ZV2B zXJMKMWpDm!ztlPu$F-PL(2H96P114_n0hnK_tG8m!zfbZalllCQD@pEim~d&wV_i& z+<&V7x!{W_ECd^+EW8)6aIzFkO-A=QE>7R6pT`@Gau7@r5D*~Iwf_#}#Qxz5$TU%S}HhZ}*HhUiu zg>eO_H0^be-+!#o)!WvP0QB2@8SszH* z<4fcS-kGiQJ%%rW0rvOy!dD`MA}EC(`nK|q2Tk1H9(k^&cDQtTab{*}3fmmXks@EZ zI9?Pxo^z_ItOSxqQPj#HAGdLR(!keSGt_W6Qz~B9Q7)cMj{;u?2y$8De$RN3h78+) z`A1(|2H8-^1eA_^#V#1T&hT8M^hwXCvY7Yf>3UvX9swEm#$?N-%j?&#_*L_AQR=(|@P$0sK{(+(_JXdklc7e_wxMmrl7T8!pyhG!hs zp{mLXw-zst>Nt!#j7>}qx5l>g+V&3y#U^!7q2G{A$NCpJmn3YL z=GW3~KF7y*q6zL{Eps)?LCML<$WR@{#Vk#$S&^cSf+{p{MWA0O{$m1@usg3Z4V z&CbiC7WLw%qm#fLuCbbY^UOT#08uq4%{H*kyH4MXupaeSJN;x3G}OC>aRJb~q4JX(L)su8GP9*bZ64!?s`o zaB32By^)@aqdMxvnuZF8yKv;zA5~#7+3QBS&D^?uxFwViwx+PqGBLN%GLlLpfDp8+ zU#5|!EH8FeSP0ZgxZ#SKv9Z_Dv{?te4g4%j%)(}&Q7d^ji9SjSOZ?0JzT-8B-vr(n zB=bqn$NP+7i<)#Y5o5ER5tPgUZd(O;;JkZ@E_PD;f_-(~7|K83&`zUcm1*_a=j?0qzi#uakiwN~jbQZE^~I`;)V+RfJ5oE`0;i|OUGn><{`hK(Gi@Dj*c!YEJUNxnpfVB zS`cN;XiLS>(xxNri`6q^i(S}go-%dQ-g^Sk-=|(zC!J!bc%zQ6kJ`U12r^D2bscII zjE#zShB9p)nMJmo@ArE2dLPeE4h=nXT2r`KMNC)eROjx^hDR6z&2Bo7e0q6?vateZh2aqvk2M$^jnBd zO{J=d?(0+V#%@_md()4WUombkDr+vRYea7qdGyvy>XW-f=ZAxJ7&d6WIGXk74IyS; zzIw^E;0^Q}Dy}`0WSeynJyADPJHsDa=Ui*oxF=mKu)W)SX6vnRfl6_Zm=QUiGYX4I zO)cfS+|poPlcF~`87PPZt-Lsd}E^HV&Wj6SFjLUWBgtp9PI$Hz=)ply*bpH*-j4+DT7$_wXR8hj1za zVGWT4dX`v9V8?@$eZ@=a5uf1JQ`MF;r2y;!b+1G=ID+$H6(fRmh}k;ih&(%we(mY5 z5NQARQk%r_7+BwU7Oi`}OjxoM{)FF1i7GCDG{l)qKRSrj&?n`wRQ+X+S;gt0q4YZJ zYyKx<9$}&c%AOYLQ(hQl)*|e6Qoi80F$8JKNl&NQqE{ggxB89R72#3DYvN$>Vd$U_ zCZL|sX>i^gsU7bqXw0b+vHvMvEMS$GyLjtyfIUA2I4`5zB^epd7loQU4oBD*M!9W9 zvgJDN*znGNby!LD*eU>W%rDg;7O)(e%(O+3Il%QFD=AUNjZeI-45^slt{(nsr5a72 zRngphsnLQ~Gc+`udKYw;9QLb=$U7PP*tD1|jMCEUp`(-2VI06B#~!_zQlZtK=#S18 zuSBB`IrTeELq3^kEk2Dm@Tos?i4)o`t_lm))7i7&WP4`=K#8`QCqlGrQpju|xtuD= zz z0HwvKS#>$`m8+k>X5;wmFs{0~S~E1xM4))swr-m}JT2+_n`b`#9q^9Ka5-SH$koYx z@v5C`fhlz0wKMO078Ryb0#3Jd1O@4lt&-9JKm=J2-Df18G-Jy|P_R16bk5+j&ICCe zxoK-_7nj6$C6dJiUz+^bpyS@UH4aqz#g3gXd^JudOw4l5>!2U4b8EL>Gl_!`_lI`B z_u0{Ayw#RQrc#Qa8ZJa`1gMwgK`w;JdD#bmAo9@KlM@qLLK}=?ryuuhnMD;lI)%3^ z6n4T~4bGzi3G3z@Lq%KjRkH3S-^N;IW@pcfSHZFoS5vzfc?$WFArYJk^xe?q^>8Xl z^-|qa)TnagBM#c{)2T;$4mVdq`pc;f#7=+391IBAO%!WM2a_5$xFSml9x-x+6*cZ3 z9JERE4nQSgW9vIr=|e1xq<^Gt*pTECPG8+IqCCVhR_Kk;>jtMKGPnGAV^Txe*^Wk{ z#KgqXD`4`de^#(HoyRy;TZ@&5QEqc9f;n-Y_H)y`PJPUUvpc2j} zctApe2Z2)iO{llT5=i`RTMmulj#EV{_MulLAX9Fkg9{l<^6j0g&4dFmCr7k1f^K^(qD}qh!>GA(o4&4 zWG#i4l7)%hOan?LF_G+|&rhj^n9*7^sw#Zk{H5CX#sGvVi#(|O^bvtExv<;sqn%k- z#8k%By9bbqCuA+xkc|fexw*L^At6J(l!p$fK4^=JRiIgqcV>^)AUMl*DT@!rg!J z{o?#!@XSkeWy!9+yn18N~`C84)_UkSz~6Mu0uO6Q0uugvCMn>^p(aP-YXUl@$;hH=u0+uHaHXNH9y~kUlu|$|%USnk;p& z#Zoe6m$W&bNBWpm4<-v#jl&gu3&be(aXEk$Yl>I7m=60RGp(e%&0VgCMf!n+=+p}U z-%#;&i$0#`#5jJ~4g?TCu6u{UU9QasluZ>nb+#VJ2Zn?74KP%I&9rmmHPH2E-_!D|qd2cV5U^)ThN4wK1Hr@`xm|y>QyCPNPge z4O|sm4wtPl?Bf{=Gjd-&X9BVFa?t^df-0{w?N7{U$w7wlSWP_2 zTe-uVv;$nXj}2ersGt?<0uQ~bC1K9VHyE1lt|0c_JmYs*{!yL)?30u)tkq(2Z2h1e z{XiGflcINGuE@#H_bM_Nr)NRJbQz$`3H%FOT!?fe73IV&`wbWD<3(TJF`kfy2^Bu* zSOczDsK?boH7O?&n0spNvr`Ms-ToW@-MaMjt&=0@6I98Ss%Fzy+6 z8X9Z)ECrIVHK9ft8yit56htCu&aszud!j^W$19FS%W>Ky-eq%yftlHA?yEyt%caLu za+>>E0{C8bP7d+IhYJp!l)%A^OdbTT;VzJ4HoXR8Gc%0SHD6&Q^G@s%2s}&l0`}_v}p)2!1=|C z7o1#N7+PW_oG-|B@WiUnB5@I!25>JpRC6^}8o_N*F)>`0WBCB=MMgFK!>ZSS>R~QJ zEHuH}mNrImU3x z031e-p8$i8!K1(ty|3kfB`XP-BS2Y{E=K=@wIN&bb(+Az>vT0fUf;vQ#3W}r@W+_C zr|{_{_j3avU4SMCBm@q_T%&u{^s4hGemMIjQKlGAb`F3PUbb~fN+wuXPwl{Z*3H9a zOX?OZVUV3tr{YcEYFJuXg_Hl9X%tGxj{UhiDikfSGk1^TF4pqO9SGK!_buCX8MC(V z5^(-}FAvfv@q?#pevCc#6lRz}RYQ#wR8)om?&jj;R4C4C`?2V4xVc;1DJS2F<0lLH z1&r1j4Wag3&$%JMdjRMKcHh9~bk%9C?<0b*JrSTC!PMCurKJ}3YvM0fCX>d?JMVV9 zXCNxfk-?RD;K%!2zsjLmAU5%z)j+t8^v!b#deEcBHd3qU8Z>*(X@3;yM0*@j% zjT=C%rBqjQe|I%y`qb0g8yXtg&vw1rc4wwWzw9_#o=ruq24J~{1`jl9)08AoDZj9A z3mDvw!VPaJ{cXnaC37rhfL-qC=|NFXG#rVN3A}L7R*6(-7Bei3W!6|*TZ^C)(Z=07 zT~FiV*vPnDRrqPmY6`)UC2Q^}If`SYXawiF0l%+cA?0RDJK>CFQy@pGoj$))7} z6J};OYDE6fu$e1{`X91e6|*}Xr>=^lCyf~?eaQk&z{J4d^PA2Q6atRmzGUREHo@0SdXBow&JjrwJxh(nL?q#*xV9@kyn6`8Qf zZ6HNOq7>VIB=SGz5U^=!X$eRS4xovLMx8MWd<}As(|m}gZkF=S&G+BaXLoonlm3~R z0I*}SM27?y``!09T3XY9@jE=ylzF35bN!>$AE7R3!$^VIU}}zhyix*Z`^K_VCs^E- z?$zY@U@tSmA5 z1o>yOQR(G$F-YYvRtt^pckkZKU`6kByP8Hj!RP-)eACv=_A_K*xbOcBE_|5NU;G>5 zo}YbU?u~cPtBSB%3ksQfE2q`4mL5n&5w|0l{Ol`PiV7`Z#OlAE!TknISJw6wb$a?s zF=YHVKDH;M93H=LtBPc$v0Hgz&$~b1y%5~V$bHfyX5e#Jx+%sDC;a)KGlKfc{?Lq1 zUuYZw^?Qw&^?l>Ix*!*?{0#F{hp85Q;a@=##)iPse7*dMRvchT8$6F~<)Q(weXNxHB{r7W>KFJOkgCG_ zU36&q$j*b4mB`?TH;u8-zab75%eJ7qr>Ca`q9^Hvg+RxIlCY0uvEVZo$NI5^vM%ko8pp^yH;{ix}2C$)3?n3qJ?x$1gb!+0sQFLHSrWT zm6q8<3tQQ51 zR)?_kN{57^vj&jI>;}!}aXPjiy^26v`@QTfz@vU3^%SsKtgMt`K3->Wv-r3H;tGkm zr{`3PuT2cLCaP8QHX*Y&UDAd*U^$LGoVH{7q^hNmSh^+k<~n|iP6bpD?o%|^G1 zVNO6@bal#q)hz`M%~5Hs2qCWjYxBglJsv6{cl*7qt9d7TZ`v5Q3&uKxR)xvn?cjMW zVe^sIEFWie{i{0~ycL*{cN0H&;MSxsLg>+?pEpX%3)MWrQ+)5VKG1Zw3kQLgLkr;d z%|ICHIIcl{ho@8gMkijvE!C%YU9~yti?MrPtjx1D*7iueGOFWVDm@&N+;w}Rr&w6x zBV^p>pJsPJOsSZ#bq7}WWb7{BlII&-Ryrf&>49xjNR#VXx^we4apdu@OFCjF{e+PQ z?njn`-|s3n!B%>ieO)R~^9L8_9t-`^{Xp8mS8EL;J!B5?i5?fMgW zm@lgVyal`{FbGL}cBz?97#J9Kbgkk4Ve+3Pbk2T-&2HQI9DT_xu;HI|Hk)u+@zvw} z1t;B{PG$nJK=D_9!af1x7GMc^eabhHc3$YbTE+KJT!ZveG3v{;)nngrgh;^?$Jqf2 zusi$`*ig-s$w|~vBBQ#kTj|9^75)1CJ&iJv1vh#^RLvp?n_~IJ(Gs?f2rtB>eP%x& zyKwYm-!PXrT)C=0vcI6ReTwOKpN6otp|Lr4=S)nm_NY5TOScO7qw#7%*X3)n0ti<6 z(LbjNkm`0U-~DlUgP9u96?oHRadDv;-T;FSA~(BMF*;L)2-i>w$nCZMLH4tcnb<;Z z!_TL$=8{~g3Kv%i+`vDNbm4I6hIbOf-FqiK>?KgC?X#tHp=lCoxxp2^1fSGn5c&d-m(OX z;}-qCAq83Q=dZr3@z z1j)$64@T38jOWkUBMWiB(@q-j^uSHI`EWXoCyI=ym&DxXux)Wa-vc!5d_0-9PcRR#ZP5XcH@i+Mh5*tLpgIY>skv&*t+sD{8T20=K^=^UuS$T#J9EleF`2 zTwE9nCu|H9keuK>b31IPv$nqP=o$HC;(1D_^xUA)goH>>WGW-ZqGghbYQHuP|c;YXhd&)+6Go- z1>V>Q0I(gP8Q`}t$YBDN{0?scNSxwN%q`Kb0X9b=Zgr_GSUHiqd&!=j-)2ANe_?rZ zc`Cb=tBd2f_lE{w^km657PC$kwl8B7qKsgeai$E-)L1p?BN^g#GYc&(EG%4H4pEz< zbe$H~*2&Kd-{o2WExLE=6~m~kWIsdy7rCc|7Z%nq77EIcJ%A$09FRh~9Zp+doHG(8 zCMGH>QNVZ$resNjZxx0hz8kJ|gky-7(M{)iT@nK?2PrA3B_$OR6cx^7TEt+sIV9Jjuuv6o@eKi;8HqCTZ07%M z@e=TuYMWWFYKX1eq{j@iFam>5lv z6}eI}(iwb2p0;NH=kSQ<(e_qGEz`?|aIFC@9q_Hd)z4E*ni#Q&(b|&Iq`_BHo3!=p zM=;GS3K*1L6ifL$NT#aOY^qJ=YKt=icYk!|_tYe|{`;?c*fV3`QY z%Jx=R*%S1nJOzfG-41qF{nLSJ!E_q=?%lPrWAH9O;G?9g_$l>H>%83D8*PP!re(^*9+BWqg4!X#rbA2t{pA+6|_P*fkwabcB=R z;o-3ZkKzLMoqsep1n`yxfCKvabqevqk85?0_X63{GQS~!;R}l7)xX=>db4xUwKrRV zu093K+49AQWpce#&DkG9E2Z5GB)r>SV*-ymy*?+0u@1cAG?HdN4|z%#_U)>QHfWHg zNo7y|<5ABjx1#zxp&}tCSI!KwM5_(k2cTJ-cj6yDli;E!ti9DnRjcqe`H`ibLA%mG z$nDpF!{i>4Sv-wSoK|zrzpp4$i_jv%MgLVp1>xc!#&Qd{;$3EyxhZ+!pCXQS8_bLa z-oS`KyRtUe&}?2H^;`SC33`FIBKW8rkry;wa+u9b{^uIx)t6ig=!cRsQGm*w8qZFz zZV3FD1s9mb?U>b{xhcIYXLo|K7+dDl4>=MrIXflN;1OQWt#Ze{haf-sLRs^(9bN#>rux1+=(OQw+REyD7o^T!&rYA6n7q1?en7I^8`i>x=(XEv=$~WGL0tW^(xCJ4k zWpKX;Pir7a)RU^r7gDJKZ~k3rVC88K%@ZFp`_GT3CF#lDbNB3z`A?6q-!=2-kXS&u z;GgJUEtdOki>CgWb{uH)@JUD`fF`CIQO|h0f3}!naem!?x z?ZNu9BDa8h-R|bas9|>+KdnYzU}Cl2^XI7f1rXszz2H_Ht&=y<$v^D4yL5 z68p&m$E;=cO|S)WFY&GCPIEJV6CQn8&=E6Gf0rm7DFmMKi-4yei?KzEP9j0OHII=M z%C#)O(gIHhNZJFiJUv6)C6|&e{S_}j>oDrL3yHYvf7bh(1?ZZyvAJVhN1qcO^57>P zcT=5DbLXV_A3ZD!1DkcTNhqNozQ_arH1@mT%)~c6AtnHH`(e-!_K!H!SfJcuveHlC zD&dxjsyo217vFz$R&qM_mjbVd#=X0;5m3JKa98u?6}sO`s}*sAJifH z>hSOoIAmyhQ`6jBS6!kEkYcr-;;OG{^q1O!$4?D_P)N7ZD7V_^Tr6`x8$AQ-=`ZCr zw6c9}J#cv755X>F|JyzUw?P8Rr!$ke$p4TvfP&du=>(xAx}<*fSFbn?TLbb(AJ>l+ zJyO5_R}rXRGbM?RCKEYC+MI{R%K#gWB}s>|7TRbW6!7anEbtQKYo&o0si~y*QHLd8F11Ghf){Wj1|eQflBPYWA=HsN^toBmxBK`kw|Yk1tg<(t&t}0~TPmx%mjtI{PEsJH}2I3lil0Y}s6H2cy&e>3o)DT43C9JpYBQu~o?@ z7xg;%YcrlbVqs<`2Z?fLSZ-N$^wW-#KE0QMo&J`RDq_fvNU;FyaGVJyw} z_c&=@``wJGZf}7-05F4hA(6*Q{oI04;mgm1(?1@|g0PedVAy8rr(lrS_;?Z$k|e#G zgi52;9cxA{o`%VpJ*JZ*?g~l#X1_jlZcio_BjQM9&}Ojkb-uSBbKWO_LU-K5X(Vsf z^r);KKtKgs=sJ%YPj)Y;4DMqT+_y@wuxypIWplqts*1`(^v10gPEe8hoIt4j)WF0f zy?h26cCJ=;zek`>YpdkX7CcMb9 zy?K{GH?O;eNbrk^A5s z+-ur$K7S#@B&@GQ4D_fopl`n@jB@*aJMO_DNYcY?9@!8;_bpR5x9pWs8DwSJ4}f!= z&P7MqYD{IYQpuydpZ_sC)3OI3$)gkBQlXbsHPfEauLD7MDFCCJMz6lv*=x!nzT$ur zN~$cDUv*0@dV*m`@KDe`#B}%qzY5RK1^Bgxd@a8Ryc20G=-H1Kj_cICy`B&A#IPqu zE%kNF4pvN`NZbQ*%Lx2U3*e9jA_s+soqr&p_GBSUWwRA-7ZD8WcN@?5Ra}n*tiH_e z+UMrTM;pT|z(Dxvz@*x?trmW_kJy}v^1=z}U)-OW@TRt%KQ{DHT9RsO=7VhI%7&qUh0XX|7Z_3 z@e|V@sUIFT7I16a>snmAs&QRxZ5pFv9j(7Bzh<@!^O65Ef7qVaJiI3p1v`2ERqb}5a zlrmV(DDd;RSl@eLIu5`M*x;|EutrfN9WN$r%I4k|8g@1YST)I&odn8{7-+SXy70Jz zTy*;3mrA!^g-5KYuGYTV=R7rv@{)Z4AjvZ#e?m&Y45V3?CLIe}3_*<iLUvp<`~3h(tZSK2_Ju!d=O6;9p6HDpszqqk0CP_6=^1Gr(nhU|<)@=8E63 zX_*O7CJa=E`60%E8Bv9^_S?E<3+SQ)0)T7m#|1Rw83<-?+iAmh4s+7_Re0JFj-Q-W z6$L!@djTv9<*#wMk`{*ti3(3UV;HTyHU&sM9n5z%K$T1ug)hMD`cY1OQa z#Xz;QH}oDIIMfzeY=msu)f*rm!3Sh7+cxfXj7G4?Mdw;jzEsQ0wn!XYL>%%ppMRGS zBKVxBhyQAPuS24foS>Z)GM|tVn;H+gOPOXB5)l*1vKq9NaO8xWH0*=_=Ll6iKx1yGMcB1F$7^{+)S(*8&;Pa_*n_HRr z&!uA3)E+`BXLm}g733;!De+#z@>A+@9E22?l^Foa4CImo-64HtV6fQa=~~6SWsPBt z$pYz1<{LKND_)uJQ*ps*#h(;<74QA5=y;z;IT{<65SzNl0Hn>O}W&0iXgID6Sx)Y7>&#mnH_l-f1v? zJG`LafWv2J^Lk<7$$P-nQXZjzqryZ`y6Et;iv7rU3y(WN`|+CyAeN^BO<=?>{hRY5 zWxmhjFZC)tP0e8a_G{QCWtmJ+T(G64uG2dfX!;C?uFvKV#KsB=$v%ldaiu_ZRJ3tC zeK(r`;)q*KtNjxY~DMI!_39r>oXMSbL`4DerP0u;5zFUZ;T73?wv5ahaF{ ze^pF+$SXIdWODA~D=i&VSf~wTbvb^1F00JTm!Vg`#K6(_EgY}M-{ridrLp$Lh&C01<&MQgEEQ2fHJq|%>aq%6i=_b!QQA}>Y zAxQl&Xz^(eA&wL|`r=bN#4m9IiU5R1k`IDpSa4J>Geg;K+hD++h(~qmahUiNsE`0mMr$h+@&iQIK+de!pW+a| z&ucJviQ}5{_jflixh0w_AlIPo&G&1NA0SyX&2zWDqeB|<14L3rMn+mY`ntPMf432M ziyDBK9|1_wjwtw3t}+wLaLw@9qjT_#?kueSa6(6;RG0M5&8vg7E1)XLL6UzI{bp{G zt#-A!%G4K-x3Uc4p#YS^fR6x9cU9JHKrUkW!Hi?&G43%IRtAgn-#8b|o&TnK#qoBXKGen7&g_2eG^!LE^9JG$qMMwYF zC4-8}gbz{6FtxH#ZU$!}v=?g0?BSwm-=doaE>Z1J*Kh#gdk=%33f3E)$fWPX9L%*^gWK(@!`E+ z?3a3i^ArU5>$5>dt$LHAyY$b?Ky_a(&HHWmw33aFEftsDKgnZ$ZtmBrr9Z(>%J zLun^G*0SE!#T5X(2MyI~WaCa#pgjIIo8v@R^L(0Yg$y)0X5Jy=LZLhVbM#;wYF0<2hImgwPjad|uJ;cGKTkm~)Ak^R-n9C{>{StO_uujUX zXn&4I`_;A%^U=rsRAZji{ibztyjpu;(AjmtDFV7*_m_I!C#kBb@YL-8%pDS_ephh= zMx}WW&$k<)t;rPPizWdmvbYb&q^bfH)NssU^fh{XdQ zx9SYExMF(;`vP#{qP8m+_6keX2OSo*P0-Ya~>RG(ht7qWjqqJCo zV_6#*P80BG%(L&3PRE$x(FEJHbz<&ETzy}O$vM$O#v?okcgE@ag}wH=lWXCF>~IZ( zcyRC@@OasFRCeIQm2e#z_l6F7cjsN+gzu?W9ZzL*9OFU;HidYdg#yN{`!ZZ$LDrdl zsK#`JRm^lEn{`$or7$=sDX$b2@A?xyT?5_;Po{>%Yenz2e?%xsXD>UzR6}s|9MWM{ z<4deKmUXG4uGT@!G6YH?^HEuFVl~m3m)`k4@l>YGN;eMK%;M;+-=Bqb z_p{}TG!H(qnaQ5Uv77_kWAvvHJpr&uUkAUG55+F^sPSmsi|$QeWxniE0~1#mU+S0s zh1b(8aR{G_r6zkmx!TA1E{+X|%j0QiRR~pBn`u#5Adz<`KAf#B)(Nbdbidg#70*Ra z=OFz~GFkGaGwRp(0iw)S-o)uuFg51@z?f1A`9HXiF20e}Us|{*OuAf6;PZ)I4mU%L z_jm6Mlpp_;_73Pn2}|8V zJ$=N)?7ua$BVEU4s5kjFIpO)VU2$l?DfN`qulSnT72$Z=>Suf7tPutCCGzh!@Bz(} zUh;eDR(7gIjHyhxKJ7AZZ3@ndG%ew#t>1j%=o`t2Lres=A&4Mu%aQWgWT+QU;{4hJ z4iDYN59E=e>B$~zL$*$6HRUeVo~5ij{+tyFV}6yVH1k)T@!LJoaz z@T7@+q|A4B@L}HLa2bQfIa?=w3bwMcr6jq}ejhH%gNFnjp@Nlvtv}e(^WF+K=u|1Y z9IKXaw1X~3T%)a|V4nlAhSbf@`GQy6XF>iPpw;hmD9PI+0Pm5uMp z(FntxsQFJpxp-2s*DD8CtZ;Ykn~Im+BO1{u*b~Q-Fc#fAQQAoH4Qg7&<0gyDdZ{{X z=-RH`Id9-YHIrbe$r07IJjN(dydS8@glI(%=``*|Ql~)y?@l(| z)0gJ1JVJDWPl=%*uwE)$J-pgyYhK7f*5*N7Gj09e)8NF#j5qpmKyE?DmoqD-W|xKI zR#Wns`ra`I0v0!$`~_)L4BMSflBo7fP3tUARI2=s3paazCW zq$&f8`mS*KW7JY`G<|ETG)KDGM~qKb;rmIlG5&5 zMaEcXFfWusk?MDah(S4%ORLwHTsR~Qvy+;Ruc1x zV7-C9e?(-YQ+|BWq1oUVn397EAACy%iBG_m+n;PuWo;({Wi`Yoy%B;AFA}VrcEbgb{aFUO%_dBh`0(KVc4~F`VtNMO25EsDt|5IJ zFsGRQw)AXn=;7Rk>^t4gQ}j?sGy6Se1~s4ITSudMUmW7Src1jXmG;^^`72kxn^KeEEfrTTc=Rq4!!%&(>C|Fb@a)Kj;Q5 zjD#>sY&;)!Q40d97BAas z#$Vs}1VuJU%?9a{Bwnv}X#u@6@tkWP!cFO+Ih5QX z8+%hHfT*noz*a4|4zQx-u7?W-H&HBd^dqX2)8_#H?4OW9mG1pFG0Ym|LgllX??&4%1Xs-2pyJ*mPeW6aTW?hdvN75Mg|Vxc9@Lk3B+I?UCv= z^kF{4;^mz!5kVBugIoGUBt@q03ky2t9ik{5S#(eBjmg4lP}p!3f6O*|Svb8crSdIc z*Z|$-0HFo?DJknUY4(?LowESKgiSrF#?`|--&%R!M@>p9*QGAl;^^VS_ogA?N@~Pe zbnb}^uCh$H++1c#5xCVzq)=a4EUety)=9flmfOlN#@7Ul}j zNU5Ubz~EDgKLGHw`v=}tnq7*k#D-4$`_d1(a3^$x$jcQ#c*h1f!;mVj3aR7`Y#;5? z@XM>v2SYp4TdX(1THwEY{aPZAv%I?8bKysUcf$vBy+#^*k1v3Ul7*oDq`6@|1oskb zs)BF-?_Wpoxeam6FWY``?z?F`q3z{$PjG(#Xf6em1fIM|!Y)5s!?!IuO+HlsfAl*6 zL8Je!vz;e2p8bE`{qRv7w>o~_pw#zQ;4OHIuHByyj<_?3+kH{p^l>_l-!||v>mVkX zyI2Ix|Tta|zhz=Y>C*fZ}_Zz3DF66_+Iw+D(+A(%WM8UZ3)e_qqo&)V!L2W*rVx$Z@~f$Gy)O^iw2WpIivY&Jj2ix!^LCCy#uqZC>OdZ_Z~AIZIFpr zEkbu+-{Jc_IyN)=Irt+zWB}lqJ=wi&Mf5m)x$mmg;j0Cd3; zqym3{Ns@t$7U!hi@e z9Jj2J2fbt2hd7;GMJiS%=}B?Y64q7#wEXvhUjQNQ>=Yoj{|Xw`z1IJ`H3NThSpUb= zWH3Fg(wV;c=9bYL8}+$CMUa|43 zt2KsgLFeb^IMiOCwhYiWprlwiO;lv-3!_r<)K>>1b9oz^op1ivjl$EI{+=>FDK&NV zhs4AJAapP)0193JFRD07D+6j|!Mz6>dM;|_Mj#ZcWtK9o5?f31_j-}g!m_f#!NJL3 zE-o$}#ZWR_P(0;5Ag~U?m;t;K6B9u-*|dL?gWsr7MKX$r=uyM?DWJH3jY!r4HOL^T z2@u<46Z#q&uHg2INKtf`X;tj!&kA3jK^$j(#d{EgcqFh4pG>A@9ir)_B7Pp9#j_ju z^z%$gHmhl9@PTUgG{Aa+qRXznJ{DG1n?>!}zc;4%Nlov-R>)Mq9JrQ1{X3WK+}F9e zxh@M(QY+wrGKbIaf~a={MZNpM8jQV;^52=lASNDdA^>U=aUs2x^R@)!8Q?OL%*?lY z%k9#=#adOg)a*-+^@)jzGw_)saT;)JK%zOgmH-s=69nj&O>Q~|g%ieIKu3Q9Rul=Y zu>hsh-ZQ13N?o?wChYGa(Hu*E{(jEZ6_efb-nI@dm0=62q(K1=9`?2GZ^}U-DPpQ( zN5kw4^5;C3=M&LMQ-GqtZpJjP<&TU;R+VXc8mu+omS~zC$cG1Mq^}?3 zWM^lmgxZjR%Vpdh94e+wFk*xy_<43`4V3JFpZ_s={Qu&OGXJT#=HCb9O3c%h>XDku zvG4huR+Yp%YzQr39B$lvh*-@#T-Cz-ow7)jdp3IG^{SbUl~vA+rPPDEOsSH6P1hpz zc3Mg7A{yKevTC3InRfl)kLX4?#UGp*ZSb2$e+m#v*ttMkeRWz-<&wZX=2}li{#|bI zpuczP{Ksb{Ljy(*u|7RY%ms07P^Y1z@)=O7Adz={ZH-q*=EW(v&cb%4T5hx&lkW#g z9!#rh4r;oUr@^j#AfmfBe;4!qh9#(U{e5-;t~>EJd<6JjF|U)~;~EB(o)NPpUf!b*q@<-qp7~Pr!?QcWOX|QDr4(QvaGge@7Up)6Z}JJT<9u5ysHP%o+pk0F*K1qtjR^#s$=-#zD41#-KHBoI3~yTA{oJ4!x1Sm)#A4WcFw zii(e)yqv_ODE?U#9#DWB-+4pU+c5x2r~Up)2xM`H92 zBw(EOM@yY@?5jtwW{O|LwY{x)V)zlk2HI%=$qKSMuU@o$qDnKZyQLO`!&D<8Gd3SQ zZsZa~m|3XL6}DnFWAh@?c48SSKM2)9zAnBlZ=H8sS&-P}sJ+9>peuuk+;4)c;%xG# zIfZ1;$A|9L8_NG|Q}n0Ak+3ZrJ}Qb(wHWrTp8Z@oxa#_>eRU=L{OO0{JF5ZyjY4W z4~vVvm4oT``?>g6x4mUhJ5^+f=bE{srhwJQkaGvyrR`bs9HobM;Chia#Hp;z(s4fC z-^Ji&!@3q5MUu#lXMLV?m8qFliTceu0Q|j5Iwc#pHIL)$aA1-W|szDB=7 zUu!5N8*CXx4Jw}}#`!HB|I=hMsr%~L+MVDwTbHSif#9vD9jlHBVkV%1&KZ=ZnWeht zZfe}53HbC1{k|cWtjzbPR^tr0>V4k(p1wJ-<0_ZDqjG&Gx$o|D$YF|wFJhaPs2 z+abn_;y-F2=HbVn>=$D*sYE<9OYV?incfaUiNDlo>~I=9xNCs8v!%x^Rn1D(qT3?y zyF2cipXfv*OS^5|v*%ziGz=6%u)g!BSvGTcuT*bta6iqNEVG#*J@0Mpn2{D4p0}8G z4Hop}Y0`OK%ER6%%>quWtfNB$=ZmfDV7*bN{||HT9gg+?{|ze@C97o1C?Q0$vLg}M z+1YzXM7B>tB$Q;Y%+pFXaVBJE@0ESpTlRT9-#)+Jb$zevKJNQC?tkv%{`~RL!TCPl z>-Boh$K&zbxs@cg_9=kN_59Vbgi_B+QMYzcb#Xy~d7q3~VY+?}7Mc+_%}qZ00pGL? zYj^G}uA?7^2Xac1w;P=!je=aoHuDa7p7;1T3m>-Sj@kxXg8TbG0gF>rRjxp3cs5oqs$uB{$ahzbTGI!iek8#&N#Mco)-rZ=BfFz|Y;S45#47y44I;W8 z`y;iToVAK-F?IQXY6LgV;2$Kz@KndRPzyvHpbNXxcCRCPoGJXeh?onUD2Dhcy86zW z%(tb#xa(=yMFmc>-PatdxM@kSKKC5MivtV?5&Pp1>9cUQ(jl z)LV$9(7VGnpcC}ZLg-nxcJ9kz0^9x89icubu~_RJ6QQ(J9S|Bo8JuK})G0H<#b4p} zF*yLo&;hy$GU5j++qFQ98wXh$1FxM=t+R+aLF+6}p)^DKK5lGd!Njrc@$PZT!@ucE z@fx;OOFoyBIE~ejFZx;j?9LXh5h!s0B#q$GrBq^mK0Z)uYF+ya9dm%8A0B&O)jg;B z)Xn6rj~&6$e#s*PhUtJ-4)P5HwatR~hi6p5nbZTLdTzo$0Z7_ltL7Z*oE5C~F906>(F;@EF@@Gdf}{pSqs1<+L@xE^K!-s@H=ej06o zL5?8#!HR)(*>ZETRVt_TbDGxv!*9!}#bJHsYSChlt8|)y7MJ-+qza>d>#RGd#tr0Z zgF{nORduR8PXUZ?A4(q6Ad*zT8-|c`QUhbBg7a*)q};-e4R-X8m-}1Yp6ufNP{zy= ztec*ZQ4J@{Nb#`>Ebq>M@>~!~iw#E|o;|?j>i4M>jmFg6yiujFpVYePv+m>M^v#Z( zAP2UB#HdxQhQ59cu+*egAUFikulTsQk*S!f--k}?dk5Ec zuu6Nku468#%7rP7U|leY^VEy6-LFjEeoV36%r1-V_axn$E_rjlLIc@s65qWJ7BYe1 zT{iBXa~c*H6kB$kh6S;aPWzj)z;o=v%R!+oT&C=t+Gq1$`{P&sQPtgRQCw{OXs%1A z`_DzY3Hr+2anvlmhsb!ik*RS7RNp$yc2~!AH8jkNhG>Zzqwks!(F!t{5rnt{XivRclE#M&Rr z+ey1LEe+@#Rl}Biz6pF$;BMB1y>N0$i{u=41ME20cPq(aaK}?qQ{}FAe?N(fxVHbN z+y(dN&z^^6E5u`1W4%NKN%L?(v9|)WC|z9#3Ga0UA(QDb&M7bn`x2dSj;dUd7tM zVa{L8D|%0Eq-z~StfANP#=kbKZDfn&M{6qqx)j1E{pxotTQc}&OHUjK zWUs*L)f{u=-YYsp$-dqwedW3y>w!8c9bMT)o#51ch5UaDlvXfK6;C02>zj3Q`IjjN ztdbOES@k}JIQ~!?fji#E@91~EE+|Ij)13J3E_x)sp?BLG|6*fVdDM8j!-K|aK%o_l z$zA3M>@#1QIR{}{cr)k?Y3u8sG~Ec3Jq^=9expeZaJVs|9xrJM61a_i0$AuTz%p(J zJAs55XsQj@zh432g?51nTSq9MRxh%eK{j;b(L3%Xr;#!T1AugZc2OAZeI|capkRu; z+62QTXgkPV6pQmAxTB!2s-!9@dqOwmRwWnJVzKc^K|Y7zm!x|vBeB6HiSSB{$KaIM z4SKBOFDi@rl54=0oony;=RCokN=z!SnE?ir1;RI&2P^`R z0V7@maR>eb5jE`i-x?&{1yP3BKH6}t6W=)kO5*QN(N-4RU0!}9lI6Sp-uutnvlxHJ zXwLjyu<9@?21sfe;68o=Tnf-szp5Dj%UlA zg{yV}2RS!0Q@>`j3aTqHr2${FvMfO_2Y~Mm8$-bK1nr8VdyJ}j3|afHe|^`a78{ad z>oWbDpxXE@WGnE~FdctR-GgR;l!VK{o9-D_yG8!VvEo^V0u|vKNjux=EY?dSZy3|x z;9U@(Al=)t3AN|S=~eyF@0Bt_(VIA2C*-9%E^T3^%MrEA!Hy0BZz;!J7HLWIgvJvB ztYrY{=y<#YbPWKOqO|SK=(W*zE>ia$>SrZw*@{|mm(b?*(R+N^5MM*Nds|IMm^=tm zQs+ysL)^vBCviLnAfk6PCx9LTT_(27`0nLwkUBZ=m^d7Vv`YX$=^q{NF>(P$d$P~|t1tNIQ@C$(!1cn=e*yz6C7-_Sg{0`$sGar@mwTtF}^Dh|$Ys7AIrWt+E zR{)-{&H60nEGh%<^+8-tbwTx7SI|ETt>$WvE;~J;jq_Sv=LnG&v?UL$`}vg-&RKq* zfc!};uT@hxV;7z);FjEX7Gv&N#Qu9G*zt%$SDc4JGW%n;YB9SJzs{op>i2yMZ&!(? zAQKcvSfg#mEKvOypqGB}iSe6Ry7Y5p?C zkGPECm1&VDzNmF2899Eqb$4vR* zWgK&>)x|(5CMIZrl);t(8KdXxe`>oR02I;E(z3J%>Z}Al<3Egg>O0c(?gkzcS5;$f z#4hY=WO=anHqg7jAyEwMUVExLw6I(2wQ{Ujk~Ca5EIKhoEXVey4`u2j%>3cn8600W z#A+Zlxp+ax&g2KDdXTOFZvOo#`S96pVWc$*{-0Q|&H8n2mK6a9UX~iRjk3+WlKnU7VlmtL z84J?5yi5N`h{&>uiuEmhR^qaHwk7Smb|-vhRKIS8P`r0okdviV^{L@PSNm{Ir|L6P zy3WS&c{1G&NgMsrEBKGuq#=+HC9V)OqA8-97!8nLEYChrVK^keya56%N}4qu$DnJw+B? zvk3x*HWt`;0b2tnyqS1G&4Jk>Q>$xvOyluy;uQj|K5pprr7yL!_ zFR-1E=11I+KHvYqYXvF`p_DU}osIop;`k^pamkqClR~l(botsN&`Cy6k%;*0Rhr;d zF@Jy=?n8Z3z;4(XdRdSxC4kr-8r1#}^;Eaw^To32JK@&LdCJ(*(Q3p)jh*?RqxbQo zpkUj_i}|Eb4xf?sW%@*RDa7V@e@l|I7co6`D5_u*CV>$-F}QL+PqCy0ENL7)K8X4H z>=q><{ulI%-5eb^Aouyqsrz#FlO|vZLqKr%?LzyRuC&M+-#diUbzDaw8n1}2+vO19 z`I5hRT5%6=;Wf zE+m@McQ)>V--I`=R;l|MRm>`9U#gD(0N!}=)q~v?4|pYNN}_z@gfaB^frK=r@P6oz z{@``tAznvE$J$-DNlR7EN8)q$pl(V{_3tw87YtddcQ43ZF6-EH(p+!Vt39=48XP{wJMM!$)`UzJ(4(%P*!33*X`n^~ z`l;2Rtq5wV=-6>`o=_vo8eb!ocduni{_-D)A9NcG)b}bgRA2%Iu_dKgn-wTptw(&f zZC%J5mXo)|m0x~+I4tjeeS+Zbv!8tr|*C zs_k$O2H|mX-EZg@oq&DKNS0Z5Wt>O_{{he*Omp*xqQ_^Q8kkAWvOJb!OW!_!S(;Ko z3@U7f)0z(k5)HZQzbi9{YICNhW#*-2mZS~p4>$Igea`#KR{GtRndE~iC|685b4TIh z_%=_eKD{-rQ*|xeRw!{QEwYlaTCCmvs(sRECD-;s=?`#kv5zj``fX>@Om*H}>Ab5D zz?fz6=%?Cz%=e%vkT zc3D{S_k3`*i%_xN*GpoEf_ABD{agJB5USOZswZ$$SC|{im=RwRW->yawX0rZk z;uvS9bJ?|PTEUk%-kgu}&K&k2*CE&f#}YNl0Y12rteb>CuECmgvP(K*HKlN)Lt+K6+mO zsdgLH8*E*js?$St_8bXbAK@bxshq=zU5q(rlgg#d+=e$%@f`9G^3&5Y`NRiwq6@$l ze4~YjW>j*!HauJs6F{b_l^2|fAE)j(h`y$$LvWjg%5XUP?A60aqb7+a5=s1QT5KK) zKS!EWQj2WiE4yTnglxc5Mt{q74C>Y!lD?gQ40*=-NfVSkIMA?;^}R5xYQ7csJD;+i znLaN+@&h&Xg0lX0xC(E@EhPr7kq@7@+A}quxg9yaj7rzdm&T7+A*psB^e53KO8@$U z$sZr<0_-FwvJfU`sjOHM?1?;S@K>yMcijtpN4pLvXvy#&(G-cff-@d|oLPVOgvzxc)hSxw_TnKoW-~`@~Y|VE#SX(2cgg$FM za8O_fj-f8=uM`J-i^aYi0L`zJPrs)D0c8*wCY1yZSS!RCz~c;x+IPci2-W>u z&F5WAef@C1{+0dBy*+`(;IBGl()gKDn1JmAX$I4BuSW{6RYuYV_$eC~iysx_+Vtko zIJfwnmAzgP>TdUiBz2#**W8_4hcg&6G-h3Ldu)p=Q19)-*m2QZ#lS1x3}lS{&xJV7 zt5`KIkSKbvNCidyTsiDtn{+SBKlWJ8ALqn+6g2!@fp*}v`OOTnX^yfYSDr5P z&paNu>~n_h#Z#*dc8ieoSz-fHo+BD z+ICR?B%9>E#JS3FxEqJ z2O$fAyc~JeM)x<3i7)y0*a1L|6GV~IH$1F{y`TQ0Ylv(4%G5$;60+;#2rqzuxea7} z=)DH6HtUAA+h0H;=y;kQOX)qzQKZcg1-;$C>+Vgtr9yv0pKfPXfIbh>5~8QLcCD|s z_hF*YeEf@_#K3Zes@Bgi*VR#~7~$LgO)V|fd7o_VEcCyvfdmmpqF$OpuNb-^NG?Uq z%PJr+u(Y!}UhM&^xF! zeC_km{~3c1>xhrt2Qe+^(96j`abS-cvo`>}rbs7<8tk6rS5F4eT=zM0EE`$b+J{jA z=p9Vgjm=)9kOnU*spBtbekVX!IQbfyX`V3lL-e|mfKbcYwM%P9MkheGkU!3DxY!C|y69H@gpnU>&jl65kGJ7Yp^cZTRmfC{1&sVE zU=~333L&Sg*V5RRr$EX8&InOMhD250d*7^R9BGQ-)Pwp8lH$^P?@faA22$xlI6eGj zU1Si_6>D)+=4V>^4ZCsqB2U-%>TsFE1R~c3i99f$0|hcB;3$wY_v};Gyav4HzF?@( z`}lu_o>2+sDenb`r5M&_D+r(G7X4oA&x>m}UmCAI1R?P|5S9X=W@0p;jo6=9Wc>%! zS|Cz}p5zlW5Xzt^Qw@vB`}lxQSW8F89VE?P(D0yJFkqtC{3(H=y{y(OPIGVH1L-$1 ztbouJNch?SLICnmI-$sf1Uq}Fh3_j6qWpsrT2bN}uoEYt9iG^)N+Q2T;j&3lr9A*^ zlEnd1bM6j49{wRyYLH(y}wQ>B71?n&}!@jY(%cX`d?jDfCt z=GcK&A2a&C=aLERg5h1&{pYpkBW@re0Ytx$2O{W{=yBT41|e5m zcb>Amu6c)H((;``6gk@0VT0yiT`!h|$@4RRG5Q8i{FR#Nu%p7EhLL?QbVb>8;h2=x zGRsx3n;-DDUT_qdlks`j9R}K)x3dPvQ+XuJAXmT;gDWBO{}7iMpWsh|<>?Sw$~8we zJTzt=^o*RX)SrK(qG-O%eBimiW=Y|p6Ee{$GZEue!M@j5BLPW$Ysx#e)>ytTmi_Ni z|A}|-zUa^8JwZ@XCZ^%ir)N+$e|YkdR?V8<_rA@euIO*Mw(}dSF5A`#J-NhsJ(e;J z-aHXEG(xW2R}gq;J8pyRRB((~nT!kh+`e|W-rkVSGt0#&e$Ohm2TQB!=thO}VH8G5 zAi|@-FVlA&b3p^^)1iDa0CpdGe=ZILVWEbzH9+znPINN%sRye6mNykQr6E>r4foi}lN#+uwtjyX)* z4xcX(8RRvTk&H>Hf2_OUY`d@gjKa5M>z>k%v?a^3&+Yun4^y2Fl5lPC&-`!(h4g4% ztL|_{sZ?Ubi$I?ZEE{jmC+Hn{Vp0N;aTL&7q!o34ith+17h;}Z98Lp}LrvXvB~X~r zL3uY@7LqIWNfAj~?GnliruE)F^oN9A>IvkRABQk;kdunOClj@$Tpf(&v6u-W?Fn7) z)1kGzgg$EP<|ymH_ZRx^nbp(NHhk}W*YAkJr%8)1e=_m}*mrs-oXm#@*R|q=&nzx2 znOFqw0+^(-a`@EZ0C+?XHaX}(BXd8%TR@uW2}-ok>pKKBKL@zBfu)w=i(LYys9TMZ zX4;&R_(qhRPiR94FKp>&k5qD5${JBJ2^_{rP{v(KHLy{M#DMxz_i(w|^0tC$W|5r7 z3Hk6)&eINgmhYq%s?5V&ec1ar5<&|w_h>n`3c@vVa`M;_l@w{NAK zb@D4sH#TC#k<|o!tFEbr5J0^NT6QLnjy@|Gr~=>zsLn%sqJ1=AF#0+sn!kTAI+4nl zYfxvYi|w~D>6Z%@$E%sr0wT|gn>|EC$!Bz;+H3}<3c=V09ES1lzefWZuh^#mIO>I# zmG8V2whmkWT4mZ<1)^3I)Mt#5t9Vr%WUljGaO z@Ky>&zaC3i4*ELCHTct)4LUEof0tz+F8ipnT;IyyzgZ$!#=mPA^6~zS%#xSKm=2>s z-_p`q?xi{h54&qsPG!5b8Sd>MOLS!x!a!n*g?9p5xG5P{$f%2j&*v-kW$L7g;yZOv zR(D0>XYAd&QdrxpNeA?FNOa9JR;n+>jeV0rfBBB&g5rBSDXk8oo39P%*XB!)Cvy4U zd2{GIRxZT5!K{?(`tV(Rf1)61%|EHd&mNVC(tCRp>%}rN8!J6?eP+AzI$ais9|_Pd zHgP|WCWlf8sG5Sfx%q*aU;aSX`tz~$^QBR@3wY%TI0FLTm-a2soxHd402|oi6eNo` zDmK0E8XHT3p3-SZSlV8q=<`(B(3g$ECZqs?%f=!$C^}))Kk@RnmY7 z5Z-9ld|13Hb_`RpK7C!eNDSB(GCiN!N_m2x zeOx9>FMesDmo1eqPK**T@~>Pz8qhNc%xNN{7`jtEE1O1KIAB${ZcgKJzK)Ic$ZuJ2 z@W^_E*gw_cpPY%4jzVq6R_!p&H^Q{|RCRblZ%78lb*ZYS@*9k!Cu`mS5#QPX*_Nk&ioNE`2WEi@M0H)_wqP%89O(>g`1GgoaCy zmo>x)xA;xHRj6i1;-aNZs2EixovGdh?e^ALYPjA!AirPfok7CHf6=*k_mM4U)Ot>8 z!9CC99(%P|^^mu=Tim(mt=~)T#Vmovdw%}9WGefp6?+-iL2DHz=I6s(=1LjdkBdf` zbq?06o;X`PRd{r%F7Zjl@NUxRLRjI-KSBwZdpK#SyGK0dRNq7NhQ->d(yQui|9RV& zD!81QP$$-Y;c;rg7aFF@CJP%WqZNANV0-q;k*)z1J}Tj0j5BKhnPf1$@-BntrH)ec z!m(uILrkL`82d8Eh(V&Vmm8%W3z$pQgQTc)L|W25RkkI?-!UrA>+%@n5;*6Ei@tne zyWy86htr(f6SsQy@q4Vj-(0HCbQtxNEmlIVh-URwL9aBnqieU_US=)RqMfyJF~0?q zck3tizI48tdZwO>rrC^ko#1s!9Rkh2)yg#2zYZ7Qdk$VX?6~yv-d{p@?(MvkCUary zVnHrm{&-$_R77pz?om=KKNhbn%3POShRl0(S4r`($0_rk?q@rV-_E()QcW^K3*QU^ zBp#ZX&4Nz0GqgA)7{cS?V0_UJf;;8OU?Jy9fBxETQnnk-h<3s2Sr+Qr|JrcTgU(Li z<%kq1pFRa$B~z?|Y3S;sZN&hMkZ)6OYf?Wor$(ss3@Vns5K`Dn2++KMilycMb8bz5 z@o(gYW%0_zYR<%$KVMZW6nD}06m}~K9ebXYpn&e|e+1qDr-W%kpnBvD4hsPtI~H1@ z728JxxxYCpTO~l>j-^2K8if=p{?OAdbLlN#jy#p9`_^o};qrN5opU^u-X?BMcMdL% z?3QtB@qVqp{;!|iNa()mQ#&*j^wGYFTv%H@b12pOOYz-EiWAe{9PPn(w1yuE45JTI z-%b^l7;YO3(GBcct|;*3v<>Z28VY^dc=Fab4-+0a7;zrw12Ps5hJJhlCG;G~;rQe7 z;Bi6Iy9#R26Fyikh~-!MZ+~+R=ku4n2+!}~T%O&StEYc^~I_ zCoiSjT~=!NjbppwEl(b5q9%w?dF*!f+qZ&7E^cW*pJiNJsof`?vP;mv`OZ&Qc*x$B%Vm<< z;$VycJ`Ktv)-Ts#Q~``$oa2X0G2P$W%WX#XI6bs5hYpjD+PAky^-C()TN$>)S+};*7Nh^uUzdSFD{He zSN_~C5i((^9+LE!=7u-tdv>0y#B6?{tY?yY0NC?PUw^!}mlp&QLA^1lqYP>RAeR50 zUVMBs06J9vQ8_sL&&q-C$AMpVayKtt=5PefSPlQS;B$5s?=W|yHH|GfLw^18t-fY$ zOZWbWHXXu=8D^mbp|JV z9K1sTjbFesl|U_G z<_KB7KNaadU%{*ql60|eA5cjHA@U5*{*6x5)kD34BcyOFNs<1%b9MPS$-ufom;(v! z>u0?U0Qzun+RWyDZIi}k=)nL70OcURGDNUyR#pojI`IU33K0GQV9lR+*WC=E!w}^ME@L)=+{ID-XJ74KbqF@bJAUgh zLBYsp+oi~#a1zYD8Ia*Q1=YL5Fo$gy6t`;)*P+?21ho%DKL&<=#EhRl z&Ey`aCQN`HH*)P1`ff&GwE<=ah$EeErp-u+vyT3x^M8G>3Ke5L2<$-Nn;N2TS(e&x zXQ9Z4f8k{@yePaY>RUhfU3f3a=g56))i6~UejQ%XcG*9Wi0+_S$$Jw(OpoZ10t%wZ zZy4?&c9V|(rfhP1)$13DdHc;XNB2AW!$CEd%}*FFjk)LSB-CS}W9AI#m}f7C%(@zV zV0P8#$jE0-&CK5DiQH10wBqN~@yA7K`SDM=4=pm0gK@4j6idL^8)5_t3AgGBZJljL zm}OJ7S_w)zhZ~Lb0y&&G+3X)K0Oa%%<0GP%AO7cIklgUn(7fY^#2aSAG$3clGKXq4 zBAFJ>nxRgWmz9NqJlLiKDvgGKL@_TpA3d9H7RtqG^Te5pN1FR)-O`0GJ%)o#wZGTh ze-5m!n7EIrM0wuKgSy_!cIL4wW3V`RVy*nvBh?f^_!|b>IfQfo;u0z{(S78GQQKAY z3Ulkz&a9IWKfZbYHjjC}wfbj?eYD8urJTsi6s?j!&OHSXgoa-S0Es&?MMt+Zx5NS% zEMiVGvPHvZ!&7zQ>4v9707rx4dE~AFdC|F~1@CpEzE1Rm*sC7oH#+=ZA|F z`L;}i@S1OiTiM{hArU`bP(tR5iUEjG^BJQ3`=-xY6ozcUTLhvvJrNa8eSH9q+Sg(Z zKc<*)UVI$cYoqrWIAf^bV2gOiUm#{~w90oTEj{9O!bTPwz%_k$@7V$Gz?sYnfJY34 z|DyTBQ~uANPww2tWthBma-=Nx3@Hj;lwmm6ed$^utcOnTC#RzXd@uhy=J@}+pJwvT zc-`$E_*PFX0M3uHXYSrL?Xeieo6KiZngO>She1I5ID6#m_ipGuVBpm*6Y=gxev@{g z`_zV+{@2Lm|Ns5eO%+Bi6z6SO9>Ab^CF+{q&TbV0-$s>-NE zrwSpm#Qm#yZnTe$EvS z7I6fp7Hg%01psIn@MQS>C0M8`Nw*gm3kqFblDpFnXwpbhlgrWvVs`x~%(Ziw*gMP% zdGNup`_8~d7kVN`wQi{{EV(pS#ja;fV9{nTVwXETYA|;#Y4Z7;j+$c#VjxY=o@MO3 zo8o(Yb75_K{P~}0Lz+yweUakz;YzVDv=kE)oMlZ>pBmA8@Y$Pm7w-5HtylF0bK!F7 z>yN#pez$kf+A05ez;mN=WKHFUM2x7DlF!67`M#Tl<34}0>F+VvAEz`3Xj;Y2%M@gotuiRb(##-3b8S%{wv@KG?XP)!m`~SFj&PykqeY-=LTJc16T<5qX$J*xa zN5rp%lfe`ZUEt&NS~^TTo2ZCME&S*Dbo6o(8@1f*^wiQ(g^9@Py$DZK=i0g@`y6jSJ-3g$MRJ#xn_fb}gC3W~_i)n;MsSkW zf5hx2Vt?fSJ?mImQ>J6!rl*(u_W1M~xZwonRa?RbwC?{+YY9$NK0cFoq)E7}jl8ah zK#}9bcPp7iJK(>X5=$zY3h7)tj5~Wh`1GsKz*oOuM3-8a{pn<>&9|~2QAOKC46JEX zW!#5LV*t{!XGkOuS*LhB#YA&zd+uS;A*P=s4k2DAhXC=~;bM6S-`1$#uREM4Y=ni| zQ5PH%6uUqg7sr_y=6De52`mz2jYJ(()hr~BxGnvvOqTib1Bn$YK`LzTQB!7KbPwy5 z$fm_zE4Y7EL*&Ki1xVo2Qe47#XyWC#-r@;caTj0j8xgzI27gPoff415!2Gdh^jb+8 zd%GH>wUwE1@ES$leRYf!K9B}nGX{T>2L&hl^7;-6Q!&a|@LB(20ZgJ(LYM{m@U%{+ zUF^XcnVftuz4iI~+tnt=ach(PHELXa@>5cI4ZgoGetF4`QhA@mmCz=-qnqUm*N8)q z2Tr1SPSR9}&8*4B){Fg&u0pY0-C3n}dv&wBjBx%bP}F`h?`lIY)@^F}m{)|7d^}HV zrce9yl!Bnb{pB&+@y-Ff$hWJqt>5_$gv$w8<@`80yznANQ5?q)1(<5{(^lLMp2&bICbx1k6+kpgPK(%WWD`p zX1{X>c$brn5VTJ|uTQ)Ox|J}=cHN|o8;Fy`*kNR{n0bWiB5JgTmpKscM!)!K_E-*z zQM3!u(37?M-#ig8ri?qN0B!*eNGe5{m24Q$(~yOY!1pvleTm~t*zN|lQrxHcBj$a4 z?xCfY^LK1Ed8A_o%Go3AApV0L1S57wK_3|P0Y47;Jhw*FsSfKn34fgMD-5Zo!W zkD&zv@|?s2AFQTJvVYDxfu`~U00lnUiD_0xiPHsti+>q4y@@6>pN~M+RVNj=Dz-08 z42jKJFAl!Rw7v?3cFMhS-^ai9dmd5;FVtZ z7&4Ee(-F4(IfXvrT;htbjCpRImFsr1qOeG>A|}4`F7j7COIx>=1dM)t*KeN-rFV7< zbx%jc_)7$BTVQ^5<)sXZT8a6V&P`^Z=u(s!+9z(oNuR(K9}u|j5Mtv3a`56J0^APG z|Fv_tpgHj(z=+p7Pu=snoU=@&WO6gOJiQ-Men>aFn81(3>dv2jF>js(O=5nvG6UU{ zstcz^Jy{eEwE%~p310FE9NFu)Q@f*7$tHw^{8vF|F98;BK;|gVR#dN@`%snFeQD%2 zo}UE;4oX7kt{qOc-LXjf|;xh$|%@*GthS-_9=fV+^@tvxHv|>tTlJ> zKY3;=qmCsWCDPb}aV2E8{wRZM3n&h+*|1Vd^@w=(-YfmizFGBz!s#Cc;Bg34X3!tp z?A5AWH+*r;z&~pA;s5#*Bf93~u`3*xc3X^?v*K;V7dW5bdx@ap)TKwW<|QwQs|w3d zQ(K*>Sj~Bxr-Y|Y*;M2#W4ByWrq4D-0G`qx4EatwHhYKfn>Zs}YX)p|FUm@lYI)J! zPqCQyX}*gI!xPw|UwV0{2jsfoJ5BGv;WC{$KHGwIuUGoCQqV%xr7wM0F=hdr@C86< zXHuXHP^mJ=+Y^a|FSufma5Ai3f+uj{$UZMAHWb(~LK#jW&bHJ-1eq@=cMA-V+`VX+&GH26)tz<}u* zX#ab&k|Nt~ZSl_pHYekRL>{5jT^It&iMDo3yE!PyL3Q9hu*5?~__(ycr2%?lsPI@7q_4 zZ&k{`EjrHp2fyv7v6WGqZCmu+LL>`XT3P}Ejai`<%=#4t01CN5+>B~LqXe&>0P1DH zZT>>{&L|SQ*N=6S8pHd`w?{3Nf^*7hbpNK47g2ytkNm$Uu)(5vvkCmy6bwD>q*W~(eRpUPJq$PN+hYg)q2WQoA9!Ug_Z48{jO(W+fDV`FGf&wDCIwZODHL6dz6l#7ccQ#rO!FSXH7)bBVXC&*Xe3no2rV=Q&4yWY* zY*ZznwIKm&C`j6ng5fA1RIO1pt9JwNs@|uBaGk7r*jtA#(d(mG(k|?ruIxXip|tnE zrKV0r$XtK5HyH>h=6nB5JF_}0f!R3t=gxvY36RdjP)i5k!=^`v%9Vj3BVt@1^w1R- z6P>I%vhDg;CMb}vga;9BD*^WBU^ieIcN$*%Q zzXBv4iN!)trI2W(tn6}rI#Sx3gn9p`{NVM$H*Lc6Ub)luP3%>It;U6d-}30j27su5 zbFmhmQT0h@K|y(y3b#3iu=IGeo5wSIY_0%q3_L;C>7m&{(a`R8GY}!<5p1ZBL z{4goa)8#-W%pjl4ZLj}ugW>Wl=@EOEmDs>gXYD~nb!_#^W%hIt zs~}PObALTamR|)NFJqhO)`uMPi@vq&z!ZfFNws$8XNM@7!@|zhNttu`b7jbh(^JBn*STnx*9y{${O>b}JX@ z$~zl`a}Z(K_gX&jwL0V!jL~oMsl0{f_=7i>@!^#S)eGN;@m|mn+ogqHjvYbYDfiLa z`O~aD?W6mL{D}Qd@l?*Z^ReYU8Z#!DZ0Yp}YS1bCYZmW3e^kTi3Y?b48 z$V7;E+Ov!wBn1ic_tmB~<&WO35`0MDt=F7AK^~(|YV!!mB{yDU#AnV!Y~VKO@_OyK z(5O{6?LqP9{1#;2zjWI9WieXwh!4YjI%0y-kK|&8O=ZE|;u(saDot)RGP;ZlGw8%E zk;7w@kLcPiAL`8M7s|jF%04L2@LTJUmc@MdmXNMvZUS7^AR;5+K z#_q223clZ}+1f*UC>lN|x--S(7F^64F~u1Cn1j8vm46_$+C9QjApcvDWAo$tigJ#q z_@?yG1lb|CYwB03u4LYR%buTGW-4E*mZ7n$`mII1Mdu1zYa};0Th~qLa2!X%3j!Bj zxcsfb7=7t_VTf~?8|UEg6(gVffm>y!1+Td1=cwQ%@q?+E(4r??emt!=Lj}-uYhFS% z^SHGh-enmnBTED*{iMupWN_nP(5R|Zv}+B|VGE);j?7hqVLvZkYyq4bV6f7Szo3Ir zoXUz6p$AHnb@hbOnaz9VlVbM=4rLy{))Ef5^V#6Z(HdT3;z`0_1N40@RJZO?-9{8a zXd}nR#{os8QAuf|s1i9UCf(ms;B&kL%1y{bZG^V^^!5(OiytAz8mUvc{W)VZ9p<%c z0urZ?zaqI|CApV8_vIT2y~Xdm_ZyovYs5tFwXHejvKxH*_E)O5>O|h9=XwDX3O!tx zwhJ~QLe^ixGDsHg0AayC7qqQ*p8WYH%yZ@jE-vm|l8FhT1%ZZE9JCYw+PDHEv|ZTu z%`=zWjc=J?e!c10D!`76K8s`xlDkxr9hJGDd*u` z0m3@&;^M@2HYiQ|cm+K{I`l49)jdFkUggybmE-oc`iUdOQG+k5d+ONy!+%6sj!vkh zJ6LO}!&2>IpIfF2+b~`mAe7pEcZVq$6~q*5?Dl%7wTtg@yP){%MBhEsHyTSTsSZ{q zW6OY`EEE&U4HwlIH}<3QUfe7>Fcwvnr7VM*pys~;1c&YIZO`@B^dd0J3VIM#ke(ez z0mRA;#swkmA^>47Aa4fZw}Ao-P24NocAr}oe0l=k&%~7H?;P_E{gt!M68QA^18!m0 z8y%4qS9jsCgORmuftB6c`dw;M8`&q;>h`lqJC7e!+*N8z%cQ9^XGO81rU>QS$2&jp z+(V_$Z@aZcU;mvp_b!I9z0=HH_G-isslvcR`Icw7y^Nm6jLcdE!LkY=GCPmezbq2m zP9YC#Gy?b}G zY$1-cR}hRM(swI;bXU*TBV);qw0FJn5wUl>*>2od-*>oT@M)3owt8r=Kr(Wl35z?Avl^xeZ~KK$ z<*ABz_f207Gq|j`{jMo5?w0vVIwe!8J6Tv*XSpqEF{tYyHfH^hn7fko^KpOAvBT-CxwK+5BY61KJEH^RJYg zCx_fpcr1ql679Hrf_qlf$>-3vBUg|9@COIU@*fO+Yy0rY=y%6wn9$RI!aC#-OZMF% zm?@R~dsxd9-B{bS5z#dqt+&V6>|iWuOsllt*OHPQ7}y*d8rmPL#Zd~tZ%f`-*Taa2 z2#{B6Z*PCw1e{%H16%tbx)#u8)9*P8Wdu;k4}QpGpDiE?9Rekv1GU3g=orpIU2D$C z!{czo0d40~0))2obm@os&_4s^JCi~QhUd_naA8L@%5iefcUV9#874o=rdn<0@DAVU46Y%;Os@YzLyP{CALz*8DfYZ5-ZUDteLtTA{m`^~!723#p z-`%?AxAG2MkTXb7m1hxylY|HJTiOdBEG`ZX(Z9lh&)H6;wQ$P+OWEpKi|)c%oFyZ7 zS>Y{OR-4X^#`ICl7F&0DrH&z%bKP|+>r?Kv6(yh60~>XM+mv0PdINQi}aO+~f#Tmc=u z+gu7}JG^u>M9-;lw3VZPsj)*>vT@f&4|(NU`2K@aZO)9pe#Y*;KC_gx%lCncIdQ+c zJdsO_a5sZCu%zg{iFnBLp2o&m@owz?uzG>#K`#tniSrKoPC?h!9m{gPe|B{ z&BEtj_1pE5&~8jI{&z*wK3y5yJn`hZyD&>w*QzQaLU!MK{EAR1*Eiu$fi{621USCJ zufzcCP+C%=UP<{wr(#3L$(q6B4jxT!ePq6csWrnr(KOM$(5S0P*~04^%E|n3LzQbp z@AVWr!ff<5{a8t|rKwoxGm3Z=Ka}@8ebfr(sh$s<~d$HXb_5aFGvl;o`-;!@qi%U;D)WIW~mT=;^%;F<@e<-O7 zhFOJE)r7kr25wMbog{bIV$xJBWo#yD$J4~qZlj#(2@*X;;^X-geZ+RB3=~HNKie*E zfNYAG{TCy+iNYD0+HY<(pTGhA)=OE_tJ`H80zd5~N4oGoUV0O%lkO z(Q{A{4es0S6cTBB>cMLjIJr&iV(+ z;$5HtJ7vf6;kaNNvRq;7y^nARj&JJr<~HPdzHql-FP-yM{Kv326#QDAWrcF1fH)a_ zOO33z+`d;g|Lm|=y!xU%CY$2Uedr#-m*fA*nk?)?ympi3dv}pTGO}HU?Q!v3?81Z+ z;qEO_Z)tfdy1@8*cL!~#)x(@8=-PDumd}iREv1N^vl7 zEUl6L61|-v_98>HY&^SDi(}WFyD!IcWzRRpXL(7Qw5Y_wSk7lv$wVLRG;PtWTkD`= zxhyynrl%06{(O#%Oyf`CK%D4S%<@gDg;!D!b4kV8KEb;_TVg#wDY32E5?m6pIYZwo zzNK8O%p9jpVCs+}MD}=CH!IfBx!IaYM%thvfRodam(CoSNX|-OjbGSsf3bd3- z=QWWld-YgrKD9t~h4~G34c(SRgNw0+E#ybvmR)>_f|<~Vl8plNl;2R~UVU`+um+s%!XD`hTYyX&kSmt7>0Dl@??8}YYO zkMjg-PW=0y#-MOK?$G)=?F;GAczP`l^&XOkPb?b z4!V^hRXU*~QWJU;5KuwsU3wP;V-TbTkm6m@eSh3j?m07O=Da@`W-{ORy>+$sSrdiq^}z(KdFoLz(83K-G`ONiBWZPlW~UDv#B34 z?i?zlO?&hjt=KO4sZI8L-kNWO-jIpjTUaI0ydmqR zRGRBXu^_@-$G!>Zwf#Q0uwBdFQQOn#X>PEmSc0qLrtd*OH3q zjmVgwUSENGUy73Aw6fydN+of99g?-i=@=2=OgYzNGdZP_0hGdw2X%@?@xaN%SsOYA zv`Dltp8M8L(^G%ET~n8Izfc?njUuQrd<3`~=bPru97{PX)$~_y3-h<9CBJ5NrI^!LhV=6Hh)!SZwpUc|$-C)g8@_X6mS(>tA zs{B%X{=6RH*E^jY!19z!Lc;ORwWO_u6DQE$Cr*n!xFRuJd#?s*Ndv|K)1oryd|`V< z?{{7ZZqysk4bZdvRo~sXm}O;Lloy4x<_zP_&Zv~NPiZeRpYi3%@}!le){3?N?O=V+ z+uy2p+^1)TY8G##jxL90nq_2`VF$9l<*9_jQmWmWlJ;6DFNakTpp{SEE?X(>cF~S} zqX^d1Pk}4xL7ZZ&Fh`kw4p4J9??Ih54L^!~b5!I~-k4Z%(WS8%bPX3Bw@HR*S~W7k zma&e|))ce+!vW+v4l+O^n=LVq+SR!*8TXY|ZH3K>3_ zB9@zAQQ3W=utmD!xvSL9)s1;o;gL&D%e-PE%f1mf&ld70~)kE6wMcW2sD zNVAuZ-Ce5q)7-+}rv15Q_10ZPhc;#8V_L_rP$t~Ilqs1F8!7ZQ+NUVo#2D%y#I6wYN{t(#)SO*Qm1=B!0-5(x5 zxIou&$uKvDOE=a@D1_dudQ6~+6RdjA=OWo12l< z=8@RG2tvN3aRX^*qv89GYb+mmbn`dQH{IR9H5gTOd8EI(-%hXDk@(u)ZHoz8{9|Lz z_6K@xrNLg09PS~{)B97fFO1tWTRBxPdFThu+uwp467V?>vZ%_3E6I_m`C&=nR}&2T z)qR3qSr#W5VF_{7>PT`o~>i`2s6u;~FRfXZszuEx5aGulZ|HPC0cORcr zpf|?JcYcZGBlqN??5@a%C!cPe=Phe#Xy!41xj-O7825`7}xI|G0O|VQmn#x%r zHa47dj<-u+|a5<|V>w-2Q zs3UIYX>v!mYSz#?$eeEyv`Qp>*xaw{%R(fx=dl0i#-7uzp?%mN_9%&eZ#`Ba{@}fu zZ(ZUGUVduiM~mu7-(zikV)^`$|9g=C&2`LLCy~f$Bz^CO(T0ARn+uL4OwG^9r(+cN z{`}b>klP^mILE1{?mPwo1@pr*H=3!|a$!dyh7Vi)Dk$<#Wy#-mAv;A%UJ%;>RMY%M z^?1%U0NP8gXPf|zZw2~e`l?r%{UG%C)wUkk0~BXCiti8~Nee6Q1o~|S2A=aB)+-xS zVO8N$h}-Fw>BW-dr(sRH`7za>;WO-&g7<~ z!H^N8Gwkp0tN47;h~=ZLOs}u6{{g%xEj~5JBp!XzJ27W*21uSI-1c`p)&eW63({_; zs`GL!N4IWra1;IM4RdiganJSKpkx5oIyfu=zUr;pd;tAZ87slys5^C@t^iDjssYQJ z=dL)tfMN;)p+83?%wTVA-D+U;`48S9&+|oO_9n=Xal+pr=0xVuDz^O^Ne!f604D}e zWpyvqLUsuMotMUi3*yeRtS6sefQU5&%I2Mbm&4?Y_i!=Y&0Dwh_4S>H=sgd%S1`BW za&i_R<{TbtyC=LFV=C{Frc{4TO_y9w0cb+27gyYcm4)KByT-RZ-w29onq4s#u;TNo zGo)72+IKwI#?KITTS;kmj^mn|)&_*q8up0|4wBaXsjr<1ep>~G7P+Oi3SR~fg_0Mq zRM@A|hA#&M2G-WpbXe32iAf%0QHW|a$E(CY=Zw8bSy^l){Qc1h@98REVwJG6IAD(2 z`5U|;maOn=HTw!S`dc)DV`p|~kj+2`zg)X4>5N_O2#Y|3MY&&P#_dlCP)a)Luo`W> zr4MJ8__E>-xHB?O7qG!35Gj5xRgA;W)xlFjXU#ymRV>;MiNTF;Sy|b z3!9tPIptB2mm%2~=*=h_tsEW6A=~lZUNwTW2?ZPka?M!C1E!U|;=B8DfUT~FMyGH? zirR05-p?d$-|Odu#k8#aJU8FJXg8omL@bQVB-6Yt9qy5DOu&{vARK7P+nKDh5dZdx z{+lr4zpEVnfxvtiHkUQTV*sFt5Rf#WF^IaK2DZ}4i)#mj1*Ft z_fOkPthN(Naf*{n&)lU8PqcP*DbQ0Piep!P0Ol?C$xisi3+iQAxk2RtvNCABGQXP~ zt9FzKscluTwT6xH`%VoHbP7)>xJav8|8ew1rfkiqjLdTyr`iaOgo@VyB`P`28?*v|C>(x}sJKsp987afKNC!L@l;B|2vboXM&sUM*uibx^ zP|IZ&9n}>y1?Yj1UKZae8-CsDif6qtGFQ1*P9TaUL6ANS`w~{gmfFJC%`s=wkQ?k$ zuAoupE)msB$2}-x?xZKvG#h!(=YjH+ag?H{rtQ^@SW!{EbGu_va(Bh#vduZUXEmJGAFLECHROm42wq`DIpsNOH6K72W6Aqr zIG0v7e3EZjBH3P!3-wqHF1$Ji4`lZVBI&8IVU|17B4XyZOt8tV*>8-cmL$)+O|iUr z7$i5Pj7@CytLa^_W1!S(EjhGm>n5+5`MKtm__GOP4gwJ;ef}`QPSdMOQMtnXYAKGV_U=CBYw~I8&chWwzZG%S z3S3S!7#`pn&{AiLF{rv}$rUpd@O;EyVvJ3b&9G?kOH{z9zlp*7oKlJz&z0O#pRoc# zrB-f{4{iG?6wyjbO6^&a+uQH_?*r0J2Pq6mD|VV910zRp(W!-&^b9udmZLTG-simV z(ihF&e$}UwG+}HbTB~YAyi;uGl#tTRr;~E@@qsJljwXkA!s|zCAso7AQ!XN}@i??; zt}SdavD%|rlGDqp?cO~E;uu(Th+;Kek-Nbkz2((ju<@bFXPfb9kTVa1C6Dyi3r3%5 z9+8o8xG5`haDP!JJ-bG~Q?h`?oZT{+|BB8<&76f&iZyvcU3szD>okLer1(|zCWQyV z)q}8M7gVA5Ue6M)+Ux;%jYx{qWwR39DAzs_+)^30__iYHl#1L{79X)PTlCoKIeUHQ z2QxMe9i58otjkm_bD?)?McO_CK5;F+A1f>TWK+b>{|c^vO*drFkndR5TFnd`kTpH-%D=aq-N%!TRrul_ko zK)A?AK4Qu^G$$MYWH;aC#ih9K4Aob-%kK9c&&!MI618-28E(*c>neCA7W>j&LY+Qp ziR90o?VH9}ZQwxJI{f5<#>Wi>pRjcoxm=sx>rR2Mb)&j@nyFeUk_08$T4T0+`o_;o zFyT^`nGp}OIP2=_06vU&xde99sVFXwwWx7t%QwgIN3%AWcwSzQj1OL>K)iMWAA5g@ z6@jo26yw)+kki+YMMQU_djGf5yV!gC?qkgh~p z#=Ah$nhrBrMiZ?pPCwK{9z+ZtCC?^!B3UqCX#cUD{|`hty!P)5_tm()ATmW8Txyk+ zGJW-f441WSfbi+*>z|g@-8;*{PHv~3KFQAqL|#Eb0sO`BI%h-;7s;y877ghe8BL9j z=I7gR+3FlehtmDBfy)r;$|6ZS+dk=La8~x?2t*xN3fqX3Xr8WzI0thZO@VWeag`o`sfdGbKYHBKUOfbeP zPn}RB2~Ak|!^ntkTRl)x4o^1>?deRC6Xf0{?7hBn|bm;CSS3hlL+=bV@?a#`vCxqK>vif-N7+lMg^3=Xz^3`hhX zvCPcOJWU0)n589$vNtnZTkeXAA*^-6P@qRTV_Ya4T0{h~hMDrHxVZSCM-S(OOUm{? zxca!eyW7~nWAJelz3G{olOdfFDI=>ryE&P@ivar^Eir5E=~3m5UESH6uj{OvlonHv z0pz)9NkXm_MNI3EPsP=?q26JMVL5B|3sw z7rSd{G(*TcT3KtLtu1|2^3GHI*aTmhF5cvfVNn&J1q%u;o}uI;hI&k`OLwbB_K%1` zl`h7!XD=P{@bao1VRo%verX`gFyLAT3*2(OgQ%rdk(Fg}?_Ll0kG3W9^`L0D$RAI@ z!iJ1cs1Fhy9bKY>uc#Q9UFqoRg2eR%q>{2Scqb_99y|WT+d0sX3=AEyun~R_Y@C>w zK%EMC=P>!I8lV%+;WRWf5)u-Rq+aiO_yCm}wfu!s)lhm|_Wm4W*<51w#Dg(=lpt&; zG}RTvFY+~XU z0%2umkMxy;g9Drak4LPmtT000sczA~d*&v0EW_EeB?rAT#wUG9!^?2TgeCh@U^VO!QtV4DDXP6%|$az8oW- zNlHq(b@QfEL{D$8Ny?}IrE^xcwIW6~vE!=sV2!Y_aFc1t$Fc6tPS*zy5(`cO@yp=Q zP`ua0c^vR}R$q&c_d@R+fn46O(9k*ZX0w5_20fl9KxsE6);+6lOv` zFD?qJm`q91g?t^a?#CxV?F(RDYDX$EM#OoXbk6Acs;;FqXd9EmX zIBE)Fd4&tJ_b%hOv{oh*dA(T%O}?tFZd*#(cz9TwL7fs9w>K7gQd6 z#nEPBPmofdPr`U?5#qwL~N%0un zd{k|bpwQgJgg_{yqr~`{I~P9(d6-gLDy857bj9M8+RmR1j%EtBWO!1Y` z1)!ChG^(Kj{99u72$C^8G!*#ya6o>UjDEhpnxOlE+AgYfZhgJntoiq#+@#kEnp)=1qUwKRXm)3=8Y;5Q+Y75^L{UjeU*J)*h_#8OuPCL^U6p*&IMdoHzxMoj zZ*CpZ(r`XqkThd>Y@!gSU6klp81$mw8pmx{ZRx_f&U+f2^7x7pu8;@o2*@I@tIs?Y$R(>Jytwz4TwGi(7TO|jWvZyGzPrH zP=8v_IFP3qFdQJa6`{vR^w~__Ut_I=A{)}bSzB2N6b;R;B=p~o`9$8I#;mHIUS3eG z;H4yoVwSp(kI(#*!-zOsi}wX0m@qurg+O9Z^d}g92&rlrRHTTtU}AhB5oCMJ2;S)Y9bLD}h`8W#df?&)20z0eYw)-+6W-`ou>W-c*)41zMwHK$Z!>_9^rL^qO&~Tbj|6ORc$uvYmqePPyd#vi5xH|6UPOw{x z+}c>BO^}z04X1sLE+_w$Ae>)4oPrWxNv71ajHty{J8x!wC#7tpkHOZ`O{P}euYABY zOIw`k^5qE9htD62<2Q+`3SacsxzTh_HnLOS*wYI;v|}R5vN+D=5pt^NIB9sed-bQ` zey7uKei3*jG&FnZ8zS^Uk&Eo-|EiUVq!CTAIRAedjMsSQR|E-TqJHy$u|82{2 z5>C@!Msa%OFIq#HS(x{;5^;+z%;$ zuRh?_`xc)X(aP_%j{V+hWgu@k4WC-#TW!s{RGR|vr;I^1X>?@!wO_|E_9j%cw6x12 zg2$^I$i3tBYDJy1OSl44LQ8#$LTaP3GBQSWq#j2*hjUSiRpq7YM8E$WdTs?9_@2Zr_hob! z8+EwO$iE;e;9lFdU0zu!_&O7mS)%8@)pABLo*t(^lFpuLYGxMC`b?y)c2QF3D1uAJ zH)c0^C&%Da#^aQ#jvUC-Au7C9tEFEvQEJiQveiO# zyuU%wkz;FXie$a+ng#Y(H_%}cD)Z^GVmFjvcYy}3(xt* zKePKqPe)<3p!avQQDx3U2@O@%w7L$aiZR>GsmF00WiMKB@`7KCl$t4Z>?PB5Y=3&} zgUEoj82mk4VUs+s32uVe$U?$x$Ye zhx^NvGaL78E6mGOB>AND3#x4{MgmnjrIgh?(38yB{#Q*m6^4*I)y1+Fb)|X zXA{Z zPYQXS9OUNa3VIyLC2(1_1l_{Vu39S}MG)!R_lRE*I-PW$eHTG3$*f&!I+(AAuRfiX z@sSUC@&~45!ydotcI5p49sdwBHLqkKvyRxbY z(_mU5m``v}5WI^&E`{f$$G%JLM4OQqvp#yDu5cUg3#9vm%R&;kq@j_K9t=ONKJdIK zljC^*h5N}?tN9BB1qI)j>%2?96KvFz1;Nip1V)f5WA1-Crx}(MT!K;#-0O@wV&&hn zHkz01E%ll7rb&khY`;bBDLeNlkB5`tGWOP3`VLjmsYloI9pm z2~30?gLQjlIR$mv{NdGOJQ&^$ESHkI7hdv|_C1sgy_3~>*m#A) z6gj)t{glCYjH_?@yVKv7yncLSF_(Q7dT{;qikkHo)@KJhl+Uag5pZd^(VGv^JRnj zefnRm$N9?G#{9A_Jh&n2SIig}6O%=OSV;EDXIlQ#Eu_({NWx|L-f_xljh}XzIqlmf zH=RV|hQ7Xje!1?;#>*F??$+b|x{ZppmwD??*KEpoGvpKQ`F{P=#UDogXnEH)Ng-oT zC^uCy3`bMDp|7c_>DB}FL;;uL{QPyD$)ng2=K(DfznpA?de3D6oB--QwI|7Sdm|Rh zDhZwHT3Smlc^Do%u;NM>IT(5o=I5^VH5~@=Qb{HxAjs9LF0ZUS?AI_*Ll*FDQ{Y)) zRF9wicu>H}&0U~Xa!*Lez{-7Z*u*X6Ad^CYXyWt zd}hSPbd9uzct1daj4|mEUsXxy2zG>1hxIxQ6?Z8Y&F=>VHN9Z4-rnsgAKYvv4ONeZiBvY5{@H`_@GtV+RJ=%?k8_T*@Hm&1z*kNEE+}ow-axfiG zy;qc}_+r@a`C-D%RBtB@g7m5?zNz}B#+@H_zui>KM3&%9`*}~i#72v_IGxCAhbU^h zh)Tgrz3JRzFPqyUsQY<2I5;lF5^nAoAdljZ9sLqH{iOK}QSE76H#_1vF4$yyd^R^& z2ucw+*=#mX9hfCp*J1qx;A07(MzW`N!a_3g#00^jWaUqn?5=F#zFO3Z_`bcp{gGa9 zIiSz4Vsp|F|KzaStE;PvFr%Zb4HD-W-skt2QG|?|pUN|ZZlV@9Tk+KE-goBMZRVOy zkus0TIuG-X>E?j`SS;qR!d6SGXLucry~C-g{41Gd;HK4;QNAafx#~G1&VzbRWu>L| zj%y-8Mqxqe-~Kdw-?f2z~H&Y*qZ za(1|IOT5SWPRjR|z?*d0ib%K&osq7o>&x!gk!-zPUUWl)%klO$kJ3Y!R45I z!DO4wsYa2viHV8jgy?tcikzh7wY9Znk{VuK-Vyzg zGNF#5Rgt2T&OoJx>YR^&>ZT@Ul~N@RkwQvsL>H@?*wB1&d@Cy}Ee3M0o-KQF&MY_K;QvKSa&ZZ6w^0L>Rr0De`{+D#)d9n* z`zp`vAG2GTYZyL{Ef7^T2$k8=9M|XAncz&-(GN5qKYq=pxOyzQdPUYGEOb3Lb>N0e z#p-W`8@9Jf*>L^vhKGkIPuHCcT$j@K_V$=_jpw+RMZkBo3$g&W9<6`KzdkX$>)O9Y zE8Sc4q7_m1s$_URcZN-)Jou@DFE{!`)k~y>|sJJ>x5a`jzK4?KbZs836tvb| zTUK$9yGZ4W#Jv~SkAwTqo0WMVpMEWe9O$slTVs_UWDlH&oVMG zGIIF*k+`Ez!XDe0E1}=z`4|PCL!tfN;$jz{IaXMWj-wsj)yivteUrIu^o32AMk_XK zJpUwMYB)#`PM0jJTH)iIywp?vvGn>$r{zoscAwUWn*PX|sB!nlJo*0eRL4;?WRxYu zs8SF9IgDF+r^kK6dKw8-bJM9zUdXf4WlvjpQ+k65x&EiDVh7z>-W8#>O@M1NnU)Lt zqv#X~MWiBkhE0;q{@AZ|+cH)^Vf3UeT!?v_1wHv zHviFWeJk1S+gp6|;|~ul5V2E}HzSfIocqv53R0%FCZQ1Eww-IM-l*drqfZ?n!#Y87 zYaG{ao}8R`YaDvDQV4kpJT)6ZZj^QD-QS~x^8P_ zMFo~2HUwqmZCC0XN$h-+8tcz$-S)HTC}N|d?LUwHff*|ir5oWQ-LM6rf`gd)*rS!q z$y5c_{p3m_LZ5g{bf~jl2%k%`0sE{c9|Z$fC+q76cq|4Ocl(A)Ou~-h#fay54)P%2 z0Fp#}*U)zn_h2>Yx`QOC+AI22jMcIY$v;BK-667jL51QVdEmA~&IL0?%&q=+1{X5P zq4?$K;t|E%I-W%8A7>Mam=ZnBd_jy!Wo~X>nkDnC1D}7z|F-oLNj$(eYqvCXi#(1U z!&>cj7JFLB-Bzo?(V@a~-ye6fa5BO9bp1hwM>Q6ezUQIQZsU8l7l#)8x8X>y zbU_%YKL&Kba|dVlp7Thh=JKN-et4-8@02NY?K&SmP|xLgH6vzWVd3Dg3(zR1++t8L zi@A13dH1#BQRcvn>YBv(3$5h{1hzxQaY0W&AMo#XQC&}jwd)4=IWqv6c zt?f`R(9e66pPj8tVR|JFZ{~wVKEBA;@%6($3pvSwdm4AwOB2RUpcq%CIGLjp+DiUx zK_UCsf2yFKlG8&#)r25iOViqAkVngqHl@FOgK_Tl=1!kt&O4!#Y232!&zk+S-a+9g zD=XXa{oUhD;sBcjHuIF6ajsXnFJ?UNoNNhgNVBl)t* zk(I^%HC*^{1{ZlZuqVGDdyI@6p!AKYD^KY0AZ>93;k9s62 zt{)OwSy?S_tgfzF=3V0b{?Ob8oE*as&m`Hyu>qUIqzmzd6x;tMoq}o9bBKL?GFPyP zQGuPCo4fvCCU_)$Bqhqrt0_+v5z}v6IBW?^WNl%Qlbub<`qX=5(W^YKV}4sG_h^4( z!?Bv$-TQ*gc-FN?=zWO=-JKi6yY!AVpZ|qvyDHbY6SyeXB57s8PrMpWP8Nj1 zPU6wdF~Ax7=ApYul0z(B6ChgzBJzF?BJVEA_^P74h%Mv#F=VOE6zu7Rckr{?D8cUwkeDGHtL zK24bevZwg(*A_rr%t~f@&O!W>gVx=6XAcQ>pTc1Ovf`r|0-1;&97P6f#Inimtg)o?wo4Z0K zZs6M)VbW>LCZO$w<(vX$CZ^7xKT9W@a6zM>Pq5wnre7`FRI;= zi-?f0E1qKkNEJ*MYGY)?mXB9v)*1;3$rgiR>^$IiSD==-5;`rpa47`c+aqZ&q&|R9 zX}|aMs%DnA554{h@vL>$^0vYaYovhl=9E>%IF~tsKB3c?Jw7Nn7{x5^PkISGeO;7m zId}1{V$fED2Ejb))!B_?939I$jrkW6?NA64d3zeYUMzOru8UU^lS(?$Yc$T+mE7q;tB`uZ1$+^LTerqvHebI$7b7-qE6{e=t?Pl!{-N@aP~;0-2!Z_(%UW>w2yLA@13f1Ne|FJcpyt=FbC1o%EDr0 zaq$3fr{~EmMUF~8)uX6@=IP9Wf{RO^G@#O!&p2nMnuz3cx`dkC>~k`K-7aTeW)v^uqp_9n_5l1qJ)g z0s!?P;7-E6v#FdXTwDJjo$~eT*P(1XyE_@^H+L;APz!1CXs z@eqGQ&wIVJtZW>X>%zNWLMCMj%gMUhs;a8=bXpb`o9(%FNEV3SfyXp7=sGmKubzIn z4qUDMQm>9pZGU|ccLn8b?z%VJ^pX|~d@rYj)ztc-;<4l!%xlu!9n11I+KNjoFkj3hYFvGLKouIt5t-L(^b?cU`k8SCfM9}~otFflA`xhU~j5gDe~zf1s`u z^~e6djeE&$e_gNAb{=l5upV~>YSnD*eEe4g*5~8LJkaP$;D&0`6T^oJVip8CV9E}@ zbJtPv2&ky|UjH#2A4JHa|MQ`5ZC+hnU1lczTpCo*0Hn+np#`$MyzFXv!lyS}|>vE)-cfHm19_1VK|Fk>|7E?@c*zd@lL`lc1UC zo{529zkZF3R6(EzMh5^4P!Yw&><-E=UI5`6%4GtquZoHauDpmyp?Di@ zdV0Qev$1~6WqrqQ^wXWZtgh*oraH0B9M=zQp5Sy7h*PdwUB7-k>YjYnT%;^8&WQ>p zYHBew(tuY)FylIm*geX`e;V6KN(LP9tVf08Sw^I_ypG2Z@xRhjtrPz4w&XMy?1t=7 zaDQ;~Jk&d1I=da+%ps1C={5>s^~Gq}=!&qaVdr+-BB{FPK2 zU&kxB+F=#Ha-)#6xVClZ4!kIlfqM~+v^iFQi44}nrwd@J%dZPfnD%bkVra#djaPj7 z)Uaf49+jw&F>bx_`TSL~ryAtw{=Q0B>O(d9pkmL{BeT9Q5ERVb-T9dHU=HJY!*o0Y zrtc$*2#T`#2ubo+JaN$u&q&LW=gvmWpRQ7~K7=%^$9Sok zij`H~=-NcR7ZOVON7iFs$v^n|J`JW}!uiQLkN~zA#p2OcQP9&Hx9fhy4Jl>n_Kla$ zUs5p7ts#APF-2~t^uvb_F!V>BS54Lx-5(yx-VWEmECL4r=ipCLNa*AO?gTt+f9yN} zpx*r*Bzp@wqs;T=on>}LxkN0KKbqBwNfM)9;LYi_G3Gbrcq3h})BkO|?np$^D3Dx6 zbz=YP4cqsmz$Vw|+oa?Ok3pzacZlb3^^%>$r7TYt$kG9ygFs#f)@S*S-a$ z&;tk#%)j^wNSJYJr<5FTJQ2*x(ocI*!~-Yr;T^o^9H5}1JK}b$!WWSe!SwqWlvV-o za%;BL!0U83kQseTNmaEJ(i?c}y(+wKjj>ER`SoW_%SSa^nH~&z|*Kt4}fZ`0fWKQXsht_qG$qDB>q#a>L1aI7xALB zN{nw25uxVQxjSf(oRpLVlcn(U^ZT>Vt!RJiZ35UNDw4|s1(gOT{s<|!~$c&l-T9w7| z-Ws?R6BCn*iwkfuuzR0x3V_jp?647@O%V@1Nv_h(2iAJRbtUhSrUg6I`9!3wZ~|U5 z`(M9x>sCuk3v}~hVqzStYtzzbo|YdS9Rd7;A~irKv|~OyH&?)A+Yom!L5#~6(fQ4nU*3D_t5`rZpv1!6$r;Q2Vg>8W^exzmA`>zp!+y~%_ z_z08;P+OO~)eQ_NsPLeybl+PY_QANm9C0J+Rz?U)#2{q_JuDQ9+6Rm)wCtybNl8f| zJPhXP433OwYieo&`>C$}MPBc39Jh&1kozllP)_KWXOFK7;sVs2no8|l4)mUM)IB}m zumAxoWRyVt8kyGHtL%`C)Axz;?_xMW+fOKlru`}At5;+HOI$7!&Q#PDMJX*P%e3;; z3kGu@?K%sn=R91_fh-exhqpJ%Asy`;;&>y}pFEke=PS!l$mp}Kko1UQ>?oT1zVjCl zg^&1SlgtR^nnH@-l*jbLL$wu~r+m$H&VLZqriT9?qo8a3NLtgU zbESx~j=K5)&_n8Z+7K$OxJG}*b3l8B%VBG#1u)GG5xEbXP$CFHhnP+wv2b*)#JF?2 z-tDuX^j%Xqa+oBV@W_AOFaKLAP@?bmoQGdwC#!#t@347wb@A|NV(PMa(@mHlQyE6mhSRD*8csHhs$#4iINg@VRbb$G_gyB<2mS_euVAFq*K15J{{P4KNYp!%BTUsO2FVS5z0c#-Nof_eZ1Po z#0>)T0|o|5E*)dz-_X;pfKA~|B0$~^FS5{?F!(_2f4+#ijt)OS&NVY>X=&8%vIGLh zuHN$$(MldB8JXryGLWz5*2TLpx3I9Uo7L`rE*zpPgOi@?MjxzrY8?X$ zOZW84b0!nWOz23SW-#m5XyR7frTNF9V7#oHoW6_C{^fjLM}5ipRm%)a4+aJYi3kWV zsowY`EA)PvidI5dCChqss0hRi*?D;m)#D&k@H$?rXnl8^NMMw^ZtLA&f=o>*8e&s+ zb~bcV3kHMbnRosf4Xnsv{8O{cJf?4{bl4KeCipp`npbTDQ;(#1wDs*~XJ@Blwa4$D z@qpmvb^E0s-+26D8#OXo??)PGc+jF&Pzrh&dfq7(WNCD$tKJF$K-7vI6$l!p+LxhHKCc)B7t#(Z##NvoQ&J--WDVLo4amW%;~U7kc@==y&zB+lTtk>#aV}64!4elj5mH!+gG4k^`qX8MO1tk ze@uyvcT-%+ea(7yb~H_q^rl|NeR#|LfEOVH*v$9A7K^0Pk=TLx7lf~EmQ`LaSeO6E zN$(r($o*m6%fPYpm`@-u9|9hw8dyPW+O9Hv{GC6y#Z5ga$|cR5CESGQDq{n;ixOYq zZKW>3xjqJ)Qe0e!oy`d$B(G@s5u z=CmAbKDqt6j8&WMa<(0MxSs}w$cXR|d{r}EXl;;!wM1UgU1}d(x<(%lyO#1IOtgSL zXvWSZ#A}ja4gt)JdPw&=XH8M^XOwB1V1pb46?9s;ui0e@US8+Gr*5wD@Sh(G1$Uz4 zgu7J?lNC8jNhfmU?WtZFA56VnD$4u&>3bUADWR?l@N}yc*3+%==&#p3i0J)>>yq7@ zf6+BR<)W=3gl+1DVqfy}t-HLdNq{|0 zI=YOktow6`Kp=*E*eM5P4bZjD199ILsnG4^_u6GjIySX~CjIOFU?(igdA(SKOwj9l z4kwpa*b_R*$UYa~1*T7;CIqS*&9NX^YjhFeL3iegt*o`C2Xs~8=;4AE?Bn|%#}Ml) zn=~jJ{$jeI@kT1rkky`T2~;aOc>^Gm`<9wdAWVtA)3IQCdxD>a%u>Og>MHfa()hDN zY2K-)?@0g_eCRjdb*&vy32S{(rd?g0>2n2FqOOUx6Sj4dGJ&|+A7X>ys6~+*dE+l! z4=$PgdFCH~0gck()_H1NgZ6vr=$f7m;jVvU)JpJ-@h{lw5y82JGL!sOX-BkxQT?-r7QY7;l{^W zZSm?A2ZUpz2?vpYx)Hz<=-0-r_s>p`Cq0kXK-c78rGyjEY+TY(QDX?;*IrVIpk2(rJVLW{Cy*V0)-D^LYkGNv`>;yDXt~;D{Ct4|3(jFM?`+3iP zAR7OUbOEw;Z}RGH;OyG>hi*6Yq_o3t&DIM(6fEjov2P~_h5+Wd$n1*w+8z{x6=lt( zhEeu4k9x||h!R?kQ(vX<1fa59cooc4$_`evS;&b*kS}skq&I@5y`+1mldsRTla-if z6g4l1`Qcr#&4+Bi9gKB}5k+=IbJ%(ehQ=Kk5~HFDDjF}~VZJV%A#YTw6E=r{xg@Pbupu1>X(#PwzSv+2(T~itx*SPa!l<6-3ieD8x7pw- zGpTbNuw*lu)*VV$MVQpiew=?N-F;j^17+f?=pvNYT}Jt^E%u2g_`(-O>}3RV>IJ+? zqo1)G_o5PfBukLANVprq&5Y5&6yc?qzQWpDl>$E& zpo(QuE-nQfLzAqs_XP$1v48!|=K7f1aVo(6pP39KMFnT zI_j9W^DrzhiXb)75WeKl-DVoRmz{Siy8uaZGbRl8u{?TpGtx6agMjSD8N{6DSXmG3Og2XA_Ep=i=Vgs z2&V}Y6ortN3M(75RaSjVvU+@l`%2XIJ- zn(=2xY|^toey`T_r(V-U>L}7mv{T&+{3mj&W$KEjD`9IJv%T$P=xj#qur5x1eTOj6}0MhHC!j>`tq%@GY zktaN~P`Amw)Z3IrKlGbT)$@5~mZCkc)IGwe=M@Zx>JiE5LwQXf)8~vab-qNJ5nxDf zw~46x-la)>Oia`MyjMSiRw9KOwjND8fd_LE(C{YYu8W^h3M$1%yV0G-7Ut%tw4PtR zUIjw1KX88G-O)C*E}=@RIsBb)p>ZS0X#!sarG0&*#@!pd`lp>a%ygYKcibYA_xqC+ zOvH2y4sW_>7haSc1}(R!p~+jhsNTW5au_|_D(#$sHF6P2R66o^=|taSL*Z~>*q)K; z7H7yAgq>=5kev|m4HM0q{Ff+kW@%|@Rn<`lN7ts!7?iRgoCOXK3qLR53Fa$MJq{ue z(5XUhCcAb%9E^^MIqgQCC@KzwA|TeJ(Ay^Huu1vrUH4zU)axmk5-g%!@;=%!s?aEi zu_V%p&?R0bUwo%ib(>v0U%cppFO9UmR$GuEJ7$RzJ1P1rd^B%P2$EF5+vOV6pN-jd zU*{G@2!jTk2Rd&k{V_kkP7-2bLSI+6#%`et&TNn~+`cb!{dG`lhO>JR4R$hlT=^Zg zRZ9Z$^@m|JPucEQl4RU{J}K8?ed|yws551!9Zx-KZttpA1U5$g3v@I}@mD`gF>xR5 zoF5>8hK?*tZK;K5?daMb^uWBJ%`0@!h>M7Y7VuJEMihpF!YT5N3bINdNKxr$Bw{@Z zr%Z~1n{+QJd|4YE$?KEWI~_w>lk%BKtSO3yw)^gOZcyi4%Xk@s;I{6_W1}G5;7GF@ z-&OR2K{wSy`4gkeN$Dj%Yzt|B@+Q2Go<~c`pay|<8xbhnfIWp_p^KCz9finJas%23 zs^NNI_dtn&$bjui6UgS*Bt;oQck!8AqQU~` zxvHPH1ceEmX<|ksC5`v?-q>7eoZZ@48?7iSQ?t;jaV~0kUO5}e52yl^zU9taGZXo@ zArhlCQR97I1|2NGRp81+-U8i;;7;LH$fGkbGf$LT=?K4YblgJ;Yg<8%K3d~q*MJS8&Um&L{$3r>f(;H1 zj$<)^4J${AVw}T$Lqy)9)NMURG!Xy?$L#y$;p_khhsq;<`_@o0r?FS9sHQt$GOBOz zR3b*rrzOLv69z?^fPnWvY;Ff_dziU1kUS?uMrGPIRZCw0vA-i`yZhJzk`fx)XMj)d zRU||;!5UzfDj?kfq=Os=l$Vo0C!IOn8!NLIe6&AS0>uDmonX5Ip$VbK0?c!vW6N0p z`kmnY!NZp8;}21f^rrvn|Ig7gi@#^g>i>f?X6GE6lq>&A%gCddMQOHAVek1>6V*Pg zph(JI%+!#JZ%s{VHTN3Ln7BWBXcMm_B@&i}=;zRcD(63i1=0s<-rF?RlHkgnjI!vR zTNMx=d14a@DS0lpL~0UweANP^zL?#rVOngN+r@P1iVa=HKK6u&mlai+s%8; z)QE)}|D%fmbCg`N==^0Kg$QFdgdtr*%)5uiKEIaErIckHc4nBG*Y@pj8$sxHXs9gU z+!9GFZ+P06k(*OVPZ`%mM(X?~U8cjVF_10I``0bzm|YR=;KWiuajusEa&F!n<0vng zR?Y8oe|eB&ci+ctdRa%2zt6U%H7Wmdq2gN(EN;Oa2PUgNYB%l$S&S`WV#8kwV@H>(X<@2ryYpRND;MTDL|PW|Re zL$B?K*5#S+CDdvuOae_Rd9-__gT*7bUVb&1X)r31Ahs z%u~+_{Gg}y1K6v2Px{6n9!%6dOMi}&UO_01{UEYwN};wx@*35}$@!73jQPw=B6OKZ zo@T-&YdmwL4&(kio*c@Zw3lmVuFqEEnWy#uP*55}S?}4!fOmQLbL#?jhKfd=*&&Us zHWs&U$oJ>iHCLZ)_CA-kACLB>_QSx%63d`PL&F4?X3Cz4tf-5`{f04OFdun>@VIwm z;wSi8<<_tI!S$;@Gtb5&*(5%#?SCP3%W5X} zPE{C%Y~)s(7t^EcpH^a2{u4yuQc1jh1Fw>a+Ba z*;N3M#INxh;t)S)L#;T8@EOePxp4gCtQ&nCk8s`%{5?}9-zaOzp2y5u6;bUuGn?Yx;jMWuYL*sq^4^dkY6>{KChM61!& zqRd=8pEwMfinc)2N8%h!WcTlm1*aUJ8sA6!87NbbwN}4?=FJSH+LUbL)rIYdnZ2x; z4_i&>Xc(U{$li z^dUQXw%IR3f=E1ZUMjxzi`M!Sl_o4rmPM^KQy~QIt-%Dh+>MNFapJ+2Gw*;J3wcTR zl0hcTx|F9b;((pdAIq)CUPNLIEu_|tk>_Eh$5!|Es}Ulizfn{t6eyU~+g4Y7s(ViO zXS$YI9J#)YI61Lq-eg~P^K+YIwnzIu!AqFSH0s}7HfenEt(Z)e@nsKzE>hzqEC2&(ef~YqOM_BD^ zSCQu32ZJMEcvT5pDsNUqf-w3oYq`lRw;utCq-8ctV{YR5QmbU%N|!S_V?);`rl2K7 z8UITZld`6=SxkEJ{ddwOc<9%-pJb$cPdJr`ZhY#{X!W~e<8QGBA&xY{7cVG>M<0~W0SmdSNdwOr+N$;d0fzt5abY-@Jh)4rPBBTy9dyorb#6YC|uean; zjcK&B;@gAws@}Yf?Uc8N^+l5gBYtw5A+EC4y}ghQ&!xQk|I+b~j2VqvM4eCXy#u7F z@`#=8*x{EUJAobt_*)tW(1?As%~OePp~0;}H;AGGTZQi4-1}%av;&*Y2`F6}l84vz z`5*sexHYIic@w6!a|iA*Oi6G2d?fEb zelR?GJU{2ad;EfLG0zAF74UHD==Sd5CSBdXLsYPFb5LPXjFdoxG2wRdHfn|hkjbQQ z%yFfH;8y5v2n9)2qzXA7ePxap) zi^pcT^vTUyH=#xr98Xvb0*6wxSlszGSX7Ioc?EnY>QVnXE-ypwqz!XE|6YLq&3#Xm z6s(3gL7v3(ZQ@PC<>}4Z^ZAwudQ+OxbJ_DPCwzk=5@S~JfBnh;5w3qTh5ya3{a=** z{U1%k|Isx3U&^lkqiI07?tfMy_WvhM1B7n-H;f%Y-C1qqRPnxeB3m*TsfMM}aHdB& zB?n?PpBl&=Tz5=Sa))-1Gy9lS136X(S_is=!45dd-VKsl(CCwAb6iFBJTvHnx@VvG zw*NY_S(+pDaVpq!r}D-7^1MYg*HEKPiwN_6-_v3e>_jJ6a95pw+bwE3QOK}c8!21( z=$7v_3n~!!1_ZA{#3jgDQUu}=wF=_a9Gnx@rg~I!<$d?uaHT}vMzLI_iq0LbtKm25 zAoj_^MKQKJa71ukNFW4C>BU7%?muwq4Kz>C*y-r#D3jRjZM=*{xMTUb9avUMMy%R=$P%Z8Ev13|31s~sdsI9l zhn7E@G-af>GPmig3q-7@dU&cw)zz8`Os(2Bc`a}55y>?aO=4GwD10Q9)mY1^B zv6LSpl(ke5+P;)V0W^4+TGGbFKOOZ3Pg@&^Bim_w+jTkYYCndZvDtO*SLJuhDJMGB zCD3NzNN6!%xI}!7X^!J0Ia9Kprqp?M;{`|4b`gc_xQzvE!EKqk6rAmDHc%y)0Uxt> z=nk5|hz!Bx?%6GDS9Q<=0nd%o5{uh=l~Ryj%>vM7snDAs*!-h90Y z^ZM~!<)^m|LJ@bZ>lfxhHoB zfl$@eW%OO7IAM&$xGXAhVdt}-d&^s;H?w1VQ?rY=x_lixu~9(JXo$apiA~6!{wHJ~*oP zKXzoNg4bOJN}nnf&6lTcw?>24c1EH)96WEH`$`PLq~c;E%jV;`7?w()l>-2Ulof z!JY{2En}{n<<1I+<7YCnLbn?qRS~jQqiTO-7i^Vs+i&7?4)1 zKNL?^x(GzLt7BhFjSS7-U0@LJd{_;#Qs#J#+4S8!+zM`7nMSFa{@-~^*E{_N_k^TQljV1i0wZm#m0{-1vT_T z?Y35LNB9IE#5|0Rtk|C)w(Awd>$N?RZnQG*8*KN5g`ozls`-Y{JWl6~iK*&JYFhq7 z+m(7Vs)F-r88Sjc@({ZjuS#QG`fH}9hYiEjD>m`l^2jfVY z)fz18H~a6R9{bt@^EI{!u|J`uszoanwV@+ZGi}y%k&W~)(F60);dHph5ND4HojsX+ zuiXk6@!jkR<}=^^)IZorq0*NXe=i__wyK;lu>{YMc@7y%2ziMGuT?R>E>va7nVC4} zR%=5C2^Wb1uG4)op>AK$JMHtj)NjCoC+!y_Sk2{)1L+%H?cpLCFse{ z(6>w%?;9QSXtlGWmM&Zb@=dwtscXTY&XXssAfW)ceT&)Z{&5`0KQ?Oj_XNKhwnt7V z(n`DT^hipk4Mf8kD|5%|Xc9sByKQwwBr&kzw4=1W%)YLAJiZ6PjIOkz0(x7o*2gM= z`-a0*9dRshwr75Rp6&MW>DhcooD&e)ymdg8FV2D{5Wb@(^l8g|AF5R0?+_#e_k4%d zLeTQ0^XgS`5vJ22#MhwptDpn=VK`I(+Fx~bbt5CxX%T2hkd(~Vc^t!uuF1|sUXHWN zg9QdcrU^em_rM;Ne|bJ%NOlCj1dD`3JIeLo26dqjj)|oR2H0J6Z;oo=3yN(lVMR3yzUAs(qn>T@YXTGHh&b!&rkYvh>CBbi72j`d;o8 zG_=2p=$;IaMMGX>)0ueHN(LI|t%7nO!lA7r6tSDm3irRZ*NeJDA@h0Mn25b;M`5?k zvgdU0WnuHGGVIX!6VLi=&vJpFPGc?hZ*dxDerTp~ z)QGV1RQho7&C5d3L5C6xaO8G%UES3`9_6{--3x!51>ipTP6&{q-cZ#b1>pxt3%FUC zjGoO0y|-8A*436HhFvqY2A_Asd!ogg&wLB4jk}dsP(WdNv*|H>wFWl7+!tzC9i`GI z)niqfn8Bfm(HC_PqACtZ9Hud+94*+Lji5y?h8+pX>M5(HiVCWY0KH0_4Q1%5SXb~D z&8M?FY~BM2%`;+=jYxh2u4+6Lzp(7xIMY-l^5tGxP$!&J8omr{5Psah%U#(MpRJ+C z5ln>ZAR@1*sEF#XM8^lw^w`LgqnR<>v5eCp53j9fs}7I;v@n@^OCWpXJa80AM{G#L zT3sUc|9n{oG4iVEDaQCK{}Kj)-?zja+Jib*p^8US4yBQX%);&qUf${{L%J%ztd&82 z^oD$>Ia&k^{~qO?ufaQ~*mTC7Kf}(HU5-c`Su~Q^bC5gN+`S_gp%h)5R!BdU?tN-0 z5oWt%T)F$1m46TbYGMd{xJKfSk5fLp+=a(?iF%gpPG4Ek1EYSX2U^C1;QvnrQ8DCG z0DsJ0tF(_#Li|`-gRsdvD;^-DT$VzIJt*{`T;K}<-2EUm z08h%zbtt108O`Z@Eu^q_yTEofZ~AFT@& zSoLC=;&)02-SaV6FFf)UcI^`(v+eLnYn+Y{sqPn55ns@metN}=2&OS0hD#NmZ?89a z=?bE%#P?TcK5gyN`i7~Wkg}yq@z2RNSSUZ>=F-?6t*U7gMqnr=k8R0<2R(8Y!*WVE zSA{5pkCdjZJi{Nm?~n(^!lt?`sD%6RLDe9eJA^n*lt@8V`>T%GQTec%Az`g3FS~}d z2hW|I&a1HXWESJ8_7%qcLLU;&cF7*D~ z%DcCG?^@C~_UCh!oqtLrj@7sdAP|s*h#PtDr26sAeW{l6p_biH|6r{_TL0y;j+Pm$ zlp!lhBa`CiCblmz-&ST!^qfTIv-*inGp|ljMdXYs;?7@_5d)G~62m%-{_dC7I2To|o_&Sx>W1v}Cyl}31K`UHabT#O zPk#J<`-(DsA|+TwoXu={56<$Q$lgjwz)u5qX`IcFKnk~t5OK+^UzF%tYU`>t*-A(xD*TEmG1A(!Ds()bGE~x##SC_der}dk*6ppURqZt~uvh z&-*;TxIqj>muX1Ca?3=-3<7sz0vlC>01GU>i-vT z6oA4#=TJEUarbAfJ^W zYY~QbWS}q7m!D{!5h2FLn<7X%k1ZaC66wtJ3HF{5++bk1K3?`-mA2BGAhd@K#f~c< zs!BV|I7~}7Exw-(@W4pp&$OR_gabu=P&IK~_W~h=n#HtO(BiYpQl}@NgY{{sUiXUC zBeGhS3&OmW6dxYgkhU(o$|DyNGZz@hCNql;E<|Y>F+ca#w8)64b5Bc3(9d8LYYxSd z4y9vpViKccfxd@RFc{o3H#c{9Saam87|Z+Fkqjj7?xxE{Prcv+W3w%U$WIZWZO zS1>R(21!Ctti!3+b3R;5hy65#Z+%E&qKF6jc;Nzs8z8vGBp(Cl@-Zt9kS&s&i>KAO z?vrGm^detpeVCoPT0-a*uW5HLZY@!+|5mO3pTIgdO6({#0ncV$*5=6LCfjK;MY)2| zKL5y>($Bft{I2o+`;?z%n~>Ve^6rEp}g2Mo70z_4IY`-O+aWTO-Z~&>k9M) z1T_Pcrp`nWy~yVblL((bD?8U2#KeI3%z-{x_t49K`VDvz@O*TrAAn%NyF2=OWCHEb z7;xQuDEDNrv}Ry@oa$gS!F96*6wd^YR*In7ZDDHaH1&=N;Ed`yPiRrW3xDH8 z;>|N=eFQb7d1cO{l4J_yrAwO2l&?7Q?tF}Y-*dX%&2|aHQzM7RKm}_9;1V2~#mr1h z^B@uexB*EZ0gtTK{Ca~!mp2YAg#bNvOKT~e4ne&I4MV~M6y;C^dg#rlJSf=%1(|2F z7x-_EKr59HE(ORZFmn??N+2YvqOwxzJsFV17~z3TL9R}3zm9~CgR8Y4`|$WJy&|6Y zRp-(qUpy9B()%p?nWHCZ{Y47c7Q~W2QXalmrk%gu`Xnikr+-6?g{ZJCKc10c;L$B_ z0x<`y2HVFjGCT~9RXAk&Eemh8e+J`REU%o5LJcmL-$>SftcH4f{8}+Id=#DDs2FQx z*mM6>iy-}V(q7zDEqQ@R^wm7P%}WGBXK0Ev*a@J<`}!-8#tMOO2?QA!k{%#eiim&$ z`hfsL)dK}ryUVUYU5p#?prBaqhwDz${JnTZKA3(GrqDBT`Qenq7EK-&mfxnBs9gB`iS_z4&&_#^kWdJay@2Q zHXn2zNESS!S%ICm5U4vM(JBBnPz1mOTNg2XClcF1e0>I}DsIAh5F*dKVkRmaSqQ+AEi;{$FE@b9Dtvm-rLL+P59qEQ(H}=elnex9LhsxhD{}G2vC`kvhM)WT=*g~& zL}fs)?o~3!>r*83|)XWL1Y*Kn*Iug z8|*EhJ%Fa@0wc?P`xCVU*(hM|)U{tqxVxi49ncMQD@Lp;S0~V`6LcIxpg0H0MzgR3 z$g5b&l8@yT`u+7>PaEhA%_1-?D))VTjYvdM6aX|Ms6AN1F)-3QHN_=?jkM*jcl-=` zI7IwF9z=-MGa*v!@EGHGRIb0jja51ZQH!8Kq%wg0)=kttG9kb=3Yjmcg`BtHef^PU z+$^UAorHT62c156btc+uq&|Z7&-5|(?z|Ug}*fqnSUz2lqeE*aXyUG8S5?TK# zu@J-7meU|UTVhq>nPNglwX|I>Rp&KLs;iZ@4eS~#o!8ic7|W{oE`E0XcrpDnQa*gJ zVLJSG(M1eg68}~V;_hlrR&2w(;j4vIEW%cb~RBlS^nwp7uDL zqi&%s?7T;1W5z*<4mwJ>b}&ACuV_c{kr-~K=j$vp4ZoP2kAIT1FwV6Bj zM~oGZYI#OdevmBMCQDDQPn}Gtr0n+xo*HzKQaT5chAb<6Ia1z~BKZkn~C!^obXC0niqsPOh6?2g|!P`*4T_gOa zQ(v3cBXn##t)nJlS`y)AQ%hXX`?NjsWI`vA-bj9JNiXZRBn8@R!t0#fFSMCg!k+0hE$Az?77xuEcW^$%_?r3jGHo!+Gxoz!I*YIe z``wugsv3N0J359cHkVeLf1Bqk5>8%B+S{hQ{L`gGHJ}9*`a=7Kt7Yu#IqXJ_G{c!2 zj`2&Q4W!nVCQJ}Iwl`3S(Rjsms#JG1i`g(t2{82q`t_)n>b_to5ocpmoJG@bjg&DFx=+TTW( zgVae)hv%nGtfL6LI&~-x-L7uM!hWQe5V{P}I~lUWw*h>rjc-Sn74>z)_B<5GaLaGW zuGskL_+`}IN8#^STEyD9=4+qkJUJ}n>thN(ezn&czcu`$4XwPA%!AMI6Yr(X5GQd0 z|A6z9>prU}JPnkxU(1EGwn?LQ{W=Hgwtl>07hWXl!pEK@5ete}7sm|5AEG!>S&3HR za{0>8w80y1z3sxn)To_f;^;h53kxMtZD$vPS=Y51b^17Nv zjGaE{=gnL(=6!lBKjT~7An4KuZ-MqadEdF~?5UB_A#qbVYeY9$Vh(*ui;jPH`bB@g z_%P+9{!X?OJQ3=d(si0osr}DrLssz!zbxw*sH8vg@$g>wUcUdF12bmKG0VK-?Q373 z%iQFg=*VkEtB&}P5X6CZtesi%M7k~X$vOE{QkQd*dSucDUr6n@fBU~ntKsWAo@!qs zZzQ{O?n2dTLesc*{^X-ExUXBVO}L(A`=$G52m6!(dg+Pm2Qsc3`x4>Rmo8`g}(>Y5@wlEfvNeCA%_#olrI(N}Wjkj9oc`qBv@ z$bXW~5uA-qwf$mpoPf2uJVKIAg#EcACC29#I=pcxV@ zpDgE>&h&nyV=xZz>f!!T_<&SLjMS~~GIt#H<3~6q;!=i+tu^;8sOQ>|RTrf39zb!=gnr#zaAKxy;eq zEi`xwbLFl7L?&PN&xGoT&xAX7v6JFmRj!29pG)Y~O5Sx@&`U9XSy%E+nuhq{1>m0p zTFM|YTvKg39Pc=FOBe_ViC&ahr>aXLFXQ0qZ6mo(_EU?YZPlicl;vl7 z$H%^{%W*7kTolcoCNkXIjr(~|x~xA=^+Sv*q-(As*^#!7I69YGckF2?-Z2|Kz&pO1 zBh4`(I%e34aio>OD6TnjCwV`!2JetsrbgewE988p#x+1wK)v8&RPK)0`40AHkIt ziI4Wu6)Qf|=ty*;S2%qD746|?GO_^|%(oBNPC^YbH5|mU9(I&ogq<=l*+sDog3-z) zkHdxTp9B}akh?d&*nf``>xy-1_Yd`FR$5ulG9l9^iL6Gf=@a72{HQAdLt&8wHVMI7 z3S=4lKQ6(VE4EX&aQ*RCp{iKi+qceq<6^g!Hum27zB@cs+p0f{L396!%0)O`E z#Je(FHM)E23;}jj3Bxx9{k_BKQFc{Q8#$gZz0>U-lE!ky4bb1*`@S$pe$v0O>0G+r zr>9;Z6}NcLeKx5o6Ft!A#F3eAN#n!Lvv&XkM;Wq41{ITR!--$L(NfR4JcWmd=*HQ8 z6hlx&L#*~!9>pIX5s9{*{3FltKgL$b@BJYU0)Kddn9ko|>@ODisS*UC7}ENc3`Mv2 zh7EY-VK7QVrr5L0C+eGn%sYJR%t!?|p_dveGjRUb=&6(cZ-| zBX#7rv~W=9XBV#@BKPgAIV+L65#(`k!=_yB*jW?!*3$Xaa9sBAmcwFr?04!xjS-xM zoWK}*QTCJ>d;Myv2Ll4l`Va{9U6y21PM1gmF@r9;fBo+1%#MuL6$9k^i{NPj@;{hz zzCmzXPj3#aoW)?!Y$NR1{4gvL_tBABPa@5OETB2T-t~QSD;cdZzRee0E#CUA55HM? zE0I%7A^SP~ikOMjD9#-ttSD&ji~xH;{H4mfZwH$s7O626y~N(OG%gOpob9PgdK>#G zs^K~bnK3sDe7htSz)+k0qc6#L!M}_ksUz(t939LJ*9|`V=ZRu2jU>?E!Ly{Cg{<3c zSwD_S!VXl*eVT&D$EQaC?1RWRSbMn0r??(+XK+Dy%fR`AD4B)_z+LdG|Mi8#g$Rb& zS%x93z@X7!phfBDt0B2Rj3+?i#Qmo?{70?*zqT53=6|`f{0FB$ebwr&U@1%P9sTVPDV*xj!7D~2A*RUvk{bO5j!EB?30<&3&iRkK=YQ~x|HIDV z|KRE2W)4W3V7#dKcWO;L)_r4RC;QVud;Dbxc|!5T{j@h#7Pd^|S8{kF{x)YyDJVaK zZW1UEmI7_4rp6sg>{LPNAW5ZI1dIcquXr4$dyp*%xYv5XMiM7A{rDrozFZ&gOpz)c(R9ZEYYRyF8HtrI_q&^NtuE z_;%2~PXI>?(6QPcxVKjJ32IB%XVVD(YJ60(s3Uvv1tYe`k{3czx1pM1!`C>qe6s@XdmR9V*8_1mYNQ0~C0u!S58v zNXJ<0ShVx0pIqpB#0*6rOrh+LA3r7~=`$=pL}>WP0iVmte#~!4Bp$j72Q}SU(11(; z<6R@zgTRNL+q^HQzK^&0{TnKw{Z1E@_oNa_N=gFB@3LS2Q{ei0q+x3~?4$<<2QPYk zgR&m5aOC0zzIYTtvJYhX2j{mIE5^si(QB3K$UeIzk2f_x1CiSB-2V4a1tXMh_J3+K z9K>RX%K&feDv00;I;?zXnl1;g5a)GW6ZyZ;0=Ndvv`pytU?uq5|6^`N{{8=Tl>Xlt zGyfn$|Lx{eV|0**!HCO+a_wim+VSNbus@IkhX~Nww#9O6{4#LqC8S%GvQFI3|G`3DmOe{&|D+YDu zL+&Tl&O6ZV+A1pCHmPZ3|C|Pf3ZYR^ByKTLQA2}+#Oc*t^IC8qW0ZF9(Jx3aU6bGk zYNKRUYxutngY~^VU8+W-q6=qVza|6c2eb9@YJgn8-2V-sa`pFVV z_~ztaqy3Zb5p|CJ-@yjKccfIZD5qKcEY1WQ0a9Gh&jn7SK1kA@#3E)j@M09y)uZ%D zA%O*H>gp-KTcNrZW&jd_Q$?NIIy)11%m>Z$s=@nd)XEXW2uD@}YsgmDVu5MKAOqP% z5EA|UN)RSgP%XTjw-iqE&fOe=Uc=4~WM%&Etfl{lMkx~Z!Oz!4M63zMN42i?{rlgx zfwCzdOPpRXv94EPw+Ktu$k8uoLub(YS_GYF$`DQEOaC;cxwZ8~*~@9@Qy|6!&;#J? zt!=z&ZEJhZyL)tkG(XViY+XT0tEY*FhX=+mL1T7%Q#R6^)Ry`1{ zSRXCFW7G!pK}6g<79`V-adJT_vzs^i^tHXl9)DiOQ~QRl6rldMCH z;(}p|*P=8=ZAsfl0AyS)Y-5*w@{$S47>I@N6m|NQ2ocmrwS0M z|IG~`4sooPfZgbV!rc#v8w8Nqgdb^Z5S$ZElW* z91aRH&w9sGBuE(%);y4(GL5-`g52?4qt3W;mp!YZEF_u;cKA=B3_A``<`RhS1li^; zkhu#XFktVSBS8Pc6hZiv(8<6*?bHQsD8vgybGy3ScZ;Zxe___1o~(D=L{?H!=a&Cv z^s25uDg^*fQr`G*UtbtNAZ{CC(|*r$-?>Hmz|HLhadANB-SCJ|lG)Y@W8#O7h)*TB z4?@eX=&i)4lxf42@oENsc@>hBTH;s2uri&Bu=)tE-nnKLuH9PUrlJ3Qa5}O-(a3Rg6%U z!=a1?FVTzgpIe(8|Nb zxQol$v8XgVb7Z2YXMkw%&9@hd>RkoR<*V`UE2sjUG%7oymstY@JG&_9WeV@KMa0kA z{IK2HYMkTuFI?eYi+fhdHj*pwW|B&02*AQbT9F+rZ~b9PV0bP13mN%P2m&Z*Ru+4d zIlQ(g9f#;KD@Av%G`#CO2d+?&Xn}pYXxycaIB{mw!s4RS zW(yNiYylIAr3zvFIutBvh$|s`R9m<+25wO9vQN^{x%f~9*-)Ey$CTZL!FsmJn7{$< zl2z+1O5Vz^_seYka5f)eZ$9+XHhk`P<2`!@vt5M1s?)dp2~NAp4t?b!>30yE(IVAF zplvtL+H^$UfvA0yGXQY1u*|%w9tY#Q6_8_*Gvc~|DF&#UUd$g?e_x^{_i-;XG`6fC z{P{^MsCdn4wKE;uacxwIVuQaIPBvr%F@C@g2$XCK3`kX6ieJcK5ySIR%ch?Z@aF8RcpZpEgFHm>2 z1M4kcD7cHDr$s{b2%l>B=$mMkF?DC&+@)u$6c+kDB;+g1*IztFAjheIDD_-m4n$mKu+8u546T%~#Y;-dW$jZ%V6kInR+EoSCrP}fVM^Yua&p0KYb>}*$+L@K2mS|t`x zjE2&rKhX8%e6-1#Z?CI*tX{&D<7+RJ!kkr~a0{6=QhXR?Be7^f*PFskFjzV^ zg{#Q7d-BBtDpnAH+}ntWAq#5iJ9^9FbWK_h8AU=Bxkp~{14k1-OFULz`*g$*16G0| z)XJn|^$Yyx7FcN`=`=d+uRSfewvn39l5o7S7T4o2aHaRGkN$&;@z{ub3*Wb5$X0uh zKnB3;HXxn@tZLOmEb%_O2oD!IyL8-Rqr~jU#bNnoWlKC8ajl}wPkUODL@kgdhqe7y zOWW>3McSgihFYP8f`;0Mcn~@n_)wmK>)8hwDP{^>@8gQ3Re}BS!D{O@fqh+?eoF@( zX?&;Q1UhxoBy;VMN(+n06r}@WqPYlzdz)U9Ryso}0||z0#CDLh3Vu}W8??I%$`?4a zXoy&Nq8mQ&8x$87+Kht~#C&Hwk9lN=(Vc8u8cGQtuZLomJ5)bQPFGiXmM`;K-Kk_w zq1JQs&#O$`HL+j!Doi1&c<4Vm4bwK2qtma99B;i!~s81_9yFM~dOm z;*xtS!&{(Y3ewNZ>$Ruud=$iD&4q%`8v{Vy93fL63aP)1PC$>guMO&sv;}gzJ9BoF8lDJ1@ zOcg&^03r2M{#*wwx5UHqb#K7}2+_v{%TBTNXK4!Y72ufzg27jD&V^3zzwLfnn*3uq z*3kkUPRD+ow|JGOlAT6hr9pRwYX0T>TQ)(|%6u>F^i!KuBV$*4ia)0Lsx~x!RL1bU zCJ3IV5PG1G4~$6YQ04xu4?b%Y&4Gi%282hk5fS#V^aumm0Wiz(iqZe5c7UR}+s@K} z(GXSu7BB@go2geG8@edFbcmP@t_ttFTR!J;xkyLv{pIQN5p-k8iCf_Od?00n-rCEc zt+F;*DS39A_qMY{Z9VtXvy_!c?XWSLDWrm^K4)hG)+`|_Cb0qa&cD?pW*1g^#D*v{ zH@CC1v*u)X1i1tw;~v+vk!9^V{lTZobuGPkgan$ZatH%6SP4QB9CzbpcIP(2WCk zVo-EmuoIAHZEUCggs6_xdU$|`CWMbp;P48f-+QLrAov3yc<_z_OoL z?p-cj5g4u7S}1V)MzH)1<9b7y(Ja5vfzxwaii7gbvyPn$V(O;4B}^P6)2+KdRDA0b z$gz*`#E0>Ll^q(v_XhR5Y>j52ja7Nf ziErUh7vb4ct zJ@Gc4?*zCWyQJBlQEf9Xn_x?eenUz&8Wah78A^8`1uTTayy_)0Km{fdr3*F`O z2}j_NYKNrwA`u5==r6^P&xc$GB7Oxc%KHSE>9f3XNE8wT4`A zu_TaVa-GD{+Xw9{XTXErICe|gvzFa{$=UyDIVQ~)zO%#C!ud(iK#=^T0bwiDpKey;Gd4zHnlbWZmjztvd7YM>W>W?nKmC$60uE@|} z*o>YVxOyrw!Jvpinha|)HZ8Pb8d%~z2$V|@J>vKSiByuB-xp}VBmR-FfntTY5(*=TB-qZN z7Kqq&G|P&;1+uCY7&l^GruZOWZw57fNGW7P?wA@;iGsNu84>1sM?WF?6Sig4S0`Ff zd%E$oIgebQ7L_J}mSb-zq`TCTCV(Q)K|9a}>~>1(;Flf*ZlABBjDH_5^jYXzXJBWe zm4{SRZS|+@mk%azFc{+UDtR_Pb~x^D=NXmq+fsUmG->R{QAoLOzk-Qs^GWDTT~+7; zOK#khh3~z?V$Qr`$5Mk7kvoU|`d#lklLN4Pjym%O?d7*eoTVZSOg>Zxsp^Vz54z zPu>*qkn-fQcW}U_g|wP8H7gt2H8I$o&I~_55Wfcja9CC@ zkZ2RItuu)nw196Mfzu&m&JXjz&1-G$SAWWQhZMWx1T5U@TM#W>Gs~u9ig3mW!*eS2#x@O z+2aNEvM!O+sJ0F)ac*7poj>a<0WugLpFEUC-jt* zu9!N(o)Kukh^4X^R(fAK9BmRP0)yBvN=HpyorFIduATpTKT*d8vkuv8fD|yqy> z3DtqPh=^Gpcg_?s!x4o+?5vpQ;@^z3jbcM7W*qgA!>xT?C zZ*;>GE`nW1bW?d8Z$R0^zA2DW4DwaS?jGDF2Pf{OBa~R@5xEyTM@K0=?DJ>Yqi$_J zPE<8;7Fk_d(ky#13I1Rc-QB@pdT82r13*8Jn^J>vULpwG!*dEZ2~l;y26M@7mr|E2 zIfn|Q^&qncSbRttB44z$yi7ms=uH4m2X_fZXkeI^kzukt_&MY}2Pz{wyAlBMu`w|Z zMny@#c$}gU%XN{{EfLT?jz!%?a?vz~2PbH#yGiWQa^rsb_>ra%U;p@uH$Cm}>uzn} z-+`rI0y03obn{BHvdmz2h@95J5uLameiX8yRL|3e zxxlQ4kAbBG)+(B}=A7Y!qYOGuJ2ZJi(uEzJWdKcI2^fZYj% zum&2tuLNP9K*OXEe7xfhpnJPVTdl)593l)1+s`_cyKn%6@36mu5mk{pG%$dK@31zL-?fT^3UcUjLHFOvE~mP|#A~>j zMEgMvFipRA@5nasXcXFl8MP0)#4x=e)7SY~SxfLmT+3@*T)Ie^`s-V4-+HmPp`oGU znDj>@z^P=crRwtufH8*1k%Had`}#@F?28y~7I_+_b6&=QC9CAhd>a+l9TV>*nZ2?M zRg?SK(v0*xpEVeK!-a;jK&6Z}PPi`gqr3YLhF;EHD2?qV!qkK2%&V$8M%V-(EeU3m zVS490$4iECj&{r^*4$jbL+{nrxOVdnb(GzkVJ8^ zc;@@iD~r>QQe>KY+tx+!0uCuwJZ852Wtt78G>?OxF(X zcQ?lV27+`6?JDL+ZJ#-tX=HcbFcF>IbAbuZU_!Tuopg6k#GJuK;q=**Hm`j}`IHBd zmwR3P3xRbZBiGb0(8j(JfpV`^4iytZB|XY0D0m5v4D^d?pq{DOjRjOrQ@}fzEH?A&~feb6Y2I=4Wbz@Sc!(Uf0E|KB`QUPbhU7TK3ZAO|2+DR7_vd+4`9HJ5!)z zPnb|B66VrJ|4CZ=LLHL0Q?ET#ZI1#6--4OJv%ku0nN+~|{A5cUw!u@|HVW(KUpX}7 znAByOkE#uotwL{F=gX%>8!BhTns*1$p_yE>6t=3Hg7V-C8TL=mK%eEgdsiyKECwJN z@KXhaN`UXP9Yl8*i1Z+hm5Sk-MQk zdf*b6DQeWZyV=?nwav!dF;;MLD%U54kph_kQ!6WXa7+Qe(pH9{=RZrXf}$qHWgs;p zekM^cXF_e`_j_yC>FFSm8W3AR>`4K(asx8_&+_v&#ZQw(!iDypt+DmQ)+cOz*BS64 z9-Wtbx%NTdr=VamGa(eE1#f@_5$YXUuAYt50^3IdA>h4k)!}e}AqnK(n4=p&>0J|F zAMEC&q@?&LV0O_c@LC>|nNtyNE&{EGRIOTz1PZE>^*s+;K*xm+Sy{s1cEfAt{FtOqf(fz)<^75M77h0SFyHfOi_dlOg0 zM(u}mNRCBz*Mx-q4#!XT+jWa*Y0pQ}3}KvE#!K?1%g}y9Y%U|DsaUPH+Mrpixm7trV*(px8{QO1b^Pub(zvK}Aw^(LagkQ-~{vSVH%BPvBXc>1jHg@;OspVO*;*B*d zDk|D?M)yb=IXG;B;U4=Yv=U=+5{vQsJXh=okT~Z1_xz_tr>|HWHgae7 z6h9doxnf+F9(N@}EiPw=|L&QgzG~oFDIp|%Qbc<3=^4>w(5f{r9f?<%2Y!1kEZN{r zR|_!;OgdmS1IyNMo>WImG$h^?p$bNW1)ew>6?T~;urIQ5Ki+79{X)hwRnG)?DK+VL zKhgWRT23|uMd9D;Gh>&#J?hw4)+!;Qnb;apE%01>*87fiK@9eV`}r~0eOg)r${3xo z_diHutuGFY5A1iI>+)FNt&KnUx;5c%@as;aYGecBE(7(|2a%=Ga%$O`-4?|O%_14O zDQFGcbNLt_?Jr!o0Fk<)QAdnn>4^M|upX1*kyY5ptO3`}x~L)7qvh;CML;7+XB#~J zT#x6OQL~%9kg064`&`u3whhO4yzpt`XQo$SZ&eQC&2$vU?klg8J@n`)-k>{&p+f7I ztkirc`5QJ;NE+aYni_(gT4;&BWBf3b84Z$li!I9vsyzn)Gm7(Nlk{68Vs^E2q4=&o<{M`Xq3# zF^-!hVqP*LB9Pp+HzodP0=q3~ZC>i9q7Ym(b3)30O7ClA;JJ`fTsSf_b=p&8fsALn z|5mNN^~}`1M|{Fs@E7X)l~Z~%3GQBxYY8!eW06P@zyPX|IE~qmp4-Kmgt2S`g>mUn zJA}amX29>_0Gt3@BUPeQh%6wd_Si6kNc5*OnTlK`zq|8unp(})g^WlXycT4R*Hv!gLW3aY>=C?^V zP0_FgZ>%b7T1ACGcIGy){jAN+j|N~*3;eB;BPS&y$go#JLI;Pv>=!^F^dR&HW2!<8 zQqKU{UJ8-P$UUV>vI+kFs#|jgH{FOh;+$lUH*5QkEWhI~r`|10AF~{u*857N6(HG_ z@(QB8?G;ED5ucv~zQ?`zzdagDLRvpBn!M~M?hP8Ec*s$s#Y7Xhh z!r1oJrPr>ji4U3N(Fl3onI5`Krz81XA&pe}cG+;LgX0D1aZm1>GEr?r>lnYjH|(9i z=(%lRkEaj7$EN9xqZ2Tco4f$gC6M93=>wd`+Z1Fl4rLU_q&^Ymvdi`ssSu!4i033Q z4=-M3zIq|4uP?4utY&{bc6_S7eSGQrPLr8rh4$I3=^+Bqw6`IV2^u&kNX{bx87N3V zzBm5&8%VIk+x5!S`{KiDAnow*Y%mMgus8t>)3i$g(y=Cp6NygPleA505JgwK@)Z* zb>28vbrCCdoHvh@zEM?rHrjPjg|I{^D;`*Frk`i9K7LrIpL&gJ-9|Dh-W_HY%!E_j z_P#{t)xmwi>jOjHt{W3~S37Fx`)=6Max~Opb#&fHD&>jGly-S-i2H^ym}*r)9+Th- z)_DNMRe@hDs2X{F13YGz;8r^nysqPF=ya2W3|Jq0qCSx(K*1IYy6V1E5Cy*tL#O5A)EgRHO720kn{w#y3B+d_Ylq&=v?Qo?Ztsje{^^f@6`AfR z)d!9j=O`VuRX;szmO;}qY1c=~U)L_Zv>+dvT7_YgII`*v76IS~2Nv}d*xtZq1qBX- zlL!I7Y-sq2b0HZPN5w+2EbtLwD-Al~m8a+<07*Pg?3&+r<*+_}^7R}(WQPs_4+GT2 zS}1%LX%^X{ zS`Z#dNi~6!FXGdUxCjISsCA{V4V=62DFsvjUIw>PeSPXqm*8{WSUniJ$U(6A3UIQ6 zeLnyK?LaXrGW+a{H&f}_H>xBFP`buOH{t?6ypX+=G_MlYh{lYLxfp%V*|~>Kgk+q%=84af+sMAmm^iF*t;BUI|eS1WQ69+cdkQS0<|s>T^F1USGFpf^eF|S$}dB@MI);k?3cd2lbx+!gxNiGH~nXbqsYb` z1(%0BPW)3t>SKDSB(KIs!K}kqXKlwluZGYo_nk?hz0G0w{q2=8MadW|XTgN;U5knu ztGBUff_0N3CFNgMrJ)C5!_$oDlk<$9M|oPh&7JC}G0}k>@bPxv;MUA3%L> zGJ0|@A`%h=x&iTLY{OrSG>uDEcD8br4NN2_n(t_^l9{ve`~INSXh=B401X1dbKkLO zkw5=qGt$3o2Zg_E2hnsnGZG9@JuCMYZ+gVOF(M>p1HxOQf zJdg)Ovyx3;Ol2&-p^>BDiAM+x+@Ot%!Se1Ow!=r@Dqt+=)NzykQ78Io__z`SgMWU9 z&BM)YOK%{T&i6c{UW&h*D_Ot?J~QW(Cb=C&GqxLAk!{Pj$dqU-C!!Dh*W35Kf2u-t zA2CuJbTrzYb`fSvyW-zMeEl57ot1V}^ozvl>K$r9^z;S%d3Q3R^OM%4tLl~K0rz$5 z!)hictTQx}$nn9Le*xkjmEp?p z^WWP;-VnoJqyt}}*~=PI62X`c?h_D6C{-fBF$__)cgfBFFAWHX2mt87P%@o{|%_ za5NJs5nVzdclA*!nYr*^#sPnDkN>~l@c;aN|FW~~{x_Z%xpB{{2*&{QjdF8y0gw$~ zc|gtcpvm%vj$o?(9;Xd>r9JW5iCO^hL6x?e+Ps7D?>GOPvl9R>Er5ec22w1(-~(66 z6$cln>$V#Lg8*`j2$kKrB4}bgFEjIH<=Ba~^=19Pg2R^PCMKYEKq2B@HDLBRBjW>L zyMdoD#Q`LS>s-$sDBc|gn`>o7Asz@$&^g@Ty98YZ!$eD2xer#3Pri_xf}9h&5P&oc zuYV&cSP>6&hSI0Q)bH92fBVtTK`_zP)}|0*WoNgtwhpSzNlk5--him75hN4Ic`YD+ z3pd##1-KwSaP6=NkClb4>zu^w_h<6bfsriw%)NHP;PB?p4;^!&Gz1A zB$ViRDxJ@_2Ful3cO9U9z~h02h2*&;VVLq5=5~FS9QUKDMi)0*-_Qh58C5J--2ddG zaq-7~B|N{4e}_>R1324CT^3IY?l4;3(SQUi)Hx(Xq9T_~Zl0q#Q+iirEAXhs!~Q|< zM;a{OK$+6x%+Hg`wL?sqTHp#I8UPjUsJ3fDcIDa*mDNMWEroFpt=g^O#tU5C7f*st z6!RP!;-czWPmhZ}ZAf#HVrM@lh4aL&-jG`uSL>gA@!eXC8LJLt1Xk<>KKTNM8>l6n zl5YH92l0!~FS)FGQbcGX`nQtIV`8E4$sHN4J3DaeD%?=81b{unC{H=T=B5m?a{vc_8t z)AQ(LY9DkzP8Vr@h)igfFy-$*=3`wq#dde#3vX?Z(yX_3`?ZC+z=xcv53f>h^Ppa_ z!Jb%tN-wXHF|#Sv2hMADgHPVjVEH9;J4(Bdd1Z>Ee!5k)=5`TLk>rNACrWVs+iZmH zllisfq6EEVY~Sk)FyD3Ggr(=c648AnUaP&mop+Y;n}b2;LLWFHqGs~I7b9Sh$vtT% z!A&hX*Rf?jhNkgC=A#&pfT!8_+B9Ex?sHk2_Z1I(POI@}$uhxzP0)Q$LP=ZKsg^!< z>;|E;e*DO4>KB-XJ$GT4Rc~R|ne(Re3z8N%8H+|=o58Mw8Y|DE%W-Ot|0l8V zZ|?`@$emjPz^Q^bGNNMjIu=BxRTbZ+cW;|RhFBEFpr<>FU+-)PWk<9rL4~RB1Wm6x zwD#Xmycx=OKV3Cr>eHdg=wHW0X~@7Z{YZIUOtcmnE6qprqV>LWb<_0oL1uU$BX}Uh zNKh%f8uQKds`<{YH?;5Y{=9L-9xptZnR*4!h_{l(@AsUVBIoxUgu!F^$3$@Vq5a71 zKE2|~yQPO>K+1<3ActF1hz_VLQM}Es$368`Df82<_CKe{BX*CV6!b~M=IGFndHp?` zu!ra1ZMYa2V92+bNpWjqd(g>a)jKunkzwx9CViUpgQQ}#BOUY@OOxs(R)}* zO)#K+;-yta9GUw)CZ2T|<#lx--{GkZ>o%AShQ}Y>shWHcP+{pVp^rSIXfE`~is_xU z^|gh(gXAl#I+N$57}W^jS~GlMKQCZ33m<$^Jk0(i*B{d{&c&qRhkeiwOPoPH0E|Ed zsIsEsp{%Si@Jj5L`cY9l+}vQ{=xA>*AH!`5HQF1>Z$yg$H4UXh$o^#{%649YJJ$nq z)cx?tKzF@gdsbc^lY6AJ&{>DU7yLh15vbkwC&BR<&qvFBo-OojLo zX?bS{;jf=@3o)Ga5<0o3$DQ2Awk|^S40*)nH=zFlWl_KjfVU*n&jB*9I$XqrE`-Vp zsL8<4hvX!J3xi!U7YRx%3GPd{XfYKG?G&v;4Gz$2gJ zLg}omjL-Rrw)W`wc*2ZxRNEKlou#5K;mV^HaA_ic-w4+1JL(bq5W69UjGyBR+rm9yqda{-pBtZf79IiZJ*KGDJbo>XCTUO zwt8&%3Dn|@{2ixAWj8Q{U7(#$r1{-_4V8%Se5fYeRa8|kz4^7{jD+Wq`%wV+aiQIB z*s#d_u;Z@XV8`pe5~P0k)H-s`U(#ayIwxuPcpelF_|EXg%7>;b=!0y}utiJa<0nt{ zSFJr{z02TD;lAO%{O0f4u}n z65Dd^9v?2iaa)z{9p(V8EWM8fOHBOFkG#D6o>X>r_Rb%IQ8$i+QjH0Yaqa4SjB^*u z?A&XKNLCL$7$DTJnrtmKr&p(f=Mfc81==6o!RIjG&VZNE$0ED|3=sSXhjL3Nbj1O>xA68x=${s~fMt zVbt0hxGE>WhAGmuu+m2nbmQcSRIP^PbdtQsIv)`vd?~>#twow0Y3Wb-`7a>B2zh45 za%~`UfYK)Xzenm*y&Kd{VL$-T8q!mc(t}UN$lou8F@N8gITIY^ivE>aD?Epv_4`P8 z8h1H!%_`XeU#@zK}2ajBn%h@2Ve1HF`b@$U>MNBZ@$7}df-ic2Q~Fxwbhfyv`Sk<5>=3?rJ+0uh?F zb~4z4HM0R-`jo}bri_u|k?EPq)4cmn_7d(g7`l)=fU_8Y5woc$9a_5f*b=T6tL65M z=Fb=T0{#1VUfBg+tFf=Rg5w8`PjGlSOr0|#{xbVzGAE)C3oOa&deG!Jfbs#xK1`I& zwtmTc{kqUc*M#y||2`*d*j@{ggwC+>=X-J{SIdsiWBu{yusM$$&tK@tY1VKtXr#>t z1sCB5-p~xczs!$MOP5hxOO6-Mzy332+nj}ijs21-1aDjr;}5S93*GFL68<}#+rX^Z zY)mUNUU=)H!?gmnL8r5{$Ue~X5Y+gDw+`w@_GY_Xd)_wE_ZINJ`|}uCFl`>RTM!C& zrd~iPanw%l?whc|K=^nYDhx3m_gm$^`V)&6{kUqvJ29UYVEfySo2bY7Am!R?lJ>d|XrXm|%jcq7N^IyBdaN#9Evu|vz&ycCH4tI10*6==st0c14@X{)LP zCmY;rYtzyiR~?$-^kDb0y$nvjFca@RZ{YX3t1DW=6^rt5`-y|{qZ2GE?jym_+uZK?W=XesG)guLktg!>L1f&v^2becuvdl=;TaA8**cy zgi9vu`f58Lh$fRS7^*h^`~DhC2tabP{^zWZm>k|pFfY;pNKVJ-bb!%=Hsn<4^djec#G@LD~f5pkLWjV#kMA-vh8 z#JwoaibyAC`bFz9_$7Y}2033VD`30sN!d?DS`=-KT<#v5P( z?nwk`Ynj8PI~$Lf4T^?)D+eGC8`k>fv>|J1ktV@&Yv#&_*2!Oad7N4&kj}T-4q8H$)e|= z7TI0>IRnV#rdR89zm$}uQQr9S7CQYUjY#rcOhy)uG!5aBs%2ZLU>zhb%DbVMpslAj z(ce#mdl3p_cP)N!0!Mt?YSvBwRD*A8>9Qj)ux=Ws7Q(XCo3~{my(>?9dd9CsGLW@H zLmB{LV7@)N2+X;m$^@L97HI zhI$`7Ui3*|(m8)QNqXw1Fbx=lGW%71JG=RswJnhfcUJGeRrl6mS#|5WI0oQ{fJiFR zC?(w;N{6I$ccTa|9g0Y)fJk=&oI+GbMc8H%=68dPihA--GeiW2DGcAgw>V2r3pzn|FHYESty35n5>Xci3uzSe z4G$_C%NtJ8M^o zb9?gn-*$5i0whK_NBJF-DGbKM0xuc1;BA8Q)SX0$mtLsJllPM~)KX{-c zvXBPb%T&d8{KK;fJUcObmA?wl?slX|H-@F(fsrDFqg4qE2CUn=LMOH)uO8_Ner)tE zUJW5i#wLPIb_cvG)~`k=4fkU7h93&W&uG>!pDa@9qWoG^s6pm9GpH`r>76f^QYEaS zcbOIGsu>Fx71{17opiAYX|`u5P8ckN1DUD{4*pBjX(FfM?n87}Y}kpM9CuGP+*tHb z2NT~SI)j;DP&YxR=9Y$r_*}ZqxZOO0`Fz+tGIsa!<>f=4O9j%Y5)QFKBuCuGbjAQV z_wkC1-g3)w3tjR(jthosh;$8ojFx4*}dfZWdx1wLsmye=O(9$;6esFKvVxA~o>5gi8o3XJ3 z4{S2zFxt1Ki@g`LHx8%x25#I^msI^VXM;W^lJlUwjaZI2^s*9I(U!2ax;%kF3mGRk z9{S_}!k=d#OHr!(xhT~>ULenSX#`6iGqfqfnB&Gf;=429H?Lj=!v!faew`w<+&1%w zvZHp8_2wCD{B+MbUyz$nh<)TnyyEF}boo-30t0Ch+l;BmU|JDFnlz0; zK1b;NM#J#j%i^($@3#X&v2$MX`28eYe$Iu3L3I6MWJ)#+w;61Pg<J$)S>J^?h>uPia)pA)4WMJSeqGW9RI zr)GQpkGjj5o|yQ*ICmFTP1vQUU)tP#fkD^d)PH8T!%gHP9l@BUwsCHf?nZs}g=aAd z%$5P8=2X{VtDcac62^UuS1lf6QN%V;EVl9CQ8()qq2BqBho6+D1ada&Y2bRFTOIK-alLIL+^% z!-(!+tqJc8YmBzT=i2A6Q&8|;M`STPG35whEvh?Hu^w;uUU(u=6;3T7QX1F16{Yy| zS>inkhwD6@{JCG#8185jOR92T`+UAb>wx{mJ8O1!oQr4?V$7DJyj|?Wcog&|RQ7gu zH-z0Ee7u|y1XzZVLIe6_7qyQ!3Uw=%0N~~US>{oG`y}61+CTL8GrzK^E@~7C1vVJ$ z?D3Hgn>5wy9cNz%&^Znp7boNqCZ?^H?C56mkDd5Zk&K!3!Ec&wLeA?m?CY;K(gAfw z1{qLLwHLIBBbd9C89J?Q$~emq*l5urh(!hNMfJ>w`5HhvDHydIrI0EMQ8h6jj0Oa# zS?U`kY62z}E#4a&fUNcvA?(D!XnV761+aEiO~!!9Ued8j-mPjpVbL3cjTcRP{nAq( zV+h9i?B17Bg-DsriV?t`1`XPj{Fei1Gd~+K-B|;t68k- z{rg}0ke|*{HSwz16X^!k^_u5M-~A~d;BX1HY&banK2p%!vg7aTFgojH={nz(na)8U zU!bwHz<`6-;ckCeyn%zEgh8G}8a`MOe76Gu77<#m+0R0@5D2Tt|1I$KMtez)J)h zkl#gd$@f?1Qg__tA3dL^hDlW5i#m7^oDQ5C&IzWzNl&ey6D}`#z$bC@57*2f@_o#7 zXxhY6@nJ-9>N8@QD_qUb@mh|NzCx^~H}+=wS`GTG$typ9s=pGC-g}^bhQrcw%>PGE zmQ@Gq6!eGn{c11#_f`}S&f^C(m!Rd>xX(`t_<}!v|B%1XNb9hR|5ME7H(q*90k93IM&Q^b54plc+o34;QL*ST)9Et|)j0l^SBGli zT?IRtT2P3lm0sYa<+8YCvrO#E!moKL^zNU|=cg;{3F%j*-L!np!C4+>m#8gi!`cM% zd$Wo3j<}5HD#5@AiqXebI7;PXv~P9Yy`nSEA?TqwCGblMzA`U5V5#+1FkB1PG5Kmo z8)L{mJkemH5dey>Z!#87|43$2`Q4kEB zDI=ukYYA^{zM*4jyLbun?w6BlSsLJ`b_PQZyBpO3vA2i=V`S**S9N$48V6_) z(1c#@m+)34GP8TLdN;3chIMLI#5JD}v*zIH1@$2!?Ds`Q1v;jh*IKvwgC+vzGnn|LH1py!b^dH0fvbyB(HatLz~>&NW@_{sHE(L&QX=zAffDdGL|1*wrkDKLzs(Vz+-+^z%Pyy!E-b ziYgL4M%%#whCmGNmCO1b`;pIl&Q*Yth$c>n_;X?d4Jb+X(BGz7*Z-RP;$?^wa)K27bI@=OVNqqNGqmTzu1ZMn0BMR z7_D0jo4^cgaHD4pa1$w1eAqHd%}`~U?y|i~YvylsyNa&!DbCS(g^_Av1E(roh&_Kh zJ&F@00_(+p1xCc*sfHUtes-r5EF?YxACufOQeX3nJX$BZulz5K=DCw3Cu*uJhQ2 z{6T`>k>}v6w4OC>z~cdR*7JaQY2PYa01SV)O?(_EjGloXMTD7+&5fUIGZx_M^nW}> z(!7ojwvo~ZY`5l^{uG|x%Kxu#>DU4|Du40QHZNH%~-@+l-#q zumbIQ^@@7HNq7SE9fxJCIIvs81-+I3G)jWw{Kt&}c18I4cQnoadrRjJHU#wn*|JMZ5L)a9 zxm0>{@v$`k>TYYkLuhftVv`8|nj~P293C2iw8R&Hv!8wdG!S1`_kg1>u0s?i7LqQE zT!-#!=7SRu1(YKshVCYvJRrpoWi+Y8(xUtqi)j=}?Bu_F3pNI%dI6xk7IJapF5gM- zh2&c#HSe89^4~gAke6oz#U=VaZEZOReY)y5+Ql~oX>#9NN77Yf37g|CYZe*$KoS?u zbx>AZf3*Du^So z>#=xRP8dSn2SL|S`$`CPN-0an;2Hu8;)$O1+TXSqDb*Uv&h0N4R? zgU%#@M*ugB%npdvcb5D3CiCD0V7*wVJ)N z{Y?y$w~Ud?JpS^|-e`HR&ssbAZMh7B!^!t@s4hX?ApC%reG} zcz~M>-)|Hs#-@Ca9Kye3GRS**9Ra@`#B&pOO&?vRMRWnQ@`C?P2o5+FG>VpzsIVT2 zcp!J9c_p9)JdrOt@1#zFgF&_Brq+D;qJ||uTQg|q?`dWpG z4408Q)%#aw@3ccxA+6enT??vm!jKC=H-b{^DGqQHHXj6#5n^E^yjnSrY>?oIpe_Iw{u68uu%`I zX0`^iR@7iQ)=Tb53G;=|>cn3g4l*;I;NO*qj6}RW{$!i8G?bt~rO2i~=q34fc%?_C z$HRQ_>8a-PRI}vWj>pZPo})L@Nh2DX26(|Dp7#*h9toEp;#!SFisD}0v;XKZ+%BZ> zuKC#$8dGX$5lU5|;j0riuSZsj%;%leDnxR5KMIgb^6c_o6eBlgWlvyf!Jb0+&hkL) zWWjUPsONby(%n)ce&!QdB)BD-Z5bNfEyB8;yuNKPAOvgCfdSj~xmo>}Xo z+Sf_C`i%hI5t31b09B(#&kq88Bs!OsFldj!L4{_10j`SuXfis^D&psAhjAlxZ>U$j zlSE8km%r7zB!2KMjDolryx>IyX1K{8pipG9ZvASo;Io=}uBS25ZM_nmNqJ~%3kae8 zLCxwR@|?9=m2tDo3{zZ}G@0uO%{hG_-h>u|l%v~$Qh{l1ktY}<6GNM$<0tPwNs_j7 zmHN&%NDR|NMczW*?&L0^)Hj=RHFItX>t_SWb~Y+_Pg`C*Ch_f^bNmDSb75k zGbBZJP7^cx)y`%;B9-fSxIP(t z^c*R~2M76Mg18q0L@Nuxq?IK=qTr1(x~^U_y@^^U0zUUV7AqXOQZX(V{;v2dh{UtD ztM81Tt%}reL3k;iWQU={cf!|P=EFKQVyW!JGh8~K=y}eAnYpbX6+NZ)-Tm5RDK87| zu&I;nG}VE3m8NB56)=LXkWrfnjw=8(l$X0eDIoQndrHm-5of7++iKO+w-a*+QX=}# zI`BdG=J8ksXIQJ%VgP1C^|im2?yeEJM-upaE(N_NszP~#H2t*v!yLxm1&Aj9(?dXco!v9%uRNayOoCz zy$gktu3rZ0_df?;;u}``ot@^Sc-n%(+2*9Jr#HULbAZI+Ss1T59&nehqKA(KnupQ6 zJ4)?NE^IZ{}GTm9sTbbXY`CCxCRNN9=1kMUoYgO=dd7bRSwO#=si7jmUFjv zlyn-$Zw0F+I&TDrfq^q5BNrtAqI3hWL1AHGnL$9H32aDz6zRWzU{WOK1b#|zfm+fn zcbEVk`Jiq6)wk-R4j)C$T0A0q-@*HhpJ(@FT{_RBiPJ+p)3%)fqKV!$SBy_4_+VCf*ufb;IUXuV_A-T+ zdgVS4evg@`K{!DC6yoRWSde9vGZr`#lUaL*O@Cm`AvR0pbo~qPfr%=m2v;{WGyswK zHEdp9UPn;(+g~#-PPQ+)0Cdv4vQA$bZ0DdU+Je()t_2fM^LH=l7DqdD1;d{{@y*-M zhY-;)Au(|`Ad4UwFpPxFu)_8}aC7dfXc-tJ9~O9v8kv}whz-VNN>UfnUqNHps?AtdTBR{M)E5AS_$gj1rit8|F#gz1vEJ$(XWb9C8h0}H z-gq|l5UC;10skZb(QzyPUN0VcLChRuQ(+HObPkNjg@ByD3!cy9r$B z<+#NYsV)-78>xi>rxTao<_hNMSt0qn8bo zd{Vj~3oV6(#W1}9M>Qoud1+F%lP}*h(&_A|9W0?6YrPs6z3fns-p~f_&1x!lrN9;2 zKN${KN7q&ZGi(PCUe?i5EDoNnlXXGQ;^}WL+>e=>IQ=FzDf;^iIRW@{n%udf!C!@b zLw>Hg2C}Euc!stn#bR~Co?GUtuIj>$QYt|x1zVs949SCwsYkwctzX!j=!kH6S$~0LI%apEl`I0tIP_NkNH!KkKP zdY`c|26$jvG2vksvW&la+}!y%8TQ$<`v6sN3p{V4RaU;E+i$#vkMr@f6H(HmM-Qj*%p|VbA?>t)e321t$lsG$ zm`yGB5|RxdW#6-3-dV5EF74!%#Vs!-m3w%t=4JosZK=q57MU=e+Uneth1(+~Dgv{e6=zvk%lS z&fgcqY1T?z%6uf!-y-G;Cv^^rrPcp2?em;7ndwE6aV!i{MdEq_ASsh2u@u}+7wP#O|M08K_mta*dg((u8cnA2MtP2KE_+H=E zS=1hAn_}Yk@NG(S&ZG$$rpaUoeTuvoF$htqzYLb=Y{fqR4L%HrVvm~L=6T&yt|&ak z>scd3h#u8!TuN$v=K@GDobkDIgxCs?AAC~y#u8q0SJW4C*KT1%(aci&_MC1|vLh}g z`lH89=F|{;^|x=`7Uu^Nb|4V}Ymd{@5>VSnQtTV0#BL}_xzGl=dp;i@58)PacGhj8o?u z5OTM0ij$!ds#i3&sNqv?f~*>1&lxV13DGq zC^-@;uCN=q2USyxi#MKgb-M!$HDg{%6{$8se=o_Jo0NsPV{5kKXfsFZWu%3`LTsG@ zwX#?4w8ehD*!r(89$k8=527$4pQXtN?D%ec^7Ak}@i_Xqok*EHUUxiC?&`NTq4U%6 zba4F2GS2xArlUKX+YzTeC1TP*}~Vbi6a3AlQ6LR zAdC_N_k>oVgd;*!|D-7`ferIeX+{h~O7%R2PNYR21NS-(kK-k72dr{$raS}kttqtH zKG8l6T}Lv`Ci7Hdrt20^$UEZr37IDLo1erqoJp_&WNg*tJ*T<^OSlol#=&zy(*s1icY|HF*sA+=LSdwhvK77%Jb$hW`lF^QDCT`sI$gTQF8@XkVJc%eZpFFq|CV88%HJI(GK z_l3>Xclq=RNtdrg5wk+5HJ&26X>UO}pB(HQGH!vod(U+D3C^cCyozjjOsmvPe;wl` zJ1&J4DgQ_Q502%yge-v>GX&;3R|%VpIj=o`QvE%Dl!gPC-+;q{qT@{bJ;**(Fhw|> zk*st`XRd(M)z$+j(76xX(@13BZ!^p&$+?}8Z_-75rmkl`zo_U+&?h8W6MQj<=hNdM zWEWLK4z_Bhv=plyKsVF8AKTo97|fl7z!(i4Wz$KoGMOC%}eDK707 z>|1PLhAZCa_>Qw3N|W_#EZEc>&miK{$1}V2Z)Owx%YNa0U)$QsZ=O)dg=(3d* zyk3>}mg|YD{1Kw5f11Y>@qY0VI$qM91G#K9y@=eGV*xw2@o;5+B*|Y2c`|k$Uqc`( zI7?ocagi;1g)NIZas1ng!TJznc8+X+;V*m1R%Tc&NFfq1OxNxT2Yrb_=Imh(X8%hQgVVRO5v8tkJC1a=@M|`uns-h-G{AY7j z$42i>Yr@a6O{Bunu4GVgVg)A>ecJluOA%r__5L; z%wH59GgloBXv2jwUh;S@4KfxyTwfV2ql7gAg!sU-?ha&};O`2nn)0o!VY-IxDNM1t z4Af9#^V-ZY^>1ry$Jh7m{A_I=+;s?ueix<@>VF=M!C!~<+=~8j*f7d^gZQJ1;Oed? z8))eW>++Phx`Jbq@dgN;ASCvHuME=c2mM&6QC`3KB zvU=v#wG3)e4%XJP21BEx2au*~osZy7!0#3xf4$8PKdXZQ6eIt`zVDgOLjgh$6W)W= z0Ul7|v#9zB_SGbi!huXpMAFKXcXOGUnWe(UP~m{=4mPPnCFbQ~P!qM#rvV6o5d6Vv z4^j>raEISsJ_2hS&A;7tgEf4Lcmb4v9aOSu$^4wvuXz}NrPR0Mu2zo23@$XMP*NDEC& zsENbsk?}f&+P6SRI9#KGTvmLm94}@D3|oXu;|!`bgD-GxylOoW3YZ|Q+PWl2tQW0a z=Fi8m=eDHAQHVDi2oeeS*n6C+)tPr;gs8a8qqOSXf~ zlEN)c>Lz^nrgDK3EA6JPyF$(_it6dcYa*ETsYlUO&&gvbm_uH|GsYjQN}sb=#Bn<9 z)3)bHj>3>KKXtBq?vnx_(CJslnMX2a(5Rsx5#!HbxV#mNfa1rds!Bs8~49P|CSW6H8VXU2}uAu&^Lq?h8p8fAh+dQtt4 zKJ3Mt8PKRn$9B`oOx|E+MD1*i-GsM^2p7L(eBnTKHT|sb;6)XN=>F~Xjo`96*5psL z-92Q>O9I9NPb^AM&Hb6+!9n86cS*fzAO`O=Z%4CPMqN zL|s)HDGip({3aPK!mf-9=k&+4c=x#ftde9&G#G+tY1oPoZI1ON>4hlv0_)H7L!%?pYyxO z$2F#!%Dj8M`b`X4Du7Vwgt*n6VEmkm%*4koTjuwE2>RF`w5nF=K0EfSY@g~uH9l$; zdI9}b)v<*zo2wN_Lb1Y3Wae6uXe#=ba7N-|L6qJj!6&vJoMJ{Vl0%7?a}rYTDA?C9 zkE7Np;YLks>WeCG@vWlRh9k5Mtp?SkIl9D51#gYsO?OlcQOblt5yA~$kVQig}~E zbFSJeTT|bOpzJHp!B5!~XnP!~1Aj%Z`*R-?C3nWB3Ve8<>=N zTPL1Ds}$^4sC(nK=uhmn9Wpwsnf22+RK?6$U&c;Q-q%76#QSmY_4j?ZOzaNr%FHcl zkHX=s0^2Va6U6@oqhD!5__3ZIYCxw+V3r4cel&k&#;ZBuT!)?DxO`^D+ke0O;+-@O zq7?xF;UC8nMRil|cHbX0Zhd=Het%N@^?4(Mgux0zfatM?s9cS~NB8TE|Ir}Wuibh7n4Q?iQoq%5k7 zz0#pM`w5op41h1Bb5N`-v||ppdS=2sGV3L@q&-~rFksfm0hgt6Av!rQT;K%$Z2$0i z2hH|PsZ;N!C|K4XEWz6kAAd+AlrkBEZ2}FA{ja);*ZzW(VgH4#!1yaP9ROxFT;?zF zw>!Z<4L`;zF}gr>knFkl!Mz|XV!1@sr~tvT^s2!3p-gQ4B3{PcLa+45F*M-j|7 zki%Vn24McK0svNBd)+r|xZCvNG@9#dANO}jY zAl@>6LGbt&zi{qP3q@EDROsP>l?qMVxxY(34qi|wxQu4(RsYcbV5cN|iIR^(DL=Dy zCPyL~+8{TZYdoDY%)iTMk%}X5vE#;S4;nt(-=HX!$w%Dlbt!Qcg5SkRhcnZ>zK4Kgm% zmkHkL8UYIo<7c;4!$WK&r8W1w?xk}YSAI8A2-_We^daqUv-r39z=%GlGFXP$l7B1( z-)ltC&@8&t3^&8?@Kpzu-zqNy8FhLjoyTbG@ZnwyDJr}Wgb~^9;TgcD` zi$0~g>5$16DD+tqUX{xks9?ponf%rjk!XLxH@&qb{e)8KfyIUo{4T&pxtxfv>wmsm z|7wZ+i?{keb^CPp283DbfQh(*6`g4gQ|y-n1L0d&MwRPPQBlBhA8u!WrO_EeKyL^k zT;167MB7kvL|I8`sD?22Ii%}@7yHd{ws>>h!CYb^6q~a(z{0!a77V6cs)$!5^35?= zu!cH1c}SbUvj!x}x$r9oQk4MeeEn`7X#VgnU4&aTq!|bWQ7hU73XektfJ^}J(s03F za+&-0a`{i>DMp&y9Vl|`kgyUO+U_!N+PvL$+LNZG2@TFoMLt7oNoT+^_>EBcM``~j zts-KEZRP5U1iia-a+U7pUj=@gZlhf=3P3WPCL8@4n@txNAa#`tSZooJNYp#zEnUMf z%g*W7xo-k@ndkS%nB6HNN9k95Wc3WYNVA-8=V}LTm9O!$)$jBpoX)`c6xB9^sy#Y9 zM5GCLhZWp~-RP2$R}M+>J+%2o{jM@TJ{}zUPx1@(tNX{t^G^i0xw$zwN|f?d2nJ;* ze>B;nAu$=Chh}GIk0`54;E|oxRDn^mnS9u=5y`d>*Par^B!k z8c63mpisPIxQ*aQnSStfdDnM_mJ%E#;fS4BqtEJ~04(%kVvYadIYtNVT7p7C+p${6 z%waKUrVAGcP5$_ip;;!JfC^|7z*o9?X?IPL>(oBik2WkdhynIO^>aBg!`EwMl z^!Dp7kAi6MG{?=tMc(*0IyjJn4ScfhS0u``=pyK)Af>AKMltoh{s7Ki4MHh{k3Xw3XSJ+xK~kQGzpqc}R(lYj!IVAO z0QDQeJkukBDrGe_mH$aY$u!CLD8+n_!AJ!!M?dkF`|)zts%SlQ7=2ZKGGCy30@xKURD`Ne zf`LM&1t$1$@t7#!(4gxygjm^Xc@S>{#@7>gy1G_9RCMzLrfLu={IF(LqXuulOaa4| zS)yh-U2bGebHM0_w>kkDjzk+Etpo%F2wSs^wDcDJ&F>(YE=9_d zry4@>i>0MQc!9S#t+#2wA&QvfP_qqOc8D=Pg&KDluln13KidRCF}q|=jiGlEOjSR& zZokfPwekRlz6y^eZrx-U8va9~_Mg>18J2|7{yG>)rBuOUL^i8`scrqwA0_@ZE?du& zgw>ZpFCtC)xAUHxfu(=KFZa#t`@(zeQK>uSTQ{SeU3D$zELiAheiSRD%3#!GFx>FI zislblXU%HMVAA<7zhV^dGW;01d#jJ9nwvT@cV+y3nc6utQW9hb&b^_P<0u=Du$abN zq*2ceu?d;W)KDvZsUX1Oo`)p~C*>YaTVOs7&8G{_Hg_b=Z8axYmdCd}snOE#!E!=N zbIe`G36*t|nY(M`HuuRi7i0Du8n+;5HE2WGJPwolMl%UU#}YbWA*0NNbk|p+QErwF z4^&ULGlFHc5+`c*pNTv-d|fSdHS&U2b{R_&0OlNZZG!larLtNXSzA zQ5=?|l7&hgrm{c&DACF8x)mVO zKQr-h_I>0eQ(s)LEKR(QDesU$J{?-xW8^&J;q+7`j^Rp;lGDL%Gqo1^=~@}u#Z>aX zlSNLLdU*LPh)B8h_*HOl7ZZ6weBkYTPS1z+9!iols?~F`qv+K>sr)N9UYpxUoo=$p z8TJ^Ly#M^8^csH8lZjF*pR!T(gZW#1&*lunUIW#zNDrOrOAl65hZoTY@*hJU@Ns@tX_C2(D6>yqO&HVdAjr{G)i;xz*0j&k>4k z)g_9g6GLn=YZ0_=t%bfzf zKaVq7mVI?79f{S66KSz@(wYm1X)hJq*EhOxN#2~L%sf|%nYcvTJeRLbf}dtU$Eb&o z{I#~eWLA-$XU%8R7`mX9sc0RctF7K~*s@HwXgGzbk_$|E6>5dlSIpJkSn+vmNpTCz z4A(DrrPGuaGtaYijBYO{%R(2(es`f9H{!gSKUhSl-3v6Tc3je!zuJ2cyywd9=|Gn5QowdRaBX?|P@&94^UP78kb z&Qg@0oX=b9sO)>E@3K*2L#33PecZzCy>zDrJ>ykdjrH0@3l0UpD*ZY-8s`oQm;xHk z+K5HW%V^@Wy}(eHdv(`Bz$ay|lRcel`;~lKXI*gc=*>x;0*~g8=6QvUDY1%+jum}j z!Q-DFohaVkO`ril6SAfTIilohgkY)R%T)`)C!yc%tBb|Nlbw!H3kkukB5o7Cl{ykm4T*9->r-qFg`FPuj*@T_(GDxMhnV5ue2pj@nW`wao}uifgv-N5PKBwsr44rZIi zl-_bTTq$!4p0d%=?Hfr_jO8sK9+}1G@knyA0cU{FBf9&!231vAZ_kblvTTcx{>l5KYL;7vtL@4(?aV7u>@%T@|oajN?Y4? zv5?k|yi?t38l$(@>SqWtSg6<@-L`xGUJ%*W+NO?B;<7p?ZD}@nrd#U<)h5#JPVKqj4)EtGWNi^5%PnNFKSIW}DbG+{OLS>Zc9ttBwM{L}6m2U8>@+6@=NJVuH2hA2rfP+Qg=HjAVped!wOsoI|4|;luz?0WXEf0vk zfyI^e^`gPNp=b!MplYjxa2zQ?hoy@eSR}i4EiO5^p!@2LU%t@3IL}Z+-~;g0U&C%O zW+ibM45Fz$tEl{`)rE!PQG0=)g_RY3L&I*do%VKlDm;LO zmFX5hn20r2VcZY3eQz%nDv#q`lFU>MYwn+%Eby~M)ruSq?u6%~I5p1ras*u92l815 z1_nyBJ1xt0_x9+b+Q4uDHjR~mk!nvkQ;OMzgc4h47&UGRStCsg(HHYtV&N;*Q`@xY3YysBM9C?&Oj3P=XdCfS5yb85G64r>wlczh6~e{toyb6cwQ?@%Z$EtO1+dpoSVH212II zeItId;RYgXjM&&%OiWA%UOk$~OBez0(g6Vh2UA!W0g&5)sx>&7^oG>e&{iO{>g`oI zg_`gJje6hVug{+){rvnOI>t|yl9WV7O6n|_EGYFtI&(=2hDB3TbCAMckR~#C(vfZR zz3qFZVXk4Ie)kql?BW#?0-`3K+R3%;12SBhy~SnydZ0)g9o2EY0%*FQKYxO6Ky|+k z7%Kqdr_HSSgQtznYSD{fmU-t2H$Q)z`l4<2&hBnSdATG_WJpLzdV2ct%4^za`MlLO znCK<^9#YBLAMWch40 zAc$IWTK+AB+uPglsvtD>ylyCzB_8On(2C8G$>DJW3# zx>j-iwHsG1O{6RXA@o5_PsJ4lLNm0)o7e@;4Z|X>ak)hjh`OL9svQx3Tq*Q{Wp?=~ zMC>#(4PZ->q#09QwI9u7d+Rfefq_xJ@ZM=kbT_9g`01x$iRj_2I_{muJ2sBSrQ{=NDN#G{_^=sEu${sV3zJRPDDV$K; zpilGL26gTw#@DgdCTuH!(i7inHqXh*B2|_qviD4$Grsdw9@UmT^H8OOzc4sXk*^$^ zMA#=eA7sHMo;Idgk}NP4{ESMoFA3Xfp>-4iuDfc2>iADyUVIlVfFS zYHDdo7bzR3_-1{AUsdcrOeqkMWL z0duVlW1H^!w-r73?lKU9XAIT~9Co@|YRLvV1;eJwlFe+m@D3UkenIR<^$jWvgZ=#( zzNl*bbQNoexj%eZ^1AS$VG*2q7y%Lva?HdXFCCf{7$Nf~9$2&oABkma?`X7OjAF_C=z4zWs>+Zk z9wg*F;7@`DKaEwEgX;v&AWBNeh`UvZ{mWa_mEUW(2RKOK=rQMvm(K?7LHLXJK0EB3 zo9;jp1zG_?$Wz`|GcfX}$8!Kv;Ns#+S7C^jhnEni>Kz)&E(Cg*9WO#VE z9y9SSPPr11^4WV}3hmEU0E>&I${tmf;kB#J3f5??_klB0G}KRI<&O&T9j)|5Suo5# zfh@1n(^FU!qN0u!x*`jbXUUK zQREo<@-sdmLCuN~&dq*|U!y;|j5*`$42uNopLQ1xGVL9m^jT{p>#2o>5mh6y(wY-2 z%V@SUA_-lAJV#KGG!DJ((AqP(9$F}UHZ6gQKdY0qRm12orq1u4EAAA7@jlQUr3sN&kHi7fZjF}Le1bFi1#()a6K@r|5%(VLOvU~ zk*%z(7AKKOQc0;<`_otTmCkk20!j5nD=zpiy6gY%(&zs^lKH>)tsyUpcCGCUv!1Qo U)p|EN3i(@3>Yilb9pfke3*nvhQvd(} literal 63100 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 z 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 Z$(hmfa@9@dLM6z*r6m-^3q%cH{9peEg53ZB diff --git a/packages/baseplus_RainCloudPlot_Ex3.png b/packages/baseplus_RainCloudPlot_Ex3.png index d20b0542a4b27cc9bed752383c4bdd8a568e0612..94e815e2d165b5a59931a82fb670ff90d1120611 100644 GIT binary patch literal 84018 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

l>pMqvFTMrE74_rS@_O#)s90ObdlF;B(eHcVfGz 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 z