From 5dc2be82a0fb6acd0305574c4a15fd1d8e657e4c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miquel=20De=20C=C3=A1ceres?= Many of the functions included in Many of the functions included in medfate are
+internally called by simulation functions. Some of them are made
+available to the user to facilitate a deeper understanding the different
+sub-models and a more creative use of the package, but most users can
+ignore them. For this reason, since v.4.3.2 sub-model
+functions are labelled as internal, meaning that they are
+accessible and documented, but they are not visible in reference list,
+so that the sheer number of functions does not overwhelm users. Sub-model functions are grouped by subject, which is
included in the name of the function. The different sub-model functions
are (by subject): These parameters specify a continuous distribution of fine roots.
Users can visually inspect the distribution of fine roots of
Plant, species and stand attributes<
Sub-model functions
-medfate
are internally
-called by simulation functions. Some of them are made available to the
-user to facilitate a deeper understanding the different sub-models and a
-more creative use of the package, but most users can ignore them.Sub-model functionsBelowground data
-
Z50 = c(exampleforest$treeData$Z50, exampleforest$shrubData$Z50)
-Z95 = c(exampleforest$treeData$Z95, exampleforest$shrubData$Z95)
Z50 <- c(exampleforest$treeData$Z50, exampleforest$shrubData$Z50)
+Z95 <- c(exampleforest$treeData$Z95, exampleforest$shrubData$Z95)
forest
objects by calling function
@@ -1516,7 +1516,7 @@ Initialized soil objectsoil (also
a data frame) that is created using a function with the same name:
## [1] "soil" "data.frame"
In addition to the physical soil description, this object contains @@ -1703,7 +1703,7 @@
-control = defaultControl()
+control <- defaultControl()
names(control)
## [1] "fillMissingRootParams" "fillMissingSpParams"
## [3] "fillMissingWithGenusParams" "verbose"
diff --git a/pkgdown.yml b/pkgdown.yml
index a067a0a3e..3a0efe780 100644
--- a/pkgdown.yml
+++ b/pkgdown.yml
@@ -16,5 +16,5 @@ articles:
SensitivityCalibration: modelanalysis/SensitivityCalibration.html
StandLevelEvaluation: evaluation/StandLevelEvaluation.html
UnderstandingInputs: intro/UnderstandingInputs.html
-last_built: 2024-06-01T13:24Z
+last_built: 2024-06-01T14:37Z
diff --git a/reference/fire_behaviour.html b/reference/fire_behaviour.html
index 727445593..e8d4fd531 100644
--- a/reference/fire_behaviour.html
+++ b/reference/fire_behaviour.html
@@ -222,7 +222,26 @@ Examples
data(SpParamsMED)
#Calculate fuel properties according to FCCS
-fccs = fuel_FCCS(exampleforest, SpParamsMED)
+fccs <- fuel_FCCS(exampleforest, SpParamsMED)
+fccs
+#> w cover hbc htc habc hatc delta rhob rhop
+#> canopy 0.52550038 100.00 2.7 7.1 2.6 7.9 4.791658510 0.10966983 592.0044
+#> shrub 0.01407945 3.75 0.0 0.1 0.1 0.8 0.642625347 0.02190927 412.0091
+#> herb 0.01929299 10.00 0.0 NA 0.0 NA 0.200000000 0.09646495 400.0000
+#> woody 0.16542073 NA 0.0 NA 0.0 NA 0.006258824 26.43000000 438.9106
+#> litter 0.23060466 NA 0.0 NA 0.0 NA 0.011699765 19.71019565 370.9679
+#> PV beta betarel etabetarel sigma pDead
+#> canopy 9.181138e-04 1.916067e-04 0.1276082 0.3053187 5284.915 0.0004081897
+#> shrub 3.417267e-05 5.317666e-05 0.2856939 0.5836066 4141.000 0.1448400000
+#> herb 4.823248e-05 2.411624e-04 0.6924824 0.9418071 11483.000 0.0000000000
+#> woody 3.768894e-04 6.021728e-02 0.6924824 0.9418071 1601.050 1.0000000000
+#> litter 6.216297e-04 5.313181e-02 9.1968815 0.1441747 7401.336 1.0000000000
+#> FAI h RV MinFMC MaxFMC ActFMC
+#> canopy 5.0076821 21059.75 8.876630e-04 75.21455 113.45355 NA
+#> shrub 0.1415090 20117.67 3.417267e-05 63.64891 96.53441 NA
+#> herb 0.5538535 18608.00 4.823248e-05 NA NA NA
+#> woody 0.6034187 18608.00 3.768894e-04 NA NA NA
+#> litter 4.6008905 18608.00 6.216297e-04 NA NA NA
#Calculate fire behavior according to FCCS
fire_FCCS(fccs)
@@ -341,81 +360,6 @@ Examples
#>
#>
-#Load fuel model parameter data
-data(SFM_metric)
-
-#Fuel stratification (returns heights in cm)
-fs = fuel_stratification(exampleforest, SpParamsMED)
-
-#Correct windspeed (transform heights to m)
-u = 11 #m/s
-umf = u*fuel_windAdjustmentFactor(fs$surfaceLayerTopHeight/100,
- fs$canopyBaseHeight/100,
- fs$canopyTopHeight/100, 60)
-
-#Call Rothermel function using fuel model 'A6'
-fire_Rothermel(modeltype="D", wSI = as.numeric(SFM_metric["A6",2:6]),
- sSI = as.numeric(SFM_metric["A6",7:11]),
- delta = as.numeric(SFM_metric["A6",12]),
- mx_dead = as.numeric(SFM_metric["A6",13]),
- hSI = as.numeric(SFM_metric["A6",14:18]),
- mSI = c(10,10,10,30,60),
- u=umf, windDir=0, slope=0, aspect=0)
-#> $`Characteristic dead fuel moisture [%]`
-#> [1] 10
-#>
-#> $`Characteristic live fuel moisture [%]`
-#> [1] 0
-#>
-#> $`Live fuel moisture of extinction [%]`
-#> [1] 25
-#>
-#> $`Characteristic SAV [m2/m3]`
-#> [1] 5129.366
-#>
-#> $`Bulk density [kg/m3]`
-#> [1] 1.95
-#>
-#> $`Packing ratio [dimensionless]`
-#> [1] 0.003804203
-#>
-#> $`Relative packing ratio [dimensionless]`
-#> [1] 0.4689126
-#>
-#> $`Dead fuel Reaction intensity [kW/m2]`
-#> [1] 365.233
-#>
-#> $`Live fuel Reaction intensity [kW/m2]`
-#> [1] 0
-#>
-#> $`Reaction intensity [kW/m2]`
-#> [1] 365.233
-#>
-#> $`Fireline intensity [kW/m]`
-#> [1] 1098.626
-#>
-#> $`Wind factor [dimensionless]`
-#> [1] 25.10229
-#>
-#> $`Slope factor [dimensionless]`
-#> [1] 0
-#>
-#> $`Slope-wind vector`
-#> [1] 25.102291 3.141593
-#>
-#> $`Virtual wind speed [m/s]`
-#> [1] 2.881842
-#>
-#> $`Heat source [kW/m2]`
-#> [1] 283.3707
-#>
-#> $`Heat sink [kJ/m3]`
-#> [1] 1388.106
-#>
-#> $`ROS [m/min]`
-#> [1] 12.24693
-#>
-
diff --git a/reference/fuel_properties.html b/reference/fuel_properties.html
index ebde01daa..9e00a5a34 100644
--- a/reference/fuel_properties.html
+++ b/reference/fuel_properties.html
@@ -1,8 +1,7 @@
Function fuel_stratification
provides a stratification of the stand into understory and canopy strata.
Function fuel_FCCS
calculates fuel characteristics from a forest
object
-following an adaptation of the protocols described for the Fuel Characteristics Classification System (Prichard et al. 2013).
-Function fuel_windAdjustmentFactor
determines the adjustment factor of wind for surface fires, according to Andrews (2012).
"absoluteprofile"
: As the difference of absolute base and absolute top heights in bulk density profiles.
Shrub stratum top height (in m).
Canopy base height (in m).
Canopy top height (in m).
Canopy percent cover.
canopyBaseHeight
: Base height of tree crowns in the canopy (in cm).
canopyTopHeight
: Top height of tree crowns in the canopy (in cm).
canopyLAI
: Cumulated LAI of the canopy (i.e. leaf area comprised between canopy base and top heights).
Function fuel_cohortFineFMC
returns a list with three matrices (for leaves, twigs and fine fuels).
-Each of them contains live moisture content values for each day (in rows) and plant cohort (in columns).
Function fuel_windAdjustmentFactor
returns a value between 0 and 1.
Andrews, P. L. 2012. Modeling wind adjustment factor and midflame wind speed for Rothermel’s surface fire spread model. USDA Forest Service - General Technical Report RMRS-GTR:1–39.
-Prichard, S. J., D. V Sandberg, R. D. Ottmar, E. Eberhardt, A. Andreu, P. Eagle, and K. Swedin. 2013. Classification System Version 3.0: Technical Documentation.
+Prichard, S. J., D. V Sandberg, R. D. Ottmar, E. Eberhardt, A. Andreu, P. Eagle, and K. Swedin. 2013. Classification System Version 3.0: Technical Documentation.
Reinhardt, E., D. Lutes, and J. Scott. 2006. FuelCalc: A method for estimating fuel characteristics. Pages 273–282.
R/RcppExports.R
+ fuel_windAdjustmentFactor.Rd
Function fuel_windAdjustmentFactor determines the adjustment factor of wind for surface fires, according to Andrews (2012).
+fuel_windAdjustmentFactor(
+ topShrubHeight,
+ bottomCanopyHeight,
+ topCanopyHeight,
+ canopyCover
+)
Shrub stratum top height (in m).
Canopy base height (in m).
Canopy top height (in m).
Canopy percent cover.
A scalar value between 0 and 1
+Andrews, P. L. 2012. Modeling wind adjustment factor and midflame wind speed for Rothermel’s surface fire spread model. USDA Forest Service - General Technical Report RMRS-GTR:1–39.
+#Load example plot plant data
+ data(exampleforest)
+
+#Default species parameterization
+data(SpParamsMED)
+
+#Calculate fuel properties according to FCCS
+fccs <- fuel_FCCS(exampleforest, SpParamsMED)
+
+# Estimate wind adjustment factor
+fuel_windAdjustmentFactor(fccs$htc[2], fccs$hbc[1], fccs$htc[1], fccs$cover[1])
+#> [1] 0.2029332
+
+
Belowground structure
- -root_conicDistribution()
root_ldrDistribution()
root_individualRootedGroundArea()
root_specificRootSurfaceArea()
root_fineRootRadius()
root_fineRootHalfDistance()
root_fineRootAreaIndex()
root_fineRootBiomass()
root_rhizosphereMaximumConductance()
root_fineRootSoilVolume()
root_coarseRootSoilVolumeFromConductance()
root_coarseRootLengthsFromVolume()
root_coarseRootLengths()
root_coarseRootSoilVolume()
root_horizontalProportions()
Root functions
Forest meteorology and environmental physics
+Meteorological forcing
Example daily meteorology data
Models for canopy turbulence
Soil initialization
@@ -186,7 +174,7 @@Reset simulation inputs
Simulation model functions
fordyn()
Forest dynamics
Sureau-ECOS inner functions for testing only
Summaries, extraction and plots of simulation results
@@ -274,68 +258,8 @@Multiple model runs and function factories for optimization routines
Leaf phenology processes
-Plant hydraulic processes
-hydraulics_psi2K()
hydraulics_K2Psi()
hydraulics_averagePsi()
hydraulics_xylemConductance()
hydraulics_xylemPsi()
hydraulics_psiCrit()
hydraulics_vanGenuchtenConductance()
hydraulics_correctConductanceForViscosity()
hydraulics_psi2Weibull()
hydraulics_vulnerabilityCurvePlot()
Hydraulic confuctance functions
hydraulics_proportionDefoliationSigmoid()
hydraulics_proportionDefoliationWeibull()
Hydraulic-related defoliation
hydraulics_maximumSoilPlantConductance()
hydraulics_soilPlantResistances()
hydraulics_averageRhizosphereResistancePercent()
hydraulics_findRhizosphereMaximumConductance()
hydraulics_taperFactorSavage()
hydraulics_terminalConduitRadius()
hydraulics_referenceConductivityHeightFactor()
hydraulics_maximumStemHydraulicConductance()
hydraulics_rootxylemConductanceProportions()
Scaling from conductivity to conductance
hydraulics_EXylem()
hydraulics_E2psiXylem()
hydraulics_E2psiXylemUp()
hydraulics_EVanGenuchten()
hydraulics_ECrit()
hydraulics_E2psiVanGenuchten()
hydraulics_E2psiTwoElements()
hydraulics_E2psiBelowground()
hydraulics_E2psiAboveground()
hydraulics_E2psiNetwork()
hydraulics_supplyFunctionOneXylem()
hydraulics_supplyFunctionTwoElements()
hydraulics_supplyFunctionThreeElements()
hydraulics_supplyFunctionBelowground()
hydraulics_supplyFunctionAboveground()
hydraulics_supplyFunctionNetwork()
hydraulics_regulatedPsiXylem()
hydraulics_regulatedPsiTwoElements()
hydraulics_initSperryNetworks()
hydraulics_supplyFunctionPlot()
Hydraulic supply functions
Forest hydrology processes
-hydrology_infiltrationBoughton()
hydrology_infiltrationGreenAmpt()
hydrology_infiltrationRepartition()
hydrology_infiltrationAmount()
Soil infiltration
hydrology_rainfallIntensity()
hydrology_rainInterception()
hydrology_interceptionPlot()
Rainfall interception
hydrology_soilEvaporationAmount()
hydrology_soilEvaporation()
hydrology_herbaceousTranspiration()
Bare soil evaporation and herbaceous transpiration
Soil water balance
Water vertical inputs
Light extinction and photosynthesis processes
-light_leafAngleCDF()
light_leafAngleBetaParameters()
light_directionalExtinctionCoefficient()
light_layerDirectIrradianceFraction()
light_layerDiffuseIrradianceFraction()
light_cohortSunlitShadeAbsorbedRadiation()
light_layerSunlitFraction()
light_instantaneousLightExtinctionAbsortion()
light_longwaveRadiationSHAW()
Advanced radiation transfer functions
light_PARcohort()
light_PARground()
light_SWRground()
light_cohortAbsorbedSWRFraction()
Radiation extinction functions used in basic transpiration sub-model
Plant transpiration processes
+Plant transpiration sub-models
transp_maximumTranspirationModel()
Stomatal regulation
Carbon balance processes
-carbon_sugarStarchDynamicsLeaf()
carbon_sugarStarchDynamicsStem()
carbon_osmoticWaterPotential()
carbon_sugarConcentration()
carbon_relativeSapViscosity()
carbon_leafStructuralBiomass()
carbon_leafStarchCapacity()
carbon_sapwoodStructuralBiomass()
carbon_sapwoodStructuralLivingBiomass()
carbon_sapwoodStarchCapacity()
carbon_carbonCompartments()
Carbon-related functions
Seed production, recruitment and resprouting processes
-regeneration_seedproduction()
regeneration_seedrefill()
regeneration_seedmortality()
regeneration_recruitment()
regeneration_resprouting()
Plant regeneration
Plant/tissue water contents
-Fuel characteristics, fire behaviour and fire severity
+Fuel characteristics and fire behaviour
Fire behaviour functions
fuel_stratification()
fuel_FCCS()
fuel_windAdjustmentFactor()
Fuel stratification and fuel characteristics
G1{3HrgG1b%4qk0ml4`(E-vbD9<_E9m@l&a19@IevS5%LPNRx4|3RY3ZB z$gSJ1ab8$4yR>3l;?+ka(c=R3e#O(O(RBVW%NBcXQhDyO6KnV{#X5bCqBjq4)|yoivowANduqDSFAAAQTk ~?RpQ^#A5?vx0FPc9FZC2XQJUyfW&KB=O%Pj`FA@oQgl!f z kpLCFsL-^Ai#WFtdV&MC z&S00>ZNL_nu?80t9i?~2`&?}?$$RBZ6>y9OO-do8Kw>0jEVG=muCq;0F%WX*XQK3@ z9ssy@Qyo?M?f_;{BwjTDJ%i=c9A3q_nab4k@v-E`j@`_<0g47dsIkZQad{S-?~T9E zV`zYhzK&P@O&rfvnMyd4M(lJGE%&jC&~L%XS!G$Os=Ki8sVOP$rgxP&rZ^Z2!w!c3 zlJu6U))v69pm!~%FYGgR;z$jH <5qH_ zhwO~4=z4)oZ$$CM3ZMi8euSo`@YT}R2&Xp?ThJgC4%lL?J@PmlV}6Zvj0tRG*REYB zx7>GoSmVEYnz7Hs0bY!Z{m2{?j+*_(M}ngB!Q=qqd81r~` z3WfEH+Ye)ei_SDb8xvru{zM;F3h2SF(gG7J $e4lqGr6Or{~ c{u*tGT(krA9h4 z-`#Y cjakP)I4`<(N#mRL1ociz62s>cj(&4t&)?Q3?vDpk% zxF#B_0+eUj qUj%LY8cAZ~w#q-}yqrw200X z!IC5Qi>K*<#9blnsKLVI#KzO78& `1zBk;_>6hUpH|)HDlv;tDo)!EdWf~lCIpd zt-cUM?}*M--u~imhT+x!NNnC*P+E=95M4JuSU2Bb=l1QT<@FPb!Vr7|_J@u|q~TEX zi#9E8$N0E51y-!>EZf}mVKY;xZy!Ah>shjM?2&D?=qqSX&$L-`E>S59MI7aI5I{{R zH@|`)ayOuY36x+QM9K&Yr7z?bzenIeaCLw6hs;RlKQ!{Kx#2GFO`H|`oJ65a7LE|b zp-m_LyYPq~s{4&P2{=3TIH*+LpPwFu;cuAg9YNM;5E_Fs8iFt3q{fqVMi#<&)slDb z_EEW^){Q0r#hb4XY|=yv>J>;;4^RaKNx#PhGW=`TuKj0Xp(#XyBkX_0fhUn*dbuQj ze*gXyws 1D|E&b7?ryoLVq(gQ}^w?NOS;jgK*KEfqV+(^q>HLC(e3L zM)~z%N5G3l(G(tJ=`Akf11@u}BtuwULX 6|lGDEbA5aTlBO{|vd@lqObTp_i zL>>iQn9d`?1)U60gpN^JnYWgYnin11#{NMV#GF0pQ3+?D73f^mMP~No^d6f@Eda=i zlD+e#0#KWk`tK>FBcRwniiaQVx}c1PZZZ5i=*N#AEjN)xbm_2_HJ-bug|613wmW`Q ze}tGe^gF^e zUw^i%DdA$HAf}H(*V$Wi^vGFM5o*FzUf3fhVvs}uUYcjrz*aFM2!x?|PWFvQQlc^I z&dmA7Kw_xjvhGnH1e*#LnmX;oa$c~rD}7<)H8Z~I={L+h7vV930P~F@HvxtD6`G7- zsK`+l)rmZ60WV8OFd)T8p})?AdhHPoValx7$U%mJC5V16(b6Klq6`il!0|HYtL`D; z854s7Ef4rE {K^*ON>^X&Y 2 z9_7A%z1wAcxTa5LyhjESgbhs1iCf7g-o}#=g$+)%0IOsTp?^!(c1g)l^P03Fm+_AA zCP1vaXkyaMRGzxV%c93hME_{r%JBm91ldN9_>+X`_1is_RaMsDNU6t+si}rS4zyL7 zO+Je 6&r1a;ATC7u@cN);nOS|J=v zKv%a<8(cm0nNX<)m~$>KbOp14quse8bf5%nBPKF+C7%CPv;y20j%_`7L)q(|>a=QO z1U@X*jdc^p6f%S&00OBAHw2r9T0$5Sp{k`Q@u_`@D$@@ImOtTPe`OW5z$NUlKrEcM z2e<>yz&?1ngP@%ymLnO_S#B**tf2!t3i41d%lm2Qe+>(_bM-k~@B}#=`}diK6p&u3 z&*`9hOb0KL^+1oxijB2ertTK{@5ERXrpNAZn09LaVkFEe(>aMfyg?^9VA-Je^Cv=@ zZZ%1I%6ii=e1Ixc;%fl}VA|F>(*nvT$hL_kBr^gmh;$d8G5ddCI*$`QXlR(`h9Jy* z0&cwW+(YDgFa%-gIDwG(djvx5Ebplj|24#gR-s`=b3Dk8L -hP zA%&TlS^M1gk~?<_L##rwSZo!^SMDErz9n+$i~nd^6+t@DihK~(M5m_%B&IfLn46oE zY0wuz_CuJVch!4p;D6o8`f}=Pf~X{3fr9(RX*10vU%|PFGq4|MkH8^f!DzDLF%|of zK5_6_3lwxd{M1DY6z2q4??S*KnwMEqgo(@wh4+%%w+r&~znx|6^nbDU=3zOmZ`<${ zq9r7vR76ArO;i$ }jlDU}K#rBP@y-_1&cgi@k88JacFph<-WDy4bQsM37D`x)!^ zy#IaQwtdg{ZtovYe=OEo-S>Un*L9x9c^vz`AN%3#OxiZY<5$1fhD?NnpQ_F_o%i4B zL;j> ZjbWV`foD-A_e+i*aMtJ z$%injgEv8uZMEw=Aa^EP(6vyZd*Yg-^(@v6K9;%kvCb02;8LMKpYJAt!^j*2G +)I(1~NnL{I67sapr~H={Ql#;pRc2foenqaD-l(WAztoe#=S zlO`F>XKG?&ctoAge4%iZ-ZNHb3I!R#=!s3S*#&Z-k*;KvX9T2&9Ex<*f@?Fhi0tz( z`*RdUpM&Z=0MyD~@f5^~N{N;BmoDjIw<+w~w`$Fr7{Dyz?9Gz6oYAo{$!|gp`vHB< zewu);!uI_PP(NIW2E^8zR(& 5$e&ico z8O&ScJww=ALNLPPiXSROG^A$q`*{8 ywEq#F -@2yaR28pyiLK4LpXUBr0s_h|&lQkzTeb?;)VObRV{mwt~-7l|r-fl6Z zW<8KY5@Ho4dH^DMa%)AH90WBMbD)9M&dq2tAf~S%6`$Nq`74s91U>K@#9RXk8WbA3 z*gc@8^xGaH=OH4?9ti#bJ`e_qM5$N~c@0DkNpQA;oyACM<>(VfCdS7xs)QcYK_F*; z2yh;Sx-1P3&qhP1{)NBa<+6Q8*%~A&T-Pj7p(KCkQwFvV@X>5R284+u4_~9Rq&bP7 zUFuk-AL1DCghbAg(=N?;$!M#f8FZZ)n* (j#(_v_(2=e5 z(b~oa>_HfGTBxOoClC_8$V!g$IhICKhU+n~0EB=ZuB_~|ZJ_fqHm5q9zNVs_*e~ ^seM!KFDki<3F^Zq@NyNQ-pAQuoaFrm&wEp%ln|TG` zgXCpWdyXJa4G0T^lVN 7<^<4Xivkyl{2k{0fHs zf;NmBVi(T7)w6*Ti!|2~sTk5=;Dd(>QuNV65rpF58Oj ~agq zU$U&)W76tiFb4B#`}hOhpn7{tY&voEv%^4I42V)=4%8p%{uSKut={PE!-(&j45pNa zza9DKpg1x701Ud78w~uMD?%f(Q1&VBVzSiGI7XVF<>jdv+iR+YC{NMd*4En_2TG1> z3REV{j&<95>gJ)Otit~S&k&F^ZKC<&+i$e#ORc>Z5+cxjF8pfW;s$b$uuX`_Olr?8 z9NBRG4~ZlkPBceg^?K1zU0uyosWEB*%{_Shoc_fn>p!es)_056llYbtCD_?$^sZ+K!7N z%~t-vf_Y-lLE!%s6~sY*@E6XX*QG;)t9+qWu(&}E(=CFMk_Ha>)_?s<)Mv J`{ zJ-GWtYU-K2mGoo?rES`1RWecto2WenQoNP0I*D!`XB7;mOKWR?2d%FA`t8lYQoM^R zd+ZAw^MW(n{Nr?m13K0EGuj}SCJM(O<{S)u*LZ$a?Y&;*BH-181;q)Ez8VA6%;}b8 zU<>#TfO6Lf{R5~C>SDtZ$DBg%O0f4H7wnG#`6aX@5wk;3g8L1Bgu|JP;U2H9 eRgo5U6q)S19*2a)ATLt|fMu z`DZCNpZ+UNM(1W^^*ba>9w!=fpg)YPRzQLR?a|p&Flhz)ODG0V^aox}>RwnZ>nGTA zF9!Pavp?S5B54OQX(H_?sjAYz>2L)-Apya`TU=e~T!~wSi{auxeh%zHw>a6a_^{Sa zFmFm91@s >F@{7HaKIl$ z-(4SnY&&sO*9rS`4`UzW7K0^CP`{sv+RLPqklp0=VNc@rk^R@wa&+OU`O&C<2Z0xT zR?f}DFau~m^1rcYkk0qBNcf0S5RbqPM>rCK<9}45T7E*F|L%S*LnJ2zCnw0ys*F^d zjXS_aAf^kDd2V*NPh~v@lnyZYR3xgTFv5kbC+8-#-GpM%{@4gH3p5GiL4_c`^pETw zy7}0##XV >Db)A-&H{N?7>g1N%R(3!s5gMTv;EXS18>*ezgL`5lN`E(jf|jb)>wqcFzQ zU!%2@; xb zI9$CSh|eb`TV@v!e;$t@2Hk+Bij9?h0JG2lpxR_W1upyx5Ao{~iO9_~(i4H~fZ&Bc zvyi5hf-Zm@n&4m9OvDBZF*R^+HD&zAz6-LM)38$ZUZ1+YY!A#YlYen@bI&y@l#N2? z3fSAs>c|&{@N+-3|3EDP?kLs&eSYLLhm#6QTy_~k&=X6dWWicYFM>ua;NCq=@_pJv z!4neQDB`i}Ss&=Euo%BUJ%R^*01ld@rNZIt+$|3GLN{uOUZDP 2a&|Kq059&!vTB<8S@JT?LTkx`XQh)aw|x)bO(~&*L9Z} zPbMPKz)e89`W!o(bgnIlUFcSl*TY~1g$n^(Ah3W}fN2iOSO~q=A3*dECMTXLIA)Z2 zwYaTb7sm 1WUfF;FFdraA|&KEPX_ z5>I4~RPJNJT0a040YDab?A&R?@AMs=+grJZNV^o=OUdcM*6|pIdUfeIkH}L*9v~zq zm(#1$(b3*cx)I~QFj7L`%0iL-phKACuSi%xG!yTFCt|n|qT J#0nKRs`t&$JpCsl>Nl;V}^pD)nNpJ|HbBt) Vwm4y+%>@)B@C352^dP`*}lonLT_zR=$tU` z$C1T%0C7udEXgS6yT__I99dn09E7;T%6CbxFC<>zzu9C65RWU9xNd-64}=NeaZi>A zE}|L)@g#v~(D$S}4?WLuxHa&`_QZ)3-hGfJ#C@3~wNQ;g^#Mb=sLBdFKxmpgAN67< z^YDZz2-#v`=(nZXFi`C`uu0C#6{DVtAgO%Y`1zc9Hm{B_q(^R^TV1-ya2`Qkn<4re z;@H$3Ifxy%blNA!$D`qNfgD|^9bYtxEN1B4iFo$FCt&^Ykmy8z7(&$|up?C-U7pE} z@Fo`0o#O`OC(fWnqlm}VfW6}}Dv6*DDfEIsN{`}D>>Y8RFEJAjv}uQB25unS@~f0{ zryzSLQxy@j(|*(ez#-yUNtZd6tPiv?XFZC`zgxo1h7UdT#Mc(6llS^d__lK)GZA7p z948w5#FdliqfaahoKIPRinT(COyDZ0t_6Tg5qUA%ki(&jCXM~T5J-wdd@VqDuK5LU zg9r^ XmI zgek`rfq8$*Fn^&rc8vd1K(IQ{*7qIi#JAp;0|oOF7dhOSNf>VN9Y8?(_bVPf1Gj6; zGufEGZM;dpFBs4E37+%n#kOc5aQ%F>j-q1MVU_r|{rnkEI(0{Ts!6B98>E+9KE3$< zM9WNCOKL~y>Ayb89E|(}BdZd(008xx=BN5``=H5iIrs}e9X}5b56*yZZ-k^Ua+NJk zYo1|ukLq_c(U8D^vzho 8di-g>$}U3 zXr}THZQlQ*A=33joiU?7r9^oaxX5lFFdoVtc;#qV#{4tWXnOFfoFv1e`J&Zc`nfV+ zK%kofNJ@qyf%`b2=R`NdFa!XCU0rko&KwotV6J2rT)l>o5s$aGcSk9sv4PtDIho77 z6T2SyU_~rrw)N$alZ~AOA)<`wLVNFLniP0MM-SF;xec{yV~e`I{9Iif7-sV1?b|)y zzI`)6Nf!CQWCO1WX!|OV4a++K%fETwFEXEM?c2C0D=BMOb+$ E)>qmnUr*mIJp6@d~DxA%^&5Z;McJ2#T zlSgq6FQ#J`aUd!kz0${oSa~#U~p*x z`bt<4g`ALVZ{g{J#c&+%OLR01=^dL|Qe|Bo2eK!w&W{Yn!*jAIQOk_XOjA69iRG6d zq)tYGyb}dQbWc)7PwdIP{Wy;zGcvA_kNG6Jfx!w&Z-^Us7cN}L%WHyTa^=t|9EJDS z!+Zc*x4!F_ZR+dmTcP2G@106KebBpNVQ_C^=11=es(D4>w&wD7n<1Dk6$WRIM0NfA z$(?ecGHkXxtPq{y8+ltwjb?4Mv^cad#zr&*ccnlmDNB57*&ZBb(LLwSpEpHkTQc-6 zPT|D3OG v(V;Ep>&!gc_)&RAOb?f~>HapJ#sk z=!cE=YNN?d!7VA6($$>P-heMVQAAYHgm?&Nnw**<@AzK1eVv?(lh!Ca415s~+HW*q zDMlwH`DSEfT%W-|B64zEcQ0e0N J!i4f}!*6NyVnO0x3GB &DCexYr4 zpUU)iyU&MA8=>yVeHwiDc`Imn#z?YyRrUy`Mnv%9ax^ctz5-EuU(R)Q=cQ#7TRk2b z`Zug(o1HOku|?N)R97UO9yaqetewYo>{ZyGySq6MiO?#qk_%Q=Iq@3lJX3W=i tb;53~N z5>U3LkKA!3gjldZOPOuSNvTl{Tcv!UAGaIF%c2b^<7hD!$MfgTfeL?2yV{?=1qI4l zoW`Dz_iVz39iFm4_c@y4hQ@j5t*&jg#2G! d1Z68%cv7)!;QsZPk+tbqdfs0iUo zP0=marqaG_ZO9bb=e%QGx}qDNoa{#yywPvJm+fyVS8Inb6t4L>v$gbH{RnE~N9f&h z1*zGi3C#Vr02T@flez~YJaNMdctfX62+JR_@OcoVWO_8x5yeUurQbN&53 >1v}H?dbxeX(bYChu{mXviY7n)WStYa
jxPqfrgXPU`v(7tGB`(9K6HL}9uu<;EO(mqZF d`s!{Bycu5%^eH3+({t}cEi+uuLGu54^<#K|FZ$ue(g z1^LdZ?&KZ$|G~ssbTS@Y-j SQRWaip4pVIue ziZKh%#t`SImo`)q@*%|t=ip4)7m(9)=vCN^h1RIMA}`obF^j|o?FeEN!#{B{ZwHv+F~Ra zs2SqgeL9kQw6(P-G_uJv3Urdjdn|y%nj>`UzZl5ty;wO^DIyPpMQ{39l7cTVS!IM*1UtebK (o>geSLk|GPr?u zMfW^E6uKJkT~%4R97NoNU%I`$y){y5SbT^oU;>>N>30bCLc?B)@#6-xebr$^>&V!c z&)jLxC8^tw7Nd=Us@}Gp6s0)#%Uj8}hHmE9Mw>-)e-HWicrUECCCs+agi4VwaZ!ML ziTfs3u3n9V0>}8uExh+m@PE-gz(PX9jz7USc<|tX3G#0ZZSA>`e=(gXXVl+8DYNdv zg$s-uZGR6m@r0laEu7^IBz*zuvKH}N4)5stw f#863 zvwA@~zOXgWF6`it?OWvDC?I>qI}{)VY8+oeg_ng8{ TNqaJGKRLC*SAK+hZp& zXpJOS$mH-X-g1R8P@-knDv+x1#K~fjZbDhL6?Y^8$FQ--EelB*lM7hL@mSzIEz5i= z6XN1R-99o<_ZKJfH{1XC2ae?!^kogdzU!i?Z{A3tYjRiYB+i1i=Q $b9}rOrvsyZMc7Br$&%3P?)Mkc5@q)SJ9!YZhncEQ5L9 zd0~lCRa?uBGf3D$Xk`n|u>#9$yuJPXK1eoAQuq2HsK1 &zT}G8+jdjRVBcDG%qna~jeRlr*`4e(u+Pb<$IHVS*KpdBaAW>6O zv(u*SL-gaT-?J_wBML=?K%(DK`sgXZC7u{9LG&FO{?y_3$9L!8;Gof1EDgKPyxC2T zQ?%xOsi{#G3>0*bVcRPlT)Jo)P!ft8%{CwYARLeTpMO3z dW^e$tCL+Q>tpJG61*k4Q^6_+=qoB_{=7kV`I?F$+t1 zbTl9*4$!@eQD;#ywVEur+sqxx)=n>DE`5#GqkM6NAkf`1?{VntUxhxQEe zS{(Go;o!&{toyO^REbHgn@|vV&NFgT$9@7`FgEKq?>Kre>gYsh*wWkSD3ec3SzW=( zmnJLUAP7tnj0L^O%Aeneo2}8v{~QmVEQf8|wpBGWa07FoVMCv^9Y)C+N%Tg|5y+Qa zvPljF3{=jf4})JKV`2pGoq5ROLBXz >ziS{#E}*Z7s3< cLJ+99#gJr5 zw3wWkSTf{^GG6Nk_K5%(7bnDIqksIk+AAcPn)mTA!$07uuLgwnK?G0P3oS<8db;}h zp)A&m<~M>(Lp}A-4N=dnn0VugUL$)AzqpmjuF2_FIcqOA$GY $ z+j=V xz1TSMCo&~Lu-#{|>+S6&h5Gefi?Av~@I{)%+wp}l z{|BFh#inxU(r?-ulmn%A(#eG(j7P`Bgv@=F7y{vlUWax8!8orS 8Hb=UnbYUuaDdm zf^>FdTfTTf0r*B`2`fv4t$3pxSqP`t$crGkDuf!27fVGQONHVg&EEHvg@Zj&vVXO3 zXb8f&x`(Huzb<(rmcgas$1B_wAp?H4zAOQyb!=?xKa+`godJq*H~+xWcHVo%idbmy zKX%>yxVPl&n$mFl!6~UvwjDO 5{19Q&RMzP(nWgJ&)*tBd7)1lF<(9z zkA8pD(Sq64*z`_j^9 +>bb3 #pc`>=)ySS zOUhVlq;qf}Y+yxJvhsT?it>%Yr3A;o##S4z#e#H;QOjjkH^H-GhrZTqH$-MbpTlPD z>c((GaI3FQ_ax1pYk-VN3|R)R9RbVL7BGm&|AUj4{N|4AiE^t#Sd6Sf5%hix#tkQS z59ZDvO0RGh#&qP2zc1OrAd ig|MJtnctpk=U-xc~efDK?W^fFf1WyyuQsmfnjlJiEgN4Qf zCj4dy65%xaE6mquBGAa4Y@5urxDewN%Lm1U;r_fPhd!0V10|)enYi@U Elor9o`0$@Z2u sGtfL@uf3GS9HEQ7U`Ld%Wz7tZmiuix*FxBRCKa{X!%W9*u;O$_?1q ze5wJh0o%_3ifu&XAnD<3>KgKwa79uB;72t80pfrD!++2H&}PfL#!R*wYR@9DAtorP zts(4>j*El8%H%lEkODG2Ir?#H%=5>@EVvK{peYb{*w =CO4d$dor6#o-#Y4 zjkM+3qIDc8v#{tK`uVD&5J(^wiPj*vx*|^Yf|qY)nQdm_4K44ewRdn(hA3is)QE0B zUBxq_p{1+qdl}&rt3mOB9fK86a#-mLSZ4O6=w;ZQEkm7;<7?#i?;-?+RzH<>?w~Nq zGG>M4F#W|Ol8J(SEPL2+exSC?Cd+LlL{LMJi4^e6{@^Ku%SS80$Z$30YJW`2H-CE? zdgBr*>!B%ZBNEu}11!PH-@j>v#)%Var5f!torXM(ylAumr%oB5zqhOD&5Pt{NXf#c z+qSgg`_k|#C0y+J#PrSC!+}YPfM%dWl_p5Qvp<&YD=&Ov%-VPsOPfYR>>#>=x*%kY zSDU5`6&0O2wui0Jk%1U44Y)TiZwmpXUmYiR!p(#~-R)9WLmJOx=HEC~NlC%V3e|X) z@eBg?MqU%}b*6t@!PS@Cvt0Jw?`Knv9Iq_XNmL$&FZysWv$Bd=eb4gz?sfsaqkxT3 zBZ|e%ynwWbpgBsZoi^#HfY~3Kn8e~wM&IYd$>J~3_RhVY_uXan!i9ACUS!kz==%r0 zg=Yo6e e&WdqUMA4PYjS0x2~I 7<9F7NDJ RPq6YLnJi1br;ml&=oK+@8Nt!MMa!jC}LJ;F7@CiVDD9*Vaah>ui o9P>x zvi-lYgvvT!X~1AX_C^;RCVy%z`zmME6TE&O 6751DrjO>65=n%d+pIhWTwj22q;K?S$J&Lt zAuBSV0?S*x-90@ecXr`lf}N}iz67FpApc)evz0~m6iMIV9>Cjj<6(il$;2+yhX4-) z$QP^|Q8i@QGI}>7@8WN0rhJ2ff*iY^+z}2r4FFY&mzOkaRk?>WAt|8IfC&}fuSRBs z#Q6QwrH*%QXClcSf)LyHz8R1t8G2F}wEZ6$e}6@Wtf<(4jOxF3lK33$^d`x9+hf<+ z2?Ao!r^D#KqHhaqS>c|BniAAgX46dni#}-gh9Y@pAlb(B%nq@*Ih8s8?E~zC%Wh|4 zl)3^)yCT9}l|H!90wXdcbF3hN40gj6Wg`6%ywO-82E2$&g5;D4BB%ei*i<|XDBlNu z3mbTO(Im+Qda6n3_YAaK>*mlez@8c7!@)V+ zfTF*3k=%IRD!B@X>spzO#uc1?FdN;k{1d3$#k)IDcH+nQ?|>kRPZc!+e$*pK6@#Du z`49hdKmN}x2SJZUdFhhVud14wcp&&8pcfG5=~h5{0?zSX@u{g&fVMmv7b;=a&@j)8 zFuxH}2i|wm{|4cuw+)5V4N;WT-V_Jj_sbWZ20ZSH5wu42tv70E5NTxFx&fUsWG~U% z^+>q){0+P{jo%3Xpz@zKwgCQ(j-Km7)RY0;mOYS&t4r_-)e;PJg$8#I0IP!--KB_} zc^iVN4uQweu0~2&McyBm_O9s#C _brS;Z@xCW#7Mz($3w6vZc`HN58l z(ljnsf?rf1eISuQ=)ac*_yQ_L|GGPn`snE8hXNukB)Q1;rqMh+7T3C;`Ux~r4EA~{ zow?0S--RYlm@fb|gX+W`g)I3?0D)@$|N9TI{0{Tgoarq_)1Kp7=xt#b*rSA;3r8cz zsEzcLZ>=rpTV!Abvy$X;az#->C_z}7*XjC8%2o5};ljeGc|YJ8r3k#8#O-7Vb@Xyv zoN+G`>b8-xLw(_bEH6(|Y7Vix4zZ(laW_d7-waF)fwrr+H?w&Rv}nPl>|c*)Z zidzDWFo9N543@qG&~=b$?Lden=vW;ZQY;!XBmjb}CNx@}EQmH=avm5u{ ZF_Pu0b1ujdEd-8Y07lRnTvCw;eON?A zQ4wG|xtTcgO_ACrLpDj!9;{vVFAkS36@i;JL0LRu4_r4HECAFtB_aT@tgE$k4|QP- z8KfH%OpYh#fx^*Cw>cGWkS-2KX=HBeNA`dmo4c35 8h|uVPSAF3H=2-=-bbBubM0L1xe{HO_x2;*hn|hF z6s;&P%9AjU!148)H%eEpUL}9vtw|aVfMD+oa-vpP2Kb;PNH?DG=Q|hy4vlA;s3!1o z?=f;_@>|a{ s;Yjs?axC3V2Ph<%b_B`wQ>Ol{} za9(+eY?1&Niw8s#h!SfI3YNB7g5|+xA_AHz@Cd_Ch^aVGmQ`Pj&b=O}6j%pL!xU|~ ze_pPpFwgM50-h~qeJr)cu+4lqdMAB%&MbtU6~1F@m$-m-6PEt=o0KdrjY!ub5$u|8 zTOyATL*??1^jrs&FhHAA;h-x1;&dfRnU&^EkbLe$7ubucY%C8?$oTWIB!&qXxz#9p zH= duoHtK~gzP*w4(&Ko_&-?>a|i=lSvD$1XS|M(;tLz8fA1LonECtKFve zV!dV7P+=W>=`6lyNdwO1kdTmA>98AbOho~r@`^!BF}Jkz!94+MPmY-|**%2Gufybo ze}fY~=)FP{CfF6i$Y?FJm3E4Xh{Hq;M=EdGA@?KsTjVB+(=gtC%iJ7dYO@f7h-m-O z7%fx>o1u4E$+CM;9 ++bxlhR=O#`ym3QrNA zxhfpyyH|+3#n5S}z!4@ngz*mVfDX-?pn*p8URNATN)3SMt&w&Y!A5x{k?0nlB$unk zf%|ZlZ-u+wYjX|o3jDIa(<_wn7uil?+K}fQ{s;%y5CX&xPhq&OBWyNW(mNk}(g%5F z_mPqyX}TmSKW93aezcCP2ekvmCQ@L0P}Q@CVYqxNrifp$b8skxLCZ=4OFH%2hIv9E zx%y`&!ohe8dkzQsjlIc(B1q@5%w!B8rsM@y4$k8vmHyEAoU!vmeO9hAh){1GyQ6|h zMc{?wf&C|JkAubmyo}Dlgu(P-qZR-KN $DPHa-1or9KQxrK+E(}#Cxk!*zH~xdgl>?x+ zuFF+m-9(*c*Z|+~A!6{7tVv$xdpMU_?J~f~*{^a_XNF*WuoIHIRuoLdR`oaq$#WQj z@QW>Z-`uay;jmDeIKqyg6)GKT1Lx6dR#rgHR{2&lHCC(Ax0By1-O|ih@(IkuDv`G% zM+woWm``Bwoe0=|nIv$g?Ve{CZUJ}J-H@R8(Wl9c_&Ikr4+A1&a5Eudfg;!GB8(I2 zr_s`SV&e$8snkz!%jRL+te3x_XDPCxk69J5xQ@S{&Jb}K@&whYolh7BN;ph_)9odJ zUB(ldCNVI?L}_o@)WB?Gjwey?Z8JGTev8MOH7hru2DvH}N4~8U^y!LL?7agh_NP;D z%oo5wWJS(IXwDjvfu0~&?zCf`p>fF?@TqW+k%fU*@%YC}*(;Ih3Dy~+*rxXw&BTo- z(MNL%L9Bax;lpck1F=3d-=V;6q0ctax#T9Rd|OoHCN%(xT&a@ OXoh)UiArIMJf5TQFU`GDjBH!Twv!zp#cquX zHuMNKydr>Ek82Po*&FE(&L_G9#}}IImYaD# !JsQL? z0AA9}8c6~CEY#A2#4*daqctRAf`i_BV(#UK@$v>D9LDht#o~G>3sw@@CXOFZ Ex9V03tW6|s$hZA1*`0?W=fP0c*){RK#CrVyJ u*CWn063mL$NyNxgru;ti+(9waLv1c8K0hHTl| zX-6pdAx;G9gmxa12IL_3y1$)#S~wH3&Rgh nn4S1liW$95Nx5){>pd;8nHN)n)RLU)V`bUm_jB0HpHP`r=}G57};avub=@}JDD zT@DT&%0@;_5Ij|cg|S=&gNqheC2j3$BIm@7)>}FFZWH*z769NLf1eP^E0FNk8eYAi zH3~+HB)LvB8ICR@Wy2n@M{>J@$a5ezBEN{25jg_MKCuy%wOv8Eb`qTqk?4WPp2RoK zL-I&+NK! P-A3I7V9?g9^ zc%DUYqA`W1FL^P!=N^mYBJeVBs3SB1!ry^E#WVF3#{O)5IfLe^WcUX-Vuh>xe1!yy ztR-|i5H&U_*0vsdxd|GR1x~@_P425M$Wo(`!nNYDH&IC9lYf;~R@{;8hb9KOX6Z6x z$T^Z(-pJ#^=L#NVJ%pCV(gxP&K7kG$sFq;EURVH#lZ!sqG+R$}ad!6h-se7kJsPaG znXG8^8gipa%7>JD&}reITa_t6uHYGp-qseFsW?pM(0|hl+tZ={VGcqfb+T9Z%#_}4 zl|zTTxx&e(i2fkeB}dTkFd#~HtlanwIT}c7qgo`65NQq7y3W)Nskn})fWA19zl>ZhC2Q<)djmmaS@w*m zo4xu tlj{kGOFqNu8qaj|BCsAU$db(neM