From 9393faaa937bdc8553d702b7481f6cf549c23b3f Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Wed, 30 Sep 2026 12:36:10 -0400 Subject: [PATCH 01/28] libgis: Add random number layouts and generator states a program owns Tools which draw random numbers in parallel, or run ensembles, or keep several model components reproducible on their own, cannot do so with the one generator shared by the whole program: whichever thread asks first gets the next value, and different seeds are related on this generator (seeds 2^31 or 2^30 apart are shifted by a constant, and consecutive seeds form a lattice). Add generators the program owns, struct G_random_state, and layouts, struct G_random_layout, which place one state per unit of work on the generator's cycle. A layout is a seed plus the way the span is cut into streams of stride draws, one stream per unit and run. The span is the first quarter of the cycle after the seed, 2^46 draws: the multiplier has order 2^46, so positions 2^46, 2^47 or 3 * 2^46 apart give values differing by a constant, and the other three quarters hold the same values plus 0.25, 0.5 and 0.75. Within the span no two positions are that far apart. An exact layout takes the draws of a unit as given, so the streams are the positions of a serial run and a tool keeps its earlier values; a bounded layout takes a bound and rounds it up to odd, so that units a power of two apart relate only a few low bits; a spread layout gives every unit the largest stream the span allows, for one run, dividing the span into an odd number of parts: with an even number, the unit halfway along would start 2^45 draws after unit 0 and the unit a quarter of the way along near 2^44, distances at which the values differ by two or four constants in turn. A spread layout holds at most 2^20 units, because the stride rounded down to odd loses up to two draws per unit, which accumulate along the span; up to that count the units nearest to 2^45 and 2^44 start at least 0.48 and 0.24 of a stride away from them. Runs are appended blocks of streams, never reserved, so an ensemble needs only the run number. The queries return the runs that fit and the stride; the two state calls place a state on a unit's stream, or a unit's stream of a run; G_random_advance() moves a state by any number of draws in one jump; G_random_seed() gives the shared generator's sequence. Add G_random_generate_seed(), which reads GRASS_RANDOM_SEED, or else SOURCE_DATE_EPOCH, as an integer: an empty value counts as not set, a value which is not an integer or does not fit is a fatal error, a value from -2^31 to 2^32 - 1 is used as it is, and a value outside that range is reduced to its low 32 bits with a warning. Without either variable the seed is a weak hash of the time and the process ID. G_srand48_auto() seeds with that value and returns it; before, it returned an environment value unreduced although it had used only its low 32 bits. Add GRASS_RANDOM_SEED to the list of environment variables. The shared generator is unchanged. Tests cover the identity of G_random_seed() with G_srand48(), the three layouts, the runs, the refusals, the absence of constant-shift twins within the span, the distance of spread units from the two- and four-constant levels for every unit count a spread layout accepts, the low-bits rule, the advance, the seed from each environment source, and independence from the shared generator and between threads. Written with the help of Claude Code. --- include/grass/defs/gis.h | 17 + include/grass/gis.h | 20 + lib/gis/lrand48.c | 545 ++++++++++++++- lib/gis/tests/lib_gis_lrand48_test.py | 913 +++++++++++++++++++++++++- lib/init/variables.html | 12 + lib/init/variables.md | 12 + 6 files changed, 1483 insertions(+), 36 deletions(-) diff --git a/include/grass/defs/gis.h b/include/grass/defs/gis.h index 498418fb01e..bd9952d3202 100644 --- a/include/grass/defs/gis.h +++ b/include/grass/defs/gis.h @@ -518,6 +518,23 @@ long G_srand48_auto(void); long G_lrand48(void); long G_mrand48(void); double G_drand48(void); +void G_random_seed(struct G_random_state *, long long); +void G_random_init_layout_exact(struct G_random_layout *, long long, long long, + long long); +void G_random_init_layout_bounded(struct G_random_layout *, long long, + long long, long long); +void G_random_init_layout_spread(struct G_random_layout *, long long, + long long); +long long G_random_layout_runs(const struct G_random_layout *); +long long G_random_layout_length(const struct G_random_layout *); +void G_random_state_for_unit(struct G_random_state *, + const struct G_random_layout *, long long); +void G_random_state_for_run(struct G_random_state *, + const struct G_random_layout *, long long, + long long); +void G_random_advance(struct G_random_state *, long long); +double G_random_double(struct G_random_state *); +long long G_random_generate_seed(void); /* ls.c */ void G_set_ls_filter(int (*)(const char *, void *), void *); diff --git a/include/grass/gis.h b/include/grass/gis.h index 2319e9a8869..9a1e8838454 100644 --- a/include/grass/gis.h +++ b/include/grass/gis.h @@ -628,6 +628,26 @@ struct Popen { int pid; }; +/* A position of a pseudo-random number generator owned by the program; + * see G_random_seed() and G_random_state_for_unit(). The contents are + * private to the library and may change with the generator; read and + * advance the state only through the G_random_*() functions. It is a + * plain value: copying it copies the generator's position. */ +struct G_random_state { + unsigned long long state; +}; + +/* A layout: a seed and the way the generator's span is cut into streams + * of stride draws, one per unit of work and run; see + * G_random_init_layout_exact(). Private to the library. */ +struct G_random_layout { + unsigned long long start; /* generator state at the seed */ + long long units; + long long stride; + long long runs; /* runs that fit into the span, 0 when none */ + int spread; /* a spread layout allows a single run */ +}; + typedef int CELL; typedef double DCELL; typedef float FCELL; diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 1491dfe63a7..0275f6441d4 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -18,21 +18,32 @@ * * The seeding functions are not thread-safe; see G_srand48(). * + * The G_random_*() functions instead advance generators owned by the + * program, one struct G_random_state per unit of work, never shared. They + * need neither atomics nor locks, behave identically on every build, and + * give each unit a sequence fixed by the seed and the unit's number, not + * by the thread that draws it. The library places the units within the + * span, the first 2^46 draws after the seed, a quarter of the generator's + * cycle: a layout gives every unit of every run a stream of stride draws + * in it, and a state is put at the start of its unit's stream. See \ref + * gislib_random_streams for the model. + * * SPDX-FileCopyrightText: 2014-2026 GRASS Development Team * SPDX-License-Identifier: GPL-2.0-or-later * * \authors Glynn Clements, Maris Nartiss (thread safety) */ +#include +#include +#include #include #include #include -#include #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \ !defined(__STDC_NO_ATOMICS__) #include -#include #define LRAND48_ATOMIC 1 #else #define LRAND48_ATOMIC 0 @@ -54,6 +65,20 @@ typedef unsigned short uint16; typedef unsigned int uint32; typedef signed int int32; +#define LCG_A UINT64_C(0x5DEECE66D) +#define LCG_B UINT64_C(0xB) +#define MASK48 UINT64_C(0xFFFFFFFFFFFF) + +/* The multiplier has order 2^46 modulo 2^48, so two states 2^46, 2^47 or + * 3 * 2^46 draws apart give values which differ by a constant for as long + * as they run. The layouts therefore place all their units within the + * first 2^46 draws after the seed, the span. */ +#define LCG_SPAN (UINT64_C(1) << 46) + +/* The most units a spread layout takes; see G_random_init_layout_spread() + * for why. */ +#define SPREAD_MAX_UNITS (1LL << 20) + #if LRAND48_ATOMIC /* The whole 48-bit state is kept in one atomic integer so that it can be @@ -63,10 +88,6 @@ typedef signed int int32; * the result modulo 2^48. */ static atomic_uint_least64_t state; -#define LCG_A UINT64_C(0x5DEECE66D) -#define LCG_B UINT64_C(0xB) -#define MASK48 UINT64_C(0xFFFFFFFFFFFF) - #else static uint16 x0, x1, x2; @@ -106,48 +127,113 @@ void G_srand48(long seedval) seeded = 1; } +/* Read a seed from an environment variable. An unset or empty variable + * gives no seed, so that the caller can try the next source. */ +static int seed_from_environment(const char *name, long long *seed) +{ + const char *text = getenv(name); + char *end; + long long value; + + if (!text || !*text) + return 0; + errno = 0; + value = strtoll(text, &end, 10); + if (errno == ERANGE) + G_fatal_error( + _("Random number seed %s from %s is too large in magnitude " + "to be read"), + text, name); + if (end == text || *end != '\0') + G_fatal_error(_("Random number seed %s from %s is not an integer"), + text, name); + if (value < -(1LL << 31) || value > (1LL << 32) - 1) { + long long reduced = (long long)((unsigned long long)value & 0xFFFFFFFF); + + G_warning(_("Random number seed %s from %s is used as %lld, " + "its low 32 bits"), + text, name, reduced); + value = reduced; + } + *seed = value; + return 1; +} + /*! - * \brief Seed the pseudo-random number generator from the time and PID + * \brief Generate a seed for a random number generator * - * A weak hash of the current time and PID is generated and used to - * seed the PRNG + * The seed is the value of the environment variable GRASS_RANDOM_SEED, or + * of SOURCE_DATE_EPOCH when GRASS_RANDOM_SEED is not set or empty, and + * otherwise a weak hash of the current time and process ID. A value from + * the environment must be a decimal integer within the range of long long, + * with nothing after it (leading white space and a sign are allowed); + * anything else is a fatal error naming the variable. A value from -2^31 + * to 2^32 - 1 is returned as it is, and a value outside that range is + * reduced to its low 32 bits, between 0 and 2^32 - 1, with a warning. The + * result is therefore a seed G_random_seed(), the layout functions and + * G_srand48() accept. Record it, for example in the history of the output + * map, so that the run can be repeated with it as the seed. * - * This function is not thread-safe. In a multi-threaded program, call - * `G_srand48_auto()` once *before* starting the worker threads; it must - * not run concurrently with another thread seeding or generating values. + * The hash of the time and process ID lies between 0 and 2^32 - 1. Two + * calls in one process within the same microsecond, or within the same + * second on systems without gettimeofday(), return the same value, and + * two processes can get the same value too. * - * \return generated seed value passed to G_srand48() + * The function reads the environment and the clock and changes no + * generator; it may issue a warning or end with a fatal error. + * + * \return the seed */ -long G_srand48_auto(void) +long long G_random_generate_seed(void) { - unsigned long seed; - char *grass_random_seed = getenv("GRASS_RANDOM_SEED"); + long long given; + unsigned long long seed; - if (!grass_random_seed) - grass_random_seed = getenv("SOURCE_DATE_EPOCH"); - if (grass_random_seed) { - seed = strtoull(grass_random_seed, NULL, 10); - } - else { - seed = (unsigned long)getpid(); + if (seed_from_environment("GRASS_RANDOM_SEED", &given) || + seed_from_environment("SOURCE_DATE_EPOCH", &given)) + return given; + + seed = (unsigned long long)getpid(); #ifdef HAVE_GETTIMEOFDAY - { - struct timeval tv; + { + struct timeval tv; - if (gettimeofday(&tv, NULL) < 0) - G_fatal_error(_("gettimeofday failed: %s"), strerror(errno)); - seed += (unsigned long)tv.tv_sec; - seed += (unsigned long)tv.tv_usec; - } + if (gettimeofday(&tv, NULL) < 0) + G_fatal_error(_("gettimeofday failed: %s"), strerror(errno)); + seed += (unsigned long long)tv.tv_sec; + seed += (unsigned long long)tv.tv_usec; + } #else - { - time_t t = time(NULL); + { + time_t t = time(NULL); - seed += (unsigned long)t; - } -#endif + seed += (unsigned long long)t; } +#endif + + return (long long)(seed & 0xFFFFFFFF); +} + +/*! + * \brief Seed the pseudo-random number generator from the time and PID + * + * The seed is what G_random_generate_seed() returns: the value of + * GRASS_RANDOM_SEED or SOURCE_DATE_EPOCH, or a weak hash of the current + * time and PID. + * + * This function is not thread-safe. In a multi-threaded program, call + * `G_srand48_auto()` once *before* starting the worker threads; it must + * not run concurrently with another thread seeding or generating values. + * + * \return the seed passed to G_srand48(), between -2^31 and 2^32 - 1; + * where long has 32 bits, a value of 2^31 or more comes back + * negative, which G_srand48() and G_random_seed() read as the same + * seed + */ +long G_srand48_auto(void) +{ + long long seed = G_random_generate_seed(); G_srand48((long)seed); return (long)seed; @@ -272,6 +358,395 @@ double G_drand48(void) #endif } +/* Advance a generator of the program's own by one step. The + * multiplication may wrap around at 2^64; that does not change the result + * modulo 2^48. */ +static unsigned long long lcg_step(unsigned long long x) +{ + return (LCG_A * x + LCG_B) & MASK48; +} + +/* Turn a seed into a generator state the way G_srand48() does: only the + * low 32 bits are used, so a negative seed gives the state of its two's + * complement 32-bit value. */ +static unsigned long long lcg_seed(long long seed) +{ + return (((unsigned long long)seed & 0xFFFFFFFF) << 16) | 0x330E; +} + +/* Advance the generator by an arbitrary number of steps without taking + * them one at a time. One step is the affine map x -> a * x + c, and + * composing two such maps gives another, so the map for `steps` steps is + * built by repeated squaring, as an integer power would be. */ +static unsigned long long lcg_jump(unsigned long long x, + unsigned long long steps) +{ + unsigned long long a_total = 1, c_total = 0; /* the identity map */ + unsigned long long a = LCG_A, c = LCG_B; /* one step */ + + while (steps) { + if (steps & 1) { + c_total = (a * c_total + c) & MASK48; + a_total = (a * a_total) & MASK48; + } + /* Square the map, so a and c then describe twice as many steps. */ + c = (a * c + c) & MASK48; + a = (a * a) & MASK48; + steps >>= 1; + } + + return (a_total * x + c_total) & MASK48; +} + +/* The generator tells seeds apart by their low 32 bits only. Seeds read + * as signed or as unsigned 32-bit values are accepted, so -1 and + * 4294967295 are both accepted and are the same seed; anything else is + * rejected rather than silently losing its high bits. */ +static void check_seed(long long seed) +{ + if (seed < -(1LL << 31) || seed > (1LL << 32) - 1) + G_fatal_error(_("Random number seed %lld is outside the range from " + "-2147483648 to 4294967295 the generator can use"), + seed); +} + +static void check_units(long long units) +{ + if (units <= 0) + G_fatal_error(_("The number of units of a random number layout must " + "be positive, not %lld"), + units); +} + +/* Fill in a layout of units of the given stride, all of one run first, + * then those of the next run. The number of runs that fit is how many + * times units * stride draws fit into the span. The caller has checked + * that units * stride does not overflow. */ +static void init_layout(struct G_random_layout *layout, long long seed, + long long units, long long stride) +{ + layout->start = lcg_seed(seed); + layout->units = units; + layout->stride = stride; + layout->runs = (long long)(LCG_SPAN / ((unsigned long long)units * + (unsigned long long)stride)); + layout->spread = 0; +} + +/*! + * \brief Seed a pseudo-random number generator of the program's own + * + * Puts the state at the seed: it then produces the sequence G_srand48() + * followed by G_drand48() produces for the same seed, so code moving from + * the shared generator to one of its own reproduces its existing results. + * Use it for a single sequence; for one sequence per unit of work, use a + * layout and G_random_state_for_unit(). + * + * A seed outside -2^31 to 2^32 - 1 is a fatal error. A negative seed + * means its two's complement 32-bit value, as for G_srand48(). + * + * Thread-safe as long as no two threads seed the same state. + * + * \param[out] state generator state to seed + * \param[in] seed seed, from -2^31 to 2^32 - 1 + */ +void G_random_seed(struct G_random_state *state, long long seed) +{ + check_seed(seed); + state->state = lcg_seed(seed); +} + +/*! + * \brief Initialize a layout whose units draw an exact number of values + * + * The span is cut into streams of exactly \p draws_per_unit draws, one per + * unit, placed one after another from the seed, and then one after + * another for the following runs. Unit u of run 0 therefore draws what a + * single sequence from G_random_seed() draws at positions u * + * \p draws_per_unit to (u + 1) * \p draws_per_unit - 1, so the units + * together reproduce a serial run whatever order they are processed in. + * A unit which draws more than \p draws_per_unit values runs into the + * next unit's stream; when the number of draws is only bounded, use + * G_random_init_layout_bounded(). + * + * The stride is \p draws_per_unit. G_random_layout_length() returns it, + * and G_random_layout_runs() returns the runs that fit, 2^46 divided by + * \p units * \p draws_per_unit, which is 0 when one run does not fit into + * the span. See \ref gislib_random_streams. + * + * A seed outside -2^31 to 2^32 - 1, a number of units or of draws which + * is not positive, or a product of the two beyond the range of long long + * is a fatal error. + * + * \param[out] layout layout to initialize + * \param[in] seed seed, see G_random_seed() + * \param[in] units number of units of work, positive + * \param[in] draws_per_unit number of values each unit draws, positive + */ +void G_random_init_layout_exact(struct G_random_layout *layout, long long seed, + long long units, long long draws_per_unit) +{ + check_seed(seed); + check_units(units); + if (draws_per_unit <= 0) + G_fatal_error(_("The number of random numbers a unit draws must be " + "positive, not %lld"), + draws_per_unit); + if (units > LLONG_MAX / draws_per_unit) + G_fatal_error(_("A random number layout of %lld units of %lld draws " + "each is too large (the number of draws must not " + "exceed %lld)"), + units, draws_per_unit, LLONG_MAX); + init_layout(layout, seed, units, draws_per_unit); +} + +/*! + * \brief Initialize a layout whose units draw at most a number of values + * + * As G_random_init_layout_exact(), but each unit may draw any number of + * values up to \p max_draws: the streams are \p max_draws draws long, or + * \p max_draws + 1 when \p max_draws is even. With an odd stride, units + * 2^i apart in number start an odd multiple of 2^i draws apart, so the + * differences of their states are fixed in the low i + 2 bits only; an + * even stride would add its own power of two to that count. + * + * The stride is \p max_draws rounded up to odd. G_random_layout_length() + * returns it, and G_random_layout_runs() returns the runs that fit, 2^46 + * divided by \p units times the stride, which is 0 when one run does not + * fit into the span. See \ref gislib_random_streams. + * + * A seed outside -2^31 to 2^32 - 1, a number of units or a bound which is + * not positive, or a product of the units and the stride beyond the range + * of long long is a fatal error. + * + * \param[out] layout layout to initialize + * \param[in] seed seed, see G_random_seed() + * \param[in] units number of units of work, positive + * \param[in] max_draws most values any unit draws, positive + */ +void G_random_init_layout_bounded(struct G_random_layout *layout, + long long seed, long long units, + long long max_draws) +{ + long long stride; + + check_seed(seed); + check_units(units); + if (max_draws <= 0) + G_fatal_error(_("The most random numbers a unit draws must be " + "positive, not %lld"), + max_draws); + /* LLONG_MAX is odd, so an even bound can be rounded up. */ + stride = max_draws % 2 == 0 ? max_draws + 1 : max_draws; + if (units > LLONG_MAX / stride) + G_fatal_error(_("A random number layout of %lld units of at most " + "%lld draws each is too large (the number of units " + "times the bound rounded up to odd must not exceed " + "%lld)"), + units, max_draws, LLONG_MAX); + init_layout(layout, seed, units, stride); +} + +/*! + * \brief Initialize a layout which spreads the units over the whole span + * + * For units whose number of draws is not known in advance. The span is + * divided into parts, as many as there are units, or one more when that + * number is even. The stride is 2^46 / parts rounded down, and then down + * to odd when there is more than one part, and unit u starts u * stride + * draws after the seed. The odd number of parts keeps the unit halfway or + * a quarter of the way along from starting 2^45 or 2^44 draws after unit + * 0, distances at which this generator's values relate (see + * \ref gislib_random_streams): the unit nearest to 2^45 starts at least + * 0.48 of a stride away from it and the unit nearest to 2^44 at least + * 0.24, so a unit meets such a relation only after drawing about a + * quarter of its stride. The odd stride puts units 2^i apart in number an + * odd multiple of 2^i draws apart, as in a bounded layout. A single unit + * keeps the whole span of 2^46 draws. The layout holds a single run. + * + * The number of units is limited to 2^20: the rounded stride loses up to + * two draws per unit, which accumulate along the span, so beyond that + * count the units nearest to 2^45 and 2^44 would drift toward them. A + * bounded layout serves any number of units. + * + * The stride is the length of a part. G_random_layout_length() returns + * it, and G_random_layout_runs() returns 1. + * + * A seed outside -2^31 to 2^32 - 1, or a number of units which is not + * positive or above 2^20, is a fatal error. + * + * \param[out] layout layout to initialize + * \param[in] seed seed, see G_random_seed() + * \param[in] units number of units of work, from 1 to 2^20 + */ +void G_random_init_layout_spread(struct G_random_layout *layout, long long seed, + long long units) +{ + unsigned long long parts, stride; + + check_seed(seed); + check_units(units); + if (units > SPREAD_MAX_UNITS) + G_fatal_error(_("A spread random number layout takes at most %lld " + "units, not %lld; a bounded layout serves any number " + "of units"), + SPREAD_MAX_UNITS, units); + parts = (unsigned long long)units | 1; + stride = LCG_SPAN / parts; + if (parts > 1 && stride % 2 == 0) + stride--; + layout->start = lcg_seed(seed); + layout->units = units; + layout->stride = (long long)stride; + layout->runs = 1; + layout->spread = 1; +} + +/*! + * \brief Return the number of runs that fit into the span + * + * \param[in] layout an initialized layout + * + * \return the runs that fit, 1 for a spread layout, 0 when one run of the + * layout does not fit into the span + */ +long long G_random_layout_runs(const struct G_random_layout *layout) +{ + return layout->runs; +} + +/*! + * \brief Return the number of values a unit may draw + * + * \param[in] layout an initialized layout + * + * \return the stride of the layout, the number of values every unit may + * draw without running into the next unit's stream + */ +long long G_random_layout_length(const struct G_random_layout *layout) +{ + return layout->stride; +} + +/*! + * \brief Put a generator state at the start of a unit's stream in a run + * + * The stream of \p unit in \p run starts (\p run * units + \p unit) * stride + * draws after the seed. The state is set whatever it held before, so the + * same call always restarts the same sequence. See + * \ref gislib_random_streams. + * + * A \p unit outside 0 to units - 1, a negative \p run, a \p run other + * than 0 of a spread layout, or a \p run beyond the runs that fit is a + * fatal error. When no run fits, run 0 is still allowed, and only run 0: + * a tool which warned that its layout does not fit into the span may use + * it as earlier versions did. + * + * Thread-safe as long as no two threads use the same state; the layout + * is only read. + * + * \param[out] state generator state to set + * \param[in] layout an initialized layout + * \param[in] run number of the run, from 0 + * \param[in] unit number of the unit, from 0 to units - 1 + */ +void G_random_state_for_run(struct G_random_state *state, + const struct G_random_layout *layout, long long run, + long long unit) +{ + unsigned long long offset; + + if (unit < 0 || unit >= layout->units) + G_fatal_error(_("Random number unit %lld is out of range " + "(must be between 0 and %lld)"), + unit, layout->units - 1); + if (run < 0) + G_fatal_error(_("Random number run %lld is out of range " + "(must not be negative)"), + run); + if (run > 0 && layout->spread) + G_fatal_error(_("Random number run %lld is out of range " + "(a spread layout holds a single run)"), + run); + if (layout->runs >= 1 && run >= layout->runs) + G_fatal_error(n_("Random number run %lld is out of range " + "(%lld run fits into the generator's span)", + "Random number run %lld is out of range " + "(%lld runs fit into the generator's span)", + (unsigned long)layout->runs), + run, layout->runs); + if (layout->runs == 0 && run > 0) + G_fatal_error(_("Random number run %lld is out of range " + "(no run fits into the generator's span, only run 0 " + "can be used)"), + run); + + /* With run below the runs that fit, the offset is below 2^46; with + * run 0 of a layout which does not fit, it may reach past the span. + * It is below 2^63 either way, since units times stride is. */ + offset = ((unsigned long long)run * (unsigned long long)layout->units + + (unsigned long long)unit) * + (unsigned long long)layout->stride; + state->state = lcg_jump(layout->start, offset); +} + +/*! + * \brief Put a generator state at the start of a unit's stream + * + * The same as G_random_state_for_run() with run 0. + * + * \param[out] state generator state to set + * \param[in] layout an initialized layout + * \param[in] unit number of the unit, from 0 to units - 1 + */ +void G_random_state_for_unit(struct G_random_state *state, + const struct G_random_layout *layout, + long long unit) +{ + G_random_state_for_run(state, layout, 0, unit); +} + +/*! + * \brief Advance a generator of the program's own as if values had been drawn + * + * Moves the state by \p draws draws without taking them one at a time, + * so that the next G_random_double() returns what the draw after those + * would have returned. + * + * A negative \p draws is a fatal error. + * + * \param[in,out] state a seeded generator state + * \param[in] draws number of values to skip, not negative + */ +void G_random_advance(struct G_random_state *state, long long draws) +{ + if (draws < 0) + G_fatal_error(_("Cannot advance a random number generator by %lld " + "draws (the number must not be negative)"), + draws); + state->state = lcg_jump(state->state, (unsigned long long)draws); +} + +/*! + * \brief Generate a floating-point value in the range [0,1) from a + * generator of the program's own + * + * Thread-safe as long as no two threads share a state. Unlike + * G_drand48(), this needs no atomics and so behaves identically on every + * build. + * + * \param[in,out] state generator state, set with G_random_seed(), + * G_random_state_for_unit() or G_random_state_for_run() + * + * \return the generated value + */ +double G_random_double(struct G_random_state *state) +{ + state->state = lcg_step(state->state); + /* The state is below 2^53, so the conversion to double is exact. */ + return (double)state->state / 281474976710656.0; /* 2^48 */ +} + /* Test program diff --git a/lib/gis/tests/lib_gis_lrand48_test.py b/lib/gis/tests/lib_gis_lrand48_test.py index ace570ffe86..8fb3a02ffc0 100644 --- a/lib/gis/tests/lib_gis_lrand48_test.py +++ b/lib/gis/tests/lib_gis_lrand48_test.py @@ -6,11 +6,41 @@ is caught here, which makes this a guard for output compatibility. The reference values below were captured from the current implementation. + +The tests after those cover the generators a program owns, the +G_random_*() functions and their layouts. Their expectations are computed +with a closed-form jump written here, independent of the library's jump, +and the single sequence is cross-checked against the shared generator and +the reference values. """ +import subprocess +import sys +import threading +from ctypes import byref + import pytest -from grass.lib.gis import G_drand48, G_lrand48, G_mrand48, G_srand48 +from grass.lib.gis import ( + G_drand48, + G_lrand48, + G_mrand48, + G_random_advance, + G_random_double, + G_random_generate_seed, + G_random_init_layout_bounded, + G_random_init_layout_exact, + G_random_init_layout_spread, + G_random_layout_length, + G_random_layout_runs, + G_random_seed, + G_random_state_for_run, + G_random_state_for_unit, + G_srand48, + G_srand48_auto, + struct_G_random_layout, + struct_G_random_state, +) # First ten outputs of each generator after G_srand48(seed). The seeds cover # 0, 1, two ordinary values, and the largest 32-bit seed value. Matching the @@ -247,3 +277,884 @@ def test_srand48_is_reproducible(): G_srand48(1337) second = [G_lrand48() for _ in range(20)] assert first == second + + +# The generator constants, as in lrand48.c. Changing the generator changes +# every expectation below, so these tests are meant to fail when that +# happens. +LCG_A = 0x5DEECE66D +LCG_B = 0xB +LCG_MODULUS = 2**48 + +# The part of the cycle the layouts place their streams in: the multiplier +# has order 2^46, so states 2^46 apart give values differing by a constant. +SPAN = 2**46 + +# The most units a spread layout takes. +SPREAD_MAX_UNITS = 2**20 + +# Unit counts for the spread layout: small counts, powers of two, which +# give an even stride before rounding, a hundred thousand, and the two +# largest counts allowed. +SPREAD_UNITS = [2, 3, 4, 6, 64, 4096, 100000, SPREAD_MAX_UNITS - 1, SPREAD_MAX_UNITS] + + +def lcg_jump_reference(state, steps): + """Generator state after the given number of steps, in closed form + + Steps compose to a^n * x + b * (a^n - 1) / (a - 1) modulo 2^48. The + division is exact over the integers but a - 1 has no inverse modulo + 2^48, so a^n is computed modulo 2^48 * (a - 1), which keeps the + quotient correct modulo 2^48. Unlike the library, which composes the + affine map by repeated squaring, this takes the additive term in + closed form and reuses none of the library's code. + """ + power = pow(LCG_A, steps, LCG_MODULUS * (LCG_A - 1)) + return (power * state + LCG_B * ((power - 1) // (LCG_A - 1))) % LCG_MODULUS + + +def seed_state(seed): + """Generator state which seeding with the given value produces""" + return ((seed & 0xFFFFFFFF) << 16) | 0x330E + + +def reference_states(seed, offset, n): + """States of draws offset + 1 to offset + n after the seed, in closed form""" + start = lcg_jump_reference(seed_state(seed), offset) + return [lcg_jump_reference(start, i) for i in range(1, n + 1)] + + +def draw_states(state, n): + """Draw n values from a state and return the generator states behind them + + A value is its state divided by 2^48, which a double holds exactly, so + the multiplication recovers the state without rounding. + """ + return [int(G_random_double(byref(state)) * LCG_MODULUS) for _ in range(n)] + + +def seeded_states(seed, n): + """States of the first n draws of the single sequence of a seed""" + state = struct_G_random_state() + G_random_seed(byref(state), seed) + return draw_states(state, n) + + +def exact_layout(seed, units, draws): + layout = struct_G_random_layout() + G_random_init_layout_exact(byref(layout), seed, units, draws) + return layout + + +def bounded_layout(seed, units, max_draws): + layout = struct_G_random_layout() + G_random_init_layout_bounded(byref(layout), seed, units, max_draws) + return layout + + +def spread_layout(seed, units): + layout = struct_G_random_layout() + G_random_init_layout_spread(byref(layout), seed, units) + return layout + + +def unit_states(layout, unit, n, run=0): + """States of the first n draws of a unit in a run of a layout""" + state = struct_G_random_state() + G_random_state_for_run(byref(state), byref(layout), run, unit) + return draw_states(state, n) + + +def spread_stride(units): + """The spread stride: the span divided by the parts, rounded down to odd. + + The parts are the units, or one more when the units are even, so that + the unit halfway along does not start 2^45 draws after unit 0. + """ + parts = units | 1 + stride = SPAN // parts + return stride - 1 if parts > 1 and stride % 2 == 0 else stride + + +def constant_shift(first, second, max_lag=4): + """Lag at which second is first plus a constant, or None if there is none. + + A constant difference at some lag means the two sequences of states are + one sequence shifted in time and in value, which is what states a + multiple of 2^46 apart produce on this generator. + """ + n = len(first) + for lag in range(-max_lag, max_lag + 1): + pairs = [(first[i], second[i + lag]) for i in range(n) if 0 <= i + lag < n] + if len({(b - a) % LCG_MODULUS for a, b in pairs}) == 1: + return lag + return None + + +# Runs calls given as "function number..." in order, on one state and one +# layout, so that a test can check which call ends in a fatal error. +CALLS_SCRIPT = """ +import sys +from ctypes import byref + +from grass.lib import gis + +state = gis.struct_G_random_state() +layout = gis.struct_G_random_layout() +gis.G_random_seed(byref(state), 1337) +for call in sys.argv[1:]: + name, *numbers = call.split() + function = getattr(gis, name) + numbers = [int(number) for number in numbers] + if name.startswith("G_random_init_layout"): + function(byref(layout), *numbers) + elif name.startswith("G_random_state_for"): + function(byref(state), byref(layout), *numbers) + else: + function(byref(state), *numbers) +print("all calls returned") +""" + + +def run_calls(session, tmp_path, *calls): + """Run the calls in a subprocess and return the completed process. + + A fatal error exits the calling process, so the calls run in a + subprocess, and with a session environment because without GISBASE the + error message is not printed. + """ + script = tmp_path / "calls.py" + script.write_text(CALLS_SCRIPT, encoding="utf-8") + return subprocess.run( + [sys.executable, str(script), *calls], + env=session.env, + capture_output=True, + text=True, + timeout=60, + check=False, + ) + + +def assert_fatal(result, message): + """Check that the calls ended in a fatal error containing the message. + + The library wraps long messages across lines, so whitespace is + normalized before the comparison. + """ + assert result.returncode != 0, result.stdout + assert "all calls returned" not in result.stdout + assert message in " ".join(result.stderr.split()), result.stderr + + +def test_lcg_jump_reference_matches_stepping(): + """The closed form agrees with the generator drawn step by step. + + This ties the reference used below to the shared generator, whose + sequences are pinned in REFERENCE. + """ + G_srand48(1337) + stepped = [int(G_drand48() * LCG_MODULUS) for _ in range(1000)] + assert reference_states(1337, 0, 1000) == stepped + assert [ + state / LCG_MODULUS for state in reference_states(1337, 0, 10) + ] == REFERENCE[1337]["drand48"] + + +@pytest.mark.parametrize("seed", [0, 1, 42, 1337, 2147483647, -1, 4294967295]) +def test_random_seed_matches_shared_generator(seed): + """G_random_seed() gives the sequence G_srand48() and G_drand48() give. + + This is what lets code switch from the shared generator to one of its + own without changing its single-threaded results. + """ + G_srand48(seed) + shared = [G_drand48() for _ in range(100)] + state = struct_G_random_state() + G_random_seed(byref(state), seed) + assert [G_random_double(byref(state)) for _ in range(100)] == shared + if seed in REFERENCE: + assert shared[:10] == REFERENCE[seed]["drand48"] + + +@pytest.mark.parametrize( + ("negative", "equivalent"), [(-1, 4294967295), (-2147483648, 2147483648)] +) +def test_random_negative_seed_is_its_32_bit_value(negative, equivalent): + """A negative seed gives the sequence of its two's complement 32-bit value.""" + assert seeded_states(negative, 20) == seeded_states(equivalent, 20) + + +@pytest.mark.parametrize("seed", [-(2**31), 2**32 - 1]) +def test_random_seed_accepts_the_range_boundaries(seed): + """The seed range is inclusive at both ends.""" + assert seeded_states(seed, 5) == reference_states(seed, 0, 5) + + +@pytest.mark.parametrize("seed", [2**32, -(2**31) - 1]) +@pytest.mark.parametrize( + "call", + [ + "G_random_seed {}", + "G_random_init_layout_exact {} 5 7", + "G_random_init_layout_bounded {} 5 7", + "G_random_init_layout_spread {} 5", + ], + ids=["seed", "exact", "bounded", "spread"], +) +def test_random_seed_outside_range_is_fatal( + xy_session_for_module, tmp_path, seed, call +): + """A seed outside -2^31 to 2^32 - 1 is a fatal error, not used modulo 2^32.""" + result = run_calls(xy_session_for_module, tmp_path, call.format(seed)) + assert_fatal(result, f"seed {seed} is outside the range") + + +@pytest.mark.parametrize("seed", [0, 1337, -1]) +def test_exact_layout_units_follow_the_single_sequence(seed): + """Units of an exact layout draw one sequence in consecutive streams. + + Unit u's first value is draw u * 7 + 1 of the single sequence, and the + last draw of unit u is followed by the first draw of unit u + 1, so + the units together reproduce a serial run. + """ + units, draws = 5, 7 + layout = exact_layout(seed, units, draws) + single = seeded_states(seed, units * draws + 1) + for unit in range(units): + states = unit_states(layout, unit, draws + 1) + assert states == single[unit * draws : (unit + 1) * draws + 1], unit + + +@pytest.mark.parametrize( + ("units", "draws"), + [(5, 7), (1, 1), (1000, 100), (4096, 2**34), (2**23, 2**23), (2**23, 2**23 + 1)], +) +def test_exact_layout_runs_and_length(units, draws): + """The runs that fit are the span divided by units times draws. + + The last pair's product exceeds 2^46, so no run fits and runs() is 0. + The length is the number of draws exactly. + """ + layout = exact_layout(1337, units, draws) + assert G_random_layout_runs(byref(layout)) == SPAN // (units * draws) + assert G_random_layout_length(byref(layout)) == draws + + +def test_exact_layout_runs_follow_each_other(): + """Run r's unit u starts where the single sequence has drawn (r * units + u) * draws.""" + layout = exact_layout(1337, 5, 7) + assert unit_states(layout, 2, 3, run=4) == reference_states( + 1337, (4 * 5 + 2) * 7, 3 + ) + + +def test_exact_layout_which_does_not_fit_allows_run_zero( + xy_session_for_module, tmp_path +): + """With no run fitting, run 0 is still allowed but run 1 is fatal. + + A tool which warned that its layout does not fit into the span may + still use it, as earlier versions did. + """ + units, draws = 2**23, 2**23 + 1 + layout = exact_layout(1337, units, draws) + assert G_random_layout_runs(byref(layout)) == 0 + unit = units - 1 + assert unit_states(layout, unit, 3) == reference_states(1337, unit * draws, 3) + result = run_calls( + xy_session_for_module, + tmp_path, + f"G_random_init_layout_exact 1337 {units} {draws}", + "G_random_state_for_run 1 0", + ) + assert_fatal(result, "run 1 is out of range") + + +def test_exact_layout_run_past_the_runs_that_fit_is_fatal( + xy_session_for_module, tmp_path +): + """A run beyond those that fit is a fatal error naming both numbers.""" + units, draws = 4096, 2**34 + runs = SPAN // (units * draws) + assert runs == 1 + ok = run_calls( + xy_session_for_module, + tmp_path, + f"G_random_init_layout_exact 1337 {units} {draws}", + f"G_random_state_for_run {runs - 1} {units - 1}", + ) + assert ok.returncode == 0, ok.stderr + result = run_calls( + xy_session_for_module, + tmp_path, + f"G_random_init_layout_exact 1337 {units} {draws}", + f"G_random_state_for_run {runs} 0", + ) + assert_fatal(result, f"run {runs} is out of range ({runs} run fits") + + +@pytest.mark.parametrize( + ("call", "message"), + [ + ("G_random_init_layout_exact 1337 0 7", "must be positive, not 0"), + ("G_random_init_layout_exact 1337 -5 7", "must be positive, not -5"), + ("G_random_init_layout_exact 1337 5 0", "must be positive, not 0"), + ("G_random_init_layout_exact 1337 5 -7", "must be positive, not -7"), + ("G_random_init_layout_exact 1337 4294967296 4294967296", "too large"), + ("G_random_init_layout_bounded 1337 5 0", "must be positive, not 0"), + ("G_random_init_layout_bounded 1337 0 7", "must be positive, not 0"), + ("G_random_init_layout_bounded 1337 4294967296 4294967296", "too large"), + ("G_random_init_layout_spread 1337 0", "must be positive, not 0"), + ], +) +def test_layout_with_impossible_counts_is_fatal( + xy_session_for_module, tmp_path, call, message +): + """Counts which are not positive or whose product overflows are fatal.""" + assert_fatal(run_calls(xy_session_for_module, tmp_path, call), message) + + +@pytest.mark.parametrize(("bound", "stride"), [(100, 101), (101, 101), (1, 1), (2, 3)]) +def test_bounded_layout_rounds_an_even_bound_up_to_odd(bound, stride): + """An even bound becomes the next odd number, an odd bound stays.""" + layout = bounded_layout(1337, 1000, bound) + assert G_random_layout_length(byref(layout)) == stride + assert G_random_layout_runs(byref(layout)) == SPAN // (1000 * stride) + + +@pytest.mark.parametrize("seed", [0, 1337, -1]) +def test_bounded_layout_unit_starts(seed): + """Unit u starts u * stride draws after the seed, run 1's (units + u) * stride.""" + units, stride = 1000, 101 + layout = bounded_layout(seed, units, 100) + for unit in (0, 1, 2, 999): + assert unit_states(layout, unit, 3) == reference_states( + seed, unit * stride, 3 + ), unit + assert unit_states(layout, unit, 3, run=1) == reference_states( + seed, (units + unit) * stride, 3 + ), unit + + +@pytest.mark.parametrize("units", SPREAD_UNITS) +def test_spread_layout_stride(units): + """The stride is the span divided by the parts, rounded down to odd.""" + layout = spread_layout(1337, units) + stride = G_random_layout_length(byref(layout)) + assert stride == spread_stride(units) + assert stride % 2 == 1 + assert G_random_layout_runs(byref(layout)) == 1 + + +def test_spread_layout_of_one_unit_keeps_the_span(): + """A single unit keeps the whole span of 2^46 draws. + + Its stream is the single sequence of the seed. + """ + layout = spread_layout(1337, 1) + assert G_random_layout_length(byref(layout)) == SPAN + assert G_random_layout_runs(byref(layout)) == 1 + assert unit_states(layout, 0, 20) == seeded_states(1337, 20) + + +@pytest.mark.parametrize("seed", [0, 1337, -1]) +@pytest.mark.parametrize("units", [4, 4096, 100000, SPREAD_MAX_UNITS]) +def test_spread_layout_unit_starts(seed, units): + """Unit u starts u * stride draws after the seed. + + The first, a middle and the last unit are checked; the last one also + shows that the highest unit is accepted. + """ + layout = spread_layout(seed, units) + stride = spread_stride(units) + for unit in sorted({0, 1, units // 2, units - 1}): + assert unit_states(layout, unit, 2) == reference_states( + seed, unit * stride, 2 + ), unit + + +def test_spread_layout_run_one_is_fatal(xy_session_for_module, tmp_path): + """A spread layout holds a single run.""" + result = run_calls( + xy_session_for_module, + tmp_path, + "G_random_init_layout_spread 1337 4", + "G_random_state_for_run 1 0", + ) + assert_fatal(result, "a spread layout holds a single run") + + +@pytest.mark.parametrize("units", [SPREAD_MAX_UNITS + 1, 2**46 + 1, 2**62]) +def test_spread_layout_with_too_many_units_is_fatal( + xy_session_for_module, tmp_path, units +): + """A spread layout takes at most 2^20 units.""" + result = run_calls( + xy_session_for_module, tmp_path, f"G_random_init_layout_spread 1337 {units}" + ) + assert_fatal(result, f"at most {SPREAD_MAX_UNITS} units, not {units}") + + +def test_spread_layout_of_the_most_units(): + """2^20 units, the most allowed, get a stride of 67,108,799 draws. + + The span divided by 2^20 + 1 parts is just over 67,108,800, which is + even, so the stride is rounded down to the odd 67,108,799. The last + unit starts where the formula says. + """ + layout = spread_layout(1337, SPREAD_MAX_UNITS) + assert G_random_layout_length(byref(layout)) == 67108799 + assert spread_stride(SPREAD_MAX_UNITS) == 67108799 + last = SPREAD_MAX_UNITS - 1 + assert unit_states(layout, last, 3) == reference_states(1337, last * 67108799, 3) + + +def nearest_unit_distance(units, distance): + """Distance of the unit start nearest to a distance, in strides. + + Units start a multiple of the stride apart, so this is also the + nearest any two units come to being that distance apart. + """ + stride = spread_stride(units) + nearest = distance // stride + return min( + abs(k * stride - distance) / stride + for k in (nearest, nearest + 1) + if 1 <= k < units + ) + + +def test_spread_layout_keeps_units_off_the_shifted_distances(): + """No unit starts near 2^45 or 2^44 draws after another unit. + + At those distances the values of two positions differ by two or four + constants in turn. Dividing the span by an even number of parts would + put the unit halfway along 2^45 draws after unit 0 and the unit a + quarter of the way along 2^44 draws after it. With an odd number of + parts, the nearest units are half and a quarter of a stride away from + those distances, less the draws lost by rounding the stride down, + which accumulate along the span. For every allowed number of units, + the nearest unit is at least 0.48 of a stride from 2^45 and 0.24 of a + stride from 2^44. This checks the rule; test_spread_layout_stride ties + the rule to the library. + """ + closest_to_half = min( + nearest_unit_distance(units, 2**45) for units in range(2, SPREAD_MAX_UNITS + 1) + ) + closest_to_quarter = min( + nearest_unit_distance(units, 2**44) for units in range(4, SPREAD_MAX_UNITS + 1) + ) + assert closest_to_half >= 0.48 + assert closest_to_quarter >= 0.24 + + +def layouts_for_span_check(): + """Layouts with at least one run fitting, as (layout, units, stride) + + The stride is computed here from the documented rules, not read from the + layout. + """ + cases = [ + (spread_layout(1337, units), units, spread_stride(units)) + for units in [1, *SPREAD_UNITS] + ] + cases += [ + (exact_layout(1337, units, draws), units, draws) + for units, draws in [(5, 7), (4096, 2**34), (2**23, 2**23)] + ] + cases += [ + (bounded_layout(1337, units, bound), units, bound | 1) + for units, bound in [(1000, 100), (4096, 2**34 - 2), (2**23, 2**23 - 2)] + ] + return cases + + +@pytest.mark.parametrize(("layout", "units", "stride"), layouts_for_span_check()) +def test_layout_lies_within_the_span(layout, units, stride): + """The last stream of the last run that fits ends within the span. + + Every position in a stream is then less than 2^46 draws from every + other, so no two streams can be 2^46, 2^47 or 3 * 2^46 draws apart, + the distances at which this generator repeats its values plus a + constant. + """ + runs = G_random_layout_runs(byref(layout)) + length = G_random_layout_length(byref(layout)) + assert length == stride + assert runs >= 1 + last_start = (runs * units - 1) * stride + assert last_start + length <= SPAN + + +def test_spread_layout_units_have_no_constant_shift(): + """Two units of a spread layout are not one sequence shifted in value. + + The first and the last unit of the largest spread layout start less + than 2^46 draws apart, so no lag relates their values by a constant. + """ + layout = spread_layout(1337, SPREAD_MAX_UNITS) + first = unit_states(layout, 0, 100) + second = unit_states(layout, SPREAD_MAX_UNITS - 1, 100) + assert constant_shift(first, second) is None + + +def test_states_half_a_span_apart_alternate_between_two_shifts(): + """States 2^45 apart differ by one of two constants, alternately. + + This level of relation lies within the span, and the library makes no + promise about it. At draw n, the difference of two states d draws + apart is the multiplier to the power n times the difference at the + start, which for d = 2^45 is 2^45 times an odd number. The multiplier + is 5 modulo 8, so its powers alternate between 1 and 5 modulo 8, and + the difference alternates between two values 2^47 apart. For seed 42 + the values differ by 0.625 and 0.125 in turn. This is documented here, + not claimed away. + """ + plain = reference_states(42, 0, 50) + advanced = reference_states(42, 2**45, 50) + shifts = [ + ((a - p) % LCG_MODULUS) / LCG_MODULUS + for p, a in zip(plain, advanced, strict=True) + ] + assert set(shifts[0::2]) == {0.625} + assert set(shifts[1::2]) == {0.125} + state = struct_G_random_state() + G_random_seed(byref(state), 42) + G_random_advance(byref(state), 2**45) + assert draw_states(state, 50) == advanced + + +def low_bits_relation(first, second): + """Low bits in which the differences of two sequences of states are constant""" + differences = [(b - a) % LCG_MODULUS for a, b in zip(first, second, strict=True)] + bits = 0 + while bits < 48 and len({d % 2 ** (bits + 1) for d in differences}) == 1: + bits += 1 + return bits + + +def test_spread_layout_units_two_strides_apart_relate_three_low_bits(): + """Units 2 * stride apart, stride odd, share only the low 3 bits of a shift. + + A distance of 2^k times an odd number makes the differences of the + two units' states constant in their low k + 2 bits; above those bits + the difference varies from draw to draw. + """ + layout = spread_layout(1337, 4) + assert spread_stride(4) % 2 == 1 + first = unit_states(layout, 0, 200) + second = unit_states(layout, 2, 200) + assert low_bits_relation(first, second) == 3 + + +def test_bounded_layout_even_bound_relates_three_low_bits_too(): + """The stride of an even bound is rounded to odd, so units two apart relate 3 bits. + + Without the rounding, a stride of 100 = 4 * 25 would make units two + apart 8 * 25 draws apart and relate 5 low bits. + """ + layout = bounded_layout(1337, 1000, 100) + first = unit_states(layout, 0, 200) + second = unit_states(layout, 2, 200) + assert low_bits_relation(first, second) == 3 + unrounded = reference_states(1337, 200, 200) + assert low_bits_relation(first, unrounded) == 5 + + +def advanced_states(seed, draws, n): + state = struct_G_random_state() + G_random_seed(byref(state), seed) + G_random_advance(byref(state), draws) + return draw_states(state, n) + + +def test_random_advance_equals_drawing(): + """Advancing gives what drawing and discarding gives; 0 is a no-op.""" + assert advanced_states(1337, 60, 40) == seeded_states(1337, 100)[60:] + assert advanced_states(1337, 0, 10) == seeded_states(1337, 10) + + +def test_random_advance_composes(): + """Two advances are one advance by their sum.""" + state = struct_G_random_state() + G_random_seed(byref(state), 1337) + G_random_advance(byref(state), 25) + G_random_advance(byref(state), 35) + assert draw_states(state, 10) == advanced_states(1337, 60, 10) + + +def test_random_advance_beyond_the_span(): + """Advancing past the span gives the states the closed form gives.""" + draws = SPAN + 12345 + assert advanced_states(1337, draws, 10) == reference_states(1337, draws, 10) + + +def test_random_advance_by_the_cycle_returns_to_the_state(): + """After 2^48 draws, the generator's cycle, the state is the same again.""" + assert advanced_states(1337, LCG_MODULUS, 10) == seeded_states(1337, 10) + + +def test_random_advance_by_the_span_shifts_by_a_quarter(): + """After 2^46 draws the generator repeats its values plus one quarter.""" + plain = seeded_states(1337, 20) + shifted = advanced_states(1337, SPAN, 20) + assert shifted == reference_states(1337, SPAN, 20) + assert {(s - p) % LCG_MODULUS for p, s in zip(plain, shifted, strict=True)} == { + LCG_MODULUS // 4 + } + + +def test_random_advance_negative_is_fatal(xy_session_for_module, tmp_path): + """Advancing by a negative number of draws is a fatal error.""" + result = run_calls(xy_session_for_module, tmp_path, "G_random_advance -1") + assert_fatal(result, "by -1 draws") + + +@pytest.mark.parametrize( + ("layout_call", "unit", "message"), + [ + ("G_random_init_layout_spread 1337 4", 4, "unit 4 is out of range"), + ("G_random_init_layout_spread 1337 4", -1, "unit -1 is out of range"), + ("G_random_init_layout_exact 1337 5 7", 5, "unit 5 is out of range"), + ("G_random_init_layout_bounded 1337 5 7", -1, "unit -1 is out of range"), + ], +) +def test_random_state_for_unit_out_of_range_is_fatal( + xy_session_for_module, tmp_path, layout_call, unit, message +): + """A unit outside 0 to units - 1 is a fatal error.""" + result = run_calls( + xy_session_for_module, + tmp_path, + layout_call, + f"G_random_state_for_unit {unit}", + ) + assert_fatal(result, message) + + +def test_random_state_for_run_negative_run_is_fatal(xy_session_for_module, tmp_path): + """A negative run is a fatal error.""" + result = run_calls( + xy_session_for_module, + tmp_path, + "G_random_init_layout_exact 1337 5 7", + "G_random_state_for_run -1 0", + ) + assert_fatal(result, "run -1 is out of range") + + +def test_random_state_for_unit_is_run_zero(): + """G_random_state_for_unit() gives run 0 of G_random_state_for_run().""" + layout = bounded_layout(1337, 1000, 100) + state = struct_G_random_state() + G_random_state_for_unit(byref(state), byref(layout), 7) + assert draw_states(state, 10) == unit_states(layout, 7, 10) + + +def test_random_generate_seed_is_in_range_without_environment(monkeypatch): + """A seed from the time and process ID is one the generators accept.""" + monkeypatch.delenv("GRASS_RANDOM_SEED", raising=False) + monkeypatch.delenv("SOURCE_DATE_EPOCH", raising=False) + seed = G_random_generate_seed() + assert 0 <= seed < 2**32 + + +def test_random_generate_seed_reads_environment(monkeypatch): + """GRASS_RANDOM_SEED takes precedence over SOURCE_DATE_EPOCH.""" + monkeypatch.setenv("GRASS_RANDOM_SEED", "1337") + monkeypatch.setenv("SOURCE_DATE_EPOCH", "42") + assert G_random_generate_seed() == 1337 + monkeypatch.delenv("GRASS_RANDOM_SEED") + assert G_random_generate_seed() == 42 + + +def test_srand48_auto_uses_the_generated_seed(monkeypatch): + """The shared generator's automatic seed is the generated seed. + + The returned value seeds a generator of the program's own to the + sequence the shared generator then produces. + """ + monkeypatch.setenv("GRASS_RANDOM_SEED", "1337") + seed = G_srand48_auto() + assert seed == 1337 + shared = [int(G_drand48() * LCG_MODULUS) for _ in range(10)] + assert shared == seeded_states(seed, 10) + + +GENERATE_SEED_SCRIPT = """ +from grass.lib.gis import G_random_generate_seed, G_srand48_auto + +print(G_random_generate_seed()) +print(G_srand48_auto()) +""" + + +def generate_seed(session, tmp_path, **variables): + """Run G_random_generate_seed() and G_srand48_auto() in a subprocess. + + The variables replace GRASS_RANDOM_SEED and SOURCE_DATE_EPOCH, which + are unset unless given. A warning or fatal error is written by the + library to the process's standard error and needs a session to be + printed, and a fatal error exits the process. + """ + env = dict(session.env) + env.pop("GRASS_RANDOM_SEED", None) + env.pop("SOURCE_DATE_EPOCH", None) + env.update(variables) + script = tmp_path / "generate_seed.py" + script.write_text(GENERATE_SEED_SCRIPT, encoding="utf-8") + return subprocess.run( + [sys.executable, str(script)], + env=env, + capture_output=True, + text=True, + timeout=60, + check=False, + ) + + +@pytest.mark.parametrize("name", ["GRASS_RANDOM_SEED", "SOURCE_DATE_EPOCH"]) +def test_random_generate_seed_reduces_large_environment_value_with_a_warning( + xy_session_for_module, tmp_path, name +): + """A value past 32 bits is reduced to its low 32 bits with a warning. + + Both the generated seed and the shared generator's automatic seed are + the reduced value. + """ + result = generate_seed(xy_session_for_module, tmp_path, **{name: "5000000000"}) + assert result.returncode == 0, result.stderr + reduced = str(5000000000 % 2**32) + assert result.stdout.split() == [reduced, reduced] + message = " ".join(result.stderr.split()) + assert f"5000000000 from {name}" in message + assert "low 32 bits" in message + + +@pytest.mark.parametrize("value", ["-5", "-2147483648", "4294967295"]) +def test_random_generate_seed_keeps_value_in_range_without_warning( + xy_session_for_module, tmp_path, value +): + """A value from -2^31 to 2^32 - 1 is the seed as it is, also when negative.""" + result = generate_seed(xy_session_for_module, tmp_path, GRASS_RANDOM_SEED=value) + assert result.returncode == 0, result.stderr + assert result.stdout.split()[0] == value + assert "WARNING" not in result.stderr + + +def test_random_generate_seed_skips_empty_variable(xy_session_for_module, tmp_path): + """An empty GRASS_RANDOM_SEED counts as unset, so SOURCE_DATE_EPOCH is used.""" + result = generate_seed( + xy_session_for_module, tmp_path, GRASS_RANDOM_SEED="", SOURCE_DATE_EPOCH="42" + ) + assert result.returncode == 0, result.stderr + assert result.stdout.split() == ["42", "42"] + + +@pytest.mark.parametrize( + ("value", "message"), + [ + ("abc", "is not an integer"), + ("1e9", "is not an integer"), + ("12abc", "is not an integer"), + ("99999999999999999999", "is too large in magnitude"), + ("-99999999999999999999", "is too large in magnitude"), + ], +) +def test_random_generate_seed_rejects_invalid_value( + xy_session_for_module, tmp_path, value, message +): + """A value which is not an integer or overflows is a fatal error naming it.""" + result = generate_seed(xy_session_for_module, tmp_path, GRASS_RANDOM_SEED=value) + assert result.returncode != 0 + assert result.stdout == "" + stderr = " ".join(result.stderr.split()) + assert f"{value} from GRASS_RANDOM_SEED {message}" in stderr + + +def test_random_state_is_independent_of_shared_generator(): + """Drawing from the shared generator between draws changes nothing.""" + layout = spread_layout(1337, 4096) + expected = unit_states(layout, 5, 10) + state = struct_G_random_state() + G_random_state_for_unit(byref(state), byref(layout), 5) + G_srand48(99) + interleaved = [] + for _ in range(10): + G_lrand48() + interleaved.extend(draw_states(state, 1)) + assert interleaved == expected + + +def test_random_states_are_unaffected_by_threading(): + """Each thread drawing from its own state gets the serial values. + + ctypes releases the GIL around each call, so the threads do run the C + code concurrently. + """ + units = 4 + n = 5000 + layout = spread_layout(1337, units) + serial = [unit_states(layout, unit, n) for unit in range(units)] + threaded = [None] * units + + def worker(unit): + threaded[unit] = unit_states(layout, unit, n) + + threads = [threading.Thread(target=worker, args=(unit,)) for unit in range(units)] + for thread in threads: + thread.start() + for thread in threads: + thread.join() + assert threaded == serial + + +# First ten values of unit 3 with seed 1337, computed by the closed form at +# 3 * 17175675903 draws for a spread layout of 4096 units (4097 parts) and at 3 * 101 +# draws for a bounded layout of 1000 units with bound 100. A change of the +# engine or of the layouts changes these. +PINNED = { + "spread": [ + 0.39430735545757045, + 0.6290045178804426, + 0.714269874034521, + 0.5881407609385896, + 0.7378029873502499, + 0.712116402550361, + 0.027046777408891387, + 0.6296825457039468, + 0.13697898780445428, + 0.13722939092471265, + ], + "bounded": [ + 0.6813692756324983, + 0.069333342334577, + 0.21082745238814482, + 0.03296383528511271, + 0.4499312354256588, + 0.5150939051932433, + 0.6799364535715284, + 0.4718208970400859, + 0.8985155631446773, + 0.6221841681079674, + ], +} + + +@pytest.mark.parametrize( + ("kind", "layout", "offset"), + [ + ("spread", spread_layout(1337, 4096), 3 * 17175675903), + ("bounded", bounded_layout(1337, 1000, 100), 3 * 101), + ], + ids=["spread", "bounded"], +) +def test_layout_unit_values_are_pinned(kind, layout, offset): + """Unit 3's first ten values are fixed for a given seed and layout.""" + expected = PINNED[kind] + assert [ + state / LCG_MODULUS for state in reference_states(1337, offset, 10) + ] == expected + state = struct_G_random_state() + G_random_state_for_unit(byref(state), byref(layout), 3) + assert [G_random_double(byref(state)) for _ in range(10)] == expected diff --git a/lib/init/variables.html b/lib/init/variables.html index 15caf78bd31..0099bd29db5 100644 --- a/lib/init/variables.html +++ b/lib/init/variables.html @@ -281,6 +281,18 @@

List of selected (GRASS related) shell environment variables

On Mac OS X this should be the pythonw executable for the wxGUI to work. +
GRASS_RANDOM_SEED
+
[libgis]
+ seed for the random number generator of tools which let the user omit + the seed, such as r.mapcalc and + r.sim.water; the same value + gives the same result in every run. The value must be an integer; + anything else is an error. A value from -2147483648 to 4294967295 is + used as it is, and a value outside that range is reduced to its low 32 + bits with a warning. When the variable is not set or empty, + SOURCE_DATE_EPOCH is read the same way if set, and otherwise the seed + comes from the time and the process ID.
+
GRASS_VECTOR_LOWMEM
[vectorlib]
If the environment variable GRASS_VECTOR_LOWMEM exists, memory diff --git a/lib/init/variables.md b/lib/init/variables.md index 38f8c1969e7..88d5aaa830e 100644 --- a/lib/init/variables.md +++ b/lib/init/variables.md @@ -273,6 +273,18 @@ set to override Python executable. On Mac OS X this should be the `pythonw` executable for the wxGUI to work. +GRASS_RANDOM_SEED +\[libgis\] +seed for the random number generator of tools which let the user omit +the seed, such as *[r.mapcalc](r.mapcalc.md)* and +*[r.sim.water](r.sim.water.md)*; the same value gives the same result +in every run. The value must be an integer; anything else is an error. +A value from -2147483648 to 4294967295 is used as it is, and a value +outside that range is reduced to its low 32 bits with a warning. When +the variable is not set or empty, SOURCE_DATE_EPOCH is read the same +way if set, and otherwise the seed comes from the time and the process +ID. + GRASS_VECTOR_LOWMEM \[vectorlib\] If the environment variable GRASS_VECTOR_LOWMEM exists, memory From 7888ba01d5e73fb48174d71065ca568dc69850a8 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Wed, 30 Sep 2026 14:14:21 -0400 Subject: [PATCH 02/28] libgis: Test the environment seed in a subprocess The tests which set GRASS_RANDOM_SEED and SOURCE_DATE_EPOCH with pytest's monkeypatch in the test process failed on Windows, where the Python interpreter and the GRASS library use separate C runtimes with environments of their own, so a variable set from Python is not what the library's getenv() reads. Run these tests in a subprocess which starts with the variables set, as the other environment tests in the file do, and check the shared generator's sequence after G_srand48_auto() through the values the subprocess prints. Written with the help of Claude Code. --- lib/gis/tests/lib_gis_lrand48_test.py | 78 +++++++++++++++------------ 1 file changed, 43 insertions(+), 35 deletions(-) diff --git a/lib/gis/tests/lib_gis_lrand48_test.py b/lib/gis/tests/lib_gis_lrand48_test.py index 8fb3a02ffc0..eddffff89cb 100644 --- a/lib/gis/tests/lib_gis_lrand48_test.py +++ b/lib/gis/tests/lib_gis_lrand48_test.py @@ -27,7 +27,6 @@ G_mrand48, G_random_advance, G_random_double, - G_random_generate_seed, G_random_init_layout_bounded, G_random_init_layout_exact, G_random_init_layout_spread, @@ -37,7 +36,6 @@ G_random_state_for_run, G_random_state_for_unit, G_srand48, - G_srand48_auto, struct_G_random_layout, struct_G_random_state, ) @@ -951,41 +949,12 @@ def test_random_state_for_unit_is_run_zero(): assert draw_states(state, 10) == unit_states(layout, 7, 10) -def test_random_generate_seed_is_in_range_without_environment(monkeypatch): - """A seed from the time and process ID is one the generators accept.""" - monkeypatch.delenv("GRASS_RANDOM_SEED", raising=False) - monkeypatch.delenv("SOURCE_DATE_EPOCH", raising=False) - seed = G_random_generate_seed() - assert 0 <= seed < 2**32 - - -def test_random_generate_seed_reads_environment(monkeypatch): - """GRASS_RANDOM_SEED takes precedence over SOURCE_DATE_EPOCH.""" - monkeypatch.setenv("GRASS_RANDOM_SEED", "1337") - monkeypatch.setenv("SOURCE_DATE_EPOCH", "42") - assert G_random_generate_seed() == 1337 - monkeypatch.delenv("GRASS_RANDOM_SEED") - assert G_random_generate_seed() == 42 - - -def test_srand48_auto_uses_the_generated_seed(monkeypatch): - """The shared generator's automatic seed is the generated seed. - - The returned value seeds a generator of the program's own to the - sequence the shared generator then produces. - """ - monkeypatch.setenv("GRASS_RANDOM_SEED", "1337") - seed = G_srand48_auto() - assert seed == 1337 - shared = [int(G_drand48() * LCG_MODULUS) for _ in range(10)] - assert shared == seeded_states(seed, 10) - - GENERATE_SEED_SCRIPT = """ -from grass.lib.gis import G_random_generate_seed, G_srand48_auto +from grass.lib.gis import G_drand48, G_random_generate_seed, G_srand48_auto print(G_random_generate_seed()) print(G_srand48_auto()) +print(" ".join(str(int(G_drand48() * 2**48)) for _ in range(10))) """ @@ -1013,6 +982,45 @@ def generate_seed(session, tmp_path, **variables): ) +def test_random_generate_seed_is_in_range_without_environment( + xy_session_for_module, tmp_path +): + """A seed from the time and process ID is one the generators accept.""" + result = generate_seed(xy_session_for_module, tmp_path) + assert result.returncode == 0, result.stderr + generated, automatic = (int(value) for value in result.stdout.split()[:2]) + assert 0 <= generated < 2**32 + assert 0 <= automatic < 2**32 + + +def test_random_generate_seed_reads_environment(xy_session_for_module, tmp_path): + """GRASS_RANDOM_SEED takes precedence over SOURCE_DATE_EPOCH.""" + result = generate_seed( + xy_session_for_module, + tmp_path, + GRASS_RANDOM_SEED="1337", + SOURCE_DATE_EPOCH="42", + ) + assert result.returncode == 0, result.stderr + assert result.stdout.split()[0] == "1337" + result = generate_seed(xy_session_for_module, tmp_path, SOURCE_DATE_EPOCH="42") + assert result.returncode == 0, result.stderr + assert result.stdout.split()[0] == "42" + + +def test_srand48_auto_uses_the_generated_seed(xy_session_for_module, tmp_path): + """The shared generator's automatic seed is the generated seed. + + The returned value seeds a generator of the program's own to the + sequence the shared generator then produces. + """ + result = generate_seed(xy_session_for_module, tmp_path, GRASS_RANDOM_SEED="1337") + assert result.returncode == 0, result.stderr + lines = result.stdout.splitlines() + assert lines[:2] == ["1337", "1337"] + assert [int(state) for state in lines[2].split()] == seeded_states(1337, 10) + + @pytest.mark.parametrize("name", ["GRASS_RANDOM_SEED", "SOURCE_DATE_EPOCH"]) def test_random_generate_seed_reduces_large_environment_value_with_a_warning( xy_session_for_module, tmp_path, name @@ -1025,7 +1033,7 @@ def test_random_generate_seed_reduces_large_environment_value_with_a_warning( result = generate_seed(xy_session_for_module, tmp_path, **{name: "5000000000"}) assert result.returncode == 0, result.stderr reduced = str(5000000000 % 2**32) - assert result.stdout.split() == [reduced, reduced] + assert result.stdout.split()[:2] == [reduced, reduced] message = " ".join(result.stderr.split()) assert f"5000000000 from {name}" in message assert "low 32 bits" in message @@ -1048,7 +1056,7 @@ def test_random_generate_seed_skips_empty_variable(xy_session_for_module, tmp_pa xy_session_for_module, tmp_path, GRASS_RANDOM_SEED="", SOURCE_DATE_EPOCH="42" ) assert result.returncode == 0, result.stderr - assert result.stdout.split() == ["42", "42"] + assert result.stdout.split()[:2] == ["42", "42"] @pytest.mark.parametrize( From c8c87e21d4c58d872fa701af4cfd8c0eff667a29 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Wed, 30 Sep 2026 16:02:10 -0400 Subject: [PATCH 03/28] libgis: Add an author and license lines for the random number layouts Add Vaclav Petras to the authors of lrand48.c and drop the remark in parentheses after Maris Nartiss, since the header now describes the thread safety itself. Add the SPDX lines to the random number test file, whose header changes anyway. Written with the help of Claude Code. --- lib/gis/lrand48.c | 2 +- lib/gis/tests/lib_gis_lrand48_test.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 0275f6441d4..1e48262dc3f 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -31,7 +31,7 @@ * SPDX-FileCopyrightText: 2014-2026 GRASS Development Team * SPDX-License-Identifier: GPL-2.0-or-later * - * \authors Glynn Clements, Maris Nartiss (thread safety) + * \authors Glynn Clements, Maris Nartiss, Vaclav Petras */ #include diff --git a/lib/gis/tests/lib_gis_lrand48_test.py b/lib/gis/tests/lib_gis_lrand48_test.py index eddffff89cb..e5a62b0e29f 100644 --- a/lib/gis/tests/lib_gis_lrand48_test.py +++ b/lib/gis/tests/lib_gis_lrand48_test.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2026 GRASS Development Team +# SPDX-License-Identifier: GPL-2.0-or-later + """Regression tests for the library drand48-family PRNG These tests pin the exact output sequence of G_lrand48, G_mrand48 and From 01a58694f1afa9cd5918f5566eeb36a179428109 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Wed, 30 Sep 2026 16:04:13 -0400 Subject: [PATCH 04/28] libgis: State the condition for thread-safe program-owned generators The file header said the states a program owns are never shared, which the library cannot promise; whether a state is used by one thread at a time is up to the program. Say that instead, as the condition under which the functions need neither atomics nor locks and a unit's values do not depend on the thread which draws them. Written with the help of Claude Code. --- lib/gis/lrand48.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 1e48262dc3f..b1c518385e8 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -19,10 +19,11 @@ * The seeding functions are not thread-safe; see G_srand48(). * * The G_random_*() functions instead advance generators owned by the - * program, one struct G_random_state per unit of work, never shared. They - * need neither atomics nor locks, behave identically on every build, and - * give each unit a sequence fixed by the seed and the unit's number, not - * by the thread that draws it. The library places the units within the + * program, one struct G_random_state per unit of work. The program keeps + * a state to one thread at a time; the functions then need neither + * atomics nor locks, behave identically on every build, and give each + * unit a sequence fixed by the seed and the unit's number, not by the + * thread that draws it. The library places the units within the * span, the first 2^46 draws after the seed, a quarter of the generator's * cycle: a layout gives every unit of every run a stream of stride draws * in it, and a state is put at the start of its unit's stream. See \ref From 5f2cd1a7db4220e33f66c14593f421821dd08cdf Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Wed, 30 Sep 2026 16:21:00 -0400 Subject: [PATCH 05/28] libgis: Share the seed range test between the seed checks The environment reader and the check of the seeds given to the layout and state functions each spelled out the range from -2^31 to 2^32 - 1. Test it in one place, with the reason for the range, and let both use it. Written with the help of Claude Code. --- lib/gis/lrand48.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index b1c518385e8..518b7daecf7 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -128,6 +128,14 @@ void G_srand48(long seedval) seeded = 1; } +/* The seeds the generator tells apart: G_srand48() uses the low 32 bits of + * the seed, and this range names every such seed once, as a signed or an + * unsigned 32-bit value. */ +static int seed_in_range(long long seed) +{ + return seed >= -(1LL << 31) && seed <= (1LL << 32) - 1; +} + /* Read a seed from an environment variable. An unset or empty variable * gives no seed, so that the caller can try the next source. */ static int seed_from_environment(const char *name, long long *seed) @@ -148,7 +156,7 @@ static int seed_from_environment(const char *name, long long *seed) if (end == text || *end != '\0') G_fatal_error(_("Random number seed %s from %s is not an integer"), text, name); - if (value < -(1LL << 31) || value > (1LL << 32) - 1) { + if (!seed_in_range(value)) { long long reduced = (long long)((unsigned long long)value & 0xFFFFFFFF); G_warning(_("Random number seed %s from %s is used as %lld, " @@ -405,7 +413,7 @@ static unsigned long long lcg_jump(unsigned long long x, * rejected rather than silently losing its high bits. */ static void check_seed(long long seed) { - if (seed < -(1LL << 31) || seed > (1LL << 32) - 1) + if (!seed_in_range(seed)) G_fatal_error(_("Random number seed %lld is outside the range from " "-2147483648 to 4294967295 the generator can use"), seed); From 852652289d3957e573ec057991a422e3118ff46f Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Wed, 30 Sep 2026 16:24:01 -0400 Subject: [PATCH 06/28] libgis: State the overflow check as a precondition of init_layout() The comment said the caller has checked that units * stride does not overflow, which reads as a description rather than as the requirement it is. Say that callers must check it beforehand. Written with the help of Claude Code. --- lib/gis/lrand48.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 518b7daecf7..48a2270cad5 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -429,8 +429,8 @@ static void check_units(long long units) /* Fill in a layout of units of the given stride, all of one run first, * then those of the next run. The number of runs that fit is how many - * times units * stride draws fit into the span. The caller has checked - * that units * stride does not overflow. */ + * times units * stride draws fit into the span. Callers must check + * beforehand that units * stride does not overflow. */ static void init_layout(struct G_random_layout *layout, long long seed, long long units, long long stride) { From 0b55fd3d7688d17ef5468c436bae91b323c89c9e Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Tue, 29 Sep 2026 21:32:00 -0400 Subject: [PATCH 07/28] r.sim: Give each walker random numbers of its own Each walker draws from a random number state of its own, placed on the walker's stream of a bounded layout of the seed, instead of from the shared generator. A walker's random numbers now depend only on the seed and the walker's number, not on the thread which moves it or on the order of the walkers, so walker paths are the same for any nprocs as long as the depth-dependent diffusion and infiltration do not come into play. The water depth and the sediment concentration still differ slightly at nprocs > 1 because the order of the atomic additions to the gama grid depends on the threads and the updates of the inf grid are not synchronized, which this does not change. The streams hold 2 + 8 * steps values, over twice what a walker draws on average: two values at placement and, per step, a normal pair by the polar method, 8 / pi values on average, plus one in a trap. A single step can draw more than eight values, but over a whole simulation a walker stays well within its stream; on the nc_spm elevation, no walker drew more than 53% of it. The states are placed in parallel before the walkers are. Without the contention on the shared generator, nprocs > 1 is now faster than nprocs = 1: on the whole nc_spm elevation (4 million walkers), 50 s at nprocs=1, 13.5 s at 4 and 5.6 s at 12, against 63 s, 125 s and 140 s before. The build without OpenMP now gives the same results as nprocs=1. The seed is parsed with strtoll(), refusing what is not an integer, and checked right after parsing, so a seed outside -2^31 to 2^32 - 1 is an error instead of being silently reduced to 32 bits. The -s flag uses G_random_generate_seed(), which honors GRASS_RANDOM_SEED. Results for a seed change also at nprocs=1, and no design keeps them. The old values came from one sequence which all walkers consumed in program order, with a varying number of draws per walker and step, so a walker's values depended on wherever the other walkers had left the sequence, and only replaying that order reproduces them, which is what the shared generator does and what serializes the threads. The other design, one state per thread, keeps the values at nprocs=1 and gives a different result for every other thread count. Paying once for values which depend only on the seed and the walker's number is the better investment. The outputs of r.sim.water and r.sim.sediment are sums over millions of walkers, so a different realization of the same seed moves them within their sampling noise, unlike rand() in r.mapcalc, whose values are the output and therefore kept their old values. The gunittest references and the pinned landform arrays are regenerated; the commands used reproduce the old references exactly with the previous code. Written with the help of Claude Code. --- raster/r.sim/r.sim.sediment/main.c | 17 +-- .../r.sim/r.sim.sediment/r.sim.sediment.html | 14 +- raster/r.sim/r.sim.sediment/r.sim.sediment.md | 14 +- .../tests/r_sim_sediment_random_test.py | 111 +++++++++++++++ .../testsuite/data/reference_erdep.pack | Bin 40637 -> 40814 bytes .../testsuite/data/reference_sedflux.pack | Bin 39820 -> 39965 bytes raster/r.sim/r.sim.water/main.c | 17 +-- raster/r.sim/r.sim.water/r.sim.water.html | 31 +++++ raster/r.sim/r.sim.water/r.sim.water.md | 29 ++++ .../tests/r_sim_water_landforms_test.py | 128 +++++++++--------- .../tests/r_sim_water_random_test.py | 126 +++++++++++++++++ .../r.sim.water/tests/r_sim_water_test.py | 6 +- .../testsuite/data/depth_complex.pack | Bin 37268 -> 37342 bytes .../testsuite/data/depth_default.pack | Bin 26683 -> 26764 bytes .../testsuite/data/discharge_complex.pack | Bin 39845 -> 39857 bytes .../testsuite/data/discharge_default.pack | Bin 39432 -> 39619 bytes .../r.sim.water/testsuite/test_r_sim_water.py | 2 +- raster/r.sim/simlib/hydro.c | 40 ++++-- raster/r.sim/simlib/input.c | 2 + raster/r.sim/simlib/output.c | 1 + raster/r.sim/simlib/random.c | 87 +++++++----- raster/r.sim/simlib/simlib.h | 13 +- 22 files changed, 486 insertions(+), 152 deletions(-) create mode 100644 raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py create mode 100644 raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py diff --git a/raster/r.sim/r.sim.sediment/main.c b/raster/r.sim/r.sim.sediment/main.c index 0481606bb50..75e7b42c43f 100644 --- a/raster/r.sim/r.sim.sediment/main.c +++ b/raster/r.sim/r.sim.sediment/main.c @@ -102,7 +102,6 @@ int main(int argc, char *argv[]) struct Cell_head cellhd; struct options parm; struct flags flag; - long seed_value; G_gisinit(argv[0]); @@ -322,20 +321,7 @@ int main(int argc, char *argv[]) ? SUMMARY_JSON : SUMMARY_PLAIN; - if (flag.generateSeed->answer) { - seed_value = G_srand48_auto(); - G_verbose_message(_("Generated random seed (-s): %ld"), seed_value); - } - else if (parm.seed->answer) { - seed_value = atol(parm.seed->answer); - G_srand48(seed_value); - G_verbose_message(_("Read random seed from %s option: %ld"), - parm.seed->key, seed_value); - } - else { - /* default as it used to be */ - G_srand48(12345); - } + long long seed = simwe_seed(parm.seed, flag.generateSeed); G_get_set_window(&cellhd); @@ -346,6 +332,7 @@ int main(int argc, char *argv[]) ObservationPoints points = {0}; settings.hhmax = settings.halpha = settings.hbeta = 0; settings.ts = false; + settings.seed = seed; Inputs inputs = {0}; Outputs outputs = {0}; Grids grids = {0}; diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.html b/raster/r.sim/r.sim.sediment/r.sim.sediment.html index 1d46ff390cb..03dc618c0fe 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.html +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.html @@ -42,8 +42,18 @@

DESCRIPTION


-Increasing the number of threads with nprocs does not really -speed up the simulation. +Increasing the number of threads with nprocs speeds up the +simulation. The walkers draw their random numbers as in r.sim.water: +each walker from a sequence of its own determined by random_seed +(or the seed the -s flag generates, 12345 when neither is given) and +the walker's number, so the walkers move the same way whatever the value +of nprocs. With nprocs=1, runs with the same seed and inputs give +identical results. With more threads, walkers in the same cell add to +the sediment concentration in an order which depends on the threads, and +the floating point sums differ slightly with the order, so the outputs +are close to, but not identical with, the single-threaded result, and +repeated runs with the same nprocs may differ slightly. See +r.sim.water for the range of seeds.

NOTES

diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.md b/raster/r.sim/r.sim.sediment/r.sim.sediment.md index 2d325280781..e8bfb5c6106 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.md +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.md @@ -35,8 +35,18 @@ controlled by *duration* \[minutes\] parameter. If the resulting erosion/deposition map is noisy, higher number of walkers, given by *nwalkers* should be used. -Increasing the number of threads with **nprocs** does not really speed -up the simulation. +Increasing the number of threads with **nprocs** speeds up the +simulation. The walkers draw their random numbers as in *r.sim.water*: +each walker from a sequence of its own determined by **random_seed** +(or the seed the **-s** flag generates, 12345 when neither is given) and +the walker's number, so the walkers move the same way whatever the value +of **nprocs**. With **nprocs=1**, runs with the same seed and inputs give +identical results. With more threads, walkers in the same cell add to +the sediment concentration in an order which depends on the threads, and +the floating point sums differ slightly with the order, so the outputs +are close to, but not identical with, the single-threaded result, and +repeated runs with the same **nprocs** may differ slightly. See +[r.sim.water](r.sim.water.md) for the range of seeds. ## NOTES diff --git a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py new file mode 100644 index 00000000000..a97263e938b --- /dev/null +++ b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py @@ -0,0 +1,111 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +"""Tests of the random numbers of r.sim.sediment. + +Each walker draws from a random number state of its own, set by the seed and +the walker's number, so its random numbers do not depend on the number of +threads. The sediment flux still does at nprocs > 1, because walkers in the +same cell add to the concentration grid without synchronization, so the test +which compares numbers of threads compares the walker positions instead. A +walker's path depends only on the slope and its random numbers. +""" + +import os +from io import StringIO + +import numpy as np +import pytest + +import grass.script as gs +from grass.exceptions import CalledModuleError +from grass.tools import Tools + + +@pytest.fixture(scope="module") +def session(tmp_path_factory): + """Session in an XY project with a bowl as elevation and constant inputs.""" + project = tmp_path_factory.mktemp("r_sim_sediment_random") / "xy_test" + gs.create_project(project) + with ( + gs.setup.init(project, env=os.environ.copy()) as session, + Tools(session=session) as tools, + ): + tools.g_region(s=0, n=40, w=0, e=40, res=1) + tools.r_mapcalc( + expression="elevation = 0.01 * ((col() - 20.5)^2 + (row() - 20.5)^2)" + ) + tools.r_mapcalc(expression="water_depth = 0.1") + tools.r_mapcalc(expression="detachment = 0.001") + tools.r_mapcalc(expression="transport = 0.001") + tools.r_mapcalc(expression="shear_stress = 0") + yield session + + +def simulate(session, walkers=None, env=None, **kwargs): + """Run the simulation, return the flux and the walker coordinates.""" + tools = Tools(env=env) if env else Tools(session=session) + if walkers: + kwargs["walkers_output"] = walkers + flux = tools.r_sim_sediment( + elevation="elevation", + water_depth="water_depth", + detachment_coeff="detachment", + transport_coeff="transport", + shear_stress="shear_stress", + sediment_flux=np.array, + duration=2, + **kwargs, + ) + if not walkers: + return flux, None + text = tools.v_out_ascii(input=walkers, format="point", precision=15).text + return flux, np.loadtxt(StringIO(text), delimiter="|") + + +def test_same_seed_gives_same_flux(session): + """Two runs with the same seed give the same sediment flux.""" + first, _ = simulate(session, random_seed=1) + second, _ = simulate(session, random_seed=1) + assert np.array_equal(first, second) + + +def test_different_seeds_give_different_results(session): + """Runs with different seeds give different fluxes and walker positions.""" + first_flux, first_walkers = simulate(session, "walkers_seed_1", random_seed=1) + second_flux, second_walkers = simulate(session, "walkers_seed_2", random_seed=2) + assert not np.array_equal(first_flux, second_flux) + assert not np.array_equal(first_walkers, second_walkers) + + +def test_generated_seed_is_the_seed_option(session): + """The -s flag with GRASS_RANDOM_SEED gives what the seed option gives.""" + env = session.env.copy() + env["GRASS_RANDOM_SEED"] = "3" + generated, _ = simulate(session, env=env, flags="s") + given, _ = simulate(session, random_seed=3) + assert np.array_equal(generated, given) + + +@pytest.mark.parametrize("nprocs", [2, 4]) +def test_walkers_do_not_depend_on_nprocs(session, nprocs): + """Walkers end at the same positions with any number of threads.""" + _, serial = simulate(session, f"walkers_{nprocs}_serial", random_seed=5) + _, parallel = simulate( + session, f"walkers_{nprocs}_parallel", random_seed=5, nprocs=nprocs + ) + assert serial.size + assert np.array_equal(parallel, serial) + + +@pytest.mark.parametrize("seed", [-(2**31) - 1, 2**32]) +def test_seed_outside_range_is_an_error(session, seed): + """A seed the generator cannot use is refused, not silently wrapped.""" + with pytest.raises(CalledModuleError, match="outside the range"): + simulate(session, random_seed=seed) + + +@pytest.mark.parametrize("seed", ["12abc", "1.5", "-", "99999999999999999999"]) +def test_seed_which_is_not_an_integer_is_an_error(session, seed): + """A seed which the parser lets through but which is not an integer is refused.""" + with pytest.raises(CalledModuleError, match="Invalid random seed"): + simulate(session, random_seed=seed) diff --git a/raster/r.sim/r.sim.sediment/testsuite/data/reference_erdep.pack b/raster/r.sim/r.sim.sediment/testsuite/data/reference_erdep.pack index dde1747fe5def8208e4f5026f189423b4543d757..df5653973ddf3c53c48a6f6c8ac8fc1a0a0ba579 100644 GIT binary patch literal 40814 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 literal 40637 zcmV)0K+eA(iwFpXYzk-s|8iw!WpZV1V`X1ua%5$2E^uLEYXI!M2UHYYw)ag&34#GI zfgngwLX*1cR5yqqVnPu?%m|7Kq99c6`>H)9bWFw8FrN6{HWmhK~A=mgQKIZy-?t2 zZEH(AI?`%#9r3?Ef+A)Gh1>jlkMX-vQ$!3Y+;~ZuhU&|6dx`9r?c_|99m7KY9N5@*X?V-`#7x$G@%p3xy8< zb^f=t|C{`8-*z6#84CW$_Wvi%|3TrAa~MN=`;PYh=Zp^h@6i7a{qNBKHvJzlX4u&O z5&gHfb@+Szx9!mXKOz#!z7W`x_<>_H^5~Xh+)0eVS4W4T$o$ zZR=YIt!;&W9e-J2*S5mJ+WxP@;V&x$zk4Irl%rZ`*n;0PRuoZN`g=ksAVPtywVj<> z^zT`L+JZ3uSwXYgj^6efydY>+N5bmR{|^1{(EpD3|EK@HV@CLl{~xLU9sW-L9ql{n z|34%aEeMWc3_XLQf+Ey@Pe;mTBGu;q1&pC>M{s)DI{txQ^-}}EPfqjSm|9SGi-QVYbK}Y`oL-N1yKjnWr zLWI^tU{CBivj3kf|NGAmj+|-p?`r@5AN{|MziUB(twWn&bohTe`u`pI{}1l}|0Vy^ zgeJD6;|AcLG5^o@|BC@6>JRPz3myL^|2sN%T>txHA}TsOh%uZU8Ws?x78o5Bg)Up-KQnB8ctlWSWN_F5|G>Z89<=JXA=sh+9ra&F{nruyEA@ZjqJRZa z|LyJnpX3587CVn>>yYz0D!cBCi= zJ9`0fq?nF-fgSqaQUCuhum6d_uA~0{)9Qajz=AnJf2{u73I0z1?d&@A|Br~OQ*KVb zIryaa4wsJR(4qew`v0fbf0{UU=>MNo{}(I@4V^hZJmSB*{r?mFw|B7nyZYZz=-8qE ze?)X@hoXgy_A)xjC>s$*ah!}(WR&#~6~knVmT`@YNiuGgF<-|0GFHe~CF2V(>+$m$RjE7~cl(9y}OETV;@v)4rW&F}k6-5~}Wz>_=NX9`j%Df#agJm2cqwE1h zm1#20k#V7n%Vk_EW3r4{G8W2MA|or~F&WRwcumH8GB(TjPR1YYR8^I+Yj-($Ij_G= zcT9Cmbxi$lo$9FnI_kfU>%SfK-=DPpYikYv?T>=~>+8Sve_Q_vgdNv^|CsB)g%BEd zT`+NQ?X9`xF0Zl`w9PsiMTh=(=>MNn|2v-l{L||H+*$vwWBkkU9|eCm{*#@ZutWd< zh-e?-u{{V;TNbt;=s#wEkFXdKHCHxkXXnuNRjEaWE&8iP_P-Ye1w=;u$9shK)bB-0 zg8q7u@b{vbVWE-#vBm`fC~-(-u-Q>*0$_F{<{tbBCxd;+S)OKwjVo3$A7dvBlycuQlvd7O6Wk_Ins7* z%Nbi@`}?2aKiQ)iv6j8jq3u+l+s+nYkd?rZv8Dd9T6WNXx_h!J7e26`Dg|A)li_`j66cB;sHQmS{_*;(c%Qv2CX z4Vmwzi(xyp%G=r1wVmB$KCT|Ji%L2&zmwj&cJ`9_f_m?5XJ67z{knGclljaHU$(Qq z%#UT#Mb>SR`IgLN=ZLw?-!ss=or4~>(@ORvqm9fjCfFiNd$PM6_Rvm8ng2+5tDW?` zc9QSy6v_N-P6q9CmifM1T-rHA=8tjEf{vsF!e|~ z(`A0SjO*>(BJ-7P{oKy14eiYC-Oe2{pJJ}KojdCVs9mLjI>F@-AFB_q=Kv%=iXo=! z2e9c13*kVJCY7?<0J3JOgPieAHogxF-IrfF;+|XPDCI<$Re74}GNlL6DBMq1NhO@( z6GKL^#|rwE#7+{iE0rB^`y5<~GJ?Ui55ReR5p?Qa1N*rlY@Pdl%5Jv~Hi>%^$H!)5 zQ1wjm6SbJGes{^rtxM^Cl`+Kk9RRA&r3*$K#Jb2{q-)n7B+Aej`^dY)C6mA%t#*m##)Gx)Zkh@NfeY*5Cpui55KMh0?{Zi^Y?T)m^v^7j6%v-4MpAls66Z}v;P5AJ`fBVI+|*J??Yn3OSLa>>{^eKdvgu;rmmdXYQV&R) z{t*Vhc4dnbKS<6jy}%yL;MhxDlc6X;0StutsQq&@efG_B>QrNz03s#5*dpcI!W7R6 zOpT8K&t?0`m`YnVZPjK+ZFb!gI#sm^D)k8Iu5Aa&WI5$vX3axcZ(VPcvId_jwdvm`%vCV+W`w!@6*p z`g*)&ek3M8Spy~4s%h2W&Tw<6gstAS9n)H!pilY(ENkdZmnpYG(I!1=&V&Zci0wt^ zH3#9eWl|VrVGh%~c)_8#OJEfC3p@AhLz$#&V6475q!vnXICBJ!4%q;=_3MfLhr{9( zp&{aTK?`wja}LI+4rO|U9>dqWo{@gK8f3_a1;pnLNN!F#hu5zfk%GxRIJrr4=)PB{ zLUX((gp6GY=L#J`&O923sU~QDxyP;_yA^Urxw6CCJ~QJjDG=+-qS5$U^rpEh==ldH z2p}`i4LePCf`MIY(Qx55cGv44Fx*84HBbIxqjpMQj?fH}7n!o#3w&U!dp=a^CD9=_ zN1*#-#FZc1$c)q)dV}IxPSof?7B!r~_^cMN**=-|b$$o_F3-{9&TUkE?gTM96gpi> z!lLcjPPkITndsvX6=MonCVKvDS3#x={c=(}~K10t|DWFFbbe8)jx9 zJiTX*ZVDz~T(Jv6!aT9ZTUWZ=qdOX`Po)OT8v%2J?yx1@4pW04SU``rmxWyfm*7L^ z%hbB5-qkhBe0)0+_Iu>_*LUXc}p%*fhv*XgLT zY2?Y{L}IbrgWl<9OFpf9!t~aefkxk7pjg#VJX-&!sOaoYUcS=~5Pp1)Q+h2X0@J5l z=iGgSE%QbBBP)s47c=5Jyf>!rc@Dg%BkBdO!`W9BQ4hMEkQ{OnLQY{0JP8xB?t&*^ zm^~i5UR(^cz5(it3P%t60epM0iJxrnR{UnlC2@SgYVq{dC#9x6qtM&tI@!_p0vV|~CT6EP7r+hQU|e`&5M6e18fLqh!j5Ja%uXAQz8bSRwJ00ZoMZ><3eJ=9 zQ!bIU2U>BgZwTR^n`6>$3u0)CENWIY1GHne3&N7bv1h-?hZnz>5}D^JufX0UUK*u-0@FTzHg;?t!b&@|u`d z-S^J%`gMwq@W`j+86Fg)!96JB3yk?$U+}v|yuZXPA;-1Mlmeqt1gX zkg{zz+)zpboud)3?$s1FFM12?%~}QBFCK*N>8D`F^||0scZT*WenZb}dCP8^@mK%` zTSbz_6GLJ1i)(DR+S3w=!4R1A@ad|?Zu zTsL9sK9>MatEX;7R)Fp3$IzqjIJ|x~2v)uBMt3U-$KqA_^re2YFtyWN6ztqiAK&GI zXQ>MC9v%+c(^$-L_yWnMsa%gC1DGzNd>pMco<#2LM{kLKO%+9)XD)`>^8U$HqSQO? zT&L1%kzc$>y`U1#-~<`<1c?;CBu-}`;A z`^$KI$}GV=#WcLARtCY^r*L0g56msRh4L7TYg)#j!&z^n=UzjbamBbLcLnCBea4m9 z?woS{ODJB&6O(ntL|HSDZFcTQP4f;1_wO7Wm~;bD)HcJzmKwD67zoRh;?OkVD?Kvn zG|DCULrzx-JdHn(GxN_L(NWwBk|QhFH>IB-`QuskqrNYgHI;$;k4wUX^P=FCOJ@u* z3}v6rj-m_jv;b^2Zh`pHmn=VV5%k=r&fd5(m7RRa05<1&!oF#%DDUC3*vgWTY+~Sg zwmf*pbof8t*NTw!AOOx%$CG90;B84WzyCWIGWT*mCtP714%rHtWQ=POo=@O!;c}~n9 z>~lx7ZPO*b`Sxg$&*7^i?sGi7<@EtFMmy}xTVAtYn^tErfsQzVxu+?=5ZdCnJQNHdG z+===MQ?JWIroJ1D)JjBSxtsLttc7q@J&)E)t7UKX90d!Su7XpU4{O@!4(0nz*<67e zMK7KYn~FYSXXnrKwahNi<(dHu_xUPde_FP61v6Se3<+@O*K=0y$TW~BR6|d}I=FQ% z6zDNSQFBQR#9SZGK6$SVeg@C+2^*g@^?jqJgw z=Qu(CWQFg^`#9(5P})aj0~BlWWOY~#asAm!62J9u7}qzPu6nWvGlwYCDIa>{ug{wy zY}^UFe_^C(*XMCvc`0MB|sH1-H{ zHZQc{M{Sj)QvMq>Z$AQ?1Pr{tx|M3(x)AleufnaXrkMEU6w=x>-RIIpx(kHEIqxs< z(X*msJ3IbW3>{WhLW_7I|i$Oaybl@RTi{%t91{aV7P3AiK~wT3R9tO@ay=)|6?9t<%jP%^dZi00Uq```8JmQUEZ;(NNPy&gq8yu( z@q=ybT?e9Zvp{~t8F=~fAiL(HB1R2np$=-ebOBS8A*2%) z932FgND!86c~92&tRZW5T@X!b`YhGkEH9RCT*yCL7a>|QJenC+Hx6n~WRjKKA)=iA z1rv8>5ckh6$R5?lb04RPw7+C<8!`{^yGwS9Z41k|>q!h|&9P(DZf+#qjPJ3Q2|o02 zp$&aiJpgxmU!^6tyPs)gAa?s7uIqG z_!JIYub}t(hrsc)7O*7p9=V4B1zxyobuH=k zZ7cm{%6B%Q&=C8n)X*tjVK`3u6>Q4tz$oxDbmb-RtUeiL95;haYu3?k95=#@754?; zlso~PYo}sN=v=tGP6hIw@1Q18a;)pF)7VdU{}HQnRa`091`Eqg=Z z$-nNhkJm1NArERK*N*IFPi}k&A*D7jzq|nrrJC3|@&yhXJxx+|LjxU8X z2^smR6_eab@Z`B8 z$a*LLA=XP7ZCNnedF})S;kgR>Kl*{& z^)dE1@`>`>r-OT|e^ji!kk5X7@(kTQf=Es0FcfMDai!~Y%Gu2j(oG8?@J9-)yHySt z{F*&^WD{6Uc_mgZo~bf8mxTRX4r7qo3gQA zO~uUHi>GgA;#}qXbYrG9ZitZ5UUO7&K;$uD>CVm69sLWCEM5f8Qd`J5+01(Myalt1 zHi3%uDD0Iz9km}V1lyxl7<)^P%}rc_)1N$n+yni+#&VWlR`D;Nm5I_u?&Fob>O_8xmfYRT-PpT*)j@pdJ2{fOlBCVPNTTcI zX}B9t_HGrj34NMz%HkaO;_;Ci6gY$K>Kczb=jSocue12$;d!EmvoS||GJWUmUVQSv zfZft~0IssjP%F7Jd$IFpKFMnrIn9`_-~^ODKpDRPWTzhtDR?Z(mFT!kNZ zM!>0ensDz`2s?M&an?TJC{#_}iptrauzS`x*u<_89^EsX@(BMbfMZ2psFsBf=x66W zprO-dR{C-Q_S>_W8f<-qXpH=c;pJAC`q>8#$E~I^hL3}%C16O#zH|s?&&?H1k5|C-3B%EOSQv)z zmh9{DjTq1N<(1wK6NMDK;U9gQDT;g60H5wNsOWr|4SjbOd#XENwN)^Aru_m9K5f7i zF{*4KhM|*AH41mAQavXaBK@fuN^<(3bDMeX$IEa4f`m%P7|2enQE zz)9H(s;>uO=FU1y8h8&=rcdW??i?f9aq%+W!+0L^>`fPLlQ17@s>&h1>Ig1z6{Dr# z0sUC18{+w67{GltaM309K;i@QaNUW`-H<_ytiw|GOTI)~}C|OMAjp>48*CC4T$n)EVr-&LI zoA_g&oJ3C!S?~cmt1xqkJ8EW9(b?1AEj1Odm+0 zkw_V~9L~mGL+#=Falo1DCzF>;%jh^y5xv{@8M!BV!l?JQ-?xA{Z%=bnR8FiHQ?l z3Q&W?!`|Yc=OKKLsF`B*vfa|oTP}*ue_O$84zt5GzHX$a`Bju3ug$()yMrFFWeVzQ zokdlJOn%+a1)?7&=6u1mIillp9`ox?6=F{v6Sy`{6O!o5*ekRdwoP6ROUFKD@2pwM zj@&7ad94q5x#ly>#<)OIQm9g;OU~3j)ZU6b}zlJS8!A(&0tbXQ=yf z9DI@$QQf>6k|vFZuW#bvSKb&DO?Rg~vUSnn#X{n}E|}cvtH32xO%rJ-JMvD_gQ6kM znz-PDJ0AL$28V|9f={c#ke7(h8P=;M3a^XIOZD2jSaTscUV3at61IQ^FACC?Fr7}*V4oI^q6gY zdaD~>czX-y@Ft1ca-ZQlH(V60Tv)<6O&l*$yZ(}k8==K5zB>??Yb``Uh#B_MIsoT& z`m(d$7^0(eCPv))LPuN1aeF#NGwJ(tamWEb2B$Ne-scq5A0vl@_z*?{c97i`>!PV|j4t1qr!bz{%VnrG-C9SH)&-?gu%>f)|hz%UntF zl^Y`M&C~f2bT1}JtCUuanFCpQXDP{x1W3t03a-6pvY{Fp82YP@(tNQSSGQb(!-sUK zJnN;H9-=}f2i?YPQY+TuVIjsg%sFz!e--MGc+5OwK=Vst>0L8aIQJW>eA>x!QFifk z=%Q#O&dAy=R;K2O6<&pjjHc{mqQBqdZV7*JTMh&=4Mp=fVNy4d_KNr1P5)((xwJQ` z?L7ik-+Dphh?j7v|29;MX`(l@s$-Y+7r3r5@my*`BXf5|04dfP&s=@b!WC!4vM&dp zgUY~B?3&C&pdA01`bM1K)2jXSm0NbSINuq2?(@UVK5J0^RVvy&Y=Wmx4swGkO)504vg?5{=S{*RyJ^}26lgk=b9=s610Plr>p z#x}vVu5xI`9;AogOn@<_45?2JArp#te5x@Fmwj0SXI~~@)NWJuK;TSt?3a#bAI6ek ztrQgPpG(s;GlVrIdnKrr2w0Gvqyj@7gf9%_h2^*w56SXzf_1A3uy zrzsd*b`wtRdj(;>KVi%2dU|_88O}Pf5VoANLc|Hg`}J;^x^+6-IXZ?e-E|hNS{y6N zkB3P@I+#{q*?%m>;0g*dkS{_Adh1@m*NhS9c2B+DctG{Da`r3J&Cqv8PmLs z;bugY;mZ*^nB8SLRJz8%l>im?31~sZ3laFoPlW?(ZbAKzD~y-2CpkK|44223bMBUT zxS*{NEQ$_>7~KZ;=FgAhqHkZ$OWuf49Qu{pj`_^Atu(Q`+{~6Js6vwD83ZH@N26X} zz&y1-R2DvBw==;Qo^J=ipBJN-{&)CT|DDdZ+kl-9ZXgk>{h(>7CGA^(1bmlWM;mh= z7+|>wJpy-9kJYE3>cIgxD)JllzxK6AX7it_hd*qej+B(n%lrHOHef+ifzpNyTloq&uV7pM_jXE>GPf|X7> zoR0V`4tV{Okl72_@RC%L-mj8V&dR1Gp78=WT=|fF-E@|Pxt~$7MS)Y%h+>8Wyy6Xx zB`}{nZ<7JB2Stwd*Lee9B~go>Z?1-n()g7#)bP`K6hK|1=PRUD9Rc>^gj;T#^( zyooM@o-ko&)tIGQe=wTY!brusWn`++ZHQhvhI5W9;^umsVoZ|sxYmuYm_@NO*hd+G zY^Bo}IDcCOwm15~j`dwYVs;0v4&+g=v;a3R)W*_jwbFy*7 zEIJ*=`Oyb3ckg@Nc0`QSKA)Dl9|@7F1wZ8jKhMU)KN3i*RX$G(?um3pewA7siQ=8l z6o?nDAI{6Q9P8-|r1XF)JR+B=7Q1iI6k-ff zO$>Ay*G0NoYoa*zdts&c)qZj3uG__y%07JM9uIa!+E{v#6(LTStizf$N9I|9<>u+ccxX0`ZSXTtNGhIJ5l3Wc-0TlNyf>)2M;J%Uz z8qHb6KCsQ=jy|>!&2^;s&?AbXlQ&piZNyzFyUYu}RfH)9HVe>2F&g93exhZ467W;ZX|ZYqcAmWoDyO{X)M^%> z^yCPxv1c^zqB)8;y||W}7B`S2jv664;WAg8d8@nlcxMA~p<#`9bfB7Os;wvA<#Ypg z#*gP`r{?mJCEdA?i%v>CRyRm@Oi<-#mTu$&>IPy?zfyQt6vPhrZ2AHq{{8chyM7R|#&hdx00 zWk1v$IT`Y*KfvQxd!W|fD&~3_;G?gE-SMH4eWhGTii;`oqojdkr$v*ez26ZNr-@`r z^G^YE&sLzW58g>vUZ|s5W)FfmJ2U>Vjhk5I$5m-R@D#g`D&u#|Z-mp?dFbX_Obc>U zAvJ#pnrn!u@`5jL=iDC9&#C~hyo1^vayTx7#?PzL$;!DljCl1|$SS!+n)!t|E+>oW z;+P1l9n|RLbNd*-#2!LV?J{_iyPJ~?)Z(?~o#w}?o#FGHZt=0^oB2)CboqQ`!efpJ zzsXO;&5_tL@4drCa-u5H^v0c{TQjDM)e6$Z#yQHOpRe~Y??Qh_`xrcx7LVF4ZF(3j z%|G!=YO>UvdmLvgVvkJ1%clu9TG^1C4Ga~X)|OC>oSz?JqUD`0Gh>3fa#w$7Z z#YdL0?CcS7uy|59xPBOd`e&QK&MgHGbcw^z#Vcq5y#?2+94Dvmea!dFtb+uJw@HYXz?VkVl_ycz`~=7Bd?pjUsc~m!jZRV@3PkY!x-9 zREyqTa}oXc9wAm!x*#^3*-6~xq@yTm(Hh>yEP%^{nfzqyYCf?pO=^_yC+*sjBvpP8 z#*GU}7eUMjaax+H__F6F@!sI0;$?1&L>Z3;(hqoTPFS-KCp>n>LjALRX~I(w-7{i` z=0D)l)w@pRr-KRa&cKnK29*1Y1-MTm3=hg*C&Mg6#9Z$awO08c^a!xULEG)X zc>ZTTFr_UGX2j##^}|u~V<)J*G8ENDRKvBW&roih2NW;1g#2T*(0qO=d(WiCvHzUS zsO8y0r{#o@jm!pOhO_DVFk9lWS_8JNen|K4TR^|`nlFIeiy4S(D@=y=+ehP#GaxW( z=4&=;h*Bk)yn}wSDCR;FPs_hx-+o)k#_XRiy!X|F?!CDS8uwWN-dg+NlzZmS3NQ&buxX^_{c1 zxOwipY4v7)PUjzd<-(nOqrqxvr%gxrU%OsNyVjdX9o&Tcr|@okf~bcm#QU*m zTZ4j#S3Dw?*DnxTTBEpgeyb=-inse9*eniTxb>iXBj}8np!PVO`*0c((5d+?+Cno@WqF=^VWS zOImM9T0K;uYH2uSbc<5r12ttMi%XZ^(k zgR8{)%wbWMo;Tjgz08G93*k(Z40-))$M~%^LHwOuXZ}X$K;D^a!PnErV1%9`@mieB z^`5JNK0Rk**Kz@#OmM-m`|@cWkG-_}8zDcS|1Yj0i?C&ng`Crei)3rTHc^i&jZD4& zQf8kw!;g&UEYuY3lUUxb0_#psXa_St`sPOq7*SP%hjJ`%%(-tcxOzD7FAlSNUA*Bd zbBM~^36ONV8(M$63VBQ3(?=zm^v@|f$&HrzptQDv2tPl>3Cc-OK4>_oFD5wBC7wX| zQ+nf<)nsS%Vp>`}j*L9wF97zy4p1vQ3(v)7bY2%DzF_1?QP%pt{F@3NG0Ab|&r}S? zu?EB7>fkb*(po`W0w3X`Wj6FE;YN5r$ClmuxfCeBM{M*BZ+6QeT_`Ub&))dXp>n_g z*idKhn!`Ju1w@av90<2O65<%RBxIE~xI2%%Tm)|?n#Q%jjd4Z6%(>n*{e0YSJo z${MSuQk>=wMXuL?bf^op!QH1^abEOi+$?_)L)4te4EiXucHJ<>VUiIvpS^~+2RJh> zgV$5l5n0^i*vTY6{RTE^g2--cA*cQ67H;e5#%}qjC_FkK6H-gMQ>8!e6Giw0W7aQ5 zhhBZ@0rpaOx9vMUx@H|J4VH((+1;UL%OFs+Rzvag+oWsX5;ClK8+qeB1>x9+m3t(~JXR$+ zT;#^S+cN@=rc8owt8U@aYHxacwHYexn@xHiOD39qMq;`oneIF5Ik=7i6g|^`?W$KG zVf0Isdzgv*-Br|m+ z@jJVmwR-o6oO<1lsI2E{&-`6*{+$sV4fTW`-r00kk6`#JQ50&t-G-ycYceJxmK+_E zM8cDQpyTQe6x zMBH#HMUu|sk7*K3wK~UC_Zh)xdM@KT1@1@N@~`-G%oKXoi72*iQ6+9#IaTt^S`!5~ zuR-Ogg_PEgWcEFFlAKMz~0Z zy_`tOx zW8;{0n;-FN%XOG8r)jPSW65mo6U`WG*oe_@BQvtRy9RDf?M#0f zzk?g~u!wA%HW+%JzDyE}gCsZA?cvhApOjpT2J9$7D43H2F^>D$TdQx;Yl?T%-UE6Q zg#>lFd_s!=o@<%F3bPZ~Fa165{&SV6_0Sr=tQ5qyMmPD#uTpWTZw@E+9gH@Wo^5k8O1q-#e-l8qM50@ztMc^?S^Pv z^I|fse%`ra-L#L4x{51@*1k-Esy>x5&V=iIju-V}(DvxZfi_Z(~t)nK>MFddQ__Ic|UB+?vwV;IEIeH=F==yRh1>2~~?n|j|FDK%{f-7)3Zw1V*o(4GsQ>omw zQS1vhZP1Ll3wzw|g3xpr_Na}Ql)N2+O6g`K^^6%Vf7TOWb1{5*?nq7C(m+Slc)`(e zOJVQS)%2c=lhCiGf|kGc0UwT4!QQK-obl^C&O2uz7LP39wxzyeAXfu*-rfLLJ{s=P zWmuEai|pIoLQDFFNL6nai3i6{m#WPjC*B$*mMRYp;~bNHLFK|EsMztC#Ko!7&4O^I z$1_#>Ud{vB;j<>xk3EAvZ_aVu_MfHa9SFtwX2(gDMmkzN)y8ebXW7r2uR{C+J1Wk; zm@O=@hrMM+khV1)%+`ldhosfQF9{0lvOzoO^J$&}$ggXn?mE@unw`}m)iKqgRhRY1 zlhSL9f!k@mN5Nq zPUUp)F5GM1b^K7KpV_1J!7c>yhuUm;%w;kmYBz;K9fmh7*!1dhhZ+)0eE0)j; zzU$KO>tDg=l^NLN+YREEbZ6`L-J;_QCv$6m-j;S9dQP16{h>5{SeQ8XMWVF#PcPJ@ zw?JfO1c{4@BO(ta8up(@kH{w4Ws(S!2UT)arVCN4&H=rehlA;xYBD!tKiB8HmLx`b zF3i+Abfns2HmtcR&jzQg5te4$2RFAgRz6=7>?2lE8!NU_ht`jl*vcCVsLvJiAtCPt zzry~lXl>9`J~w!pSh?R9ekp$&d!P@dAKZpB4(()P)E+@_%nO#WJi>n67YpaZE@8JW zTiKmgKSRtWJ779Tu{*3LfO(ZYj_$Sq;@VnMKy@>0QVu{`fGEmTV|63(F~J1 z>@IJ20T{o-1h3C7C7bN^=wbev^gT@rdPigc`oHLh*CyW~Mw|(;T3W|1;bR$(oyB6S z@xA%fhr>i)U7qldqZh-d_X*UxgZ;?%xerLe*d}tMc_Y0){V8`v)fXYbWbRHkuO(^147V_S2>@nN=2UTkE9>YTl;AN+ttd@K> zx{lwA!SZc6bk|1gnzI2`3mYNlrZU@j^Akk&ONO+Ra#*S8!4~#J_HbzuQGVz{9sahR z_;s?x(k4x2dr>4;Eo>D&N>RtGd%Nh>i?kqXRXW7~5I~L25ey$64xYL0l1pjxz;NnH zu+Z!W>kCUER{sPf)h|PNZFjgOvV?0~13dB2WkM()`SS9S+o8c-Y@{H2b5G-ssPy3y$r6+gVM?BAHlX??pTyv~}Guse^2hS}fFBC^$ zK%PITaLSNc*C~jXH*J)+=bHY`ty*O8*i#c;9q34X%bkFy>aG}}+TqZn5y(KpA>x~$#4}1m}y*xD9 z776`EY-eAj9Ytn*G|Klg6kxaU1^kmjfKD6tU%jv)Q`=MyS=v6c($0gn6frVwhS3 zoIE**x=8#%I`AsoE2u?1vm2bU@jWQqxtmz0q;RTEdPJ)zlT-24gpKwpL^aurNR4Ka z2~&Hc?z!c-&GIUjQdhtXC~CzYW)-+#aD_B1>xB4R#%}5Mq2}UsO?UXGokGB<AO?^^sJ6l}((fu#1LFKoV+$kG7k!A?t&3kMVnIHDV zeXXuU3zi~EU&Dz&T^zB}3f;PuQ2T1WQGsc@=|dlnLCnsFY=+@VYDbszY(mgGwr;~o zSZQYh<8`+|g7gA=UTBEwd%m@GCAXkPei85v=a90wO-!$J#`vl&oZRSL^nt0#_}r~0 z_FUu2jb9J|n|At9T~pUGR)@BcRP}D$pq0}|_en1})sgENmD^8AqN^JhH!Y1%T*iyM z`q+#5gf8KR1}?=F-|E?3&bpl6k!eh7b}$#-5+@41TgUreQ0L5BQ?TS)Gx{VaVArAg zm^;^vs-Ia*zZjl~@ytuwdBrcfK4m0UtT;fFzHP>nLo%svoF(ZR7>P<@$6?FBI)PYM zXP|gur>#;0#aW_vA8Vv0lgHDhXSWeAw^s5vx9x13q(kpNdkh^{DbS5I5**R_7+vk! z2lIC`l$}dk%2Tst8?O9c1hPri~Bs|%|Sfz~Qb+)bq_xz*Dl1m$#$8%&FbkU;9k9^g8U5&B zMcW5=i|pK_26ta?B^$3Qp!d%O+{&E{VJ}#7A8W@lY;*)?-gg#8YFr|-J>$p#4Gyi0 z7Sb;i`{MSMk7?uUKT)gg?C!DFmpw@oCC`-Xz~buzwz4q<4t4Fsp5(`|H<}JXMAlsP zTgG6xXRr?E2i2je-6*!<>o+C!bJg4-3C@v3wEWbAZ8=1+ZB$WOWhp)1iamB)oFf-%}@tG$F z%EDyyUcHp54--MZwd#3_lT|`9xj?EYz?{8^Tqp^VZLsdsEar6naj=vwhTCE-M4;?< zIM!B3{%KbPgI7&BRXzz@c<5p6!6Qtw?M^Ih)rbT4)ZrP@ahxw5W%$N@Iea)XAFB@Y z@%YdxobY=Y6!tSP%g&aRefJXL3!Z@Ss|Z%>_A8i>dxXdJG*Q%rW#k3#X_UI>K2Vo2 z0XtnA^8OWhq@Mqc?0@|bj@mQ`)r7}*7RP1CEu~+n51~zLplBOb4NDb_+%Of&C=Kvz zhu`uzSDbjBH}-?W^=xu_a5VIats;_44np!*KZqi9QS&Wta!&SHGBx@<@j>S#Id^#r zDeRvI&#&Z>ldmmFnBk5L4F=75nVdIN8L7!Gxgbpy&tJ@L*fS6AwAg^zNFiYq+lvlr zZHI)WBS^AfI($4^42y&KkoI9Uj{Q`Jh1%1xc#u7g5Gf~94wt}8`DW&p#0gM55P<20 zDd3#797$_7;>|02@RzffAjmxzy8K?V^UrBh_hM^>vd8_X!H~V6<*f_Zlm==uHw90# zU0~Z?horbAka6JwQl8fd?h{Q+N&jmwnk&F-ZscNK-)B6d`;cJZjVe}s?TdNE1I#;v zx7={c3wWdIC!of=Nh7IoI9sw91>C8@x6}Q})0#2NFOOVEzVqK8sxPw^zD5wOx`yRG za6>zpGn7u(94zNu1?OeIKyci9RzyvOIen>zay;hA;wQ7%ks~vBi#pw~^I8vfPLen~ zVwR3=T4iC@J6B&($$2(Y^kxV>m*<1dKQZi09!3KT)}z~-Bk;$GO46w4 z2>28K@FG7RPSbozeks{N+3Dy|5?*JKgzrs+mZq9hi_0h!sd|A*iV;$3cOJoA(SyW} zXM<2$m%^%VNk9XZ6uaTUaw^c_3Piu{MXPx~!Srf6Y-&0NgW@L4;>ERKF|0tk>+EEx zWv2L%hzcBQt-{IjYv9;rC-UucLkR6TilW8ySlJy4D6g~0Bc_2_Kc^oV>;_~fdh9kCec&Z zrx51(8KwA*;qzx!K@%@bMta~oFXiJ$>8FfnR zpi~E1s+oX9-0ng`rYj!dd|q?m?$D6BD)Z~sTek!a^Xq7DLZ|} z0bHx|2xV1FBZc%H*82SGMy-`vHvJtXjYCd*Y+639YTRDG9G^S88lvK+!l{o9JPGbz z_I#2qRUUtojPLtF_BUH2DaU@IVZ}8_OTdJw#t-ba@;jto{Yw@uTLrZ_uc%a~bx_FJ zK)HV?h6|Ua%_*gvA>5kx&M zcI#&MP(`i;$<3;)>_iY0pe`_*pN{G>hfrj} z0!k!73A*C+!M9otd1sYk1>RBAdu%DJ*^$`jIq74=Bo#E~{Jdr(6pLz{(QA(*`$7mQ z|LJVljJ>?M*Zqb1GJC1XLWLA4Jo~w?+HZZVvMz%TX3^Jh9bc$dfFA7~rX#np}i69nr5Tw`N1NqQzm|N@$ z8>)O@PS937MQ|QM>)$diRfeDz%EA2cB{-duVD416`#ebN~euns-a|d~}%86-usEr~ue!$fA&P=D#H_-irA>l+lOzzBpL>ULx z_+vGiW;_j9RP7c^-e_ z*&kJ1xVg;+ANVZ7?pRvRb6j1@{?XmVQ~GMoMmCJ%_~9{Je@}`@65D_a@6-Ip%C2~p z(>u)FxSy$$e~OpiK2Q4IH9=FF5?IcDmF_NDWPao%q zZ)Y`CFQ6^Azrhigzc7Cwp553oK}mD2gZDpECR>UEdcQC6RBR)w_6So3qiqm$;g*m% zYsV}3naz$57xN587O@K<4Zl$@Cv@(IvdW8=@Dx@E+4{2GRDgCr>mMSCBP4rpW`HSi zgl~paJ0)?jkZpqVcz$kBa)UOuyA$&$nwBRC_RXB$b1*@h$@=0YMG-z4j?Mv4YegEfM(Jg@6=B(1r0F+_B5E)FFYfgHX z@Tg^mzo^s6yAU$_j*<+lP&TE^uDbmltuy=qx%|s8-~KAoZ4itTvb)Hw8Y^M7;df@O z%^nb4b%8vzV-$;wZon~f>ao{_&)lIEJ)kyJMbcK;5ZA)N)pnA&=)^&s?llvy_|^a$ zeb+KIek0)Vp;Fk;`NC$#&+CoTy-xBjzOQ6IE)byLXqHXNzKiCCyR(u$y7;uuWjrm> zmb5FRpnCWliVpq(+ZwmRmLQ5G}d;3ROW6t zP&$kwEvw&g$%-N@Uf2L=zilW zRv$db-Itd`<9vDWxyiw8h21E9_!pcYAL9?iQL=pa6cSb3gkLl#6Tf%efmu2q1;q`~ z_@~D&q;hN#&hwo|8Y=3+5%?uduZG7?kOVk!^EE z*iGsxU^IOh^C8`kywR3QiaMs@i-{|!Ip>Pt&YhW5)P7smiN8&_#{3q~<;7yQ@Leyj zOQVv_lhqK;GmOMR@yTp;`emM}>sEHTh&4|>U6G9$Tnv70t6}<%spJAdD3Z(##P^M5 znB%W4$h~s6h&!P|P#gXOD(`iu*WCvNtsR0}XGg(-k3-uHB-suu-+1o#qPrxo#`KLDO!hX~#W*3SM zRf54wQycYSTy3iN$u(B)3$dv%%Wrgi>fRVxx*vC}TEKqsaG{(xN3(UG-cZ$gt`zn2 z4+`kCftXS=RwJcRxSlzHB(h9!(5`syI7j(E3)Mkon&~u&}s=9L;kj-m33lCYu&Om+o3t-1I4=>+fV2=;yGO%RgbOg2SY! zs~6U~w2$qg40tDIoD$ky*iW5$bcWhvGXNqx`|-bvQXsqcKD^U;$e$|Bg|M-!DbQy2nr`98i!C-gJ@?z>8gg*?jvCO_9%h?^ z!lUD>@DAvF$iJWt^45>j{0c1Tec<3d(^N5I8oA zO#C}W=-d@Dr!!44xDJD<$rPA7Wj@$HT?{Ivmsz!^B{0WNo!zHU#5(KkVT1OhqL#RP z#vbUk~Cz>@++}N%bYT7FPG0l)5@F|4m&RJi z;>C4M3Xe-}COt%_vQCyc?D`-7*p!JlB=8Jl$$*(Gwg0a$C|Q{m+d7>ZsA1W;G8-9L zmvdP03!jcJtY*sR?=Yu*y|Q4oaUqp3p2cp`xIj6*dBaMEHX%4)0yR7xT<%h<|*3%sVhnZl^Cb5!_|erD&) zT2S?R02zC2;4yZ9fpHQ#`uw-A~FS&;Yhf-;Q=e9YkvWaMl^@^98aT5tjE|6Pf; zn3%)!vCX*m_7?I*##=&pu_pola1?Mv3ecs*@szwIMt9FJM(p}Wjg{B&TuTF~X-9njla$Nw>%?NJGc1M23@^u0 zWlEHsye{kJw}ajAD}`lN)nf_z5XVH=W=@ywYGu~zJR|jgbW_&Hgp{TKIVS&BKe~0- z5k3njNM1V!j%dEbHOUX)RMdAUfAbn`TUrN>%THs^Sxvb6)+BZZXJ{`Rh0Up6`1^+& zxLvLgKDsu*o8b(UIw4M-_P7mSE<{t46T?*E$JLaVUIT1?zl8bJ`v9Z^UkO)DE#lp~ z{e!(>=qj8$Mo=^DccBxxCIXRbPr&PMHyL@f9pAUj0GT_#A!FJ{9FgaRc85P@H-GJi z!e_I|=A#kt`ez+je$;}i6%(vXraAa8)Ii3jW<;!eEF>)Xid}<4u~n8SQS{>>=_vn= z_^P}fCtK0Xzg|mHQo9jt+cwB5wp|0}`ZrjT_!D6CJ==dH2U@tl*r8j#RQ{4#lxDgU z)tr*Rb{;H&waY~RTSe}0I`$iz)G8_5pFK`32|kZ2?;yC^v6pR#Iv{jjx`!+-Rp&|g ztH4zYq42kOkkFv!Dt=g1#$3C+4p-fJNnFX6Qy2%=!N5N9akHX;Ad+ zA=Pz8o(-%o&kUdH*?@5`!GM5DAw zZ&K*$00q2CL}wf#U+8y|^S`dfHk?xe$2ZG>o0CN;taHQKMu(Z&UFP`ifEg&hHo^t< z5qP^zI+m^sV~aLw;n9PsXI3# zL3JRgPtm}+gU7+7{W0tk$M{~^PmpN42}d+4$=OREV7E2nlyZ-dDv?j5>WdTDrFYj+ zS4?(OzU~jGlV%Yhp%;iVuKZ&Zrqsc5lqUr3sWvW;ZZ%F%4CD#7H?jLxY-gvXe?~bA zBoTW?iLq^)MTs>yAoGa;@@MoWRPm0_I+YEeCBjnRts8m_&Wa?p6pnRbJIe}n)+$jUU@E<8rrbpy2)@|){3pty~|z>sb#Z8 zPEyMxL#giB&Qy!Td5Z68%dS{QHE_EyM)<7zu$Q^_(iQt}mfjUGbF zj9if2A6-aIJq_CK>g8vK1TD zs5=u5D2;f+6P=jPa^yzL`CFa$(T$l&P_{&eTDEp0I*wd8UB2HX}&Xb?N$T* zP#0EYOcGaEUnh!RZ9=}E^T;OsR#;Y61xhcMKudcpjuRQh3Jn*TKG`M2->EL#j#yJf zuR4M1gSS(K2lT1L-$xLMgYXSCH8d2(!{aYJQI*bqh&rl_d%hiK!#;NiJwxW(7|C=r zuKVc9d&XPOeta+m_HQ@=Ym_@F{V%!T^tGE>yyGoma5+2euq2hTApsrnR!67uUcOBn&PTZWW+sfA}`zb6Yz z3GkWg2`#Vn+3h)}NQ-P=h%8E^^y2fNZ$N-PbU%mQ^Fz2$RFbJ{_2Z<4UM9svx^R|x z75-Iqnj5R=#@uUjCEqU3*3v4o3=1^-p4*v9o`#f(MesjHs9oqZ`z1}&)#&&or zm~WY?aM?HMRzYhlxy2*e_gW zlZ5~J%Rx_8Gh_7O3}roV3c2&c&?C14u)C+SL7Zy?QRP)sSoJD)OB{#V9{Qctl`8|s z?k&vEJY}I)?M7awu7GMb5wMvCH2x;;1O;vm_>aOl@E!!v@KmSf=S;w*_Bkl-U>2gsSIQ>Doc!#_toH z7Z=~dFMV0zDg_IC-lvS4v3?15%sGQ?UPMA(1_yI=-!ki)juI({D$M!shMv>QwCt@- zEu~>L_XO4X>J9szw54cy#1@u*f)zWeV5i1icEQQ@=uGxo^1zx`|Jl|M1n>L`-EB2s z$!I{*Ej}Ej4l`-?3-O7|A1H2N1lsHJ2lWTv#nV&bNRjWKxJ4g5t*7-~fa_dyihoms z-L|cXstmco2HcXz&qrtB!E*(WGQ~pJ@Y#jedU3Fkv)h(;cZ(HUWRe0t{nt_7Yjg1U z%pr@)MA?8$9~iqoj8@rHgM3vT;+l%VrYDIIvil{ubM`+pYsyP>a_kszHcK+@)-K4m ztP^|=7;rE7bYL;Ep7eY18h?4Fj1NYBfI9UkJaIJ+9^Kmm)1uG8HzfngDv<+^4_-mv z$5z3SQxRBoav_AAJWIB8kT}UKnk*l^PgtMsC*)+7<97NhgsnNpRa#?%k1pNH+#9Q4 zE~ZytQ#l3ZdZ0CNI!_c^^zS9uS9@@1{~p3oEdxueQ4mD(b~B4d4&m9yFEiCFK{O4F zFmL8BFmKR4n?u(YvewtzXy7$^QBK4GJa8_8IyC&3HQ9A^?g7Cl0+w9-$hDA?NxveH-%-;qMN(6I%o*KNoH^KHzWJ4I4 zgIBrJus`t%QA0Pimj#-Y8cY|&+1GPOk$4Lh?Bd)<>g>W#u`2?m7Y5&Kuv-s)M z&A8&&HEQ~jd>rfX4ff0wXRUg#!n|hz%;|YioCcFx?w#G=$Q?IEh;zS($@sozaBy-V z>wK?a$1s*jYQ4D(N!EcYMqq8AF0^b}!1)^WaV>&6`8f;v`#{=T2o__|Ce;Z-@A33vPpGF}9Z2 z!^+w{B-bWb^OhI13a^_7@pRR4@z>h*xN7qRu4(ATkyC$zr;iooT!@gC`E@)PcM`v7 z4`F5HAEMA4OH|ago4oYvJDL?C0)1iQaJC@}401W(7c|aPM3&L#afD^{=g8%vGHglDM#^a5A650?4@%mvOi49XQDv8wQG&Q(wD?E?$}ik0 z_*I*XilxNSy~R!>v;QX+t$52gnR!?*@XoL_@A0-Ao#w%pY>t7@+efH}ih7(>c#wD$1@bMRXq0Re38*x`nAvSd4?Q=f`=gVK9;`DM5f2#|MHgC|5 z7!pp3y`#)SK0w-N6_jr9Kq42i;5vQtKZU#q{@T`Xo36!U=q6)Pr3c>1A+WFZFIh2m zg_!HH8eeD>K#1KHFdbDTAN9{ho4>?S+nv`jkDLo(`;BRE(Q_SZy(EkA`4r5G6pd1A zjek(HvJ{DtAOxACUF5~d=kO*a3U@f@B5SejY}wT9z@0g%gn9k z%z4C@R9Q`b|1`w$ygQY4YTZXax_+9u(0d*2R^NjTRTWc!Pa@~rGL-k%81&1n7FNWT zvEfeB**N(TFuL{x&FfuB&RV~f91YM08TleS)lz|D?%=h()v%z=QZO(xfpd1|KJu>MJloFp@^V}~gfXlRJLA3` zm2B{Yv@c_jNs>3xJEl*Sued^;QlEjEIp3MP-BFC*#e6tt;DIhbTS28=OG5KfjFH`c zuvRM)1O0=Un4EPQGFDu`!o@2fZ)ODq&DjI%^y@LtjgJqv{Dp#z(*YebCN*Z6Q?Ade z@%45SDADunLM`lq-{%!YDB&rCtyIeHBn^x(zp`Qf*`P~xEIzvCJ{7Mb}Kw2bT;xd7?&;P>C z1}fYK-&S&tIyqyms2@tzX{C}}DyhOhOVB0Dbn;K_EgaP6#Y8MrphfCU=x4hN>7^@j z>2T`>{1e^|4H55E@Iiw|q=tbCiVpiqEa|<9q>Fhl^OG`=4}0-@t(Ca>+D+nFVLOt( zq=p1**0HA+pW>y=3=kHKYxAg9LzE%VhNY1)$iArvKkc4QN$TX_4~q`s#U47$m(4ej zc#nWmKDq|pxdo$ZpMSvP)*Wa@Ob?l8@COR^eZsqvyRq`_LT(Az@>mp!1!{Soh!#(4X38t$ zNsmZbDB3%K#kse!e`^N$=HP7<=FyLEpb@-i5d(?a@3Cf-48FJ0nR%&P%)A|4iGr^h zlApT6L3w=&z9L}=m)FWediPOexBfAx$0jvO$jREQi=5YJ;q}gj(qn|1e;UB4m=-Ly zXCAgVbA)^Q(_GwA6G$e1suOIPbr>qmBO%2;iVhymWukI^Gsa)!8Jl^HR7US##scZP^v7*^exR+{k1O*N@W=WbJeHUY^7FYwntKM8IUXxi{9aZxlaw6|MZbk=?vwXNneSfws^n*FAj0gE~T_d#Fp-DP+We#WQg-Kf3cN;DDd^J6o!5qTyF5E6Yl1Cb1TeebE7*zFqi?;TTR!AaHxu z88Tz?Kcl+W2fHs!hwfMs-4ED^C>$Nj~>{EW@;2b*ty-X-ZUG#{l`t$ z&*x#$3ppyo)R1lXaEetL{ls2(4gl^%FC<#!LgmRtZCyv^{p>rn{9`({cen_ zl)YatOHPZkC`f`|Svx>`7T%*XdyaC$o=Xd?j>mG%9$EkJ9MS0(Uv(k-aPa6Vg5x`#TA zpR&9a>&WK|O9UU9OfWfML1wg?LxlSmv@toK3KtDTB}-1AdAqDoWdAnowu;7^OLrrc zeYwooO%bd7nMXYUJ(8F8rm{m2YIXOaIWtp?q}t= zpG$>gS?MEiS|~%NYN(L!r9)Bt-8pDx#$5O!m?Us*8dp7_lSmoMAq<dv&Y%8(|&|!LM*I!Jcl`(Q-|M0oq*I*6KO&Hk&4>a1dr=nu};G{yBqyHXSXq79bFYuqK$+a3uvZ_?t#pykpPRos-p*_{*_{$|! ztxDoj>Bi6*xI?-TjhH>fk7BBr_+_5}YX$*^qC#&zQY=h-=nfNcTj0A6>Mw7J=WMN9?M5dGriI$u&;oH44F`z z{b&`;w7-M1BvRp~rV3Qm7lQOmOETr=64*a|6laMRpqXunAe(y?uZ+Bj*&UZjbn8r$0X3 z$&rwkvo>;>VU?RcjrLozliz;l3f&v7#DQLQ!7L)0O9t-{IAk>QH)w3Lu9*n3o?(pX z>T5Cd_8;Q3{Hl%gh%HGkR8NBVKkZ9M%+mA}`iCfc^<%V*Gp}mMpr9B^LsAlkLL0w(TH% zWu^;uo6jT$zdpxd$6^S}#(nsM;VVH!qyXRNl`wDPRwCt2ZPHeCEy-Cu0NJmPLPJ(9 zq5H>@dmCvm8wPhW&n{$QQ7(fu9`!Ll95(aTXndkFdrt7g+8Qa%`?IJ-X-zg_+7-?< z$9?AfaPxB7GvtfFcby8Cn|V}F7dXyM=&Yv`Hk`F?QfcPj=}zICRO;fVO5YJ2mcm@m ztFHtJ5?$OKV?MNRuNi$l@0s%JG=yrzLa2D?iPA-=4z&YZ2%*0GeP{)okrv| zjpLy8_8`}*fMxc7!SxzK^m2wcRn*=IS9glC^VGbA5_d&mY_m4mG}aC1!U+M7IFs`wH2q z5z26G*L`Nu%30v8`-^NZFvMD0ci}FZA57|Zg8Art3+Jt?Bf4ZQVS2%L{8ZZrRxK67 z{%*Q>dC5`IJ#Pkc=CC5+Gh+?+P2B-zaJ!M9_K@8>y(Ljna#Z*B{mHb11ju87kcH%#TMJT7ZJw8z#uPwtQ9(cxS=FlIkD_TLWc zclXT&2k-kZC-oj99?u)++53}6E%)I5l$%g6JrZww_yfc`O3+^U9h6m_3+1DDx%}Y85^=8@DmC?-5QY4#H2B^B9i)#ceYWf`Pmrp03l0 zKYmkULVkQ@P38^4k%2}$Hj&Rd*$v{>(KoPl&loWPDR4(>Vd zjwsL4#epRiOq_Qy_O3oggq|`XL!G|htx<;Df^tXZxmFz34>7~jZ~pga&j*;-c4ADk z0dUjWmg9rpLWFu1`P4?P2`}}RE#@@!Q1revEWEA43F&7Dmg|fid9TcwscS=-p&5aK zCmwqR^5=(X-pFfO^6E2=;wA~}SN3x_V_IuCCq}%vQ|kWEJFY9y@`4h6DSs*VDEy<< zt*&zXykF9R4Ogry{%jW{E-taTMj$3GTiAn#cDITV(lGfppuKLv=Qm6K0vx`Wbn`CYhW6f3CndWiJNUl$+l^> zSnk#>d^Sv$&@c-pzZ{IfX*+xHmX-O;!Hu?9zwa!Th~VPaj#^}K>>={Vz(3;KJ%%y! zOkuuRFJUI-;*LzJGyE}6WmSiy9p?l!gPg)A0|XgCKF>HrGJx96v$ouV7(Y zmOyhNSxAqi{4^d$&B0ekuqkoF#FIZ`AuQ&$P6GwsBw;ca+Xu@akGd8ov0bYksCI6NdF@~=+Nr{?4?7w**cEqu??1g6F zn=VAgP9MoT+84pmI}{|%R2vR$px8vSa8{wcn#gVXjxuwsQS^?b$6#NqpC5y z_MA;*LV&P?K7>tL&jB|t21R9@g^~lZXl0?FIa)L7h)iZ)AfNf~L8c*fl*nNnf2`wYG}WFP}o6(~d&5 zGoER-{{}N{3!ZxM<}B&~n|Fo0o!7-#lY=#ELP#vmmzV=Hq6hK2vJ}?mVLA3!lgEK= z$57Sj>!8;50v-3AMk%O%!tVDn$j*|hsI~h%DaF}DUa-@JTT5~&kH)j)g^f*UVc93# z@%1gl`!$donv8L2xju63`;NSRrIVYQPBA}ps?f%br%^-XW%Th~1J$;}mrC^AhA)H_ zBhA}u;a&88WKpAnTjN9U-q!?@w%mtnJ5FO?8A;OC4M2pGOICHSAz!Lp;j+JKNX5b{ zq|dt+SoSVfxL)LejX~*i;k7U&-n}A4q1($~=I6Xoh<3E5maC7!CxI3!dFpNsGKn1o zn(M{1k5`jS%ulN62_LQ{Jw|5^U*x$_LCR zSwOfaL9~P^*_lI-SKg)Kb#YR_S(|{TjCg@~{565=(pR9`lZg{353;B+4b_~Ofa|q2 zto6^k>~>x*OIs8pLGETM?d%;Gd*ek>rrTKQzx~9W+l-*w(-19Dkbwsk3*l()b9jTRaH~E2?3~VJw+n&R` z)Y+gE(?Q0rGBhVN6<3q}%iEbJ8{H{oY8usEZbSut5+F)FQfSBicc7&$nJN*10*ur^ zmhKa*tvxB2xzLIZUc%Bf4eqo_?qUuZqs(tIAEXODcvvM>g!60Edl2pfSSb-gLnW^3_RUg(wtp2$6aD&3G0UfQc8ydIeb2AfK$ zDHDp6F!~L8Tl0hTKWj>9Xl`uZES}DGZZ6A5H%X zsGjP9xi6NJyKX69lR3|DY@Z5m@#FcV_@a+g+kr1E(IEzV|0OZwYCWKDcm~|+jv#zP z5-OsFRNcLE=wg5<>Q-1ohPz%S@7E`hr+>Z1u9t+Mb;=2X-H>(i7G2s&bKTA6(S@90I%DNM zy6SN`fAYpcR!2pZdRFYozG&c4*5(h{*h{nUNNX0hbN#~VY`aUDM`Jd_ZwdmAC*-UC zf##DA$oWPHEBSjXS^oYv$&ZZ3;TgM-#-n<4PI(^{Blt(PqzyM7YFowrDz{@x9QL57 zaxI(8m~A$ew^*M1l-<<&L`mFwT7+9Y3TW|A4SMEjkCq-)qYScNK$p1zv)lSSbNf^* zzO`paaMp=0*uH9zk>58=sLzupg|p32ed|43lidnQ$xERi!G)c&_5@QmdYC))*i<~T zHwXVS{liXu^b?Zw_P~grJhh6`%iiC$h1q8B1250I!R2Q&QA&jzQZ0N!_GI0{e}5ap z`od^xo$m)Yr~VI>WO>7wQUOdA4kKr!QT)t*BgdpZ04L5S1RrX1%)#El0H1Vw$XcA4 zq!<}l*1b}ml1Qk)^)42|rG=%ie1kud(b_`In)8a4$*H5BJuF1+m!~paP4V<>x6NFs z=U@2dr_(q$=DE`kca(6<*H`crz3$Voo15^nk^|(2zZPiV%zNsm(E!q%%?jeKPKPZM zG*WX;ho|cuA@z(ZaVqyEc%A7aAmlYGf%lM)zW*X;&O1aB?Xywmy}wlUt=%X>X%m|^ z|0p}O&ekS$M=2~N} zG5lffTy0d@D~m%kDp0%G8wwQ`;ef;^%+95DWRJo%q8^xrs>_E$>`^nWI&P@LA_PBLc&vYHom($oz>RLM0Qf803FLWu`ad$p3a`}`KttDUH=`5rFf zc0A)cYAID-{hVt_vqJr0J@~f#7xvd?;EbmmwfMD>6dg-}h!2lA?Ve1opkNM{+F~I9 zSelA;KTEm1f#LM@1ap4bx+nCe#W{4Cca-d1dJ#GX$D&rSES^?zXUpF{;uB655oyp3 z`l5Ra`lM%9RGjgtILoM6&*Wt*SUc9LYt8tIgoH;H?~^Sh_or6CU-oY7%3HcpEuDN; zNbPys6A!s$d3~I+a4l{tdkzzgB1z7^Rk(cC1DK$+6Mrnzh22%3aQ)|YmO0kRCdG&I zh95uj*;&(B-x2cstr-!Oquh7%_vdfmZ9P_3D&#J+dA>0doo^qunH3`74R`AD>Q|aX zCvF={w?KVm!h*+@kIdIz zXTrT*T`*^{HySw1=EsJvfcT&)@=0+rb-dggrEwH;L(cOG>k}|%%QHA9yN;TAhw%EQ zYq0-m2Hp+9tqb(<>y?Liz41Cp zRa?P5?6%}b%}*7{)OJvrnoKt9sxDnVeHUl$5GO2EzEjcSWM8pyvA8^vWcL1FoP`_q z#&UX|;~~DmhD~htWf!axuxU>mc;|*cpvK`c&c61Cb>r4#G+wt14xRi&TGG?eL1iLr zwt5Elru1hOJplHu>y%nubHVXi5Ba%eHQ;{f8f!99huu3qic34U5H-4Q@TzZvDlJx| z^6N|txNkF>`9$4QA`9mO(wpJ0ZQ{2j*eZ)o+mxL;!0Se~@%23q;CQQ)jFb~{O*==y zuAeDP$<=PqS9}fC+cTM8qH@X9RfD)S%o?g<`i>3FxJ(T_WuaxDgqQFAm)=TI#ke<$ ztgpE(ZPwUBUM_Oy0bL%V;cA^PQ=DlEq5_w<`cHw z^pkYZ*&g;+0>`&Z8jT9((}ZrvXy-2K2k0xZbX#DKw{afDAA zYjtxdFLqkQvg3^~&ENw@RNot}Pv1t7%YCFLX%6UJo&@h@& z;GLi@!o<4qQV*YzcthkBm@L(_=@3o%RK&l@egG@ft!a?50~(gb(lNXHfxNhrQMnuk zL8q?^prBwf8u)BtEx=lG$&+@J1@S zc<=o#_HXAq{G=^y?D4moA=0F{qJI4^E1S#7*4oZ0oaCx8Gci@2_}A@Wx=%lZ*A~6G z`#DcE+cX@cf1HQn#zsz@{~Eq+c*J!TMWXgo8+J%{5xa%^%HPO)h$&X%`4Qs_=?|5S zyvTJbzIw=D<`f-T`d)_;uUvZZaxE&T-lju7JtW(9WzjrFk59e*l66X&!~2DqqWs9m z(htjhZB~6)ZL4JX-G-CaiPSWmq{l`Su&-nEc*jgv+97!%HO}pn?wM@^yKek~nNaV; zWIAd>Ea!8TgCNt9q~dfuoUGVF3f&}}gzS|XVvXpp=Bd)+1{YDjx~5crnS|_asWa1XLdYUJ%!}r%PhOLA2L4JED44G_>`!5|N zJ;$`LdXpK34`_iOi)HXrPc|g4*~>dV3}pKo48aML>sW;$xv2EyPvPqUiz{~M)u{YUNQq1Mn+GF$aSbk0N zR#u}oVs@On3JHaCdA~KybiT|h-b$QIzZ9>=0bgffw(=C9Hpii4&t5vOz=19r`#_}p zsD<0IJDd-Qk?_p68&tQcAC_3wRF2A8Q@K@TPvsz+lcHNwQ$zyKq3n@UX;d!93xjUF zwjuqRZ3d=ppoveiu;fnvN=FA(sm5&~#*a9|yj&>97ay)f+imaQ&#TGYb?vvHJiw?T z-NAxOn^z{O_Rg?A>~|LAwQqo>hZZ+z(J?aG)CC6bsph_Y)Q0~1YGKm027ZCR8GBmY zfIl*>fc>U4y%g~3 zr&~!#;RN_7JdSe4$8oH}ZZwj$gUI+{*1_Z+uQPZX$+B94TZb;Qf!9gIa$jZ93UO;!N*Lx z`*1tWG`_&=?KQ)jBQ;r0_ckAPi(}I>=A&BWLv~O~3BS0wma1N?BV8xk@UO{HtZ_;V zKlIQc8b3FUF8xE3b<=swYmA9t%L`{pjz2!g7FkZf>L7dWWmh_GDNYi`vH|1))JT(k zHcJPUR6w}tPZ}drhbbrJq@NWJRoeJwiZf%ZWiO|9u@p9)|3h*n zzylF>dWv;M}NB?bVWRO4$K4^H7a}PAooH3*F%}wyVj3shG*SNBN${fy> z7oh9kRT$H72wATjOzwKdES1YFZ?vv}i}!}2<|&tf}H<)4qb#Cz!-4DY5-*XY#j84zgFX-t$?DU0LNIE7tSWdsHk4?}+71928MXcA;#>(c2)%+Uk z$Nb%Im-x5{JN{X)HA{ZTiWXj6DRL?pLPy=7$4?YLMuU6)XnAED|1tJYzV*Q*zDK); zUwvUNxA%Z6ozEJPH6J@^`KF^bBR>YxEln=)c=Kc~E;SZBP4B^9KSt7-KEbFwdpO^w?@(|WtnE_)gLalb_EEHgjpCJ<#}-r^rOuv=lUAY2TtMR-%MlI-m&FFv&C$A@^G*z+QqFj`heX%3Zmk@b<*WI zPNHgYx-_$O1&$6#z$TYKUKq9p{KF)W z5n{xaDkjkTod+@g#|9jJaWU&Y1Y#%p6Y8xYG^JCL(zTn7Y(P0hb<JN5QoLkGP%;{$5-HqX|%&Fs*Q%>QGpk_>cqz#Ryd1Af)Ia+OZKy&3!yo!S(Ex70_ z8Mt#C9bmJO+Ad-6(WI3$a`t@Ue_<2eciIeJub*cQJV_)eXGfxZLpS{Glqadx4IVO_lcB95-M-6+~H zJeoaj=qg&47bq>~VnwU$4frqD<)xFq{g4`&bxWuG`pMU{Y0>$Aq|msL#yHPUl~36{ z*v99_Lg}F~dqt;durzx3YEE%#HuRHyO!n_<;~rmDV*d0QOoCtSwLWIlTX^0+4a={( z3ph7A30BxRTECCp0o57XncQc#C}aEvbi@Si&TfKNmdBaJpQqy070GBFexbKAO(!tn zj?{khLDBlH%cOHU7KoOfKZd-12tAnF!OCf^r|DhY#1Wfd=9SU7LisZ<*BpaMb4*BV za5cOgau|1QI7tUdJbBB>Zg6M19PST&fTN-fY2oIpcxI0+7r}g`@4_>{@TNOzq`aka zFKysmQwByaa3MKr9XRmHZeHhg9IN;whc936Pa9?`kmLpl&DD>fjcyE5_Y;^pCJ~|@ z|IH=JzeV#?xhU(^z(@lXp`_yxt!j8rjZVBE-`!78m2($yT<37+U8EBH@KoXzdg~vz z)R{18Y9ka_48u+5Uh*ftbbz^+7kg&iakkCr1&z7B9xk~b7U?=xibg#AD)Rdr!xmk7 z%l6wDjW_(?;L($}@j3TaN>PztVqwZ2SUQteu~TMNCA<(8pK%A>W;qD*H6}4GCx}Yw zYVMr+2yTS`eYj$FO~Bor|BGv0{|79#H3DYNH)u_|3z2+1%IZ|0&aN{!z*Yk3qD$nY z-6D=9@-gKu-54Rjjo!1F z{flKuS<4A>#IJ%lk5WLzBg^2|d}Uaf>5t=8wvm?ucEg1)rL09$3>74Prw(f_Q{{Ak zjnYe0F=sK(nIcbiXi@I<&sCDowa&n$JK^ktb|_U?#Y3@(&xo<1souMZ-quK7!#<9m zSX#qx9GlL&N=CxS#zY+Syc}0#cjMKYYS0irm{$qNU>VyS99*`Fj2r7E*;e?AjDBxM zqULK8pL-v`_VPwpy=D_6+n2!7&5H$`U*0Hg<8gn<6FGBOknI6eB_D9)fF1}Qx)2q) z0jT4akBQ!~7|ZU!>)TDh``AO+zIi1(jyp>|_N-@BtD@QcUN>2tW7(|Lmr-;IcZJkj zKgX?S&teh#5|xkFV$$RL;LT3OVMTS=e_8_SI-NyPiYBgA5JL9GeRy7Fi}lCE-Zk;N za5j4Y&;C3`gOZx9lj?^;fl~=xYtX_JRxKt!EiORyZ~<NEmp*mQTntcD*n9EwC~m3J14eCywV|z=WI>STwg4RcxZD+~3YP_hdQ-$j_!jUZi9B ztKn!=R84-o_J*|qHXxc1%$1I~3$ber={WW|mv}xEHQm+Ftz;jaB5H-*pGv66?J{oW zYEdyW6Y5@nV5TL`gawLsh;-yWSoy+%JJnnN1^oF%U~Tf(k_vzN7{cx}K*~jXh}-1` z8=cHh5Zy|u$^{twqKR>iOT{WzPhPp{2&rE3QQCjKDcfWm$(sbuVjBi$^RrH*vGOA{ zN&XK3s4Y-Ht1lDaM%zlnm7md~=?k=;8we}=8$(@P4(w`>gEh}bk=1TXan#2`$flRk zpfZ$c!5cVkLO!`;WQzUYA0_v)>oMEOleQ{m@Ctq>Y2E~1K4sT!dh^d}*gwsSZhK}+ zlff%R#SqiszcYyXmAzX}Q;6#x! zI=eLB{2T9SWO^q(Dp9ACca_m;nV}HxXbtV(8;Qu{5XeZ!k&Fl>`t-&^^d4%#>!11# zcW%$1TkbE!S%q!nYw1bUeX7YxoCMrZ<!8>JN9Njqnx*nIxKs^eHp6F_>a4a_A_2f@)EiUv%gXx`E}Km(>9QU z%%BPE)hw>qI|9VqXNXNc1*Zz+ zpoU~IAMGAn?{wYIiJZjnsGtBqJPQpJKI1%>>+r$xA)Tj|gpcCe;KeBg6xDc>yhK;} zI^7ITKaeA@U(2D%zE_ZUUyr;P(a6}^uqf9#nN;W0llYV@SUmbBI!=Dg&3U3l_Pg9d zf!RXr*B#5tEI!G^$#&fbxXXuBsNB12Ol;H#u5mff z>}z&ou4W5GX1;4_3$p`Nw%St}O=s@xqEZ?=G?)t?a{;!`D}{|oqrr56jU+XCHY^M2 z5pdp0v$#B$AgFpUfZOu)Hrg}{M5QG`NW)UdwhcqT&ubffzly_}-W-0M{4{Cs(tOeC zdBM^dUY|re7sSC4--XC?K6Kx#(NHyhH_lK!%FC%QK)-A;hIlt%KO>%T;|*~}lZ4R? zz6r6948c$O1h#vuT^~6;wqS4YQ{>5%s0D++BN5(Cs?FsPs$$u)Dz}jGQg`sdJBcZ{Q3o zA|G+yb`zNayDZ@BsP$O%(3y0cJTA3-*C-OHWJ%S>6%g0XKbcm36xmh(2~9q#lil`a zaAU?=W^U0AiFUZQK+-X7Ef?xF9#%&yLmMXnVSyoX<66nj**TbRvK9|KEXMmwO!(=y zjp!M>CAd~Piv1DchT1o6*`$vFbbX3MV!OKn6Ve{@ld{L+!t7$^z32pbY_ylOjGl*j zChKt6dwsAy{RgKUG7iiKj^yg*q%+E<*|1M}C#o^iD`E{UL1AhRGe+|~(*VT=pm^hq#lYRSIJvCwRJkoQPw99_Blf) zj3DCNgE0PsDZ0Nti@E`$iSrFbxDi?a52E*@AS4D$XE|a_Cg2`HC&q{9(&^`}agWw# z)AC^lglC6};h4?L-YaJkEjX|a(@!aoxEOWLgI5RB+xcXh%p<6m$so$M1Gv&S6Yh)t zTQDyC%pA;^%bczVV=%|D;(>oCQ~p{Y^*X6yBkSNJ%}yR6IzGIaulyKKjSs3YS_Zms zQ2B4ve^CU7s$P=fkT$rXQNkrQdhdYxi-RJQW;XJW{rwXzrtE8tRBHjY`DjQWmJ(5a7DJVl;dC z2y#B$W=@AIa_0|Tfpcw2jNX!QpmD4XHV-e8jBN6Nq!VRmu=*uaUUnDL-Vyj)J{&FT z)iEb!W5xI0==E!>q%)TvBDFow=+`z?URBygx7MVf&G~jFQ7el3YL^Pv8WZeR-(Y`DHZyoC4_V{Yp-t6_lVO_O2cq}& zB8~4+BgxnNnMYx^!aHe`KyGv)D!=t6TY`8vH6@iZ?_bJ{Eq=wgkC+T>=_Sznc?E^x zQCyQ_0-9^L<7T{osnc4Z=(aPre6Jb#mA8$$F;mH#0tOwQgpfM#r@aNF2dJjSaX+T# zFpIxh!fNpm#;x2{a=dT}R~S2#q=XKFt_g3L;Os|?)#cAz`_Y#$O!GdpJ-bEaUlqU= zZvkCxaG%<1`azzbI`-#cP*3{-#QJtp-Q5-3=Dp7VG)Ljc*WH4O<)&X?LP!my$sNPk zG!YXY&mogx$xXI(way))2^YU6k@2nVP`TE=(qP>K(auw~mA69TZ0OfCKEgT--M$CF z=QlfhGpmj8w}yLfrjie57sP=7rdK#9|0HN-EQPdzmVj@C}4&YDej6z^SUjd zIsqYCV-bi~QUEP4F4SWVJT035j1O^IR4FK~7LY<(`j6{>4Lk?T31;L_n!lGz1q!q{08IeK6$u&G;_ z6DDG4N$esfGFxC{$_{ir{}uMkQ6kw5K3t6dNthV83k9iuXed#GLsJ3-;JG>(zqa*AUybY2YP>ULT|(!)Psp@#t+ z+o=b;;{amiqhR6DVmP{10)iz?FgyP>Y?-kEW!#0#vQsXQ`#}~qCi|le8AIGI9O0_A z215)T%$@nH58E{V;+`Fng2jqRCSD^1JeciFV)QSVnbQdN$H#zW=@%|HY$?n%y9fE> z(jjDF1gN{{K#`m^#MbA-ls^u_Js1q}-c2~Hdo3!hO^30rb0F%g4AZtkn>k)Hkn`1z zBS8y~372ITacioZP^mopEwSj<90ZZ@eJ0cIzeJ%2@D9S zhebZqVDOAuC}oi@PqC^<2Q_E#R&)8;-3@!pK2( zaP3DAM9Rm&!=;PhL&6Fuv7OAFvG@Xys|Ub6Ck?3oaSu-I7IOJ>{2;|d-TK3lk=Q@{ zC*ruSaK4x3{JKEx#UgcVNR~!dhXRD5AZ8F2P)&H!pf!+>(0uP)=3HTn5^~rfO(tH z(IX7azs>GV)1xHk$9gvT3Ivvx|3m(*Hy2o# zo6G1#$@~`(DUR?C?|r8Zv!G5;pjFnJmZfPwLnwpyng+ihv)5rh&_=WrW zg_#8eiX;B>p7A@Vt*xzox8{t{{C{o*{~Tjv%!LAhg_X6ng+SOF{}znUT1H3kUm5@2 ztHQk_LRb8U^Zs|^|Ch2TAX3LJEL_LJO2^!SwX$T*t#vE}7DABfRV!v>6rGNRZ z6z(mK@C#Q`Qd;R3;@7M4^VRWLrxR`}4h%LG`}y`>BOwt=ivs*~{(DEqKPWOv$3HO0 zPbX0PTl>4Or1Zb8(D4iMTjL!O7#d=$_is^8XKk=)s^BH*{#D7ZL6qA`S};|F{0P zBG6N*cSs!I=N-OW91-p(7WeACBY)2i_6}LT#ycp|&sJb65dPbv<-a|!)%%w#dOCjL zq2gXEp&`F_+AIFcjo*i-rxOww@%xy1RbpFnflhE>$nUGR_YA{+8`TMoj0lU2SpJW` zg^sVMQlP(oq_}tXzqTkaB|5#E^bHMOF81^DwKdlX2@4Nh(QB*kZtkOxKKkgRk3Rb7 tqmMrN=%bH5`skyNKKkgRk3Rb7qmMrN=%bH5`sm}I{5Nb^lK}ug0RRW~$sPaz diff --git a/raster/r.sim/r.sim.sediment/testsuite/data/reference_sedflux.pack b/raster/r.sim/r.sim.sediment/testsuite/data/reference_sedflux.pack index 027ed194698b50b6ce95d31711dd20487dd50cec..2f1485f0ca369defd6319b812b212865eeb00f27 100644 GIT binary patch literal 39965 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

68%uqVcwsDEf-x$VJESgu)~| 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 { - seed_value = G_srand48_auto(); - G_verbose_message(_("Generated random seed (-s): %ld"), seed_value); - } - else if (parm.seed->answer) { - seed_value = atol(parm.seed->answer); - G_srand48(seed_value); - G_verbose_message(_("Read random seed from %s option: %ld"), - parm.seed->key, seed_value); - } - else { - /* default as it used to be */ - G_srand48(12345); - } + long long seed = simwe_seed(parm.seed, flag.generateSeed); G_get_set_window(&cellhd); @@ -410,6 +396,7 @@ int main(int argc, char *argv[]) G_debug(3, "xmax: %f, ymax: %f", geometry.xmax, geometry.ymax); settings.ts = flag.tserie->answer; + settings.seed = seed; inputs.elevin = parm.elevin->answer; inputs.dxin = parm.dxin->answer; diff --git a/raster/r.sim/r.sim.water/r.sim.water.html b/raster/r.sim/r.sim.water/r.sim.water.html index 7bf3d256d39..c27fa190228 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.html +++ b/raster/r.sim/r.sim.water/r.sim.water.html @@ -275,6 +275,37 @@

Run summary

print(summary["walkers_remaining"], summary["outputs"][-1]["depth"]) +

Random numbers and parallel processing

+ +The walkers are placed and moved using pseudo-random numbers. The seed +is given by random_seed, generated when the -s flag is used, and +12345 when neither is given. The generated seed is reported with +--verbose, and the environment variable GRASS_RANDOM_SEED sets it +for scripts. The seed is an integer from -2147483648 to 4294967295; +other values are an error. Each walker draws from a sequence of random +numbers of its own, determined by the seed and the walker's number, so +every walker receives the same random numbers whatever the number of +threads given by nprocs. Results for a given seed differ from those +of GRASS versions in which all walkers drew from one shared sequence. + +

+With nprocs=1, runs with the same seed and inputs give identical +results. With more threads, every walker's weight is added to the water +depth, but walkers in the same cell add their weights in an order which +depends on the threads, and the floating point sums differ slightly with +the order. Walkers in the same cell also use up the infiltration +capacity at the same time without synchronization. The walkers +themselves move the same way for any nprocs as long as the water +depth stays below hmax, above which the diffusion depends on the +depth, and there is no infiltration. Results with nprocs greater +than 1 are close to, but not identical with, those with nprocs=1, +and repeated runs with the same nprocs may differ slightly. Use +nprocs=1 when results must be reproducible. + +

+When runs with several seeds are compared, use seeds below 1073741824 +(2^30): seeds which differ by 2^30 or 2^31 give related random numbers. +

EXAMPLE

Using the North Carolina full sample dataset: diff --git a/raster/r.sim/r.sim.water/r.sim.water.md b/raster/r.sim/r.sim.water/r.sim.water.md index 460e35e34c9..32f9f5d0ffc 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.md +++ b/raster/r.sim/r.sim.water/r.sim.water.md @@ -260,6 +260,35 @@ summary = gs.parse_command( print(summary["walkers_remaining"], summary["outputs"][-1]["depth"]) ``` +### Random numbers and parallel processing + +The walkers are placed and moved using pseudo-random numbers. The seed +is given by **random_seed**, generated when the **-s** flag is used, and +12345 when neither is given. The generated seed is reported with +**--verbose**, and the environment variable `GRASS_RANDOM_SEED` sets it +for scripts. The seed is an integer from -2147483648 to 4294967295; +other values are an error. Each walker draws from a sequence of random +numbers of its own, determined by the seed and the walker's number, so +every walker receives the same random numbers whatever the number of +threads given by **nprocs**. Results for a given seed differ from those +of GRASS versions in which all walkers drew from one shared sequence. + +With **nprocs=1**, runs with the same seed and inputs give identical +results. With more threads, every walker's weight is added to the water +depth, but walkers in the same cell add their weights in an order which +depends on the threads, and the floating point sums differ slightly with +the order. Walkers in the same cell also use up the infiltration +capacity at the same time without synchronization. The walkers +themselves move the same way for any **nprocs** as long as the water +depth stays below **hmax**, above which the diffusion depends on the +depth, and there is no infiltration. Results with **nprocs** greater +than 1 are close to, but not identical with, those with **nprocs=1**, +and repeated runs with the same **nprocs** may differ slightly. Use +**nprocs=1** when results must be reproducible. + +When runs with several seeds are compared, use seeds below 1073741824 +(2^30): seeds which differ by 2^30 or 2^31 give related random numbers. + ## EXAMPLE Using the North Carolina full sample dataset: diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_landforms_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_landforms_test.py index 57f97cea1ca..1123bca5ee3 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_landforms_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_landforms_test.py @@ -173,11 +173,11 @@ def test_pit_collects_water(tmp_path): assert_depth_pinned( depth, [ - [0.50, 0.39, 0.45, 0.64, 0.39], - [0.45, 2.90, 14.30, 2.43, 0.80], - [0.45, 14.34, 87.17, 14.28, 0.45], - [0.50, 2.56, 14.76, 2.85, 0.68], - [0.64, 0.50, 0.26, 0.80, 0.50], + [0.80, 0.33, 0.45, 0.45, 0.26], + [0.60, 2.93, 14.57, 2.59, 0.64], + [0.50, 14.34, 87.26, 13.96, 0.26], + [0.39, 2.57, 14.58, 2.66, 0.17], + [0.39, 0.55, 0.50, 0.60, 0.64], ], ) @@ -225,13 +225,13 @@ def test_peak_sheds_water(tmp_path): assert_depth_pinned( depth, [ - [0.89, 0.68, 0.81, 0.89, 0.82, 0.70, 0.90], - [0.69, 0.52, 0.48, 0.57, 0.49, 0.52, 0.74], - [0.79, 0.49, 0.38, 0.42, 0.39, 0.52, 0.79], - [0.92, 0.58, 0.40, 0.69, 0.42, 0.58, 0.90], - [0.81, 0.50, 0.41, 0.42, 0.37, 0.49, 0.80], - [0.71, 0.50, 0.48, 0.60, 0.51, 0.51, 0.69], - [0.86, 0.67, 0.80, 0.92, 0.80, 0.74, 0.87], + [0.90, 0.73, 0.80, 0.92, 0.80, 0.70, 0.85], + [0.71, 0.54, 0.49, 0.57, 0.50, 0.54, 0.70], + [0.79, 0.49, 0.40, 0.42, 0.38, 0.47, 0.80], + [0.90, 0.58, 0.40, 0.66, 0.45, 0.59, 0.92], + [0.81, 0.49, 0.39, 0.41, 0.37, 0.49, 0.81], + [0.74, 0.52, 0.46, 0.56, 0.50, 0.55, 0.73], + [0.85, 0.71, 0.80, 0.90, 0.81, 0.70, 0.87], ], ) @@ -267,11 +267,11 @@ def test_ridge_sheds_water_to_flanks(tmp_path): assert_depth_pinned( depth, [ - [1.00, 0.66, 0.40, 0.57, 0.42, 0.68, 1.02], - [1.09, 0.76, 0.58, 1.37, 0.56, 0.77, 1.11], - [1.11, 0.73, 0.52, 1.12, 0.50, 0.72, 1.09], - [1.13, 0.78, 0.58, 1.45, 0.58, 0.75, 1.11], - [1.00, 0.64, 0.40, 0.59, 0.40, 0.66, 1.00], + [1.00, 0.66, 0.42, 0.60, 0.40, 0.65, 1.00], + [1.07, 0.75, 0.56, 1.43, 0.56, 0.75, 1.08], + [1.10, 0.73, 0.50, 1.06, 0.50, 0.72, 1.13], + [1.12, 0.76, 0.56, 1.40, 0.57, 0.79, 1.15], + [1.00, 0.65, 0.41, 0.57, 0.42, 0.66, 0.97], ], ) @@ -308,16 +308,16 @@ def test_valley_concentrates_flow_downstream(tmp_path): assert_depth_pinned( depth, [ - [0.34, 0.49, 0.77, 2.17, 0.74, 0.47, 0.36], - [0.44, 0.60, 0.77, 1.55, 0.80, 0.59, 0.39], - [0.43, 0.63, 0.96, 2.42, 0.97, 0.59, 0.43], - [0.41, 0.63, 1.03, 3.19, 1.03, 0.64, 0.41], - [0.41, 0.65, 1.11, 3.88, 1.08, 0.62, 0.42], - [0.43, 0.61, 1.16, 4.46, 1.16, 0.64, 0.41], - [0.45, 0.63, 1.21, 5.02, 1.23, 0.64, 0.41], - [0.45, 0.65, 1.32, 5.50, 1.27, 0.61, 0.42], - [0.44, 0.64, 1.37, 6.04, 1.32, 0.63, 0.47], - [0.44, 0.73, 1.54, 6.61, 1.55, 0.77, 0.50], + [0.35, 0.48, 0.70, 2.04, 0.70, 0.48, 0.35], + [0.40, 0.58, 0.80, 1.51, 0.79, 0.59, 0.40], + [0.43, 0.62, 0.93, 2.38, 0.98, 0.63, 0.43], + [0.41, 0.66, 1.04, 3.17, 1.03, 0.63, 0.44], + [0.42, 0.62, 1.11, 3.88, 1.08, 0.62, 0.44], + [0.46, 0.63, 1.17, 4.46, 1.17, 0.64, 0.44], + [0.43, 0.61, 1.23, 5.01, 1.22, 0.64, 0.41], + [0.43, 0.61, 1.27, 5.54, 1.26, 0.62, 0.42], + [0.44, 0.65, 1.34, 6.02, 1.32, 0.62, 0.48], + [0.48, 0.75, 1.52, 6.60, 1.53, 0.74, 0.50], ], ) @@ -360,13 +360,13 @@ def test_saddle_bifurcates_flow(tmp_path): assert_depth_pinned( depth, [ - [0.26, 0.28, 0.15, 0.20, 0.24, 0.15, 0.26], - [0.41, 0.30, 0.28, 0.39, 0.22, 0.51, 0.49], - [0.72, 0.51, 0.46, 0.81, 0.33, 0.56, 0.85], - [1.30, 0.83, 0.66, 3.08, 1.07, 0.95, 1.39], - [0.78, 0.54, 0.30, 0.78, 0.47, 0.61, 0.84], - [0.43, 0.35, 0.30, 0.41, 0.28, 0.43, 0.45], - [0.30, 0.20, 0.26, 0.20, 0.24, 0.28, 0.24], + [0.24, 0.20, 0.26, 0.20, 0.22, 0.20, 0.26], + [0.43, 0.28, 0.42, 0.41, 0.28, 0.39, 0.42], + [0.77, 0.63, 0.53, 0.67, 0.46, 0.47, 0.75], + [1.38, 1.00, 0.95, 2.65, 0.74, 0.91, 1.27], + [0.78, 0.57, 0.50, 0.78, 0.51, 0.54, 0.82], + [0.57, 0.26, 0.33, 0.39, 0.33, 0.26, 0.49], + [0.32, 0.32, 0.15, 0.22, 0.18, 0.30, 0.24], ], ) @@ -414,32 +414,32 @@ def test_hollow_concentrates_more_than_spur(tmp_path): assert_depth_pinned( depth_hollow, [ - [0.34, 0.54, 0.79, 0.67, 0.67, 0.52, 0.36], - [0.41, 0.57, 0.96, 1.22, 0.90, 0.64, 0.46], - [0.47, 0.71, 1.25, 2.08, 1.20, 0.73, 0.37], - [0.41, 0.60, 1.46, 2.84, 1.33, 0.57, 0.42], - [0.48, 0.65, 1.46, 3.42, 1.43, 0.71, 0.46], - [0.38, 0.73, 1.56, 4.01, 1.56, 0.76, 0.42], - [0.43, 0.68, 1.77, 4.53, 1.72, 0.74, 0.39], - [0.46, 0.65, 1.79, 4.99, 1.68, 0.65, 0.43], - [0.37, 0.71, 1.87, 5.54, 1.87, 0.80, 0.42], - [0.43, 0.79, 2.18, 6.95, 2.21, 0.77, 0.43], + [0.41, 0.59, 0.72, 0.69, 0.74, 0.44, 0.38], + [0.39, 0.59, 1.12, 1.47, 0.91, 0.59, 0.37], + [0.39, 0.66, 1.22, 2.03, 1.21, 0.66, 0.47], + [0.43, 0.69, 1.40, 2.85, 1.32, 0.73, 0.41], + [0.45, 0.72, 1.63, 3.43, 1.46, 0.67, 0.35], + [0.43, 0.69, 1.58, 4.10, 1.67, 0.67, 0.42], + [0.40, 0.71, 1.67, 4.61, 1.74, 0.62, 0.46], + [0.43, 0.66, 1.65, 5.15, 1.65, 0.71, 0.39], + [0.40, 0.69, 1.75, 5.66, 1.89, 0.68, 0.47], + [0.57, 0.79, 2.21, 7.07, 2.10, 0.80, 0.46], ], ) assert_depth_pinned( depth_spur, [ - [0.73, 0.46, 0.29, 0.45, 0.36, 0.51, 0.55], - [0.74, 0.63, 0.56, 0.64, 0.45, 0.56, 0.80], - [0.97, 0.77, 0.64, 0.78, 0.56, 0.72, 1.09], - [1.08, 0.77, 0.61, 0.89, 0.54, 0.68, 1.00], - [1.13, 0.80, 0.64, 0.92, 0.71, 0.66, 0.98], - [1.08, 0.83, 0.69, 0.96, 0.67, 0.80, 1.11], - [1.19, 0.75, 0.77, 1.07, 0.77, 0.76, 1.16], - [1.14, 0.85, 0.73, 1.01, 0.81, 0.75, 1.09], - [1.20, 0.72, 0.81, 1.05, 0.79, 0.91, 1.26], - [1.40, 1.09, 0.93, 1.24, 0.81, 0.88, 1.29], + [0.70, 0.48, 0.28, 0.34, 0.37, 0.51, 0.67], + [0.82, 0.61, 0.63, 0.62, 0.59, 0.54, 0.81], + [0.97, 0.71, 0.64, 0.67, 0.63, 0.73, 0.97], + [1.08, 0.79, 0.72, 0.85, 0.53, 0.73, 1.14], + [1.24, 0.86, 0.60, 0.88, 0.59, 0.68, 1.06], + [1.10, 0.67, 0.56, 1.06, 0.62, 0.83, 1.11], + [1.05, 0.71, 0.70, 1.13, 0.66, 0.71, 1.11], + [1.20, 0.70, 0.66, 1.25, 0.67, 0.80, 1.07], + [1.10, 0.85, 0.77, 1.21, 0.72, 0.78, 1.10], + [1.43, 1.10, 0.99, 1.40, 1.06, 1.01, 1.27], ], ) @@ -482,16 +482,16 @@ def test_terrace_accumulates_on_steps(tmp_path): assert_depth_pinned( depth, [ - [0.83, 0.92, 2.27, 0.31, 0.48, 1.10, 4.06, 0.78, 1.01, 1.93, 8.25, 4.35], - [1.78, 2.47, 2.73, 0.97, 1.05, 1.96, 6.18, 1.57, 1.33, 3.01, 12.26, 7.19], - [1.98, 2.97, 3.50, 0.78, 0.67, 1.43, 4.73, 1.43, 1.33, 3.37, 13.64, 8.68], - [3.56, 5.51, 3.31, 0.83, 0.88, 1.78, 6.33, 1.36, 1.43, 3.96, 15.10, 9.38], - [3.82, 5.70, 3.64, 0.97, 0.97, 2.45, 7.33, 1.93, 1.43, 3.96, 17.13, 10.67], - [4.35, 6.22, 3.58, 0.72, 0.83, 2.17, 5.73, 1.22, 1.40, 4.03, 18.60, 11.42], - [3.76, 5.41, 3.58, 0.83, 0.67, 1.72, 5.00, 1.33, 1.22, 3.50, 16.33, 10.49], - [3.52, 3.64, 3.17, 0.67, 0.72, 1.78, 5.99, 1.10, 1.05, 2.97, 12.78, 9.85], - [3.35, 3.37, 2.77, 0.55, 0.67, 1.98, 5.48, 1.47, 1.50, 2.81, 10.44, 8.40], - [2.50, 1.50, 2.27, 0.55, 0.48, 1.22, 3.54, 1.18, 1.14, 2.17, 7.91, 4.13], + [2.50, 2.77, 1.81, 0.72, 0.72, 1.72, 3.54, 0.61, 0.83, 2.12, 7.94, 2.90], + [3.37, 3.80, 2.66, 0.48, 0.67, 2.12, 6.30, 1.18, 1.22, 2.92, 11.52, 8.61], + [3.25, 2.94, 2.99, 0.67, 0.67, 1.90, 6.20, 1.05, 1.14, 3.27, 11.83, 7.90], + [2.75, 4.41, 3.92, 1.01, 0.92, 1.57, 6.18, 2.01, 1.53, 4.08, 15.47, 8.88], + [2.42, 3.71, 3.92, 1.14, 1.25, 2.75, 7.33, 1.22, 1.05, 4.05, 16.63, 10.15], + [2.64, 3.96, 2.88, 0.78, 0.92, 2.54, 7.22, 1.81, 1.69, 4.43, 16.88, 11.53], + [1.84, 2.94, 2.79, 0.61, 0.78, 1.81, 6.09, 1.43, 1.22, 3.92, 17.86, 11.62], + [1.72, 4.05, 2.42, 0.97, 1.01, 1.93, 5.17, 1.63, 1.66, 4.23, 16.82, 9.73], + [3.07, 4.64, 2.09, 0.55, 0.72, 1.25, 3.71, 1.29, 1.33, 3.37, 13.65, 6.65], + [2.04, 1.84, 2.59, 0.67, 0.78, 1.40, 3.85, 1.05, 0.88, 2.42, 6.79, 5.38], ], ) diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py new file mode 100644 index 00000000000..19d27b4f5cc --- /dev/null +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +"""Tests of the random numbers of r.sim.water. + +Each walker draws from a random number state of its own, set by the seed and +the walker's number, so its random numbers do not depend on the number of +threads. The water depth still does at nprocs > 1, because walkers in the same +cell add to the depth grid without synchronization, so the tests which compare +numbers of threads compare the walker positions instead. With a large hmax and +no infiltration, a walker's path depends only on the slope and its random +numbers, not on the depth. The elevation is a bowl, so that the walkers stay +in the region until the end of the simulation. +""" + +import os +from io import StringIO + +import numpy as np +import pytest + +import grass.script as gs +from grass.exceptions import CalledModuleError +from grass.tools import Tools + +# Larger than any depth the simulation reaches, so the diffusion does not +# depend on the depth. +NO_DEPTH_FEEDBACK = {"hmax": 1e6} + + +@pytest.fixture(scope="module") +def session(tmp_path_factory): + """Session in an XY project with a bowl as elevation.""" + project = tmp_path_factory.mktemp("r_sim_water_random") / "xy_test" + gs.create_project(project) + with ( + gs.setup.init(project, env=os.environ.copy()) as session, + Tools(session=session) as tools, + ): + tools.g_region(s=0, n=40, w=0, e=40, res=1) + tools.r_mapcalc( + expression="elevation = 0.01 * ((col() - 20.5)^2 + (row() - 20.5)^2)" + ) + yield session + + +def simulate_depth(session, **kwargs): + """Run the simulation and return the water depth as an array.""" + tools = Tools(session=session) + return tools.r_sim_water( + elevation="elevation", depth=np.array, duration=5, **kwargs + ) + + +def simulate_walkers(session, name, **kwargs): + """Run the simulation and return the final walker coordinates as an array.""" + tools = Tools(session=session) + tools.r_sim_water(elevation="elevation", walkers_output=name, duration=5, **kwargs) + text = tools.v_out_ascii(input=name, format="point", precision=15).text + return np.loadtxt(StringIO(text), delimiter="|") + + +def test_same_seed_gives_same_depth(session): + """Two runs with the same seed give the same water depth.""" + first = simulate_depth(session, random_seed=1) + second = simulate_depth(session, random_seed=1) + assert np.array_equal(first, second) + + +def test_different_seeds_give_different_depth(session): + """Runs with different seeds give different water depths.""" + first = simulate_depth(session, random_seed=1) + second = simulate_depth(session, random_seed=2) + assert not np.array_equal(first, second) + + +def test_generated_seed_is_the_seed_option(session): + """The -s flag with GRASS_RANDOM_SEED gives what the seed option gives.""" + env = session.env.copy() + env["GRASS_RANDOM_SEED"] = "3" + generated = Tools(env=env).r_sim_water( + elevation="elevation", depth=np.array, duration=5, flags="s" + ) + given = simulate_depth(session, random_seed=3) + assert np.array_equal(generated, given) + + +@pytest.mark.parametrize("nprocs", [2, 4]) +def test_walkers_do_not_depend_on_nprocs(session, nprocs): + """Walkers end at the same positions with any number of threads.""" + serial = simulate_walkers( + session, f"walkers_{nprocs}_serial", random_seed=5, **NO_DEPTH_FEEDBACK + ) + parallel = simulate_walkers( + session, + f"walkers_{nprocs}_parallel", + random_seed=5, + nprocs=nprocs, + **NO_DEPTH_FEEDBACK, + ) + assert serial.size + assert np.array_equal(parallel, serial) + + +def test_walkers_depend_on_seed(session): + """The walker comparison above can detect a difference.""" + first = simulate_walkers( + session, "walkers_seed_5", random_seed=5, **NO_DEPTH_FEEDBACK + ) + second = simulate_walkers( + session, "walkers_seed_6", random_seed=6, **NO_DEPTH_FEEDBACK + ) + assert not np.array_equal(first, second) + + +@pytest.mark.parametrize("seed", [-(2**31) - 1, 2**32]) +def test_seed_outside_range_is_an_error(session, seed): + """A seed the generator cannot use is refused, not silently wrapped.""" + with pytest.raises(CalledModuleError, match="outside the range"): + simulate_depth(session, random_seed=seed) + + +@pytest.mark.parametrize("seed", ["12abc", "1.5", "-", "99999999999999999999"]) +def test_seed_which_is_not_an_integer_is_an_error(session, seed): + """A seed which the parser lets through but which is not an integer is refused.""" + with pytest.raises(CalledModuleError, match="Invalid random seed"): + simulate_depth(session, random_seed=seed) diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_test.py index 8dcf2f02736..89b93672bb8 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_test.py @@ -907,8 +907,10 @@ def test_walkers_output(long_slope_session): def test_nprocs_gives_result_within_noise(east_slope_session): """Multiple threads produce a result close to a single thread. - Threads share the random number generator state, so multi-threaded - results vary between runs even with a fixed seed. Total depth should + Each walker draws the same random numbers with any number of threads, + but threads add to the water depth without synchronization, so + multi-threaded results vary between runs even with a fixed seed. Total + depth should still agree with the single-threaded result within Monte Carlo noise, using the same tolerance as test_results_consistent_across_seeds. """ diff --git a/raster/r.sim/r.sim.water/testsuite/data/depth_complex.pack b/raster/r.sim/r.sim.water/testsuite/data/depth_complex.pack index 30c7b86cead4d8a79df6f57d5c0e695fb2484d76..afeff975039ea8488b87e69e8772a3add0c86c9a 100644 GIT binary patch literal 37342 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 E0HkC$&Hw-a diff --git a/raster/r.sim/r.sim.water/testsuite/data/depth_default.pack b/raster/r.sim/r.sim.water/testsuite/data/depth_default.pack index e8831bd0a23787a9d0df05bd97d13c0a8e9ef266..795cef5f6bc8082215d21c12ee72c4800a97ac63 100644 GIT binary patch literal 26764 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 literal 26683 zcmV)bK&ihUiwFo*X9{Qn|72xwbZB2>WoBV@Y;-PgVPk6m?7atcmDSeoy+f!ew9spi zs0ZPT_6OcS7}nDBV7^i{H?v79Nu%j z_uOxM<2~N-U6XN+3lg&Tv*!HI|Ez26a^=gF|M1huz8^X+~xxW6p)z2?5 z=pTRP`~H3b{s9i(zK*}(t5;ml$R6_cj=$$uKn33}Jv(-ZQvRVq!NL9k0ihw~LIQ%r z{3?WbI8wj*tG}!;$HO1!rgZ=yhfTv=w2SQ7t4l@S*vNJj0zD!t`i2CCR`3rDE$8PE6<5*MuN)c<3ks|t zS_}x2biYEVM@(eT*8UP(gp~6SdG|~IAV7W)R4(w{uOR&cKcbOxp}`(8U1Rx6+0ZbL zzWgD?FD%5*zg$3oM?e1R=MmdgkQ*)UF8}Qq8`UnAuTuSgs{c>*|EXX9-~E5Xx}SXB z;4jbrgZ{<;2l=Pw|9{C>uh@<~EBe-n>KWC;gFnZazr=ZT(Mv^N|5P4G_5c52{~!3T z{@*{<|NkZaKlJ~}|NDjcrMmyWng4Ga*)#4xXaE1+{|En*{|^lD4@vd^f5lf(Uq4^b zd{q0cJvv6kd3bn`%KQG;|D-ZOs{c>*|9>a{@1N@b|9<{IDkkRtkpKUe`LDp>(129` z|M%hl)cWuLG5-Ij`mbbuw;oY(aUHwHwr-=_gJn}2f~o#L zHUCS^|5CsHul4`kdqu|f{2#Udf9wAP1OM6o2LuJB`v1S;%detexuD>%fIv|~U@+sk z!689mLH-p}yMC$uKQ;gVd*=V4{;B!@-`fB8h>UF?_1F3T0Kb3n|9+|d|1bHf^hw_e zS6MH&%djxj98&#%s{c>*|G}yC|G%^UkL?u`)3!^u9{-c}|8M+%U{HYnztsOz@BjE~ zzB0NN_xH^jXjWxba~q8NXJ&0~Rudh%cQtE2vko)sc(cwl>mswRH0vg_?lS8kvz|2T zWwYKk>l3s7?po8PGiw&J<~3_kvz9e$s97tUwU${MnzglAJDSyuz^5H()=_4iY}Pqu zU24{~X5D7iy=FaX*0W~4X4ZRVeQwr2U2D2bX7w>^L9>=LtG`*p&05W@=Cppgre-w& zP1nV&eat$ucAV-rcO;X3cHZB4#aZ zRx{g?zLHr#F{?Rzn7*Z1+ncq!S>w$*!mJa`nqbz&W?gO8EoR+q)+1&;ZPqJh{l%1#SNS?V^gVlfZ%dDMX|k3~HHuXK{}=oJ)cLRfWBxyN{wvl0 z|C9d*4`LNvy8TuD-~V6cze4;|?|=MDzWn`syL620)iWwC)!bA4e`@~!chCP*?|=9^ z`~ME@{!{kJw3SnkoYgZXPfK#-`) zBd%+&cfJ+Kx1u8BdfLAe5*W(2`b53^tq{J|wrfnB{Vjj_dylSt{>$H^%J%W?5f#@p zrXqj$h%FoU?q6L85?%kktiOkSDlMvAMc?35qDsyGQ~m${Q2y`o{{dlssrmok&Hs0e z`48IvzxDqiLH~09V?gTs*I)8g+?P8ZgFXBz1_TG|+aCSxOF2V>!h{q21Nn*mzn{nd z=I8u=u=%n4$S=5pUr0qi`{y42_NVf@_AC1bh57mWhxiA`PyGWz&F}u3pRxn_o1giY z|9qa!^<@9}7pYdC>i<*yf2#ja{d(8`NB_qzfc&@q-`_tVFz{dQe+&&yz5nqq`TD2% zZ+p%;-OsKygPH%%xZbsTWOc2c(XQ3&Ti5Ds=6|!8`Q5B$4mx{9*Xpy(wdOQ)+PTb} zcaMlqH?FmmndAMS zgKI5)$F-I<^U~!K4MfeQcm8I+J21Oz4KmLeZ065HO@XY!1=m{9yiWKf*Q%PhR_6}a z`k|3)>Ffr zt)CBdtqqM_8xL@;<}n@3%)E39U)S2w$hWn5&It4VZOoi`TQdh9RmZhPn|*gM^VuEG zyVlO;JV49?*BWc)w7Yq^*6#CMYg{=)J7zAsx7l|eBd>mD4!r+P*E-;1*E-P1X;5v~ zI`{|II@D}zSdwcUQPs7MG`JjH#FNK0U*p@C}3Khp+v1>!xajtQ?t-s~iKzT3rWyYsHVvWaY}ZH-7Eq z@Zf`;!&`M5Nq29)2-v{n^*@gdt0A$xzgynPr{3CQx%_2eqH9ywD5FCa);+D7n8MO{py?M zg-5-q&kw`puN9X^-jyFz9MkF1zNh)E49TBagRgs8lN&9whTPd=eHgvQDwTG$mG9P) zY*`wHzp1c3{B6v<@bkS+hszeimjqXn*9dpES{7dSM3*it*M`rjP%r%Ih8Fwle`Xc! z_&T?vYppkT-(>bYxOvlp>H|t%-IpPJ*u3q>*^}8eI(fJzb_xx__uOhf*MRp=H zx2TTRnS!sagl#>;Z}|9FVawVg^zaEQyu*io|BQVjgXg19SZVstvvQ~Pu}Uw=ZH4AI ztaaGbFToldP|6xnbAYw1>2qs(zOB~$51(2yUTm@ouXq-IKV}o#-I^vI2#BN+^iL(K zB4zX}BDRV(?yfT5oo8L1bJALSA)hs>=I@sBDr4n+G{wrEwE=3?QUnjHt`(D45TwW^ z!WUIaPRw2aDf{~RrWuxFPoc51j$PT|b-&%Q4?PQe&Ykq8uH#|f&a*scJ__8td&LO% zA>)5qwY$x*?&)i_NsNd}e*-<*ecz%-RgImoZs-&Kh5sfvDe1ED7)(Md$&G4 zyY)et6cPX7;W(8|KP0a&o6@X+^~<~R#Nm^FIxPazQkHE!NmIZowDr8zab16F^0I|m z+9*L3fa#-za4}*L2a*OIhy}19a!|BqlVxSPc|#)^!ti{R#~QWZjx~PBVypN^>B7&t z7qikQ_EK%SA64T$$7}OOFG46<BK>!&&mkhX|eq$ID8UIf$fsA}kne9jivDqB^4 z&ZY$_#%%>Rt6|khK5tdY8Uo%?JSdS31E-eD>_XBXTg|r&YkB^ zt9?-?t+qdu)0TtHKiu{S{D>S&l;4Jscuxc`tRiXXyf& zujLm(G3uB165tAWL`_(d{B}Wy&(yGU?ln5cZA#y$(VV<)MGy3S@_NyO(ii)lA39lC z>-{!(7FhKv`Mm=r5>ISQ@L$)dZOrwT74{bC`MUkh@EH|9I1}6J_k^ z1s9?Pf)ub&BqB0JW{6khCr^v;p;)*PQx=J1SO80Ojw(d1K$krLUtlX*L#!Z8yo>e0 z_py4XMaF#wNK~~sMb)kyacW<#i|UE{Ip^{LGo4-!Lba_34{KSA7OkN(vufHvl0sr4 z8pJHGD)^I!w)`(`M8cv_a47;5v(Y|6XbN3oe_|c-tn#l#sce!*m1ijA@GO0!bDy2Q zkJt4%^L1jqN#{r9J@>lwh0JI6oE|Z!?3NP3N))oCTF}F>B(vr?tO0uE4Iwjp2na?#Ko;qNW~6U6 zr{Rj(183QhC__jA$%6u<2|$pBI6e@GyJmxcPc|e!Q4N2*s#YJ1wk}k9&#GySBLGo> zB|lebngnToh-j?9=hmoa>#dw#O;H}YM8zUN;TqTpLl6XuIt}%UH$|zUd;zWe4;?^C z#l(#jjX3_m?O@whX=C!N^S_$meyNDVgTG8OH+1B)9WC;7iaa#*Y?k;kF`j*LH7ViD zcJ1Z(?c;~+&$w=AVo>`XeIBe1-oByr+TNQ_M*sOTX{IW6`iU)Y z-guQy=YNIKTOFRAg|snpZL!dX=vH1`tinWp_(F7nxeK@vs;E>nF8>OtivHz+krxz- z0&%tyR=)4+m!|66n&H2vxs~T};$ZLW-O}%HpZoa0w+USX%ICNmd+AZX9o-J6nX@lC zZMVMn>d*12Z9{-zNtM_ftQ>QI4E$vaNJIJ7nJVqBAmY5g+4a?h1ECXLtSb0^+> zdH&d(T!C)35C?iVa%9!vAc6!<*d#a*PokxWLSZS03D^Qdd_R5)7QovHP#_EB4_ZZv z2ot;@TiKSVM3jWH0*&mPI2icty*SmncP$@M78UA{(=YE}&72@~fNH3+raNk_TYEv2 z$Mc9PaI6qH!NoU+zO}v{P}^$Kc^sJ2@eEcaVit`P?TG&2){GZ^Kuz){^289f7(ReN zO@$rtvqo(@?;R79zmLxs-};B>r;KBZYM38xu9WajxAT?+Hd}D>L=ZXcdip)OSY`1V_J6YiU1*ojGbaU00Cc= z=VfmURKpk1AyL2v2(f1Y6G6KEU6H&f2JenPdH?itDLqdl3^`C12?URN96|3-~X+uWMeHUl<;wsi&r zfuMcFDf$H8Vm*iydlLImo+XQ_5;+f8S-p!RO3^)DU-(`V8o@SX#-4;+`9}gU0Rhj$ ziwk4G#5`ASN4>pgGIkrDKYr@+%V8JOEEqR#ZF1wJFHZlQ^x|Ib3bSXuKVeYBi{4|? zuPyRq_{P@fYez+#om=|%$9L!3@{aO!eCwmF-1hB;EVZW)Noiamdtkyo#qtm{8zO2z z+_uL>Ud?^#nXmbccucxJ6vzgcq=A6qk;#9LDO9wjVt`jmO3ignAXK`prs6ssu*1`&cl zh}f3s5gB83vRCCS)ZBXgW0r73_8L3boM6egX|@Lf#Rb&M^pVvzQ(aL4SsLLt!JKds z50u@}*yr)*gD)5Ktxz;EYx}xq-s~PTuWVxL7jM1X+jf}Wco0I2P?Xu6-iY5Iu$OaZb1^yFSku7LQEdKZ>LKw|! zgoi>i*s^Gxu$&+{?#S@mj!K>p?T+lYKf3g|fx8c^E?cJduN|^kF{f5;d(&oPKt#LM z4?9*V@AD#XPx9*#xxQ%CxzUC-MfOanIKKI^47RY9r{i-U?UJEVv0oij;e2pf?M5yk zktNZDB!c2!>VTDA zkfh^jaZ}p2p>Uo7rDIpPFjPgP*15z~HKT2iTJpy=Yi+GCYf`r9)`*2wtk1^=TJ`;( zqa=W$MMppc#0Bb__vB%%@#S-=xNGUjIE4RrUK17xOd#<&W1neD1R_|AXj&dYv`F{| z$%2tGz* zgCp4`Fei~S$q9;--x3X2O`n%n)3$wV9qk^0SdlK95lDk&j9UOexF+CIO`652Im6pn zD?%f5wPIp{5!T-Cn_1IJE34|32D)M*9G=3*!p$n=NfXuR^`~qCD--C*!;t)-WHCee zrjD>L{p?FrE_ebUcmlCkc@!QU{gX#lNcu9bqwx=~E+iD6Jz#b4j*nYjzO;DT+CyGt zW`sR_nCaxi^_MT!jX6~4Ol+=h5z7~^&+qf1VeVE()v$BN&dm$#wC-`W~90VyMKo(^0>dRVAP8bQOFKo%)O4~C!6 z38;gMMC9uIu79Y{J&qs_*&+r*-Yg=9)9?ob5HOGgMj##JMSZkREy=V%y>N6=Y2M5R zsn+w8?^(+huhtH>%jajc^lfhlTaW9rRkgYttt|y}6oJdP1<^Pjq8ga(Nu!b0v4Cz? zc=OyEY%q#w-S*0^!i;8Afn82V+qA1z4PKk({_S0}dN*m3kgoT>0e_~Cztg>R=kmq7 zmyF(j&T~P_!*AA%UohqTv7IBmZ*{Di!xs5-$`#t@iD79VcVDKo8v%5Lu&qWFx3-_# zuf;A_q`91m3hsuq8QDUHh#c2rM;cHR)PxTZvm|fJk|`0=3R~7z4KMRM1q(7_SRdP$ z4T>ZXH9*8L43QEi66&D*DG6uQo3)Y7B6)A9%$r|XOWyBbE!a6ho8Ll@nMRIqhnn|j zp(HbAj zymNCz$8@vid{gyU+1j@kA89c@>5GU=H=55nnCH6!EqBd|dQ@yj@|B1)wN|dJsrEit zv-eD$m?p#C#rCu8`Y8mIIs{uW_#=o~Q!Z{qViV;U*2CJ|YqPfFN|WAdeus0xH2@Y* zj*RUnn+FHe0McX-#I)K}s2QspyD(2xrSey*@z4{ZD(DmbfX>jc9r1|B@w1{h!lg!6 zJt%Hy{X#r5UTjjye}1nXcr~$p4qsxe{(P6UcxtkBzfnX=@NayI_08b=YVp_@t52g3 z0Xgt6RTgXj`V*5-&Q?t@5seU3Eutq95KvKAA@JF`uV79`jauC{4W91ZZU6ZbUe(WB z9r9q+(F;i)b8`Q>?(yvo4?q09(2)t1PZWC7_S(U%m8*8xdOD!Z?t~QL_SPaNK_LLb zeyIx1Ip0*fEqN%szRFg3oRz#GN*8>IRlqj;#_q+?;B6b?A~cZ>!bTr3Jp4DZR%=!2 z&1%(S^lKf;n%cP58w3QtF$TOWdqiM(Fbodk7A8Xa^-cwAS15!aZ!0gPMt?d=ZK*ts zO170aCs9@FJ{k+;cSUWgd-ga}f9$?{)ap>-m?lec-zwXPudO}ZqOEaX z&e0hQ7$xfk1<*HQL+*z1wV2SKokD?oQ%!^mp<{_oRKVqI^@;!IjUwlm-ogmPo|!4aWtYGiDson z{oAGSjfimDd@DM%!rsJVvuj8C)LQ+>b940TwbuvTs^GUVbgxgqPene6FPAgjJFx!T zl~rO_=uJdtbql>~ZF~KmuDlCXEB^+=txb8>TLk=|42Fd&5HC>`Z6#urh{GjuIa+Nd zb3;-96>R`o0q9+if!3j~TWexR0U`m>4XP1&Lm;%lCclaYh9>wIsf)S@nf!k5uZpBq zPWPkn&U~kyI=`Ld=e*~uoO$*pIkOySrxu-zvtl!s=A~Q=CC?%zV2xb3MSZn zv@U2%aI0f&M2i~)0ut=C_|Q)qEpaGRA`XYNPhKInqj|=yAEkZR`}L7#0~2nQU*CM+ zt8+&Wzj$`j555>RI>D`Xa^bBRa&7g?-l|v59lbuYWnElg?UJ>f z#p2G8@s{I%lJ}{Po=sO7c0ACgi>4t~WC<3*ptwart|s#(JC|7}J1rz+M2L1*5JHDb zzA6x|Jex1a@9>L+F@O{9LMil_gkzB~0>`2;8F_vA*Cw_je%Mv3ta1t!{nWtM8aAhw znl^c@y1b)|`mjb0HRi%2RblBx<>q}rWh}W8Zz?(x9jluShC6c|N~|>GWOW_aDpGq{+RKwR%sSvpDapz@XZj zt}h$BcBotMjEa>G@9F(pmaao4PD%LS{^B)5Ixfrm4z%}W*J4AA*e-z}&ms6y?|qg- zE$R4NXJbStkT78!Vh5C>B29yKmy=kQlpAJE?or!%*v^7SwR06=>$=g_h2yPXnntM1 zZYN0x*^KFkYPSf&As+P9=sRLL0Uc_P=aU!%Ly~w%Mg4M4)o5E&`xaM_gW3opkt6b3 z?X^s|4-ptP1yBj1WgpJ?Yqy+hgELv*cW-G2PzFJ~tq>bkG152!A+cp3*eLH*_MgL% z#pi8cWNEj=ylWfPS=GXGY%YDq-<$+T-tj6&9d~hHdTCD;%ZjE ze73B6c{-N(XgL9I=m9vH=B`?Gca_>*+E-_igl>`}gE)v82H_bE*%NEotuC@HB>Usq z1nX|KIO|^LHP*f=g^39$)GN<@Pb!tgC*Uc~mX?tglMHzJN7*@%uVp!fS~5QKASC>q7%r zpF9I>6mDxq;v*G&_dQj7;a#*W{3i-WB9P|F6kQX`8V)!7$?2{IdSN2mv&c}_DWpusMi6)XWIVJAueSSO9C z;m@X65t(M_+(l$eeOH7ko6^m|VxuOjb~BRI^vzjR!lq$r#^ZRkqy3QbUyZ)l)$h-an>X(5bSPWrb!qd4UaLMJ{%rd2sN)$=6?&&w z^3262WHQh;*$Yf1kD!)>-hgxjKftN*zU&H$gSs?@@dfrCkW zbR=$YEJzXE!)9V?@+(Xy&{d`jiBT{#f?GxG4ffU`V9V)fo_0q}VqUj$B?`Rv=D~!b z)4Hg>LwA3czE#YdZ^vKRb0%G@@x%LMuGG&vFg$yxSDSsGE$Y5JWoYAj564H@wCUh5 zkt~Hw7+8W0wJYQsYs@dJbbMcRO9S2T!;=$l6PS|X0A<8#HVM!n0DESFI1h!0QZ+Gs zdtwdE1M+X>_12-XE?BOz%zvwV{!CDLOYNsIpq&LA+Ntwaf)s5>uKJMxQ#6dEM8PCx z_w(;j84pHSYj${AUp{p86EHV;$o9Y@PLf?PAXX*cl}9yN!t$U~+}45;f!5ys*9NGD z)_3ZBK1YVBmzobQ+h#(>ZX0hux)auRi2o0R2hVgg8gqa6`hi>Cc5M6g%il|{s(c`6 z{LRk8a&|wLcYi~--Xr6;g#`}V)_ZnJR@2bK(KCx({MD@*EWYB9DQZekYqk8*XSy{_ zE040V-Ejq^;99m0q>%_#3#3ghlG1-bX%d+878*{X1h#};L_#JMLH;5_)0EWF=ct;$ z%O6D$B2K&Fj4SaO5@G!@?o;MItRD)EQ{~@lt(Y~2BY1(C7lI5b~Wo+hr=VE{Fa=*M){{EihBhGrZzt-_u z^tFv6JUwrF4v4ZYOkQ8{bj*fztH+mb`*ZZ@-Sgc>t*-l|YUHk`W9Pig_KKG?|U5B)jHa!cEuG8W*zK8a?kqxU0}6PeMXN5nG~PRVJjPHDvOqByHsO znz?pFhN(=sJ=LuC<5ZI!)xk5QhtI%clM?|J%nL9;ZdA8mXwf+7!?iM9DIn^&M3gFz zhU+6|E0Obna%M_vz1UJNkE8jd*O?xVC}-_@+BJX3!4C=~93OV`!t57wj+C2zzRBRR zm$z1bd8ka{o&#kbzt{F=QvG=YHr-DezjTJ1=fjjtaka!9IZ~2hL{5!g{D#`!bXBs3=$HkdnJptIrt+9UlEl-R(DzF-=Vm)gG-Jky z5C`^yn`Pc@V(jO-CW0zVpGC70&nk9fLJ>msBdd2>58r>TXYz>Za0yr!$(Y0y>XRJh z)$KC-wM20Z2pspo01bpS_QnF@5Of3ek+~oY(HC{y4NaS>59jQp`3Zig*_x3S6A0ql zRnu$PRpq8XXL02A8PvA?+$I~3?3uE)Vn9I17aON9Yu6`tqcU}(UQ8cSBYbC*ku9rK zNEw?6)-g7EMvhP+ZM>nm%cy;!`*nYB}mei#4IG9$_7;8tt49@(gw>iC!cjcaUto*cAhRd9n_(f4beTb=yNl@%#N3O79*`?Bdyq+P-gL8<%W=BiFD ztLuFeH2`$#F$5=Y3$_#6f2HICsq`gaV%8Xd$ek8-kq03%y{Z+*N$4Z@|8reJh33eXioDH`nD~U`h!GAc^$Pz_d8dss^67PPu6=E z=yI=3=PsFktkHd3>VjWtxAgd@lDp@PlpUk z^G>S1B)b+Fn53X8IioY{sGHXIX+3l#1yp!ja#!$xPXw=a#fkKa9-bJRMyH7zMH@N= zMLR;e5G{p5SOO_v_hJF|Y=kQuHqB4XvWzKEpOD=PKM=#9b99Q%XHFYp%`LGM0>cFo zoWaNVZ%F|tg9wMIC%@!UXO|ZyaKdP)p!z>Lrm`1`(~)zds~*}yMYsgIEAI_fj$eyu zGQ%)oMbQB&kUh#X$s6Z#_{Obw)QaC6;y&Zdy>>GOeKW50+zMZ99KZUv{6kCn+*=+u zvs0SUyN0W~J65jVIc)UuavR#@O`aY9PO2W1T@xOnm8Vy0T0T?He=ZPivSdvYgxo?Q zvT4LbLQi>_kPms;y#_OL%%;FA3dB}O z?*IX$BwB#q@s#)z6bKhJtiMPPI+!Ln)+el^ZAf%v#wpc%YcDvxyIoWBq9;QpVo}z_ z#I$Ne^;0B6qGQy>AoktuRdg{?;3V%R7?9lx1WiDb+fgZ?(4e?b_vZJ)&Zj9~`bN&& zna^BW@W~&3B{O%q*mm{!Prius-#n^l`7W`CXXlHLh&}$fcl&a?rViN_o%fx&hEqP8 ztk@+ZuMaCVREwG?=xtHS15NA$tTADL+(nX_KJ6wAx&pLNoEbjFQV4A1IgdQ-tT6*# z=*pNB8S#R0*_JDpAPk{=jxLe0hzpQP?1M`nW+Pb^`_SkU5!04MDR>b)I1wrBWiow% zvzk$+wA20cOzY=936LYvHIJ)uCvQ+w#p0Qj%I|Bu@AH_;FbnL=2=D=PJ*=Zvu z&_a@c-i{RzB(i~jsjhJnK;k+TkiLMXcGL(PU`nn-1N3T$9br|J2<&kcNCK&%I@!Lc zif~ga7M+NXkmq1tg*rdXL}&+6TBdnQ(L`O$Q%tSuxDvBM^6uNWsR7AH8Kqvg_5x|S zwq-If?1fnxuqfiCJO-JIz}X(`FTtCSBQ(v!QaetDr(d;mRmg*9^ET25!d)J; zFI~IxtGbVmjBT3k)xn4JejHg~XujkR+NBIfdOF%=*Zd*2q-J-`L0Ql?ZW3|WO)_|xM3j>n#b`(B$uJaSPq*P3 z5Ipt*Lt*{64rZnW2uL5&qK_atM4gOTQpXWv5E?`FgirM3C5)w*GqJ!3_5P>~A~GV7 zQMC@L=p!YqL$?R$5mk&-90q_fJtSXfzZ^pL9-h*my zUBCSNw(obGPi*q|)ZM(ZFMiN3@|yR9yB%V-%>I7&^%c8wdwqQTKr4R6xP)V6DmQKvRkytL>2|0kG_1H5-OXZTcQ&f2EAZdn6hvj_D*IiT#Erf zDR7nPI=HGC*S$0f4BMgnH$59Ft3W3`jF0^gND^)`T)67hTQz@TG3{KTJ|yny6N4?; zt?XI!W44^bQ8g+#>($#w#|_DU@!V%g>iDp#;c7$hNZ*Y<_l6();`AloeqOmN1<(2F zZ1X0sYOjBG_EJjh-O|&MHiv5b{aUs0N|+9R#QN+1_7mk?-Kl{HAPoA$#@;jtOzA;~ z!q~T@28i06;?Nw38z6cy)3=&0h56KydHbzh6I?8TkZ_WCLAZl`671eHWDCk^^^mE9Qxpnxk(D45)dPFUb08DskM=~0lKiVNhnuU~&3a%tVuQ{! zx5L!J1(&t0nQn>T0!tG(E>y0EUWH96fReTHgl^RBuqNA-~aZ1k_; zdK}4~0yE=O+Sm{|Jck;nP~+ObFI0%CL=}{VN7ibsnTiGpMMiN^YS5k)D$8ek!_A2Z zvPC8+$l4K}Jrs(VM8PP>F5`)=%`^^D7qOyEyaGp+$W6p-QQA8rfjWGhKfX5=3PemH zfnW+pwbYerlduv|Iw~eoB80#o!4VO%NS*pLJz_ix|4be@ zvm?v&?)x50?NYeS2-U8|tj<@0UOvmddF%JSoShD43j1>=*SvvZmZ^Y8@^$Mn&G=tAf)0u2n^1+j~(09D&JT=dSPtRUkrpuod)+ zSdgyW?KinPvOt|8EszR8L?SegIlzz{P~7gIXdrO#i_Q=85|fuLRBfxoDer)+I#3b& zApH_$s+&WftLdfEU<9Cw(IH&3ZDb&kJQ`a|XZljk`u%NFUHR zcGvj}g);^2^osc~a9V?m^=%c5r{-ckZCTv9ov|B7R5XU5b%tRvXr|dI0F(cNPXQ4T zf}S=`>yt8%Y)avFj;S?-9PC2|_&u=#)oe>q6*p^x6??F-J|WZV{%q|@sGt!zLBo_F zaH13gXa?E*CYUtIf$LC)cB{f_W|0|+q;JOTqi%-^C{FvZ9eSuxlUMpZf5MW~T| z$8f$%G%U}qKL2^Q+O=r2W+rpIL1()2&tKC#O#F%wh?Aj5gf?iBGY2ZJ93W(I6i%2{ zKKYM`+35qeHxKX9`t+N+x0XAyM%;|a&}I9kgwlz_)1(#jqeXQ~!`*nTucGX{WRRy!=NE8_Gj35^Gj#npK-f*sZ#GuAV15FSyTSk-p{0(+T&rb$N>|^qz!sfWmn`=%2t0q4&$3#)CX%=Z2 z3Fsjn(F}tl%*9}hlpO5bfB=ah4Gu=Vny}mH9-CxNR>9@_N3K#evQDt}kI!J8DAz?7 z@5QKew=%d{4K^bBSL)+$RIJBS4L>0%AIDn1#^G-Z#O#>;`_Z)X@;^F|bSC=R=;*oQ zPK7rvf93aeIcNCpOfCG!`~vqG_UY1a7R{ zRH8JqvROQ;tA(KH4fqqF*e!k7pCpk6?b=^wsMcpDXeLH=rc zt!mm==Z>Dpv&w5+?Tbg#4VYeW)SP-3=U0iDwKri=#a-LdgdfT^E&Lr}f1aI`OBJh} zN&6JA2Zib|OsJW3$qvE5sJuH;1<59C(YOQPrZ6kg5}AW(d_I$AjePg2y(2CQq_7=x za7w#YgJqG0U|+;1!i0}7A2dyArSHy>+T-Fn?9mK7GVDQuOJGVVABKjN0XUQQTO6mY z!z%__uS*V6gD3f_#i!SyUr{X+n$rTlR7+3p7Oda`YMrafaTRUS1}9LCs?|SMpC^{@ z=XUJO71PGQQ12TPZv8pwbx7~cfg3ZN+}P}DmVoHkLR}*wRIM`IGM;D@TjoK~{(!2J z++v%om^rgyXXg+>jkxLlIdx%+wI#|pT<92*X?wg z@Vt%IB!63P>-~xQFI{@Gb$5f#=iWb3^VFy78;=;cJpY@`_fv$u3BRcBELf-dkKCl6 zk;BTQfFRRkDz^X9G=im@)~yz}$VE_YE*;R+Vb1SqW)*SD4roB`cTQ4Mr_M%l0&iv{ zfGM&@jdYSI8z60ao>pWHiHJF&Y*C#kR-S+YvN1iKW|>q}$Cl*I%!7Zq)km!=azhJN zlt(#M!cJ$}Y;J1ikx9Z`Fc1B2rjXhXXd~te9A;z+R)q>2%_l zDtXFR)efFUB>UHnkSRQ*R z=E^p&JdyL?9e-VtUDE{pkwsxin()94jK`MEVOi38B#3;Gt39kLFa*SAz*r-T7!JgO zW_}y|BPrPz!z-o3gVe*CH$@djhdP{>_ziUuOv%%T`+=rlcWMoyCJYG9w5Q%&U>C^~ zq>6}iPyyD-6*zJ^J40{n=zi>0fZ)gJ;q0xlr0r~9bb;K}%vGN{KbSgC*DQpz&@31x z{~A5-0*Yr(oRzrvaH{golPRa8mQTd^Z(ekZ=yUP==d&;N@bT#r-Tu$oD_3rqpY>AG z>`~ucI6w4O`>elz{;FlK;FI?kdY7vZ@Lz|iupAt6(`Vyh#gw$1$xv$AB(ipG6{*_C zr0gadf(PINMck)drX#RM;Bc{-(<0H9!QvGu$4qXm|3>FKYIjT2wFO0ZCApCJ?kI0K{y}#GgC@#6a!=Wef5dYb9+W zX}vz);}F1J(WsRrr;mWYmPA@<}e#nEw1fzS%(Y#&yz?|cC6Fe}f2^l^X0Xgmm2iYaIhwzJbe67`Q-?Kq0 z!gXFj0VhUUoA$q!(*To({w}dSR!^#3lZf&#PlbbHwEoxm{MoS5?81<-#)PhF8mcG zn-f5`JJewaREOBf2Wg54(I7yH`@&6~CFO1uc!xP3VnmLDh%V&~h5yKn#BYcZkvS>er%6RQ8D@|AQ!f#ft710?I=lEiR$1;B(gz1cx8_C)z>(b%p75qn z<~N<5tV?Ru88O<3DyN1cN|&h9pLVBzM&{M%h>aw=z=KOTnkZ1#^?`{|PF ztB`Wk?*3Aa_U4lq|@)?E@?J-~i_@usp$reQuTbkxqt4 z2pQrGgr{v&y!q8W>*$jw*6wyMtZPf#GJa2IP^DXZOZnW2Q16AcRAGbit9Coa=y~;J zO`ofR&AY0m)jU+h_B*P5sY}-K78S(0#lsL?Nj{p*QMIVMTjm$h(cTZE{Wf?XJ5VOD z=+jp-RZ^!8-%ko$RiWtH!Hd0HxD^b$cgp=8%zy5q+X=7>v+U!_E>oG0C;gZDtbH$r zX%(b2Fhm1(Aw?8npCM~L;I$6FsQ~}6FT{>{jEXqH=S=f*nC{4nb}46>6h_M!uZlyY zoe#7a1`{uV{_Wm1*%0LbNDpm-56rH4ZZ1GV3-S};byXz(GvY~7dk(PeKbFawS#3F2 z>WJ`Fjj)HRb*>kxc#bIICq2$Mu);#saOf{;OrLiAO1SHG9z6-UcFIOo3ec!&3$+j(R$Zr4&sFKAaw#_h@ft&mSXp4A2Z>X{d3djy-E8DzTlVNsbs?qLQ?< z!8p~c`6*}6;IYn6zluRw=B6GE`L%8%$Ouwe*KoUOBWVIBMX#%pwG9x*Q&G=&0aHY$ zOqQA%JZ*2NKp?>6i%^mB>~&j5GE|>8wOVX#-d>lSQhQ9I9m*$b%1qFs<3j6p%N$1{ zc1P@-{A+jh&7vwyCE6)AwXNV&B^lXP&({~V&YT}+?srgAb~JRRot|5lFXc789fRsb zw`pH+-078#9z|_e=<|7wcXW_8r+se_6;!o-a7Xpk zD%U*%W;|BwfsMjDaFk$4J74r>4KC(w z;Y(~0E5laIP&GXG;&FcKR~1PC!LBKzFS;oh9RqvjEQUE$r9BSO!qki90Urt0asRu{ zlCPhsTxXQ7E|Bxk++%i0f?xYqr_7G{<2$lNw4WG#VDOyHUtf5Y>1dy{c@};ax$EfO zGQSUXyS_h7lg|IhpY))d9vWeCmA=C8kLy|+Zq3xB&VK9zC)fmM>geE2I6PC^f#}IT z1&cZ$RxbO1xj^;pL5BJ{if)!z46x>)xeq`s-o(9)GJz6m3q8UZ@(Iv z(o~?}gaNQK4l~j_;?NhNBBCh#F-ccyJG@(}zQtlNiob>k;% zMeRWaJOp;glXR8XiGWx%V#b{XSt0;%hF<06b2$d>JGb{}9e2Mxd#+}2kM9uub<$}^ z$upZ4)M=FK$+T~$=U*GWs>r7G&5tCNxfSu`bmGKCm0Lyrqaj@fzSpH5E*Gmb>8%>m zs=vzb^Nn3zfos4SmlSe5m2d~zH;2}-dqQ~v4uK*sH1AmxYqOu1^;P>(R$|V&+E;y3 zyp`(ac~;vwfw&z}(_IpWsopl5V*R#ZwN?pQA9txEyrqwq(3YWX0@cuIMk=76LK?Lq z#>UrmSe+6XfP7P!b4}Hnn!aW=5v_d^Ms$E6NdYjduw`w{NHi5c3A?me2>=LDaXdI8 z0y}=;t3S@=aKxYT3BTB6bM%GQ9lE^AKd5?mXm1u=;Mw z41M~)N2}&q^4~f_bsd1ARGL%VBuFKZc@}sLKLup&zR0IXZV8RBe+*j zIUbJoQ~Pf$S3c^-;tNea_#zEEII962?JIO7he0Nv{dZ&iNE zZ#v2c+h_nw=Fvtzzo)$)(8;e)=Mts`jvkzG9}#H#Jm_85^wC zKX0)9c#{JHQB%E2sY)&NaasFpgC+x0G`H6DY^1J_K5313euL9Qx&}yTkqnzbAVzg1 z_0(z*b0i3TUUG*%X#xKTuqgW=NIWwfWSg70Nsh>1=tFnqzOWBN*kUF29ft56=VyqG z(FkA@K;rBm_ap0@kc(g{v*Wh!A0B?2Y85`S#{uOh8rbK; zpfz<`?%rMV`#P&m|2Sxt3OpJ+{f9Zj2B+wtxR;}6E*%I^r(kcyV&7Kp&P9qUaIlZ6 zHQ@wT$XI_4t)i23CJ2~xz|bK?LLYX=mLd+9R5`BaQHhC5m1pG+x-?k$kKQWu+8$yA zYh95p*3vt9aJPCEDDAo^Efw-ba~w|V6<;BORF?-0Q~|xd&?oaJwauX2E@fUO7jRD; z6GIYaMq5kh>Z6;w--s*5b7B^R2~-rsVHgjFstF+pk+OyrRRvEq(Z`oKcCpZ7rpC62 ze#$2mtc`KwtnHq&t@AY!FbQ&dAvd5xFiwDs3**M4mCbtSXn`z}sW3_B)UKEyPEzxJ znH;S%4r=Pvr^V`+wW}jLMxW2Wf5?^Xdw-iz#obSr=w>%;seRbQ*w58_gX2}k7SFB3 zCKFY=;)7L%NqN-82RBs5z~ib?pi&cVmQ{(J+|~J;XVu~X6IJ~IZ`DNS7*#7eqrR_{ zyJl#>KlreZN)xxl`e9Lo9=keRY79T4i>1oc3DjiAUd*|klmb5c67VW3{XKQ$+711B z)D2-EA|Wd8sC29zT%?snW}Nubb?fIxZIwstZI!8Z9&1+e z348KfM|3t>k$GUB!m!S4KQ>gSa<9=4AqV1kVAAQD*8Z9=a7`&Ug?Ktn<<#ayFM$VQ zlIGIa$;xl@W$WJ89d-Bv4O0ieIkHj7P}S(C@7UQwd5#9omp?twfZgAkL`Rf2kGDR~>rnSfwfE;t( zQ+AQHYJjC@O_*|!h=VihUlbgwR*t!)t2M&UCc!ax4mfjs-dEjRI15b>sEnP|HQZbw z?CGdce07-v`Pc3yKmixHr1F}Oay;SajA1g;~H=QvMBT-etUaDjb zQEB#Hw#Q63?Zf1qx%U^ZLq1vG|GCa(AXJea-U2rdCleNM0xI;0n?wKy>R)pXA6nk| zO{oQ{RGHZt-hvP;N=R9Qh|VKX8Nng>4>iK*G_Hd^LbzER%|}1We(P{>hZ}7&Z425n zF>HIEH*KFDFXKLG$o6yF#|+HaKJ39i$`U!f9K~{Jb_3`a2He&+TE%8At=#J-P%+W( zfnLZcITB9P$mkhYcXLO>*+zBs>9=cTx^iZbFhNglaf=mmPz>lugwOM;z=!A62g7b_ zhOnIj4jO+4Ce2l$+FPy)yrX7JX{f&0l2>2X11`n5RM?9Cx^IHf;xuR~z$Qegf*AYA!YJjb7IVJxaI9T7!uxSV`NyM6ENIfZ?R97G zxbi16_L-J;*TT6eIm2mB$45C`XRES?(8|&1;N<3&KkDgI|6*VoEqGfl^geKAkoD&0 z7!FC$v9}II1?#Q^B@{6rPJjXyePs7~vmw@jtZ#H}P0|77uinQs*&}+IQeh(81sg*d z;#Qd$7+NJ(ohbJs8JkjZJ@joq6rc$237%jY!XhkBf-8arJ((#hHPrMyIK38ug4eb(}<8hl;ZvAgG*z|JZR=4s`u6fTMcDio!NzF&4 zgiha!YsjI)SGo`kN`c~~^DbMbmd@6IeWDZ zxR3<6r-lRjgHb|sAk(MOhbmwCGS=aHZL|%MNrPu{3~C3c6?>-4YB!?=scJ%%`V3v! zo}27V1VEP(u!-*^bcWk7Hgg8x`i#SN#HGVu(gg|1RKU;c)$tbk>Kk)Cc@{^0&si6T zY+B#*o8Xcc?*=Zp)va@>i+xuVj&J%jZs6?;pO$vi|D}BHlsa`;FUP)Ix9_$L&Mr1lYc0o$d$c~H2TRC%3pKl4h{5~soG89*KQ zZ>rQdY=W^u14FIj-Ir-R9^RPG8T15G%%p12SQnDsg*;T0OA@QNB%v@&*|lz6Yuvd(f%b zlh4aJ{jyc9cE5DwfH1#zd_+(#9r-dZfbH+unBTfltG&uv|B&_cxSMtRMJ^pQ9VruL zB|V<4(iHhb^FN%7C!Y7Li3&dut=#U`)u(*GE%UMGj*O@GtsL#Q)6>_Rwd-{R|3o=v z#w^^vgxho$P@F!2{bZ;^^)KM7GW@FV^wmCv?i%?rr2uDgD9vI-`N6yQDjOjrorJCs9&PZLCBp$b%}tg2;-Q4^XS zD*P7T{}`{;^k4j9dTn5-b?&Gsq*opnj=Fe ztd5-T{QBDAfbjjpHqP<=knuH|aQv|3FIAHIi*><<7)xxI(vmx%{QE))lW<0j}Q^&*X9s6zrt?1$`( zAc<&~f`AaIxvpBfBN7XHt^*Qcq@J^LU|d`ie%yS_gAk2`H0r>$5}YBR-_Cbs&E}}& zHe=8ifd!+>wcK>|c0S*|hc4xt)%?OGpOs&D6&ZBvZq2yO*%K2gUv>Y7Z}8S!#O-Iq z9Tb=d@`#D?QpYyb&_xc3&n~z6N{@Jm>riQ|MD3utdyd)W_eJIa+ zwx{*&xLLZ3H6v574qb8TB+gVY#jz^&!&8;M+ANz@QWSzH2$K=t>ym@0PIB%Hurtbg z^@A;{cEL^v5`o&cn3*w9U2cNx)*m^hb3?Bh5!OAwUm$dSS%q*TF*1mzq+#D;kIp!D zCrK!Q4Ri&a2r-G}NH&tvIl)W93=pYAUckk4rc)9X`}EA6m{oeX3I$Q2tQ?-GnoX*# z$~~{)<;Xwhn?-wGWE^xqy4|MBoxH0qeVAq0`SY)1&)56XH>uX5l(eBB#XkGiQO&AA z2ar!Y;$|K7Ppe8czrekM+91g7v6or?SF~XqdDz)nKm4J-lTzAEddlImVbDRe*_6jjaa1;&H= zNc9s67DWlV9QQWxuJz}WI5Im*u_Qlqpovz^^$CES;Y1uQp%9H)`?M$#7486ApmM{d zBiI9u+kC8pR?EKOo%P`gxKDH{HesyFnb|F;)AvpV4KJ`{RIEPDI#@0L`YimG$bJvaT zZU+V(cdjY>fiu6VmR}_-G7>i<5@9byTf?S!a`( zj?x$=BSb>?6vLUP!>s92Qd{AZR3JQvkb?tr`yEo7Jo;$6Hgh<7d}-+3KU9ModEsF{ z;(KmhwSHYU)B3G{eN}PqPBnRMIyEG|u(jv;9vunMiXr}E+>BVAOQZ-(Pep&Lsfa`l z*Gvh7>+uoDW+)8Nn#xhqOB2aEKHL`)5$AwUPfOuyxERJA|MNQc$J;M#nl z6-bJb7qh0*x1G>wG&IK*jb!^*5+~?uJ1N<~SQyBdUsmaQIgt!#M=2x;P(A(*H_2!Q zbxe-;9lY$VFEM|5vnVmJ(|tul^|RNiaQjLwJPb-^GJ(B7qy%%M_uO{cxx`dmD8_zg zywG>7tH5l9Rn0$NrCbOLAUW{RxcLNqhC=}77j6#{(G{m9+Pe2KHEUBFXS!WpPG_M4 zs#=XZI&Pxpjq)Vv(p?iwRxCpE)2w7y;{xYREXAz_3wp#@+qw=`HEZ03*X-+i?FNvx z7OH%p$o>!*;wk(gevtVgXx{Ymb&$?=f85N%HM%HcVq#idA0x(F{;&fe(3Nt@%e7!} zw@^D(YwpUnKLX7DtQM5dYau{NH}davI@aOLGG=U@S=M%SHY@Qq<+QB*;bo?hu3!5^ zmwmd{VeVYlVKN}5rzn6`?S?&69WPcU!dByb5=m0S%_s4pFg0=6OI2(^7HxT=hj*&s z`*Lb(K{(I^p$+H%;M7*5imP6OPBN>ca)%|VVsC!cpGpQIxi^Sb^uearbt!+}fp2u1 zf}v*S-N>*|mL!a7+mI7#-nnG^vOoL*dodqXp#fvFCDnU!KUhlGjq1O8S)#UcV$FhT z*GFDzNcBHe@4(sCquoVyU$%JZGy3F3_RVK>ZIbxmTA8lc2R9nvrd`K&bgN4qh-^_8 zz~DAG#GKSMl>mUFJkm8*bG|E~+y=aF{o2RDU60n;6L*wv&M5WZSrOGfmoFeu?T)qQ za|=;4NLQPuf1pNtyKX-L0OIt#9BJKVX6z9Z*=oYmlLro8D*Nr2s)v56b*J{K{N>M| z+|&M@26oS!c9j?_Uf#mxjR?T)8*{i$fNtF4U7f98jt$g_1+Iju2!;YnB$fA68Qc=| zNdzq44AiROWAm%NL;KkGRhqksfEk(xrg%vrAKJ{Q2Q}d+fFm4mE?ZF*`?{;MNc&4_ zQNQVG%IEEz>3?3}9QFHMXYbYR)OXoR>I~yWwJ;6MQ%h&l+#=+3$=9^k;S!oYf-d{h zB<;^v5sjP92qg|R<4`pfR_YU#XLSdC>hRaQ#nq%03)HISdM;WUXT3}x*=2o|vCnk1 z{&`L9e#~{n$k5C2CSO$h{X4(gI;*Kq=U!R5X9(Z2=~i;tV)MI)tXY(hsd(mhj#w|r zVc&PF8#5GX#A9oFw7Xk|Eb)G-PS{DOb79i-5otZY1 zb?WChO<002P=RCP=AaLT-PS{~@G3=i0SU3vly*^SS((fB)oikpERM?8Cv1GP`#@}L zr+Jl&mb_x;;>0(Khw)a2nPBN$GHN zicYK3o)bX)P!R36`j=s9Yu2sI2$9D4(Onbvyu$VZaeJ2WZuB>q+nRI)_r; zw{NL2W#+2=QFkbDsX|eO39Rgt(*7Vckc8Rco!Fk}hGdOop9tdGwWDfSw-9xzYeChj z(IYkQYA3a{UT*pV=tp0kNoDkWrUVg;+L+Ko`FH#YC3EyFVZTES^)I4r8i<+82|OL{ zK9%-8`E%9jBeVW!;#c|mw_DTn9Ps6<>K`_%@?nhMf|Lsyg^_&hI})|7!7!<+ea^%6 z`Ct0M$#AF*aMfVH1z)LkZFgw=abY4i6HqS|7p|(EAFLsadEoLtp1(xYEt0p7G2ttz z@IyWf-SVkU#cmF?9$&x4=TT^BiI2EcCWC$G0%BLuS-PphYKbb-_IFAvYQ?C^&N6L2 zbT+S9%Gqe?A>67!hNw$KkH6>g5-v;Tmakt`q^?^^fTrs(q!$!3n0`ET!b_c;kcZro zMq{}K)%AxmY&f`%k4CaTLPz!e`h9SwaVl8K?r7{@pvcy>>+hHC)PDWe4QmP=otI~0 z)j6-LCglyi)xmp1K)}P{d7ku&-*(L__mj=mKR%>I2q>p!WDsdC`_vX?-=7L`V+BYZ zp-~+Zw$`J~ldCS$bphHI1V<9YsPMFd^jQ)D749aYwQu~eJu+ucY5)@0fFWNl8Y#Z; zE}uNXJ*3vlQhyQ$rIaFw?3qB7;8@2}F>~HiQ>I0#{ym=(7x7UfYlnR3?9i^UvwyZY zwKrjzI-2>EzL|mS%Umy^RgRAqG?NQ3qEh)m4?TTI*(FW?c~~e>DTe}&ZK$CdHjmbM zIw*P_;Y~Y6;G?ExKcq&Ft!U3-=`m|-)FIu6l0X3IiJrV1+pE6q?0$bte9?h0*o(I?ezW1uP=XI|xcRHVUeGKRMFegRatN zNmLcjH`E<4;P_sVCD!BMV*1!3cjS&-xFy_t_LWuyv!Uj?TWzM$6JRxGigi=3@Q9^4 z`ozP~>wZ-GcN+Nw%pwb2O{N6F=VT;TT%cxD-K%ewBt;ZsMTGCg&sIYpOwC87P_iP6CDWVKHp9!vi=2xGX@mwsZ(K`6J&SCKh7$gP`V>V_J~t2v^KlNL z3#+RxLNnVb6V|O$ie5KBgVuYt7M-H7}F&0nSPw~;dgIPoXW12huQIEM6N9FdtL5MKnNf0EGV*b6&;KjXAEfJ zB7lHj#6OuK8XK14p!EooJ=n;n_Rs*J^(5dx|MLHAj!Fq{4yC^oGdR9Q-=_1rmV3SP zaNZ3CAKaZ8+&yFcUsha9y!2DQT1{?NE77`KmUqhCALY>aN7ED!%t3N<2}8J1VqdP zlHf{CN2?M^1wZRNeA9+bt#hx5j&6JLVYJ(T;+s6T2fr%l@9tTl(XFH%8>{8Il*iBh z@Q0LJr0pvg?7?y#-6k8m@XY&Ax)yuUCc?(tkGI{if z2t_Tb*6_UD6BDr57lCLk(!hk0$QYS=;AYxgwaPlH{n?L?GSM~rCY{Go$Kk?u)vL=X zHDy3MU8lgn>~nBfnLUbYKAl=u;Au&IRUq71>-j)6X5r8JxoNjB0gUaE98$a@5W|>| zyCLUy?irJK2%0rF0@|Miq?KSFvj7@+1i^y&up0EKa?}b`2@?)#IpPE+F1V~JjjlkH zhr0DxN?Ja{Q4CyAObUi-C_VAnXYxpuRm@pp=>KZ(%A=yX&iI%ph5;pt zg1b-Lj{-Bp3}EzoV+Siq?!xE&Vk|sj*(HlYQ|9fN#8&M)$;-F1LwRf#T!Bh{r0|G| zMH;KKZtAc-&g;j{`R-rcUvad@@`9b$j$FJ`HlgUij#W(&DJ9w63-+`NTXW67tw-u| zwN>X-X(Z2X0KIr1xn2>HEV71TZ2(>6!R~j8`8rI*ADI1xaV+|ww%kV&1=ifG()R_O zWMeOBO|h{DBoiCeP~<{_51NYE#%OhC;~xy?$7)oA-E>E@m`j0}Is%C@-~jA{M~ERw zPOx|kTN>dC!+VCS46kHO!)0&~&h&lSu45xQFJVK+#SZ|bi}ky?&m;Yk<^CC5)%N$3gO%9)i+sDle2=hYDNf}bHJu-Zf~P!j|IvgrB2+HeR(gjbGuTg9|C7Fcq0%x zEGa_`F!ULTHmHm!94OuQ@1>*8MBl)PfX!U6oD@3PUd(gD_k@lSG0(0#_v5oyc*h** zJK1B~JigH7boN<(a^Zzud;Tykb;9nfOAmb(He=hJaO?G{SuN#>w{1fnJX`oy(Cc@i zD;AF(-1{PTze7r;OF%>bS4qzY)(5LY%~iE*pr;q>J8&(F&Y#D-mxQ_Ev=b8`cybWf zB@_@<1nOaAgdUf@`N4&kvVa{Hms~{D)QmbgczJPd5I#HcaF2*#*_p>1XPr5{v1)1gin1?PKND}A@#)$; zZ}{l&`CUz|T+2@)`AG}-mBrF>i7}9fBn2T5DhDb8x*FAtctVIbirA3&z~al#YeRVX01D2CsF>-6 zrFF8Io;Xn!USV&7r7T@t{b)%yeB|LK*^1fRGtX2tkD_W|Uw)32I)@!hur) zG$e^jq^|F9n>CjW-|*htJL{Lu*j{CtZ;g#iyVEi2gW45StM0{w#Y}H=vox)6Y1)qZ zYHxU}>c(|l_}K}H1|$^Ix;VDv7&Xx%JW{N5=SfiXS1!CX4ZTlt_=ebF3@sx2;bCAQ z1R~7D5eRk^tzVppV5N}21#=oJ=%*ZBDCf%z zeJf>H#~jwQVi0#3k)oE0c9R|`@14D|j)UX{0o*;xJ_Dl1S8VtJZoq^6KC4yoHvBOZj3g;QBNR2-r5<6oyIvMX0_@q!C^;3Ec*z4Bsw;z%A|er{v=wnJ+gZbvr0 z`exU|VYPNo9=U{CoY;B-@l)IO*r4=by zy58%Rk=!*PJn0}6`4C35Eoa=k0^XR$cv2{`zW4tP+A8^J>& zspj>9Z$8cSAM7X;5rRQscR%ADDlpZAV#2f>lR-QbrAr-_S=Po_jlOZ3=XR_efr|cyYo(+SajPkKSI4Ty?##W1oN5n2U-oaA#?))a$*DB zT8JQLcTplRQnrIa*^h2F55=T%P%7sukcW^5Rs-gNZP~ak%RI!XoE}{4A>^lVSXkf^ zGzC*5wT(<8L<1rKW`x$m+zzO=z{&&IQld{_3lOI(u?s{KmbKx4AMsU$-f+ez8U`a5 za5bSZzIiXl!S;+c8o}uhuz2pp1@QSE%jna*Y{Ptj{Ij0ZToqMOgFwge&r0C|? z9Su9n_Fl1Ng^WL4x9`aPUN^JT&eo>HPn+-B`*Bm@umw#kCkB~YubURZE6S1kmLp&x zlE4U@aXFPxhLcg>f3$Q#N^E@(es&=a2e!rHa=F`4h9K~SL^QA#p%yeil?zliIWG_j z7yv>ds05jSx`DSt&q+*9jD^F4NcqCDKqwG)AY+W@NAv({8kKhR5MXR^Cp3h$F|pGch8OPSoPHtU+;MSa8^jqZs$AfYFS?8Z`c3*#?3E1UlE+ec_>uZwj)Ou z9!Ttn0$RWwkYXH5RPn)g8K*^Bn@;wk)@J5^9ZwW?udb*BZ_8|;J7Th zRtI1a)skg}V~!+$bYzMxsb^i~;Ry%B#~MsE&*W}wzE^p=CdYf-{qn>%?RzEHzY+Ci z$i<{BwZlV_|1!%`S+)Av%t1{bMduc7tDJkK`FE3RTRz`Z?Mb^DOy}u!2RjDCRbq8X zaBB!uKTfp}D)_Ad5GW;NeF48 zr$m;piOeqj3tglS5gqqX!f2m^nI|qr&e2C! z)#Q|0Q(Zle*T497`RaaQ8={tfSb6taW}|h>+fmb-zBqr``9K&6wFdtc#Kp(OKlZe> z=yBDWqk4Xv&oBhwhkhCi3Fhx!2FF_oIbl#WyU14 z#bPv>k`m(*O{Nis(wBA0PvlEv8iC%|Y-H0g{M zgTZ7@Ot6?NB>xGCq!JXvPbvS_e2>-V&i=vo{inbGpTe{}zcRYOqnON!(e#KZ`4OW* zF&Ru2eULHqey{2=>c#WxJyx$z_2})c0>4kO*&V9)5k+;Vg;t;4?Na!E6$O42fB#KG zTz-dR==XoP0tYXCz=e0ZI=34{zxBKX&BcCOJM}{j-YZ3p|6!_JnI<52` zSFVDqs>jPrmLx-xKF99~e3KzwH9Kx7OT?R@;9}`1?5bk-sew1pUySRz#Qm8uOm?E`yK%ovw20$)arHCV)d z*j@CnbejNUtHTTiy}s2`eTOI(6MPw?bk@LRk6 zJ|bQQ|J_74vf2DzdT&N{y56nYZ1kRFC69=#gzh;R#pL5>W z+{E0HXKG?$*3oWkY+`OKqGA4jQ~vuc^8a@{|3+Q)zpMWLUHvz=GViGWW?l9FuUG%a zPaHSO-G01_d)rv4k7{$2eyF*mmm(ct~xl>h&x_1|k@h!4{+H8r>DO838F zbm@PW{&(qrm;V1p{dXGcFz$Eizp1g=KkC0_m;V2b2=MUtVj5#S{O5QDhicdb26zVs z`+F?-W6Rf5c42Vfe5SF$(^Gb?M`)No(+KdGYh^0y!89yPEv<}AEsc1xULj0_XVh_q zJ4%MB6_00P!tWUFTUp93@CbD`?&w=s7#Umq$N2MrNyh;*Bh&vFW`7>w{m~mSvNV@n z5E$^sj-e%AcF7+b7CgQM&)CSsM0V*PyFA%|K=-*`-W`9veBx%{qNHM zuK53{|E^=5Cb|61@xR$W=)a{&*ZBXpL|A}tDAREE3iS$>{bM^sxDz7l|0kG+aaSGa z(*G{~|10Ugsb!b`|26gB(<3zGUy}d-T>s7gUjL0v%)9jecZ8M(Pov|cd-((g`+9}Q z%F6yRl-KyrcU^^`OaHs{|1YHfW)@xg{}J<- zcGdsCa{c#q|8pit=FWRgmIz(C(2Hq!F9`Gqm7TLR)XP0ExI+h+ z#*(?gvI~|icJ~bQUl{Ba65<;e;6CTiuLljgz7Xuv|1SOS8vk|0zqkGeg?R*o{!iuq zKh=Lzv%lAWbMvn6|9(sGn5l`m5zoTH#N4#w&X~tHwKQjcwsz%zm;V1I{Wtwb{WtE? z|KFnjmj9LhTk^Yx|9^S?5B3P~@%k^j{eKKa~IfME_0AOpO2G`hS=I_xD7%PKfIXX(}Wqq;Me^@d-lC z5K`DN6b}?~sgO}ZCJC7>pikWYntE9Cc1N=OQ+D5Q#zT0$BM zX(^X)77Dpl$SNU^2w5-WMImnr z`B=y|LVoR}l(>-cLiQDMkdXR93g>o6SqteTq|kRLHB(3*A%lbr7cxf36d`kkEEaOR zko$$K5%P?XSA@JPWUG+xh5Xq`X=x#Q_7)Kp8UN>Y*H+h7*Ve!5R@eBiYy8)B{kLoU z_g5ePb)?1rloj-UfBo0=@5g^8=3Uo+f6sN_Ey=BelX^zmC>$L(*W$@uu^u{INztYM zzghpg=70Sk)BmpdUtRkDU+MoJABv9D@L%{F^xydJ_21msgx972zaxyzHT-=8!a}`5 zy3)N%|GV_ROaIM{%*{>s7W}UHpMO#PpEvhkkpKU5{b$}ktp8|c(l!47Ez!Bcb7%1R zvdaPky#BWP#|q2Aq4R{hCMISbr%E;?Fzi1xnf}q__r*y}$wS^UxD z8Mq+iZ%xJ>`@w;W|I@yg;bM(ouaLk6?2mof0K<^~xZCMP?0meTvFzVmX>vfBlviqQTSn2M3syERUI( zoBz4^BhUPA-_cl_Sy`HxTbTcG=+7HZ_J8+)KVQL&|7TcPS(%s_oA8Yp?{5!~{pW}O zc((Axd6s78Jaa3aMaNNN6U)Cn`M*Ef@m%A-U0pKc^Nfuxj7>U@@`TU)Z;$;KZwC8! zUI4R8|GV_R>-T@V^#A|SfB%JHp&p^WfdL*1+=IP*{#f_JGdRR(en?=zze@jk7Jt9~ zqos*y*ZMENCBilTSOLb}GjOh#Cez^a4K)62=-Ac_44vl{tl81<$3=mThCdtuE4nhK zOaHs{|KEK4Z)w`4|9?&W_x@Kb0R2z(-}sNlfB5|e6U(mkUw%vco&QUsx|32upOo~i zPRa=XdD&l`loR@H6f`=ixT}*rZ9CaZ=;KlnewU;y^gH#9?WBs(7o=L&Np*fF`!{xS zpwMTg@v@Ve!j8va1>t22p>Ih?c;0k{{+^)|JE{M$lZL_tjD`vQV!SM2*%QukG(FHs zbD{spqNS5oex2n1=p=-GHf}&C1w!A~@Zp`b5&EO-=5%s|&`0DD-N}*4opdVg zeC%(|y+BC>$(fx%=ud9pWj1l&Q~Raf7CJR5z&3(_d2R9=iWGmK593|z$jO+yyXjRHKDswfW%VnjU z%#V?r67M9Z`^ud&^I65&c`f9|A9vtJ#@(Vjty?(j9#-5$op_o)=?T1_-DM7?1uWr~ z8p|&BW$7lvS|U)IRBi6UHog~hpR2L61B2M* zwzU}PJCz(8ztL3DV6qVSgc#-a483j7D#A*h|l zGLD!aam7QduW&%h{p+Zc{R*v7_89o`Fzl_zF@>r<$eDK#36t#+|8qaIcZsp+rnAiR zt|F|=F0l&>?y>zxdP8ciJNj;wN7(u=u#47b>-ihu?PQCUgASq6dK?m~1Snp4i(VEU z=b}ds=lJyYpn43)yxuzM)SE?To$1t%YmhZ{W5JM%W?+G`;*;}8xvWRQxn4DlaNp;@kzDE3PN z73_aP*{{b@d}Ciqe>jg0P8mo+8y#s)V?KFU8*&P(_fYN_z%{s$J(Ety=3mLw=fftf zUHTJ;=B^{n+4&@qB8wZ3t8q|vH#|Pyh3WeTn9*AU&*t}_juMQC`_fs%yZ7kczYw$B zGmtWLAoP0vV3$_iV25-{kaoBYH|g;uCZdO^k(Uj)-99}s+B zI$9u`5J9C62GK!+%#q+h!v$bQPj<++g6J zi|heUSf7lKtWx$obN#xQ6;G64)u}&Nd3`-wJAW-Za&G{X4<(|+eg!_;netc^&49GJ z3^Eq2$BtQ#VfNjgoqW6ugBBM<^{F3A@1xHiNj+o3eC5z9*&Ye@I*1=W8PC2wr@23V zP-B4tUgsHL?bp7@*SO`u+!rYvJ+2xGn+I^$bH=hyMli3zvsncn;d7e zJe7LzpZOuu*AD&f=kZNHK4OE!zw_(Xn=`SfaQ?P>MXOsk9<%CYXQ1J$44G{YgJBCWP-H`WIK@=Mct#Bzk^UkKpI&KIVkc(2CIH)Z1N37%|+z;pQTxkZhyHADK zPtj zzdVk)U2A1KHZEmS!@BXe78kQwa)+6$sw5MCd7Iz9<1;Il9L>_YZ^4}I)tH!Y7_F~Y z;!tQf!kWurr`8+k7U5X%su0Q2w^>1WEqYwpi8QfM@cXa}DYr_|=-2V)4ZloECO}eTSFQ1+sRxCyfX7Xt-&EHy>M3>lgte-D3V*8!h(6uz-Di zGYx@i(U=gSfu+GqP+(qwGZm$%bXkj?&qQ(7G6D@b$vEJ)2tJoBkrG{uH1jjaySo_+ z5yzr_y0W?n+t~%(`z+N?7yX(%;Z&=SJpCJ(IQk|M17t9Hycd>MN$}X{TgmL*q+8IB zpN{1}#;_9$mhscI#aV-KAruYGSkc($5J|J+-}SKOZb&N#MB6p&{dXrs&DO!< zc5gW5=%M$hQWys~px=)&_H0Ei+teHb^^*yRFPn$zRdey}O&jTs@SzcHJIR_KL0X0H zNk(-AF5lpzxW{p_z*)+NGxa-|My69$QTTHij3PV*Yc$7M>x_*dUDYSJm!d(lQOsQ# z7r?1U9mnzen$&CSFUm8Gp`8kYX{wU~?#CQQS;i<}R0MLLPr!q84}4J1M7hRuY&-EB zvG0#!k8CPN?+t);d>{A+ej?>p{b-0oHih zb@t(dY6iMh^nv<`IVf`f3021o=s&7u(Mv^H?NbRhAm<7{!!?w(npdLN0SV|_d!8+>ybvNlO)FQ_SU-DFwp`ex` ziZNMB(Q&KEreGUFLg$e_&jHC7t0A*-0k^~^&06rr9Cv0FVyK4(Vl5xg&_h2du_cIh zh)I#dr3lL09KiK1pHCaCC!szhA7$k$khCNQN}r2KWW*D^-l$I!5$X79Xp69c?@^}g z0}szFP+2UCT=(m2>-cQ`v2&kUdgCazp@PGxCM|@@DcZx3YstR`ttFbS2Dx5^zQJLADwB&D7zpYR4#nqU^rrg3&|6kaf z6Al|a55(FTVb%f*)?PdX34xE%c+;2UzsAzi3s-4(b_^$OJ(W&RJ4f@r_>k5+QGBYJ zf~vEQ@O~Nwrz8fM;nUf(Qe$@9ybu4=_+^Y=eGh%YJz#R?CvqPIV}HeXBs8A3&wBu5yU;TrL{g|P%5>AM3=9i;bBsw=6HilJ4(~3_uJ6)OaePT zk44JID3q*ig5FVQD2-SQk5e)jJR=Q}Mu+fl#~v=Dww}v&H7A9VB2*C%L62|4BYQWD z5_e&3UM1#KtARgzCHkr^=ljnHVNO$}VZ9&?Dn|^lXv7P&1Y6Mn&xNRIzX_+4nizU~ zBV@ihcHt(;1O(ysqM6vdOAgwhH;`s#i~R9o{1+yw%(CGN(;Ak<|Kz=Z zt$aKhYQrND)uBfZj`t=}$%&-p^^QE^=TP30r&JfH!-;GLaVlDX zkR48#n|TdlvGZAL`Bru&NrZ1dzdJu~sWH3yF$|;lvhdmX8ih4|$T~HQ%!aPQoYh5e z_M8s+7d7mrqBX4PC#!TbVlH+mtRVCtbPCU7k4Ph~%nrrn1~C#%Zss9Qn_>K`L=x$_ z8+-CEA-&`rDZLP-)rtoxQ0F)ez1o+=zF)$*lsUMgt&AqeI`$}R0rTqfT9&^{v3E>oRy-^_8Sfs?fk)gUC?EhBPJ1NNQpak{D`Cit-9H zA}*4ajQC88ly6hYsxbnc4R+SOf?~OTw$kLV_!|va&=bCU2B2ktAF1mrQJPB#WxPF0 z=@LW8V%kxh&d8>LCuWmVaSK@(N6`VVS%QQ1fdaFt3A8SDI!#*~PP4XWk#SoKn)Pp^ zJzaz}o_xTD9}XC~vJ`_HbD%Zg4yIk5ZS_Pah*gLeA#+I?chq+mojbLeR7SiYQJ4Fu zJJlVv78c0Z^%~PJmt#P8Wfu8Hg0<~dhIn{4=$QsWZJa-7W!QdJ?i#{oEQ#kQ^xDc!J~KgdyfkXHmGEY(EJ;UIc9fvviP$B| zClg0;65X&74X%4}c7{3?jmo2}iY8i64;pfM07=~KP4IKU+Hs2@XR``9g#&S>`3%&H zM>C$y8djnFik=Eb znEbSCDXCeBa*~E~G2OGRyDQzJX3c4&^Uj^@ulyphx9W(75gre;q!Fnpw0>_3h2-%` zfR@q6qdsmax=A~rk*-qA_A1NX7BCVG(;_5FXb0y^_bZAWqxwuu5=A&EG>(N>g ze7Hu6&M~O!u?M}rokpUEB_dL^Azm458M}8E8!4GjC-mQN?@ts{oMs#i?SG!c%${IZ zS`oHumce>v1Z*$+vP;=7nWDB01}kR3+#sHPo(iNpS>Sx%p0s=BE7~A+5!Vh6$0R>D zsO->X9}|Z`VxT1pKedNFNagtL=X>*?&MN0WdNT)d2X4cz1JZCig?lpBk=fdxmX29P7rzuxYM~}Mn%L6(+1tqYtO?SO-p0H9tEAGs9o4&P zkh?TxEbQps>(IQ3iAOhZ&hkjcb- zr2kZnFwvF-hJ!fMj67>G{mIar*G?mZpbRF~j{rYFj$??PDIGL~pOkKd$J$1kvX$(`O)BoN^YXmpSa4LEiV zm$o>gVdz0*+VsT4*6-|bxd^)w;LkSPS`Wka?QlF}2bLCu+TP(bPH>b{G#H0pJbx^h zu7;!>E12y{!Jq?eEWPzJ|9$j4%UKI^2>PWq5meeok1Sit%Fg*`jOG$69QbEfIwCq(Pa}zDH+Hr?O z=U&75hn_6^f*va{6-PvL9LpToi#=&e!)5(?G!78MuU})(=3!2f??Onj-I<2=y+UIn zkC4OXZRD>RND(%5lwRg6a4R$(WqfGM6QLFOk!jy*N1XtODJI&BTX{t=s-BpXG;x%ouio`|C$-y zY_=dKx0{SChLXgQRcKUcCzWRmJDft%@01c-GTI$fbC(R?#@|nY~?tEdb||V z#**0*kQbL@!J3~~l<6aWEfmXRJUEeVqjfxQD&oxLo>=M!?8Ysl!!SmLd)r#XA?(kkm{iVqk~ zCE3%deBETaIjEk_uk@obwI_n`wnKvT%iqz+{)4gYNhk}U<{kRXWWr*MF1qsgYr#1P{=x`5)K2cx!kGcgh>i3MTcD+v5#!VCGO0K0C ztwX3ucz_klJ&=BQ6(YveW7u9%7Lyghw%_)_(2;8B{n80(599IJA&%m89&$xJc9ZtJ zRha%j3Pz`fz{1;womSt>JjV&xU^izrRC*YDQFw$kjylPvAK%A{_I+S{ZAZ2}R-Kj0 zE%nB=O}0SH0mTrxEp#-h^(U z%t%kNWNY!w<{fUFy9Y~?H7F0i$8I;}kld>;$PfDh^@higNseZ><9EP0!3?)es!8*5 zJdFy7rf8j9+PnTPy%!j8!+T5-plF6*{g+I#%uzw@nk#tLF>?Jpay9n7+(4oqQjova z1?#5&Ad&rZQO5Jbmb1&D;_wLKtFPi{WfM8YJw{oe8vJ%IMaZTadaN5v8AZyZGIk9O zX>Z2oJ!PbEXE5%Lc);y4+Q@B`*P*`OcTwL`15RwuI8w{fgwfAnmeG48yDFv3eHJ~% zZIGLet&@|nj^9z*w11&`#tUS;X<#?1CquX4D)ic}!78(k)%jy0l< ziQ3Hs8i{O?$t&i6uRjke59-;w=UF&1w}vDY>bZz5MRaqFd`AsmM-hiVa?f5Qa#My} z=6VkirK4I6w6Wkmxl9Yi!_ggG#LO|&BWVKSOq8j|#wHYfPQjS;0@#n82-~wFaCI%j z_P)1qvTYw8e4U3MWcXfY6#}}7*gUJIlOvy1eHtj@aryzv}iYM+PNQ3 zmrQ}Y-mH!e$1ZG@odbnLH8YRz0A~nPlYW3P!F0~ZS2UZ~8SP3czo+3GN2d84|D^ z!Ef1@W0i1tu8LbuA~e+c8ac0dK}jbY1#|ZqVF&iZC(x|nJ}bX z*@f7NcUX~1IAVN6AvW?pyR!EL7JKKT?9dbL(!96a*#JwHHvB%O$tjTDeW3p09R#vo z7^^)C&c5vkF20Q5x{qkdSx&1gq`C4%*9D~7Lm8i>y|`>^AI28IUDWOZpvVOQ}ANv`9dxwVpgbk=6? zs@uTwmtgdzVs>(|32aL;;h;8^$G#3o#^zam9YVZ;y3LKD!6N&(g{L=gE6oQ9Fg}xe z992(FR!dRSe+l+u@n)7cMnM;zZgUWH)$`{-y@bz2&ID@QFD!M%y6x`c+IH?Tn(4p_Qmdg@*B6VOVzBAXLhKPtz|OrFS>omoupT@N;&ab3<2f(c zg^@eig~-#8sJ+I52Hb${MOiF6I-A~nkQMYFx>_(Lcm~&?`-$4keYg`t_6po=A8{V$ z-30tJMefVnXWY)*CNB49DQ7#+hAi|&Np0%6j$1SKJdxe#{zO zg>}U{VX2#hK@V-P`%yYpE)7DV_+z9z&E!GLaxN+koFu7cS-d^*js$vsWct%lAm=tk zu%kyYt)BCM=Jvl%qnq1F&qbSh%(TVr_yT0-F2U04Kbh8~5(G0VjN7V##ivKp8ApF^ z-GoN&h;|OQ*)5G5)wYrwwQVUkrzV|i5_=_3(_3Y`N4fdMZFIBX290{% z1d#(#EW_>r+Z5hW-p-vRn@NUr&pxDUug=|p6z2dFRx(7 zlA_tin4fIjQ^stDFxL1vfhoH*u}J4VY|o65fR-(uR<3|^`99?MoFMBDA82{Q z8a-oHBj-gEYT7cmmz5s{4R4~Y#hw>i%Q~wHKDs^^JSzwjJaE`7h@Kh2J&k?Lxz<`! z_0Y$t9WjUXJXXv%ENbIFaec+&2bRJmD4I<^IT4YWF;toHnX~$4PhY2kvaS56m*hTF zSzp4t(n`DPCh6-=p84cZN6Y~%6_=03xQxzswc?1EZW^354DKTp82 zr`njJ>&~_qJjS^jEi`R|2o39X0PFcuxHfz_E>^!Fohn;Akl529>K$+3dPP3LLO^ks z%t$6F9o7AR2_8BR7gVS{qr}YF6m>a@=3H_h>sQ{SZ@vv}(pONm-yJIt9bvCGo?(uv z)~qk(z;9;-Dm|x=>Y;JuINc97KmWq|9j~#&A`ovz&c{aILYi0fmX5}(r>Db?&^p&A zuntdw;WtM(+<1yC2VD$SPJv!`Z$zGPhui$4@Qa@ZnY*TNC`_PaF&%-OqeTRb;#GnjA>9N|&$|ddta>VVALA;xai~p@P#wm7RewyM1lA;(Fc-C@ z8FXF!tUy=qGwnFI+bXYZbceR@uyQXPz!bZ;vjutI7{B5?n_IMieauio@}!Y?|16fK zYkr}r?Ndm5c00DqCgV!A4MdYw*@q4FtUcU^{jhdq!I4`0SMA>H)KpcrzvL_18?T93 z-dC`7i2{xl<-y#l2mfuVAJkqY;@yni6c?jMioQK?KYu#)%)CPVwwlnu+qFEldf7Kr zOWvain{8;9`vKw&+(`qXWCS;6E)b}Oexd}AceHktBRTH)NOmSqNwI;4d-=T)v#%63 zX%iq-Kc1g6sTW)OA|3ko?Q#F*SLzk~98M$Tz)3_Pu{{^XUlsAybvh~dtRQp2ZZf+b zNr7=2I47ycTy{4Bm+7^atJ5pzK7V;E=>K+_fETAO7`9`-K%lHHn7cYi;D2DCV60i0 z!0*LsfyjMru5tQa!Ho0bg0Wf?1%id$1d6?mbHkeAX>z3jl0K^8ja3q!d{o4{nX7Q~ z*cnWZd&E9J$YPJ$wo{|TM}gzL*YxcCKqy&Qu`?;6EI!eeSvke>tKJnbeUl89QFEGI zv~NU@#$o8w>kT{BX9(N+auPf8s4u_a(WV*?n)VCVq z>E&#k?KK+t&2>oB7O=ARbu6_lf`3>{4LLcJk+oiuf3Ejpj2j?8egcPUPkl+=E}GO$ zHStpY9f{98kD#V#EI7);v5iw`XCAn%JBD*FZ!8k@E?zCrHcS`r+t&+*r_2@z#wiF~ zTOJB{xAt?V%3e~!wK5cMwWK$7MVxMI1QgaQ!mj5U8qn(`+>1xT^VCqR_z;d=XOE+J z`+e-1Z~{9^Dj?${&-4~0Kyh9(iOs3weDyfl*5)kac)&qK1h z7)Y996-d4z31^O8!mg03uo?Q1?Oyr}hQ89wYi&8pRS)H#<@7PG-~jgbtj4!dH^^|g zJq?L_MGlgaXp-Ix^ie5cXQl44rua}KaUEk05H*{#HK4)PwgNux@=c3-8;rbgr zp`$uWAa~e~P4m77G2K^e?=oF@HA!Om4>NYXbP2@mIJnOJgf$N&;ePBfdy-{>qb)ie zW1npZlW|1QFDdpmv>eY&u2YnLAl>fOf(px->|?hUw)4jeHe#j&`{XbZ^8{KnKDdRG z{@6s%?n+bgcSDjkD&#SFSzinok&5d#J@6$`nf%swrNJq?#)K{Ow z7d2aa)bBVMvOQ2>p@i_lH|B}4 znxswpl6~+OPN_MJJo?DOZoUf3T6&x%8L1=go-JnWxr0<$2~2hUf$XFUP&1ds?v`!X z^?oaAmbGC_{y;>&zl)e(b<|_`L{4@2drmjV0{U4^OrkmjzqTJ?n^&5#)^~d_dXFO( zyh!NivE(CFPZedG{jo!%9Z%#xkcjh4%1_VZN}Rpu>gPC`aD5W>4=tf#S+D86%oT3r z^m2jXheO;!o$D-Ge+LGhtcQYj5KeXIWuvVTCL}0h;mM2mxO4^$T_lfYeIvZ~`#|a| zRH?g83f5%10fJgswXY;4(TiMP{Gwk6^>Oy*Cn&V4u}kl-vVA2J*yZhK*afQ!OzT-i z%PmK8TCp=Zxy1oQtboVLU%bYErFrmsn}w(0*T_}I#9Dc?F?WA|58CbNNFm|-$-h~V z{79BYk9|y1G86GG|2>M8&w~5b#YJ}(@>l42IKeG4u_<^CAV zw;Yd+Gw;BY#jz^CYsf8}hiAPE$Y)*-J-9cSliSeI75(&*-|S$CgI_-I@6=3$cCii? z>mEk<=1^SmT8E`Sjw3?e4LcUvk(lysT2t1-#g>S2Q%*i1kFX)w9-xR#!*64<{Sv?FQ_=d6~)N!5DuU^Dj@d+)1_h+(>TkWnuvpPFQ?o_LgwXSPzQT|X+V z^`w~xuhXz<0~%!Pi1)q$Xt}T$#p|oFd51L?P7kCpHBPK%zytPEd=s{R&mc*$29jJM zL;ZEq;Sfby2l-%gVdV~JNyI>5=_zmXbqM;=@wm#k-C%yk@)wA( zG{N8~MJ#_H1{eA6$TU+$)#tTn9nqVzo20pVJO5-A%{BsrEPy$d79b^|Ws*GkHnz7k0t!vd>ME7|LAN1@T4$&Q^iWBq3w zWqbS-F>hiq)@#_4LP0ux?%$sa?sT->OV3cy zGzs$BRZQ&dZnCv*BfVXTG$cukq&#=vSGTihx6`A(Z<|PGqdfCAY-DQ^&m!pjFT8MT zAbBHWvb{NoJf8$p%A#YG(40$A*QanhR%BDp+WTa-DwibBm0`lQY?i$8CM#Yrf<+p} zv&VxBS>3~*O!IOLG=APix7b#!kN=5Wms_|{*+9WzH>fwp(B_8&$dMa^)>SuPbGn&b zKI0FC;8z&Au@uvySHXX69z3=`LgNOGh76D6A{Kn-y6sOS|Fd8-p%%NKEeN|IBw!57cIG{61@w@P6pr=Q`AW2!GP{LFWDcb+eJVi%wgv6EGj zBgT{)!mn>UdYzsIla(Sko>Pvm>>=gs>B~cs?R7}B9D>;FIT(L5*4ngUFIQ3V3Wu+X zqPlPgNo_e!-EaLOna?9gZuMf4td+y910^I9yOE@|SL4W%Vw5iU#D8XVkY!|6vbMbK z7@BX3i|rjJZ^|VKL=(9OS5xfT19ZIac<$HeXY?jyJc&il#r`W1SQWs>hR^!QTRR@> z${bK6uz^;dESr^Y#Y9&O!KiVAK;2rfL3RrA+B3;}bQtcdG}APx{$#cA5uS_ohf!TP zyJ$KCIxFfhy66$u-5H20Y)6SqC|OR~%^5loXJ~a5+YhT^N^~tM7Mi2QQXD6T?8o&! zPf29jI_z7w7iTxEW?!e|V&S&iTy=y3w`p?)TXW|wzuBmnf96{XdaqRDh8U-CgT|E7 zg;$>R_-7%-dU7;b`!aEX*J*i7Ea$vWne+AxC8Z~|aQ|9`?&o$O(5e{)%c|kf?>q+d ztwMj>MkK!4h~#OfG2oUsJX{rUKEMTy?aO#bx2%I&FE7lgA0~Kt`<1oU^L8@#-cC;6 zPLTc1IC5Q)L-x~c$oR)>(vpp$ZXxGL>c=~rC@X=(!FiZf{2f7c?abF`1=})J7m^Nr zJ9Er|0Pgu2qH)MKSN8Cu*y zYr_lhtJQ5G9 z>|oYxdJ+Rddt!UybLuUVK=VI;qqxE^bgDFu6H|>K%R`&togmPv>Lm6ywV90h{h?hmqFxqq- z;;xm5`r3@DCtBDs%#XG7y9ADjBWkuM>Mfr05D~44HR^fryw%ORKNJMV*Po+gw}+G+ zZ$^vW=F;@E+oTjLPMT$pN!(;FKBO<|c(KDMJunst$qmqXD1yo-W1t*g$bZ{*7pry@ zpk(7DY`k`nhhv+$HGdAC0Y33rICeohE#jr=`*F@jas> zLxUx-VvZ-gq~<}R$cSx`NoHaEZ_NAgIkv{+8ujS?7MBCQ;6d9g(wI|)TM1# zJ7by8X)5cH_`;90*{YzUvtrAcpH-r3*=w-x#|;ucDT4-YInsQdi<6fRp*d|kQsri0 z=ucm4&u<`&;(2JzOo23;gEdDz;3pSCQj3duDD3ZuRCfdD3`?;#E%M}^7T%;4=N3`G zC?cmYHPW1T2e%TJ;N|q&sCT-7mglc=JaH}3->*f5+-@ZPs72P^{?M!Wij~QEh^o!Q z@ef0BZdx%uNz5cglO7a(Wj!6+;6?|tlsIiX7uXLyO=b=il)3K_3}rlomgma zfgSs@5C(f)aOb)#^*8*9w}wCPF)4-YC2T3!EEVM+LU45JI#@h5#k$jzQP3-fGrF`ES$}_`x4#ndxK~7Ce%1 zL&xvu>hFltl?#fTmC0q!ZuKgaLQO*)0UR#3GBQk7>ORBl|;79!|(SM$!FR!Nun8*49VIlgK(}w3Lm< z+oxC1*eF4g6LP56Ok31EJcGST5qKY3NwNp`<5qJEmi9cz8aKSasM+2u$sre#Co3^w zSs}K33ByzMwWJ=LLDR?YptA8UoXC%MZrrFSE<$mQAhP`ocYEtZs_w5sa(7=*uZj|q zf;qC+#E^*V0PLKTj0s`skQ$oDF29ID&e}k1uN24Cz#X`FZUmx_k7TXt`;hs-17j0r zLH_6!@1K(;qtQ|d(p>$ZPHrCSCDhWO4*xmblAe; z2Ij!ZS%3{IuOca48*SQ#TSd&Wh1Y*65hs5hrh)_X8tJ>Q#RH> zt0snhQ5Hk*c^|QOQ##s*jz)8%A%Y*D#**_Pxc;J&lnu?0D_@1lNg8P06;CShi6nlZ z8sGfB;$!YWG9P4z8>4O@{EP!)M(ZI;CL4>=vQVyk8W(T3bNvL1IromSjmA!M{>FPF z*vUmY5Uf2-l8eLz8c`Vnfu$o=9B`$z*R*N0!)1~l^cqzO1F5gqB2o&PL%n2!$-!|7 z`E``q^rMv|ujfOsd_iIbcC_xrQW{x#0#}P>z;)Uco*?kGz4TgXPJ_;PPlG ze%kU{R^yz7@zJ)3?y(pxZ|~uqTN6o57)wTPYKcG5pOo%;V($St!Lfkt+>m20NlNlA zszpl3C{UWbV|S5~X)<~29Yu!^8j;C}K1kj37zSf^LuTkGIG-DXH+%v;*XIXqv4x_u zC4cqWv5-yJg>n6^p!CH}R6Kr!nbmh-yWA4%-XHy66r5=^R&N)F3CS#T$dsf=BExg< zeV^w+l1eF2iX@pzN`w*_Q|5UpLnSnbluY$kN+n4W8c4}hBuX>&de`}O*7>&Y-~L_K zI%gded+Gom?PvNas|1GDI>1Anau})J1D|cH;OQJIxTq0@TNi~P$LbteeocnFxHklL zLlj=kP|!0?9#kp{#M6uI>F8@GnxV%bqPtC4w;#%purDd(s`GU;^Vz~gY$|0mO%ib3 zu0nX1{R4$xu;6@-Hp(p2gU_GB(IQ|UnyszHmfsQ>v-~ddImIE0Uxc6L{aF4&A1{+_ zC}?8&L&K}?823YliSHg_WL-T`xW5D~yT9X!1@V~p`wG4dIDkcVx1jxQ3nXvl zz|pUbz}>Azf|oRt@*z98mgzz&YA9Kg-b|RO<*YB#U%@yl57vjY0JoztX*4?x^NwAF zjd1`yB6s2Y-4dt_kwLNZ2t9ln&~LLF8t*wmT#ho-acRSV#}BA3%*M4fh1}{IF_FEoA8s@QBzJ5feM2C#OI7NnzHB;Y6 zDMn7)0JkL_LWpUHO4a*tz9Sk1Ll>j;>+2X%+KeSuGWgss3IpmDVagyDx6Qwf*3s|r zD*rYdw3EZl!o`rad9N=1lD|j~>^(vEe_Kd-M&@Jb!hGB%hiJQDJ^E>9p}Vs*T8;n1 z1v8QQW?=&{iN8UjU>&KcbSBR>?jp+@*ASmDbI9}tT>0u19{S*oG^`TNZkvFV&peQF z_cSVO|AaC8>NwDBL}!Q3c)_M1#=m}?F)c{LljpBsT-pjM5;KHPh!!rpC5LkZJ>mC+ zADnkB1YhwOusC7>N@)klDjhXaQKbmte>%yaOE{}wdk2YUf+nAzgSB03iZKF zZj{mY>!Uy4F)%G40o%W?gV>PeD4v{x*<-8l;qGuu;+Wy{kRO!+mWHp*Ec16DrFBr4DQ6}|!D>k1Qp!B5=c6;u@c-uhSU?zoXi z!m%Ns0|)0DVp~oD)(RRWZ!It|E3Sas|FMJ z85e>IH~yii7=!-(o6yR895=f~p~=($nq8%+UfqY>m~KHo{c5b7a>-92t(~Sc&XtB?lM}BLbBHA)>De5 zW|W!DXU5E_oIo)2gfaUpUCcTqOJ9BWLdCgxFsdR0&6j&%EPW=nqJucwq!NClYC>s! zCEO4m0vO)_tf4xP3g1CSJWI&4&sRxe(Mi_dm-|@LH=>B&+7MQY7?Pf~Dj+qe2`T*^ zP*Euar`n8QxaAZ4GEGH(Q8q4JtBhI0d<(5J8v>c|Ob zZL@(}YVnX0dl(`O4B^rOdwBJJKN*F?d%-@g9w7P72{_Yu1*)D- zqoh$QuCdF<{i6?Y(`H`u4HkSNV*zC`VmR#C6b8R!=p2ui^We0!;isf;0(x8FvqS!>~&h!S*P_e6HT zGo94B!HB1t;jHb^sN(WuMhw|z^qX=SnkJnV!N8kt z>jpsi>cgaTRerbWTqkG_{uo*agT?k=?Nf3E{H6%Eh!xg?akj~pn$|QM7UVt@- zNLIq!2Zup@qZ|2i`ZDZXrUmOGufpPOmJlgc0_V=!!pLSB6v?$h-dU$m?DR#{O8JKy z1ZGa}S#eA^U4)rSj$l@;1=bmPV$D-)%=cN2amVZspKhXMpAOKJL$a{$$xq-;_ado( z;vrqn21*OO=wts3hHvWy{Ojfh@6{K;5k)It3+{nu^E5E)P7>Zuh`A2!y2DuYsc) zL?*ubf@O99*tF$Bc2OflUvGlTiJ##{hbnwI;>vKWF0sWIUP5m3NAP>r0~EU-j>}~H zPb2z;s7Lo#v!QH7QxKi^FYEB&`-Iw=~ z?`CEo@S6?Co`!xW}d6Ut4uTYeO98PH?8T?Iazd9kps$>wWnD-0L$n8gZZP6_{BDnx1k3NEe)TN+dqzJ1wMnPfv7tFUihh15oxcg@&S{_{k zS>_4wTEzhEvPbCT&AZgC-v#s5KG&t`yGv=W;A5Ja!Q+Jd35HJsWq0Nw*)a3_rmhB!x2kW+&5s>>FdEYeroEAXMF=f=_xr^?mX-1}Q1MV!`0hyM$`#FsMVW|w8C7J?&4C^Wi}4C&>Y>Jc%|SVW>{>;z^(vPYPNwk&j(PE8xFV zkn$*Gw9bNpRe6xRuMvL98N!Ar0Z?!{2$qILa4y`LE#>-$x$~_PvuCZvt&f)AfkjE^ z^!OWYDpAFGH*ewGkO^+jhP&J1efh$VVNanQ0&51oYrG5lE#?yH@~>e2vwtoV^}zm~)JC-o5@*@LWb z#|rZPI0x46C`Tr_du;Y~pg zTv?z7;YpUTNAopoEf^;jKCR^BumKtFM)F^vF}ZLp1=Q6{XI4f(WPj~~;*aqu$E z+uMm!=niLNbdWdWAjEbZfp4iHF!izrlGMJzWtI>l7N*W#vT`p5tkcG%Aa#s8SBY~) z)KU55XXMN1LUX=9c*IQ*`Fl5`z?#EoP&bMO=l7ybxe97;P)G922S$~-!L2tIp6iT2 z-cbWwX{m$!84}=?6)wc@hIZ}u^V`N$f!-H~i2;?50Bn;nA8h1Y2P zZ8wZsoyI+f`EWN2a7(8kx=fg$efkUBc3TYh%L}4De;OM2_n`9~UierW40Txu9o2Ox zU%`c`Nv2Sn+DBO9|A?}44e@$BLEipw1FOkmIQhK|mLAlBb76a-JR%kTLN2b@#*aSE zS1^9AHfHZxgZE0OaQNL;oD6)8FGYQ^_q7zhl&HaukwCn-J{ZHlykNp4Ol*3 zDw%`n@>nu3!jL~JB*6S1AE@5eBxTzb$YZPdT}2*K0hCmehX;Dc(7@s<*U4MXaK1P?dn)2FNl%QNQbA+gJlysDJ7(Cbp&0ihjQgC2`u7cJ zdQ$+;&US|jlgWhdgCZFcZzXSKGD-3&U64BZ1}>d@4bFkBu;QN}taEFJoS7Y8(`N(k zo*$p-B?4npojB)|5w4x@jT?+qFxq4xMnt>d@!8u@wXFtD|EC6GyH~)IfVuSfd`G&) zR)l=HZ0H;c31~solrcoe zc!NlXBxwB`eqV9CQc@G^J=(k9Pf-e?cW-*J~LN?*hp&8r6O+5=GVR~nk7o}oyV zHy$fpfi{b$alyDEys7j;i5Cm;xP?3TJMxiV{v60|4TkKJev~URV_QDDib34kxV70E zomt*!chnD~J6__p2Olx0m|(J77Y5!7$J|f3c&=v^s>bE`hwU?SZ4_bCB!XLHMbl2?=+;!~I1!q1`JT23jt| z`=CJhW&0i?1P8%$=OH*~yaSqcT0+156BxI)LEZx&ksalLG;ad#9K8v5J2h~3gB-0B znP49`o-}c3JV;re4}t!>`z&{{TX5Sw7r!%P%PBts*(0^{hY9$>jDE6V{hzKPTYv zVL`M#r-1sl-r@WYdjEm7HY7@AlT z$eo#w7AMc*C($T4&#{5CJ{1uCcnd_krGSd35G*{z3$+hzk+)+z6stso-h2~C7IlWC zwF}{-Rtd;uHiEa>Yp~jV0|Ms%fQvKNSbI83M@yk>?i9{{Qj7ba*5kq{LHLvO76r*| zOuOmLN!9sgqP@g}$;r`V#9$6~4<~}pypJH4EJqwqR1kJj4RAj$q8DxSOgQs@vfoV? z5ZT2?N#YA*QagGGmVQ2se6ktH)Tir$iJ&eS7P?Ir3Lc@2Ck0Skvj@KC7N97fH{2=n zfur~j=)ErTIr}0UN<9FcUlzlW)heX2u90MDO0W(ey-F?_S+kO^h7fg|df?aa1NJ>@ zcp&SDl9Sc=&6_ZI*}cG@34H&a33R*86jt708V4THs=*ZGj_oGO<&vbZ`9HQbAIS>tQIl7yqT;cgx<%PjuV;jb%^%k~Y7 zMf1Vg`dPpu90Gi-Y|{Bi5+c*pKa36$vr& zMQROLelCE>9VbvsjT_@k-LR*y0|g8jw#w*2_Hvh7&?op6=Dp*G4H50cFMKz-I{y%= z`Kq!HmB&ynZ6UNWT8JVm{bpp1joy*oSnRHe#rn-ym=Hq6!-p|(Z5PVqTHxpR+c18o zDs-#-genmZ>ZCT{BKrWUH2o5N7ZgGcyAHVZuEM$c7?K)e4qU_G5Ol8tO>4B!w5b5* z9iIzU@P1zTnSHjGGHP!AO3lj;_2H~bY0Caa-lUDEEZYfENX&FnEg1m^$%6? z*2d_-n~=fogXR(sc%WiSg|{xI8|AgB$ALW{TQSCH@9kzju5V>xb;X%iul(r`{&WaZ z%hy1RKAoPHj)Z9PL8Wb&OeUD$ly8q$@i1c-l z9;Y<&K17LJQ!s`T6JButt`gdGbWv{V%!sbz;dI>!;WXOH;+qBhP?Go;g0D=2wsbFv zKXwFu_ z_NCv@S*-yZ&+$+mYgMY4RY4Uln&Vi>1*%u%PUm_&r@T%IZ zN{*d1BI>?5prCe&=1uFcV}|}?t~q$4ZNVrCMd)Hm`Y4u%i{gdN?UXBl3;%LFP;&;y zy-JI4$VCTF>`g$;d-ovTVk<6@8^Hpxebg!DHFWl#fo%$9U^FijhFARp52M+nd%PQj zcBPUBmsVmJQ;Am$9;1=_6R`Q4Pl_x%KzQyJG9I!5)M`W_`hqbO_Z%Xl+cJq!^<_ep zN!$vuJOgW#n5 z0IHl*!*@+qaJ}sb93A`yzN-si{;)a7?z{}A&VIx>mYyiS=N0*o6vg`Wri*2{q>a_T z_LT7%2O(Bm?qL$}@*eEH77U?p(?G3Qg}J`en*B2<9QaQ8gJJ1iB3NU{8ru1X&C!=) zpFE`rY!gaCxB0V%H}5Cc|0%tFoFH5U)Cj8L$b8~h*Cp!x1x{I`1^T_2wcMMfJSIm!`&@BKr`&C4Oo zxebWLxt^TP+B#>7RWP1NE9h}#8g*S&RanAXTDBF_;UqiNm*a=&ZcFbiJS)C#l4(?=c z>w4f_Jc~T_&L%l>Zg6w%C%R0o8l*%^jFSqh$>CrhGCG(BV$q9;+Q3I5$y5=pd>37k zYPyXCm&?I^JrB5hYyrD+SqA6icV9H<2q+S>)0c?ckvx!ae*ltp@eunqhn?spPmf*=M47;4*!XfDl`IRU z3(jt*>gj7RELIPX-uj2X(#^5|sUpVC4S_GZ4FImSxFJJZ@&i|p$f`)NJkm{ayLf@0{|qYCzC`(6 zL)Q1T>xqNPKeFiDMY2g`43^yg2o?#|kQ4d??pfZ0!Z$2%7x)Tdjj62O+RrTO+G?V6 zJ(l#DUWN^&%CL637(D*i3D1M1h?D9{*6%Yj>0ydUkI`vZ^lKDmJy-$~;_ra_U@^!A z>_Cy561qh6AU{YQc7&o`h{DdRID>g+oTyI+;I_(pur*u-X}{f}@TnBaS6Snw=xMNy zcOmh-2UssF=CKx=af~~AezW8^l#t~!_vgHC2HAl3XtL%J)OJ@xT=YSd>Gq(GVxO?| zg(Jj%KLm#H1Dv3Y>m2`EV<6GxP1x-x$l5Ctpy<~KVOF={aQb;BwMCR|emW6@tLIUX zr9joUDbmeX0x*;RDsE2>z`B!%DBms#yqz3@+wV5QZM{)2S$hNh3^&uL9Uhb?CJ)*+ zHN!KW-MBOd;Jls!d?BrHc6=R}Y<~`O3iQc+C3DjA>?BEZx<@_+Tge=iDMZ z)$0MuqFgf*-bxP3O0xn4HX3)@Sg^_-m9e&ccuN`@TiHiP9y94zrJyqAIh^?Ooz}uW zI%dKLhs*YZAhRD<3LRj|r^}ev@AE-2WPs>wUPeroX^@U77AXkvgLp}OirH!GLxX0N zuPTj7*{DW@OW5D0LHquaApi^!O7ne)ktNDt%|x$PMzkM{WBEv-%r=ZS{E93K)=W(<=03t?BlFBn+*7lr+g;Jp7#(5y@rJBRWhFM{@7{OY$dIk}UlPV8HzX>RxU_KEHP;=W5NUUYFv?P0YrB_gL&7ErJY( z;m7OqHo_u4bMjc^8CaF7WHwWFPEZhvpavC@vPx1XTu|LNe% zS1X}&;?@)7m~zJrR(HgxK%8U486GOYV|hLsiwBvh}0w0md3_C>aE=)XkxdgUJb zMMg{Sk}VEnKH#PEcX@awI_AyWrrR<8jc%|<9+w-kAo24KIB1uD5;BF3A2S(AdV z$m3=oP~|RVKUyKhTpIKyVgVAm;CbpDh&8K_+c(o7^mjIMx?Phk@JfZ56gd|k6dn3p#iWV6Wo}iDaF#`LF=qpd$xBCf*6s4=P||9P zAJ`Y^vQ;TS3jlDV6;6hO(8$AjEb*C|P|a0h{Kq;`UyHC2u7lXGt@> z5N?2qk2;LB<{7rn(O;MnwT$XDe#6TRHpt`r2E#WfP#?M&r)CQBLroDpyT2E1i`T)w zq{ZlVT9WqG-9oD(eH3{SfgUyMah}a-)H-U5cHDIkyQqt_*iM7hi8JK4QX|++9|Mb} zTfw|w7qZ%21wzR#fETaVj70M%50b z(7Boc)MCVs9(ezRs{57W%GMDwC~%)x-Y_QGn?%WlbS+SjzXjaOEzqHi2huAsN+(geHw_nx`4agub!H zA~_bh^2i+IjQW9V>myK!%pgfQLgcGUFrEMSG5sX9l1VLn#MCV6=Ey|8X6Dy>kknbz zz`gV`JmuLs(<6srt;{ev{^==(e9}h4?AfFxsTG~-KjHD#OQdTdLpV7tWPi;|ke&Jh z&MUq{@U#a!PxeQh9n(O&o!K#AMU?l)ZK{*80dKS&L1~^_*jVFA%ktWAf$1N(G@=J3 zMQfnmO%nx#k}#&^F1=sKjSC|iQKK;yBRk)th(#F&ci)8R3+F)dPc5l0zc|waA3$;b zYVd6Fh5f@ys1uupk3|GfO#TuH{5(Yt%a;PTgA%-RU5#twEO9zqn@XO%NL4~TsN~i& z_%0iU&O%y#W#*WCSVZ?XeqoTXt;8|rg+=!L*gq9c$-K>B- z5lN6|@eL)NCg8X8ZdBixg-Ji0Y2ONU+^f716XUz_c>fO+KfervXN|$#SL;EW#K1De zjbzgfE6DY(1(LG@j!O!`efBG`mQG;Rwyz=%%NSDgJ0H{~Ppa=VJpE@saQ>Pf*F7gkObH;C9= z1{=Ru5U3pn13sC!#k3HV6SkA{T5Tlqa4K5OOze2MOJGLl-2Cl0oFD51jBz zgVT4#;YCp{U3|%(ifiv7J!!UJak~LdHsqk{?P63EZh?sp)9_J24Ml&v#l_NNsOh&J z1>bLhp{z}iKC^D}zg>aNUjKp2j#+T#-F6Us;6V<%3$Tavd)Ze02SMymD+x^dM&{qC zpP@1ba+bdzW?i~QCU2`*+YZB7>$I zQ!w|Y4|+$uLZ!G5D3or2dW%!3y1)%u9~Q(eDokY8_vvBrOi~qkTEJZTEV(5lLK3?h zK!9@}*p(>|&l!fXg1O+d!hlu!w2p}6hm(n}jbug4eDd4V#v-0>nq6FgoJ4nxPha8^klxc!|Z3r8i{T+a6F2CqJtZ9T@yU{8?r z8^_4gP~GQne3Jh+^*0Q>ez*lQNe42d+bgAYfcdHfc9Zl=R<$u?jr zpD@ndvj+uV@jnDLPZMdNrYeKEApbk1tkC`@9jgL;lH zL=p$!qo2Ui?KCV@-U+(1g+O_^J#pA=$s9^HV0x}hk{em3WVK~6x$K?{yBpR(+RbC| zHAWMc$M459y|q}e$qNTEep8#!dKw+{6<++21Z~eyvUqYA@l*OlRlD7(Qo{#Qvg9~x z{1B3x8QVea;%P_Q1Bu+mWbMc&!oR79_3`yGk_#$q?TA>8prey6F}ltN zt`6@Y*`9%$?_5y4HVfyow6TuA2H!bqVg2pd=$(BJHwX{n=Fu0p(?Au2BN{Pf|w&6Eqg4gQ<)d z*s6)ajW-Wa_Qpfp^*$bN?VpAJ_J`uL(}g(Sa|mbk$-~4|E1cbCiNdQ+;8gts>~A_i zRQaSyNHhmvV+|Zv{Q`IX?u3$^uh_ZT(wwC@$*NjxN_d;%$!51JAk%~3TI9}JSSh1R zR2+N2=Kf!J{M8uw`Ye!`sG_^ga`c!ti3ipg;RV+a?6=>8gBBB5^ezBx!`ty-ohcSc z9KnCSZ*c1O7&SU$f)6&GC0%FOpw7MmnGxZP`ovF0L$8|d)e+-x_b=ciOY;zeP64uc z_GV(u7Y~tK^N=Sw9}L%-EaC!v7at|qmA?1%^`Kf1j9b9 z#xu*dKw9Q9C@AbDpIv%@GjI)Orv^iG)L*bq%?B58Wmu_qpBOFjAn}FqkS-_+ruy^1 zqv-|&ZPSIig44)fR*x#HZIQLE4QE|^iL<`mfu9BUk^9^@lzu9O1v26&^?Z_ZlRd&2 zO&1_r|?)|*IY;0-uA=nv@va?sH^1DN*5Im@rbk_WF0$z`2(&`7R@aD6>co9H9q zr;>Gn=Zqqx4k48EGARGc1|eh)y6k*{m+v3I4zUgR@UJe`gbL#$?iT#}+6f!m5;5OO z9V0@5FuSl88|$Y?=rC}lWy1ayd&pqsK~`y>ERoTzVr2EL*_kGK%(}@R zG`O}3#CAL;oPCm{Wd_kj-1OnYU;<3F>_#Qt6pZ2X$IGtE86MjTx=8r~bXOTb-+|9~ zd`}ZzQexoxTkzjVHgdarBG0W|$kSpCuYOpA8*c;Dc5FtkH`l1-v0aq2`4Ico zzQdgL{WrtaOF2h@&L{#$*$Avfk(a6Tx_~c_YbR5|O_PTALSI~qD7fYkF#tx`EU%-0N z=|j}&G-0(57Z{=yD%|qNsGHU#!fy}Q=tRH@)?5hlvjMI(w+K0Tiaad1$`;$3#XiyN zNP2JHB8T!%62DaeL{|9)E7|=T><$}&$$)dH6WN9KH{2yLw-O2D<7f{`eBJia< z0$yva$I{4Hy!3;O^P6wLvg{F9bL=NM(tZk-)A<-#9tO=SYEb)SB_t2M0JnQ z$hEHmyU8|apTX~;U_E#t?ScGb&yerQJQVXvM~&wnQS0pvWSz7_UA^s?kj{_%HbL zTjNH)XHSCkz6H7@%*h>`*KLOMXQI&Ba|OOAb)rs2B?>M10sYM(D08zDy;8@qZ_8Mj=$3<%~ zV?CiHB5oH+T4zL@x~o_gjtQXLZ3`tIykP9hRa{w|iy7&@lut9;1@ui<(OxyvvO2c6Huf0&zyAf;! z?m}eSJaA`ifjE1A82cfKv+@xh-*Ja#i85#mybMjVj={Q^17u217B)$6!yeXe)?Mzq zgg2|2b+p5e)T+$_>fH%B|H;FK;U?gDBK8jm&6MwL%+(l#%L%6#V1Z#=IsjM{cj7cC5z0aV^!RPEY znN9Rk_94>#W{7l;mJ*(ZRI<-}05;SwfE(vmLvP{=WOyE7gVZl7C+2|b&wgN}PMcHL z-Nk70f`hAEv$45J3(puFK=s?fV74R_A~nj$vj;Q7se6x+To+MK@ijcVR1U8sob zD4hJI35ScDA$NWc#2q;T<^QZv!Fw%ym7fO%sh45ZH32AdPs2HJE1~ygZiSieRspGE^j<{^QiT>ahpb0x! z?RRdFI^_iLF_dN`_1Eaa+|%`-?=%}CUpYed>mqn+(u=F#Ibdu>3s(MHfFJXFF}MB{ zWOtl|)HnaZ)j(0omm^MFIA5?kxdeHHmLT_6PxL#ZiWl}Dpw@1+l&AL#4CMp0n+l_* z$@j=F-@jyD*dA8TStYXnUo52EZG_&H-zop!pEQE|k_lg~wTXtq1U(a+11D3bVU?&f zyYzhp)4nE#JkIa5C4VZM!0DoNbqO$ezc;a>} zoqh?_esUlBjrXJU-q+Y1unI45L~tF)8d7A=!r3Y>P-@`^du~-!7jnWwu}vtc@DoM6 zRzT{yT*x0X1hW|`OVwEg7jut8afuz=`%fGh!)$mtw-gR+Oami#D~RtgMajBz$Ov#y zMO=?el=zaUi=RkaBrohexRU(PP9%Q{iy_GL0Nnhnhi*w@Y+gp5t!lZ8Id5-5CQj&r z>{&+=Nu$tL+l2A@dzevnf1^td9j_wfj@Rib03a5vtOYv{K5w1+% z_!`sa0?OpOY9f(UyG;tl2H-%q5qO{22iF#dL;CGojG<|}*<4jAvtYhz&fDv2I3k|~ z*b=PC0AikxA_%2lk#^oNEYn76m;R*`MSmL11ZhtHU++>P11%VBu99FDqFz}n{#;(#UNLA z5>BQ!;qz82I3F7fb8G`Z?cHxEc@qJTYVF|R^e{B7aRJTm!nAZvn5mN1Ig{^2=a{I0 zNN^s?CZ+!zKuq3=**o086y-RR(r0$Muzb-Q)MD|2c=#i7uy_Z_Cuv~y>pH|rJ44^r zRj6j!hyC|wR*}!ee&!M39NJ zyB0@AYBf7cZjzcwdy>ya6$GU-$f@F3Xb)(HrK4Vu+FcLVt*UTNoi*zB_)+eb-E`r# z+c-SROE<=c(!STiG$%j%@)zhK`{f4E{7 zj;rVF!ibhQR^W zN$07iTf=vg?`lyb(WDP7(^Q#ox7Cb+XdbDO`l<`n#xZF7m4ilwh4^228r2p4OG|mU zY4|2BoOAgHm>oV3rh>l6iLAuGu7-49N-@@tnWD9^KlM26POEsEu-0b;u6>Y(r?L-` zqo#tLik*~G*2^RbiZKP5L$G9(IWem+Aa)r?Kxm!_%<<%a{wW_=ze^SKZS6SACf1tJ z{~j=IJg%VLm`X*)4^X;S5hjn#2j#g}VAZl~@K5y!9FdBIif#PRUbG4(r{?0JXZxx8 z!YaD3@jE`hphvUpZ_o={Olca|LEJK57M`wF#?o_L)Mkq+D%_WBeGKl8yI1ES-VOAZy0Hu$9lET?7x?o-;3EN(-f%N747^}9N zUWw&H@N7QVKvGwk3q-3s(7<%KD}9ahPvj; zqTkY`aDJmCXevL3tflHW-|G?9>YQLom;PebUX37`r*4vs%eV;HHBMd@d6T@055efC z0|rkN6Hieo@-kqYoG%oGP`7B@lCc1p-j#6phYonyG?DS)Rj4Dei^{#U!5X%^WW4fW`LfIv_jp*2XT4J1B_eGOVxKIVWOckxv0H> z1pinAy3QL2Q~Q8S{JH=w4hzxs#Wnm7O7KkgTdMF!g@(S7q_Nc+oD)vxINf)gfa{DQ z(OW)6f)?=-v4VeOZL$LS#rqHiedDmJ=PoSBdP?FMgjp(eu*7p57bba9F4sgnZzW8h zf0w22`L$`uVr?cb`zoX5vy6QFvW?u8Ohe0EJdADFXZrWj0?0iOK-_Hfb;;EqufRLf z8?swikpCc?uIIT3&j)5~7m>Z4uaNPcEzO8Don!Rx{l=6v!kF6QMKkGrEPSGgYaChB zcIQHRE2xDoS$Y?h90Va-_y3A%xHIY>5G&!jq13{Um$yJYJB6;15IB!q` zX3tY3pXb8Gp><>ldXPrXY4S0C32J7nL++y=;ji&M$S{?LIia@1qCFW-RNbK(?zYTQ z5g~T1N(NIZD#UE#UCRhQsG~PW9x`esADP)dgQ$AX8hXsZ2GxE%#iTe*D)1krc4s%w zbk+pK4l=OGMw*0tgrpK-Tf!*yx~)uYK*{ctb9$bs0aXnodF4 z&;M9uYR^bqusHE#{t|TPVtv`oOFYvh$?4`GD(C|YuhuYK(b+~N$wPdyI~|i;k5RdD zIY!4^g_*0AO1lpIWOhB8#|S-W2X&hyvOl5`oGwi;R%PoM6+Rt^lP&>;UkIW*w&=3D zDqP^uO@FZ6#D;rY_R;k_#lc>>A97dpz~*&V!1LI3_?!8WSwD4wdDnW6T7({^Nr6-N z&bJK3hVJ8;>QS2gwTTuD2jg3ID7uj8+G5F0U5_?szuv$oB+3&dCSgi6hD^ygE^||3PiIVVv`A@f!&X%Lbd*eee_D(FulFJ*$lJO=>r|FvJ{VLg7|-Va4{C{d;qN*X@RefE3p&k!=D z`WiBoM4w2bN@j@$X^=!nh?FE{NTeiVW|<-?Q+y4XQW$ce|!w>Vlr$LJ2p162f=(?#=T%@8QbBYsqF+VX1e=J<}13Q@Z%$N zSoVTvO!28Nvo#K|w8D6VF$ z*kk)^$y!^HxajswQSqIZv~`v%owe8G6PuiQqKz}p5*Kh5bDrWS7SgKfb$sR5^O6NG zsw8LLe8dhrPgd8|#1yUWLSvDJ(5{ands?>@D_-o!lCvKW_0b=Nt<^9%K8MBa9tXj! zuhdqhAyQdCk>8zc%~Mlul55dA5GBOMxPv>QWYR-{~(WPOmu;JQZW;Q}9EZFPM*3^z;^Bnp! z_3>@2hm9GlD=HT1{#?jfU;kjI{3_r(xfk_&5JK5VtXE}Hg_(DSm!q|WpO!izpyr84 zDdrTf=>;5A=#PzW^VzX+2bnnauz*e2GzZ!hGvSxNieAY6BE_52G2;3ISh&Vx%Gnf_ zJG2ln!u{0w?gSE4TajsbEcZ&eAk}D5l8$__gO4ux#8am!(GQyxZk;oQzqfeL+pI=V zmz_b>lHZWUGehCxf3*F?cUGjV`i>{up2K@&Eyl{WS4g<>17AEOv@QQV(gHW5>$3vnSdS5P zbCmMaPUm^6Ndvv^^+mL$pNF__zz?aa{%z^E$`PN551S_7;JG9w-#r2Q9{cnBer0g}u%6}WoP>94j8r>4QZjW^B>SkL z%qmJ;5wk{~KRNc0PM__Fw$D$Hwq*=V&MjdWeq6wUW(TrIhka0D_JfLyt5F)LhvC(O zFfzlF73?=gX5CGcr2FIfBRA5$aERn;3{Y}^xO8qG6-je}9sQm5jQ7=0=kbrd>C>y_ zV(%@@VoK|X1T`UTGt@)z=M1>0jc3`}qhQx#44Z7$#xjo_Vz)msXx%l$D4j;EDT~DY zcZH-}X~i`o9r^9`U-*Y-<9YQIDPM9=k18FiSX;wa7<#wCsr3uRFJ?F-*bJwp9Q2y< z5DCXaMLjASL{?MIb4mH%xKU<-jfwX~tqzl<$J~OYn~oMpSGEmx=;EzO2a^uMXuwI> zFG^yk6yC7H|y^LLvur6qmctU-u;4j+O*4J zrw?P9ea%&t8PiPWjm!AaQX?`uGK+Mpy5fRscMR#D$M$}T6R;?iV*HhCK<<1TN&6l| z`Y0C+{BVoy{IUzu_u=q%n~GJdryyQ_D-Jxq0Sz1SQbn%Ih z&iiPM(nd9!Y;MzD`dm;u<^ZcoSA*)&GnE@PK#!(ax>Y{Md>h0P$Z?k-N|yq23(YsW9(8n43#?2fb8dZ*}9+EZ!ltVPcE@l z_w127^Qg#U*iR9=tIqDs?j}?>T~9xbsqutyDdaTF2k$cUaII<}!U7hv2imm)*06jj zHmX+BI5S`DI+B3-31U`r%bC>*N}w}nKFs^Je_{H&V!>g1+&A^a6T2X6?$QzPx+>W@ z%|a5}YXqy`wOrIW#7eBaVI7r(M2WvYcq}g1GmE+@jD~yYTIee5Vjz`eFPT} zWBd%M;!9YpQ^vn%LpHC_5nr0|_ znv~6UPclTWyk;JCc0AwJ>n}PmDV}uo2S9A0iOml6v~G1K{T=j{<`f2@<(XD{KsY3l zAuQ>$uK@Ac6?j?p3DS8g?3o}GcK$2bvdoF>l(Y$*b_GB~$qv>A9*B#uMC!~A@H;O; z>B;qoE1k@Tw=Lo3TGLp0jyE(k&Dq}76}+>@WvNzVwKOvCHQD=bqkuD|Wb=M2mTZ|x zl70JWe|#x5KiWNesTZe4g{WP2=JPcql zZ5J`^h9mAKRABpiSH!vO!jy|XD7>7@7p#fkk^8Rmr%H`HT|<*zZgQa|K1Dd~5reCj z4q@ZQM`W+0#9pEr{%39?Hr5Qs<+NyZ$80{@bveEFo5Qy*+biyTWUxcG+%XbY6?N|J zZcJ%!4~g`l!l&JRAYoyq(!TDWM9$5nq7_>+G5G9v)?1siv|EP4^Em=2n`~lBluMa% z*-H}lTt^dkoaK(f@6zhbX;P)XX5r_i3i8@#iBp!lkgKjmfx0hfM@9shrQRabl*fpb zbAg`bSaxcBsQ^)3Lve4=YqqYfoL$K2%F<ao*CJa*TgRBF?5OY|BrPpF9-Nk9NT(8v#Cz*TB1|pQQKo7#T!5 zk#Wo$oOu_6!hj`+&F{d9w-pO8F3JJgVQ++ODsC)m?Gkh~NrF{GHUgg8W37=FavEM> z(c~6*_YXl$RV(#Q=!Zw5GbmMkAeQbsEEb%YNu!Kxc}9gLudG~0ecVEDe3Tv;oL)vr z21{tx)ihj655lHGDUE&c2HGzw@m;$O-`;e=9o-rnc07tPf-`Ynr(@zOHZKWtq{q6=djJK70DaKsM%A)jXKwJ>3UiHJ0I}{TwWzf! zD^A9@_;aK=-WOl2+)3M}oZB6FA@cjXvnU2ue9aVBUZ%Q_rr%UWO=1-eu5-eMFke!d zyqrdKHY9V;KrFn}o6O$jBYyie90qTBIkyg3oqhE%TzqeB(!)hz-2WJ8vLmo z58@AEJ9~xuf_OY0nun_sV{s?sA}+kQB~ge6|7*`rY6(+8^0TE_raX{Lzij8bYfHG6 z+h8h9ZKjnzpUCRi9=tl8j5kdY@JRoO4>vcH-0H`acq^3hJB_D&n`2bu6H1EP5^*4V z6d(EdC<+S{;E?kLodSEZ=gD4JePjUYy37#uiEzNY>yI&Y*HxbLF&xo0wM_Y77WDGI zvin6T>_p8;L^aOk(muB+^`k4Bm(#$GNp1MgsgB%p&t|%8l1UR6HIw&-Ei}Jp2x+FD z#-3&YqOWabZGAIgomRw>AE*mhQsXmWb_g;3i=A1p-F)<#l!B2nY~URI4%LsBq3GFR zqPW|gEsE5LKtjOL?18O=Vt1JsA?`I?HNf*$!5>zW!Af;ax@^{QZo$(IR7f0Z} zn-UHlm!j5d3w7E)k5pg2q+aLZDbeUQmoGBn11_slf&L0Aa9fAeS|7~nah%jwZRcxB z#PrbIogQgNkpH848k{);n+;Bre5w<2*A>FO(TKDsQw5eh?9?vAv#Y;?DBvIPx0Q z!9kTe)fJF}5^69$+T%xDy4q=K{BO{WYW11 z+q?FK;OGa&j zXZE^}$?;mkuU`kVXVbP(Q7>~U*C<13@AK$>;xR4xv7fI@ip9rnPiWUe2Rh$fM0=*a zBlp4gXj;Y=8W|%`Yl6~9HD?M^_s5|&%UOWKO+oBR@pqPrkk-;l8lu*X zIyR_~T-H)N{pn0YwkeRT(u7iKM^o3$7f3Nb9>v{mV$r?%C~U9AIR!&Vcim!ye3Hk6 zBL}JWfCKG(ewt1Vs-?x9F3=@;8`?iaAF<<7k*Q(ceso_1st&=qo`+~zO$?3wcnZ&z zo|Dp*-Zb-z8?8~lNx_~MnX$%rmb(5S=DQL0TsUfA=H|X^hH*ykI zVGylAxaVGMigRaGg;K5}iD#+%u6`AA=i z%RWIXC(fqvFJowM#5YnNorDt2E!dZJ1yT9a1?)IEfr5Gn7aMJZ$}~^R&WgwRG(S?l zzmIwrHPcuXDHWCMq|M6Cv^;eZiPF-68D7&7_d9 zm+ZGZBn78d?77z;>FZ4pHAWo?YXm5{wGJy|+%Rfj3&Ks-;r9GI>X&_=RE?ga@@frk z1=^uCaXaZ%8`FRf4%GR}1)Tq$id3UlNX~qV)zi#SwpK{u%{k=nF$KFWKSkFL-N`<{ zgRn==)+;ezM#sH z8FFw7C1ms=)%A6#9IzNWo_NA#VlCz;ZxpZwRcE&AR0SKFd=di(Z^On_qp&^6nKZVH zB|VL&J{RTS;-?dUErqBi*VS zc%oN?^7}V%?~)l-XJkQkvVHLi3sIbE1jkDr2-Y`3@&k9&^#+Phh2m=5PwHWAjJi>k zc&?m-*u=kaq+k*9XDTE1+#`f8493OJx5&JFJjrFO#JRLNWHdbk8Y#=+n6Zu`)n1d) zW@GF;T#BpQk7jWUSjXu5PWVn#-o$bWVLWNZgqc) z)D6$^x}}~p?k%Lm+e7KnhF3hJu@4u8Ct~SVLk!-mgt(Krh>pu7-*e;ebJ;xR>^g@% zlbgoMBD=AfHV(8h{XNad8HuQbsh|Og)ct5MoQxTb8BxvGc5tPiWt`Ga=27{YQ?$Ks zDk)6RMVzG_GS0t4q3&cvtBr<5%o+h3*mn|(dRxqXXm-Sq%de1VqmHC)6R^yuBaZnz zC!L+I$x&+v`Rf^X7w(Im*^*}NpZmHEh*SHZYA_OCgHCY9bjClhWUF+sKc|qDA=ov{y)62_`*Bn zmfgg5^I&M(8baf22#msSp)|3M29@sy>s|}L5A#Vm-URzcq_fJLPuTW#Gz}Yh9BET6 z5$NuMw2&H7TXX?e(~e<(^EWiuw~<hXM(fiNzzJnuax!t2eC}H(33WbePo0aU($FA%sZ(G$}~tMgr1)ohUjP@DfAw6DnnRZ<#6^y&jIyopTIUc5UT>!Ffn2rtfI_V>Z%O3 zrMEt-%k2%@l9kx^^(A$Fv5>9txB~eZZ?JIZU8Hs!$F4=4gyP9#So_u!r>{37Fgyt= z=>wqGe;JYj4Y6iVD;De;0`I$_*tJxIyn^TO{A_`YZGRzYVh)0HPasmJjY|_>B7cQG zZcf;Rvf%3|aQ34G@&{tY9s0soJ4)*T7?^O5I# z9&7Uwv7^sxbZ@9+8|^%yhLKGs5PXe=OQ;S! zPVB;>uO1llbPF=!!ED|QVFO=oLHC_8806lWy-Uj!HhZ3i@@os$&=?NwMUP=}_c`=^ z`=QHaa|Avf%$irEu?rC^*yTb)7+h7yu=JTwSe?Q?=hVXEuU_b(xf8=xG7&b&7^l9< zlhWojgkeP_+^0lC8zeNzp%S01ds2s$mFUo3a#!~JjMEdwi8FNOii^r_uzcRkS~^)_ zs>@ZZa+6~}Pi$pZ^slmSo?Y38=5)9^DIlZjIc}UXz}D3f*!Hv^6h@_>&xL5Dj90*& zhc2Wr`4b9e>tVWeDI{K+=<#!i0CH}r7@b~08s7EP|5X@y2Q8(=y+hkiH%YYP*bKVT z*?yO=M8TQ0xVuO1}O!2z{)8oCM z&+lP-u5%XeY{vA*wU>ate=+-WMr=;U%k1>cJ?wyy3Jdw}z)A~~*xNEC z*7n#2RxQa;TVTlMM_&_e^>JfeO>VJ>n~f}Xe2#ss*oV3= zzBkKzSjv=w=CE@w7qUVPZML$!O!&fsvC%;bnX6|eTkSrWjb8*dTYV7QUD*hY+WnZX zZi?EMGw`|IhkEZ!BAu@9$mYEZj#PQ$%>rxeONe5%R~=w^pnazyMr@;NB9=D2Wq$r9 zOwd!rx_+-_ds!-rG(5--E^%ZD&e3dVf+9QJZ41=LS+G~-&TM)8R`z5#V{>%V>9g85 zu6l6~{xXPw%l=E~8#@IWhrh8MPmVIxHe0#>d(6zu%q6Z~i$=-3yk#MB|1Ai9^MASv z1XkAnA^*}_2rMlu<@6TG{XbwqXqZ<>`|xuAJF&Fa3kdTKkZ}t;p}@{UXeG2Uv#}Ej zZH3m#a)05%q(oo=lX_*{kQCYTkG~cZeeFKsou!4ft(>0V|EK-$7as6GG5!-5$n+-2g7qwgdKUIfV8tvf^ehFI zw#xrCF_gmsf<0&1+1vS8d(XC#35C|yLTfMY_L|`}YxZm}9~*(Cot<)cuq-UZD^$7t z3X_E>`vwLt2-EZN^_PV*J(<5O+$+pCC{XWLSKf<$-xmK@qhGoZFW=ubzJcx9e@Fpd zfq}k(b3&Ep$O2^{USTqCy;+O(Ld-&a1I!kB{T|9UtX=f?lZAwG%XV+9O!NZ07X8w2 z%U?-mq8B0yFw^^&iNN04PT6}w$Zwa7LS?hfhH&98yI_1kQ>;FsC*YjS)^?$FnzPqxX_u_xH7VGQ%TIAoYU()Zk zXSkRD0vWdv{L=~je+5DRx5hKvUHKm-?KAo{wci&19vuB&s(<#;zBKKt6dX2}>$m68 zFQMI;e@`dwuB`u`va9{cKf}N+Z1e(r1AhgeJ%57#F-*{cu=f1${72iSy$>Is1)=Sx zp0k78m1RCY?KVQax$Ti|7c6b`=6d-D&-LO~zm&6NVP5T8+xEEydItq~hRS5#+(Iuf tI3#FxD7X0Yb^F5~{_uxC{NWFO_`@Im@P|MA;Sc{y_&36#4YB}00RSI`(J%l2 literal 39845 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 diff --git a/raster/r.sim/r.sim.water/testsuite/data/discharge_default.pack b/raster/r.sim/r.sim.water/testsuite/data/discharge_default.pack index f2c2861a141d49fb6b87cfac0e52f10210b6de35..58124f0cfe2ee055871a04bfeb2026b1fead4afe 100644 GIT binary patch literal 39619 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 k(M1t<8 diff --git a/raster/r.sim/r.sim.water/testsuite/test_r_sim_water.py b/raster/r.sim/r.sim.water/testsuite/test_r_sim_water.py index b765f5b6d2a..5d9f0dafca6 100644 --- a/raster/r.sim/r.sim.water/testsuite/test_r_sim_water.py +++ b/raster/r.sim/r.sim.water/testsuite/test_r_sim_water.py @@ -252,7 +252,7 @@ def test_default(self): random_seed=1, ) self.assertRasterFitsUnivar( - self.depth, reference="sum=30423.190201", precision=1e-6 + self.depth, reference="sum=30424.022289", precision=1e-6 ) diff --git a/raster/r.sim/simlib/hydro.c b/raster/r.sim/simlib/hydro.c index 0c03eb2476d..5e70814fb71 100644 --- a/raster/r.sim/simlib/hydro.c +++ b/raster/r.sim/simlib/hydro.c @@ -69,6 +69,26 @@ void main_loop(const Setup *setup, const Geometry *geometry, G_debug(2, " maxwa, nblock %d %d", sim->maxwa, nblock); G_debug(2, "rwalk, sisum: %f %f", sim->rwalk, setup->sisum); + // Each walker draws from a random number state of its own, so its + // values depend on the seed and the walker's number, not on the + // thread which moves it. The bound is what a walker draws: two values + // when placed and, in each time step, a normal pair by the polar + // method (8 / pi values on average) and one more in a trap, with + // eight per step leaving room for the steps which draw more. + struct G_random_layout layout; + + G_random_init_layout_bounded(&layout, settings->seed, sim->max_walkers, + 2 + 8LL * setup->miter); + if (G_random_layout_runs(&layout) < 1) + G_warning(_("%d walkers over %d time steps may draw more random " + "numbers than one seed provides; the random numbers " + "of some walkers then repeat those of others shifted " + "by a constant"), + sim->max_walkers, setup->miter); +#pragma omp parallel for + for (int lw = 0; lw < sim->max_walkers; lw++) + G_random_state_for_unit(&sim->states[lw], &layout, lw); + for (iblock = 1; iblock <= nblock; iblock++) { int lw = 0; double walkwe = 0.; @@ -90,10 +110,12 @@ void main_loop(const Setup *setup, const Geometry *geometry, for (int iw = 1; iw <= mgen + 1; iw++) { /* assign walkers */ - sim->w[lw].x = - x + geometry->stepx * (simwe_rand() - 0.5); - sim->w[lw].y = - y + geometry->stepy * (simwe_rand() - 0.5); + struct G_random_state *state = &sim->states[lw]; + + sim->w[lw].x = x + geometry->stepx * + (G_random_double(state) - 0.5); + sim->w[lw].y = y + geometry->stepy * + (G_random_double(state) - 0.5); sim->w[lw].m = wei; walkwe += sim->w[lw].m; @@ -235,12 +257,7 @@ void main_loop(const Setup *setup, const Geometry *geometry, double d1 = gama * conn; double gaux, gauy; -#if defined(_OPENMP) - gasdev_for_paralel(&gaux, &gauy); -#else - gaux = gasdev(); - gauy = gasdev(); -#endif + gasdev(&sim->states[lw], &gaux, &gauy); double hhc = pow(d1, 3. / 5.); double velx, vely; /* Diffusion coefficient of this walker's move */ @@ -261,7 +278,8 @@ void main_loop(const Setup *setup, const Geometry *geometry, if (inputs->traps != NULL && grids->trap[k][l] != 0.) { /* traps */ - float eff = simwe_rand(); /* random generator */ + float eff = G_random_double( + &sim->states[lw]); /* random generator */ if (eff <= grids->trap[k][l]) { velx = -0.1 * diff --git a/raster/r.sim/simlib/input.c b/raster/r.sim/simlib/input.c index 0ee0f8ecf41..34ec97c97b6 100644 --- a/raster/r.sim/simlib/input.c +++ b/raster/r.sim/simlib/input.c @@ -64,6 +64,8 @@ void alloc_walkers(int max_walkers, Simulation *sim, const Outputs *outputs) sim->w = (struct point3D *)G_calloc(max_walkers, sizeof(struct point3D)); sim->vavg = (struct point2D *)G_calloc(max_walkers, sizeof(struct point2D)); + sim->states = G_calloc(max_walkers, sizeof(struct G_random_state)); + sim->max_walkers = max_walkers; if (outputs->outwalk != NULL) sim->stack = (struct point3D *)G_calloc(max_walkers, sizeof(struct point3D)); diff --git a/raster/r.sim/simlib/output.c b/raster/r.sim/simlib/output.c index f322ac65221..ea92101b78d 100644 --- a/raster/r.sim/simlib/output.c +++ b/raster/r.sim/simlib/output.c @@ -16,6 +16,7 @@ void free_walkers(Simulation *sim, const char *outwalk) { G_free(sim->w); G_free(sim->vavg); + G_free(sim->states); if (outwalk != NULL) G_free(sim->stack); } diff --git a/raster/r.sim/simlib/random.c b/raster/r.sim/simlib/random.c index 8a0774695fc..d4a2085d23f 100644 --- a/raster/r.sim/simlib/random.c +++ b/raster/r.sim/simlib/random.c @@ -1,55 +1,72 @@ /* random.c (simlib), 20.nov.2002, JH */ -#include -#include +#include #include +#include + #include -#include -#include +#include -double simwe_rand(void) -{ - return G_drand48(); -} /* ulec */ +#include -double gasdev(void) +/*! + * \brief Return the seed of the walkers' random numbers + * + * The seed is generated with the flag, read from the option, or 12345 when + * neither is given. A seed which is not an integer or is outside the range + * the generator accepts is a fatal error, here, before any input is read. + * + * \param seed the seed option + * \param generate the flag to generate a seed + * + * \return the seed + */ +long long simwe_seed(const struct Option *seed, const struct Flag *generate) { - /* Initialized data */ - - static int iset = 0; - static double gset = .1; + long long value; + struct G_random_state check; - /* System generated locals */ - double ret_val; - - /* Local variables */ - double r = 0.0, vv1 = 0.0, vv2 = 0.0, fac = 0.0; + if (generate->answer) { + value = G_random_generate_seed(); + G_verbose_message(_("Generated random seed (-s): %lld"), value); + } + else if (seed->answer) { + char *end; - if (iset == 0) { - while (r >= 1. || r == 0.) { - vv1 = simwe_rand() * 2. - 1.; - vv2 = simwe_rand() * 2. - 1.; - r = vv1 * vv1 + vv2 * vv2; - } - fac = sqrt(log(r) * -2. / r); - gset = vv1 * fac; - ret_val = vv2 * fac; - iset = 1; + errno = 0; + value = strtoll(seed->answer, &end, 10); + if (end == seed->answer || *end != '\0' || errno == ERANGE) + G_fatal_error(_("Invalid random seed <%s>"), seed->answer); + G_verbose_message(_("Read random seed from %s option: %lld"), seed->key, + value); } else { - ret_val = gset; - iset = 0; + /* default as it used to be */ + value = 12345; } - return ret_val; -} /* gasdev */ + /* The layout, which refuses a seed out of range, is built only when the + * number of time steps is known. */ + G_random_seed(&check, value); + return value; +} -void gasdev_for_paralel(double *x, double *y) +/*! + * \brief Draw a pair of independent standard normal values + * + * Uses the polar method, which rejects points outside the unit circle, so + * the number of values drawn varies, 8 / pi on average. + * + * \param state the random number state of the walker + * \param[out] x the first value + * \param[out] y the second value + */ +void gasdev(struct G_random_state *state, double *x, double *y) { double r = 0.0, vv1 = 0.0, vv2 = 0.0, fac = 0.0; while (r >= 1. || r == 0.) { - vv1 = simwe_rand() * 2. - 1.; - vv2 = simwe_rand() * 2. - 1.; + vv1 = G_random_double(state) * 2. - 1.; + vv2 = G_random_double(state) * 2. - 1.; r = vv1 * vv1 + vv2 * vv2; } fac = sqrt(log(r) * -2. / r); diff --git a/raster/r.sim/simlib/simlib.h b/raster/r.sim/simlib/simlib.h index be11d77350b..da354ac57e4 100644 --- a/raster/r.sim/simlib/simlib.h +++ b/raster/r.sim/simlib/simlib.h @@ -7,6 +7,8 @@ #include #include +#include + #define EPS 1.e-7 #define UNDEF -9999 @@ -37,6 +39,7 @@ typedef struct { int timesec; // Time how long the simulation runs [minutes] bool ts; // Time series output double mintimestep; // Minimum time step for the simulation [seconds] + long long seed; // Seed of the walkers' random numbers } Settings; typedef struct { @@ -62,8 +65,9 @@ typedef struct { int maxwa; // Number of total walkers double rwalk; // Number of input walkers per block as double precision struct point3D *w; // Weight of walkers - struct point2D *vavg; // Average velocity of walkers - + struct point2D *vavg; // Average velocity of walkers + struct G_random_state *states; // Random number state of each walker + int max_walkers; // Number of allocated walkers, maxwa plus one per cell } Simulation; typedef struct { @@ -198,9 +202,8 @@ void create_observation_points(ObservationPoints *points); void derivatives(const Geometry *geometry, float **elevation, double **dx, double **dy); -double simwe_rand(void); -double gasdev(void); -void gasdev_for_paralel(double *, double *); +long long simwe_seed(const struct Option *seed, const struct Flag *generate); +void gasdev(struct G_random_state *state, double *x, double *y); double amax1(double, double); double amin1(double, double); int min(int, int); From 1cf8a00ac597899dc108a8f4010febeaa4718b4c Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Wed, 30 Sep 2026 16:02:10 -0400 Subject: [PATCH 08/28] r.sim: Add copyright lines to the random number tests The two new test files carried the license identifier only; add the copyright line the style guide asks for in every file. Written with the help of Claude Code. --- raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py | 1 + raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py | 1 + 2 files changed, 2 insertions(+) diff --git a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py index a97263e938b..ec46b0e30ab 100644 --- a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py +++ b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py @@ -1,3 +1,4 @@ +# SPDX-FileCopyrightText: 2026 GRASS Development Team # SPDX-License-Identifier: GPL-2.0-or-later """Tests of the random numbers of r.sim.sediment. diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py index 19d27b4f5cc..d5c620eacfd 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py @@ -1,3 +1,4 @@ +# SPDX-FileCopyrightText: 2026 GRASS Development Team # SPDX-License-Identifier: GPL-2.0-or-later """Tests of the random numbers of r.sim.water. From 7c0d77691cb7e570cf0e6f3c79c154b65f45b6f0 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Thu, 1 Oct 2026 02:17:58 -0400 Subject: [PATCH 09/28] r.sim: Keep each walker's random number state in its record Make the struct G_random_state of a walker a member of the walker's record instead of an element of an array of its own beside the walkers. The walkers get a type of their own, struct walker, because struct point3D also serves the output walkers, where m holds the elevation and no state is needed. The random numbers are the same; only where the state lives changes. At nprocs=1 the depth, discharge and error maps of r.sim.water, the five output maps of r.sim.sediment and the output walkers are bit-identical to the previous commit, so the tests and their pinned values are unchanged. The array cost time. On the whole nc_spm elevation (6 million walkers, 145 time steps) at nprocs=1, pinned to one CPU, median of 8 runs, r.sim.water took 53.8 s with the array and 50.0 s with the state in the record, close to the 49.4 s of the per-thread states of OSGeo/grass#7884; at nprocs 4 and 16, 13.3 s and 4.8 s against 14.1 s and 5.1 s with the array (median of 3 runs). Why the array costs this much was not measured. Likely it adds one more stream of memory reads and writes to each walker's step, where the state in the record shares the cache line with x, y and m, and the loop passes the address of an array element to a library function, which the compiler cannot see through. Written with the help of Claude Code. --- raster/r.sim/simlib/hydro.c | 8 ++++---- raster/r.sim/simlib/input.c | 3 +-- raster/r.sim/simlib/output.c | 1 - raster/r.sim/simlib/simlib.h | 15 +++++++++++---- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/raster/r.sim/simlib/hydro.c b/raster/r.sim/simlib/hydro.c index 5e70814fb71..8b563793550 100644 --- a/raster/r.sim/simlib/hydro.c +++ b/raster/r.sim/simlib/hydro.c @@ -87,7 +87,7 @@ void main_loop(const Setup *setup, const Geometry *geometry, sim->max_walkers, setup->miter); #pragma omp parallel for for (int lw = 0; lw < sim->max_walkers; lw++) - G_random_state_for_unit(&sim->states[lw], &layout, lw); + G_random_state_for_unit(&sim->w[lw].state, &layout, lw); for (iblock = 1; iblock <= nblock; iblock++) { int lw = 0; @@ -110,7 +110,7 @@ void main_loop(const Setup *setup, const Geometry *geometry, for (int iw = 1; iw <= mgen + 1; iw++) { /* assign walkers */ - struct G_random_state *state = &sim->states[lw]; + struct G_random_state *state = &sim->w[lw].state; sim->w[lw].x = x + geometry->stepx * (G_random_double(state) - 0.5); @@ -257,7 +257,7 @@ void main_loop(const Setup *setup, const Geometry *geometry, double d1 = gama * conn; double gaux, gauy; - gasdev(&sim->states[lw], &gaux, &gauy); + gasdev(&sim->w[lw].state, &gaux, &gauy); double hhc = pow(d1, 3. / 5.); double velx, vely; /* Diffusion coefficient of this walker's move */ @@ -279,7 +279,7 @@ void main_loop(const Setup *setup, const Geometry *geometry, grids->trap[k][l] != 0.) { /* traps */ float eff = G_random_double( - &sim->states[lw]); /* random generator */ + &sim->w[lw].state); /* random generator */ if (eff <= grids->trap[k][l]) { velx = -0.1 * diff --git a/raster/r.sim/simlib/input.c b/raster/r.sim/simlib/input.c index 34ec97c97b6..25a5babef09 100644 --- a/raster/r.sim/simlib/input.c +++ b/raster/r.sim/simlib/input.c @@ -62,9 +62,8 @@ void alloc_walkers(int max_walkers, Simulation *sim, const Outputs *outputs) { G_debug(1, "beginning memory allocation for walkers"); - sim->w = (struct point3D *)G_calloc(max_walkers, sizeof(struct point3D)); + sim->w = (struct walker *)G_calloc(max_walkers, sizeof(struct walker)); sim->vavg = (struct point2D *)G_calloc(max_walkers, sizeof(struct point2D)); - sim->states = G_calloc(max_walkers, sizeof(struct G_random_state)); sim->max_walkers = max_walkers; if (outputs->outwalk != NULL) sim->stack = diff --git a/raster/r.sim/simlib/output.c b/raster/r.sim/simlib/output.c index ea92101b78d..f322ac65221 100644 --- a/raster/r.sim/simlib/output.c +++ b/raster/r.sim/simlib/output.c @@ -16,7 +16,6 @@ void free_walkers(Simulation *sim, const char *outwalk) { G_free(sim->w); G_free(sim->vavg); - G_free(sim->states); if (outwalk != NULL) G_free(sim->stack); } diff --git a/raster/r.sim/simlib/simlib.h b/raster/r.sim/simlib/simlib.h index da354ac57e4..8a44ef09dd6 100644 --- a/raster/r.sim/simlib/simlib.h +++ b/raster/r.sim/simlib/simlib.h @@ -63,10 +63,9 @@ typedef struct { int nstack; // Number of output walkers struct point3D *stack; // Output 3D walkers int maxwa; // Number of total walkers - double rwalk; // Number of input walkers per block as double precision - struct point3D *w; // Weight of walkers - struct point2D *vavg; // Average velocity of walkers - struct G_random_state *states; // Random number state of each walker + double rwalk; // Number of input walkers per block as double precision + struct walker *w; // Walkers + struct point2D *vavg; // Average velocity of walkers int max_walkers; // Number of allocated walkers, maxwa plus one per cell } Simulation; @@ -166,6 +165,14 @@ struct point3D { double m; }; +// A walker: position x and y, weight m, and its random number state +struct walker { + double x; + double y; + double m; + struct G_random_state state; +}; + void alloc_grids_water(const Geometry *geometry, const Outputs *outputs, Grids *grids); void alloc_grids_sediment(const Geometry *geometry, const Outputs *outputs, From cf9f2fe1b45f0ac3dc2cfe3c6f53864bc25011d3 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Thu, 1 Oct 2026 15:44:25 -0400 Subject: [PATCH 10/28] libgis: Rename the random number seeding, whole-span and batch functions G_random_seed() becomes G_random_state_from_seed(): it places a state as G_random_state_for_unit() does, and the old name read as returning a seed next to G_random_generate_seed(). G_random_init_layout_spread() becomes G_random_init_layout(): the layout which gives the units the whole span is the basic one, of which a single seeded state is the case of one unit, while the exact and bounded layouts are those with a known stride. "Spread" also names a process in tools which would call the function, such as r.spread. A run becomes a batch, so G_random_layout_runs() and G_random_state_for_run() become G_random_layout_batches() and G_random_state_for_batch(). A batch of units says what the second index is whether a program uses it for the members of an ensemble, for repeated passes or for the processes of a model, and "run" keeps its ordinary meaning. The internal init_layout() becomes fill_layout(), the fields of the layout and the limit on the units of a layout of the whole span are renamed to match, and the messages say batch. The longer name of the limit realigns the neighboring definitions. Nothing else changes; the tests are renamed with the functions. Written with the help of Claude Code. --- include/grass/defs/gis.h | 13 +- include/grass/gis.h | 16 +- lib/gis/lrand48.c | 192 ++++++++++----------- lib/gis/tests/lib_gis_lrand48_test.py | 234 ++++++++++++++------------ 4 files changed, 236 insertions(+), 219 deletions(-) diff --git a/include/grass/defs/gis.h b/include/grass/defs/gis.h index bd9952d3202..529354c9596 100644 --- a/include/grass/defs/gis.h +++ b/include/grass/defs/gis.h @@ -518,20 +518,19 @@ long G_srand48_auto(void); long G_lrand48(void); long G_mrand48(void); double G_drand48(void); -void G_random_seed(struct G_random_state *, long long); +void G_random_state_from_seed(struct G_random_state *, long long); void G_random_init_layout_exact(struct G_random_layout *, long long, long long, long long); void G_random_init_layout_bounded(struct G_random_layout *, long long, long long, long long); -void G_random_init_layout_spread(struct G_random_layout *, long long, - long long); -long long G_random_layout_runs(const struct G_random_layout *); +void G_random_init_layout(struct G_random_layout *, long long, long long); +long long G_random_layout_batches(const struct G_random_layout *); long long G_random_layout_length(const struct G_random_layout *); void G_random_state_for_unit(struct G_random_state *, const struct G_random_layout *, long long); -void G_random_state_for_run(struct G_random_state *, - const struct G_random_layout *, long long, - long long); +void G_random_state_for_batch(struct G_random_state *, + const struct G_random_layout *, long long, + long long); void G_random_advance(struct G_random_state *, long long); double G_random_double(struct G_random_state *); long long G_random_generate_seed(void); diff --git a/include/grass/gis.h b/include/grass/gis.h index 9a1e8838454..f3cf925dc9c 100644 --- a/include/grass/gis.h +++ b/include/grass/gis.h @@ -629,23 +629,23 @@ struct Popen { }; /* A position of a pseudo-random number generator owned by the program; - * see G_random_seed() and G_random_state_for_unit(). The contents are - * private to the library and may change with the generator; read and - * advance the state only through the G_random_*() functions. It is a - * plain value: copying it copies the generator's position. */ + * see G_random_state_from_seed() and G_random_state_for_unit(). The + * contents are private to the library and may change with the generator; + * read and advance the state only through the G_random_*() functions. It + * is a plain value: copying it copies the generator's position. */ struct G_random_state { unsigned long long state; }; /* A layout: a seed and the way the generator's span is cut into streams - * of stride draws, one per unit of work and run; see - * G_random_init_layout_exact(). Private to the library. */ + * of stride draws, one per unit of work and batch; see + * G_random_init_layout(). Private to the library. */ struct G_random_layout { unsigned long long start; /* generator state at the seed */ long long units; long long stride; - long long runs; /* runs that fit into the span, 0 when none */ - int spread; /* a spread layout allows a single run */ + long long batches; /* batches that fit into the span, 0 when none */ + int whole_span; /* a layout of the whole span holds a single batch */ }; typedef int CELL; diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 48a2270cad5..1673815ed25 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -25,7 +25,7 @@ * unit a sequence fixed by the seed and the unit's number, not by the * thread that draws it. The library places the units within the * span, the first 2^46 draws after the seed, a quarter of the generator's - * cycle: a layout gives every unit of every run a stream of stride draws + * cycle: a layout gives every unit of every batch a stream of stride draws * in it, and a state is put at the start of its unit's stream. See \ref * gislib_random_streams for the model. * @@ -66,19 +66,19 @@ typedef unsigned short uint16; typedef unsigned int uint32; typedef signed int int32; -#define LCG_A UINT64_C(0x5DEECE66D) -#define LCG_B UINT64_C(0xB) -#define MASK48 UINT64_C(0xFFFFFFFFFFFF) +#define LCG_A UINT64_C(0x5DEECE66D) +#define LCG_B UINT64_C(0xB) +#define MASK48 UINT64_C(0xFFFFFFFFFFFF) /* The multiplier has order 2^46 modulo 2^48, so two states 2^46, 2^47 or * 3 * 2^46 draws apart give values which differ by a constant for as long * as they run. The layouts therefore place all their units within the * first 2^46 draws after the seed, the span. */ -#define LCG_SPAN (UINT64_C(1) << 46) +#define LCG_SPAN (UINT64_C(1) << 46) -/* The most units a spread layout takes; see G_random_init_layout_spread() - * for why. */ -#define SPREAD_MAX_UNITS (1LL << 20) +/* The most units a layout of the whole span takes; see + * G_random_init_layout() for why. */ +#define WHOLE_SPAN_MAX_UNITS (1LL << 20) #if LRAND48_ATOMIC @@ -179,9 +179,9 @@ static int seed_from_environment(const char *name, long long *seed) * anything else is a fatal error naming the variable. A value from -2^31 * to 2^32 - 1 is returned as it is, and a value outside that range is * reduced to its low 32 bits, between 0 and 2^32 - 1, with a warning. The - * result is therefore a seed G_random_seed(), the layout functions and - * G_srand48() accept. Record it, for example in the history of the output - * map, so that the run can be repeated with it as the seed. + * result is therefore a seed G_random_state_from_seed(), the layout + * functions and G_srand48() accept. Record it, for example in the history of + * the output map, so that the run can be repeated with it as the seed. * * The hash of the time and process ID lies between 0 and 2^32 - 1. Two * calls in one process within the same microsecond, or within the same @@ -237,8 +237,8 @@ long long G_random_generate_seed(void) * * \return the seed passed to G_srand48(), between -2^31 and 2^32 - 1; * where long has 32 bits, a value of 2^31 or more comes back - * negative, which G_srand48() and G_random_seed() read as the same - * seed + * negative, which G_srand48() and G_random_state_from_seed() read + * as the same seed */ long G_srand48_auto(void) { @@ -427,19 +427,19 @@ static void check_units(long long units) units); } -/* Fill in a layout of units of the given stride, all of one run first, - * then those of the next run. The number of runs that fit is how many +/* Fill in a layout of units of the given stride, all of one batch first, + * then those of the next batch. The number of batches that fit is how many * times units * stride draws fit into the span. Callers must check * beforehand that units * stride does not overflow. */ -static void init_layout(struct G_random_layout *layout, long long seed, +static void fill_layout(struct G_random_layout *layout, long long seed, long long units, long long stride) { layout->start = lcg_seed(seed); layout->units = units; layout->stride = stride; - layout->runs = (long long)(LCG_SPAN / ((unsigned long long)units * - (unsigned long long)stride)); - layout->spread = 0; + layout->batches = (long long)(LCG_SPAN / ((unsigned long long)units * + (unsigned long long)stride)); + layout->whole_span = 0; } /*! @@ -448,8 +448,9 @@ static void init_layout(struct G_random_layout *layout, long long seed, * Puts the state at the seed: it then produces the sequence G_srand48() * followed by G_drand48() produces for the same seed, so code moving from * the shared generator to one of its own reproduces its existing results. - * Use it for a single sequence; for one sequence per unit of work, use a - * layout and G_random_state_for_unit(). + * Use it for a single sequence, which then has the whole span to itself; + * for one sequence per unit of work, use a layout and + * G_random_state_for_unit(). * * A seed outside -2^31 to 2^32 - 1 is a fatal error. A negative seed * means its two's complement 32-bit value, as for G_srand48(). @@ -459,7 +460,7 @@ static void init_layout(struct G_random_layout *layout, long long seed, * \param[out] state generator state to seed * \param[in] seed seed, from -2^31 to 2^32 - 1 */ -void G_random_seed(struct G_random_state *state, long long seed) +void G_random_state_from_seed(struct G_random_state *state, long long seed) { check_seed(seed); state->state = lcg_seed(seed); @@ -470,25 +471,25 @@ void G_random_seed(struct G_random_state *state, long long seed) * * The span is cut into streams of exactly \p draws_per_unit draws, one per * unit, placed one after another from the seed, and then one after - * another for the following runs. Unit u of run 0 therefore draws what a - * single sequence from G_random_seed() draws at positions u * - * \p draws_per_unit to (u + 1) * \p draws_per_unit - 1, so the units + * another for the following batches. Unit u of batch 0 therefore draws + * what a single sequence from G_random_state_from_seed() draws at positions + * u * \p draws_per_unit to (u + 1) * \p draws_per_unit - 1, so the units * together reproduce a serial run whatever order they are processed in. * A unit which draws more than \p draws_per_unit values runs into the * next unit's stream; when the number of draws is only bounded, use * G_random_init_layout_bounded(). * * The stride is \p draws_per_unit. G_random_layout_length() returns it, - * and G_random_layout_runs() returns the runs that fit, 2^46 divided by - * \p units * \p draws_per_unit, which is 0 when one run does not fit into - * the span. See \ref gislib_random_streams. + * and G_random_layout_batches() returns the batches that fit, 2^46 divided + * by \p units * \p draws_per_unit, which is 0 when one batch does not fit + * into the span. See \ref gislib_random_streams. * * A seed outside -2^31 to 2^32 - 1, a number of units or of draws which * is not positive, or a product of the two beyond the range of long long * is a fatal error. * * \param[out] layout layout to initialize - * \param[in] seed seed, see G_random_seed() + * \param[in] seed seed, see G_random_state_from_seed() * \param[in] units number of units of work, positive * \param[in] draws_per_unit number of values each unit draws, positive */ @@ -506,7 +507,7 @@ void G_random_init_layout_exact(struct G_random_layout *layout, long long seed, "each is too large (the number of draws must not " "exceed %lld)"), units, draws_per_unit, LLONG_MAX); - init_layout(layout, seed, units, draws_per_unit); + fill_layout(layout, seed, units, draws_per_unit); } /*! @@ -520,16 +521,16 @@ void G_random_init_layout_exact(struct G_random_layout *layout, long long seed, * even stride would add its own power of two to that count. * * The stride is \p max_draws rounded up to odd. G_random_layout_length() - * returns it, and G_random_layout_runs() returns the runs that fit, 2^46 - * divided by \p units times the stride, which is 0 when one run does not - * fit into the span. See \ref gislib_random_streams. + * returns it, and G_random_layout_batches() returns the batches that fit, + * 2^46 divided by \p units times the stride, which is 0 when one batch does + * not fit into the span. See \ref gislib_random_streams. * * A seed outside -2^31 to 2^32 - 1, a number of units or a bound which is * not positive, or a product of the units and the stride beyond the range * of long long is a fatal error. * * \param[out] layout layout to initialize - * \param[in] seed seed, see G_random_seed() + * \param[in] seed seed, see G_random_state_from_seed() * \param[in] units number of units of work, positive * \param[in] max_draws most values any unit draws, positive */ @@ -553,11 +554,11 @@ void G_random_init_layout_bounded(struct G_random_layout *layout, "times the bound rounded up to odd must not exceed " "%lld)"), units, max_draws, LLONG_MAX); - init_layout(layout, seed, units, stride); + fill_layout(layout, seed, units, stride); } /*! - * \brief Initialize a layout which spreads the units over the whole span + * \brief Initialize a layout which gives the units the whole span * * For units whose number of draws is not known in advance. The span is * divided into parts, as many as there are units, or one more when that @@ -571,7 +572,8 @@ void G_random_init_layout_bounded(struct G_random_layout *layout, * 0.24, so a unit meets such a relation only after drawing about a * quarter of its stride. The odd stride puts units 2^i apart in number an * odd multiple of 2^i draws apart, as in a bounded layout. A single unit - * keeps the whole span of 2^46 draws. The layout holds a single run. + * keeps the whole span of 2^46 draws, as a state from + * G_random_state_from_seed() does. The layout holds a single batch. * * The number of units is limited to 2^20: the rounded stride loses up to * two draws per unit, which accumulate along the span, so beyond that @@ -579,27 +581,27 @@ void G_random_init_layout_bounded(struct G_random_layout *layout, * bounded layout serves any number of units. * * The stride is the length of a part. G_random_layout_length() returns - * it, and G_random_layout_runs() returns 1. + * it, and G_random_layout_batches() returns 1. * * A seed outside -2^31 to 2^32 - 1, or a number of units which is not * positive or above 2^20, is a fatal error. * * \param[out] layout layout to initialize - * \param[in] seed seed, see G_random_seed() + * \param[in] seed seed, see G_random_state_from_seed() * \param[in] units number of units of work, from 1 to 2^20 */ -void G_random_init_layout_spread(struct G_random_layout *layout, long long seed, - long long units) +void G_random_init_layout(struct G_random_layout *layout, long long seed, + long long units) { unsigned long long parts, stride; check_seed(seed); check_units(units); - if (units > SPREAD_MAX_UNITS) - G_fatal_error(_("A spread random number layout takes at most %lld " - "units, not %lld; a bounded layout serves any number " - "of units"), - SPREAD_MAX_UNITS, units); + if (units > WHOLE_SPAN_MAX_UNITS) + G_fatal_error(_("A random number layout of the whole span takes at " + "most %lld units, not %lld; a bounded layout serves " + "any number of units"), + WHOLE_SPAN_MAX_UNITS, units); parts = (unsigned long long)units | 1; stride = LCG_SPAN / parts; if (parts > 1 && stride % 2 == 0) @@ -607,21 +609,21 @@ void G_random_init_layout_spread(struct G_random_layout *layout, long long seed, layout->start = lcg_seed(seed); layout->units = units; layout->stride = (long long)stride; - layout->runs = 1; - layout->spread = 1; + layout->batches = 1; + layout->whole_span = 1; } /*! - * \brief Return the number of runs that fit into the span + * \brief Return the number of batches that fit into the span * * \param[in] layout an initialized layout * - * \return the runs that fit, 1 for a spread layout, 0 when one run of the - * layout does not fit into the span + * \return the batches that fit, 1 for a layout of the whole span, 0 when + * one batch of the layout does not fit into the span */ -long long G_random_layout_runs(const struct G_random_layout *layout) +long long G_random_layout_batches(const struct G_random_layout *layout) { - return layout->runs; + return layout->batches; } /*! @@ -638,30 +640,31 @@ long long G_random_layout_length(const struct G_random_layout *layout) } /*! - * \brief Put a generator state at the start of a unit's stream in a run + * \brief Put a generator state at the start of a unit's stream in a batch * - * The stream of \p unit in \p run starts (\p run * units + \p unit) * stride - * draws after the seed. The state is set whatever it held before, so the - * same call always restarts the same sequence. See - * \ref gislib_random_streams. + * A batch is one stream for every unit of the layout, and the batches + * follow one another along the span: the stream of \p unit in \p batch + * starts (\p batch * units + \p unit) * stride draws after the seed. The + * state is set whatever it held before, so the same call always restarts + * the same sequence. See \ref gislib_random_streams. * - * A \p unit outside 0 to units - 1, a negative \p run, a \p run other - * than 0 of a spread layout, or a \p run beyond the runs that fit is a - * fatal error. When no run fits, run 0 is still allowed, and only run 0: - * a tool which warned that its layout does not fit into the span may use - * it as earlier versions did. + * A \p unit outside 0 to units - 1, a negative \p batch, a \p batch other + * than 0 of a layout of the whole span, or a \p batch beyond the batches + * that fit is a fatal error. When no batch fits, batch 0 is still allowed, + * and only batch 0: a tool which warned that its layout does not fit into + * the span may use it as earlier versions did. * * Thread-safe as long as no two threads use the same state; the layout * is only read. * * \param[out] state generator state to set * \param[in] layout an initialized layout - * \param[in] run number of the run, from 0 + * \param[in] batch number of the batch, from 0 * \param[in] unit number of the unit, from 0 to units - 1 */ -void G_random_state_for_run(struct G_random_state *state, - const struct G_random_layout *layout, long long run, - long long unit) +void G_random_state_for_batch(struct G_random_state *state, + const struct G_random_layout *layout, + long long batch, long long unit) { unsigned long long offset; @@ -669,31 +672,31 @@ void G_random_state_for_run(struct G_random_state *state, G_fatal_error(_("Random number unit %lld is out of range " "(must be between 0 and %lld)"), unit, layout->units - 1); - if (run < 0) - G_fatal_error(_("Random number run %lld is out of range " + if (batch < 0) + G_fatal_error(_("Random number batch %lld is out of range " "(must not be negative)"), - run); - if (run > 0 && layout->spread) - G_fatal_error(_("Random number run %lld is out of range " - "(a spread layout holds a single run)"), - run); - if (layout->runs >= 1 && run >= layout->runs) - G_fatal_error(n_("Random number run %lld is out of range " - "(%lld run fits into the generator's span)", - "Random number run %lld is out of range " - "(%lld runs fit into the generator's span)", - (unsigned long)layout->runs), - run, layout->runs); - if (layout->runs == 0 && run > 0) - G_fatal_error(_("Random number run %lld is out of range " - "(no run fits into the generator's span, only run 0 " - "can be used)"), - run); - - /* With run below the runs that fit, the offset is below 2^46; with - * run 0 of a layout which does not fit, it may reach past the span. + batch); + if (batch > 0 && layout->whole_span) + G_fatal_error(_("Random number batch %lld is out of range " + "(a layout of the whole span holds a single batch)"), + batch); + if (layout->batches >= 1 && batch >= layout->batches) + G_fatal_error(n_("Random number batch %lld is out of range " + "(%lld batch fits into the generator's span)", + "Random number batch %lld is out of range " + "(%lld batches fit into the generator's span)", + (unsigned long)layout->batches), + batch, layout->batches); + if (layout->batches == 0 && batch > 0) + G_fatal_error(_("Random number batch %lld is out of range " + "(no batch fits into the generator's span, only batch " + "0 can be used)"), + batch); + + /* With batch below the batches that fit, the offset is below 2^46; with + * batch 0 of a layout which does not fit, it may reach past the span. * It is below 2^63 either way, since units times stride is. */ - offset = ((unsigned long long)run * (unsigned long long)layout->units + + offset = ((unsigned long long)batch * (unsigned long long)layout->units + (unsigned long long)unit) * (unsigned long long)layout->stride; state->state = lcg_jump(layout->start, offset); @@ -702,7 +705,7 @@ void G_random_state_for_run(struct G_random_state *state, /*! * \brief Put a generator state at the start of a unit's stream * - * The same as G_random_state_for_run() with run 0. + * The same as G_random_state_for_batch() with batch 0. * * \param[out] state generator state to set * \param[in] layout an initialized layout @@ -712,7 +715,7 @@ void G_random_state_for_unit(struct G_random_state *state, const struct G_random_layout *layout, long long unit) { - G_random_state_for_run(state, layout, 0, unit); + G_random_state_for_batch(state, layout, 0, unit); } /*! @@ -744,8 +747,9 @@ void G_random_advance(struct G_random_state *state, long long draws) * G_drand48(), this needs no atomics and so behaves identically on every * build. * - * \param[in,out] state generator state, set with G_random_seed(), - * G_random_state_for_unit() or G_random_state_for_run() + * \param[in,out] state generator state, set with + * G_random_state_from_seed(), G_random_state_for_unit() or + * G_random_state_for_batch() * * \return the generated value */ diff --git a/lib/gis/tests/lib_gis_lrand48_test.py b/lib/gis/tests/lib_gis_lrand48_test.py index e5a62b0e29f..892ecf65e11 100644 --- a/lib/gis/tests/lib_gis_lrand48_test.py +++ b/lib/gis/tests/lib_gis_lrand48_test.py @@ -30,14 +30,14 @@ G_mrand48, G_random_advance, G_random_double, + G_random_init_layout, G_random_init_layout_bounded, G_random_init_layout_exact, - G_random_init_layout_spread, + G_random_layout_batches, G_random_layout_length, - G_random_layout_runs, - G_random_seed, - G_random_state_for_run, + G_random_state_for_batch, G_random_state_for_unit, + G_random_state_from_seed, G_srand48, struct_G_random_layout, struct_G_random_state, @@ -291,13 +291,23 @@ def test_srand48_is_reproducible(): # has order 2^46, so states 2^46 apart give values differing by a constant. SPAN = 2**46 -# The most units a spread layout takes. -SPREAD_MAX_UNITS = 2**20 +# The most units a layout of the whole span takes. +WHOLE_SPAN_MAX_UNITS = 2**20 -# Unit counts for the spread layout: small counts, powers of two, which +# Unit counts for the layout of the whole span: small counts, powers of two, which # give an even stride before rounding, a hundred thousand, and the two # largest counts allowed. -SPREAD_UNITS = [2, 3, 4, 6, 64, 4096, 100000, SPREAD_MAX_UNITS - 1, SPREAD_MAX_UNITS] +WHOLE_SPAN_UNITS = [ + 2, + 3, + 4, + 6, + 64, + 4096, + 100000, + WHOLE_SPAN_MAX_UNITS - 1, + WHOLE_SPAN_MAX_UNITS, +] def lcg_jump_reference(state, steps): @@ -337,7 +347,7 @@ def draw_states(state, n): def seeded_states(seed, n): """States of the first n draws of the single sequence of a seed""" state = struct_G_random_state() - G_random_seed(byref(state), seed) + G_random_state_from_seed(byref(state), seed) return draw_states(state, n) @@ -353,21 +363,21 @@ def bounded_layout(seed, units, max_draws): return layout -def spread_layout(seed, units): +def whole_span_layout(seed, units): layout = struct_G_random_layout() - G_random_init_layout_spread(byref(layout), seed, units) + G_random_init_layout(byref(layout), seed, units) return layout -def unit_states(layout, unit, n, run=0): - """States of the first n draws of a unit in a run of a layout""" +def unit_states(layout, unit, n, batch=0): + """States of the first n draws of a unit in a batch of a layout""" state = struct_G_random_state() - G_random_state_for_run(byref(state), byref(layout), run, unit) + G_random_state_for_batch(byref(state), byref(layout), batch, unit) return draw_states(state, n) -def spread_stride(units): - """The spread stride: the span divided by the parts, rounded down to odd. +def whole_span_stride(units): + """The whole-span stride: the span divided by the parts, rounded down to odd. The parts are the units, or one more when the units are even, so that the unit halfway along does not start 2^45 draws after unit 0. @@ -402,7 +412,7 @@ def constant_shift(first, second, max_lag=4): state = gis.struct_G_random_state() layout = gis.struct_G_random_layout() -gis.G_random_seed(byref(state), 1337) +gis.G_random_state_from_seed(byref(state), 1337) for call in sys.argv[1:]: name, *numbers = call.split() function = getattr(gis, name) @@ -463,7 +473,7 @@ def test_lcg_jump_reference_matches_stepping(): @pytest.mark.parametrize("seed", [0, 1, 42, 1337, 2147483647, -1, 4294967295]) def test_random_seed_matches_shared_generator(seed): - """G_random_seed() gives the sequence G_srand48() and G_drand48() give. + """G_random_state_from_seed() gives the sequence G_srand48() and G_drand48() give. This is what lets code switch from the shared generator to one of its own without changing its single-threaded results. @@ -471,7 +481,7 @@ def test_random_seed_matches_shared_generator(seed): G_srand48(seed) shared = [G_drand48() for _ in range(100)] state = struct_G_random_state() - G_random_seed(byref(state), seed) + G_random_state_from_seed(byref(state), seed) assert [G_random_double(byref(state)) for _ in range(100)] == shared if seed in REFERENCE: assert shared[:10] == REFERENCE[seed]["drand48"] @@ -495,12 +505,12 @@ def test_random_seed_accepts_the_range_boundaries(seed): @pytest.mark.parametrize( "call", [ - "G_random_seed {}", + "G_random_state_from_seed {}", "G_random_init_layout_exact {} 5 7", "G_random_init_layout_bounded {} 5 7", - "G_random_init_layout_spread {} 5", + "G_random_init_layout {} 5", ], - ids=["seed", "exact", "bounded", "spread"], + ids=["seed", "exact", "bounded", "whole_span"], ) def test_random_seed_outside_range_is_fatal( xy_session_for_module, tmp_path, seed, call @@ -530,68 +540,68 @@ def test_exact_layout_units_follow_the_single_sequence(seed): ("units", "draws"), [(5, 7), (1, 1), (1000, 100), (4096, 2**34), (2**23, 2**23), (2**23, 2**23 + 1)], ) -def test_exact_layout_runs_and_length(units, draws): - """The runs that fit are the span divided by units times draws. +def test_exact_layout_batches_and_length(units, draws): + """The batches that fit are the span divided by units times draws. - The last pair's product exceeds 2^46, so no run fits and runs() is 0. + The last pair's product exceeds 2^46, so no batch fits and batches() is 0. The length is the number of draws exactly. """ layout = exact_layout(1337, units, draws) - assert G_random_layout_runs(byref(layout)) == SPAN // (units * draws) + assert G_random_layout_batches(byref(layout)) == SPAN // (units * draws) assert G_random_layout_length(byref(layout)) == draws -def test_exact_layout_runs_follow_each_other(): - """Run r's unit u starts where the single sequence has drawn (r * units + u) * draws.""" +def test_exact_layout_batches_follow_each_other(): + """Unit u of batch b starts (b * units + u) * draws into the single sequence.""" layout = exact_layout(1337, 5, 7) - assert unit_states(layout, 2, 3, run=4) == reference_states( + assert unit_states(layout, 2, 3, batch=4) == reference_states( 1337, (4 * 5 + 2) * 7, 3 ) -def test_exact_layout_which_does_not_fit_allows_run_zero( +def test_exact_layout_which_does_not_fit_allows_batch_zero( xy_session_for_module, tmp_path ): - """With no run fitting, run 0 is still allowed but run 1 is fatal. + """With no batch fitting, batch 0 is still allowed but batch 1 is fatal. A tool which warned that its layout does not fit into the span may still use it, as earlier versions did. """ units, draws = 2**23, 2**23 + 1 layout = exact_layout(1337, units, draws) - assert G_random_layout_runs(byref(layout)) == 0 + assert G_random_layout_batches(byref(layout)) == 0 unit = units - 1 assert unit_states(layout, unit, 3) == reference_states(1337, unit * draws, 3) result = run_calls( xy_session_for_module, tmp_path, f"G_random_init_layout_exact 1337 {units} {draws}", - "G_random_state_for_run 1 0", + "G_random_state_for_batch 1 0", ) - assert_fatal(result, "run 1 is out of range") + assert_fatal(result, "batch 1 is out of range") -def test_exact_layout_run_past_the_runs_that_fit_is_fatal( +def test_exact_layout_batch_past_the_batches_that_fit_is_fatal( xy_session_for_module, tmp_path ): - """A run beyond those that fit is a fatal error naming both numbers.""" + """A batch beyond those that fit is a fatal error naming both numbers.""" units, draws = 4096, 2**34 - runs = SPAN // (units * draws) - assert runs == 1 + batches = SPAN // (units * draws) + assert batches == 1 ok = run_calls( xy_session_for_module, tmp_path, f"G_random_init_layout_exact 1337 {units} {draws}", - f"G_random_state_for_run {runs - 1} {units - 1}", + f"G_random_state_for_batch {batches - 1} {units - 1}", ) assert ok.returncode == 0, ok.stderr result = run_calls( xy_session_for_module, tmp_path, f"G_random_init_layout_exact 1337 {units} {draws}", - f"G_random_state_for_run {runs} 0", + f"G_random_state_for_batch {batches} 0", ) - assert_fatal(result, f"run {runs} is out of range ({runs} run fits") + assert_fatal(result, f"batch {batches} is out of range ({batches} batch fits") @pytest.mark.parametrize( @@ -605,7 +615,7 @@ def test_exact_layout_run_past_the_runs_that_fit_is_fatal( ("G_random_init_layout_bounded 1337 5 0", "must be positive, not 0"), ("G_random_init_layout_bounded 1337 0 7", "must be positive, not 0"), ("G_random_init_layout_bounded 1337 4294967296 4294967296", "too large"), - ("G_random_init_layout_spread 1337 0", "must be positive, not 0"), + ("G_random_init_layout 1337 0", "must be positive, not 0"), ], ) def test_layout_with_impossible_counts_is_fatal( @@ -620,93 +630,93 @@ def test_bounded_layout_rounds_an_even_bound_up_to_odd(bound, stride): """An even bound becomes the next odd number, an odd bound stays.""" layout = bounded_layout(1337, 1000, bound) assert G_random_layout_length(byref(layout)) == stride - assert G_random_layout_runs(byref(layout)) == SPAN // (1000 * stride) + assert G_random_layout_batches(byref(layout)) == SPAN // (1000 * stride) @pytest.mark.parametrize("seed", [0, 1337, -1]) def test_bounded_layout_unit_starts(seed): - """Unit u starts u * stride draws after the seed, run 1's (units + u) * stride.""" + """Unit u starts u * stride draws after the seed, batch 1's (units + u) * stride.""" units, stride = 1000, 101 layout = bounded_layout(seed, units, 100) for unit in (0, 1, 2, 999): assert unit_states(layout, unit, 3) == reference_states( seed, unit * stride, 3 ), unit - assert unit_states(layout, unit, 3, run=1) == reference_states( + assert unit_states(layout, unit, 3, batch=1) == reference_states( seed, (units + unit) * stride, 3 ), unit -@pytest.mark.parametrize("units", SPREAD_UNITS) -def test_spread_layout_stride(units): +@pytest.mark.parametrize("units", WHOLE_SPAN_UNITS) +def test_whole_span_layout_stride(units): """The stride is the span divided by the parts, rounded down to odd.""" - layout = spread_layout(1337, units) + layout = whole_span_layout(1337, units) stride = G_random_layout_length(byref(layout)) - assert stride == spread_stride(units) + assert stride == whole_span_stride(units) assert stride % 2 == 1 - assert G_random_layout_runs(byref(layout)) == 1 + assert G_random_layout_batches(byref(layout)) == 1 -def test_spread_layout_of_one_unit_keeps_the_span(): +def test_whole_span_layout_of_one_unit_keeps_the_span(): """A single unit keeps the whole span of 2^46 draws. Its stream is the single sequence of the seed. """ - layout = spread_layout(1337, 1) + layout = whole_span_layout(1337, 1) assert G_random_layout_length(byref(layout)) == SPAN - assert G_random_layout_runs(byref(layout)) == 1 + assert G_random_layout_batches(byref(layout)) == 1 assert unit_states(layout, 0, 20) == seeded_states(1337, 20) @pytest.mark.parametrize("seed", [0, 1337, -1]) -@pytest.mark.parametrize("units", [4, 4096, 100000, SPREAD_MAX_UNITS]) -def test_spread_layout_unit_starts(seed, units): +@pytest.mark.parametrize("units", [4, 4096, 100000, WHOLE_SPAN_MAX_UNITS]) +def test_whole_span_layout_unit_starts(seed, units): """Unit u starts u * stride draws after the seed. The first, a middle and the last unit are checked; the last one also shows that the highest unit is accepted. """ - layout = spread_layout(seed, units) - stride = spread_stride(units) + layout = whole_span_layout(seed, units) + stride = whole_span_stride(units) for unit in sorted({0, 1, units // 2, units - 1}): assert unit_states(layout, unit, 2) == reference_states( seed, unit * stride, 2 ), unit -def test_spread_layout_run_one_is_fatal(xy_session_for_module, tmp_path): - """A spread layout holds a single run.""" +def test_whole_span_layout_batch_one_is_fatal(xy_session_for_module, tmp_path): + """A layout of the whole span holds a single batch.""" result = run_calls( xy_session_for_module, tmp_path, - "G_random_init_layout_spread 1337 4", - "G_random_state_for_run 1 0", + "G_random_init_layout 1337 4", + "G_random_state_for_batch 1 0", ) - assert_fatal(result, "a spread layout holds a single run") + assert_fatal(result, "a layout of the whole span holds a single batch") -@pytest.mark.parametrize("units", [SPREAD_MAX_UNITS + 1, 2**46 + 1, 2**62]) -def test_spread_layout_with_too_many_units_is_fatal( +@pytest.mark.parametrize("units", [WHOLE_SPAN_MAX_UNITS + 1, 2**46 + 1, 2**62]) +def test_whole_span_layout_with_too_many_units_is_fatal( xy_session_for_module, tmp_path, units ): - """A spread layout takes at most 2^20 units.""" + """A layout of the whole span takes at most 2^20 units.""" result = run_calls( - xy_session_for_module, tmp_path, f"G_random_init_layout_spread 1337 {units}" + xy_session_for_module, tmp_path, f"G_random_init_layout 1337 {units}" ) - assert_fatal(result, f"at most {SPREAD_MAX_UNITS} units, not {units}") + assert_fatal(result, f"at most {WHOLE_SPAN_MAX_UNITS} units, not {units}") -def test_spread_layout_of_the_most_units(): +def test_whole_span_layout_of_the_most_units(): """2^20 units, the most allowed, get a stride of 67,108,799 draws. The span divided by 2^20 + 1 parts is just over 67,108,800, which is even, so the stride is rounded down to the odd 67,108,799. The last unit starts where the formula says. """ - layout = spread_layout(1337, SPREAD_MAX_UNITS) + layout = whole_span_layout(1337, WHOLE_SPAN_MAX_UNITS) assert G_random_layout_length(byref(layout)) == 67108799 - assert spread_stride(SPREAD_MAX_UNITS) == 67108799 - last = SPREAD_MAX_UNITS - 1 + assert whole_span_stride(WHOLE_SPAN_MAX_UNITS) == 67108799 + last = WHOLE_SPAN_MAX_UNITS - 1 assert unit_states(layout, last, 3) == reference_states(1337, last * 67108799, 3) @@ -716,7 +726,7 @@ def nearest_unit_distance(units, distance): Units start a multiple of the stride apart, so this is also the nearest any two units come to being that distance apart. """ - stride = spread_stride(units) + stride = whole_span_stride(units) nearest = distance // stride return min( abs(k * stride - distance) / stride @@ -725,7 +735,7 @@ def nearest_unit_distance(units, distance): ) -def test_spread_layout_keeps_units_off_the_shifted_distances(): +def test_whole_span_layout_keeps_units_off_the_shifted_distances(): """No unit starts near 2^45 or 2^44 draws after another unit. At those distances the values of two positions differ by two or four @@ -736,28 +746,30 @@ def test_spread_layout_keeps_units_off_the_shifted_distances(): those distances, less the draws lost by rounding the stride down, which accumulate along the span. For every allowed number of units, the nearest unit is at least 0.48 of a stride from 2^45 and 0.24 of a - stride from 2^44. This checks the rule; test_spread_layout_stride ties + stride from 2^44. This checks the rule; test_whole_span_layout_stride ties the rule to the library. """ closest_to_half = min( - nearest_unit_distance(units, 2**45) for units in range(2, SPREAD_MAX_UNITS + 1) + nearest_unit_distance(units, 2**45) + for units in range(2, WHOLE_SPAN_MAX_UNITS + 1) ) closest_to_quarter = min( - nearest_unit_distance(units, 2**44) for units in range(4, SPREAD_MAX_UNITS + 1) + nearest_unit_distance(units, 2**44) + for units in range(4, WHOLE_SPAN_MAX_UNITS + 1) ) assert closest_to_half >= 0.48 assert closest_to_quarter >= 0.24 def layouts_for_span_check(): - """Layouts with at least one run fitting, as (layout, units, stride) + """Layouts with at least one batch fitting, as (layout, units, stride) The stride is computed here from the documented rules, not read from the layout. """ cases = [ - (spread_layout(1337, units), units, spread_stride(units)) - for units in [1, *SPREAD_UNITS] + (whole_span_layout(1337, units), units, whole_span_stride(units)) + for units in [1, *WHOLE_SPAN_UNITS] ] cases += [ (exact_layout(1337, units, draws), units, draws) @@ -772,30 +784,30 @@ def layouts_for_span_check(): @pytest.mark.parametrize(("layout", "units", "stride"), layouts_for_span_check()) def test_layout_lies_within_the_span(layout, units, stride): - """The last stream of the last run that fits ends within the span. + """The last stream of the last batch that fits ends within the span. Every position in a stream is then less than 2^46 draws from every other, so no two streams can be 2^46, 2^47 or 3 * 2^46 draws apart, the distances at which this generator repeats its values plus a constant. """ - runs = G_random_layout_runs(byref(layout)) + batches = G_random_layout_batches(byref(layout)) length = G_random_layout_length(byref(layout)) assert length == stride - assert runs >= 1 - last_start = (runs * units - 1) * stride + assert batches >= 1 + last_start = (batches * units - 1) * stride assert last_start + length <= SPAN -def test_spread_layout_units_have_no_constant_shift(): - """Two units of a spread layout are not one sequence shifted in value. +def test_whole_span_layout_units_have_no_constant_shift(): + """Two units of a layout of the whole span are not one sequence shifted in value. - The first and the last unit of the largest spread layout start less + The first and the last unit of the largest layout of the whole span start less than 2^46 draws apart, so no lag relates their values by a constant. """ - layout = spread_layout(1337, SPREAD_MAX_UNITS) + layout = whole_span_layout(1337, WHOLE_SPAN_MAX_UNITS) first = unit_states(layout, 0, 100) - second = unit_states(layout, SPREAD_MAX_UNITS - 1, 100) + second = unit_states(layout, WHOLE_SPAN_MAX_UNITS - 1, 100) assert constant_shift(first, second) is None @@ -820,7 +832,7 @@ def test_states_half_a_span_apart_alternate_between_two_shifts(): assert set(shifts[0::2]) == {0.625} assert set(shifts[1::2]) == {0.125} state = struct_G_random_state() - G_random_seed(byref(state), 42) + G_random_state_from_seed(byref(state), 42) G_random_advance(byref(state), 2**45) assert draw_states(state, 50) == advanced @@ -834,15 +846,15 @@ def low_bits_relation(first, second): return bits -def test_spread_layout_units_two_strides_apart_relate_three_low_bits(): +def test_whole_span_layout_units_two_strides_apart_relate_three_low_bits(): """Units 2 * stride apart, stride odd, share only the low 3 bits of a shift. A distance of 2^k times an odd number makes the differences of the two units' states constant in their low k + 2 bits; above those bits the difference varies from draw to draw. """ - layout = spread_layout(1337, 4) - assert spread_stride(4) % 2 == 1 + layout = whole_span_layout(1337, 4) + assert whole_span_stride(4) % 2 == 1 first = unit_states(layout, 0, 200) second = unit_states(layout, 2, 200) assert low_bits_relation(first, second) == 3 @@ -864,7 +876,7 @@ def test_bounded_layout_even_bound_relates_three_low_bits_too(): def advanced_states(seed, draws, n): state = struct_G_random_state() - G_random_seed(byref(state), seed) + G_random_state_from_seed(byref(state), seed) G_random_advance(byref(state), draws) return draw_states(state, n) @@ -878,7 +890,7 @@ def test_random_advance_equals_drawing(): def test_random_advance_composes(): """Two advances are one advance by their sum.""" state = struct_G_random_state() - G_random_seed(byref(state), 1337) + G_random_state_from_seed(byref(state), 1337) G_random_advance(byref(state), 25) G_random_advance(byref(state), 35) assert draw_states(state, 10) == advanced_states(1337, 60, 10) @@ -914,8 +926,8 @@ def test_random_advance_negative_is_fatal(xy_session_for_module, tmp_path): @pytest.mark.parametrize( ("layout_call", "unit", "message"), [ - ("G_random_init_layout_spread 1337 4", 4, "unit 4 is out of range"), - ("G_random_init_layout_spread 1337 4", -1, "unit -1 is out of range"), + ("G_random_init_layout 1337 4", 4, "unit 4 is out of range"), + ("G_random_init_layout 1337 4", -1, "unit -1 is out of range"), ("G_random_init_layout_exact 1337 5 7", 5, "unit 5 is out of range"), ("G_random_init_layout_bounded 1337 5 7", -1, "unit -1 is out of range"), ], @@ -933,19 +945,21 @@ def test_random_state_for_unit_out_of_range_is_fatal( assert_fatal(result, message) -def test_random_state_for_run_negative_run_is_fatal(xy_session_for_module, tmp_path): - """A negative run is a fatal error.""" +def test_random_state_for_batch_negative_batch_is_fatal( + xy_session_for_module, tmp_path +): + """A negative batch is a fatal error.""" result = run_calls( xy_session_for_module, tmp_path, "G_random_init_layout_exact 1337 5 7", - "G_random_state_for_run -1 0", + "G_random_state_for_batch -1 0", ) - assert_fatal(result, "run -1 is out of range") + assert_fatal(result, "batch -1 is out of range") -def test_random_state_for_unit_is_run_zero(): - """G_random_state_for_unit() gives run 0 of G_random_state_for_run().""" +def test_random_state_for_unit_is_batch_zero(): + """G_random_state_for_unit() gives batch 0 of G_random_state_for_batch().""" layout = bounded_layout(1337, 1000, 100) state = struct_G_random_state() G_random_state_for_unit(byref(state), byref(layout), 7) @@ -1085,7 +1099,7 @@ def test_random_generate_seed_rejects_invalid_value( def test_random_state_is_independent_of_shared_generator(): """Drawing from the shared generator between draws changes nothing.""" - layout = spread_layout(1337, 4096) + layout = whole_span_layout(1337, 4096) expected = unit_states(layout, 5, 10) state = struct_G_random_state() G_random_state_for_unit(byref(state), byref(layout), 5) @@ -1105,7 +1119,7 @@ def test_random_states_are_unaffected_by_threading(): """ units = 4 n = 5000 - layout = spread_layout(1337, units) + layout = whole_span_layout(1337, units) serial = [unit_states(layout, unit, n) for unit in range(units)] threaded = [None] * units @@ -1121,11 +1135,11 @@ def worker(unit): # First ten values of unit 3 with seed 1337, computed by the closed form at -# 3 * 17175675903 draws for a spread layout of 4096 units (4097 parts) and at 3 * 101 -# draws for a bounded layout of 1000 units with bound 100. A change of the -# engine or of the layouts changes these. +# 3 * 17175675903 draws for a layout of the whole span of 4096 units (4097 +# parts) and at 3 * 101 draws for a bounded layout of 1000 units with bound +# 100. A change of the engine or of the layouts changes these. PINNED = { - "spread": [ + "whole_span": [ 0.39430735545757045, 0.6290045178804426, 0.714269874034521, @@ -1155,10 +1169,10 @@ def worker(unit): @pytest.mark.parametrize( ("kind", "layout", "offset"), [ - ("spread", spread_layout(1337, 4096), 3 * 17175675903), + ("whole_span", whole_span_layout(1337, 4096), 3 * 17175675903), ("bounded", bounded_layout(1337, 1000, 100), 3 * 101), ], - ids=["spread", "bounded"], + ids=["whole_span", "bounded"], ) def test_layout_unit_values_are_pinned(kind, layout, offset): """Unit 3's first ten values are fixed for a given seed and layout.""" From 83a4c952fc14ae6fd15aac5b174cd0ab93b02829 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Thu, 1 Oct 2026 15:54:51 -0400 Subject: [PATCH 11/28] r.sim: Follow the renamed random number functions Call G_random_state_from_seed() instead of G_random_seed() to check the seed and G_random_layout_batches() instead of G_random_layout_runs() to check that the walkers fit one seed. Written with the help of Claude Code. --- raster/r.sim/simlib/hydro.c | 2 +- raster/r.sim/simlib/random.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/raster/r.sim/simlib/hydro.c b/raster/r.sim/simlib/hydro.c index 8b563793550..a0644367805 100644 --- a/raster/r.sim/simlib/hydro.c +++ b/raster/r.sim/simlib/hydro.c @@ -79,7 +79,7 @@ void main_loop(const Setup *setup, const Geometry *geometry, G_random_init_layout_bounded(&layout, settings->seed, sim->max_walkers, 2 + 8LL * setup->miter); - if (G_random_layout_runs(&layout) < 1) + if (G_random_layout_batches(&layout) < 1) G_warning(_("%d walkers over %d time steps may draw more random " "numbers than one seed provides; the random numbers " "of some walkers then repeat those of others shifted " diff --git a/raster/r.sim/simlib/random.c b/raster/r.sim/simlib/random.c index d4a2085d23f..6ab6377fe8d 100644 --- a/raster/r.sim/simlib/random.c +++ b/raster/r.sim/simlib/random.c @@ -46,7 +46,7 @@ long long simwe_seed(const struct Option *seed, const struct Flag *generate) } /* The layout, which refuses a seed out of range, is built only when the * number of time steps is known. */ - G_random_seed(&check, value); + G_random_state_from_seed(&check, value); return value; } From dfd0c6b16eb313a07dc73c34f1b521c856a0ba6e Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Fri, 2 Oct 2026 13:56:02 -0400 Subject: [PATCH 12/28] libgis: Start the batches of random numbers an odd number of draws apart Batches started units * stride draws apart. When that number is even, the values which different batches give at the same draw are related, the more simply the more often 2 divides the distance: with a distance divisible by 2^20, the value of every batch is given by a quadratic through those of the three batches before it, much as consecutive seeds give values on a straight line. Make the distance units * stride, or one more when that is even, as the strides of bounded layouts and of layouts of the whole span are already odd for the same reason between units. Batch 0 does not change, a batch costs at most one draw more, and no tool uses further batches yet. This does not remove the relation. It moves it from the draws which carry the same number in every batch to draws whose numbers differ by one from batch to batch. A layout gives streams which do not overlap, not independent ones. The batches that fit are now those whose last stream ends within the span, so a batch of exactly 2^46 draws still fits once. Written with the help of Claude Code. --- lib/gis/lrand48.c | 65 ++++++++++++++++++--------- lib/gis/tests/lib_gis_lrand48_test.py | 51 ++++++++++++++------- 2 files changed, 79 insertions(+), 37 deletions(-) diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 1673815ed25..21f39d0cfd3 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -427,18 +427,36 @@ static void check_units(long long units) units); } +/* The draws from the start of one batch to the start of the next: those of + * one batch, units * stride, or one more when that number is even. With an + * odd distance, as with an odd stride between units, the same draw of + * different batches is as unrelated as the generator allows; an even + * distance would relate those draws, the more simply the more often 2 + * divides it. */ +static unsigned long long batch_distance(const struct G_random_layout *layout) +{ + return ((unsigned long long)layout->units * + (unsigned long long)layout->stride) | + 1; +} + /* Fill in a layout of units of the given stride, all of one batch first, - * then those of the next batch. The number of batches that fit is how many - * times units * stride draws fit into the span. Callers must check - * beforehand that units * stride does not overflow. */ + * then those of the next batch. The batches that fit are those whose last + * stream ends within the span. Callers must check beforehand that + * units * stride does not overflow. */ static void fill_layout(struct G_random_layout *layout, long long seed, long long units, long long stride) { + unsigned long long draws = + (unsigned long long)units * (unsigned long long)stride; + layout->start = lcg_seed(seed); layout->units = units; layout->stride = stride; - layout->batches = (long long)(LCG_SPAN / ((unsigned long long)units * - (unsigned long long)stride)); + layout->batches = 0; + if (draws <= LCG_SPAN) + layout->batches = + (long long)((LCG_SPAN - draws) / batch_distance(layout) + 1); layout->whole_span = 0; } @@ -470,19 +488,19 @@ void G_random_state_from_seed(struct G_random_state *state, long long seed) * \brief Initialize a layout whose units draw an exact number of values * * The span is cut into streams of exactly \p draws_per_unit draws, one per - * unit, placed one after another from the seed, and then one after - * another for the following batches. Unit u of batch 0 therefore draws - * what a single sequence from G_random_state_from_seed() draws at positions - * u * \p draws_per_unit to (u + 1) * \p draws_per_unit - 1, so the units - * together reproduce a serial run whatever order they are processed in. + * unit, placed one after another from the seed. Unit u of batch 0 therefore + * draws what a single sequence from G_random_state_from_seed() draws at + * positions u * \p draws_per_unit to (u + 1) * \p draws_per_unit - 1, so + * the units together reproduce a serial run whatever order they are + * processed in. Further batches follow, see G_random_state_for_batch(). * A unit which draws more than \p draws_per_unit values runs into the * next unit's stream; when the number of draws is only bounded, use * G_random_init_layout_bounded(). * * The stride is \p draws_per_unit. G_random_layout_length() returns it, - * and G_random_layout_batches() returns the batches that fit, 2^46 divided - * by \p units * \p draws_per_unit, which is 0 when one batch does not fit - * into the span. See \ref gislib_random_streams. + * and G_random_layout_batches() returns the batches that fit, which is 0 + * when \p units * \p draws_per_unit draws do not fit into the span. See \ref + * gislib_random_streams. * * A seed outside -2^31 to 2^32 - 1, a number of units or of draws which * is not positive, or a product of the two beyond the range of long long @@ -522,8 +540,8 @@ void G_random_init_layout_exact(struct G_random_layout *layout, long long seed, * * The stride is \p max_draws rounded up to odd. G_random_layout_length() * returns it, and G_random_layout_batches() returns the batches that fit, - * 2^46 divided by \p units times the stride, which is 0 when one batch does - * not fit into the span. See \ref gislib_random_streams. + * which is 0 when \p units times the stride draws do not fit into the span. See + * \ref gislib_random_streams. * * A seed outside -2^31 to 2^32 - 1, a number of units or a bound which is * not positive, or a product of the units and the stride beyond the range @@ -643,10 +661,14 @@ long long G_random_layout_length(const struct G_random_layout *layout) * \brief Put a generator state at the start of a unit's stream in a batch * * A batch is one stream for every unit of the layout, and the batches - * follow one another along the span: the stream of \p unit in \p batch - * starts (\p batch * units + \p unit) * stride draws after the seed. The - * state is set whatever it held before, so the same call always restarts - * the same sequence. See \ref gislib_random_streams. + * follow one another along the span. They start units * stride draws + * apart, or one more when that number is even, and the stream of \p unit + * in \p batch starts \p unit * stride draws after the start of the batch. + * With the odd distance, as with an odd stride, the same draw of different + * batches is as unrelated as the generator allows; what an even distance + * would relate there is related between draws whose numbers differ + * instead. The state is set whatever it held before, so the same call + * always restarts the same sequence. See \ref gislib_random_streams. * * A \p unit outside 0 to units - 1, a negative \p batch, a \p batch other * than 0 of a layout of the whole span, or a \p batch beyond the batches @@ -696,9 +718,8 @@ void G_random_state_for_batch(struct G_random_state *state, /* With batch below the batches that fit, the offset is below 2^46; with * batch 0 of a layout which does not fit, it may reach past the span. * It is below 2^63 either way, since units times stride is. */ - offset = ((unsigned long long)batch * (unsigned long long)layout->units + - (unsigned long long)unit) * - (unsigned long long)layout->stride; + offset = (unsigned long long)batch * batch_distance(layout) + + (unsigned long long)unit * (unsigned long long)layout->stride; state->state = lcg_jump(layout->start, offset); } diff --git a/lib/gis/tests/lib_gis_lrand48_test.py b/lib/gis/tests/lib_gis_lrand48_test.py index 892ecf65e11..baecdf6c453 100644 --- a/lib/gis/tests/lib_gis_lrand48_test.py +++ b/lib/gis/tests/lib_gis_lrand48_test.py @@ -369,6 +369,19 @@ def whole_span_layout(seed, units): return layout +def batch_distance(units, stride): + """Draws from the start of one batch to the next: units * stride, made odd""" + return (units * stride) | 1 + + +def batches_that_fit(units, stride): + """Batches whose last stream ends within the span""" + draws = units * stride + if draws > SPAN: + return 0 + return (SPAN - draws) // batch_distance(units, stride) + 1 + + def unit_states(layout, unit, n, batch=0): """States of the first n draws of a unit in a batch of a layout""" state = struct_G_random_state() @@ -541,22 +554,30 @@ def test_exact_layout_units_follow_the_single_sequence(seed): [(5, 7), (1, 1), (1000, 100), (4096, 2**34), (2**23, 2**23), (2**23, 2**23 + 1)], ) def test_exact_layout_batches_and_length(units, draws): - """The batches that fit are the span divided by units times draws. + """The batches that fit are those whose last stream ends within the span. - The last pair's product exceeds 2^46, so no batch fits and batches() is 0. - The length is the number of draws exactly. + A batch of exactly 2^46 draws fits once. The last pair's product exceeds + 2^46, so no batch fits and batches() is 0. The length is the number of + draws exactly. """ layout = exact_layout(1337, units, draws) - assert G_random_layout_batches(byref(layout)) == SPAN // (units * draws) + assert G_random_layout_batches(byref(layout)) == batches_that_fit(units, draws) assert G_random_layout_length(byref(layout)) == draws -def test_exact_layout_batches_follow_each_other(): - """Unit u of batch b starts (b * units + u) * draws into the single sequence.""" - layout = exact_layout(1337, 5, 7) - assert unit_states(layout, 2, 3, batch=4) == reference_states( - 1337, (4 * 5 + 2) * 7, 3 - ) +@pytest.mark.parametrize(("units", "draws", "distance"), [(5, 7, 35), (4, 6, 25)]) +def test_exact_layout_batches_start_an_odd_distance_apart(units, draws, distance): + """Batches start units * draws apart, or one more when that is even. + + Unit u of batch b starts b * distance + u * draws into the single + sequence. + """ + assert batch_distance(units, draws) == distance + layout = exact_layout(1337, units, draws) + for batch, unit in [(0, 2), (1, 0), (4, 2)]: + assert unit_states(layout, unit, 3, batch=batch) == reference_states( + 1337, batch * distance + unit * draws, 3 + ), (batch, unit) def test_exact_layout_which_does_not_fit_allows_batch_zero( @@ -586,7 +607,7 @@ def test_exact_layout_batch_past_the_batches_that_fit_is_fatal( ): """A batch beyond those that fit is a fatal error naming both numbers.""" units, draws = 4096, 2**34 - batches = SPAN // (units * draws) + batches = batches_that_fit(units, draws) assert batches == 1 ok = run_calls( xy_session_for_module, @@ -630,12 +651,12 @@ def test_bounded_layout_rounds_an_even_bound_up_to_odd(bound, stride): """An even bound becomes the next odd number, an odd bound stays.""" layout = bounded_layout(1337, 1000, bound) assert G_random_layout_length(byref(layout)) == stride - assert G_random_layout_batches(byref(layout)) == SPAN // (1000 * stride) + assert G_random_layout_batches(byref(layout)) == batches_that_fit(1000, stride) @pytest.mark.parametrize("seed", [0, 1337, -1]) def test_bounded_layout_unit_starts(seed): - """Unit u starts u * stride draws after the seed, batch 1's (units + u) * stride.""" + """Unit u starts u * stride draws after the seed or after the start of batch 1.""" units, stride = 1000, 101 layout = bounded_layout(seed, units, 100) for unit in (0, 1, 2, 999): @@ -643,7 +664,7 @@ def test_bounded_layout_unit_starts(seed): seed, unit * stride, 3 ), unit assert unit_states(layout, unit, 3, batch=1) == reference_states( - seed, (units + unit) * stride, 3 + seed, batch_distance(units, stride) + unit * stride, 3 ), unit @@ -795,7 +816,7 @@ def test_layout_lies_within_the_span(layout, units, stride): length = G_random_layout_length(byref(layout)) assert length == stride assert batches >= 1 - last_start = (batches * units - 1) * stride + last_start = (batches - 1) * batch_distance(units, stride) + (units - 1) * stride assert last_start + length <= SPAN From 5fd1ddffa80196d1dd2cb68fecd346f94a378e3c Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Fri, 2 Oct 2026 15:42:27 -0400 Subject: [PATCH 13/28] libgis: Use uint_least64_t for the state of the program-owned generators The shared generator keeps its state in an atomic_uint_least64_t and advances it in uint_least64_t, with UINT64_C constants. The generators a program owns used unsigned long long for the same 48-bit state and the arithmetic on it. Use uint_least64_t there too, in the helpers and in the two private structs, so that the new code has the type which the file already uses for a generator state. gis.h includes for the two struct fields. It is a C99 header, which the C11 the build requires includes, and sources across the libraries include it already. Seeds, units, draws and batches stay long long: they are range-checked counts which callers parse with strtoll() and messages print with %lld. The typedefs of the 2014 code are left as they are. The values drawn do not change. Written with the help of Claude Code. --- include/grass/gis.h | 5 +++-- lib/gis/lrand48.c | 46 +++++++++++++++++++++------------------------ 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/include/grass/gis.h b/include/grass/gis.h index f3cf925dc9c..b24c8a0d2d7 100644 --- a/include/grass/gis.h +++ b/include/grass/gis.h @@ -17,6 +17,7 @@ /*============================= Include Files ==============================*/ /* System include files */ +#include #include #include @@ -634,14 +635,14 @@ struct Popen { * read and advance the state only through the G_random_*() functions. It * is a plain value: copying it copies the generator's position. */ struct G_random_state { - unsigned long long state; + uint_least64_t state; }; /* A layout: a seed and the way the generator's span is cut into streams * of stride draws, one per unit of work and batch; see * G_random_init_layout(). Private to the library. */ struct G_random_layout { - unsigned long long start; /* generator state at the seed */ + uint_least64_t start; /* generator state at the seed */ long long units; long long stride; long long batches; /* batches that fit into the span, 0 when none */ diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 21f39d0cfd3..d39e98ff68b 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -157,7 +157,7 @@ static int seed_from_environment(const char *name, long long *seed) G_fatal_error(_("Random number seed %s from %s is not an integer"), text, name); if (!seed_in_range(value)) { - long long reduced = (long long)((unsigned long long)value & 0xFFFFFFFF); + long long reduced = (long long)((uint_least64_t)value & 0xFFFFFFFF); G_warning(_("Random number seed %s from %s is used as %lld, " "its low 32 bits"), @@ -196,13 +196,13 @@ static int seed_from_environment(const char *name, long long *seed) long long G_random_generate_seed(void) { long long given; - unsigned long long seed; + uint_least64_t seed; if (seed_from_environment("GRASS_RANDOM_SEED", &given) || seed_from_environment("SOURCE_DATE_EPOCH", &given)) return given; - seed = (unsigned long long)getpid(); + seed = (uint_least64_t)getpid(); #ifdef HAVE_GETTIMEOFDAY { @@ -210,14 +210,14 @@ long long G_random_generate_seed(void) if (gettimeofday(&tv, NULL) < 0) G_fatal_error(_("gettimeofday failed: %s"), strerror(errno)); - seed += (unsigned long long)tv.tv_sec; - seed += (unsigned long long)tv.tv_usec; + seed += (uint_least64_t)tv.tv_sec; + seed += (uint_least64_t)tv.tv_usec; } #else { time_t t = time(NULL); - seed += (unsigned long long)t; + seed += (uint_least64_t)t; } #endif @@ -370,7 +370,7 @@ double G_drand48(void) /* Advance a generator of the program's own by one step. The * multiplication may wrap around at 2^64; that does not change the result * modulo 2^48. */ -static unsigned long long lcg_step(unsigned long long x) +static uint_least64_t lcg_step(uint_least64_t x) { return (LCG_A * x + LCG_B) & MASK48; } @@ -378,20 +378,19 @@ static unsigned long long lcg_step(unsigned long long x) /* Turn a seed into a generator state the way G_srand48() does: only the * low 32 bits are used, so a negative seed gives the state of its two's * complement 32-bit value. */ -static unsigned long long lcg_seed(long long seed) +static uint_least64_t lcg_seed(long long seed) { - return (((unsigned long long)seed & 0xFFFFFFFF) << 16) | 0x330E; + return (((uint_least64_t)seed & 0xFFFFFFFF) << 16) | 0x330E; } /* Advance the generator by an arbitrary number of steps without taking * them one at a time. One step is the affine map x -> a * x + c, and * composing two such maps gives another, so the map for `steps` steps is * built by repeated squaring, as an integer power would be. */ -static unsigned long long lcg_jump(unsigned long long x, - unsigned long long steps) +static uint_least64_t lcg_jump(uint_least64_t x, uint_least64_t steps) { - unsigned long long a_total = 1, c_total = 0; /* the identity map */ - unsigned long long a = LCG_A, c = LCG_B; /* one step */ + uint_least64_t a_total = 1, c_total = 0; /* the identity map */ + uint_least64_t a = LCG_A, c = LCG_B; /* one step */ while (steps) { if (steps & 1) { @@ -433,11 +432,9 @@ static void check_units(long long units) * different batches is as unrelated as the generator allows; an even * distance would relate those draws, the more simply the more often 2 * divides it. */ -static unsigned long long batch_distance(const struct G_random_layout *layout) +static uint_least64_t batch_distance(const struct G_random_layout *layout) { - return ((unsigned long long)layout->units * - (unsigned long long)layout->stride) | - 1; + return ((uint_least64_t)layout->units * (uint_least64_t)layout->stride) | 1; } /* Fill in a layout of units of the given stride, all of one batch first, @@ -447,8 +444,7 @@ static unsigned long long batch_distance(const struct G_random_layout *layout) static void fill_layout(struct G_random_layout *layout, long long seed, long long units, long long stride) { - unsigned long long draws = - (unsigned long long)units * (unsigned long long)stride; + uint_least64_t draws = (uint_least64_t)units * (uint_least64_t)stride; layout->start = lcg_seed(seed); layout->units = units; @@ -611,7 +607,7 @@ void G_random_init_layout_bounded(struct G_random_layout *layout, void G_random_init_layout(struct G_random_layout *layout, long long seed, long long units) { - unsigned long long parts, stride; + uint_least64_t parts, stride; check_seed(seed); check_units(units); @@ -620,7 +616,7 @@ void G_random_init_layout(struct G_random_layout *layout, long long seed, "most %lld units, not %lld; a bounded layout serves " "any number of units"), WHOLE_SPAN_MAX_UNITS, units); - parts = (unsigned long long)units | 1; + parts = (uint_least64_t)units | 1; stride = LCG_SPAN / parts; if (parts > 1 && stride % 2 == 0) stride--; @@ -688,7 +684,7 @@ void G_random_state_for_batch(struct G_random_state *state, const struct G_random_layout *layout, long long batch, long long unit) { - unsigned long long offset; + uint_least64_t offset; if (unit < 0 || unit >= layout->units) G_fatal_error(_("Random number unit %lld is out of range " @@ -718,8 +714,8 @@ void G_random_state_for_batch(struct G_random_state *state, /* With batch below the batches that fit, the offset is below 2^46; with * batch 0 of a layout which does not fit, it may reach past the span. * It is below 2^63 either way, since units times stride is. */ - offset = (unsigned long long)batch * batch_distance(layout) + - (unsigned long long)unit * (unsigned long long)layout->stride; + offset = (uint_least64_t)batch * batch_distance(layout) + + (uint_least64_t)unit * (uint_least64_t)layout->stride; state->state = lcg_jump(layout->start, offset); } @@ -757,7 +753,7 @@ void G_random_advance(struct G_random_state *state, long long draws) G_fatal_error(_("Cannot advance a random number generator by %lld " "draws (the number must not be negative)"), draws); - state->state = lcg_jump(state->state, (unsigned long long)draws); + state->state = lcg_jump(state->state, (uint_least64_t)draws); } /*! From eebd877f29ba1331c194339d158c8b49722d9029 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Fri, 2 Oct 2026 16:24:51 -0400 Subject: [PATCH 14/28] libgis: Use exact-width integers inside the program-owned generators In the new code, a generator state is a uint64_t and the counts of a layout, its units, stride and batches, are int64_t, in the structs and in the helpers. The previous commit gave the state uint_least64_t, as the shared generator has, which left the layout struct with two spellings of a 64-bit integer side by side. The shared generator keeps its least-width types, those of its atomic state, and its 2014 typedefs. The public functions still take and return long long, which callers parse with strtoll() and messages print with %lld; the conversion at that boundary changes no value. All these names compile to the same code on the platforms the library builds on, so this is a matter of reading, and the values drawn do not change. Written with the help of Claude Code. --- include/grass/gis.h | 12 +++++------ lib/gis/lrand48.c | 50 ++++++++++++++++++++++----------------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/include/grass/gis.h b/include/grass/gis.h index b24c8a0d2d7..bc1a4c7e6c9 100644 --- a/include/grass/gis.h +++ b/include/grass/gis.h @@ -635,18 +635,18 @@ struct Popen { * read and advance the state only through the G_random_*() functions. It * is a plain value: copying it copies the generator's position. */ struct G_random_state { - uint_least64_t state; + uint64_t state; }; /* A layout: a seed and the way the generator's span is cut into streams * of stride draws, one per unit of work and batch; see * G_random_init_layout(). Private to the library. */ struct G_random_layout { - uint_least64_t start; /* generator state at the seed */ - long long units; - long long stride; - long long batches; /* batches that fit into the span, 0 when none */ - int whole_span; /* a layout of the whole span holds a single batch */ + uint64_t start; /* generator state at the seed */ + int64_t units; + int64_t stride; + int64_t batches; /* batches that fit into the span, 0 when none */ + int whole_span; /* a layout of the whole span holds a single batch */ }; typedef int CELL; diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index d39e98ff68b..28298727ed4 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -157,7 +157,7 @@ static int seed_from_environment(const char *name, long long *seed) G_fatal_error(_("Random number seed %s from %s is not an integer"), text, name); if (!seed_in_range(value)) { - long long reduced = (long long)((uint_least64_t)value & 0xFFFFFFFF); + long long reduced = (long long)((uint64_t)value & 0xFFFFFFFF); G_warning(_("Random number seed %s from %s is used as %lld, " "its low 32 bits"), @@ -196,13 +196,13 @@ static int seed_from_environment(const char *name, long long *seed) long long G_random_generate_seed(void) { long long given; - uint_least64_t seed; + uint64_t seed; if (seed_from_environment("GRASS_RANDOM_SEED", &given) || seed_from_environment("SOURCE_DATE_EPOCH", &given)) return given; - seed = (uint_least64_t)getpid(); + seed = (uint64_t)getpid(); #ifdef HAVE_GETTIMEOFDAY { @@ -210,14 +210,14 @@ long long G_random_generate_seed(void) if (gettimeofday(&tv, NULL) < 0) G_fatal_error(_("gettimeofday failed: %s"), strerror(errno)); - seed += (uint_least64_t)tv.tv_sec; - seed += (uint_least64_t)tv.tv_usec; + seed += (uint64_t)tv.tv_sec; + seed += (uint64_t)tv.tv_usec; } #else { time_t t = time(NULL); - seed += (uint_least64_t)t; + seed += (uint64_t)t; } #endif @@ -370,7 +370,7 @@ double G_drand48(void) /* Advance a generator of the program's own by one step. The * multiplication may wrap around at 2^64; that does not change the result * modulo 2^48. */ -static uint_least64_t lcg_step(uint_least64_t x) +static uint64_t lcg_step(uint64_t x) { return (LCG_A * x + LCG_B) & MASK48; } @@ -378,19 +378,19 @@ static uint_least64_t lcg_step(uint_least64_t x) /* Turn a seed into a generator state the way G_srand48() does: only the * low 32 bits are used, so a negative seed gives the state of its two's * complement 32-bit value. */ -static uint_least64_t lcg_seed(long long seed) +static uint64_t lcg_seed(long long seed) { - return (((uint_least64_t)seed & 0xFFFFFFFF) << 16) | 0x330E; + return (((uint64_t)seed & 0xFFFFFFFF) << 16) | 0x330E; } /* Advance the generator by an arbitrary number of steps without taking * them one at a time. One step is the affine map x -> a * x + c, and * composing two such maps gives another, so the map for `steps` steps is * built by repeated squaring, as an integer power would be. */ -static uint_least64_t lcg_jump(uint_least64_t x, uint_least64_t steps) +static uint64_t lcg_jump(uint64_t x, uint64_t steps) { - uint_least64_t a_total = 1, c_total = 0; /* the identity map */ - uint_least64_t a = LCG_A, c = LCG_B; /* one step */ + uint64_t a_total = 1, c_total = 0; /* the identity map */ + uint64_t a = LCG_A, c = LCG_B; /* one step */ while (steps) { if (steps & 1) { @@ -432,9 +432,9 @@ static void check_units(long long units) * different batches is as unrelated as the generator allows; an even * distance would relate those draws, the more simply the more often 2 * divides it. */ -static uint_least64_t batch_distance(const struct G_random_layout *layout) +static uint64_t batch_distance(const struct G_random_layout *layout) { - return ((uint_least64_t)layout->units * (uint_least64_t)layout->stride) | 1; + return ((uint64_t)layout->units * (uint64_t)layout->stride) | 1; } /* Fill in a layout of units of the given stride, all of one batch first, @@ -444,7 +444,7 @@ static uint_least64_t batch_distance(const struct G_random_layout *layout) static void fill_layout(struct G_random_layout *layout, long long seed, long long units, long long stride) { - uint_least64_t draws = (uint_least64_t)units * (uint_least64_t)stride; + uint64_t draws = (uint64_t)units * (uint64_t)stride; layout->start = lcg_seed(seed); layout->units = units; @@ -452,7 +452,7 @@ static void fill_layout(struct G_random_layout *layout, long long seed, layout->batches = 0; if (draws <= LCG_SPAN) layout->batches = - (long long)((LCG_SPAN - draws) / batch_distance(layout) + 1); + (int64_t)((LCG_SPAN - draws) / batch_distance(layout) + 1); layout->whole_span = 0; } @@ -607,7 +607,7 @@ void G_random_init_layout_bounded(struct G_random_layout *layout, void G_random_init_layout(struct G_random_layout *layout, long long seed, long long units) { - uint_least64_t parts, stride; + uint64_t parts, stride; check_seed(seed); check_units(units); @@ -616,13 +616,13 @@ void G_random_init_layout(struct G_random_layout *layout, long long seed, "most %lld units, not %lld; a bounded layout serves " "any number of units"), WHOLE_SPAN_MAX_UNITS, units); - parts = (uint_least64_t)units | 1; + parts = (uint64_t)units | 1; stride = LCG_SPAN / parts; if (parts > 1 && stride % 2 == 0) stride--; layout->start = lcg_seed(seed); layout->units = units; - layout->stride = (long long)stride; + layout->stride = (int64_t)stride; layout->batches = 1; layout->whole_span = 1; } @@ -684,12 +684,12 @@ void G_random_state_for_batch(struct G_random_state *state, const struct G_random_layout *layout, long long batch, long long unit) { - uint_least64_t offset; + uint64_t offset; if (unit < 0 || unit >= layout->units) G_fatal_error(_("Random number unit %lld is out of range " "(must be between 0 and %lld)"), - unit, layout->units - 1); + unit, (long long)(layout->units - 1)); if (batch < 0) G_fatal_error(_("Random number batch %lld is out of range " "(must not be negative)"), @@ -704,7 +704,7 @@ void G_random_state_for_batch(struct G_random_state *state, "Random number batch %lld is out of range " "(%lld batches fit into the generator's span)", (unsigned long)layout->batches), - batch, layout->batches); + batch, (long long)layout->batches); if (layout->batches == 0 && batch > 0) G_fatal_error(_("Random number batch %lld is out of range " "(no batch fits into the generator's span, only batch " @@ -714,8 +714,8 @@ void G_random_state_for_batch(struct G_random_state *state, /* With batch below the batches that fit, the offset is below 2^46; with * batch 0 of a layout which does not fit, it may reach past the span. * It is below 2^63 either way, since units times stride is. */ - offset = (uint_least64_t)batch * batch_distance(layout) + - (uint_least64_t)unit * (uint_least64_t)layout->stride; + offset = (uint64_t)batch * batch_distance(layout) + + (uint64_t)unit * (uint64_t)layout->stride; state->state = lcg_jump(layout->start, offset); } @@ -753,7 +753,7 @@ void G_random_advance(struct G_random_state *state, long long draws) G_fatal_error(_("Cannot advance a random number generator by %lld " "draws (the number must not be negative)"), draws); - state->state = lcg_jump(state->state, (uint_least64_t)draws); + state->state = lcg_jump(state->state, (uint64_t)draws); } /*! From 9bb7cf7564888f0c369a2b78efc5b133731006d5 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Fri, 2 Oct 2026 17:10:19 -0400 Subject: [PATCH 15/28] libgis: Make the whole-span flag of a random number layout a bool The field says whether a layout is one of the whole span, which holds a single batch and gets an error message of its own for a further batch. It is a truth value, for which gis.h asks for the C99 type bool, and it stood as an int beside the exact-width fields of the struct. gis.h now includes itself, as the raster and vector headers do. No source in the tree defines bool, true or false on its own. Written with the help of Claude Code. --- include/grass/gis.h | 3 ++- lib/gis/lrand48.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/grass/gis.h b/include/grass/gis.h index bc1a4c7e6c9..5a58dfc1b17 100644 --- a/include/grass/gis.h +++ b/include/grass/gis.h @@ -17,6 +17,7 @@ /*============================= Include Files ==============================*/ /* System include files */ +#include #include #include #include @@ -646,7 +647,7 @@ struct G_random_layout { int64_t units; int64_t stride; int64_t batches; /* batches that fit into the span, 0 when none */ - int whole_span; /* a layout of the whole span holds a single batch */ + bool whole_span; /* a layout of the whole span holds a single batch */ }; typedef int CELL; diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 28298727ed4..9d7941d8cf4 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -453,7 +453,7 @@ static void fill_layout(struct G_random_layout *layout, long long seed, if (draws <= LCG_SPAN) layout->batches = (int64_t)((LCG_SPAN - draws) / batch_distance(layout) + 1); - layout->whole_span = 0; + layout->whole_span = false; } /*! @@ -624,7 +624,7 @@ void G_random_init_layout(struct G_random_layout *layout, long long seed, layout->units = units; layout->stride = (int64_t)stride; layout->batches = 1; - layout->whole_span = 1; + layout->whole_span = true; } /*! From fe5f83ffdcec6a87876cc2202e1b7cdeeebb0a73 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Fri, 2 Oct 2026 23:32:50 -0400 Subject: [PATCH 16/28] libgis: Take and return int64_t in the random number layout functions The functions took and returned long long while the layout struct holds int64_t, so the same values were named by two types at the boundary of the API. Use int64_t throughout, with INT64_MAX in the overflow checks and PRId64 in the messages, as the vector library does. Tools which hold a seed or a count as long long call the functions unchanged. Written with the help of Claude Code. --- include/grass/defs/gis.h | 25 ++++---- lib/gis/lrand48.c | 132 +++++++++++++++++++-------------------- 2 files changed, 77 insertions(+), 80 deletions(-) diff --git a/include/grass/defs/gis.h b/include/grass/defs/gis.h index 529354c9596..106c9801ef4 100644 --- a/include/grass/defs/gis.h +++ b/include/grass/defs/gis.h @@ -518,22 +518,21 @@ long G_srand48_auto(void); long G_lrand48(void); long G_mrand48(void); double G_drand48(void); -void G_random_state_from_seed(struct G_random_state *, long long); -void G_random_init_layout_exact(struct G_random_layout *, long long, long long, - long long); -void G_random_init_layout_bounded(struct G_random_layout *, long long, - long long, long long); -void G_random_init_layout(struct G_random_layout *, long long, long long); -long long G_random_layout_batches(const struct G_random_layout *); -long long G_random_layout_length(const struct G_random_layout *); +void G_random_state_from_seed(struct G_random_state *, int64_t); +void G_random_init_layout_exact(struct G_random_layout *, int64_t, int64_t, + int64_t); +void G_random_init_layout_bounded(struct G_random_layout *, int64_t, int64_t, + int64_t); +void G_random_init_layout(struct G_random_layout *, int64_t, int64_t); +int64_t G_random_layout_batches(const struct G_random_layout *); +int64_t G_random_layout_length(const struct G_random_layout *); void G_random_state_for_unit(struct G_random_state *, - const struct G_random_layout *, long long); + const struct G_random_layout *, int64_t); void G_random_state_for_batch(struct G_random_state *, - const struct G_random_layout *, long long, - long long); -void G_random_advance(struct G_random_state *, long long); + const struct G_random_layout *, int64_t, int64_t); +void G_random_advance(struct G_random_state *, int64_t); double G_random_double(struct G_random_state *); -long long G_random_generate_seed(void); +int64_t G_random_generate_seed(void); /* ls.c */ void G_set_ls_filter(int (*)(const char *, void *), void *); diff --git a/lib/gis/lrand48.c b/lib/gis/lrand48.c index 9d7941d8cf4..7c2f192a835 100644 --- a/lib/gis/lrand48.c +++ b/lib/gis/lrand48.c @@ -36,7 +36,7 @@ */ #include -#include +#include #include #include #include @@ -78,7 +78,7 @@ typedef signed int int32; /* The most units a layout of the whole span takes; see * G_random_init_layout() for why. */ -#define WHOLE_SPAN_MAX_UNITS (1LL << 20) +#define WHOLE_SPAN_MAX_UNITS (INT64_C(1) << 20) #if LRAND48_ATOMIC @@ -131,18 +131,18 @@ void G_srand48(long seedval) /* The seeds the generator tells apart: G_srand48() uses the low 32 bits of * the seed, and this range names every such seed once, as a signed or an * unsigned 32-bit value. */ -static int seed_in_range(long long seed) +static int seed_in_range(int64_t seed) { - return seed >= -(1LL << 31) && seed <= (1LL << 32) - 1; + return seed >= -(INT64_C(1) << 31) && seed <= (INT64_C(1) << 32) - 1; } /* Read a seed from an environment variable. An unset or empty variable * gives no seed, so that the caller can try the next source. */ -static int seed_from_environment(const char *name, long long *seed) +static int seed_from_environment(const char *name, int64_t *seed) { const char *text = getenv(name); char *end; - long long value; + int64_t value; if (!text || !*text) return 0; @@ -157,9 +157,9 @@ static int seed_from_environment(const char *name, long long *seed) G_fatal_error(_("Random number seed %s from %s is not an integer"), text, name); if (!seed_in_range(value)) { - long long reduced = (long long)((uint64_t)value & 0xFFFFFFFF); + int64_t reduced = (int64_t)((uint64_t)value & 0xFFFFFFFF); - G_warning(_("Random number seed %s from %s is used as %lld, " + G_warning(_("Random number seed %s from %s is used as %" PRId64 ", " "its low 32 bits"), text, name, reduced); value = reduced; @@ -174,7 +174,7 @@ static int seed_from_environment(const char *name, long long *seed) * The seed is the value of the environment variable GRASS_RANDOM_SEED, or * of SOURCE_DATE_EPOCH when GRASS_RANDOM_SEED is not set or empty, and * otherwise a weak hash of the current time and process ID. A value from - * the environment must be a decimal integer within the range of long long, + * the environment must be a decimal integer within the range of int64_t, * with nothing after it (leading white space and a sign are allowed); * anything else is a fatal error naming the variable. A value from -2^31 * to 2^32 - 1 is returned as it is, and a value outside that range is @@ -193,9 +193,9 @@ static int seed_from_environment(const char *name, long long *seed) * * \return the seed */ -long long G_random_generate_seed(void) +int64_t G_random_generate_seed(void) { - long long given; + int64_t given; uint64_t seed; if (seed_from_environment("GRASS_RANDOM_SEED", &given) || @@ -221,7 +221,7 @@ long long G_random_generate_seed(void) } #endif - return (long long)(seed & 0xFFFFFFFF); + return (int64_t)(seed & 0xFFFFFFFF); } /*! @@ -242,7 +242,7 @@ long long G_random_generate_seed(void) */ long G_srand48_auto(void) { - long long seed = G_random_generate_seed(); + int64_t seed = G_random_generate_seed(); G_srand48((long)seed); return (long)seed; @@ -378,7 +378,7 @@ static uint64_t lcg_step(uint64_t x) /* Turn a seed into a generator state the way G_srand48() does: only the * low 32 bits are used, so a negative seed gives the state of its two's * complement 32-bit value. */ -static uint64_t lcg_seed(long long seed) +static uint64_t lcg_seed(int64_t seed) { return (((uint64_t)seed & 0xFFFFFFFF) << 16) | 0x330E; } @@ -410,19 +410,19 @@ static uint64_t lcg_jump(uint64_t x, uint64_t steps) * as signed or as unsigned 32-bit values are accepted, so -1 and * 4294967295 are both accepted and are the same seed; anything else is * rejected rather than silently losing its high bits. */ -static void check_seed(long long seed) +static void check_seed(int64_t seed) { if (!seed_in_range(seed)) - G_fatal_error(_("Random number seed %lld is outside the range from " - "-2147483648 to 4294967295 the generator can use"), + G_fatal_error(_("Random number seed %" PRId64 " is outside the range " + "from -2147483648 to 4294967295 the generator can use"), seed); } -static void check_units(long long units) +static void check_units(int64_t units) { if (units <= 0) G_fatal_error(_("The number of units of a random number layout must " - "be positive, not %lld"), + "be positive, not %" PRId64), units); } @@ -441,8 +441,8 @@ static uint64_t batch_distance(const struct G_random_layout *layout) * then those of the next batch. The batches that fit are those whose last * stream ends within the span. Callers must check beforehand that * units * stride does not overflow. */ -static void fill_layout(struct G_random_layout *layout, long long seed, - long long units, long long stride) +static void fill_layout(struct G_random_layout *layout, int64_t seed, + int64_t units, int64_t stride) { uint64_t draws = (uint64_t)units * (uint64_t)stride; @@ -474,7 +474,7 @@ static void fill_layout(struct G_random_layout *layout, long long seed, * \param[out] state generator state to seed * \param[in] seed seed, from -2^31 to 2^32 - 1 */ -void G_random_state_from_seed(struct G_random_state *state, long long seed) +void G_random_state_from_seed(struct G_random_state *state, int64_t seed) { check_seed(seed); state->state = lcg_seed(seed); @@ -499,7 +499,7 @@ void G_random_state_from_seed(struct G_random_state *state, long long seed) * gislib_random_streams. * * A seed outside -2^31 to 2^32 - 1, a number of units or of draws which - * is not positive, or a product of the two beyond the range of long long + * is not positive, or a product of the two beyond the range of int64_t * is a fatal error. * * \param[out] layout layout to initialize @@ -507,20 +507,20 @@ void G_random_state_from_seed(struct G_random_state *state, long long seed) * \param[in] units number of units of work, positive * \param[in] draws_per_unit number of values each unit draws, positive */ -void G_random_init_layout_exact(struct G_random_layout *layout, long long seed, - long long units, long long draws_per_unit) +void G_random_init_layout_exact(struct G_random_layout *layout, int64_t seed, + int64_t units, int64_t draws_per_unit) { check_seed(seed); check_units(units); if (draws_per_unit <= 0) G_fatal_error(_("The number of random numbers a unit draws must be " - "positive, not %lld"), + "positive, not %" PRId64), draws_per_unit); - if (units > LLONG_MAX / draws_per_unit) - G_fatal_error(_("A random number layout of %lld units of %lld draws " - "each is too large (the number of draws must not " - "exceed %lld)"), - units, draws_per_unit, LLONG_MAX); + if (units > INT64_MAX / draws_per_unit) + G_fatal_error(_("A random number layout of %" PRId64 " units of " + "%" PRId64 " draws each is too large (the number of " + "draws must not exceed %" PRId64 ")"), + units, draws_per_unit, INT64_MAX); fill_layout(layout, seed, units, draws_per_unit); } @@ -541,33 +541,32 @@ void G_random_init_layout_exact(struct G_random_layout *layout, long long seed, * * A seed outside -2^31 to 2^32 - 1, a number of units or a bound which is * not positive, or a product of the units and the stride beyond the range - * of long long is a fatal error. + * of int64_t is a fatal error. * * \param[out] layout layout to initialize * \param[in] seed seed, see G_random_state_from_seed() * \param[in] units number of units of work, positive * \param[in] max_draws most values any unit draws, positive */ -void G_random_init_layout_bounded(struct G_random_layout *layout, - long long seed, long long units, - long long max_draws) +void G_random_init_layout_bounded(struct G_random_layout *layout, int64_t seed, + int64_t units, int64_t max_draws) { - long long stride; + int64_t stride; check_seed(seed); check_units(units); if (max_draws <= 0) G_fatal_error(_("The most random numbers a unit draws must be " - "positive, not %lld"), + "positive, not %" PRId64), max_draws); - /* LLONG_MAX is odd, so an even bound can be rounded up. */ + /* INT64_MAX is odd, so an even bound can be rounded up. */ stride = max_draws % 2 == 0 ? max_draws + 1 : max_draws; - if (units > LLONG_MAX / stride) - G_fatal_error(_("A random number layout of %lld units of at most " - "%lld draws each is too large (the number of units " - "times the bound rounded up to odd must not exceed " - "%lld)"), - units, max_draws, LLONG_MAX); + if (units > INT64_MAX / stride) + G_fatal_error(_("A random number layout of %" PRId64 " units of at " + "most %" PRId64 " draws each is too large (the number " + "of units times the bound rounded up to odd must not " + "exceed %" PRId64 ")"), + units, max_draws, INT64_MAX); fill_layout(layout, seed, units, stride); } @@ -604,8 +603,8 @@ void G_random_init_layout_bounded(struct G_random_layout *layout, * \param[in] seed seed, see G_random_state_from_seed() * \param[in] units number of units of work, from 1 to 2^20 */ -void G_random_init_layout(struct G_random_layout *layout, long long seed, - long long units) +void G_random_init_layout(struct G_random_layout *layout, int64_t seed, + int64_t units) { uint64_t parts, stride; @@ -613,8 +612,8 @@ void G_random_init_layout(struct G_random_layout *layout, long long seed, check_units(units); if (units > WHOLE_SPAN_MAX_UNITS) G_fatal_error(_("A random number layout of the whole span takes at " - "most %lld units, not %lld; a bounded layout serves " - "any number of units"), + "most %" PRId64 " units, not %" PRId64 "; a bounded " + "layout serves any number of units"), WHOLE_SPAN_MAX_UNITS, units); parts = (uint64_t)units | 1; stride = LCG_SPAN / parts; @@ -635,7 +634,7 @@ void G_random_init_layout(struct G_random_layout *layout, long long seed, * \return the batches that fit, 1 for a layout of the whole span, 0 when * one batch of the layout does not fit into the span */ -long long G_random_layout_batches(const struct G_random_layout *layout) +int64_t G_random_layout_batches(const struct G_random_layout *layout) { return layout->batches; } @@ -648,7 +647,7 @@ long long G_random_layout_batches(const struct G_random_layout *layout) * \return the stride of the layout, the number of values every unit may * draw without running into the next unit's stream */ -long long G_random_layout_length(const struct G_random_layout *layout) +int64_t G_random_layout_length(const struct G_random_layout *layout) { return layout->stride; } @@ -682,31 +681,31 @@ long long G_random_layout_length(const struct G_random_layout *layout) */ void G_random_state_for_batch(struct G_random_state *state, const struct G_random_layout *layout, - long long batch, long long unit) + int64_t batch, int64_t unit) { uint64_t offset; if (unit < 0 || unit >= layout->units) - G_fatal_error(_("Random number unit %lld is out of range " - "(must be between 0 and %lld)"), - unit, (long long)(layout->units - 1)); + G_fatal_error(_("Random number unit %" PRId64 " is out of range " + "(must be between 0 and %" PRId64 ")"), + unit, layout->units - 1); if (batch < 0) - G_fatal_error(_("Random number batch %lld is out of range " + G_fatal_error(_("Random number batch %" PRId64 " is out of range " "(must not be negative)"), batch); if (batch > 0 && layout->whole_span) - G_fatal_error(_("Random number batch %lld is out of range " + G_fatal_error(_("Random number batch %" PRId64 " is out of range " "(a layout of the whole span holds a single batch)"), batch); if (layout->batches >= 1 && batch >= layout->batches) - G_fatal_error(n_("Random number batch %lld is out of range " - "(%lld batch fits into the generator's span)", - "Random number batch %lld is out of range " - "(%lld batches fit into the generator's span)", + G_fatal_error(n_("Random number batch %" PRId64 " is out of range " + "(%" PRId64 " batch fits into the generator's span)", + "Random number batch %" PRId64 " is out of range " + "(%" PRId64 " batches fit into the generator's span)", (unsigned long)layout->batches), - batch, (long long)layout->batches); + batch, layout->batches); if (layout->batches == 0 && batch > 0) - G_fatal_error(_("Random number batch %lld is out of range " + G_fatal_error(_("Random number batch %" PRId64 " is out of range " "(no batch fits into the generator's span, only batch " "0 can be used)"), batch); @@ -729,8 +728,7 @@ void G_random_state_for_batch(struct G_random_state *state, * \param[in] unit number of the unit, from 0 to units - 1 */ void G_random_state_for_unit(struct G_random_state *state, - const struct G_random_layout *layout, - long long unit) + const struct G_random_layout *layout, int64_t unit) { G_random_state_for_batch(state, layout, 0, unit); } @@ -747,11 +745,11 @@ void G_random_state_for_unit(struct G_random_state *state, * \param[in,out] state a seeded generator state * \param[in] draws number of values to skip, not negative */ -void G_random_advance(struct G_random_state *state, long long draws) +void G_random_advance(struct G_random_state *state, int64_t draws) { if (draws < 0) - G_fatal_error(_("Cannot advance a random number generator by %lld " - "draws (the number must not be negative)"), + G_fatal_error(_("Cannot advance a random number generator by " + "%" PRId64 " draws (the number must not be negative)"), draws); state->state = lcg_jump(state->state, (uint64_t)draws); } From 512d6dac38c7f9c1b19259cd612eadfa21ec7555 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Sat, 3 Oct 2026 00:04:01 -0400 Subject: [PATCH 17/28] r.sim: Hold the seed as int64_t The libgis functions take and return the seed as int64_t, so the tools and the simulation library keep it in that type, printed with PRId64. Written with the help of Claude Code. --- raster/r.sim/r.sim.sediment/main.c | 2 +- raster/r.sim/r.sim.water/main.c | 2 +- raster/r.sim/simlib/random.c | 11 ++++++----- raster/r.sim/simlib/simlib.h | 5 +++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/raster/r.sim/r.sim.sediment/main.c b/raster/r.sim/r.sim.sediment/main.c index 75e7b42c43f..8d87529e6bb 100644 --- a/raster/r.sim/r.sim.sediment/main.c +++ b/raster/r.sim/r.sim.sediment/main.c @@ -321,7 +321,7 @@ int main(int argc, char *argv[]) ? SUMMARY_JSON : SUMMARY_PLAIN; - long long seed = simwe_seed(parm.seed, flag.generateSeed); + int64_t seed = simwe_seed(parm.seed, flag.generateSeed); G_get_set_window(&cellhd); diff --git a/raster/r.sim/r.sim.water/main.c b/raster/r.sim/r.sim.water/main.c index f1f80012900..be6af7def19 100644 --- a/raster/r.sim/r.sim.water/main.c +++ b/raster/r.sim/r.sim.water/main.c @@ -357,7 +357,7 @@ int main(int argc, char *argv[]) ? SUMMARY_JSON : SUMMARY_PLAIN; - long long seed = simwe_seed(parm.seed, flag.generateSeed); + int64_t seed = simwe_seed(parm.seed, flag.generateSeed); G_get_set_window(&cellhd); diff --git a/raster/r.sim/simlib/random.c b/raster/r.sim/simlib/random.c index 6ab6377fe8d..2673758e04b 100644 --- a/raster/r.sim/simlib/random.c +++ b/raster/r.sim/simlib/random.c @@ -1,6 +1,7 @@ /* random.c (simlib), 20.nov.2002, JH */ #include +#include #include #include @@ -21,14 +22,14 @@ * * \return the seed */ -long long simwe_seed(const struct Option *seed, const struct Flag *generate) +int64_t simwe_seed(const struct Option *seed, const struct Flag *generate) { - long long value; + int64_t value; struct G_random_state check; if (generate->answer) { value = G_random_generate_seed(); - G_verbose_message(_("Generated random seed (-s): %lld"), value); + G_verbose_message(_("Generated random seed (-s): %" PRId64), value); } else if (seed->answer) { char *end; @@ -37,8 +38,8 @@ long long simwe_seed(const struct Option *seed, const struct Flag *generate) value = strtoll(seed->answer, &end, 10); if (end == seed->answer || *end != '\0' || errno == ERANGE) G_fatal_error(_("Invalid random seed <%s>"), seed->answer); - G_verbose_message(_("Read random seed from %s option: %lld"), seed->key, - value); + G_verbose_message(_("Read random seed from %s option: %" PRId64), + seed->key, value); } else { /* default as it used to be */ diff --git a/raster/r.sim/simlib/simlib.h b/raster/r.sim/simlib/simlib.h index 8a44ef09dd6..151da100b9d 100644 --- a/raster/r.sim/simlib/simlib.h +++ b/raster/r.sim/simlib/simlib.h @@ -5,6 +5,7 @@ * \brief This is the interface for the simlib (SIMWE) library. */ #include +#include #include #include @@ -39,7 +40,7 @@ typedef struct { int timesec; // Time how long the simulation runs [minutes] bool ts; // Time series output double mintimestep; // Minimum time step for the simulation [seconds] - long long seed; // Seed of the walkers' random numbers + int64_t seed; // Seed of the walkers' random numbers } Settings; typedef struct { @@ -209,7 +210,7 @@ void create_observation_points(ObservationPoints *points); void derivatives(const Geometry *geometry, float **elevation, double **dx, double **dy); -long long simwe_seed(const struct Option *seed, const struct Flag *generate); +int64_t simwe_seed(const struct Option *seed, const struct Flag *generate); void gasdev(struct G_random_state *state, double *x, double *y); double amax1(double, double); double amin1(double, double); From 96cd2a055d61864a10d31931178826084831ca03 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Sun, 4 Oct 2026 00:01:11 -0400 Subject: [PATCH 18/28] r.sim.water: Describe the locked infiltration in the nprocs note The infiltration capacity of a cell is now reduced under a lock, so the note on results with more threads names what still depends on them: the order in which walkers reach the cell. Written with the help of Claude Code. --- raster/r.sim/r.sim.water/r.sim.water.html | 10 +++++----- raster/r.sim/r.sim.water/r.sim.water.md | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/raster/r.sim/r.sim.water/r.sim.water.html b/raster/r.sim/r.sim.water/r.sim.water.html index 3b6fcd8ae3c..f2fd9829cf2 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.html +++ b/raster/r.sim/r.sim.water/r.sim.water.html @@ -338,11 +338,11 @@

Random numbers and parallel processing

results. With more threads, every walker's weight is added to the water depth, but walkers in the same cell add their weights in an order which depends on the threads, and the floating point sums differ slightly with -the order. Walkers in the same cell also use up the infiltration -capacity at the same time without synchronization. The walkers -themselves move the same way for any nprocs as long as the water -depth stays below hmax, above which the diffusion depends on the -depth, and there is no infiltration. Results with nprocs greater +the order. Which walkers the infiltration capacity of a cell absorbs +also depends on the order in which the threads bring them to the cell. +The walkers themselves move the same way for any nprocs as long as +the water depth stays below hmax, above which the diffusion depends +on the depth, and there is no infiltration. Results with nprocs greater than 1 are close to, but not identical with, those with nprocs=1, and repeated runs with the same nprocs may differ slightly. Use nprocs=1 when results must be reproducible. diff --git a/raster/r.sim/r.sim.water/r.sim.water.md b/raster/r.sim/r.sim.water/r.sim.water.md index 27334772249..d09acc3dd00 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.md +++ b/raster/r.sim/r.sim.water/r.sim.water.md @@ -328,11 +328,11 @@ With **nprocs=1**, runs with the same seed and inputs give identical results. With more threads, every walker's weight is added to the water depth, but walkers in the same cell add their weights in an order which depends on the threads, and the floating point sums differ slightly with -the order. Walkers in the same cell also use up the infiltration -capacity at the same time without synchronization. The walkers -themselves move the same way for any **nprocs** as long as the water -depth stays below **hmax**, above which the diffusion depends on the -depth, and there is no infiltration. Results with **nprocs** greater +the order. Which walkers the infiltration capacity of a cell absorbs +also depends on the order in which the threads bring them to the cell. +The walkers themselves move the same way for any **nprocs** as long as +the water depth stays below **hmax**, above which the diffusion depends +on the depth, and there is no infiltration. Results with **nprocs** greater than 1 are close to, but not identical with, those with **nprocs=1**, and repeated runs with the same **nprocs** may differ slightly. Use **nprocs=1** when results must be reproducible. From 959911537e0f5aa8160a613c4fcd418040dedeea Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 13:05:22 -0400 Subject: [PATCH 19/28] r.sim: Drop comments which restate the code The comment on the trap draw was carried over from the old call it described, and the one on the walker array repeats its type. Written with the help of Claude Code. --- raster/r.sim/simlib/hydro.c | 3 +-- raster/r.sim/simlib/simlib.h | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/raster/r.sim/simlib/hydro.c b/raster/r.sim/simlib/hydro.c index 147b05b2d1f..c32b4c19bb0 100644 --- a/raster/r.sim/simlib/hydro.c +++ b/raster/r.sim/simlib/hydro.c @@ -278,8 +278,7 @@ void main_loop(const Setup *setup, const Geometry *geometry, if (inputs->traps != NULL && grids->trap[k][l] != 0.) { /* traps */ - float eff = G_random_double( - &sim->w[lw].state); /* random generator */ + float eff = G_random_double(&sim->w[lw].state); if (eff <= grids->trap[k][l]) { velx = -0.1 * diff --git a/raster/r.sim/simlib/simlib.h b/raster/r.sim/simlib/simlib.h index 356f0c3e07d..884ef17e0b6 100644 --- a/raster/r.sim/simlib/simlib.h +++ b/raster/r.sim/simlib/simlib.h @@ -63,8 +63,8 @@ typedef struct { int nstack; // Number of output walkers struct point3D *stack; // Output 3D walkers int maxwa; // Number of total walkers - double rwalk; // Number of input walkers per block as double precision - struct walker *w; // Walkers + double rwalk; // Number of input walkers per block as double precision + struct walker *w; struct point2D *vavg; // Average velocity of walkers int max_walkers; // Number of allocated walkers, maxwa plus one per cell } Simulation; @@ -165,7 +165,7 @@ struct point3D { double m; }; -// A walker: position x and y, weight m, and its random number state +// A walker with its weight m and its own random number state struct walker { double x; double y; From 1ac082eb319c4257f89c0eccf586f6de80ac5a9e Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 13:58:34 -0400 Subject: [PATCH 20/28] r.sim: Generate the seed when none is given and record it Without random_seed, the seed is now generated, as in r.mapcalc, instead of being 12345. The seed used is recorded in the history of the output maps and in the -p summary as random_seed, so that a run can be repeated. The -s flag, which generated a seed, is deprecated with the message r.mapcalc gives, and random_seed with -s is an error, as there. The option is now the standard seed option with its old key. Written with the help of Claude Code. --- raster/r.sim/r.sim.sediment/main.c | 15 +++------ .../r.sim/r.sim.sediment/r.sim.sediment.html | 18 ++++++----- raster/r.sim/r.sim.sediment/r.sim.sediment.md | 18 ++++++----- .../tests/r_sim_sediment_random_test.py | 4 +-- .../tests/r_sim_sediment_summary_test.py | 1 + raster/r.sim/r.sim.water/main.c | 15 +++------ raster/r.sim/r.sim.water/r.sim.water.html | 17 +++++++--- raster/r.sim/r.sim.water/r.sim.water.md | 17 +++++++--- .../tests/r_sim_water_random_test.py | 32 ++++++++++++++++++- .../tests/r_sim_water_summary_test.py | 3 ++ raster/r.sim/simlib/output.c | 2 ++ raster/r.sim/simlib/random.c | 32 ++++++++++++------- raster/r.sim/simlib/summary.c | 3 ++ 13 files changed, 116 insertions(+), 61 deletions(-) diff --git a/raster/r.sim/r.sim.sediment/main.c b/raster/r.sim/r.sim.sediment/main.c index 3362bec7da4..21a51fc7d87 100644 --- a/raster/r.sim/r.sim.sediment/main.c +++ b/raster/r.sim/r.sim.sediment/main.c @@ -278,21 +278,16 @@ int main(int argc, char *argv[]) parm.diffc->description = _("Water diffusion constant"); parm.diffc->guisection = _("Parameters"); - parm.seed = G_define_option(); + parm.seed = G_define_standard_option(G_OPT_M_SEED); parm.seed->key = "random_seed"; - parm.seed->type = TYPE_INTEGER; - parm.seed->required = NO; - parm.seed->label = _("Seed for random number generator"); - parm.seed->description = - _("The same seed can be used to obtain same results" - " or random seed can be generated by other means."); flag.generateSeed = G_define_flag(); flag.generateSeed->key = 's'; - flag.generateSeed->label = _("Generate random seed"); + flag.generateSeed->label = + _("Generate random seed (result is non-deterministic) [deprecated]"); flag.generateSeed->description = - _("Automatically generates random seed for random number" - " generator (use when you don't want to provide the seed option)"); + _("This flag is deprecated and will be removed in a future release. " + "Seeding is automatic or use parameter random_seed."); parm.threads = G_define_option(); parm.threads->key = "nprocs"; diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.html b/raster/r.sim/r.sim.sediment/r.sim.sediment.html index 89b2e115aca..9eba8e2a9c3 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.html +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.html @@ -47,14 +47,15 @@

DESCRIPTION

Increasing the number of threads with nprocs speeds up the simulation. The walkers draw their random numbers as in r.sim.water: each walker from a sequence of its own determined by random_seed -(or the seed the -s flag generates, 12345 when neither is given) and -the walker's number, so the walkers move the same way whatever the value -of nprocs. With nprocs=1, runs with the same seed and inputs give -identical results. With more threads, walkers in the same cell add to -the sediment concentration in an order which depends on the threads, and -the floating point sums differ slightly with the order, so the outputs -are close to, but not identical with, the single-threaded result, and -repeated runs with the same nprocs may differ slightly. See +(or the generated seed, recorded in the history and the run summary, +when it is not given) and the walker's number, so the walkers move the +same way whatever the value of nprocs. With nprocs=1, runs with +the same seed and inputs give identical results. With more threads, +walkers in the same cell add to the sediment concentration in an order +which depends on the threads, and the floating point sums differ +slightly with the order, so the outputs are close to, but not identical +with, the single-threaded result, and repeated runs with the same +nprocs may differ slightly. See
r.sim.water for the range of seeds.

NOTES

@@ -103,6 +104,7 @@

Run summary

"walkers_requested": 60, "walkers_generated": 78, "walkers_remaining": 43, + "random_seed": 1, "duration": 60, "simulated_time": 54.891343113611583, "time_step": 5.4891343113611581, diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.md b/raster/r.sim/r.sim.sediment/r.sim.sediment.md index 552bd4bb2bd..c6d39747f70 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.md +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.md @@ -40,14 +40,15 @@ erosion/deposition map is noisy, higher number of walkers, given by Increasing the number of threads with **nprocs** speeds up the simulation. The walkers draw their random numbers as in *r.sim.water*: each walker from a sequence of its own determined by **random_seed** -(or the seed the **-s** flag generates, 12345 when neither is given) and -the walker's number, so the walkers move the same way whatever the value -of **nprocs**. With **nprocs=1**, runs with the same seed and inputs give -identical results. With more threads, walkers in the same cell add to -the sediment concentration in an order which depends on the threads, and -the floating point sums differ slightly with the order, so the outputs -are close to, but not identical with, the single-threaded result, and -repeated runs with the same **nprocs** may differ slightly. See +(or the generated seed, recorded in the history and the run summary, +when it is not given) and the walker's number, so the walkers move the +same way whatever the value of **nprocs**. With **nprocs=1**, runs with +the same seed and inputs give identical results. With more threads, +walkers in the same cell add to the sediment concentration in an order +which depends on the threads, and the floating point sums differ +slightly with the order, so the outputs are close to, but not identical +with, the single-threaded result, and repeated runs with the same +**nprocs** may differ slightly. See [r.sim.water](r.sim.water.md) for the range of seeds. ## NOTES @@ -93,6 +94,7 @@ r.sim.sediment elevation=elevation water_depth=water_depth detachment_coeff=deta "walkers_requested": 60, "walkers_generated": 78, "walkers_remaining": 43, + "random_seed": 1, "duration": 60, "simulated_time": 54.891343113611583, "time_step": 5.4891343113611581, diff --git a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py index ec46b0e30ab..81e0aa14f04 100644 --- a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py +++ b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py @@ -79,10 +79,10 @@ def test_different_seeds_give_different_results(session): def test_generated_seed_is_the_seed_option(session): - """The -s flag with GRASS_RANDOM_SEED gives what the seed option gives.""" + """Without a seed, GRASS_RANDOM_SEED gives what the seed option gives.""" env = session.env.copy() env["GRASS_RANDOM_SEED"] = "3" - generated, _ = simulate(session, env=env, flags="s") + generated, _ = simulate(session, env=env) given, _ = simulate(session, random_seed=3) assert np.array_equal(generated, given) diff --git a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py index 65b1c9b98bb..5d93144c5f8 100644 --- a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py +++ b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py @@ -15,6 +15,7 @@ "walkers_requested", "walkers_generated", "walkers_remaining", + "random_seed", "duration", "simulated_time", "time_step", diff --git a/raster/r.sim/r.sim.water/main.c b/raster/r.sim/r.sim.water/main.c index c7a3ce2a971..9139a044e6d 100644 --- a/raster/r.sim/r.sim.water/main.c +++ b/raster/r.sim/r.sim.water/main.c @@ -313,21 +313,16 @@ int main(int argc, char *argv[]) flag.tserie->description = _("Time-series output"); flag.tserie->guisection = _("Output"); - parm.seed = G_define_option(); + parm.seed = G_define_standard_option(G_OPT_M_SEED); parm.seed->key = "random_seed"; - parm.seed->type = TYPE_INTEGER; - parm.seed->required = NO; - parm.seed->label = _("Seed for random number generator"); - parm.seed->description = - _("The same seed can be used to obtain same results" - " or random seed can be generated by other means."); flag.generateSeed = G_define_flag(); flag.generateSeed->key = 's'; - flag.generateSeed->label = _("Generate random seed"); + flag.generateSeed->label = + _("Generate random seed (result is non-deterministic) [deprecated]"); flag.generateSeed->description = - _("Automatically generates random seed for random number" - " generator (use when you don't want to provide the seed option)"); + _("This flag is deprecated and will be removed in a future release. " + "Seeding is automatic or use parameter random_seed."); parm.threads = G_define_option(); parm.threads->key = "nprocs"; diff --git a/raster/r.sim/r.sim.water/r.sim.water.html b/raster/r.sim/r.sim.water/r.sim.water.html index f2fd9829cf2..2bf33f5158d 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.html +++ b/raster/r.sim/r.sim.water/r.sim.water.html @@ -206,6 +206,7 @@

Run summary

walkers_requestedNumber of walkers from nwalkers, by default twice the number of cellscount walkers_generatedWalkers created, at least one per cell and more where the source rate is highercount walkers_remainingWalkers still in the domain at the end of the runcount + random_seedSeed of the random numbers, given or generated durationRequested simulation length (duration)s simulated_timeSimulated time reached at the end of the runs time_stepSimulated time per iterations @@ -286,6 +287,7 @@

Run summary

"walkers_requested": 100000, "walkers_generated": 120000, "walkers_remaining": 112724, + "random_seed": 3, "duration": 1200, "simulated_time": 1199.2085202681737, "time_step": 1.0631281208051186, @@ -323,11 +325,16 @@

Run summary

Random numbers and parallel processing

The walkers are placed and moved using pseudo-random numbers. The seed -is given by random_seed, generated when the -s flag is used, and -12345 when neither is given. The generated seed is reported with ---verbose, and the environment variable GRASS_RANDOM_SEED sets it -for scripts. The seed is an integer from -2147483648 to 4294967295; -other values are an error. Each walker draws from a sequence of random +is given by random_seed; without it, a seed is generated, so runs +without a seed differ from each other, as in r.mapcalc. The seed used +is recorded in the history of the output maps and in the run summary of +-p as random_seed, and reported with --verbose, so that a run +can be repeated by giving it. The environment variable +GRASS_RANDOM_SEED sets the generated seed for scripts. The -s +flag, which generated a seed, is deprecated, since generating is now the +default; earlier versions used 12345 when neither was given. The seed is +an integer from -2147483648 to 4294967295; other values are an error. +Each walker draws from a sequence of random numbers of its own, determined by the seed and the walker's number, so every walker receives the same random numbers whatever the number of threads given by nprocs. Results for a given seed differ from those diff --git a/raster/r.sim/r.sim.water/r.sim.water.md b/raster/r.sim/r.sim.water/r.sim.water.md index d09acc3dd00..e2be81f3434 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.md +++ b/raster/r.sim/r.sim.water/r.sim.water.md @@ -196,6 +196,7 @@ stored in the history of the output raster maps under the same keys (see | `walkers_requested` | Number of walkers from **nwalkers**, by default twice the number of cells | count | | `walkers_generated` | Walkers created, at least one per cell and more where the source rate is higher | count | | `walkers_remaining` | Walkers still in the domain at the end of the run | count | +| `random_seed` | Seed of the random numbers, given or generated | | | `duration` | Requested simulation length (**duration**) | s | | `simulated_time` | Simulated time reached at the end of the run | s | | `time_step` | Simulated time per iteration | s | @@ -277,6 +278,7 @@ The printed summary: "walkers_requested": 100000, "walkers_generated": 120000, "walkers_remaining": 112724, + "random_seed": 3, "duration": 1200, "simulated_time": 1199.2085202681737, "time_step": 1.0631281208051186, @@ -314,11 +316,16 @@ The printed summary: ### Random numbers and parallel processing The walkers are placed and moved using pseudo-random numbers. The seed -is given by **random_seed**, generated when the **-s** flag is used, and -12345 when neither is given. The generated seed is reported with -**--verbose**, and the environment variable `GRASS_RANDOM_SEED` sets it -for scripts. The seed is an integer from -2147483648 to 4294967295; -other values are an error. Each walker draws from a sequence of random +is given by **random_seed**; without it, a seed is generated, so runs +without a seed differ from each other, as in *r.mapcalc*. The seed used +is recorded in the history of the output maps and in the run summary of +**-p** as `random_seed`, and reported with **--verbose**, so that a run +can be repeated by giving it. The environment variable +`GRASS_RANDOM_SEED` sets the generated seed for scripts. The **-s** +flag, which generated a seed, is deprecated, since generating is now the +default; earlier versions used 12345 when neither was given. The seed is +an integer from -2147483648 to 4294967295; other values are an error. +Each walker draws from a sequence of random numbers of its own, determined by the seed and the walker's number, so every walker receives the same random numbers whatever the number of threads given by **nprocs**. Results for a given seed differ from those diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py index d5c620eacfd..cc4c75fa3c6 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py @@ -14,12 +14,14 @@ """ import os +import re from io import StringIO import numpy as np import pytest import grass.script as gs +import grass.script.array as garray from grass.exceptions import CalledModuleError from grass.tools import Tools @@ -75,7 +77,29 @@ def test_different_seeds_give_different_depth(session): def test_generated_seed_is_the_seed_option(session): - """The -s flag with GRASS_RANDOM_SEED gives what the seed option gives.""" + """Without a seed, GRASS_RANDOM_SEED gives what the seed option gives.""" + env = session.env.copy() + env["GRASS_RANDOM_SEED"] = "3" + generated = Tools(env=env).r_sim_water( + elevation="elevation", depth=np.array, duration=5 + ) + given = simulate_depth(session, random_seed=3) + assert np.array_equal(generated, given) + + +def test_generated_seed_is_recorded(session): + """A run without a seed records the seed it used, and the seed repeats it.""" + tools = Tools(session=session) + tools.r_sim_water(elevation="elevation", depth="generated", duration=5) + history = tools.r_info(map="generated", flags="h").text + seed = int(re.search(r"random_seed=(-?\d+)", history).group(1)) + repeated = simulate_depth(session, random_seed=seed) + generated = garray.array("generated", env=session.env) + assert np.array_equal(repeated, generated) + + +def test_deprecated_flag_generates_a_seed(session): + """The deprecated -s flag still gives what GRASS_RANDOM_SEED says.""" env = session.env.copy() env["GRASS_RANDOM_SEED"] = "3" generated = Tools(env=env).r_sim_water( @@ -85,6 +109,12 @@ def test_generated_seed_is_the_seed_option(session): assert np.array_equal(generated, given) +def test_seed_and_flag_are_exclusive(session): + """The seed option and the flag to generate a seed cannot be combined.""" + with pytest.raises(CalledModuleError, match="mutually exclusive"): + simulate_depth(session, random_seed=1, flags="s") + + @pytest.mark.parametrize("nprocs", [2, 4]) def test_walkers_do_not_depend_on_nprocs(session, nprocs): """Walkers end at the same positions with any number of threads.""" diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py index d62e3b5abc6..b0f0ff89a4f 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py @@ -24,6 +24,7 @@ "walkers_requested", "walkers_generated", "walkers_remaining", + "random_seed", "duration", "simulated_time", "time_step", @@ -91,6 +92,7 @@ def test_json_summary(session_tools): assert summary["mean_source_rate"] > 0 assert summary["mean_infiltration"] == 0 assert summary["threads"] == 1 + assert summary["random_seed"] == 1 assert len(summary["outputs"]) == 1 output = summary["outputs"][0] @@ -195,6 +197,7 @@ def test_history(session_tools): "walkers_requested", "walkers_generated", "walkers_remaining", + "random_seed", "duration", ): assert history_value(history, key) == summary[key] diff --git a/raster/r.sim/simlib/output.c b/raster/r.sim/simlib/output.c index 393e2b12eb7..958062df59b 100644 --- a/raster/r.sim/simlib/output.c +++ b/raster/r.sim/simlib/output.c @@ -1,5 +1,6 @@ /* output.c (simlib), 20.nov.2002, JH */ +#include #include #include #include @@ -107,6 +108,7 @@ static void write_history(const char *name, double tt, const Setup *setup, &hist, "walkers_generated=%d, walkers_requested=%d, walkers_remaining=%d", sim->nwalk, sim->maxwa, sim->nwalka); + Rast_append_format_history(&hist, "random_seed=%" PRId64, settings->seed); Rast_append_format_history(&hist, "duration=%d, simulated_time=%f", settings->timesec, tt); Rast_append_format_history(&hist, "time_step=%f, mean_velocity=%f", diff --git a/raster/r.sim/simlib/random.c b/raster/r.sim/simlib/random.c index 2673758e04b..53db97a0917 100644 --- a/raster/r.sim/simlib/random.c +++ b/raster/r.sim/simlib/random.c @@ -13,12 +13,14 @@ /*! * \brief Return the seed of the walkers' random numbers * - * The seed is generated with the flag, read from the option, or 12345 when - * neither is given. A seed which is not an integer or is outside the range - * the generator accepts is a fatal error, here, before any input is read. + * The seed is read from the option, or generated when the option is not + * given, as in r.mapcalc. A seed which is not an integer or is outside the + * range the generator accepts is a fatal error, here, before any input is + * read. The flag to generate a seed is deprecated, since generating is the + * default; the flag together with the option is a fatal error. * * \param seed the seed option - * \param generate the flag to generate a seed + * \param generate the deprecated flag to generate a seed * * \return the seed */ @@ -27,23 +29,29 @@ int64_t simwe_seed(const struct Option *seed, const struct Flag *generate) int64_t value; struct G_random_state check; - if (generate->answer) { - value = G_random_generate_seed(); - G_verbose_message(_("Generated random seed (-s): %" PRId64), value); - } - else if (seed->answer) { + if (seed->answer && generate->answer) + G_fatal_error(_("%s= and -%c are mutually exclusive"), seed->key, + generate->key); + if (generate->answer) + G_verbose_message(_("Flag '%c' is deprecated and will be removed in a " + "future release. Seeding is automatic or use " + "parameter %s."), + generate->key, seed->key); + if (seed->answer) { + long long parsed; char *end; errno = 0; - value = strtoll(seed->answer, &end, 10); + parsed = strtoll(seed->answer, &end, 10); if (end == seed->answer || *end != '\0' || errno == ERANGE) G_fatal_error(_("Invalid random seed <%s>"), seed->answer); + value = parsed; G_verbose_message(_("Read random seed from %s option: %" PRId64), seed->key, value); } else { - /* default as it used to be */ - value = 12345; + value = G_random_generate_seed(); + G_verbose_message(_("Generated random seed: %" PRId64), value); } /* The layout, which refuses a seed out of range, is built only when the * number of time steps is known. */ diff --git a/raster/r.sim/simlib/summary.c b/raster/r.sim/simlib/summary.c index 00ab21046b3..d1d6ec0b484 100644 --- a/raster/r.sim/simlib/summary.c +++ b/raster/r.sim/simlib/summary.c @@ -8,6 +8,7 @@ * *****************************************************************************/ +#include #include #include @@ -75,6 +76,7 @@ static void print_json(const Setup *setup, const Settings *settings, G_json_object_set_number(root, "walkers_requested", sim->maxwa); G_json_object_set_number(root, "walkers_generated", sim->nwalk); G_json_object_set_number(root, "walkers_remaining", sim->nwalka); + G_json_object_set_number(root, "random_seed", (double)settings->seed); G_json_object_set_number(root, "duration", settings->timesec); G_json_object_set_number( root, "simulated_time", @@ -164,6 +166,7 @@ static void print_plain(const Setup *setup, const Settings *settings, printf("walkers_requested: %d\n", sim->maxwa); printf("walkers_generated: %d\n", sim->nwalk); printf("walkers_remaining: %d\n", sim->nwalka); + printf("random_seed: %" PRId64 "\n", settings->seed); printf("duration: %d\n", settings->timesec); print_number("simulated_time", simulated_seconds(setup, summary->iterations_completed)); From e64d51b26f243fbb0b0cfc4fea96332471651dbd Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 13:59:43 -0400 Subject: [PATCH 21/28] r.sim: Include stdint.h where the seed is held as int64_t The type comes with grass/gis.h, but code which uses it includes the header itself rather than relying on that. Written with the help of Claude Code. --- raster/r.sim/r.sim.sediment/main.c | 1 + raster/r.sim/r.sim.water/main.c | 1 + 2 files changed, 2 insertions(+) diff --git a/raster/r.sim/r.sim.sediment/main.c b/raster/r.sim/r.sim.sediment/main.c index 21a51fc7d87..3795af88541 100644 --- a/raster/r.sim/r.sim.sediment/main.c +++ b/raster/r.sim/r.sim.sediment/main.c @@ -57,6 +57,7 @@ /* INCLUDES */ /********************************/ +#include #include #include #include diff --git a/raster/r.sim/r.sim.water/main.c b/raster/r.sim/r.sim.water/main.c index 9139a044e6d..e1055c16cf7 100644 --- a/raster/r.sim/r.sim.water/main.c +++ b/raster/r.sim/r.sim.water/main.c @@ -64,6 +64,7 @@ /* INCLUDES */ /********************************/ +#include #include #include #include From 9bbed54e6be57aa431f93ae429f5f11ac4ca1a4d Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 15:13:34 -0400 Subject: [PATCH 22/28] r.sim: Give a walker's stream room for one step's run of bad luck The bound of 2 + 8 draws per time step holds the sum over many steps with room to spare, but the first steps are exposed: with one step, a run of four rejected attempts in the polar method exceeds the stream, which happens with a probability of 2e-3 per walker, so a short run on a large region has walkers which continue into the next walker's stream. A constant margin of 48 draws, 24 further attempts, bounds the probability per walker by 0.215^24, below 1e-16, at any number of steps, so a run of 2^31 walkers exceeds the bound with a probability below 1e-6. The streams move, so the pinned landform depths and the gunittest references change; the infiltration reference differs only by rounding and is kept. Written with the help of Claude Code. --- .../testsuite/data/reference_erdep.pack | Bin 40814 -> 40777 bytes .../testsuite/data/reference_sedflux.pack | Bin 39965 -> 39985 bytes .../tests/r_sim_water_landforms_test.py | 128 +++++++++--------- .../testsuite/data/depth_complex.pack | Bin 37342 -> 37308 bytes .../testsuite/data/depth_default.pack | Bin 26764 -> 26803 bytes .../testsuite/data/discharge_complex.pack | Bin 39857 -> 39875 bytes .../testsuite/data/discharge_default.pack | Bin 39619 -> 39670 bytes raster/r.sim/simlib/hydro.c | 11 +- 8 files changed, 72 insertions(+), 67 deletions(-) diff --git a/raster/r.sim/r.sim.sediment/testsuite/data/reference_erdep.pack b/raster/r.sim/r.sim.sediment/testsuite/data/reference_erdep.pack index df5653973ddf3c53c48a6f6c8ac8fc1a0a0ba579..9971824af2b7e66983e1a1d00cabf7ea026eca1a 100644 GIT binary patch literal 40777 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 diff --git a/raster/r.sim/r.sim.sediment/testsuite/data/reference_sedflux.pack b/raster/r.sim/r.sim.sediment/testsuite/data/reference_sedflux.pack index 2f1485f0ca369defd6319b812b212865eeb00f27..87c9ccba74ce8f8e3867afc4ecb33c1631a29d7e 100644 GIT binary patch literal 39985 zcmV)KK)SyliwFqg^}}ic|8iw!WpZV1V`X1+Wn^Y-b$BjtVPk6m?7azCjc?cg9idq& zQv*s;LhaqSuk}5zosf_@6&cbfG!HV11{z7`BBDYR2_n+&R!^FUt3xVh30?Eh35a!=Y{4b76MC4 z6H7C*Km6ak#sAI!Z}R_n^L_s}o`0kNE8@TDKgWMzTm1i1;=kp868{AzE%CoC{Qs5W z|Aa~7N4wZeu($me`M<>fW=At%# z|0|kNTmILU|NWEx3)}L)zoPz+8aHD6zd`>^g=YVx{}zHa{r@w}&(+tHw8yymx_JhL zXbjK;AQ$ zv;{^jXV`)>GZhI0CMH}M_asV%m3T- zzb*f7v;V*P?=WuEWczXB) zXpU#FyuAGHR9^c(erbyYZTjD)|9>I%{-I z`@jFT`2SD$e+5P@;%h20F>4cmzgYZt@tqUwZv3zD|NrmL|Ni!W6O)#uw&#D_;(uHG z|98ZHfn{6#|I5aIFPA?a0SWmN_x~2={}BI8Elq@N`~N?~LKX&ilD3zRziWuR+rkh} z7yqCZ9U$!m9zpUxi^5#o{e1(1JcEPh`1`rI{c(G6aN7;RHvMnY|F-c3y8kB_@=K+ylJ|Nj^IZ)#>D{HN>xZT&y~9FuK@^Z*G>CFCWP^n;O}DB&~-CHq5Z ze+d^#7$ISTgqtMXDPgvRMAmK3y zPfK`7!kZG_m+-lSA0%vUrHqV(Dr!>gq$d0^ZX30Y+D89dM{W6ETmIK}{kQG(7&4gdwcxr{Qtk~|19{Y{*PuR=56}_XIN{8=T_r5`9=PIo`0ME?ywvb z;w_n)n3%PkD*0gl(7#(U{k`Pr8XWSspRq8t{Jj+B`S(i}zn9$oeS-hCBy5=n`G@_7 zx#!?8?I6!!e;@iim-ibS{P)w=lEl{UA1svrTUDB;2WgwP#i=&^Z`1$(N&Od@x9R_1 zP5=FUg8o&n@!x;`gP^Vdz!c_k6C;!QRm)crXw&{PH z{{K(uf7|E({uTA#Hy|{`HDr#zpR12ckmu~*4L{t2f{o?|`}_Ti^U()Kd=97 z{h$AB`v0Hxf98a3{h$A0`tS8GYykaV>c6mMQSeWn|6pR-cK!cPv45!l>TtZ3og{Tq zGPSLgll=1XKU=9Nsk`Z{-Ad&{tyCG>N>xc6S69g`rEZdXrykL*RF~8RY3ymG7T3yN z7hBm!QfH?9s+D~u8;^dSC6_HEbxZn^^JXBa?=hUz%7G2794zT$WGtx{6Ks@(J;_s! zrUk7um((9w+-;?3UMsmDt%RhWjqlw`v83*6$dFcAOX{PBxwUe*q>gArWGhE@YvriS zR@zDG(#Bk97HLwreZB-?wtEq>j(0Yb$*v^=|$atqhRVg#}HKgb_*oROq5s zhAFgiL24@(N$T+ym$Y)Jq;755gI0!1>bq99Z)HSsE2H|gGFnnExOzk@Vf14UxxkXYRm!jIrR7oA#c1cr&v~vPZX-7Gf zruV`uem@*nJ-}h-p7dJmO!vj*=;KpNQ*PfBtu!R=Mrl`3tl34b!C#(6o$g4^GhN8z z+B)>w+XH3`_p!pvM<_r#)?08?_#%!fYp-)X9ba*MQjIBo$9fD8I*a(_-*9_>D$}V5 zU?ZC3m{W8ND|-;d!fvc$(-pFrhH@<4{OXT$dsfpItcO<*2i9#6W24@8qBVNExcqlD z+yRxb+?WlvqLG#NxYP`DZfVgw8n~LH618tM?9c~F-|>z-Hd}~JrWeq_hhMpf^QtuX zX8>oFvxqygwLcdnt;FpYUgb;!0=Z#My+q|RY`BO%%ej?1H*sCeUy_wjgDbVMB#qn% zTG(MZ*EHoZw<=Sb?0=PE@y(xD<#G}w!U`;@?u8G#67kSSgo?$hkmnkJd7nE0GOytF zGD?(LHkmfhiX)o^Z@874Gc7;W6D#46l-qF{mQG&C)F+>2h5CMMaXqkg=`Yq!;6@*A*g?3bfs~83a}_}u(1^T^)QKnY zwqgzIIWCP2>-L@{UBAvsY_GA;YsGBWo~cahwi~lu=D;-eS;JpuI)uy5Bc|&|rgkL= zU8Y>5D5XK;)sxj_g& zSdK9U6R=Y84yN0M;rp5^Y>(Apmf-Kp*sf^2sncW5-5Z$Y10`lATa9NnZcJTW33|&d z5NOwn9u0Vfj$6f$y`o2!apOqQvsUy{aRxWFx<*uYdJ-2rcmnlWHG@KGc3^P9JEW;j zKtU&SXfHb};8u5ZgNngu%nqwz-GicFU0Hx0)%KJ)*_0ATg>dz@@|<}1a+3FQ;O_5x zL0dHzp;PH$Ag?E)yNzQBSGTkHkq{S;9-z2l zCnl*yL8$Nv=3!=(WO0WgHpy@^clV)~)P>a9<~kP<^h@Fo+h^ z^dXz#WzZYem1^_`3b>!SDYW-hFM6Bx4znBb=o;%u>wTTMak^?;V|9thB>oY}#ZBjC zS@k3N1WgKF9|*rU+1NdWV;v%nv0;e@Shz6_Gm1T+^mP-$gZEJM?u{h>%9M7O+@r*# zQ&c%%1#$`t@nn-9)45T}q=F8zmeb6Jw_n7Do7OY!N+D~v>^U2p@(E?HuVJENIo>{+ zjV%W0wBzR^(t5IuBCI|@%PEQPWEafun(&?J^?OaXzUooL_!100vL04ipK<1C7S>L= zfo-1JOx0P8$jakzd-eqbi|a7fstDzp0kHjGN-1Lw(}!<7H6F=@g6S6|2M1u-1~oc% zWjrPidXCNepTjV?ACv7ch0perx9WJm3TO7GBF9JyevYn8E8diCIC6ju&B(xuI1dy& z|A^xegRs3~IRqI!&?&GNO;Z_2PfOEb6P`jFT~%pF>QHWT&I-=c_bYYD451BC%@o#I zn=%&ereEHNG01Qf6}y)RxPyM-miy}!(09x&bVCF8c+X54{^Gu9|13Mv)X%RiPbovB z@^-#x$EX#=-5*Q20Vio=-fUcu^~1y5g}5V^MO8m~Qc~|@+{`|C2z5RJ)ma<3D%o)q zUhak7PW=%2^9b||HzVPcE_S|9$N4b_m~q!ntcU$;Hd8^7O*o#-W?0-pT-8&2pQ^|@ zyUL=v<{{eKkEH|m`a}2h0PyEtu--No#Ve*ch@GC_6w6I)!k%q4lv)r8jXe`+=f+<6 zviTL$O})WZ?Tf;5osZZy<~*5sp2oubO2{o@{bCRGDsm--YcIL*!CIu$60Y(D zTj)^VNV?eDhWb5j#7fQ-uEVqhod2#z+_5gNL`!FM5zS2dVOjp|o9Mvy5YgO)b|UUh z56jepoG5zab5g} zKe>`qQPcw|v{|YT`MMoJ{?a16xxSipxDtlF-40=A?HXomBVuMx3s~>oE0Fm^k*WK9 zWFtd*ur7Yfur2u}eYcv4*n1cGk@YhC^|2iB+WMbj)z9ZBVnZ4o)w6(_ z=UA*s{>D}Z6*2n<5xA6Jis=3~=;qTZxXjN-a;hG7#<;_8Qz!zh`qM_=iR}AK=ORc$1H43yj`8511{pi+o9R#f| zLFwBmte1fSR3Zp(mVCq(vph`EG{qL}CorG*7~O9upj(uP5@qetJ9rAEhI?{#p3|tO zE>C_B#B^xb0%$f&r_fyoNN-UiTs!G-s~+?fSQbs0De|)N=RRI(&xt196&)<>E(&RW z#$8#shh()+ayc1~xCjjrE$dV!%6IR|-5QwBeM#L&n>DY}JJDC@c0NRUuh){>LSvd8 zHIA%|q^Ng5d)hQT1B2IJfUmkNe79#|f|nio=T+j|l6~0QBMA-t<5(B9T}V?=Wy*a& zFk1~ZO#gC+^|s50oXs?B4>E`URVhCIYFDwmpC#Kcc|0z6KZ6rPo7h3MORT?bcgmj^ z#N}MQiM&s-Y{cPECNt_b67LJJXoV|O!`EQiwDl-|b&4tPi9ylar$|k{gCla$STOn( zJ?jLj>D~^?BhDggbr&4??1e&^bS7snhuY!-%8Xf}+C(vJ zSslPx%!;Pfs@-VS__b7Ba{^uV=+ftRwlI@zrh|*!1eVXbMso+B&2YKLwz*=;tAUloL`t`G2S zeg|rNc^5`Eq#(6Q1*62$I31|X#?Cm-MnCMwcG;c7#d(cPiKXb!z6jC%cauav zHfM-Rk8a}DaD8a{sK-<_P6jqldLe4J0xp-tAGJdUK8=Pjd*uC8wWm3 z!Fi*t_!=f;>RCDL^743gCXXN<=ZSvLeqz@5ZP-6og(>taW~OVE8Ru%nhRNJvT`Z3> zg{(5&=f`#dcj2mCVO3x&)S*N7fh{P}K@TmaizHAJ$y7CqN zd+L##>jVDaX!wj+4b`EBlqn3SYxeHk{;$6*ZA#V1`p8>YWqyRE(u zedY~dE6;?pgKMkU!0{$%?rX&~43yZbYY?kXJ;2Z0o{6dNv!NAYg`O|J;f~cA);_tE zsr7TlWy6C^`prf*AV8TF?_I{0_AKYOY%F7DPufH0*rGR(}>hUKlXN z9G+?{k7CiM8C0>_gR<9rC;yftSK*m4$)s;YmtL#EhaH9P2sLajAjm1q6_CxcZFGFk zd&+BGOwTNoxe0dX5z&i7_h@TO6NX~z6xEij+l%78Ga&!s2Q(BG(3$FSr24eIsCmmo zPNQs&W#NX!qLp7NNqb>e+J0>_92Gj@rN#<=@kv*Hg|L{v>?O?--~WK?x-HnJ9E0tlDLACQ znGJ2P&bqy;W-}T-;(h-@HsGoyVzfW8?sKm}`g#*oQnO*LRE4y=@$AB-alG2H+o+ml zhMN&LP?ivmeY1~Z{G?K>UT_G8$6wK$0pVQTSY58J>?m0)xKir4YY@~}p=sbNX8w6J zQ#&^waVM`+{>AwatSo#;24{aysK`AU7-mjhdBcB za2pT#=H;+TNPzy9SukrDM3n_wkUcpTS)tNc>+K8M+FdX`7Yf5F8M-~kgx&;BC6`xP zv?j-d`t-Og+Uu<&O71wDdl)f-29`a5_TWV@dGHMBYQJ#k#d1tnoym+gWip{rAog`m zL(SnQc>88LUcMQ}BAT_CMtKv<&G+Jyr!MD9%WT;&xf+akuny0Hk0CiS7G|Ssu&l#I zCim8wIXGX#neSs!e0Bm|%hf{Tep@^Zb;kYc@7XQ49sIjJGuW%Q?g)<>M&ElHqDM=3 zTXuOP^2{yp=-?%!SItLLkqq92%w(P4EP|Jeh~?<NeuaPDjifejk3K#dLey3e3o?r>38cw0!LX(r;f+E=TS`zHthDxG2Wt)pkg{VnX{~ zpAb+?-vW|a+JHqRqK{S!y;42FWv5~|tt z7%IDp=!f=MT2cRl^Eb{E)g*DE^{>Zp<~@xm=w2)}`HC@c<%pJ~u>xC8K{m+bHHDypy3)ae^(d)8w^az~t@s zD%a=wGuT%7sK5^lN&X4Dn&Z&qW)*KT~#j8B<=I!?eTtGpQj#sE+D{=jtW!ZF+>EOI^?> z$eNlh3SpvbMTJ@&xjlW_aW`T|ayJtO)4>!*$D4Z5-9S?)Bq~7q%Sr^yS&s?JrBM5D zEy~*ON3Tv*xVY;oE|L(>b~UhVj$inPJ8$V2aJa7@jn&((!6tq*+EpiTGv=PXxp+wacZ*HUrANHCf;Ns~B&e$H&%v;B$073w{B*jQ8tvl;yUvd z26-qpHm0Sf*|hjeU$nctpKkUUgWUlY2tG9oDrxVzW*tXr7c&w(_mZz_(W9+pu5h@a zi_^R2qG#fLtgh0AaLsYrSFcOGM^3PS>SJo?>5mSP&NShuA@bhD;P%!;UdAVp*PFeM z+1du;_Mpi~TV;z8mm=s_)>6u9Nn&qb451et&QWgVKKkT8kj^BzLVIE(`cK#k?u-Re z)>aBcD)Uol*Ok{O3@~O=9jCxKUjXY4E_6O*5VLl(Wg!#%nA@2R_;SC5$=oc#$E5X; zH~WUwPFa*93M38L5>Cm!J!x$ZqApDlG~K&DMLafx$ICz*?llURcj@Cn&^2rt8OM6K zJ!f4HM={a-j;MN-i|MIhEc*QvzGnS7W^h&yOQY`KK*V=?Fg^@!75*4Q& zey!dL-h1XLY(L`x*DKnzZnFtuDt04%&jySQ@T8R?wq(lQ(b$Ui+%U!ay!*G^eD#En zOlD{{Jc^=`(=8W$=52t~*Fv&-=ubUF#a!lx9fZh{Fx)c~!9D7*LdlL*9lpq$#&=<| z>K%|Xpt&VXyTLCx0-Xc4Q?}wvI%GT(3NKHQ!8KEK^ecp7^8-r!o&sU_6L3@NiCyEA z5m(kE;Lb03NzMcIK)F$!nYb@QQM;C`bTv=y&M(KQC7s!Xw*^eFLx=S;xr@ioKVq4O z5w36{dC3CQ-jJ$XO z7k4BSWBY$ z&4^_Lz2l4DG_W*>Q#h9A2E!Lt=%Lc2=`6=s^ZdJ}m;>$GuNoUg6Z-$!5Nel{-r4JwENV?rvimlyBF$Du)*+B^B`b$XJJPw)M zHP*eubJPe|viJ)-n5jbyFLgMCw+Qvb8-HIczZU@IkD-tnA4vJJVHigRuus>Am%KGR z%u^s0ok*9Y_hISQ$JpImOEt-$3-4nw#$6s02Hc|h>TG6^XwFRR10nNk6 zL)d48Q+`t!o!oX8ia8csr)m4RO`}(H#c3ZX`(PAxU1f#zv--IDtAtktRY6^*T5Pg*I#^vP? zCx68fuHWXV0`BDc;j~Wr3O#U%f=he~%UG|17uVAf(%ph7H$?Du+B~~5CzcI=_Zm4X zHlWET9b?wt;wI(2CfkRbxUlGZQ2ZoId9Lqa=YNq_v`e6Vdw0{&G8a13SWfAA8!)u{ zazqye;>?}LOmCwip3Y5W?wb2}FY#B@X`iO|9WS9%LKRGAx?<`GI}EL}L~rX<^4~cJ zy6yp7M8Zs(d2tR5u?a!>@sR!%%FWSBAg2enFnXvo;${>x6}AJK{ky@0-GSchmhAic zYIHxa0!D=a*f3lMU+c8lJEH^qeTy)Dje50M%Iy&U;))SV?G{R3hZ4Y|RI8G~xCuyy96dBlvfd{hS8F3lg zMkpayQ4@A=zX-S$wPz?Hw2rQIGi%wF+Ok1AGuY`V4Jh|jWoLJb_>96uEc)C=X0hxB zifUaj<40#YW;&E!+&&?iGfaUy@O%>0ELKM4p+KaS3(?Lxk@cT0FsYleqo;lj8I1yNF|#c=2}~=JAv6=J4hg zZcOUQQ%F7chM?t-v%BAE&<8tYO<6%t%Dd9RjAmMyYfD>-*3;>qr!ky6&i0OyzU0$zgIO!0@9fyfdjU5^xQJEyMBoKS(?HL=bhxv)Se{k3(m;ic>pi5!4lMaRg~ylY)=@gVza{MG)q+08pM#ZhJB#V6ew`52?o z{01{(8$R7(<ub$mwi_42$^)a9E3{UUzUSyE|g1o`p8qQGSFfjSR~nhZE7rPCbJo?-fz` z;5;)A`N}-M=(B`{IjnDKE{m4Afv6Lz06{VY#L_)t%yn7DbY!q8@`J3^jIWX zsnwMW*}05!?0Q{f{;&rZpDv;gCDt@^+6ej{u?m5uo1i?{p7yPuK#x`$bIX)RaxvTQ zbJd16T)WT7TtL7w?scjrZ76O=_s{xduxu!%26SR-Iz9MA>y!MJ{B+iMYd>Sc2t;;w z#hG3uusk>zW?}MhDIbC8_Vq}&v}dy(>p?*O;XAoyWO;!)F zQ>ByDoUjP1XtM*n;QBb|*d=0M=lf7Gj-XPt;k3AL2sgcMJ9SncMJw&Tlc$V3-LBq^ zWQS+W`(ie8OmSnDBhNF9V-eWocpq_db&%a&ks@7m1T@vKg!^do0Yfyh=;m7+Oyrg5 z^)YR+`NNOS_C@(ay|}6FG)(sR@s`?t>0d z&F2*`F}{Ey^B>}Iy*>+1ienpH-PzT{pIT1PL>ALNgmrYffu!3dq)cVuZ>HSR6 z%0V5t>5C1xjGA1s&~Yc3rK@Opp91bu4{daunE6bFr|SNSkx_t zN`-474A4d7?MA-coKXJYl@t^#v?n&rh2$L?NbZI^@jc_Ysyh(vm8&N4spp7ZItw!W zEir4Zm~PbEVEvul+4|jI@G#;m%=->T4pxFQ@xhhFjWA?8mT%eEP6M#(trGe*O~<~aBQP&Im>!R}r~3=Kb6+#|a6{IWi1r81 z;ldB4aq(|VsKCAq#`mrw`lcJG%WWtK7_Au}N;g|XvdcVz&+|O2%ioL@i89z)t`C(D zGPJR@MX+a;QITN{7IoN!QMO@7?~scz$?q{*-v)b(t}@b^3%`Ta89{F%>l#JYnziYJy8i0A((6OU63=ht>MWii2*!Bs1xgE$7U z9*VsERb4t?+S4LqNv%lg+c=R;zn)yTZ<4NXGI~oVV$zu|ma zvu!V`*zQm7EBeztrF@EUo@Dv+VGb2PkEG1UYiLFMZR&aFC^sVXEjPG$UW>Nd^WJow|`>%n#ZVlpaJ`wW7zf39TqcMGWC+(K~&iDQv0>9Q%*j@{WBRcJ74P|8>1F)tj!*f*l%M=7#Y8^umYBa2ugt%g`HkN{JDiWtvEtW0 z=*0J`n#emIn9n~d*A~kP&x>XK5AqFj%K6Cf6>N2&KTD`KV-d|G7&m$b)4ElJ=1I?( z?7TaO39chPteC|Qci`h6F=Pg+k%Ia&iV3miL{saylG`HDv8)U-ceAD&df8lg&L^&9 z?MKcd@Evz0*OOBktIi#FN+XpKr5rnXlv@?Cn>yA{CjE$JZphbTG$W-mcU*Xn<4f(qrY>JzRpNq z6oTP%ztSq98zBya_rQW zOg@r(Upa*;u56>sgL~-Jqb_W?=YDqk>|tJRX$bEY*q>h-7RSfbc=G#i-{OlbEBV@h zi~I?J6u&sIj%}$eXJYmJyq#(ypK0RBq~EP$_FAji%Ca)Hcf>MgXL^YRG)`r!k}a5= z{#`um(g!IW@^G;61}0DWfKQH2FzEQ21%{1ex;1mzHKxv9-mJsZ2{urwm4UwR4jj;q z#IW`kNYpfdbIDpyOQQYg%31@c+s9#8X%hzePDij)CA}NC1HBKs(^1zguu0gB&I!5b zV!Hrl;_DP!a|~5IKEal4W2T0=tZRE~T7T#y_vr9(?uT6+bS%Ho*4dVb87q%(Z{-ls z=Nszcs$p8&LBJL0y(GJpx9IpFJA~_(Fr8VA{8#&F{8t4PHuknGVlCi@|2 zX@6kE8M?l?2_tO{X=ms#uA`2EXzGf0q7NN;5l#Lks*Efk(UVtHeg72(j7ddObUBQF z7E{4@Tk5YEBnq^d%|%cDNIHgPlzJi^qYsQnW3~dax|X6rumM{#>u~18a^z$_V^h6m zvM$%=ux`&Dv+h@yp>dxIUP=4%Q$HT&cT*j*pA3LkuTW;!bqrokFk;8IWu_KPuqCyE1g+gVj`>f9K*hh zYGO}ci1E-<7V@QNR@F+{`SKIhoF5Nc;~jAPGKx7UEv2XDzt9y!XEJLD7C9X01of~$dgtGd$`{77 z3HP7k?&(z!3au$^l8S(ON@r5k${?zGU4)*WgK?!?OFZb&aK0%th&guZ$U3jrf%?E~ zWDHq~)X5nTiLTI%V+!bA*NZe)UE~ISKF1-v9d}gofN0LPXPlCAGx>!zP?5U})qg6* zM*S+xHBY4V=9w^q13JcTB)NfWI1R)16!W~6cC#U<>>B~~D|(2kUV-ru7qKeJ1YU(A zHp+G*&ZVj2myr~bqH2((Vb6pi{dsjw7rxiAIruIejg67BkXHQxu^ZH|R;xW?)H2|$ z5(e?eS;*ZIhuB*Uti5;y>pro7tyodWh7aq{8=Nv>y{G1~iBn&(h~4(gvd)ymuej7hizPlNdUt*cm!OeNb5Hilj6f_;vq;#YN4m*EVH(ShWX{Qg<*T zWhdCnbJXRTKjbELB()j2^g8P{c8pEOkO|8mw>BNB5t~V~cVF&6v;t-L{#y0E=E+5LbvTML%%ct z8Tldfxv`F_HTNSptUvba2UD_#HLY1|&-qRMYMCOEqf|>f(p~U_uISoRxKgcLdC(c=t*FXkXWeHfl9yp4n@>^K)gd0x4IR`*z|TAeHq8^U z`p7(ZTsNnKn~X8N-8vMGb!2_cDznIS$M{6${=7`#SJq?jMSRw7#@&l&P-kY06aLGP z`Cu5oF0~!YI-k#WTz^4X%S|{I+nxG9{sQNXMu;d3#nIYPI2E-IZ;N{1h~aIV9A69n z&MvfeO#=?P8qn4wOGsm)KQxR_;Mg*Is(xcm(K=p~D0bi)W_;#S-XziJ>Sn5K*-=`> z`_So{_gsXlGB%`KfbPsK0y=Cyofgjm5A;$RbWfZ`o$hV4>^AqOXtHP&*S)eO{B1f7>$A}<+h+%i z=s2F5Zc8I9GXc}aj)tZF6Q)%$jF)kU1><+L=e zT}y_m)is3sI&&r6TjNHxz2vY(wkIy%)MJKg9NBcI2(~3gifNQaQf;SGlr*Z5dOFEa zMe-WDJ%OOoO%|s8Juy?-3rRB7XjrbyVmjLK>9$|^bi1xtHF_#D*wGKJ+veiq-VKQM z3dE03-C4&W7x_+&D&n=m4dSWqg>+)<1l(NjoiEHItyEW%iTOpOGLWkr^PT(hXggQ9 zX#-81(TP@OB#`mjFfwl1L(xBupfKa4fc9!Q(afv!xH}&Cu<%e4%l6zWmLGJ9nbAQu zY5q0L3J$}Xvpre&FJ6duG{DWM(U{Zy5gg}qrsC-Pod4n>)Z>mwB@(cGm%t#Mv2bv ztRlU6leuUs3(H%PbGe<%chh2HZD?PPL%_3m+<7yO^|bTAc9XemMoAv)AD%=r9>~(p zqO)|>%7XmnH<7IUKx)cV0AUF}EQ(`Jw2yr>*~V|u7x5Ez3o$SvgBfx+nMQ2~Y|sY| ze1E}w-WRgyCE3jX$vi~Yt`l2kCG!>6ud=0^%eaMm(?xqLeMm}qE5(NI#mbMB5Kq5= zBG)ZUJyw%>F3Q0pl}QK~*`HF9T_|&}AsZg0#7wiEk?`tz8Z>k>x4v>3DL**MwNH)V zJ|`WeA;L6n#f#pQSnkJ-8Wv4uCKo8CradkDI7UECSCt_u=tsVn4VkRoPyT3e7~i{U z6H~q6$mB}1TVnBBSk@oHf~Zt%6<9-~zzo{O3?>_*=*aR?u4Ho+cT1;1q_k2X+BNq* zNe{kA)fy@AGPA(4=2^%PwZ|?k+m=Mo0Q-v)SagRc_;kJ(mVI)dpxM)CQ$Zm5|NKdT zKc>>6q;yJ8?!a}G2^RI<|3Of}Gy^?KfT*j=HN8{9&Sj2=ZWuG*y#45V=;#Hep;lTF!BKN>pGEuuCdU4=3 zHa||nkt^y}Idl!SOuFEs-$&CrLa+(=+?7V>6Hd>Kn)W&m{<}I~c^21R;;pubfd%Jl0_$-*O z5U%Cl8k51%o|MpmC^IBV7oi+}kcjdQ_KrC4_FMi^VaG#Bb8dm<$D z6+CMDB6s39XnH@SJGb&F?vx!@lKWD$Ibndsf)gV|>#rDd$E9UBRig%s_bPy`!W3*$ zcE-JyEo!Q&Go8E_fwb0+oJc zq@dx-m#3NV86#!b@+}oif9XbMwEG=0hW5nHmM}yXlW~4v33f=&!o5{7bSR($oedsH zMlox+@{2`W(89|!*wCNq!l%*CO3e^GVU?oLbHIunZQO=aEr$w(K3dm6I1oyq6k{0xsC#nfLN@EXI3F!Q{ z#pL&M5C&i4`0z2)cQ_Z*eiKk|Y!CF7T1@rR=hFEqL(16Hn<5mzHH@j} zzOH*JfS~Ff9_J?Un<<$u?r{;%y3NJ2`xSUzaTnXBeZ#XVf2^OOgx#8i^p+EM(nA`l zw?4so-UE91Re?Kl{uCGQ^phJK-GR%P9Ygzz2g7In4>;urQ13eiTau$t;?$D4mcL<^ zTRm9Rx@z9|`eF9qcRSTaaTGI$CL9_)a~{O!`83hcrmgMV8d7F4Ekm zLENn_7ThnLKD0tDo8~yYrC*I6WY@=m`!&#<3jCf@=E(andP;Qfo+TEY+=DX#I!q|@ z8f$M?G4+OVY;e?3Cb!3wX-9^#jS)udSkxIdETxdC3f;(MRSeVVG=-%$>oND2@=Ps% z6}&l5D5sUO!`HU5=o^;Ee5^#$Y6;v7nGRfj!cgv5#|jqvbQ1d*Bh71jFJpHK#mv#X z2QH2fqWuw`RCC@@p3+UsbDxe86P(cZ*C!awjY9t+0T}G1hvtJ9uy%ejPJEXI!jAl#370%FF?)9^qF!!8@!%g&zmNotp4l)vbd+h_yo{`v zOjxg)Pqn(4RDGcjWY4D3SBGlauxzO4b4v)@s#?w6kKRT$ZXcjww++D>!;u^I5jHjT z^ttyl+;Dk1^jyQPdp~9a)?C7so;TS*%h7DfeQ6dh&S2E?E>XIri=SR)IPw2DZUa~5hl%z;$YS2(xk`YQ)$ZVKVWF;-7p_Ecd!>lMorCr)T zzxVg{`Q!Q5_22b4=W!nQ+w*oi&zBv8L!1?h0mTVuw5Ac&TK{37n}A|Acnektw+j|s ziU;8{v$;~wQ+%$}F)(%?a*Ho2g1Vo)jiP5f89EkW_VQiurLqhyhr&iwf)(ELJ%!m~ zF_@pf0CVkMU`O&HGJ?K=#c(r?3K04G4$zvbn~qSA4no<2sD8sOX>CtUn= zDn?Gz#|v#exZ$}JP0~0`$Fikq@u{`g*tQFkye^|=Pywc#UQSZ?hU2GEikLE81`pn_ zC$XY!f=S&?bmmhJXjUumpQo?j#YKWy>=*&t(XS^EHTxv+O47larL$mQ*L=tyk%ro{ zR$$5KZoDR}im~!hc=|*hYDrwcgeqSgyrzLCS`6@^*F*}vnoPRCi?IKsH43d;Ylc^M zq*He7O@U^XhCojLBJn9#$T8O)FY2j~mO~k7<^+@9ZX0p9(~F9;E5;h2*9^qm%2)D4|!FB)9#=(uhjjJQSCOE)`)+%U=vDJIpcy2U*iQ zSAN9NU{7_!!k>?&HCVn8b`-jRKa z8m(|HBz?c_bmgV4V9Pc+!L)aaVXehR{#3UQ|4?By6H4yI{Lg;{*FuE_=h;>~;MRr{ zYHq`mg+7?D@hLtNZN~$;53yFp8RG(up&Rnt;ItalmPnSF?lm$}C7DtijF50(j*bQj== z?9-^c$N)zg_uwj%i2E^CoMd$V8;y%J zo?>OyN6fqS5npF!(^<_lLDdZ}I=Frs^$ky=Fz@vw_WnCb!%Bo$Tc{tQfnp+nDqE@{ z=W-n+pM8cptL$O3tO97PPy$Jr{p?KTS~hWe6>pfdjsNy516n=@bF9PW>8^Y75OJBM)d1y^kHO~w_b@9}p>Ax_HiNB0s>v{S1?mm}ZM zAu$sb7EXfrdo{pWCNSHnEk#_;cH&vLL-4SEA6%_pgHr-iFuGL) zo=CSrt=}ZpfkQ+4WCYx59L5G`w?m#r4QTus$u4eC=P!9bWd~h}8UKs~Kc)8|Dk)&m z_?(50_61|Bg>dn$5&Zg>2%;y>p`5`jOxvP@Y2yY-OZGbz6EgqY#o@aR1=I{ z(@ZD4e8~SpFWJ6Zf@AOPU@B|NAZ6PryzjOFX@n@e`S2c|x%xq`rUUdo`icJzhYTgy zsgSfH4>l>Zm|==}njq@LE~3Em9I_vs;#{*7e(6tKYcJ05Ueh95k?p{;2R zic1@yTFo$6?MZy$M0YlQ^k;! zGC>DVJ%5B_Chx(cd>QoKkwUFG+feM+7UUxyJ!faX#@Nkkey-Uc3S+ zh0UydM+Nj*2%z)g{voR)j_H}1OA8kJxg5n@KZ<;vt|K9i{S7@qTJ z8k$@C$u{W=WfU*L*WZfpYGWS0lG=#1$2SOywM+z(wfi7)(_Q{{fdY&Fo(0?D=0eu} z$@D1Tfk12gZw%d#1gU$wn5J+HJNCI3YA?RWEsm41sELENI9=52+YOIK>|?cgPUs<> zhCdp_A;9hhym)SHhN&(f*zLZAoc8q(0aFnrM*EPTW!Pu9MBshkrJ!$_J=$$h$5JiCgS)5EM4ddmT+oFz!i!+R zw3nzS;)s%KFJsYDag4O6#vQo_QFC%Jq=*z?<+u`Dac&u^r#^%Y2hT!Wy%pQlkPlYQ z>mcu~KO`?7i^|&fFnvZMLeF|U^-T#6OZC!vb8XtS%Yzh>!)eD-37Ti%L+8f4rPSEx zRN-Yx($hWYM%;CQvY8BR?fXhsmo`w{1qo{0^HUJB`IkV&E05)BPGqV9TiB=>_gSm^ zD6nzzCRQLW5IVuZrVu4i+oQ)W54VQpE(5TjWFmUYZN=iwAt($=g`SN|pfhJRR47k} zB~$t+O;Af@@C%v-Jj}3l$30>`Z%Hm^Eq&d{(Vg0(9Qj-cwpNA(pIeAH*|rXJe`O zPn7*U6Mm*8py?KAeB9=T@%L3Rac>p6U24I-%a3Adb3PUvC`6@*G<5u|3pY(3!@a@> zaQveqbe@%gFE3`o!Q3t!d$$4|$E4tJD=iGkOvAfz>J%lpmG0lRrDib`I%*+DSKqD| z7`IHI+>fX5Pi+Z>UU#D2)Iy3Vzf5CRT2uTG&(s;{(XCt;fus0w!G^Wv{N4M0y#LY3 zptLFv;-w<` zDP$cSsn|qTiJt{NCp&4=6I(OPkv@cz4$i}4Vy+Y?E=mV?-Ns+K-$~}+RqWLl;Pu{8 z448|kk$MK2%93!N(gKv){RwrK{=s1tnNYLzG@Ow<3+Jr%qw4+dIPu$0%#nSLYbx|{ z(&0c<%fAahn@gc>$_2CuzJ)H^0BP0cA$+DV zoGT2**`2E)IP4!Jmmgq>WlAvrcnz%6GKSj`PB`|ZDaHs_;=DC_c=xM5w$F?r4U;dV z{Bbq~x`~jVq%EFsD#LnHISQ3CrS<=gU|NAI^e>CWQ1KoT+z+r(j1Uvtn=%(f;+#2u z2{*9KyaX%mJ_Gq_s+7I#30-(*2TKg&*j>k|;9#)__UU_|vr#No=*gk_gl351)0~>OiIFD>TS4#gQw7u#%sH zWiuO5A>cFIOq0R*!#A)x+8CW54uc|bC6vzoj-xO96)dGbkO@53Ca&D*-b^`6}^U&mJAa0+@Mp&Yw`t03u>A{tDyhW4~k*m^MuYi-;x_v=2m z-tU8$z5&C&?!+dygIGRw7#&uWf7)*~nnHG_QpP|E?J{nmaSw)0 zt1q5fE``}E9zf@bF{rqD3r^_>$E=nz=v;XmO1=oexwZ(%jIKbF#R1S;e+{F$(s8k( zIKEVVh($|$u~Ih?&+YtxMUxV6#fV`zyt^GKY#wIZ_&|1VZ3XooWCXeXQ50JEk0c!W z@Oqge;=UOexT>E-AH`uoc^TGN51?!RU!1NWz)M|ca2M5Kh;S*cN~^)SHC8zG#wnaK zL|opfhB)Xw9~Z6M#?r36Vr%!uu{^MaqxLp5moqP!=$VFn-;~)6)tuDSRPNJpr zhS8}VHwEHS9Rk^^J9NJKH;qksLic*!3nWt7>7MWt5?S^KJDz0V@4%l#cav@AzRs|5 znYSF;)^@V_jsKWT$vl4aFfX`g=R&zE$<#W-6*kUXk5ZaG@atkUE(yxSbLCSB9__*s zqvt3ewHpS`jl#nZZy?j*;Og^AwoX~qj89S1;okodhT#*B3M2>9DdKGdtsZzy>UOJ0 zX6a@8F#Z_6Qg_A7AH6umE0f*7)`yyKA9Z|Iqt3N6U^L?t$m$hBX1Wmczq7&R`&Z+t zY3E3|Xf5gIdy!h)HhekC5I_3n;XS*%nDe9o2FJxh>3$E?4o$)hXd{?#K1a}#>5qT= z9^fn2I(+bRG${!g;61ndBxO~Hy~FR}^L`t=By5b0HBF>0F$Z&3sNxBSBUm+6ey9Kx zp(y4Ayp|n<*Ok-A++`TLb{>F5+-#Id9t->TyoHYn7Pv1W2ycX&qWyp;syvTF8lFgF zY1o*dpA8gaw%*>nqF{gvG1R5=zK&w|Arwa_Q@>CYiP6)$aE-Udx z!8Kfd!kKS{WngLF0!np;Y@bg9TRPE#iDID{Q`+;ApE_F{_s%P&RKsrCYqph2zctVf z$4YWIyA30s)ZrYjE}SLk#gR{(m}x~X>UTdt)A@3!>7@p?(=wrhsl$o%9jI)cjhjb( zB>t-i8SYf1bh%<$92tXI5g8b}B7nSiHPejS#aNKu2jSKQ(2-D#kvYP&Q>WZU^?Nc_ zAA3n-OGL?cN+SMf&LEKoO(cA*6Kgd4@SoNUOzqoEQkkkW%62`;RXJjAQarwwRL59b zKeX5G!J_@5G)7L8X!BQ0xo{d%%=OUl_B`k=ev4rv8-~tqv?_dqYG+qN)64`E^4SEj z8}DGvy9L;6%;OhpRf@AUBf0J>boV;~cS6Hyx^yv~lS)QG$T6snQw6*GA7N^)7{)4{ zAg`S50^x?Gg7(AiHYGk|Aj|76#M;dRk>M9v>yM|Tb-talj<=Iu*ag}i@_~}BR|sOq zE~BVzRs5gq5Bts0u$ey!==lcai8sMIB+)o_+wF?~Q`z zJNA%Ky#g)LtfQp7`}8{h6gf^bCNaq+wDiD9dN=PHNlYIK05UIO{f!d1^=>bo(0?!Z zGC7@eKM&vs%NJxk@hi5ER>7ynVR(P}e9}sqh)Ff`urZaInB96N=WT8-0;CgVuurLcdi zE?nwvMzf<6QQ_}dJYXw_H{I<>XTe-Df7gj|%{$R#(RWhGt;PN-O}th)lo}1cVc_ud zn0QwPl>#d;NnaGk;~Bvn&RlSHx!OCeMt=Mt3!=eESW@bVx#<bUi2Kei(0ADq~;+Q>+s5I{_ zs_r&GW7CD`ApH-Y2hO4M1z`f?>NtV&nhiAR;v0IHltag4yvcQcB7|-^2i3Hh@7_BO z+ET^}TH2loYJQkt(GaM~gu38YkMX4L;7c|;(`bz9EYd#k27hh~rW3bIY0uy-QmA$& zWw$EY6P$s=HV=VUO(TA5e@F@~zbUTZ4USXy#3M(>!l|i+XdNgCf-T*!pjd(BcCN?h zKqVZR*TMdN7=ao;U*mrBK6q0571QVx1!kAh?j;2ne*X`NyJiafPSpvLe_Rl#MZBO* zGP5XEsf5a|OccnDdm|WcB~4dS&yul{6Xf)SVRV@tX824ZyNKVEyz7ZT)@6{CAMAwk zm|Q++VltmSFcM^^5Aer8nC*4A!15nnXIGl*LHJAuEXt38E8A7gtj0Txwa%M=h)K2= zVm^k`^9EINi}$0E?h7$>#s+jg{sP)`y-?))7%UL0A)`^sm^m*PU7ue>htZX&?PZBR zUr%Foy+3yCNX3(m%B0i1ip&j%_(t}MVDk7xfrjxUnm)pi5uKc>iyT{et#=(guY^f3q}y%ast^e`pw$KPpm?K9Huo<-B2mD9TyCuvnW z;suFtI&d(baBv#xo6f}EL3hk}-H3H+-c)ub2JiS8V#7*pSiQFxt!0nHk_|`Lua>{C z`}bpvkIX_*yLn7~fhYUE={X!yzlamWk5i;fpFrl*8-c9@Y(8dG_QU( zuE~tTxKL|SA7zg3B_3h#_OG~MYYLv(z61LE1ZXZ4jw&lZV#kF*xZ=Nqu0-3@uZ~LE zt~8zsT}R=gW^=x5Lp?u6NS(Q#Uk9U?U*d0!KS%-ghV*aX0+c&8g4&{MX6C;7+E!CK zR&pE9*-+ElLjuRpdiZc@BtE@tj)(d!Q7tGLE=n(h@0~9(=1dv6M53Ts;U8jx8tC#pAdp!+{$-u_tp9#_ylchxn&FQhD*gsb( zY2Ra7K0yiF&gfE!R}O707r~6k4lMPEC$$O_+9_f$Q0%@&;#o(~s(3$Ck2J=JXkiE+ zU&rPsAn0qB!=*78l+IO=^?2#h(K+c8mf&?hqxGPoSd+q6ur_ZC}ATOj@gJ@ngIDj zxo8#&n4TGfw>CSG%043+vFRojv_Bb&lW)oO*m3+ZtQkJeUI3FKGGWEN2_WZC$dX>S z;K>JO;9b$p^q%6&BU+!v-%g_}t4cq!H_529fO4N(5c z0~UUL1H}?N+;bU#7p8R}-?|$nYPF*3wK&|iu@qBpdBTyycVI>92-wuRmJQRWVs+V# z?9}OxEb(|Jn4%FK@bMF*>*(Q;#0f0wa5Nk%=|Jg535+QSM)@VbS=*2Gd}Yzm{}Uwd zUoiLRXadt;lf_qu9mGrxeT;g)0Atxj7}og_YNk5kYQr_yYB!#|i}G;GqdGL3e;EF# z?SZXzvN%`R6Z2;$;R{qF=W*4ffATT@5R$;If4@;UYd*g|ScMb01^=y*F8QTbq%4aDjF^7uL>q6t`od-y^MP={6NpXUi=|Foumu5ky7>{3hLfX zvN(M`~tVG4KkjzZ)Q19qsk5VLQ-z(sO#taHu-u&J_VVKdLOS^mBt z|NIH-y4B9&lIr;2;B=VS{)V~SSDl zO0ZVC1>CvFX`*ROz9rVu;$dlsWnllj=PaPGbB7B z!xv}!M0C_pJ>8E?dO{~CS(=lnDK(lg?|J$-LI3iT?369mP^BBENQ;n3+(OLg2{N3 z# zSdB(H%h8r^f-QEl;L1b~)JhG7xVuwWky{=A@xdluL3|`rFKywEg-7w(?vtVN`Y9$S z`wUVdZQ*9yO~{IP&R0a|@(2I?;dl9|Gr8W+%sbPGxxdn5x!Jm4nBK`g#wPrqAc6(K zoW|R?ytHo;e_Z_{la4HcC689YOv&xh1H8J` z4c>>jVy(hqEZsE?%jc{i<0n_)V%kPNM^4mQ^_e6W`t7WRn^Eik1hJkSorx>o?4+}6 zJ<-YH0E}7Y!H0Hkfr&F_L2J=kD6y=eh^^agM$NS%Cp9-(==+8)rP~r7s^oi6$ z2tNmdS2WpSi#9^%qfB@? zyaMABUZ96jGNdkl4&|f%!E625IJx-&`a~7LlcZa$F?JJ6S$Uj&Tvf;|QkUZnzVq52hmqs*O`RpPV{fYoSWapsp=fLE98LZ9Y)bZT`dR*o~LkYYou+3bz= zvxG2Kc^M{etA*p*GjWdKB3}3PfbDIOIJ#y#zjxhdOI-HQ>gd!0A!~!IyCi88K|R}6 zqyEi&u$W@Y5^EOW1Zf3asnv+GIj%U`G|gu0q~8K2#*Rk|qt3W9&$3 z3DKg8Ez;x_z5~@`pQGoxY^?TfAbndQfs6fDvJ@SIxjMc0Oi~jQMrq(NZ%aIwFde4{ zNI}t*`H;S<1r0`RM6WTkX_(a+5=k>b?>Dzd=z$ZeMNNb^IiYy?=Spf$u%W2)y?EMw zCYm?+;luzX4C;2qHFn==w!0|lk~dzj%l%oq(fX{I6Ymz~1d#@>py2r%Ff?~!^HGi6^M4DMrsbkd z_YwTaEhFXFUAXJd7znWsWHsNW^F>1XRzh(D)@6_1Tke`?Cj=A5Ux!1V+i}{jLy%c> zkcCQo2CL*lXf)mz%dJ16;=pTM(SKWDrE^fwA1+QtrxuYrXGP-YRPf3aCG4O7gzT;q z(7KtH`1_*}-iS!Yh>w}LZsQwLiFzPdtiFL(85ok%k-sF@n1^j^?MZW1CJj5>hNAz* zgF7Lb_uazj$`>%#Etq6|qw(#G0kT!NgYipF;EReVc%pe8*DU`*OJ%nT1; zFTSOX9T#Z-#X@qPY)6}=Zjn~#CtB2;ia(!rV9h-l7Senjh6&&2V{R01L3)Ql4vs<2 z?pd(*(>HMM)q&8H!zgCrO>*cz#;=d`=Igr(*~3h~|G#mR#_QxT!|S(1gp{3zq%gBQ z@prYAeNn7+?7$4}&E1K-@*Zoe!MHh=XAK`(8&$pL{;I#>r`(q1m8R~u_VirOWIwLQ z)z_QJs?>!fj)XMOp1$u*v#X zLIg;K4Pf!$63pJ>18FTUndyW+*dMe4Z8fCfO#NZhcrgl#xgB`dC)Y+r^9>zdY(-Kh ztgu2y9z)kCV{b|rT^);9H#Z;kN0(wi*)#NUE5RGuJtPyhjQ&Z#!qy=TKjjr+&7xKs zt4$;`<_GC!gkob=2Rt5-g}kalEU-_;>WNEnaL!IVxiT7VOnr>=K7C@bx~8yI#SBF{ zOz^nUB^>zko~F(gp{e(KDCj8C{;}=YmMDcMH;uv1dsdTmaumHdGGCxq7LJkzH7sm} z0l(ksH^2AJIsW?Cub_5o9ozeKHo%@J(4HntN5a)8i!4}7m^S|`_AcvdGXuwxUe>Sj zhN-+}5{%#8IoukJPOfY~ROm4s$t0yMNZtqfc>X zCXL{r+?9LuP{R7ov9sL%CEnIRRXUjtrytb z4I)YBH)QZohIDq!!h2a_G(?J|HBTP3{ zGj@c(;Lcbr?Ah^&g-trlKh|_*r{3S^_tsy4eLn-C-`x@7PK&_at`^u4Fr9@@*5s~D z?PG>72ieUPj!ZCoFFWZ}#mov7%`Co~$XF*kjI(SIpTIQ*tmYz?Jmqp?!mXk&|FF9B zWCVA?^$6Fm@5oJE_J#XrAHXH2edU@BuJX%bg1H2PI^NfN86Q`kV)bHww{>{uPHu)l zFn38(m@B~9T;T)}&hVy@)lz$5$a$uM`-Y1{UVX+|5>?qJmv+!gdITpf z|3bOZo|vjR598aUXhP=>!5OzgLG}p_FU4En74xOIwX~1&Z))Hc-44`=e+%!9d%%Dd zqD!J4oXA~>?I%GXU9g;FZx_?((+}~@=6{p?53cL7tO4N8WK45D_+*VI={HskXO9w zGjC4l=Vy!4laXs)^?>^$vW1(ewTc&=Wz0J`4DcgPhw)|&&AddREmu)v!HZh8@S@U5 zmR$`>){$Z-In5a}xU_8}`9}|K@#|jw<-Brsu!t=}5Eau%8pG4k>{KfgTfT}3%lgC1 zjxKiZ=pGn1@gI<9`e zYJd+#U{jh3%YSo+nR=|^pZaw0X+Dz7b6YH%<(3KRU$gM!zflysV~v^hl)Nom5~^@Q z_c$&PM)LOO47nw%K3fUidRte2m*5p{zTxuI>iDS2V6LIun)`il44;u^&2O1r$`2o( z&M!MVf)~#E?@KPIK!QyzRUc4US@-GDAp?9@IyHF>L>iEItI2*Z9|=w0{zO%;Dt;Ve<03| zll*SY{K`y0@{Sf1y7_`-w<%r}GsL>PFWK4~fB9$9@A)r^G9Y!n68P=kS$ubunMK4- zGtTH=7x!VHn%8X#;8#gpvA#cU8gDpg&fn92z@6Fujmz%~lRt2|nn9TA&TBA2fly z5ARvw+-x{*EP{6?AHWkc`cPS;5lu?F;of8&)M_t<%9oQ_jKdY?JXJy<(I{f0=01#M zgMQMhKr6C`#n^f+9J&f3VVP_&1O%>wf8(-HM&~6K9;?TzUq8^5b=Gw7n>%{`TZ@)g znlP7b!*ca=Y%G~m_?E(wb&M>310I9wd&0En!9!Vho`LH`!k?cDWr!8 zflSDJs13J;Tf%NocZfm%Ur&@=w;My(eS);{*>LcD3eE`jhbga1SZ0MZ*nJR!_kDx( zLAH`q-yP(hcbN0i!#iQwg2j-aC<`$zt`IVz0Rs-y((tA8x$TX7SuKm{YU#BuD@=4>j@RF^yeA2vS{DB)nT-RbtKHwb)u6|k@M8g0D$9)2!zLlcR!D2P*r!Jk2>C7J~BeL7I+KSnT1 zWS-#rznOv+D-|j1>ut!Wt6^(ImvA3v`0~keMxZKU0)0iNQFN;z7F^RL)jCBwaPm0z z9l3$A0&!Tk=nEF?T!=+ByU}mjR7fp;1o8eyV12AVOI5Ulz4QHHm+TLeeO&zn?OVJ zGH%q-f<68t`P$1Zob$sDGmBL3bKIJAeO~#j5I;%Xo8R@lm@7Cjnb(}&!z)XL@?32b zANz5&l<|x$;Hxx!+qFty5c? z|9g9`;)6Pyy)gqvRxD<>Jps}rz zEj2`bsR695x(;79iKFxQ1#ofJE!4EVjbb`~A!OMjI2qClTlbxZqodD)-Gg8dPN>G= zbwwy=^$C?Ox1(_3br^Wx0;--->}BZ}cA%?-zbm|g#V%aVKbIU}|6l&K60PB<=4*d4Zj(oJYH}6&5#4A;_bC+LOaM2ImaM=S5TwIL? zuf3CT!R0~L4N1#52a8fx5GV<9g2_;!lLuLiZcxb>BnjQyRZEtueB|!V@ zTd;-?Cy7Oj3=`Y&$GcGaF@7aw>Um?#^+zZ&<0syaEF-b*0aQ9VfTQne2J-U`JPrMRx1P(#uJg@RV0Q}H?&bUF-sw&{S1$w3%> z;u|pM80eG?=VpAkz#Q%>vZ~g-{H9C|rf|55|Fg=Q8M=zF6SqRZW=j|Q5~s@?_ZhL{ z3&*ktS~jrhm$YE{hhoZY%wqhN71kY7)%d~92l(bItN1<9MX4iW%>2YQ#s$*YS&UZt{T!`?;!<2f2)--TWe7DgM6d3BK)bF~7}dHy4!Z#D(6e z|WDDb57>(Q~jdC=lzvN8rZ7 zt@O0xJ*o4Lam}?#?0y?b+PZDHu3|KHm8(;WdXP<=kthw1e9bAu48l#_2FNV;2H&?z z>|EP-c>47qs`?sXm;FtWtxKS|}DwX>VmJ;BJpg{JWN=30B@OJg*?CM&~7P-B7w!Y&ukVB(`9fo!xAnP zUq>}JEQKbUy!fa}R%8FWKtj*EihB8}Iq?;(dHhKJixNCj8Fx zSGn9=Gu}fxhu2BWKTCH)x%4o+;ogOsMtfM!T_sp>A^m)Q!k%5EHBA7?zIyms51YQ+Pg6Pr}unKx0!g&w`rSuhvX5giM;mwv(XZU739anv;ZZoU@;mHX zTWx0bL`lus*twC5xY^53e|wg{G~*_BZs8%my5lWxwauTObn7E0K1ql-{CuCkG`5Tv z{QSc&FZAQ@s(t3IC+*=Cym(&m?l*qlvwi#pnSB0RL@rZ`4&b-hyTiG!vq)x@Gt^0Y zf#)OxHYIiz&N+AjbGz4){(TKRvNM}L>~FMrBkVBwfx%gu<}){J67;SLsy9g6I3K@` zCYCO2%-Z`1ZTxv#jpV((wQzrNxw5Gv(1Lqyt+(|xti2# z&_(9@9hmC8g+x4xXskv0Q1_*yM#*vrSz8T@jf>z;uM@7juov(BYQ$Q{%eeH)Z#?`@ z4pjpSSV`+CblCb2N0)`8W@rv-tUiHJmKiW0xsJs?O@eu&TA>IA!BW`=T&wR61+!*$ zv`Lu#eqam}M_hoZbvI#VZXHigl)>PfDag;Tgy$ds+L#MXwNda-f??~c*}l8NylJiv zJ36TXV=j+_U+cU0fJG)|%zj4#Z@jpI-8k9KW!rt{+*JIyOh-TNaZ>{C6kly!Y?R1F z5C6;OpU`9~bMEkm{WG{G3Vp0+Ow5h!mIr*({mQAzRPn)GD zGwA&Ia_a5WM%KR$#?_xeq4YmE{?cCDEAIyFy~ps_E<3zX{0fuz#!}Ie>lCk8Ni|~< zX|SxG{x*FOsMUO>&07aCLRgpl10^Uh|32kZ7m$=u4(Plefa}T+;PS{HIIgh?3;sCb z{Z4n+}|tByk@^DZ_sj>s}YysDkMF)=pASI z)n~i-BK1)IzVZ`T2ON$~%7t9{1CT|Nz%(Qjic8wi&vFo>cZ%V)eigcE!sva%H$kMM zHEo`RG!c`Qleu^7C(^2pA|G$&A$EG#Qh*tDb zyXai1p0=5OU6?D-wki;~H2c!5_bT|?^D`+oRMB~DQ9AUq7t4G`GLKo>klEhCIaM0M zjl)whq{*L@J~d%qt|tEN|AeOUt1;)-bP^wUOegBkkyH8$79|j1VdQKw>@Q^D;VBRk z?1!GSS7Bn4TCns|r9uKbK|qjZeS(W2CLGm z4d3werSs_Spp1$nfrID$$=c4EB9Ggn-*Sc~X#h8-496@V4+>3-ChmnMP7@VltBl9v z^m!>XeC;lpXd_3;QvT%ss+#s5pF%&j#^d)-QRx46Jej!Mqug_;G-1Re6k5Fm1)W_G z)vOGARYXw6*8xWcE0F%*EX?*O!q@U6(EHO5vUA-*Mv=ei{j5@2wfY;M&}_>a2`BI! zV;}QNW5f9RiVdv2WgDg>Y{2S;g|JU*GrRcX9cW4Zg?DPb@Ky37GNnzZRl5wqHXNt= z+TySGk7-->cnb7-%xu*9d2Vn7`=KI?S4*<-oVp{}_UvTC<;u)ZOn4mz&YJ6%Ghb*^ZrmIInn!R+x%O_Vvg66bTf zC?Z`S|D4~>Wv@>|59za*vPP5iQshZ$;wOB7XVATNE7Zh{g^8;_Y_vFFt8ep zLak7AGC}IQ`(S+5ik+5N5A9{s(eURuwBFQ61y`KGhPr%=}$%Bz5rCP`34Ir z72&#GCf+RGM^g`Oqkx{#?DmQpUMpxdiz!})n|ce;QPLeIZy_$b#E$=GRA+|HVyh50 z7Gub(Mp|XuA&9)_gNd45B~M03soQPCUM(FYW=Mz z2a8PUZ(QX0l@U zVJzyT8#Atb0qeF`LF@UKD6#VwXlHzZoma-O-Ja?2>UR~XDLul}HWwT@nnOu$B#w!b z#)#5|NR6s2I&?QwIF`U69eWt_<@zX5u>mf~C^UGR(;$8L1Eu&yijnC+kc z*WQ;$)%dl4Hz=GmibyymsWhC%bMNcgCn-wER2kEtPKxF^i8P2bX)Ym&5)mpxNn|Lg zkWiAym`F*+FTcb0d7k%u*1O(+-nD-3de`&%taYD#-Fvw9wfE=R*WP>Ge;h>)bh@fS zdCPjNlo+J8E~UI^v6tAZScH#CTk+^uZ@lJdj;%}G@Y|WWbjK@KxL0G3vmORBA>onS zt`KKNVq-j`-qK^dZGQyUW>Yx#$buQ%9CuspE*fLJ=ZyzBA|nDvB7V}Mi9d0)(;>1* zD+@XmS3s7&7Q`2YLPL@Q1m2$qpQn}L`J7eQbVL^m)=a}GzHK-$S_Bo;;^>}vE9mfG zHE*U^553VifR)cAu~oyAZawBtr?I&v(a)#x{EE8h?80WeSh$p)u>On%T^bl)57<^` zgHmzIP~Er>JYSpv)oWv+uh#*3*b_+EraLHpem9Kv`bKU%aAmAxJ~O&*dc>tN^pDYbu!=Bmi*{lLHt5~5F5)%nC|tJ0RJn=kGIENCMPkW+!dy4D1zjLDpFQ5 zf;rP#%mHp(4EnFwiRmp1>8nYO^z~D7Oc=8bo7;V%t8+f4vmEFedXOsI*o&1XQ+N|& z@8hj^de9)z&YdB+tzOg(Gamb3qp{(H=gf$eCd|S`-rT;fSKKL{&dfN8lZ<`<3tE+? z(c^E*a9wpYnyN^_3GZzn=k=Wlk=}7LIH4h1?B)p{TPoE?0g_ z(^;-OulW`{>*hB4-time?AJu$ksEOTT4Ag`Xn@PY45`u3b>3EyU^;jtTo?kVo6nu~#s!FZ&-2OM7(z@_RZIL=-e?s=GkNNzr{P+7x> zf7dd02pLI4vadm%+z^V#r4Y#{Bgl*KYq0Xs6W&~A7IWyz1!GyY+a%G9B0uRlE|GI3 z)%7<(cq%0&DdJ@Ls+}BI@URrVPwvOOTa$V0fjxBDm?aIHBqTM=WBCp|9P0 zY|@xZHx|vOZa$T0BO{Leqt2qzs29fKW0bk^P7k=vPM?`cpC2<5w-g#fGLI{_j*vMe zfuv}uFlMkQMmmmO`VpvkWe?e*tk0Dzn+;MU)p^3J_VU#Bd?j+pW0;zCW-vc* zIW9Y;2iKYp!1g80Ot!f%xN^;zuggYq$ikzWQEK&iDp$XpHkGJQg_$4Gf8hk27pjFP zdrm=D`v#2dzeCMbyQyMNK4s3d(XpXG`&y@ZU9+|AQqn!+0@w?emGo zhgS}BvxklnjqQMQ-S4B$!%r}9ejhY!dkK=x{a|I;3`xbc5O1jk!{LLdbVml`IXol< zlX1h9IW%AI0ByYW7muk^pf9-HH2q==60K-7e7Xkhqz+OErMsx;dmlE-u)uB3UdXK7 z$rF>SqPJuY(ZjYZjFEUlmFhH1<{Gk08gF=*2;Xp`_ER76#)*j_5vGtoN(qLOcaZpO zA%rml@Nt_N8asPKgF*vz1ZG3o=Q%Jv0mU0S?v5ss5tCk!{eC!JgZ`d>C4mQl3BK@k`#!tD|@u zocD9%4$LRvm5HF|AcFR{ZE=j&MJQ_Fqv(t{Fgwu4B=apeq(5&NB&udo+nxP1vicy} z9p8eo@2}#b33ezdbqKkUR#@m=PABwSph9Pl;FnY>I{K6`zMYbfU)nZ+!cS*zl*1|R z$%sA14YytymOhIy9+_W8_>o>XP52bbc@|=f?mLLOnMC3{AAo+x1gOoQ2OVGBA^O`` zXs9Sfu|gx=?w9y@mZTJIK2OrOZ}64QA`8LuBnGN8nCRWIXc5Fzl!y zk{Y{<2ywnMRld4Rpjj{3P_Y=~LW+sOR1R~rdlMN~I|GF7>64!qpE1eZrOf8->fGB) zrC|J5TWT|p(o-%sNJ`Edrtqu|N(FTxuPBpj{ZI{u?Y}`mtu@H4abqeM6mp1r@eIuR zltr1eOnf+~jz;N5xO&l9c<0~=rx$kPK3`Eh~(lkeFzHaclAm(&iOCt_L@Zfw2-Az2SVPT!8)v5_Z{DQ%E1y$BPF z5^>$9vGDA|LAWG757(?aLl3OiqJ2hB=;*EIG38|=9-#ZE*c?kbeUt?VpW6yCxg+35 zr!7SjUyRLG!gWuYaf*%z+)A~k;W5QLNewd^#dE~+ZKe?GkbttieK>Vr6kZu|9+O$0 zQKS1Hm{iDsne96)y1xgH1V->OVyE&Nmh~aP3tZ(n7Olp8CQtoMn4Cpoz#9Apa&1$| zk|k-}ti^SV`9=dqG{}rGbdg{hqEfhyNz2HCsRtNWJtyY0;d~;#w1k-2`ZD1%rrhIW zM413~C>de>4CfrM#?2ioVXvzn@Koc;F0DAUS5ZZ9?uEJ;`A{Qs4!opifqB715E0wQ zA>B1Hc=W(wEIU4kX{|g6%b~E;=^fZzeGD%W43VQ72e&-DZnW~Wf-fR zL)nuYV4%1Pu2?2PN6agbzC4=@Wjr>)pjzH>30D-~6GRse8JW0mPv*_qF@W>BKjRiV zBf9DIEmWE&M_OApkp)_hAYOX~v!Le{Q?d39v2+O{qgTFU&O7ZPmadbSo!*}r`jeVNZ@w@@UY14kWoAjh67lNyDE@Or!>yc#VJLpI-_p6v|hBkW+z zWibHWOb#UWpT(da6&!WwAPh?9z#a)9viGYg@N37x`8{_a^T9Ai*Svy{T?JUE{2isX ztijV==kU(@skGkVBTh)3%iVQS)1Y~4&99GAWF5bQrY^DPU8{ddMf=U^ipDW`-sCmR z^wuVMFN*NP(@Auv$VQre+<`8yK7@N~exRsy4PG|ggo$Yu`1*?`ytc5#jw6;-s7C|O z_bR~l3oJbGKn4$7Qa~fECU~ef0va10sfFa#>t0)Ks)gyws7(Q3(BEPb^c?>t+8 zPx>S=dF~Wy(D#UjofYS$KfHtG*Q~fK&y~Nw5MIg{K)F_=XJ6&fW<_^uAXALD?#@D+ zzCj!x{|Xxf;W5rxl?qAt&~Yh1HNMo~aD@}z|2d35EsCgIlM*KHZ>HmKk4A&8`*_zd z9giRM#SF`8oD(<>6MV1Xnx#WHW_>>%U*Ar@4a)Q6#f<5qJsauaQ!HA?e~x=i{4sJ( z9ZsB!kk)-3Oux#a^_UHyI`J6ll%(S-gJ_hO=z`s6<{&$4Hm>waMStrx(0gP#)T?}_ z+K;Rdd9%PFPa0Y6wRB-f1g#qXl!~h-@@7muz~i+9put%VPP2)kKi_}lP0S7FX`0Wa zv7^{vy&x4PbY(NI8s_0`%`DynjS${$v7HdMu!+3?9159EiDaNE9wO!iL48#S6tBMy z_p&#_PJ0pf=$uEqyw7o%V@+dWPv|^Q;rfu)z*^W}v=ddUT|uZ(2B%wA!w!c^R1%tu z>6=}#Mn4IgOm(T;*3WeQ>VBTO-%`Ars>x*R9^!_W3B$HV1*+a1Nu~GMP@h3jx^dha z{A+zGW|W%ZtrWROquM@IoXy9b+Se))O0gqKJMV(uVz-Fulh8IkMNz=Vjjeguz@s*5UO~=gx-Aojv92oB_Utd5;?U*^2J03($4CF`SU$c z_WTHx&aj1hmv2IUS3jr=+maalQyk)W^&pw`-}16kV%Fg?Qy_&nhGX1AHZ&x5cyKs0|%$RrpJ$`C9uK zcg<2&bh_)>w!$ zX&9<}JcOolQ}M3LX8ihvgT0RDs7b6PE$6#pp_DHypL3FU$E!mB(Jh#AC;*3!#o#N8 z52zQOf{FZ<7!st9>bru`I8_`uacR&Zatr!}C1HvG7Wi_)1GjCOj1LJ3RjWpU#*2Q)Z&8MfNZgxJM%NYIB~JbJ$$uUiIE#Y{swJ*5^+#T$_4 zIvzYy1RJo|2b^CJ3sFk>!dzIXWqw+cH0`{JM?hjE@>MTD%@5mBQ?2wGu>ax>a7_{Jvm z_%eicRj2UC+E3`bLISfob*aibDeC_{l=`?T(N@7`ksi~B+HN)I(PWEn<5$wPHdm?Y z<)`>~>t%Gg>;y6QDp2*R8LDm{L^q$q@HYJi+?ieqF*j$!rBE9fuIGZ~wv(9H{SYGs zdZHJ+#Kzo@xSJy&bCoF;FRMbYkYtRWrAEbEUFhOx3iM`CBCWnVo92bUvzQYQXXPNY*V9;Pn0_R^8M zJFzxnC9H0n0h5(%QEI6?dDUde)b5{E~-^2+%@(+Z$3qX_fH50X!fC*kLd=Wtl0 zfU9%2lH4TC%#!-Qh})RG#Hz@Rq*`9V5zS&`nxiB++47ZKDB6!g&&EK-!_~NYu_em2Ap~RD;|o{forRt6Y(|&BAZykToh~Kka6yT%uUBlgxZ?H&da{2qPrAH z`gSbLD8baXE|{;ZM5UD+u*x_F-%94t_=F8~^(A|Fu(^kbBtAgtLy7dkR$E%&D@ij0 z1;^C32&^s+L@UaJig!_Pd%|1zka+}>m)fJKJ{$J;%A@A%FDQP~3o_PgK-bgvDD=%3 zH^r-C#laV7cyumC2n|!=M;ob5u^Yb2-Ah$=HqyAkcQkHb2erDHOl9jXQl~>N@IrVw ze9HTd-bpIhxZIFxHl$N^^Cf7mzmbkSQjaOS_MuYY2#7b(h0+5*h{3 zY#vERypqJMFG@J^Fb6KrOabFm6-M`f4R=`nBpH9H1qvm1;Xus|Y!_-}qBeL#a{f73 zHK>LwhEIWyBL`KBr9k*2kWooq#-ZyX;G|Ozt&S??}Y+%9Ou^Z7K z>k*W_+5#=hX2R9IT%1wjfH8~xFjLtDn5Z=7T7@Fn#}!-*D>=)F7`K7x9rS_p>MoRP z3&pU;BlzZhG?nbAp~iFdsEEu4Ds4QUrrRV?p4ungL9u!~BPKYi#h=8D4GcAi@S;h} zqv+Nj-qaxP9d?T6V{vU0JU3npJEK}i#Ex=k6g~}Sq~oA#Rxix3RfRB#EU@OSfJE5| z7y}I$k?e2!qwYVbZ6drI=?^n5lxU$=)^PBue3 zGcD*=h(!|%hE9I|4yRwfin0FQxb`nuy#C1ww~Y0M2d4UvxIF_*M(aV*xpoYltAwwu z5908#Yjo6QE4-epgx6Ml!jwi)^3ExUDe2zE+~Y}rr2RH3DLI=8w_gDl|17dS(hkC2@0jP}Ea$99-`7w}v0N94}h3Tb|_u)Bc|vuhurYf>FK<*3YI77ncDN@gdJ4K02+ zH~P5Xe0>YmIa~04R~!x-e8G|>Tspb?Ic?uTFD|siwl}@$i_Lj)gwTWOmSgsAiaE`D94DaBx0fhxpSQhUS&SgxRi;+xZE) zmu^JI97U*FR)KQ|!!UcB8IJP1iRYf#WA@Z4lsh&NvKPppLTCa$9NtB8hYE=K#~$zs zi~#nsUgD%$4`Q-+n5FN2kVD=cBs_Nksi!({{QVYqe5{DPi4!N^!%;CO#^q3jtp$Ykn z8M0PbVc{op^p1avITmhsY2tA_G4neWzFdjI!U$!Q-9X5)S+E!tO8V zS{;E})qbd|D~z#Md!Sik3e;*$gTmoQaJ1hI;?jqh6QRAJG5i-yt8XSDa~weT#Y#x) zJPTw~7j)`I;ONzNA+FF8wf#<^ve;8xu)77VOIvVy<4!tuo*$k{yp0kA4CIL%#mNN& z@MCHmG<+F^Zuc@FJ z`3R*$*_c+l7Sj$%;W5idJiXq5E29b=Z#*rf_|rNwF9Vfh%7t+8fQH0dgq z%vYo1G9z(zS1<}|sG^5{D%49oMB%77cxWmQ^{FMW&*CH`@zO|4z9ji_-U|#DpMiS@ zYA~uR1#<4iph&STvh)hkBjPYF^jL^!I*dY>J2AT<5DR}~VbriPRD1&1;qD0Cr5mB% zWi;$AcZbxYvthHn1-#ZzA)S7a;3(?=Q*T@#8#+G2wo&^aQ@9wmE2qE;+zd90dLfE` z3G)1!AVTpqxinP~DlYoN`EVmx9lQxcY^LG1IXf|2AqCm*(jj4@Kim%f3^Nn0$)+pr zjFW0Hxz_)I4BdN$vh8&^PTZH<(=&(rwt!9gGMc!ulQKa;u*@EE5n16_hHPducY?TH^xl(HpjST zqc?;nyapGm9Gp8^2#-3O;y0twbflynogp`p&iJ;TLSQBp59p&yGDAXiK0=1 zEB5Z1jZycNF|x279q&q^h*k@#-fV+Tky@rK;TEXo1&{(sI}&5Jm@K@m!E~R)eXNk+01i3vZ=G{m-%v8zXdu+B4(jXefgdZ%$5YdTIJPDewDJlwiw7VLSv0>+Mf zM&?|wCXw2$Oi$ShGOOtWxl&vXR`-O#Q1LML{`F?Y+Rc_}GH7OwJ-o<$6TF)dFLN?F zK%B|MC3Bct`m#*fx`)IsWh)6fqeR+mpD<5W0WlJu51G!I;8N{`!b`8hu5?8hF?^OZ zo^fa1>qrazpF>AiN7r8x=?Sqzh5j!f zC?L?;U(mhK|DVw3vb_R5y!bplF45E1=NcFr=ok}Y1BS~I`h)*`1n^zmJcB}Y-8}*V z|GWD5wWy5^4F&6(%hl5}`u(nFWcbfDuV={N3h5c?8*{i^eeUmidU}S<t|eOY47Q zu-AVg|JFXgK^f_#Oj=nMLACAEa^zwDoGt%R@a$GoEK9_6g#t=r& zi0j5>jNIIeoQ=skV^**)KhWPffF*bW`Ti^qZ{MImwws41KLFSQMUJj~-#~Z4ubXp_ zXCV8RO4rc8ldylU?8*=H@Ma5idH+hBgFL)h>-pY%f9F8HD|=lS+g~TZ!%Ih?QV_Dd z16d)?o*Vi80gnHw!_zl1;2LSM|5@PA_Y2|&{4V(AYX5VAm$QeUll6iY`V1qm+}qX1 z%Q1j2sH(?u4H9Vc@bTsu|7s)XGRX6ncE{h5(olz^XJDwW&-(S|C{XUpBd-}L|1cnLn^$qknTs_wBY%gc;Up)pmdjD!*^vj^X3j%zC{9X8tzed30 z>KHNl90NnXHphU)`uFj&wY7bM`TimP9)Wy;>=)$04`lN_`N4l1tMV^VMKDeQ5r5CS zJ&ULEzmTB9b`9mJ{LO?w4*Q23rt*sdXBYQh-8s7W@ZH>aD!)mwXQ}+=CBWCm|6e74 z6Q#lqaOXSw3#P)K9}pnO{l%LK+w0d%IC}>1e~*^^dl2@lUwVHz)^D4B2`X&9zfXX` z=wAj3gntahU+^X{=AT69aoAoS-oIvCFyZ#B-&4-^2?`YW&fgU1vt2#h+=6~9`rA5= z4#WO8TG`&d{yr`N0>RD4-^XpaGfFL^3C(NJ4`YLQ)|lL&jvDDr4rE3jglA{T%=2 z{r%qedH%=$cz*Zu9?#u*9QC=@wc5wptbLx}>so7luie+YuX%qL&jrK0J-xhxWd0=~ zYL5RCMItNf|F``|zlF%s!cxXyfy`eJp}`@ZK~0C3`Fnk z{)_V8*4q02T>mYs{-OR`*w{4Xzv%y_{Qn^M9pgXOf17{Qe+x^C7XAM#!pJ~m&~)y-X9NVz@(xx~Qu<>mZ}7kV zYAFOQ`ro4ee+h!j-gD;sx9R^sJ^y7Pva@N?|G!WDxBBP$Z_!f!|C0J| z_mB18s;{NB4YO^T{{8LhzlYzf;OXZ7n*9I&{`{{+)8AQI*jcqa|JySDZ>j%({rJDB z{#!9-Ys*>$;BQ&~eLVhr1SI4y9RJ(e{6qb>va_&m8UOzk5fT>YO$I)50z5;MriF!g zdjteE=>Qol@Cs6zvv9u0^Z>uWAn)MdSpohY)Be0Y*r(-&V2l2@%>P>Ee=YGpRR8CO zdisa_7w7+fsQ*@0|ET{q)^;uW|5t>FEc)8oSzC+6B3nCKOIv1RWnpPUP2DZ|-=hC5 z`v3RTe~T9V{~POnkf;9)@4r(2Ek*yN|DqQC|4XA^{e?p<+0df@E&AW0|CUzb7XAO* z>c4;JoH^6|0)zf*^Z!54e=BQCi+{TQ-?IM4UlVPc(W2fQcA~% ztpcPBlQKfeHBxSoGEK_8QXZD_gp}u{td#PBl+UI7AZ0@{Tep!?T}o{!jil@&rJa-m zq;!|M$rGEW3vKQeKnto|I3e zd?)3PX3DpcQdLSVDGjAGl~Vd_hkQRNhf687AIeXba)y+1rCcOsl$7hFOp-EP%6(E6 zNLec7MJcPKd?e*dDL+a1vzZDCQnuHSk(F`zv)$5aX|=Ter?y(=e=YOBmg~PQ^S{6C z{I4k={)?@k|M~Ubf4cu`*>eB)uZjL+*ZW*WXwF|M)aC<%D10U#I^Tmj9st))p2m*MI+#5E=N*@(&I14sJ>J7X5GWfBpUR z|9`vw!yn)OW7|>@{$~0=)9YWC|Nr6o&!T@?|Iyk~)S~}?MKrJQ+#HN4Ee!DY{W?mO&)|@MdyTD?-5*`^z5jie?H^s!1Lg$(TbD)C zc2L0l|7F{|&wPU*@8Ezr^vAZ6f1lugzu9a_Z2tQ`7E1r-O7r$21DlpQ)uR6``u|_4 z|8}fp{l~wX{s+tn`d1y}KmYy*QOo*||4q@uKxFXG4lpGVS=!kAx%i{Szpc?}XU*)a zZ7i(**z@O)Na;V>-}L%_+iPLXn$D`Nh2@`nEG+H*eD!~@*T8}-n8lxMTPvl1zwy6$ zyVSBoWsCl|=>LC}{YiZfC{^MT~i@N=>0*uG>059)uWWbo2!Ji#X?QQ`fGrfblHFf-PQJ|^g4`aZR zmW*l9{}%oKA3pzQqL%sp-%S5~{)G!b|A+c-(bOsWr|*BTv}?Kk|Chu+_`g~oYo@%^ zC#7(|nTpbXywa~`sz`k|Y6i_zKhVtf1Dn}F>f`Dty`|Ji>UYwLZl<=>7o?NfOg+}j zE*F~FRq8V{c-_oy(t$^JHR)vwsc)&L^t|`nmK$= zGaaSAv=Qf;=_K`UIoCCFl+@?ss?y9c+nVX#x0z$5zPa&I)4~L)zig6J!ly`mSRV1s z^z6~hX;PEFm(+LVeYKf0JexW5V>5lFKE62}o9QR@y9L-bGf?Ua3mPXaBU1lV=)z{s zS8nEllx8lJ`tcSWZ{`xIZ*A%0W-gcdyH?0GGh$OSqq;XUTIv^EY2VCMQeWNbnazxo z`p?$JHgmmhGdJWkbCcB17=O8$2~ywRmiNs}lKSJ4J2W#z>Lc53-OSW75$jSFOxLT3 zuJdBv?Ql=zeJf_yUVo;GG4@dUIg5NZu48pq!`O|}9a%rsee7$B2D{q3kS0v=pr2#T zLP2!~svK(g39XqZ%rr*KKvTM7eUo14B#476tXbq>OFGk0n<^?j5!bpC?w#|+1>**; zn>&K<(Qd;x&zi#5OnAY~mR{uMfx-ATcpLUcWFT;*JQPn%=W3mm@Jdq&Dk%Z%(1&|$ zyKNNP)TTmwe!x8%u)>hVXFsLETYl1HqZK6C5iaiPr%2j%2UyYP9?b3YWtus811)KE zW`jP7*x{|lEUJ|%%dxo1tODn<`Q!VD4|({|h~>Z7inJ}Poy{xiXQ5+vzt1DKO6dcw znEQsj!)Dn|zTH5szt5tVI2O?|Vx*J|w+;w*CW+ZdnS3)Bvy`ZgR$iO`v?`N2Fe~oqf`1M4-wu+?yoALm5-< zIIE10+;fAE+P6_qap=bz+L`g(mzjJ(rXKE`KaR4xe4KhApnuj&@=+UVv(s%kLu2k}&DK$IUk(G-`ymc$NYbudu#Z7X3zK=S^UZI$Y&v2NMVIW!p z+w{Rma@@^{tMDMLy*%xP3rCh37f9B>zz50cS;h7qE2 zEYW7Ggi5o6DMKNS)IDd5U#U!H18g3MYp4DcM{Y}@Wfuye8D35*Ig{z)ZyxEu6Xm9G(|KXsGxQ5@_t~BIx*QFc+IAS3e+c`p^}zs#mlWVr zOrJEvApd(Y?TXz*$2SUOF(!&m?B7RSzb`<-wmT41?xXYgkC>BDfDp66IB-h`0e)wi zGFAqC9M033E-&Ev;xat%cBW0W6;Ru0LFHeQ=|P1V29}Pa9n+F1ds_~T3i88fo`)sX zu?R_(NRCzvl=P326|}7!_)zm5+^AH8TNb78x=F^Wz+Oi$-z!1mb}bp4t}@qQDSlaU6=C6q944Kdq8$Jo?<-D!gLTB=q) z4V$J5fpQFc?j<9vgrgxG#wCivh9SA#&UN6?7(DyRBYi^*ps~<7O>?Hy< z+aM(W3~zr}Q8@7Jwd9M(LtHE@#lCK1xw3;2H@G3@CXNMsjpbwBV{F6x_k+wOwY1XvFb$ZNK_v3Q@FnwM zle-3LCnk#6+P70#ey%S%Jh@NBcPi-VnoVqLv>8(vf57gByRx|Rx^%nr5e?!U!^2ta zLo2prU#K`cRR-lLa#+%D43{;#hAsI0n5o?Ba~@u=^yPua-0(El6!%nbaxIfb__$<0ZPOV@ zGxgM{RDC_h=eu%tZK@=?#zQiBhpa?vgdJidWT~P3FM85B6PI1aA}P+6)1>!2{9_!V zh5@raJ*0|-P=@A&67gd2VA5}`Wkd*s5@F2d(ej1yCi8G#FqEbqfR~@=%6Txj_EC>vz`%D z^34r;mmZ<@gd7}2JHd4jE@lZbr09B*! z(eH}_CfzI$Iwv&>=j3+^H;&$v40sqN*)rc$(%HEItpb118J#CkPPm56T*4#Od-Coo zgYl7Dq=$A*+r3D&Dn7tLn@-A5H8V6%7fl6M^qSRliRCwK&j#PzX`;ahX6yL(A z(NiJ$R!yJZ%%V?Q1$NtIJG*sy0Bd|*FLoSn3fqkxpqWyOE;k-yr>Z-Szp%hL+1DsO z^&Q?P`eDue&X7#3hvw+*bkFQK{kT|)w$(prqjN2Lmz_al@2gX1BY`HjmLaPHP1-$t zI(>g#PRmzcfs1D?ZOCyJiKq8m&0OEVWHAeVirejaVpryFA`bcaf?W#BB)ffA#9y@( z*dYsdyQp5_;^&)tv5RV1)bVRCigfFYo;KdJ&2lUS@7+ez!pv#ofAlj9_AjE0f=?8lAxDX90gZHxBr|NLQRAa1 z*8c*%sj-2qNjh3f`e4bNBW&-leImOT9i!QU;8SeBzbor}uPa3_W$cZ2S5m!KKry0; zwCzGL>1-U&cBGVx-8XsIh5mdij+-`wt#nehGaRsiJ~sfQ z*@bjz#4WT^;EPC(Rf8x>zCbAyIcT;b3#KB!wLULWa)%7flGesLZ>GMWq7(4lm@ zZEr*+9m0jo>wN6${k*5SEAQTT7x%~S!K<5wTt99lx1ZpHRXdz8e@r%l^nRev882wJ z6_eQ2l85vI@($h+q@Zn+`UWBt^dvvJYHAZhBrM zNxV*pR=uELbPuv^+S1vcb79>*7|wUbh?tiCcJb|y_2h8#5Lq7=(f&yhbmPKuN-*tC zC7!CZ$B5IW>h|P#zlwUX0c_u>aIv|?I`JH96Y<=m+r>}Q)me;hk@!HvITm4SMU#d< zr7Ip147eYOBWmAKv;H@_xj#X1)@l?ee8*PzRv4nAgN&BgyfbH&k9;L2b-zRF~%BjA$QMYmDXnZKv`y z?-P8>bT!O3Tn^XS+hAs{hg)qX^N~?SeDc&W+~iwZ9w;2-_DIRqBccD474)LEtxvR`3eqS8M)5Dzk(rr~dc6AY-dTBYgyVM^kgI;4(-W+tcC_&Gh z%h1f&L8B`4s3ACwi4+rbF zGG8-{oo=&-qI92u4!wl(imuT3(Ew8G3;B(2MQokoTk8MRg2p|QrO44kX?M?sFmVt= zD>MY1i$|ahD(LIyNb(#tfhjLlCiho|#CL0Evls7sGNU6`#Oj5HwpU!U#8v}(iBo3G zqC3Y&q1B`@P_r$=noSQ7JZ>)6Qq|-`o(Q{W~Kleyf7g?Qy#&NbxXus+3^ zk2yYrrzl(V{Anbt=%mj*FM6Y6z;T>&%0z+R0j#X1kF|z78eb~B` z-21rE(avvZ%&GmfDn*^1cRxuN^RuuZY&LXml)(06u88zMucBj_AL-!FMf9%Jj*3d& z(S6s$h^QZgNdrfrYpbht=TjTXTk{S>=B=mdGY{$E(zop9hs)xhNu$KMfllHPe7g8O z@4(Uvb7}jFC3L^y6Zq90I5_nf*RXnvn<|CeqMZiszBro?bveqP+<40)Hh1Iqevc4z zjk5&#mj(QN*HV73BIzXb}D=P$Mc0fZ>CTt!Sz~OWiG=I0l-I|TuZihFw4w{VO z7duh^=qAp88i}JPGK4^zY+>yKiEu<+iEoM-PK_3Ou%g#?MAv)qp7(EYJ(C7*a?F`` z3I4!4%pHy@jrTZ?L&&|`2~iO<(RExTrs!?LQdsaW>n`y_!6rCfxf~znPs62r~Ql#Sle;ePiZ_k)vPV-l+`?=8-n zX(;yfe93Ae?Ahz~A`Dw|fu5_r#Bg_4?5VXy>F{jiynn$*FHFV35fAbD#V@XsKNHnH z?%W|_3ZHl>l`ntRM+jVaSty+Ip3jc7LiF!!uJJA#i>I2xzN{1pLr0-LyA5}`yBFsR z`=O2v02yw^k#FI+8Qlt>lZyC-yvLH(rtA6B+Odd8h=QTN0s2HLB3!=?eKxrAw#C!A z?t;m9b>Rq~I_?$D9J!3%(+sg}pCwt@hrs*FIrO#M&r>I^;lr2g!iz(@xVga#+zDgY zY0(*ic_NuCwPqO`@>zDO9=n$>OGc?BRO0oRDmyI0?)3-xpxN4d=T&9YY06{vol49K z$|l9s&-B7035N2o*`sf}XmC|BMb9;&Sx>)#jM^YU2Bb$bwNQK>xj&%I+Gqg`HqB?`EwE5{* zreIaha)#B4qsG>-{Dnm{Bu)(-KFC7jcv+(K~{QPnbl(@E}iHABl0g3o*{T442z!VxEfu%Bo9I*pS85h1h%r-*so-UFJnLP0nv+vp5nQ@WP>4EJ1(LRvma4TU=JwFO@J@$ zLER@*v`w_~ znmila<}Dj@?Gk(O$xb|3B?}I>(x}Ss0_7B5#<%Q8=r?>LRgGPbgC{5BSLSjQdzYiE zof%iW@RVyS?B~;BjD(l^GX=NETpT|;5G9Szpg;O23cuxJq^Uie3LCk|G!@l1@{lsu z9mxkmVYjjxg9q%vYpvOM_0@pubsmW0ud9)$pMiDpKlwqY<9ye?by#4kOSP5RG$dVv ze06g%@a{~yG5jY=hi*l~l>S(Hd@2>?9cC$g;^_C3`N9|*f5Cb96W(6Ej(6;#gOAP! zP;j^om#3z~a9b#3Z>^y{-7DFQnTIG)`P+2SqBOe8kFYLZ9cqx$zDY)Q4yw z_v>o-8K~3dkQGMK6R|qnhb3|6qBeY9W;}0a_kbHeoq)dQg$A@GJKIImc@z>vvFKB z0(W-z;=>b<3E@Tig-gGaptxx{o;!!5-Lbc{`)oW`*mT8|{CceK=!UODH)CmRFRC2d z6-&NcrS~f~;;Nn*UhY1J&ykV1?5Bxq&eh0Vk_WvZalG5k@BDe!b;7_4%eYLg7SzJ) z=*GY+)P8#u-13&9RCyyVGlGmvHFa3Inq*fEL#yT4!i6`P!p_T{SluNT@udqfC1oCh zk`6+JDbui6G3gI;VbkA5((;X&bk;x)jzxRX>#-BQsMQPd_lNLHuPV9PmN@**u|{;p z6d0!shL!$e%GjJrdaqtnz{)9<=UXo~)^ z2>YW3qx@?K_H;Z>l}96?xqlEB$5rr@O{citb#LBoi56FG2drt^6Vabs=~eMh%BfmP ziniC;x%RVZ`?QW^=Vw4RN4AN(YpJ0p8-YwG5i&N$VZ-wi9M5~A(f1J_VNlE`Zp}t~ zU?Y;Fqj+e=bD`McH6OS019cBFK~cX8lv`U5qZOxN>-LSZN3X$4*-z-B(UjV^mqW92 zAyv-aLz!jWv1iRO-pXYQ^5dG`Q`misUNi)QlDBY&i%0n=<1{}1-60|V&TV0;k1Acs z(M7PPBmAG9L%*xzaq#;HvF$~eDu(IWV#S*c}F;7(H}?Z!w}!7()6E| z38%z`pq~Pd|&;V>KtrdYu4`pgKg!>fumo0l#1zDd?Qt$~*gQ=dz!C5dK*O z+f&?V`?ou^{`ev~HChRV?VP zl8=sc;nrUYgs{%v1((h{u|D3Np4D@BJ(x?`{Wrm4!Y^2mHadJ-gu(^=>F43gFn!`r z8@?`}BKtZdnI&M=dO0o=^%${NjzS20h~W()uCH6hH|v%nruG~p>jv_qolk|6eH;0K z;x<^Vt^lj|PvNHA16pfSX}`fBXsi}ktB@_Ub$dAfon z*@><_RO#A{sWj=k5nGe2CeFFLn~GQ5LXP@RtTOY$HKnyeSj;4@Y~_e`a8XWX&>9eN- z`3$LHlF5FgYx@h`tg;|KWGj0t6GO50x6;LZjda%d7Cg45QsgEc z*~x+jzWl%o*P96geh1*Z;EyG>8tAar6&^Vq=uqr@IIgXy!=JVxFwzX&-p!=Tt8(dL zt89$9F%f&pcF|S)QNZ<`EOYjIdVOgkl=r*he(V+AWxXpl_!U6D?iigoClBZG_DIeB zE=-kq$@fL?fc#NI8WVFB72V!Kce@o`R<&cAp8cWWxLDZu?Ytm}t1#&FaP&Bt1GzP$ zV3nZ@m0VkjuR6uHIILuK@k4=ec62FC9?NB(bLI2`L37r6K}X9F3ojd^z-|dv-=2y= z%SW)!mlWw*@-C>JeMUPL6(cg%5{6;xp!#SjUC?u(kVrRnQpb$#SzyUt9ofUWCyo~} z``{C_vDGD7@z@KiDhv6kgHhaY)h{fcZ_G8a{Dt62=KS`IrpeX1?|9Tl4VC7dF(UpZ zG|UEyYyHR3#_@^h(o_caD_27!Mwh~6*U-9qf$YNb2+AFP6FS>#(SD>MGHz)hY0?j_ zao3z1DxTpk_Wr`0Ukq^%mC$E`K2(g)L8EXjw#HATx($6`RWz4!2i<^m-bo6!EG6r9 z*|5D^1Lrn-AUiOT+AK++kjCDKbSpr#)eqiH?-Wkur_<$tCx|}v4Jr#_p}8-du1lsM zqNWudoaiX@^?4=4w=NS-DtJp;T^%V@_{Q^c&)4*;jf6idkP`;SZQxzx)nNZ91G~e| z!sB@vTxvVf@tvh~;`b`js0PK{Vss|t9(vV|fa6hRUNF~Dm@#@F_qVIY`M`-tDIAVf zduL&O_xE(l_7>&;2&L@4=5%G~dZ-0|rgetlZ0?f56gl@jdjGf!>uYv6v?m-l4orbl z2L}A@l8Le!S}rZai-zeCygEdf81X zA991n+k6&3e`!W4n~i8!;b6>Onu5A9Z>TVID@}KGrxMFb$`9O0@8W0EkCBrQHM=9$ zT7N`d)=X5y4iQGK9w4+m?hA|FCNPa0fKE1z=-lNURqWkM8;|~?yibd%*A6jc6>hTk zdahJ6@hE!N|A4dM3S2AP&txXG5?>4&gN|EMG4uO%9jOn)VK#*f7KG5uKh-c zk_TPiy$K74_v2BM!-bFAb0iDoyoI;(K1!}B_mqs6oh;ml|0+zCwHNw6u*b=}p7ioj z9JKGv`_SKd2FwrY}D!f?u#w5ENjhE)2i6b^%2d4RpFAPBvLevaNe*CK-V zG@8auU+lo?cjk!D*-Mon7umY2=bMJcJ84>D80E`OL))ic5uWUay;0SC+O>MT9g@$r z%Y68-J9n`vE<$9xDU{KMna?S$kt1U5Tm)2ezU@vbFBM9JE!lGgQ(l9Mfwpwx;|Kbd zRZHvbwJCS(Q|j`;SA3&mU)JN34!dBRi8Bcwxy%a>?sakq_D0vCSI=}PRLns8lDl)GZv>*M{43(C(B&4V0@|8;$@asZr z&fb7jvWcqp)zQoTY4|y{PVoGBOIR^VTaZb5%6sMy!r6n)$or;6kJmqt-V&isiCv`E!R9E z^jA)y^GfkBTy=q7dtRZ_8iUDat(f{P7{p@6WYP-923met0+q!R;WHqf$GeW=_L9rI z-=h0m`;$2ubz`use;~5?9eQ&lL_}+UWzklZtLU$j0b{+>2-Y|VwJ+t8wnmGEYF^2$ z9_>Jc**N684aVecve;zdg!y?Adh4{4W*_P%zMXr4rL1|vdOmwh8ADsqFT0BvKja-Q zEp*{Y^`<;c<_k~x`Hg36{l?F|4d6>`9%IA#5*R9#W6iBRc4xC6QyjjKSszVdPP02u z?}YKx!*DE(|F(rvX7{7Q%r}_6Y9os6LZBL1gp@hMVYc}jG9_Ku`-z;YL#?22*bJ+l zd=`A1W=lNBS4+~(%O%qW&B0uZM?>Q!D~*TOs=7Nvy?sBz?aCrza{RHaj|%Zd9Cu@*^>HM%2K1Mj73VS|gEv zlp-{yF68!2b$ri&aM(Gv#twNIET1b&RrV3|Xn`gZTHxH?RQsv>ZvTXtGh$D zZnr|~8ec>Ybb@)+M|8NDNb8(K>1@|4^r7-BA|JKGio8hV=-I&a<#W1}Wkf|~y5Qvp zp>%W-luHSM&FkF<8@GTa<(fVzeY+_K$Q!DQGZp}(T85MHrMcqW@FyxeFn z6le_=5*8#1uhNSp-QFfjW{V$677b68460}^q&YYVZ8r=wtH(VtE~ z7-PG8@qMvOy_48F{XMJZok@SB9}CKHXA2#&S>5Jqu+KY$hy$kBGUW=|4-A8LNG`1z z;|1L__sB9phL%05rIjlVQh9bV&FeXrI^Q|M>_gwN3MFkSO#BVGd&NjM=!ozI?ugny zoxQ7l3#BRcD36}Td+VQvX_gLZWhY^9*9*v1k3x@~mqqN@WTHarH*iSM!k&R*Ow^4; z?BD|7Ua*g_=kgcC6xhH=O&9B5$YNaAOoX_rf?v4-lWI$H+LX+GPt&zio4bg~t=_;= zKAKQ%;x8C39Y9;#bGobU2F<$@>4D{0I^zg*)3?NUxWVbE3j+69bKO8iK4X0ae`~v0 z=$W1@Y^_=;K^w*Y@K=yCKU2b>I2Iy|%NO zPR1LFTD7Z0t;06KXW2BqXvHbMs6da)Rc__ZA$q*?<|SMqaw1o^2BK`P)0V_iAl6Pe7R9{f+kKJ^m$6i(@a%IQYe`Z7U!o+3n`b>4C zHk+Yl%L=-7WwKv`*cM-Pc4_+pc4$~8$rgTQ$CW3tV-^os<&}+8b#oPZ<%#HnM1d>l zE#<0%Qt4*;D7N0Ej#gBPFv4OobSpIQ;jlUOKG4CWt~apiODr-+9TAcE_Du2E-d5<8 z;f$q9FHv-`k++v`Bb1d?@&~I$e5v&abV{8MbJK^|HE;@&1RYE~vjaM(`_rN8a_rl1 zNAc?0BgHa%OR3AJQgMP+1LbTtr`_M*!#AN4n$P^HcG*>`h#gPjo{MR%g9H6qT0naq zcr}g3i@4e@U;e@JqR@L%Yr)Qcln|-iLr6N8B4iZY6%M$J680G;2xp4ag&-lGr?@I} z{qtGEP=|COFwKEa{(OV?XkWu4x)t!%Uq0}$VmZG2!vpS;RL%S6cSkAjjoWjaky(Bm zW5#{L=ASdEQ6-pK_U;xE0KM@Brk z{F;N-)9yjDZza}S1we160@}_$h{bh3U|`ZTe{oNyhv_>p!Q>3o`+lI(_2Dp@yc}~w zOp&PS&x2|;QS;t~0v1kVi5k~w^o~Kaa+QQ~sw(jE^=nitvc{!H)mW)@2BW%5nufhY zylB`acS`AD4|~%foQm8mQQ5B|(YD^rjgB~T#kpxP@veti&HzO2JO{^mN0_PT!Dpid zySe)llhKM6j}QMKPBT3$PD<1fZ*{mt)~7A$)}z;~GE)Z^x7cIg@^ZRTvy*Jzdx=@C z4EyEYl{%EoBKMd8bj^8%hALUOACtw~-jUdlpM~>ZCgRlub?(&b8+Y;A%R9Ue!HRq9 zxoM69cQca{79}_e^X_lt%4de+*+c`>23_ZaPH}v8G~%dGK)_Q}mc|ZduFX@Us`k8cQni}0UI!>SO zpG2%*5|(v0=IUA#;j%_dr(HqTwZW{jq8!wcFVVH9izwygP;RQ0gzqOxuy*7E%2BNo zk&%}IMXd;e+`({o$rN(U)tQp+4a&j`-_^YL=6Ehs*Q5n<1nHME~tGgm=;`d&x&bk}w&n(hJh^Y!q{T?j*;OnT5@3hSnF z)h0GUY!I6$?tlC?#ks7YoAKk2Qnm@&mwF)l$y$tGybPz+@-RN5BOi3m3X5O9?J}Nl;DKQDQIT7xmhmaCMSOkAGj4cQgYWe%6*`S_6LKb=6dwN$ zqrp`}pjw=cjz24??0#!RPkMn3sYBqZvj}B;0lszmg>B|zuyX7>s5|$A?wwEU*N=HH zEHGg!9HSr`V}dy6LkPD^r=0K!^bL8WtKW_7i&mz*TW`sB`vBVAEf!YohT%}oJgTd0 zAk}~YB3iQlHSOM>L&bZCVYyl@p6y#G(fIjH@G&Xlz9&}jj$h{irqR6Z?$)R>3_;dG zCrsbI9A?jMQlNGxHvL5iJCyjGT`e8W+O1I}tHlo}F3O57g{QzHZ5qOUJ_1Gn-Azwm zg;E8&`Cq5)&Npe7l?U@5^FzEhB8F1z9LZ=wBjw>46|`PW4{v@!mz(NHHgE>cb%S%E zfV2@-$aV1HhF605&X}Y8P|gY*JX}d%yLN#7xk>0j&!M+y5xV!Rg2ThNh~xV(GnQfF z%Ew5$IR+Qs8SoiaBZTnkJVCMJV|;n}mOE}9h=8dX*B=)ZRNf;REq2{ig@L5C>JLB0rOIghK&NjyD)dz4mxk)<$PQ$TB1(wZD zz|8))sCH;)%D6s@eNOJoW-ciaPfxqYhL4V?9m-c=_-Yn}8`&6F26}U2K0J{|M~*eX zxWR>+tQ<~tcg8^bb8kvrDW=`UT}X3JF8gd^&2AMj@vDicOtxu;dmI^5*g+PZvq`329!=;i< zvQH#ofrBY)(RC(zw?O=^WHCh^+lf)@r@$tq2CJhhFmbsdt_TGf>DkPsivm477k;1CqMD0!4l@Sf>`;+Z7usVs=e(FOWlEow$9Ys2W zLa4g>74CFiC=$o%RXqj%LH- zl^%r1nRsdWkei6lK}Gc>bVo0Rrs7)~l(wJrCoQJVhuc&45ARvbHh1yrU1eg+s^M&{ z(Pvs@Zh$F!>*1w12Q?orbNzOkc`tP*P8U-7;H}wEt~R52YG-J5qli)io{{PNH_+aB z8q0HxQNLy^*UHQ1>$E=#dxE+OuKV`$Hii=HIX;4`1TMm=S8uUw@GCxb=4F2DQ7j*7 zWR1c(jS{m{8ba9s4?d*KjD=cG~PhZFBc(SKY$%itR(e=4r0|6B5}I!N17d&OHVh>#LDU$ zh;PV1(YT>l@x`CFRosub_dod7tG-{Hb{I#%4CqC1`= zW$zHNe$HF*x2I3o>5R^F=zI>n-7p8M58uPf?r-tw(PXSj-ov~9%%+0%qp4!CDipq5 zCmq*Z>U;VlEasfRmF;o7r%NzD`Y~IG?S4Zro^Tn@TYchv#-wsxi+RXj?tFYL#f2w!2y|UmW6&|>Y7@6;gGb-Z- z1J3ZkbNO6p+cB^vJ-F9C53&wx_{?8oe*X7TD&2mB<|uZg@xRk(-MchWSk#OCG<`)X zCGs?@Se;f(v}WgQ_1Tj){%qH#5$wQ4e|GrfJQ0;%*M(eF6b;^HCe-xG5GwZ8aLt#d zob;-=_WUEzauFe>)D;${7qGJY7E=2qz)?+)w(pxlgGUTu(J#fUQ1&95HFz4+H5F53 zRR|3lKL}Gg5O(><;KX-Rd}tEhEmsndQa+leb$!h9$9}?6{v4X7Ly>c{64T|D)0=I+ zRIAa4wyZtNt}mF+G-r+x8{U2-j=yA1^KI6OTep6Xegi_`KK?n(5-)K@qhVN4=#DN9 z5_l?}pk3Fe(wPZqbjr*Z2aFf;;pU-e1A5MQ1d<$5(Xwy%B{UUQ0`E{i4Lmbc!8n z#6Da(#4J`XrSJ9cNPpBXTJQIa)NYJp-@KwpxuZ7e>AH*P>7*fa`Uj`oWjlp?T4_S& zz!6+&UM62;=Ec<#Tv6OKQb>G%6hCV^aoKB!x%{?PRJz#};<>-6@kup}yZ@D)zfi=c zT6SPru{pHuNi3b8r3mrNNSK)1rK%kZkW$T&uzUk%be_Vm_v+6JGN)ri>Q1CsQ92Q8))=Pd_r`D3GKJDuF=criNPwW8rKGq_M5RP zbUn0Qu7rJ>8%Ccy2yWRMv)UemIA0fvPgd}DhwFLp`Oe%sq8Bfm?=N&mcVuoiN#nY4L&L+iF@rmhOE97e9-)*{Qa|&LYMZ=Tr+$$4B|wz)2flKK9HeA z|4_*LKBV4DU(&#_oLtu>Q`A&9s*$gw`TH)iC*;X?6fUFmJ{@S}fl3j5InSW#a|K-l zJt5NItI+P$b51HVxOh=E_b>d4>@J(IY}+zyoIe=Xm?LKN979j+BVp66lo~3#knEWc z?5J!4Yv`iK9MqiXu3ZhxHy=b{P$e4f=y0|1d$1)s8o5`z@XC21&c5>E_g+op`jKJW zaQ_(IUTzmo`j4UC9bSRuOsBdBHk90b0JI#{sN=4+;#EJU*)0`s6DOWo#$G%rgrZ6i z>#^!S6xa2nLm6FZqgppQUH=9A(Jq8P>;%(KN~rIDlp7^n;^Msbyl1OCzGRpO*B>$% zIeRbTOXgfOm|W)xuZHoivs0jDmVs6-3A|TY9q*Afm6u;=jn@@D@UCkgzBMvT;$QVh z(!MvRR{Iu;H{FvHkDDFFv;(S9X>)-`xNN|=ep-T2?l2*0{A|9lss#P}42R>uSun`8 zXKo@Dx>f_a-tGn|d^wCMN=w+*ks0(z_YTZM-$H(51MO7}6R*0L zqosV8+Y&A|nZqqzSHad%fMp2B(r-N*``?upM6~>d04a>5pr(V$r){Jhn}1 z&+iXD#5X6VW5Z%^YNfG;4Z341PMi@+J)&*7)|_fVzH*Tu?wQT^n{?$0!wgZstp;PW zJ)o&x1H-%f;MOYzHa~x0Rfk9{8uSg*SKP*yB?qwaK_*g855_$2MhyP?gPygU#jcgK z7ICK)dnN6HbtOUCTHOAq482wxfVeeoxEv_MO`7U){hLC(e%cXbH4pIYs{$?_9fxqU zS4{`gq@=aBcGntf*{|WwWIXFR`}x+0P1H@M9nZVL>cBqiOM8M1h2PQ7R|kvdt-$h~ zw{X5boZD}(6|{6xd8dGxyp{1`q&l5NVEs1CG@pZwvOj=h1JLp9Af(5IA*w1BomL+p zKKU|*k}@58=T8e}o}*ds`ibXWm`DrXccso9yOUfpgL02t%q3?O&(6WZp2^T&-xgV6 zGx2$TS4?h8nJ%1G+?Y)}ExaIIp z3GHAv)PT<1@WAx&+X%?)iw|2Sd%=Y;$e;6i27 z9ATKHNGSi|Ac8rhXqdgvpnZ5At%0XOO*q3W3RN&mJ3Ao%V2)(Z9 z(Y*ePDKi?h>zE83EODaFMGskY+FP2w-hkqC&k-{yCEcm7>HYArkl*YH&5u3MO0gQ- zdUVFA|A(h9amVtDx>k}RLm`=!NQsQkeV@JeLlU73X;5jFp^22{!5EbxB`L`~OQnPq zDvc5vB`Hx!6KN#!d4KQqet*GzoxS#2d#&p__dXU5=(0u@or_9v&-*OW-~58C8kET{ zazDN-=ppY^Mj}VPpr*+rm{6ULQ#*VyC}<{J(piH`j%%Xdd<{BTw_T`9-NHR>HtbaT z4F2Hwt^C&OBJ5ee1{6o8kPS(fT+1U*@pAS*qYG<%jVvPr3ciR&Oal* zW#t}rv$q;%4?PGuolT(eaX0wJ%*N3N=b*WEARamHgf|XrVnF6P9Ir74g8)T9y1(vd z;KlnNG3e1glIT~YQ(BCogFQ*KTpnGs5>PeyB_4SfOUzUo-!!{on!+NK%9ur#en!IC z=~i^aLJGp#kMqAgta;rBwQQQyf3K|Zr75j$v?scs_GvWX)m%pmjx|SZozXb+W<0v`?r7n655lB&vd3TMGP!VK z`5qsc&MuMoybN>&#I(QQHXa>N>NsFL9aj+;%9!Hg1VE+O$^m*Ee>Y=9~ zBPknwbwkkZ;1wF~_88xO>>zjbH8fjp0x6IV?(fpWilBTFRV}AY%$eq>sgeAUbF{$f zCY5f|7jDYV5YEwP1J2QeFL<|#f0N$KWLB+WKfi1gzGyWO-f_yofTc@t{l$aeCOaRm z_{!pQvlx6EunAL61>nIP2eiC13Z1`a;`{9~G~%H?{ybwr9-?AcG^H3)LNg69{n<*| zGeVtWqm@a`B7&y5M3ABR6;d*LDz^)o~r)j-{iK^T{*gvC$qk*7!itr?<)HBP_qy!rxi@V+jDrXHbI_7d6{sDjRG z8P>-s)3FI1!sJ;!!VTMhk=nNy7}ma;`My)Lt4chh&Y`B zjbj@iFewwJ=O19zQ<`A-!%xg$M=?Jsb~`&^+z64GIuQGG4;&Jd@qaWYLi{J5wf|ZU zIz{ymJ>?STp6>vLPy6A@rsXgY@f;uORM4nZ3-CwOL{g1W!|;v<6g^l*+9_tVIWCPP zXWHPwmjQ5yoUKqC1BVXCV_AfwP;YA}#t*B3 zd=9Z#H!yS^D-iFQkn^UmQ>S55e---R9w|V$IFun!%CJW~E9>%s0RYSfnHb%BWG-m94^& zD)-3Y?iE@+Cm6?b6)m1?E?dGJuav}Nu@ge=+wWR5BoMihq;90f5m_7G5?rihNGMfO*-1ZCF z*QcV+p;zGLMl2-!H@o`xH;e8#%jXI>2rh7j%JA9n+PnnH3&!9Ik-?8d>0$oU-MBui z3=jST{Ci0O?{{?2@Ri$z*L)I%i{a$C z*6wx&I!uJ$MVSg~JGZ>4$8DYhddVGE5sPMFLuTXtVC^!yy@f{`G*o}j$K=`Ks%ImzT zwNhPZR$+~^Hk<${i5(!aAdDq{Z-?&1x!5@M3?@w1f^T<}aSD8eC!-EPgydy})}bVp z@(4l#x_I7nf*}@tJ|Wz8-;jdkjVbkA8imewre*7D$uUa~|M(Bbhs$#?-KG%_NQ9vH zH$Sw9J&rO%-@_3Pan=;+4DI$mKGHUQD6;lb%xAeNj3w zVjn&`x0gB>qzQ-gJfiozgJ|t`WqLQMgR+(v2(RQEq9hxHJ>AF@x3%%vQu&~^@DzL4 zH-$<+f2P~&25{_^F3dDeWNYJpfV=Zoa6M~)>+_#uO^*}gZyFEpH?82KK8!)7W-}<< zvYGbldyowmf_fpJ4bgXj6YXCrMV@yn}%YkjBNox^VuE z3z+{v5zXsrRW^7~Jq*w@o&Za4)#G~I=) zZ!_Udi4=IO_Jzwmb*QwV8)>^ge2HF+G8S6cxp6KnW<=$^I#e~!iIVzbs8w{hP^7De z?$iLW-U2#)=OVp%n@wvBOi5R4B^{U~Pqy)?RMzxaXdS}|mok5*W9-j|MrgB=n07cS z?}$x{m(YWk^N}R`A^H7ows-tnn6J7Q6wO*t`*96kEH8usvo1JmUkCCAsW>_?8;ZJp zY4LV(q1iYe67Hxn#59RGG&(X5!z486%-<4?E_&oJuC8`S7F zLl_Z)8>cm+%Gf1vc%e8Xj#GmEM1t>G9Z+g^5Ebiwql{4p#;y2;GaXyeV0|dOQjtQ@ zdkJX&@Gp+P%%QZ~R-E)Z9b-3$)A2tPTUq8XQlQ~1nRWHe-RL|y7xoR%zPaBtpc@< zgu=Cfn^5~jiRJGc3jr(pVZEvzxUW)y&gc8^it0q%T`G$1I<45nCehRoWo*0CL-vI# z#0NKG<1Z&nj?SUQeOC#j#87U1KJGtcg7(9DNNM;E^PykInvZPFhIqRqvp)__U@=ew z842kSH)I<9Dzl@Qv6Dgl<#kpw(*~?e0^nYc2y)jy;MGl8SdyCoZjX3AU(ygKO$H3? zCyYJ)hw9B{k^AAzhAcZ{5i9&X1!!Lc=>*8qIm-@8-IPfdPi?UK)G9olZi^SEPDe$N zL_9gE88x3BgsahA&>yIWrurkGc+@47k~j%HZR$`Y`WDK+4MSnu3at97j{9|L(X2=u zB_{sDO<%HbVWJ`GyzqdQuSsZCJ~QQnm?8p;FW`c z>3N8v#_ZYX6I@Fq!5G`)u;KM*H2$g!QOU0`(P%fWZf(VTe?Q}c#q}iJv6A-7E7Dn4 zWhxA>r%dq!Bywvhm4+nJ%Pdy&Of-& z%s)Hq01Kk?>DEVg8uLmB6=}0szNHnru-g!x1uDRi#_M=}TP%L5_d%tr@lgNj5*oct z$7s{x_}P6Urq#bBrJH?*{HsJ6z9n=dsLQ0%VL1_*C{)Reu<30{fUA2YxxDI8c^x$7nKAx^$fD45t*gpRi z=CAO^)2Du8*&JuA-JpU=>Y6BpfoSZfiD8pA;ay!zVXr z{||OOipTUxUOJ!%`4axO*A|)1mP8>poySvevAB)PB zWq5lem#bK_kxuIt9_o3e(N$l;YZPlB~esNyGU6ko2DHP#bX|m zX`HSBs+>6r)hTOG;d}#1IL?E=GUK3K(-(|H6+wD@4$LShLgT7a=yrP}-f(_}g~pd@ zS&9Q`+1$cUQO$U8=W8qg7|m}zL6!UQLW_*s=Au;+*aXM$%hi0m zVtWnsJO{0}h9*9EqK9vey~5Us`gq;bk%n>wG+DC)o$HU{wJLioT5%5#Cgecp$vZe* z?kP5GSw@_)2=4yr#9TXMAwQ)6#jon4{Ml8QpeTwDoRXpER|7j93y28l&)_%QEttW(B`%|CKpIMnM0-EW+LXZK9SyJIVGiE1*YWoFR$SCY7K zANsTh#M)6n!x z^7Q^q9%c{d$RRt7c2mN#WxHseoDUfc7WNcrLt?NcJp1wuXZ1CZO-8V}mg6@p8LB{P zRzFEwqYVdK@-XFbCSKG`B{9KGY+#7Z7Gr5-=Qe!REZd67tIr8XJ(ghubHi(8h;l!dcoZxmC$L>qPxo)cH<(H4z360RN?2OAK?$U_b z7K|uALr&r)(&LyRzuQ}a`>L#o$~Vo)DN&cCb8b#wqXm+gv8so;H8n&abavEfRI|`cTmZ0{9*HAs#9v&Z2Len`*Nb^M$ zEink8t;2-Wbz&7AuWZHdN2;mxf)wSc`QkuY0P?fKz`tZ7n|bGh80-9ej>5rTj+hw1I0gm z$KsP)NN#ifV1D2*GFu(F?K9wp#CsT+qzE-nKB7V31LSq|*pSPwz%IfEf^z$D#SJ^0 zx1|tccSqw0*hwzMYBcR{IR;G*#W^=d;l~X($l1;Z>wd1pDa)F1ajHH}YAnQYgGM4* z>ltPrZxVL43x%tnZAYaS+8EktgCmr#!pQMDFt_eA|0m}ji**nKT|ZT_Kbj~sRr*JM zKAqgdL|`f>Hh`}5aTtE}I9%;L2XDr0Gvq99ZQ;#J`q;(DYdHJoCOmNM5UojaAj$i8 z(fiFu4E=ls51OT-+L0bKRqMuElW*bIrQ!(VPr~k(a&SG9$D`Xd;M4TmI4W=tUb64P z;Q1a{b|Q(M6?2^>=P4c6NE zL2=0_q?M1L-EBR7UpGLTCx(#sdKV0->&MFZTZ9LuUK4tbWJ0N#29zzUN6WLn)4Ms= zLh(=QgtB?wly>Yi_NjT`u5KH&&|8Jw*48wmb{ZW%t|Sx<7-Vqid5H3}W5YidagS{J z_~eHs%qP#4g<6%d8lyIZVKRDF=1Ad*2N8jre`1a>3G95V*z0R4U(!-;;`R@pfu=T?_^&Ob^ z@F1SPrhxZi23^DETa^6IS*W^vmT-2$P5d`x3&p3dr?l>Hj228LDYpxdWsuCg`scGB z_DQrO%Fuj5LNeXFc$Y-;wMkK5l^hm((sU7B8u{9TX6u#GmW@?Z;q;L9dlG)A-AbEe z%gB39DZ0FzjVb2^*s(L0yrZirYDyvLl$=8Do<4Ymo(2i_g4(b3in z1y7w|YVrhFvhy}PjR}NK^>p&G+(&;+?1T!FlqhWFU6KzxhmSqtX@(|;%|1?8`feF% zxqqPvaT0ic{T3{Ic^sXGo`fVNA2b#T!Syu*_~GVd6x-29Rh8L7rTouioxO+3cih4@ ziSPWqA~}9muOX9Mn+6ly%R&A_KRKJ&3Wv&1g`4Luf>vp#p>gi4C1$4*5(OI`;Uq~G><}_Tv8jtj>fv3&0F=28)8Xi$% zC#_$wai;sA;!2zO$cEvqRu(=!7(fTQO3B9UB^4F?qT`}b}bS#`!c+_?#LlkCUj5EE?VYhSe5>+ImkX%X1JY7hQAG=(;vyF|g)+JsZ@6br-q9teHcC{a_(YbxYy;jMceRIX~r ziT<}?{b0~Lk!1*pg~||lUJ@7FxQQtRLvUVSCXBfB5T)3v{aATf4u?O8LCxb{5FIJN4IcuqQ_qw<$J^txJ?_Yz5aMFf>*(TO z3*EmeNXk=!Z0wI?vvd+3$_gX-V*w=YtcAA+dLeW9T*fbc#AFY;utT;VS?!{6n54TD z#XF|3(SM#Ys&fa255`n<^t-vV+67_NvUzyz_c2`lJ%RRTd?LZNXC&G(gNnDOQS~$t z8nb^JUhQb7@NJK=Vf10#S{{gLx7;va+nti%q|ono3rS`DNHjO{gx1eqSoCBR6xgqY z3u!%kk>^ULH$|1j2rHmcDg{NWr69I_DCCP*<6c=entd#eM!hq_Nj0mn^@%)K-AaMQ zKR>}ad1rVH=iu3pMAlQ51#66Wlw5KQ^#|(_l>ZY>C*FtIVue7?Tllr*yI6X9Gb_0G zjUCN;!xpSrPpM<_gb^zlKKArump@*E!wZ_A`H(CY`uelayJj)Fs*}8`p4#%M@N*|by5&=_j z-l>(pbUK?Wr%dXwfVA8cDuLxTN%IJf;Br)BNVi>m#%^x4$Irw}WWUQkh} zC~BS*hi#w6@VECLfy@MHxYDmCToaIU*L+4e#X~lW|{K}IcH98*l3ropZZ3SmpzW}T;KJ- z3@M5E$)mqJ=Nc!4b1c3JC7hbE`ov6}uv!GQxyv}$zX_inm`34WPLgX-0?L`?;?}@s zI2HCDBL-Oz)#`@lS6nBJbuOeA_=t@8L|pwUoUMOQ&#y?I#ko8_`hP3V&1`c<2lqQs_@%lC3zt;khy7p4%h(29snoD%Lz7r{ zw;2Svo1(=-4b%`F1y*5++_K zA);AnT-}1bf-C$w4En51x}8&T`rGX|ta||0{CkEwr|lw>kX+%2iRpB_WiIBuKY(i< zRHOXds}Qp89F5!2gk>$O@bip(5}mrAtSPt%cBARDJ0S|Z#7y}H4Lv7 zhhyWK4J57+OlOaUkofIixNq$;+_TdNm98I!pTF*tk%A|_y^(~&Zal&XzQ6Er%`&u+ zU5k@-_G6SCL(5`!_-Pyifq@>-?rH(g4bG$Kvdb8MG7X=<+KAz58}aDn1YBIN03*Yn zz*?!dFt2DPoD6EgUDuvKvQjQQTq!`+_#oJ``8|w!dX>$Zv6ELFA7|VY+GL@gV zEeC9TnqmEwSs<~eAI05G88>$_t=x<$wh%oz6{-uqK+(yQlvC+yE%PmFgf=n28WGAo7W7s+Bd+byN^)u#zuIlREQRHGoULll+}zn0fuTxY>vQ-yJcU` zzpvd3p>kpTxR0yg+rMB)-MSpo*fzF8gJ&Zxzwn)_9r)++7R;St7ioqCHBaNKr(D8}dnkd*VDtkTm}U$ZNE1T?zPkE3 zE=g0S4l60>OcaBef+U#XSA$%XI0~Ogz_VW?P_lKSxk*Hca8eAC(;ZnlczO$Aj2M3X znnl~vhtLf#ap9=-l|)I4F=xIbCX88x=gm84)|gpBIk6iQwwYmEx)#ZbNn$*m!P64v zsQpF*?YE4Cnui6jB4`-S`K*k#wJ&J2<2dY1-h?U_Ct=p65`5d}ftJtW$>iq~%KHG6 ztXPF?2H^O(=jc3sJqC!q#-nb*BpED4CJhDHUZREf9dASRyOml8ztgD2!~+f3UOXG?^Kc|V?>-Xod_`uz z5xtJxXI9Z8ap`&?4!imtTi)AZQ`c}(tNcet$F`!9{S^$`&;oDx&uCvVhhnsDP}9L3 z^i;Z%wtu)sEz;Yl=I$Lr%>^`Td;-}WYod_#S7|aQ#N)l@aAag28<3CXBX4DMd&Vb% z3?wr}iQ`bV_dHmw{Q~8|Bk1U%Ih1JC!q%TK;%~GMut%phf?lW&X<5axNmX};iYV9) zLSblH(0I-?H}HWVvud#*e4`1k5Fii?H?=k!Xd7Zyg3GyoN}qVOMFu>3=f`C(k7HY| zDC4R_pUEaF1?z@};ofuSAuW6cf6s1$S=$v!v-{<5&8k$ko0(f4Hodp^<^Pwcy{>*{ z($3RCU%UxpUliiROMUF-o;eJp+hBgqFx0wkh3877pzHKWa`fbSGPU}@YnTz@+StIyk_scSj3JYCA7G^asq z?FSs?tbiWIyGSOemd3wzprGWFv}2hiSye2?l5u~~VDx-^ls**C6t5A=@4P^N4tznI z&UGxoD3ve0D#O#)2DXGZV{MtfEEGlp1cbwsL4Dc7ms9k14X*FQ9sX5R4eMw!1jlEL z9T;e2W82mn3KoVT%gT4?(T%MTv+peZ?Bm7v`#mh`}?WD;exoJd!MxN zt2>(nq5(SvX(J1m`bR`d*O@4Kv=%KhF0h#`LN+_s0Hogq!{)7@@yzFi7&$mdZ{Ayp z{=bvVhi_aal-RNmn^N;I>diU))g(?MRDx;kEyT#CA2?2a2-5m0G>}Zk7Tq;?CG?Ka zQsE_R!=UWb|ez93ypa%)V0aQWxj@Z{I(&USSOFlwJ}U)Wd@U= zwX7gng`YFcl8@VX2$h@6(d@7{hBriFpx#pq`*sKuJj$_A>np}COu*z7Td-mO04*xM zYi`(|FO2&efft&dvrTgz@K06dvXNKJnY7JXC=Uk+-hBw7FAjyB!-cSA_D8nAznDwT z3}=(t{_ySbovffgf6(o8 zqLkN8DiXZwJIzI?baVGRM+v;<<#Eq-uJh|1rg0Z-qWM)GiM&}-8Yex-4%s2wIcDI_ z-Mg}pi-`5&=H2)qIP=Zf)U4_+TK_r?*pmSrC-yPjhmx#t!%Nn9RFQQ%zl1rDhJl@O zDehA`ja!C!;}t(y5}E%&ShlxWSTJr54(R#d`BDQiH|e1rl`nCGlqbs6`@`i;f$(mO z2K0Bg<9hD|Y$#>)&QY317VRW{K^w;VIFjtX`=n#gkC{KkQQ?^j25#{|D zhMA~t5x3;WG@dmjaaAk7^WJ7YyiIa5mo;+(o2;D;F4OdBlX4$?**%OUgk0d?i-p5u z)r;)w5H%33)PdcNGoUWR1tlWnpnU2P3>&0R!Rvl=v4=}B{Bt$wWT#NA$3Of#P6DGG z+A;W-37;?}3!=|-z`J8xapUDxc(vD*N(=Q#d9o44`B!6(g*ZmOn}+QsA3?0g5H)n1 zaO`*|xMZczECfC5d44538=D7Sy``vA`T~O*DwyA{V)lG_Ih5@Uks+mPC7|j-*17;fO4>B?e_!@3f=(CA~fCQ^?=Z{|E zL~1!+e#vI;c<~uQrCSVVZ0pQx?Yzy8x&4VdAS=n|xhL_Xa=-FAw2qIfs^ku)ui$EJ zns^H{7jCZ8e^2+AJyG@N#XC>(!FT<+2X?!;6umHBH2fp}J6}sSDdAAOq?)NqZe@3~ z5wh)Gqoy0cr$&A79n}Fj)B7PjD;|ah9fx4&Jt(u`knr%vk-{eip?Es>70s>uAk?)^ zg?LY8)GB@pKg5Wgw9mt>O^=~<-AcS#ei*Zw4CqPKGn)Uv9e0e^K_~G!cq=v>ONx|n z$F~xQuJ!_xsS_cpX(XVjD6G3Q3~)#?tkgHewOOk0woe6|99sDuFRYPoFGXp|DLA%$ zHk3{?K=U)7@nGU5Ebrfjxxx0R8U7L?3$MVRxMOf(j0Jo5crx7B+=gn+gLe7KJU$}Y zl0Rl!&1zn$u>7yxkb31lM6pZ^kz9?d-o588SM{-(kB;&Vo7RGC>@`p^%Vd$&6AaCa zlvi`1HwL)8HJZG>QVzd-@_mz@i+22MBWZref^S^mt{$%Xb18Rx(+Mtk-F(5P03ZI6 z#Q?7tkj$S=y2{JuR&wVTzBiir#K_c1e>WGZ=ELpYmceP1%@njwbYsy@)4+}|ri4vb zp=17KmgABN(WBJxfkzQub7_Jb$vfc1R71qN0Th=ng`zeK7PrA3hTnG(Djm=f)~s4e zE=exx%pD%(7JzL+Dl!00 z28yuLM@pghNjFs9cE%~uno##u4jyj{LHm$(aP8wHh?*tO`hDVX$iqME`h`HS>=J>_ zjz9F=dl%_nwc^(Y81iz{j)307GY}&u&2|Mog^zKexT)Tjq!WG!L{K{-vQ&*Ma*IA$CbuQKL8CO!drjKp>$tUW3#4Qo-{fA!uqFxY} z9g)TPiGAR*?(7$&isf@w7y5X)s2qNOl%=3!r_z5(e_3)p=PJLJo8IDTcK997otfYR z-D8{Ztb{d=8hHXNj_za64hS$H`U{O#OeEJGp{R1k4rhKhLfbL9xO@J}|2B~x?ofx7 zyBmZf;`PkOT(l4#>h7QwN6)~!+%4=t**#|J)624kS%5%qD}38_4RjjL;$2AtY);N4 zW#c*6qpO2UwSrL0rUwfwMq|U7{W!HPl1O_>)Igr%M!#yKa{&8$3BJ%Ak45Ep54%eQ@7+Hw{|W3@jC(wi;lzVqE|S=;v{^C zszB9XM_jEwAH}_w;J@twq}nCHtH?!j!@p{QaYHjZnK}(7O^e|)3eWO$YWA|9qea;8LtE>%L4UDgmn)uJyTS$crkB#GepxxM(U)sBp=Y0*B#M=18u7#HX4!rjKt z@yi8C6huFV_%=U`t#=k)?{6}fZdXSc!*m!GIFVIVuVt$yEabkw2!SQG!yz&}5vNB2 z?&=+lL7qLB{p~H?>~JAN*FHFvuo-p#wV|tr^dMW5Fz)$n{`#p?F!oC>`)jZj0@Dev zS6G4a&Jx_vRtyK!pW!Ii=Q#D+S$MW36&2;KqWDNh==8k-T0I*M1>XWm zXn|1Q0QfL&65Mjy0A-=d&~-%!C6vB2k9B4~=0*Dr`TRr?LxE12vzgPsK3;>y@=t!><13BV z@KR9^`P{%T?&HhV+~1Z4o>Bw3*oZCs3;P#*Kz1u1(i6pxm(t+U?t}>*FI>%?<@>mY z*`xW*<(w+i@^+?8UZ!X|yVA6V<&rM6=y5WBK12xI26)p54=hhl9LPKItn&MQ6gL zOH*KRLLX}_+ljY(N1^k`HE7}Qf?~dHP_cGAN>mykRePb9-D(`cM#0aeYVgN45dyZW zgS5&+P<|N+%q|iN9y&vV_81nw)ra5lv6=TfrOdpnAMt{+ODyS*FU!3f2(F{9!8D!C zyvmw`?1=SyChpt=8KdV57q@AX@31?Jzc%Q&{te+{OqcTtnJs+4p(%y}m0Af-YRGA> z+;a=BB|d>)bKH<$I8B$^RR4)zmUf%prgM-h&O0J_GTM}n(=_GM*FI_1GyTl*C8 zcHjxj3;j#iqityPtF`dM)}My|3C3QBM|kduA;#VwCzP7(Z@%HwO`2S=46f)Ofu>FA z;Ir~NoSyg?Vx5NJn7cJ-mEDVVT60LL$%A&U)1!HRuL{|c!$Prh5AgFg8_d72O)7~p zq+z}WHJARzc>QR&cTyT|9czVi)txjxq633wXrlM8M%>sD0;WsH!{2$CsG70`1ItIi zjrh4J(J~d@Tbx4)-xn}({AgBt(GHS|yWqj8UvN8jBy*~02ctt;yiUec9#2kUh7Q~K zVwo|_>Ew1uT-yN=8S!xGl?2GUu0$EALk9~P3d#5^$cp}c zmPx$a_6*+KaXT-TZNxiHyUOicc!76by^lx5dOogIl#N>5$H#nJhiWgk;7zki6uGk% zb_JNj+TlSseYi1AxZHqwd(TjI8c(&Gx6^@UN1@}_BAPC5fQMcvVc?1q^OZ*xgg1H@ zv8J{j*fg~hVuC$5SN9|A%I4ef{gxS2r(Hyq8QOSZoF`TX2x#kDQ(EKmiR$#`P&CY< zksliHO}9Bo{0Jl2iwm*hP9aYHxB`kNe}b^cH^3?E#0lSOutZq_Bjm$;L^OPfosDa%e&8@01DrU$6h1%ghjVIvY*EpAND!L@JwK1aMR8kLzq<|g+x=lt zUdH^<;tJ6As{e=wlUYllx_`oAaR zo$gjW|%|9%0!OHYK${dy3%Lmmd^3vj|oAOdpDTJn_+iBZ zHej-pDTt}@=Jq;lZr^k~y6zwhT;0QOSu)j-8Q=QKOnv?MPlgrT=?{h6?%^fewXJvK@+*%&cxLxFXbK|Jk8zxy@WrE zc1-izEB;k%B9jgeM$gb}?9w}diVg)33YGzdkX#|g!jaENanz|8U9IJ7VwQ|n6LhfOxlHJp#>V`kD&*_(L1 zzKr5u_fS^PDSGSTKs7`2gp>NCg>2g#vV}-o`lpao)W1XK_@*)w&&nUh(-N}S7&`=Szt_Tde!-Axn1uU8dU1%$23B(24Tt?n!?PXUxKmAv zO`fU-_dH~9qRSJAjj(39H;q_d+<15+UJO_BR-nFGB@WeF1XCXALHN@`a4m9!r9TiR zr0*7{E_D^2TC@*ja$R_jpJIHtuM_W5zYwq67h+-bCBAxLg&{v_hc!%lH4?=2TiN9y zS&*Aih~XvYQRVbW{>ro+f>tecE`{CTOUfMi+P@R{$N9T>mA*5)a?V5E-%gU(X-wq3 z5{7cUvRk;ovw^%Pu;fyd)QrPYg)SWFZ^S~y&GQ{B8N;KCv ziJrH|p`_?{3W?o;ulMy}w0;#nFsVdQadBoNdW!dSd&`I4QRP)ImREJ(#9KibU5lI88y#h5&u#JHf>W_&)6ZDu49Wyfm>MlWk)u`RKgH9 z`{!X+TN#dQpN`KIQP&uLyx}{6%UGW4y*!Ou6sE;>RbAsfETi~6W)}$mJ)vuJrBUvkCrrEA z35UknL&ba>bR6@7=D8~3pU)m}Q~ERxb-93AO(n!47Sfu>Dp+|HaABqfoTE^jAuffp zg^Kt)XcRrKd?MVmT9(?DiBpDeH<=bx;p3HO@wsvxxgByPm*xS|k(rNa%d}DRLJfZB zOekm1PYh0pN6jsD(0t4XPE9-rI}`2LiMlH=&sqZoJymEDV}Prze9+vq7b-suu*5G( ztY~i?zd?SeS;mt@CigR&jW?LiuUsw7h9`xvX)(&MF=8pMk(x7rm%AL<0| zhliudkSr{%DyOf{J%lG_M4G!9%@G>BP!Wosze%Z5wdUGZoH^F!QB86enU0u*i(h`h z6&dO9Zi^m1Yg>d>3wkm1VJmc4xq|WPDt7G5KG3P%%=Y$OW{+Am!9n>Fj5Nt(Tk__y zA@?-RN*#>&7d1sJTHJ_*=gnt&H(U7IeV?IS^%z{RBM21F1RbY-7Bue-D%~AQdi)HG z)K0)LfxftT#!B$5@WI;r8aQoc#qum~K<_(OxZ!Ta|G)OUJeun7`kjFo?dI+d-fUDp3Xk!?7iL{R;|3)ARRKz*&d!hbwbnl$1q}YDk(c7Lq04w zAv1rD=fXqR$#C4ZluB$^MGxeSXZcUUajmu`W{5LbzIiuZkh_RYCst$o?(KA)vj(mh zvj*qb$1+o#^ccxWk&Nn5aYkcmw`t)*cb?&rUemg-X}k^bDZDru$%whe@^~a0c9j^= zWA`i2Nh6WiEL{RGYX;!J=q5O1*n^7uM}V_y0#1#V$4?_A1og=jjLF#n*_9?(`LLLI zaIBXa^Ix-?^ig}M@B6*Yad`&hEwwfLi`^=17WyV-pd-Hx}IP*lai{X}_l* z-CntbUBCJ&8|g1W>&(;Wfm~xeJ;*>#)CJ(q=tRw0Da8BZz%xZ3HVr?5hc_xoaZU#~ z>o&s(vuSXqHwC;e+d|3x$&lY2j_jfN7SW% zag{^RFSypoq2pvIe zwBruw?dqW+p+Qt3TTPJP7hs2UGM!O-0aZsoH`Oh0uN;;?kf8Az*XgN(fOXj>7Dsly&PIe!kUT5Ad` zB0>PyR$%i$JWZLT#cqOktkv`>?3ny~Jp5=4y!JLkB#jvVVKwC3m;^2siWpurjrCpV zL%$3;vbxpw^t{YYwrG_(TMDgaC%V8arLzQm`1KGyF$(gtFG0VcCVHM{1r@IMF?&og zj(C@XBdfNf_SI8J>Rh04%W<@l8%6i9s>qp_gH!LAq3g?Zl#%kq#qOhs zf^*Oz;}oLl7$$OM7*QM2CN)=GpoZ&5-b~!i!)Lc)v``y6dZ#hFM4=YMEygnU!lTHm z*Y#*SMFv`-5F+wt!2S_3pfU9C$)+I`K&wE77kFIaf27>nkjHxzR$5$wUc8vqFjI*sEgl z*^6NgYRn;Br5UKaJq;DIx*^vy3Vun>1=G%7q#;NjHmvOUf*XD0qsPO++hU|&%7?T}v14+i&B$&tnN>M2%~}U% zlH%`eOxvWlP|*{OInPya^v%zt^=vR?i?_i6t>uh)dMFn}2bEEwVSw^fMCslPIrLaC z3uQ;QptXK0y#8<!mTGVcX3dtycUB0Jz)=nUwzeg?ZNDO#51 zqR5sdxYv3Tjn7x1naf5|k<%8~-mghTv-Z%dCS8zo;uBN{ha-3FF!p@VrwjCXxb$-h zyz6a+Lp}vK?S47kW*b2L^&?Pp!v~Zxl*0ufei(l76#A4!Vp(Mtdtuf}cKoS>B=GL6jEKgD>?xkDW5*8y)zJab$|is6KRAwh?3 zkcraonCho|rf0~Jj9xT_JakPVMvwiO;_eV~Bq)g#uI_<}d}k)5KiouIWS>dLrUcNC z5vKDW#?sQ;%|xFgLh23(GDoXVkQbx~89$^Ue~SX-)GcN@eEgZpMR{D}UN8-lcgIql zb-8%M;2Fla+raQ1ak&4c3CHS2Vrr=h9&@P1k`X^Jb&U>o_zz&Y>0^w^p39Ca_riTQ zr5N$PW2XM~F2;{%nVSxA(@02`9kiaTMFW>xkRl-qc`dKWEgMBrI4cU`ibHY9%kzTl zBoqdI9z~IsTFhG2MvqGyu|oNNSlA?k30X@qwCX*TJNS#LScj2sSNU*_J|gLxy{P%c z92~BXK*ig8;j`;6cxHT%E_kcUs;Ab_G{y@zy;ubgEvr%2zyU|<@4|+W=kO%U!^zkV z6CY*6im_8LqN*L=or`7XhpuNE4*Z4s&K4+jIt!KA5wQ2nTPC-ICB=%0;Ps0TJBu7f z$Z;E^zTy<`d7v^c{Mb#R@!>Kl+x>x@43}bD4V;)$#tVsvjs}@&>&tADoylu`Bt(Sl zd4zbj!)uNkp6xcpk(IH;Xz_OPs+EUI=fcsrbR1lh+yE6Ge$c7FWfJF=k-@*>xTL#A z7I&s^#l~+H=rz6;RU@onnbUi)yWE9S139R6^*y}lyoM1od$G!D2hLhzjk($JI8>HI z>x(C&WbFptH^+0vDrX;>9Iq`i9kHl`s)aSvy2YER!M8O0_^AqNuQ`JBOeNx$Rsk`@ z167@7QI7RkN(N)8@Z^V7bjcoScQYRgpZ>&w;K^9xEs7576{+wZ4&FJZM80g*LGg

68%uqVcwsDEf-x$VJESgu)~| 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 literal 26764 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 diff --git a/raster/r.sim/r.sim.water/testsuite/data/discharge_complex.pack b/raster/r.sim/r.sim.water/testsuite/data/discharge_complex.pack index f48c0e4ca75faaad0c2be7454ea00f6191968b38..eef42412f177e2d039f071b06e5172ec1ab721e4 100644 GIT binary patch literal 39875 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 L6SGxl06+l%_U@N0 literal 39857 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 diff --git a/raster/r.sim/r.sim.water/testsuite/data/discharge_default.pack b/raster/r.sim/r.sim.water/testsuite/data/discharge_default.pack index 58124f0cfe2ee055871a04bfeb2026b1fead4afe..4a713cbd478ea4b8e908ea76ee6aa8822e9c1ecd 100644 GIT binary patch literal 39670 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, sim->max_walkers, - 2 + 8LL * setup->miter); + 2 + 8LL * setup->miter + 48); if (G_random_layout_batches(&layout) < 1) G_warning(_("%d walkers over %d time steps may draw more random " "numbers than one seed provides; the random numbers " From 0303ff613319844b4a8e3e7f22a66d69bb1ded13 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 15:13:35 -0400 Subject: [PATCH 23/28] r.sim.water: Run the flow control test with a thousand walkers With the ten walkers the five cells get by default, the total depth with a trapping probability of 0.3 is within noise of the total without trapping: over 30 seeds it was higher in 23. With a thousand walkers the three cases separate for every seed tried, so the test checks the effect rather than the seed. Written with the help of Claude Code. --- raster/r.sim/r.sim.water/tests/r_sim_water_test.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_test.py index a0bd8140682..40d8cc29441 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_test.py @@ -750,14 +750,17 @@ def test_flow_control_increases_depth(east_slope_session): Higher trapping probability means more accumulation. """ tools = Tools(session=east_slope_session) - sum_no_control = float(np.sum(run_sim(east_slope_session))) + # The ten default walkers leave the 0.3 case within noise of no trapping + # for about a quarter of the seeds; a thousand separate the three cases. + walkers = {"nwalkers": 1000} + sum_no_control = float(np.sum(run_sim(east_slope_session, **walkers))) tools.r_mapcalc(expression="flow_ctrl_low = 0.3") tools.r_mapcalc(expression="flow_ctrl_high = 0.8") sum_low_trap = float( - np.sum(run_sim(east_slope_session, flow_control="flow_ctrl_low")) + np.sum(run_sim(east_slope_session, flow_control="flow_ctrl_low", **walkers)) ) sum_high_trap = float( - np.sum(run_sim(east_slope_session, flow_control="flow_ctrl_high")) + np.sum(run_sim(east_slope_session, flow_control="flow_ctrl_high", **walkers)) ) assert sum_low_trap > sum_no_control, ( f"Trapping should increase depth: " From 73d86a00868a08f59973780cc3af647836a63a42 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 16:03:19 -0400 Subject: [PATCH 24/28] r.sim: Record the seed under the key seed The key in the history and the run summary is new, so it takes the name the option will have, seed, which the other tools use. Written with the help of Claude Code. --- raster/r.sim/r.sim.sediment/r.sim.sediment.html | 2 +- raster/r.sim/r.sim.sediment/r.sim.sediment.md | 2 +- .../r.sim.sediment/tests/r_sim_sediment_summary_test.py | 2 +- raster/r.sim/r.sim.water/r.sim.water.html | 6 +++--- raster/r.sim/r.sim.water/r.sim.water.md | 6 +++--- raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py | 2 +- raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py | 6 +++--- raster/r.sim/simlib/output.c | 2 +- raster/r.sim/simlib/summary.c | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.html b/raster/r.sim/r.sim.sediment/r.sim.sediment.html index 9eba8e2a9c3..bef0379112f 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.html +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.html @@ -104,7 +104,7 @@

Run summary

"walkers_requested": 60, "walkers_generated": 78, "walkers_remaining": 43, - "random_seed": 1, + "seed": 1, "duration": 60, "simulated_time": 54.891343113611583, "time_step": 5.4891343113611581, diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.md b/raster/r.sim/r.sim.sediment/r.sim.sediment.md index c6d39747f70..927e1906bad 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.md +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.md @@ -94,7 +94,7 @@ r.sim.sediment elevation=elevation water_depth=water_depth detachment_coeff=deta "walkers_requested": 60, "walkers_generated": 78, "walkers_remaining": 43, - "random_seed": 1, + "seed": 1, "duration": 60, "simulated_time": 54.891343113611583, "time_step": 5.4891343113611581, diff --git a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py index 5d93144c5f8..4fc1ee25067 100644 --- a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py +++ b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py @@ -15,7 +15,7 @@ "walkers_requested", "walkers_generated", "walkers_remaining", - "random_seed", + "seed", "duration", "simulated_time", "time_step", diff --git a/raster/r.sim/r.sim.water/r.sim.water.html b/raster/r.sim/r.sim.water/r.sim.water.html index 2bf33f5158d..ce73b91cd6e 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.html +++ b/raster/r.sim/r.sim.water/r.sim.water.html @@ -206,7 +206,7 @@

Run summary

walkers_requestedNumber of walkers from nwalkers, by default twice the number of cellscount walkers_generatedWalkers created, at least one per cell and more where the source rate is highercount walkers_remainingWalkers still in the domain at the end of the runcount - random_seedSeed of the random numbers, given or generated + seedSeed of the random numbers, given or generated durationRequested simulation length (duration)s simulated_timeSimulated time reached at the end of the runs time_stepSimulated time per iterations @@ -287,7 +287,7 @@

Run summary

"walkers_requested": 100000, "walkers_generated": 120000, "walkers_remaining": 112724, - "random_seed": 3, + "seed": 3, "duration": 1200, "simulated_time": 1199.2085202681737, "time_step": 1.0631281208051186, @@ -328,7 +328,7 @@

Random numbers and parallel processing

is given by random_seed; without it, a seed is generated, so runs without a seed differ from each other, as in r.mapcalc. The seed used is recorded in the history of the output maps and in the run summary of --p as random_seed, and reported with --verbose, so that a run +-p as seed, and reported with --verbose, so that a run can be repeated by giving it. The environment variable GRASS_RANDOM_SEED sets the generated seed for scripts. The -s flag, which generated a seed, is deprecated, since generating is now the diff --git a/raster/r.sim/r.sim.water/r.sim.water.md b/raster/r.sim/r.sim.water/r.sim.water.md index e2be81f3434..fbaf45c7659 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.md +++ b/raster/r.sim/r.sim.water/r.sim.water.md @@ -196,7 +196,7 @@ stored in the history of the output raster maps under the same keys (see | `walkers_requested` | Number of walkers from **nwalkers**, by default twice the number of cells | count | | `walkers_generated` | Walkers created, at least one per cell and more where the source rate is higher | count | | `walkers_remaining` | Walkers still in the domain at the end of the run | count | -| `random_seed` | Seed of the random numbers, given or generated | | +| `seed` | Seed of the random numbers, given or generated | | | `duration` | Requested simulation length (**duration**) | s | | `simulated_time` | Simulated time reached at the end of the run | s | | `time_step` | Simulated time per iteration | s | @@ -278,7 +278,7 @@ The printed summary: "walkers_requested": 100000, "walkers_generated": 120000, "walkers_remaining": 112724, - "random_seed": 3, + "seed": 3, "duration": 1200, "simulated_time": 1199.2085202681737, "time_step": 1.0631281208051186, @@ -319,7 +319,7 @@ The walkers are placed and moved using pseudo-random numbers. The seed is given by **random_seed**; without it, a seed is generated, so runs without a seed differ from each other, as in *r.mapcalc*. The seed used is recorded in the history of the output maps and in the run summary of -**-p** as `random_seed`, and reported with **--verbose**, so that a run +**-p** as `seed`, and reported with **--verbose**, so that a run can be repeated by giving it. The environment variable `GRASS_RANDOM_SEED` sets the generated seed for scripts. The **-s** flag, which generated a seed, is deprecated, since generating is now the diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py index cc4c75fa3c6..b85cdc84b46 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py @@ -92,7 +92,7 @@ def test_generated_seed_is_recorded(session): tools = Tools(session=session) tools.r_sim_water(elevation="elevation", depth="generated", duration=5) history = tools.r_info(map="generated", flags="h").text - seed = int(re.search(r"random_seed=(-?\d+)", history).group(1)) + seed = int(re.search(r"\bseed=(-?\d+)", history).group(1)) repeated = simulate_depth(session, random_seed=seed) generated = garray.array("generated", env=session.env) assert np.array_equal(repeated, generated) diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py index b0f0ff89a4f..17cfb806d86 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py @@ -24,7 +24,7 @@ "walkers_requested", "walkers_generated", "walkers_remaining", - "random_seed", + "seed", "duration", "simulated_time", "time_step", @@ -92,7 +92,7 @@ def test_json_summary(session_tools): assert summary["mean_source_rate"] > 0 assert summary["mean_infiltration"] == 0 assert summary["threads"] == 1 - assert summary["random_seed"] == 1 + assert summary["seed"] == 1 assert len(summary["outputs"]) == 1 output = summary["outputs"][0] @@ -197,7 +197,7 @@ def test_history(session_tools): "walkers_requested", "walkers_generated", "walkers_remaining", - "random_seed", + "seed", "duration", ): assert history_value(history, key) == summary[key] diff --git a/raster/r.sim/simlib/output.c b/raster/r.sim/simlib/output.c index 958062df59b..d7f5986ef14 100644 --- a/raster/r.sim/simlib/output.c +++ b/raster/r.sim/simlib/output.c @@ -108,7 +108,7 @@ static void write_history(const char *name, double tt, const Setup *setup, &hist, "walkers_generated=%d, walkers_requested=%d, walkers_remaining=%d", sim->nwalk, sim->maxwa, sim->nwalka); - Rast_append_format_history(&hist, "random_seed=%" PRId64, settings->seed); + Rast_append_format_history(&hist, "seed=%" PRId64, settings->seed); Rast_append_format_history(&hist, "duration=%d, simulated_time=%f", settings->timesec, tt); Rast_append_format_history(&hist, "time_step=%f, mean_velocity=%f", diff --git a/raster/r.sim/simlib/summary.c b/raster/r.sim/simlib/summary.c index d1d6ec0b484..866c4282f7f 100644 --- a/raster/r.sim/simlib/summary.c +++ b/raster/r.sim/simlib/summary.c @@ -76,7 +76,7 @@ static void print_json(const Setup *setup, const Settings *settings, G_json_object_set_number(root, "walkers_requested", sim->maxwa); G_json_object_set_number(root, "walkers_generated", sim->nwalk); G_json_object_set_number(root, "walkers_remaining", sim->nwalka); - G_json_object_set_number(root, "random_seed", (double)settings->seed); + G_json_object_set_number(root, "seed", (double)settings->seed); G_json_object_set_number(root, "duration", settings->timesec); G_json_object_set_number( root, "simulated_time", @@ -166,7 +166,7 @@ static void print_plain(const Setup *setup, const Settings *settings, printf("walkers_requested: %d\n", sim->maxwa); printf("walkers_generated: %d\n", sim->nwalk); printf("walkers_remaining: %d\n", sim->nwalka); - printf("random_seed: %" PRId64 "\n", settings->seed); + printf("seed: %" PRId64 "\n", settings->seed); printf("duration: %d\n", settings->timesec); print_number("simulated_time", simulated_seconds(setup, summary->iterations_completed)); From 1bb9d0f1556243ae175ea1bf15aabffff165804e Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 16:03:20 -0400 Subject: [PATCH 25/28] r.sim.water: Name the cases the flow control test separates Written with the help of Claude Code. --- raster/r.sim/r.sim.water/tests/r_sim_water_test.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_test.py index 40d8cc29441..e0b471ae981 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_test.py @@ -750,8 +750,9 @@ def test_flow_control_increases_depth(east_slope_session): Higher trapping probability means more accumulation. """ tools = Tools(session=east_slope_session) - # The ten default walkers leave the 0.3 case within noise of no trapping - # for about a quarter of the seeds; a thousand separate the three cases. + # The ten default walkers leave the total with trapping at 0.3 within + # noise of the total without trapping for about a quarter of the seeds; + # a thousand separate no trapping, 0.3 and 0.8 for every seed tried. walkers = {"nwalkers": 1000} sum_no_control = float(np.sum(run_sim(east_slope_session, **walkers))) tools.r_mapcalc(expression="flow_ctrl_low = 0.3") From d831e0484888af1f0c484af6360cf2d0f3b8ad71 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 17:07:56 -0400 Subject: [PATCH 26/28] r.sim: Drop two forward declarations hydro.c does not need simlib.h, included above them, defines both structs. The file no longer mentions point3D at all now that the walkers have a type of their own, and it never used point2D. Written with the help of Claude Code. --- raster/r.sim/simlib/hydro.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/raster/r.sim/simlib/hydro.c b/raster/r.sim/simlib/hydro.c index 9ad135c2fb9..e40479ee07a 100644 --- a/raster/r.sim/simlib/hydro.c +++ b/raster/r.sim/simlib/hydro.c @@ -27,9 +27,6 @@ * */ -struct point2D; -struct point3D; - /* **************************************************** */ /* create walker representation of si */ /* ******************************************************** */ From a44ccaaeef3adbd8bafa81482b049ffd82b34dc9 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 23:03:43 -0400 Subject: [PATCH 27/28] r.sim: Say what the random numbers mean for the user in the tool docs The section described the generator; the reader needs what the seed does and when the results depend on the number of threads. Results of r.sim.water are the same for any nprocs except where the water depth exceeds hmax or infiltration is used, since a walker there reacts to what the walkers before it in the same step left in the cell, and that order depends on the threads. Results of r.sim.sediment do not depend on nprocs at all, as its water depth is an input. Both statements are confirmed on the nc_spm elevation at 1, 2, 4 and 8 threads and tested on the synthetic data: the depth is identical below hmax, the sediment flux always. The seed range, the verbose message and the environment variable are not repeated here: the tool refuses a bad seed, and the variable is documented on the environment variables page. The note on seeds below 2^30 goes: it concerns runs with many seeds and belongs to a general page on random numbers, should one be needed. Written with the help of Claude Code. --- .../r.sim/r.sim.sediment/r.sim.sediment.html | 15 ++----- raster/r.sim/r.sim.sediment/r.sim.sediment.md | 15 ++----- .../tests/r_sim_sediment_random_test.py | 13 ++++-- raster/r.sim/r.sim.water/r.sim.water.html | 43 +++++-------------- raster/r.sim/r.sim.water/r.sim.water.md | 41 +++++------------- .../tests/r_sim_water_random_test.py | 14 ++++++ 6 files changed, 51 insertions(+), 90 deletions(-) diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.html b/raster/r.sim/r.sim.sediment/r.sim.sediment.html index bef0379112f..bb4d59a0c8c 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.html +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.html @@ -45,18 +45,9 @@

DESCRIPTION

NOTES

diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.md b/raster/r.sim/r.sim.sediment/r.sim.sediment.md index 927e1906bad..89bb7b0fc70 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.md +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.md @@ -38,18 +38,9 @@ erosion/deposition map is noisy, higher number of walkers, given by *nwalkers* should be used. Increasing the number of threads with **nprocs** speeds up the -simulation. The walkers draw their random numbers as in *r.sim.water*: -each walker from a sequence of its own determined by **random_seed** -(or the generated seed, recorded in the history and the run summary, -when it is not given) and the walker's number, so the walkers move the -same way whatever the value of **nprocs**. With **nprocs=1**, runs with -the same seed and inputs give identical results. With more threads, -walkers in the same cell add to the sediment concentration in an order -which depends on the threads, and the floating point sums differ -slightly with the order, so the outputs are close to, but not identical -with, the single-threaded result, and repeated runs with the same -**nprocs** may differ slightly. See -[r.sim.water](r.sim.water.md) for the range of seeds. +simulation. The random numbers and the seed work as in *r.sim.water*. +The results do not depend on **nprocs**, since the water depth is an +input here and there is no infiltration. ## NOTES diff --git a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py index 81e0aa14f04..21c0f2c1379 100644 --- a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py +++ b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py @@ -88,14 +88,19 @@ def test_generated_seed_is_the_seed_option(session): @pytest.mark.parametrize("nprocs", [2, 4]) -def test_walkers_do_not_depend_on_nprocs(session, nprocs): - """Walkers end at the same positions with any number of threads.""" - _, serial = simulate(session, f"walkers_{nprocs}_serial", random_seed=5) - _, parallel = simulate( +def test_results_do_not_depend_on_nprocs(session, nprocs): + """The flux and the walkers are identical with any number of threads. + + The water depth is an input here, so nothing a walker reacts to is + changed by the other walkers of the same step. + """ + serial_flux, serial = simulate(session, f"walkers_{nprocs}_serial", random_seed=5) + parallel_flux, parallel = simulate( session, f"walkers_{nprocs}_parallel", random_seed=5, nprocs=nprocs ) assert serial.size assert np.array_equal(parallel, serial) + assert np.array_equal(parallel_flux, serial_flux) @pytest.mark.parametrize("seed", [-(2**31) - 1, 2**32]) diff --git a/raster/r.sim/r.sim.water/r.sim.water.html b/raster/r.sim/r.sim.water/r.sim.water.html index ce73b91cd6e..6a50ba8201d 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.html +++ b/raster/r.sim/r.sim.water/r.sim.water.html @@ -325,38 +325,17 @@

Run summary

Random numbers and parallel processing

The walkers are placed and moved using pseudo-random numbers. The seed -is given by random_seed; without it, a seed is generated, so runs -without a seed differ from each other, as in r.mapcalc. The seed used -is recorded in the history of the output maps and in the run summary of --p as seed, and reported with --verbose, so that a run -can be repeated by giving it. The environment variable -GRASS_RANDOM_SEED sets the generated seed for scripts. The -s -flag, which generated a seed, is deprecated, since generating is now the -default; earlier versions used 12345 when neither was given. The seed is -an integer from -2147483648 to 4294967295; other values are an error. -Each walker draws from a sequence of random -numbers of its own, determined by the seed and the walker's number, so -every walker receives the same random numbers whatever the number of -threads given by nprocs. Results for a given seed differ from those -of GRASS versions in which all walkers drew from one shared sequence. - -

-With nprocs=1, runs with the same seed and inputs give identical -results. With more threads, every walker's weight is added to the water -depth, but walkers in the same cell add their weights in an order which -depends on the threads, and the floating point sums differ slightly with -the order. Which walkers the infiltration capacity of a cell absorbs -also depends on the order in which the threads bring them to the cell. -The walkers themselves move the same way for any nprocs as long as -the water depth stays below hmax, above which the diffusion depends -on the depth, and there is no infiltration. Results with nprocs greater -than 1 are close to, but not identical with, those with nprocs=1, -and repeated runs with the same nprocs may differ slightly. Use -nprocs=1 when results must be reproducible. - -

-When runs with several seeds are compared, use seeds below 1073741824 -(2^30): seeds which differ by 2^30 or 2^31 give related random numbers. +is given by random_seed; without it, a seed is generated and +recorded in the history of the output maps and in the run summary as +seed, so that the run can be repeated. Each walker receives the same +random numbers whatever the number of threads given by nprocs, so +the results do not depend on nprocs, except where the water depth +exceeds hmax or infiltration is used: there a walker reacts to the +water or the infiltration capacity left by the walkers which reached +the cell before it in the same time step, and that order depends on the +threads. Such cells can differ slightly between thread counts and +between repeated runs with more than one thread. Use nprocs=1 when +results must be reproducible to the last digit.

EXAMPLE

diff --git a/raster/r.sim/r.sim.water/r.sim.water.md b/raster/r.sim/r.sim.water/r.sim.water.md index fbaf45c7659..ff7527ddaaa 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.md +++ b/raster/r.sim/r.sim.water/r.sim.water.md @@ -316,36 +316,17 @@ The printed summary: ### Random numbers and parallel processing The walkers are placed and moved using pseudo-random numbers. The seed -is given by **random_seed**; without it, a seed is generated, so runs -without a seed differ from each other, as in *r.mapcalc*. The seed used -is recorded in the history of the output maps and in the run summary of -**-p** as `seed`, and reported with **--verbose**, so that a run -can be repeated by giving it. The environment variable -`GRASS_RANDOM_SEED` sets the generated seed for scripts. The **-s** -flag, which generated a seed, is deprecated, since generating is now the -default; earlier versions used 12345 when neither was given. The seed is -an integer from -2147483648 to 4294967295; other values are an error. -Each walker draws from a sequence of random -numbers of its own, determined by the seed and the walker's number, so -every walker receives the same random numbers whatever the number of -threads given by **nprocs**. Results for a given seed differ from those -of GRASS versions in which all walkers drew from one shared sequence. - -With **nprocs=1**, runs with the same seed and inputs give identical -results. With more threads, every walker's weight is added to the water -depth, but walkers in the same cell add their weights in an order which -depends on the threads, and the floating point sums differ slightly with -the order. Which walkers the infiltration capacity of a cell absorbs -also depends on the order in which the threads bring them to the cell. -The walkers themselves move the same way for any **nprocs** as long as -the water depth stays below **hmax**, above which the diffusion depends -on the depth, and there is no infiltration. Results with **nprocs** greater -than 1 are close to, but not identical with, those with **nprocs=1**, -and repeated runs with the same **nprocs** may differ slightly. Use -**nprocs=1** when results must be reproducible. - -When runs with several seeds are compared, use seeds below 1073741824 -(2^30): seeds which differ by 2^30 or 2^31 give related random numbers. +is given by **random_seed**; without it, a seed is generated and +recorded in the history of the output maps and in the run summary as +`seed`, so that the run can be repeated. Each walker receives the same +random numbers whatever the number of threads given by **nprocs**, so +the results do not depend on **nprocs**, except where the water depth +exceeds **hmax** or infiltration is used: there a walker reacts to the +water or the infiltration capacity left by the walkers which reached +the cell before it in the same time step, and that order depends on the +threads. Such cells can differ slightly between thread counts and +between repeated runs with more than one thread. Use **nprocs=1** when +results must be reproducible to the last digit. ## EXAMPLE diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py index b85cdc84b46..ee6064d1eec 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py @@ -115,6 +115,20 @@ def test_seed_and_flag_are_exclusive(session): simulate_depth(session, random_seed=1, flags="s") +@pytest.mark.parametrize("nprocs", [2, 4]) +def test_depth_does_not_depend_on_nprocs_below_hmax(session, nprocs): + """The depth is identical with any number of threads while it stays below hmax. + + Above hmax a walker reacts to the depth the walkers before it in the + same step left, and that order depends on the threads. + """ + serial = simulate_depth(session, random_seed=5, **NO_DEPTH_FEEDBACK) + parallel = simulate_depth( + session, random_seed=5, nprocs=nprocs, **NO_DEPTH_FEEDBACK + ) + assert np.array_equal(parallel, serial) + + @pytest.mark.parametrize("nprocs", [2, 4]) def test_walkers_do_not_depend_on_nprocs(session, nprocs): """Walkers end at the same positions with any number of threads.""" From c168719df2df3861f00092b6b4dc5ecec4f29dbe Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Mon, 5 Oct 2026 23:58:39 -0400 Subject: [PATCH 28/28] r.sim: Document results with more than one thread as not reproducible The condition under which they are the same for any thread count, a water depth below hmax and no infiltration, is too narrow to promise; the rule for the user is nprocs=1. r.sim.sediment refers to r.sim.water for the same rule rather than claiming more. Written with the help of Claude Code. --- raster/r.sim/r.sim.sediment/r.sim.sediment.html | 5 ++--- raster/r.sim/r.sim.sediment/r.sim.sediment.md | 5 ++--- raster/r.sim/r.sim.water/r.sim.water.html | 13 ++++--------- raster/r.sim/r.sim.water/r.sim.water.md | 13 ++++--------- 4 files changed, 12 insertions(+), 24 deletions(-) diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.html b/raster/r.sim/r.sim.sediment/r.sim.sediment.html index bb4d59a0c8c..acb90dcedd3 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.html +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.html @@ -45,9 +45,8 @@

DESCRIPTION

Increasing the number of threads with nprocs speeds up the -simulation. The random numbers and the seed work as in r.sim.water. -The results do not depend on nprocs, since the water depth is an -input here and there is no infiltration. +simulation. The random numbers, the seed and the reproducibility of the +results with more than one thread are as in r.sim.water.

NOTES

diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.md b/raster/r.sim/r.sim.sediment/r.sim.sediment.md index 89bb7b0fc70..87e4afe0a6a 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.md +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.md @@ -38,9 +38,8 @@ erosion/deposition map is noisy, higher number of walkers, given by *nwalkers* should be used. Increasing the number of threads with **nprocs** speeds up the -simulation. The random numbers and the seed work as in *r.sim.water*. -The results do not depend on **nprocs**, since the water depth is an -input here and there is no infiltration. +simulation. The random numbers, the seed and the reproducibility of the +results with more than one thread are as in *r.sim.water*. ## NOTES diff --git a/raster/r.sim/r.sim.water/r.sim.water.html b/raster/r.sim/r.sim.water/r.sim.water.html index 6a50ba8201d..b9f2fbc0ab1 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.html +++ b/raster/r.sim/r.sim.water/r.sim.water.html @@ -327,15 +327,10 @@

Random numbers and parallel processing

The walkers are placed and moved using pseudo-random numbers. The seed is given by random_seed; without it, a seed is generated and recorded in the history of the output maps and in the run summary as -seed, so that the run can be repeated. Each walker receives the same -random numbers whatever the number of threads given by nprocs, so -the results do not depend on nprocs, except where the water depth -exceeds hmax or infiltration is used: there a walker reacts to the -water or the infiltration capacity left by the walkers which reached -the cell before it in the same time step, and that order depends on the -threads. Such cells can differ slightly between thread counts and -between repeated runs with more than one thread. Use nprocs=1 when -results must be reproducible to the last digit. +seed, so that the run can be repeated. With more than one thread, the +results differ slightly between thread counts and between repeated runs, +since the order in which the walkers reach a cell depends on the +threads. Use nprocs=1 when results must be reproducible.

EXAMPLE

diff --git a/raster/r.sim/r.sim.water/r.sim.water.md b/raster/r.sim/r.sim.water/r.sim.water.md index ff7527ddaaa..755767d98be 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.md +++ b/raster/r.sim/r.sim.water/r.sim.water.md @@ -318,15 +318,10 @@ The printed summary: The walkers are placed and moved using pseudo-random numbers. The seed is given by **random_seed**; without it, a seed is generated and recorded in the history of the output maps and in the run summary as -`seed`, so that the run can be repeated. Each walker receives the same -random numbers whatever the number of threads given by **nprocs**, so -the results do not depend on **nprocs**, except where the water depth -exceeds **hmax** or infiltration is used: there a walker reacts to the -water or the infiltration capacity left by the walkers which reached -the cell before it in the same time step, and that order depends on the -threads. Such cells can differ slightly between thread counts and -between repeated runs with more than one thread. Use **nprocs=1** when -results must be reproducible to the last digit. +`seed`, so that the run can be repeated. With more than one thread, the +results differ slightly between thread counts and between repeated runs, +since the order in which the walkers reach a cell depends on the +threads. Use **nprocs=1** when results must be reproducible. ## EXAMPLE

Increasing the number of threads with nprocs speeds up the -simulation. The walkers draw their random numbers as in r.sim.water: -each walker from a sequence of its own determined by random_seed -(or the generated seed, recorded in the history and the run summary, -when it is not given) and the walker's number, so the walkers move the -same way whatever the value of nprocs. With nprocs=1, runs with -the same seed and inputs give identical results. With more threads, -walkers in the same cell add to the sediment concentration in an order -which depends on the threads, and the floating point sums differ -slightly with the order, so the outputs are close to, but not identical -with, the single-threaded result, and repeated runs with the same -nprocs may differ slightly. See -r.sim.water for the range of seeds. +simulation. The random numbers and the seed work as in r.sim.water. +The results do not depend on nprocs, since the water depth is an +input here and there is no infiltration.