From 589df1a18bc4e995b70cb2b863bd61636c7d247f Mon Sep 17 00:00:00 2001 From: Joel Therrien Date: Wed, 13 Nov 2019 17:07:58 -0800 Subject: [PATCH] Add support for 'offline' forests --- NAMESPACE | 1 + R/addTrees.R | 29 +++++++--- R/convertToOnlineForest.R | 38 +++++++++++++ R/cr_components.R | 2 +- R/java_classes_directory.R | 12 +++- R/loadForest.R | 56 ++++++++++++++++--- R/regressionComponents.R | 2 +- R/train.R | 40 ++++++++----- inst/java/largeRCRF-library-1.0-SNAPSHOT.jar | Bin 125547 -> 136391 bytes man/addTrees.Rd | 8 ++- man/convertToOnlineForest.Rd | 20 +++++++ man/loadForest.Rd | 11 +++- man/train.Rd | 8 ++- tests/testthat/test_adding_new_trees.R | 40 ++++++++++++- tests/testthat/test_saving_loading.R | 6 +- tests/testthat/test_saving_offline.R | 35 +++++++++++- 16 files changed, 270 insertions(+), 38 deletions(-) create mode 100644 R/convertToOnlineForest.R create mode 100644 man/convertToOnlineForest.Rd diff --git a/NAMESPACE b/NAMESPACE index 402bb00..ac71073 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -26,6 +26,7 @@ export(Numeric) export(WeightedVarianceSplitFinder) export(addTrees) export(connectToData) +export(convertToOnlineForest) export(extractCHF) export(extractCIF) export(extractMortalities) diff --git a/R/addTrees.R b/R/addTrees.R index bb7f41a..79f82ae 100644 --- a/R/addTrees.R +++ b/R/addTrees.R @@ -14,6 +14,10 @@ #' @param savePath.overwrite If \code{savePath} is pointing to an existing #' directory, possibly containing another forest, this specifies what should #' be done. +#' @param forest.output This parameter only applies if \code{savePath} has been +#' set; set to 'online' (default) and the saved forest will be loaded into +#' memory after being trained. Set to 'offline' and the forest is not saved +#' into memory, but can still be used in a memory unintensive manner. #' @param cores The number of cores to be used for training the new trees. #' @param displayProgress A logical indicating whether the progress should be #' displayed to console; default is \code{TRUE}. Useful to set to FALSE in @@ -22,7 +26,11 @@ #' @return A new forest with the original and additional trees. #' @export #' -addTrees <- function(forest, numTreesToAdd, savePath = NULL, savePath.overwrite = c("warn", "delete", "merge"), cores = getCores(), displayProgress = TRUE){ +addTrees <- function(forest, numTreesToAdd, savePath = NULL, + savePath.overwrite = c("warn", "delete", "merge"), + forest.output = c("online", "offline"), + cores = getCores(), displayProgress = TRUE){ + if(is.null(forest$dataset)){ stop("Training dataset must be connected to forest before more trees can be added; this can be done manually by using connectToData") } @@ -37,6 +45,10 @@ addTrees <- function(forest, numTreesToAdd, savePath = NULL, savePath.overwrite stop("savePath.overwrite must be one of c(\"warn\", \"delete\", \"merge\")") } + if(is.null(forest.output) | length(forest.output)==0 | !(forest.output[1] %in% c("online", "offline"))){ + stop("forest.output must be one of c(\"online\", \"offline\")") + } + newTreeCount <- forest$params$ntree + as.integer(numTreesToAdd) treeTrainer <- createTreeTrainer(responseCombiner=forest$params$nodeResponseCombiner, @@ -98,22 +110,23 @@ addTrees <- function(forest, numTreesToAdd, savePath = NULL, savePath.overwrite params=params, forestCall=match.call()) + forest.java <- NULL if(cores > 1){ - .jcall(forestTrainer, "V", "trainParallelOnDisk", initial.forest.optional, as.integer(cores)) + forest.java <- .jcall(forestTrainer, makeResponse(.class_OfflineForest), "trainParallelOnDisk", initial.forest.optional, as.integer(cores)) } else { - .jcall(forestTrainer, "V", "trainSerialOnDisk", initial.forest.optional) + forest.java <- .jcall(forestTrainer, makeResponse(.class_OfflineForest), "trainSerialOnDisk", initial.forest.optional) } - # Need to now load forest trees back into memory - forest.java <- .jcall(.class_DataUtils, makeResponse(.class_Forest), "loadForest", savePath, forest$params$forestResponseCombiner$javaObject) - + if(forest.output[1] == "online"){ + forest.java <- convertToOnlineForest.Java(forest.java) + } } else{ # save directly into memory if(cores > 1){ - forest.java <- .jcall(forestTrainer, makeResponse(.class_Forest), "trainParallelInMemory", initial.forest.optional, as.integer(cores)) + forest.java <- .jcall(forestTrainer, makeResponse(.class_OnlineForest), "trainParallelInMemory", initial.forest.optional, as.integer(cores)) } else { - forest.java <- .jcall(forestTrainer, makeResponse(.class_Forest), "trainSerialInMemory", initial.forest.optional) + forest.java <- .jcall(forestTrainer, makeResponse(.class_OnlineForest), "trainSerialInMemory", initial.forest.optional) } } diff --git a/R/convertToOnlineForest.R b/R/convertToOnlineForest.R new file mode 100644 index 0000000..5e32b82 --- /dev/null +++ b/R/convertToOnlineForest.R @@ -0,0 +1,38 @@ + +#' Convert to Online Forest +#' +#' Some forests are too large to store in memory and have been saved to disk. +#' They can still be used, but their performance is much slower. If there's +#' enough memory, they can easily be converted into an in-memory forest that is +#' faster to use. +#' +#' @param forest The offline forest. +#' +#' @return An online, in memory forst. +#' @export +#' +convertToOnlineForest <- function(forest){ + old.forest.object <- forest$javaObject + + if(getJavaClass(old.forest.object) == "ca.joeltherrien.randomforest.tree.OnlineForest"){ + + warning("forest is already in-memory") + return(forest) + + } else if(getJavaClass(old.forest.object) == "ca.joeltherrien.randomforest.tree.OfflineForest"){ + + forest$javaObject <- convertToOnlineForest.Java(old.forest.object) + return(forest) + + } else{ + stop("'forest' is not an online or offline forest") + } + +} + +# Internal function +convertToOnlineForest.Java <- function(forest.java){ + offline.forest <- .jcast(forest.java, .class_OfflineForest) + online.forest <- .jcall(offline.forest, makeResponse(.class_OnlineForest), "createOnlineCopy") + return(online.forest) +} \ No newline at end of file diff --git a/R/cr_components.R b/R/cr_components.R index 2e7817d..d8fe18e 100644 --- a/R/cr_components.R +++ b/R/cr_components.R @@ -42,7 +42,7 @@ CR_FunctionCombiner <- function(events, times = NULL){ } javaObject <- .jnew(.class_CompetingRiskFunctionCombiner, eventArray, timeArray) - javaObject <- .jcast(javaObject, .class_ResponseCombiner) + javaObject <- .jcast(javaObject, .class_ForestResponseCombiner) combiner <- list(javaObject=javaObject, call=match.call(), diff --git a/R/java_classes_directory.R b/R/java_classes_directory.R index 8ffe241..759d567 100644 --- a/R/java_classes_directory.R +++ b/R/java_classes_directory.R @@ -11,6 +11,7 @@ .class_Serializable <- "java/io/Serializable" .class_File <- "java/io/File" .class_Random <- "java/util/Random" +.class_Class <- "java/lang/Class" # Utility Classes .class_DataUtils <- "ca/joeltherrien/randomforest/utils/DataUtils" @@ -41,9 +42,12 @@ # Forest class .class_Forest <- "ca/joeltherrien/randomforest/tree/Forest" +.class_OnlineForest <- "ca/joeltherrien/randomforest/tree/OnlineForest" +.class_OfflineForest <- "ca/joeltherrien/randomforest/tree/OfflineForest" # ResponseCombiner classes .class_ResponseCombiner <- "ca/joeltherrien/randomforest/tree/ResponseCombiner" +.class_ForestResponseCombiner <- "ca/joeltherrien/randomforest/tree/ForestResponseCombiner" .class_CompetingRiskResponseCombiner <- "ca/joeltherrien/randomforest/responses/competingrisk/combiner/CompetingRiskResponseCombiner" .class_CompetingRiskFunctionCombiner <- "ca/joeltherrien/randomforest/responses/competingrisk/combiner/CompetingRiskFunctionCombiner" .class_MeanResponseCombiner <- "ca/joeltherrien/randomforest/responses/regression/MeanResponseCombiner" @@ -77,4 +81,10 @@ # This function does that. makeResponse <- function(className){ return(paste0("L", className, ";")) -} \ No newline at end of file +} + +getJavaClass <- function(object){ + class <- .jcall(object, makeResponse(.class_Class), "getClass") + className <- .jcall(class, "S", "getName") + return(className) +} diff --git a/R/loadForest.R b/R/loadForest.R index ded2cde..9af28a6 100644 --- a/R/loadForest.R +++ b/R/loadForest.R @@ -5,6 +5,12 @@ #' Loads a random forest that was saved using \code{\link{saveForest}}. #' #' @param directory The directory created that saved the previous forest. +#' @param forest.output Specifies whether the forest loaded should be loaded +#' into memory, or reflect the saved files where only one tree is loaded at a +#' time. +#' @param maxTreeNum If for some reason you only want to load the number of +#' trees up until a certain point, you can specify maxTreeNum as a single +#' number. #' @return A JForest object; see \code{\link{train}} for details. #' @export #' @seealso \code{\link{train}}, \code{\link{saveForest}} @@ -20,7 +26,11 @@ #' #' saveForest(forest, "trees") #' new_forest <- loadForest("trees") -loadForest <- function(directory){ +loadForest <- function(directory, forest.output = c("online", "offline"), maxTreeNum = NULL){ + + if(is.null(forest.output) | length(forest.output)==0 | !(forest.output[1] %in% c("online", "offline"))){ + stop("forest.output must be one of c(\"online\", \"offline\")") + } # First load the response combiners and the split finders nodeResponseCombiner.java <- .jcall(.class_DataUtils, makeResponse(.class_Object), "loadObject", paste0(directory, "/nodeResponseCombiner.jData")) @@ -30,7 +40,7 @@ loadForest <- function(directory){ splitFinder.java <- .jcast(splitFinder.java, .class_SplitFinder) forestResponseCombiner.java <- .jcall(.class_DataUtils, makeResponse(.class_Object), "loadObject", paste0(directory, "/forestResponseCombiner.jData")) - forestResponseCombiner.java <- .jcast(forestResponseCombiner.java, .class_ResponseCombiner) + forestResponseCombiner.java <- .jcast(forestResponseCombiner.java, .class_ForestResponseCombiner) covariateList <- .jcall(.class_DataUtils, makeResponse(.class_Object), "loadObject", paste0(directory, "/covariateList.jData")) covariateList <- .jcast(covariateList, .class_List) @@ -42,8 +52,11 @@ loadForest <- function(directory){ params$splitFinder$javaObject <- splitFinder.java params$forestResponseCombiner$javaObject <- forestResponseCombiner.java - forest <- loadForestArgumentsSpecified(directory, params$nodeResponseCombiner, params$splitFinder, params$forestResponseCombiner, covariateList, call, - params$ntree, params$numberOfSplits, params$mtry, params$nodeSize, params$maxNodeDepth, params$splitPureNodes, params$randomSeed) + forest <- loadForestArgumentsSpecified(directory, params$nodeResponseCombiner, params$splitFinder, + params$forestResponseCombiner, covariateList, call, + params$ntree, params$numberOfSplits, params$mtry, + params$nodeSize, params$maxNodeDepth, params$splitPureNodes, + params$randomSeed, forest.output, maxTreeNum) return(forest) @@ -55,8 +68,11 @@ loadForest <- function(directory){ # that uses the Java version's settings yaml file to recreate the forest, but # I'd appreciate knowing that someone's going to use it first (email me; see # README). -loadForestArgumentsSpecified <- function(treeDirectory, nodeResponseCombiner, splitFinder, forestResponseCombiner, - covariateList.java, call, ntree, numberOfSplits, mtry, nodeSize, maxNodeDepth = 100000, splitPureNodes=TRUE, randomSeed=NULL){ +loadForestArgumentsSpecified <- function(treeDirectory, nodeResponseCombiner, splitFinder, + forestResponseCombiner, covariateList.java, call, + ntree, numberOfSplits, mtry, nodeSize, + maxNodeDepth = 100000, splitPureNodes=TRUE, + randomSeed=NULL, forest.output = "online", maxTreeNum = NULL){ params <- list( splitFinder=splitFinder, @@ -71,7 +87,33 @@ loadForestArgumentsSpecified <- function(treeDirectory, nodeResponseCombiner, sp randomSeed=randomSeed ) - forest.java <- .jcall(.class_DataUtils, makeResponse(.class_Forest), "loadForest", treeDirectory, forestResponseCombiner$javaObject) + forest.java <- NULL + if(forest.output[1] == "online"){ + castedForestResponseCombiner <- .jcast(forestResponseCombiner$javaObject, .class_ResponseCombiner) # OnlineForest constructor takes a ResponseCombiner + + if(is.null(maxTreeNum)){ + forest.java <- .jcall(.class_DataUtils, makeResponse(.class_OnlineForest), "loadOnlineForest", + treeDirectory, castedForestResponseCombiner) + } else{ + tree.file.array <- .jcall(.class_RUtils, paste0("[", makeResponse(.class_File)), "getTreeFileArray", + treeDirectory, as.integer(maxTreeNum), evalArray = FALSE) + forest.java <- .jcall(.class_DataUtils, makeResponse(.class_OnlineForest), "loadOnlineForest", + tree.file.array, castedForestResponseCombiner) + + } + + } else{ # offline forest + if(is.null(maxTreeNum)){ + path.as.file <- .jnew(.class_File, treeDirectory) + forest.java <- .jnew(.class_OfflineForest, path.as.file, forestResponseCombiner$javaObject) + } else{ + tree.file.array <- .jcall(.class_RUtils, paste0("[", makeResponse(.class_File)), "getTreeFileArray", + treeDirectory, as.integer(maxTreeNum), evalArray = FALSE) + forest.java <- .jnew(.class_OfflineForest, tree.file.array, forestResponseCombiner$javaObject) + } + } + + forestObject <- list(call=call, javaObject=forest.java, covariateList=covariateList.java, params=params) class(forestObject) <- "JRandomForest" diff --git a/R/regressionComponents.R b/R/regressionComponents.R index 681ab6f..d2ce1e8 100644 --- a/R/regressionComponents.R +++ b/R/regressionComponents.R @@ -48,7 +48,7 @@ WeightedVarianceSplitFinder <- function(){ #' MeanResponseCombiner <- function(){ javaObject <- .jnew(.class_MeanResponseCombiner) - javaObject <- .jcast(javaObject, .class_ResponseCombiner) + javaObject <- .jcast(javaObject, .class_ForestResponseCombiner) combiner <- list(javaObject=javaObject, call=match.call(), outputClass="numeric") combiner$convertToRFunction <- function(javaObject, ...){ diff --git a/R/train.R b/R/train.R index a513413..319b322 100644 --- a/R/train.R +++ b/R/train.R @@ -18,7 +18,7 @@ train.internal <- function(dataset, splitFinder, nodeResponseCombiner, forestResponseCombiner, ntree, numberOfSplits, mtry, nodeSize, maxNodeDepth, splitPureNodes, savePath, savePath.overwrite, - cores, randomSeed, displayProgress){ + forest.output, cores, randomSeed, displayProgress){ # Some quick checks on parameters ntree <- as.integer(ntree) @@ -51,6 +51,10 @@ train.internal <- function(dataset, splitFinder, stop("savePath.overwrite must be one of c(\"warn\", \"delete\", \"merge\")") } + if(is.null(forest.output) | length(forest.output)==0 | !(forest.output[1] %in% c("online", "offline"))){ + stop("forest.output must be one of c(\"online\", \"offline\")") + } + if(is.null(splitFinder)){ splitFinder <- splitFinderDefault(dataset$responses) } @@ -129,22 +133,23 @@ train.internal <- function(dataset, splitFinder, params=params, forestCall=match.call()) + forest.java <- NULL if(cores > 1){ - .jcall(forestTrainer, "V", "trainParallelOnDisk", .object_Optional(), as.integer(cores)) + forest.java <- .jcall(forestTrainer, makeResponse(.class_OfflineForest), "trainParallelOnDisk", .object_Optional(), as.integer(cores)) } else { - .jcall(forestTrainer, "V", "trainSerialOnDisk", .object_Optional()) + forest.java <- .jcall(forestTrainer, makeResponse(.class_OfflineForest), "trainSerialOnDisk", .object_Optional()) } - # Need to now load forest trees back into memory - forest.java <- .jcall(.class_DataUtils, makeResponse(.class_Forest), "loadForest", savePath, forestResponseCombiner$javaObject) - - + if(forest.output[1] == "online"){ + forest.java <- convertToOnlineForest.Java(forest.java) + } + } else{ # save directly into memory if(cores > 1){ - forest.java <- .jcall(forestTrainer, makeResponse(.class_Forest), "trainParallelInMemory", .object_Optional(), as.integer(cores)) + forest.java <- .jcall(forestTrainer, makeResponse(.class_OnlineForest), "trainParallelInMemory", .object_Optional(), as.integer(cores)) } else { - forest.java <- .jcall(forestTrainer, makeResponse(.class_Forest), "trainSerialInMemory", .object_Optional()) + forest.java <- .jcall(forestTrainer, makeResponse(.class_OnlineForest), "trainSerialInMemory", .object_Optional()) } } @@ -253,6 +258,10 @@ train.internal <- function(dataset, splitFinder, #' assumes (without checking) that the existing trees are from a previous run #' and starts from where it left off. This option is useful if recovering from #' a crash. +#' @param forest.output This parameter only applies if \code{savePath} has been +#' set; set to 'online' (default) and the saved forest will be loaded into +#' memory after being trained. Set to 'offline' and the forest is not saved +#' into memory, but can still be used in a memory unintensive manner. #' @param cores This parameter specifies how many trees will be simultaneously #' trained. By default the package attempts to detect how many cores you have #' by using the \code{parallel} package and using all of them. You may specify @@ -311,7 +320,8 @@ train.internal <- function(dataset, splitFinder, train <- function(formula, data, splitFinder = NULL, nodeResponseCombiner = NULL, forestResponseCombiner = NULL, ntree, numberOfSplits, mtry, nodeSize, maxNodeDepth = 100000, na.penalty = TRUE, splitPureNodes=TRUE, - savePath=NULL, savePath.overwrite=c("warn", "delete", "merge"), + savePath = NULL, savePath.overwrite = c("warn", "delete", "merge"), + forest.output = c("online", "offline"), cores = getCores(), randomSeed = NULL, displayProgress = TRUE){ dataset <- processFormula(formula, data, na.penalty = na.penalty) @@ -322,8 +332,8 @@ train <- function(formula, data, splitFinder = NULL, nodeResponseCombiner = NULL ntree = ntree, numberOfSplits = numberOfSplits, mtry = mtry, nodeSize = nodeSize, maxNodeDepth = maxNodeDepth, splitPureNodes = splitPureNodes, savePath = savePath, - savePath.overwrite = savePath.overwrite, cores = cores, - randomSeed = randomSeed, displayProgress = displayProgress) + savePath.overwrite = savePath.overwrite, forest.output = forest.output, + cores = cores, randomSeed = randomSeed, displayProgress = displayProgress) forest$call <- match.call() forest$formula <- formula @@ -370,8 +380,10 @@ createTreeTrainer <- function(responseCombiner, splitFinder, covariateList, numb builderClassReturned <- makeResponse(.class_TreeTrainer_Builder) builder <- .jcall(.class_TreeTrainer, builderClassReturned, "builder") - - builder <- .jcall(builder, builderClassReturned, "responseCombiner", responseCombiner$javaObject) + + responseCombinerCasted <- .jcast(responseCombiner$javaObject, .class_ResponseCombiner) # might need to cast a ForestResponseCombiner down + + builder <- .jcall(builder, builderClassReturned, "responseCombiner", responseCombinerCasted) builder <- .jcall(builder, builderClassReturned, "splitFinder", splitFinder$javaObject) builder <- .jcall(builder, builderClassReturned, "covariates", covariateList) builder <- .jcall(builder, builderClassReturned, "numberOfSplits", as.integer(numberOfSplits)) diff --git a/inst/java/largeRCRF-library-1.0-SNAPSHOT.jar b/inst/java/largeRCRF-library-1.0-SNAPSHOT.jar index 9de61f03759561b32ff0b89c0d6ccc6392f7830c..27f483a9e75b09e755e229903074a7e99e9e6e7e 100644 GIT binary patch delta 39714 zcmZtuWmp_f&@T)JcXto&?(XjH?(QxN0Ty?6cXxLW?(R--2oeaqN&e?O*SYWO+5ONv zH8njwwcXWKzp9!aOHgAK&%Xj~TNAEgOI>0g^6&ybcs3}6$+UNS9PJ7}j;wTW-C0YXecXr03b;-Q2RSw5}~ZWt4g-6-ADZJrhS>l%1o zi;IWhlIUG#rnUmVns`IZdSb8p=;Gt;+9VRH&NJg(YU>qCn}2M#>4rrkQ9~g*aViV! zJxs@N+;r2QY<6F*pPacaJQ5CdBpr}rWw`b z>gM4x!Yad<8f^n$b=(Z2OCtRAv}{D}WRt?9r0ddo));5;fS75$XzXq-z6ae6Vm%IKfl9eh`6*Nx5E{l}^3eSbJ? zS0>AAj!JI>62yb0lT~w*D!Cx352cy=lYx%6dci>m)Y=P7LA0>nL6LTLx?$n*uc17& zJwVlIa%03+du)wy0kw|@KIMv5YpjX5t{q!$x z&pp*m@Dt9QdIue#ygz}WY9K<1`Z$_2*xNXi)f*A7)%hADi%lv|v=^OZ@iL5p(>{ch zb%~Z)hF2g`z`PgXMy#(tX&Fh@a9T(FghGE!I!bAfZIxdJQWCUNLhF0>Mqp!npR$#^ zB`HV_KplaEOe}kf&t4m{PUMH@a5~}qg>&TYPe3VB89HDn#JCz)kjNX37ky5#YeB_4 ziN`&;O)uC$4dfTDkfy*b5Ci8CIGPraha=j@-No@wZ;b>cFHJ81H!3Fw9+Sh907v*xOr;t`H>|6zqf2#mC;8w|BH(q8prv z9wq#@P|_FJ-VZxjH-5WWWt4fnE*Sm7@3O-IQ;}BRD84F(7Kgi>#Q@kW?*^K~ znNGyAM>-^!y4xWc2V}*&;Tf@RBXOhmQ%G#?Xm)(v5n>P7yE_#7Z6Uf9`hP%l3yZPt zP?>=3keT!>c5C<=dKcqs7TBQr@` z>`voEa^2=xeR0Crp*;Bg5(o%Hf_*_2HLuH5s}TU+8(C!+6dK0S!n+6CsNg72Qec?M zp(lOESYb@{@PPfr~lws=peEBvqM;kQsqRNAw)Bp<^#Y~yL+;lQ| z39{yI;sI4h(#OfQBN)NP`n}%3pL*SM;6npHoTCde6`iKRHMc87bf;hUauv-%1l$N# ze8wb5OuZ=(R8>-C?m-3U_DGM`%XxB=Ynp`@(|ja-@ORm` zxd{j}_=<+B$Au~edI2qYX{Tp4NHcvSZnsOHq1@~?EGexL)-noAb`!6AduTr?Ncj|` zKt!D&G)Bt{Fx0hsnWWaQ^S^_Y>@*Aq(@aS=4$fTmVr1??yFBW^HUB&@oe+1RM%9jq z=nW5ygMGmsDykx0-I#qGt^c7ncS?{`mYMxwh*I6K#v*R3#}0rd-sYOUUAri9kJ)Tz zPLC|*E8~h~cJuKzQ!98ct9am37mxgXysBDq&0x#W6KP@``I4B7#^?0dd<-{V13}Dl zkacXZ?wME>pa|0~GE#p+q~cI7o`ja<+|hHJYP&mIU&Z8zxydaJWBMJ@U!pCPtFkO6 zJqvE-*kRtGR{=1{>LfHc<{V^PRz_86{k^%GfTMH~hTQttML_#BXg%{#$(F=krzT0J z>N2Lqxg;;2&sA)dev##9Dc)rI%(LAw-ieCWT_U=KKI0%9i#Wk>~W_1H6}p47suh{NB1i*#L*?oS0i#1;K83jQ?Y9}yg@L5c*S8a@Pcb^I%wuk40sH+%q98eXm7bONDBJ z61NtA!U9&z&^~2Io|9uAo2uKy;!JyQPO$*>kS)wywYVi$XcC`H{p-yn9H_uk9v$yT z-vOaGd8id>vTw&Od?BP?| zA}PhF(hw$@4m92wt1w=X5ac+VisdU)EC8Il;y^*E7t#+B;eq6kz5_?^w7$&jMaz`i zeEn~8%k+v94w*I5UXGw2!sqr%tCow@z_NFs9>h!yAi6$ZZsS@iwOk`rcU;h<&T)a+ z`>LhjU_C&4Q3A#%m!=fMc8vk#!8PPZV<139!f+ng)b`luVpUXSE%=i6Wpt9+29PK1 zXzat{1Ifc;lvb_^3|`XM2+ndwYe^&x%(|oV(RfG%Iet2LJJVK}ZHjy#8 zyx3q8(-(LY{$N>QHdEr1>+u2RMy5tiS{ZpE`**L7m+#qLz|a~09!BMutMe`-j~^I? z=P;jJP+eE)2%J_ll8vjc6K{{MG3RpL7u3XRu-^r3^<*#_1J&UNcaWfO0rjW`ZG_4C{ ze*1jsgSjy|8nZuAY=@8N0Kix1iY$UFS5Kb|%|ty-IJ1fAfZn%f`aO9mN%FOC?uh1e zh1syM3iCcb2{14Q~UHsz$3Y_DJH3^MTac>KD`J)1I8g!E;FMs!E<7uAP5 zyM4KtYbL^zKG#s$l!^S!)&s@pWc^FTCHcZ*W88YYxpP;*O5#T)GeG*yQ*TZW%j1`{ zn3o$5J}z0R9bsW<)en;(B;^Hv-d886b;A4C`o&iG%$kOCA);9DLH_VAf%d?qD8ApF z12g-FPH;IfV$;`>u!B9*8oQU_MjJ6=AgoWAlMxwuAMm}lyqZ8LC&Ao8`wtkvSl+xy zw7W)MxEVtF<6+OkF!7G>C){7-Mj3Rz&=va2mpsh>W!yA5l9K#q${^`TCW=)vVjS~tqlB5H%i{`<_QUgOI@tXaj1F*d0KIx40eZAUnvrwBA7*PbLz)PBH(^MeN=ox$I``RX)y0CWd4!R8NlIpHp?h$c3#+}N7atyYP$Ijck zpr7{)GP-Bu^xONOk@kdfdNo6)*X;L*1uJjszj}#%6`;{2V!dq_0cd|$kf>Rs;mwGo zIH1+lMPD)rJ$Q}qqOl)Ytg6-;^&oxAJ22_{W{TkHP3n=B5>dj-HKsUQZN-eL!+UiETg5t>ao;MI&Oxtp;_0xEavf2Me$pIT)ATfeeEtZX?lfAFy&KY2XAf{7AGUaJN`l zyPGcENj*&G6J{T|vZn3cN3BvUV!8GIwL^Fnt9ve&__dCkM~1TaV==tEY7^6>t5P)c z;z`0HCwE@2c2a* zm*j|e>x)b?sE>nBL{A5k`V_w6J#43|WTcCvhShVov%_>`ErSILt6)z4Pqosv)x<24 zo$1#lnu*~Wv(E(q;t&HJL7qtcj;htQD=<1cH&B4Idt53G#+l4d^H#JO~o_!#Eg-sG#V)RxrA zA!t20)t?D`ihiA17BMd^)zjG6O!Z-Hvr~955luSfSB{EiiN?OhYBXB6rhMtdLh@_} zFleXw0|2uuf!SfC+v13_+vW&i_>48$ytn#1IUHMcX6G-OnOc#w7#4Y3> zPg(8A2#~q#&d9UW*&f-^X{@uXL$1%LOaA%XRtFI8N4MMmEE_8Gz-N0!Uug?Ex#kbVepUc;NboC1eRN zlxegX({j@IFv$R+Z4p6q(+*j1PAdTt1?xr!5uVq?@T3;QbIVk}q8$DpEo6YrfjU0N zUFH`boU|tKxH%gK7VDp~C0Gb`leesBf@6$wQ={Ur?xyVz^J!C%FZ2E~1vb%o6s~b< z#DEkJ`6un9NCRVA2bsP&f`R}M_p=xM^|J;Q75|^>lj*Q3h7bBAwOFxsaI(Cso5t3^ zA)82a!?*XfNF3r~x@gUdXB4iqyX?t_`0YJtS_;P^Cq-*o)Cp~Ba1npsYx(J)UH>DGp-17rs$gq@*GLNJW z^buGsyZe1L3@$eY&qVri+`s-_73d!8(vi&bf$1Cr0X&3wkGu`(-k!9v3Cp)BHFZ=G23*jTv|7w8oxQS54b%O;XH1e2uOW#L4@(^`O#-MfNpp)v zU9frW9dB%8`a4ncnbJ+bO*6%9vZx7WG1g!By> zwR~HkAy-R{5TAXxSYzK#U1PnxO@f}>YMvq|B0R2|lDc$SW*IK>WNWYH=^S5z7c^{G(FsqqxdWj=_puQIuk=YU)hGd>^d zicx!uw&TKrTW`AAit)KzF`LLFp6`g?m0GaMrgFQ{3<9{I#C{(A0+G*62(0_spW1bVQL|s@3)nYi}@9yw#`CQ!l>3`{m}s zW(>;YI1*m#nPEq6a+(zaA@4Ed(U#@ZJf85#P<^*i}FJDvT+@-x zek-W7=iOt#fmXNQl}-g#LNYrq20l4JO)06jwf7q57fv8BhfKb>dSHlazCOcJa(&vY9G6u#IKN z2P6C%l_JlM&?i=6@*zKkvB)|7e?xUvY=1qd%{~cU>e4YqdD0Itadcj1O7KBQS13yg zRhdWK8LOBv&UC>l4T8bA85$_|tVCj(KBw~zTh=HDt2I*vxWX|S{Mv%giF(tDoRg6V zuwa}i-wvDQ@zS+yd}uF@fK~;oz0f0aj;=(gYaArB_|_v(2{uEu1jMN(z_Y3gFNmF& zhVo1;)O?1hpp4MF?}m8IvsKC}g-O+kIi=&olwD!#vNeCi7gCq(_h;JUZg+rQo(2}p z|M+UylkF-F@YokuSt=^|4dNM^#s}}kMvwuHpxYxuA$=C;{G~Tm=Ce5ymN7%W>a`{Y zfw&oo9kF^RW-0+UJsZKS!7oNVSSy*-l#|C#cpwEWgx9Zp?-$GXVdPP>Im5-0xDrT&4o@SS{vz(Fv94^y#I^2f<2}+;W)=dxQf; z3te`}W_q5^!$KBWLTY-0x3#kY>U}+~S(6=Fub8y8HGg8Ue#ON+xLcu!JBc`GC$n;m zd7hOK0C%a9!y^jfeondO5+~97rwuV}l-W+h_gIQ^RL%Muv!vQstt0KiA2uV|JM`CsUB@&%KQ2E1L5$F8`!$kq zU%rT8{Vyy0|3HjM`SO%$dm|tyO{Xj<@P7furZ<7Xe~@F+{~u{g$|ITn2R;4`q5KV$ zB;_L_0^s~qmvKIKPn;Lo0x?O4Te0IMH;UCNF|7+=>8+X}Bv7bwtfU+_jWTtU@Q|16 z6`lfK*RtEg5J$$cBOO%gb#fd8oK0^U&N(=@PqrpI!bqlm&vtNHXM&^5?K*y(^_=ED z^=+ba#ITY-h~2!WJiKIObyUG*bUVj0GzWTH`TWa4t_XrIhWxf`VAp;y|&Bp zU28bUMPAWdyPHAJ%QlqFn@+5@{+nFAIciMwLwe)1gewio3xiJ~}Y+y^_y|0k`h6T_x z`N)N(9!0Bc^xP(vb9{9wR(sFhb>?5larXDg4^QIOFU4<39zo@%puLv^qIF}*Pv9dn5?K0;rAO9J9m3oLbd zb8831iH}b3b9?AOnLXvgP$CSL2yx=i)ZazKljpC)e^QW0@Jx7JW^Ar&wL4`#XaXzl z^@TrTjZPVxhd{0fwQpfBkUB=As?S9)$+X!hf=&r?>xwMk05??7PoMI7aDE7x4fgYI zP;A%QJ(DICQH>bt=>3@V34n#9l~Nw&IgD$YD;s*$1LqAN`T^J-f+z`ie(C*0229zu z%huAgaDo=P%&Pe$YV;G9I3mJqyA)%1`Y+O;<+QMtY`76ST+q4CYj($*5IHRhKI&wn zwmYJnC8pcr^nE`px+ww(!M#l)EP&|vSX8jO#J1Tktfo$-m|UEVGyt8S&0N3O9!;5KatLK&Y3}>J2xsIFBD^Op?{%qFrJsRBka%_qMrms%D*E zW58~}R!N}Di*QCpI%{4nM;}Ye>kf> z^tnY1xEUb2l_ZRn_=Xod*0Lkz7tol7u86%}#0s}1)$m;A^#XYI{Gmg`Jaqdk8Eus( zNPHs^&@)D~e0csL_MJ%f$RIYr2B@`-1SS4#&VeMI&- z`$LHx-gHZ-O#+-=(0nKe?=GwDQtqJI6VzrO_tcG@pHOmb_+Ow5RQCjzsKvm4au-ITYH9_{(#$CEE%4ih z=+=WIy$`^74#%Duux5T{k;a9AnpvRTw)a%%5&I6>#pZOhy6bdjw@$LX4K;CW<8osK z|2@wWbbm!-0+wT#*RmoV3hP8ZHzM^Bnp39=PLU%$bdeeAKoAMN0qTJ}&CuPC){oZ) zvS4dc0_NoIJUNH5U_Da^Bs+-pm0`q>jw-zyj2y7}K%q#)-T_hLaz9v@WdE9E8>wIr z(nLj0VF-@F(MyRmu)_@w^_iVBAY2~ogizSbFII9rhnO5AL=%=XyT}BBP(Ez;f`ei_ z>_{`X4n6rIH_FYG2Bhqd;b?Y!GI`oqZwg_c8+oI{I!J|61@0BRGQZ<(PEf_-4KoLG zwF2nd!H%!|qLJ)pAB+Xu8S|0on|qkX!l)NmxO9N#XZa&Cz(YH_Hb1BP9`MuoC=4xY zALYi-9zvlC=<7jeSdn{g(oy(|8wxb^f#_ z#C5J%3RDB6<=C~IC+kBs8TpA4&Ic_olb>~s*OmHy5Gc8R%-SL40W<=g8XOh=9lcLz(yhr155v+P0b6} z8!l6(GRJEdd&PJo= zZeiaH#PbeB=4pSu6es{2;HT~pBN*NI8gtXV@nFchK(^BbD zQ`xq$b9KjluQ{tgg?HJ&RjZSc$T2unZvuCLX!;{wNq^Id*<)IEn4>4|p32$n25oZI zTzrx8Bm%^@(BN`=HGhvh8lmoiK20w$TB?{?mwo+q$5%4u3E6aEWIA@%5 zH*U0d5Q;rf{GM-yY5OvEqX707=!xb8vtJ=(;}o^43{mh5GFfI+$M{L`4z({7(vT@W znldb072;%9Do@kKh2S{&B+-eW@ip#=@QYUZO8Frl_Q~k=^RoIX{S4GbE1C8z+Zh?s zGi)UcMajgneZl7fC^PdN0)Y({K)l_4GTNcE#aE=gU=3}*l>Bj3IzSDM10tg4cF00} zIkg4QG7{dBHaPXO^Pe3O-8+3{V<~0 zliw2TR73sE7+1;T7XTj#*;}L7C-%^-^T`_gkO3~1gsu(n6e5fk4)p6w_u7il^M>>( znr#?U)a_M>BjuwHTxZUlVfnOVZ;Zi?glU^8UzIBPwaLN_h57Zts7syLjQY%ye8Tt$ za4}JQ$Aq}enUT|4Wda(eyOqwM=``sQ#VanzUU1aaIxWMA5}@lOD2^l$GpprvQ_%d~ zv!`E!RnEzt{iIa2dWA0 zh|H%AGA~8t=L^1bU?Ye&QcCr+#jLs=jteclcNFbZ!GVqRQ5A;8Z+A8AueHSCw$j9C z!>pL$>!4yvfdDHchFSs#CT|*#O6itjt6WdMuTXWWK{ywvq!JeI7N%h+j- z!Yxwe4HqSW=~D-Z5A8+=PNY=dMk@7e66Hu2)->CDy$BbE-tPj077^zXTV}*}`A30k zI=vFWYAS_Fqm|j;g*QnlL*5BE7zcK7{aOTDTR_MrJ$XFt+Y5k*`L$Oa;~pw`}yP z>7AFE>lG27GN=d<6dzvz==(Dcv?Xj599cQM&s)5wQ`y_EuD>5R1L@K2_*|KS-Lc?j z^^fX}4?|<*@fZO(m~oxkLcqd;5Ux29X98--o3HSp8!%q@QRxHoYTHRc8M8S{zVC3) z=0|wNgG{uawUbz~)-84Bdq}V4lwD{!usV8_6+<85y5*3LP$6_nMTkh5deTWq{nY|# zWIt|Ob0Q_#xG1cF`+PhSx{I=e00X^@O9Wb3S-kug4ZzGKD+3U zRa!PCN!I|e*xC^Jn{Vr&+o|x={CveP;f?-U$zVH-^%}3dESmMb$_~b{qk1Z|MmuiB z{$6r&{Rad`Fe7C!p1DjsHA}K6C*rLmKV^2v$?% zCdhw5uh=d1ztbkI9~wdo_CVb z0csM(HvYdkhd}xF7`rKIyBPdmZ+|lulaQ}Tn)GiF{!xmqg+w2fPO#bCm zHcdao{dcp!{r~Oq|8fgJgU~|!fA)0xe+TscT!7rP`O5xpsBM4bviaYYxr87(|GN11 zaDTa#Hb5}b);B;<+akV#9Q-$$KQfbq{>#?(MhHUl?Z)fBHXw9)lW?g{i-Do^EyKmn|$itm_WBtds< z(AR}Vy4ZHxat@Bp756W74Y+s#cFr+KMYs7n(J$s^ zpx^m6TA!(zj_Zx1u#y}|C!;cAdXS}N#MLWLQ&=GU2v;>zD#n*HtDMlsH{h&Aa)}ry zI#A8@iK{1FB-ITiETTFN=&eBcG?QY0B*E(*ssucqBp3|ZDF6*vvso9ANCOB;cK7rsZ+{-IMU=;)R$x;5jKAq+GA#{*R)&H2-PRz2CnhA{5; zy?x24vb*6SRRA3{-+LY%*;CHe@WDkXYLTai>P1e*8e!zO|SwPlZg#!z;T5#qx zSxc7TPLXNzPUB}VWewT^^eOt`5)tmHba9j-=&F15aaoX$dO29pg&9*-m143x(f}yr zx%wJd(4-XcSTxCRG@lrcIl8eU68^Dw7gA;Taf^)R8Gr;bO5NfM#B_i-Y7X1ZcdRGk zd#JPV&xqka$uo&>Qpb)rMXbAuHaxp|85<==tQzgj-U#7gG>{6ekv&uTQ6kHOw4^;7HFLmem zt%Nf-C^oq3~yG{3vZJF%Q*YfQ?i;R%u;>7=cqk0m)*kATb9+J&d#G9W+@d z@6rt|yREA;E*_9Q0DDmyWtD}{32#l8pUviGJ)QELdG%-&1o*#!7{O*RZ7`z*MN7l9 zk=`E0*2}>-Yli!ZY{l(?ly2T3v!X7b5=y6=$HS!_19)m{ZZ4g&h%;y}E>cG(uPNH> zgR?4YvdC@UV$5B~)K3-da*d(uu<=T-HSA{c*>5sF-d4JQ3e?ohPA!N^wsV|nHw}B@ zXr&g&Pq_jQS;Sm*fAQ+qv`c7XU~cfQ8vPoRCP}SKkh0xSx$2+WM+B}#XnD_4Xl%<5 z;ba=61MEm#Mi<$2Ipyl~3Yv{^88G}w=NmmuYu6=)teZ`%;DaEl#HP=ul;clRu0Y$^ zdz4N{c&p0OG~G9mA2ON0HWsl@SG}_K+OPZCrvBDo5}nBmF)gU(MJ(fwsMAwYi#(>71Ob6FhBVB$*BV zXmv8N0_u~n94FZzfQy=qRIZ8VGV`G>rwEYWPMnGMMbj!_k7o9wgbbPD5S%5Wh^9q5 zJdU@AOroBc@eOo`K;T4qeP{ao>@KPrqBYm%rY-fB>Z={~@FmyO z1%wExFGh)9&y6q(YmSY%cK@E<{cc%b?9Jo0WGUP2!Zk537Sl~hBVnwVfn0VI4G)Ba zRw1g$DV99PJ023xRJD|ji#Q=%_qA5=hb&Ycz@LRQ8B)iEl6s5&BEl9+GeMK?@+I${ z;N#~V7CcCh$0?|mVhFf(C=J|d`Ld|KzNh%M=yK&*aXtq`Akbra`f_&)O@nB{CM<;%fz%b zG|eaKIRC-kxK>8!Q>)}NESUiD;kcGVc%EVIOY*`?49Im`B=;NRXxs}be(C5%7|tPg zTT)5eHmm8doNf7>i*k5<3jw7o*DhmG7|pZ%P6UqkfBLQJL11xjc$xJ z?RNGLeD6`eh5UbZ)_)YZCa3(?|2AiONeckbPQI8~{S7D|6CZD6x6Bc*m4!*ZPzssJ z@zU9!YDd=9P8Tun7_fTtlk-K`5;~)S_2Y}+n=k(Cwmvi+9wbYa@l$To>5gyigUjsp zkl^R0(^%&lbYA;zYW0S-G^GAVL4`xA~~sE*WsAHdd%H0~}}qcuO@Yp6}J zA`eYDrfOEVRy^UBvW1vXVoM>m0!bxrL7&9#EKKzhpo@>D!?Hfa9g-4J#xMnh4*ba= zNNlLmNeCQWJQ^+9a4=YDQt730wJ&b(o)A^IX>}T3(-;qwriJzRb+er8k^p5WSMk`X zlUk{s``c`HzZqlONmW)r&OOsb$vQLX4!pqIFY9#^2}z3&r4IkMxzN$!;KL}mC0TB0 z4#Z_fRUfx{-ZcpqULW9^5{VL^N17{sHgXqi>m5ec*K&2)A6-50U2FmuU;nOpMl8gmY10#*0CO!+HU@pl~|N4zq`d z$sGd2ak@!K20OUL#HUP!#o%uuwT69{E)lUIYIA=jMJagd#>k!CL$s*@H#e@#Q6O#n z)=asG5C{NOsW9ZYF1G5{qeKXI3JF}qxGZ=As`CP&Ar?GY0yoGzwyc`GRb)n+kdo&l zRo8V@cgJ6Bi|x8I==B$5)8IKGhdhYGx4XHiy;oik1E%}4V+_dlzO*Di^B+&ff9Bag8`yt4Z z3IUkvdWeNMnrd{RP9TcmDQIHYiojd+Ttt#@j6kMHOEo^)oYUfm?np+620X*mWybQC z$Ve=VrRS2VMk2b|HHeT zy8a+T9T}8Q{*-0{E5-Q30J$^z#Ho9pg(t>!DZ7Gg4$@

kL4Xv9c!(3Y_j@_%5;P%svf=$ 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 delta 29449 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