From 5dd951394919ecc7ada8b67b63f6307352a70f21 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Tue, 8 Jul 2025 22:22:59 -0700 Subject: [PATCH 01/14] lab branch no RunStop --- examples/deep_fsa/deep_fsa.go | 1 - examples/hip/hip.go | 1 - examples/ra25/ra25.go | 1 - examples/sir2/sir2.go | 1 - 4 files changed, 4 deletions(-) diff --git a/examples/deep_fsa/deep_fsa.go b/examples/deep_fsa/deep_fsa.go index 639e33c..2b2b1a1 100644 --- a/examples/deep_fsa/deep_fsa.go +++ b/examples/deep_fsa/deep_fsa.go @@ -391,7 +391,6 @@ func (ss *Sim) Init() { ss.InitRandSeed(0) // ss.ConfigEnv() // re-config env just in case a different set of patterns was // selected or patterns have been modified etc - ss.GUI.StopNow = false ss.ApplyParams() ss.NewRun() ss.ViewUpdate.RecordSyns() diff --git a/examples/hip/hip.go b/examples/hip/hip.go index 2fc0d00..2298f82 100644 --- a/examples/hip/hip.go +++ b/examples/hip/hip.go @@ -400,7 +400,6 @@ func (ss *Sim) Init() { ss.Stats.SetString("RunName", ss.Params.RunName(0)) // in case user interactively changes tag ss.Loops.ResetCounters() - ss.GUI.StopNow = false ss.ApplyParams() ss.NewRun() ss.ViewUpdate.RecordSyns() diff --git a/examples/ra25/ra25.go b/examples/ra25/ra25.go index 71b5d45..6188981 100644 --- a/examples/ra25/ra25.go +++ b/examples/ra25/ra25.go @@ -386,7 +386,6 @@ func (ss *Sim) Init() { ss.InitRandSeed(0) // ss.ConfigEnv() // re-config env just in case a different set of patterns was // selected or patterns have been modified etc - ss.GUI.StopNow = false ss.ApplyParams() ss.NewRun() ss.ViewUpdate.RecordSyns() diff --git a/examples/sir2/sir2.go b/examples/sir2/sir2.go index 08f9924..ac1ba3c 100644 --- a/examples/sir2/sir2.go +++ b/examples/sir2/sir2.go @@ -402,7 +402,6 @@ func (ss *Sim) Init() { ss.Loops.ResetCounters() ss.InitRandSeed(0) ss.ConfigEnv() // re-config env just in case a different set of patterns was - ss.GUI.StopNow = false ss.ApplyParams() ss.NewRun() ss.ViewUpdate.RecordSyns() From 5d269e8d34a5c8cf8bd9bedb24622f3e31cd5a92 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Wed, 9 Jul 2025 02:39:03 -0700 Subject: [PATCH 02/14] lab branch significant progress updating to axon style --- examples/ra25/config.go | 152 ++++++ examples/ra25/ra25.go | 1027 +++++++++++++++++++------------------- examples/ra25/typegen.go | 26 +- go.mod | 7 +- leabra/deep_net.go | 12 +- leabra/helpers.go | 21 +- leabra/layer.go | 12 +- leabra/layerbase.go | 166 +++--- leabra/logging.go | 297 ----------- leabra/looper.go | 357 ++++++++----- leabra/network.go | 58 ++- leabra/networkbase.go | 116 +++-- leabra/neuromod.go | 2 +- leabra/params.go | 216 ++++++++ leabra/path.go | 6 +- leabra/pathbase.go | 56 ++- leabra/pbwm_layers.go | 2 +- leabra/pbwm_net.go | 15 +- leabra/rl.go | 14 +- 19 files changed, 1397 insertions(+), 1165 deletions(-) create mode 100644 examples/ra25/config.go delete mode 100644 leabra/logging.go create mode 100644 leabra/params.go diff --git a/examples/ra25/config.go b/examples/ra25/config.go new file mode 100644 index 0000000..aefd53b --- /dev/null +++ b/examples/ra25/config.go @@ -0,0 +1,152 @@ +// Copyright (c) 2024, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ra25 + +import ( + "cogentcore.org/core/base/errors" + "cogentcore.org/core/base/reflectx" + "cogentcore.org/core/math32/vecint" +) + +// ParamConfig has config parameters related to sim params. +type ParamConfig struct { + + // Hidden1Size is the size of hidden 1 layer. + Hidden1Size vecint.Vector2i `default:"{'X':10,'Y':10}" nest:"+"` + + // Hidden2Size is the size of hidden 2 layer. + Hidden2Size vecint.Vector2i `default:"{'X':10,'Y':10}" nest:"+"` + + // Script is an interpreted script that is run to set parameters in Layer and Path + // sheets, by default using the "Script" set name. + Script string `new-window:"+" width:"100"` + + // Sheet is the extra params sheet name(s) to use (space separated + // if multiple). Must be valid name as listed in compiled-in params + // or loaded params. + Sheet string + + // Tag is an extra tag to add to file names and logs saved from this run. + Tag string + + // Note is additional info to describe the run params etc, + // like a git commit message for the run. + Note string + + // SaveAll will save a snapshot of all current param and config settings + // in a directory named params_ (or _good if Good is true), + // then quit. Useful for comparing to later changes and seeing multiple + // views of current params. + SaveAll bool `nest:"+"` + + // Good is for SaveAll, save to params_good for a known good params state. + // This can be done prior to making a new release after all tests are passing. + // Add results to git to provide a full diff record of all params over level. + Good bool `nest:"+"` +} + +// RunConfig has config parameters related to running the sim. +type RunConfig struct { + + // NThreads is the number of parallel threads for CPU computation; + // 0 = use default. + NThreads int `default:"0"` + + // Run is the _starting_ run number, which determines the random seed. + // Runs counts up from there. Can do all runs in parallel by launching + // separate jobs with each starting Run, Runs = 1. + Run int `default:"0" flag:"run"` + + // Runs is the total number of runs to do when running Train, starting from Run. + Runs int `default:"5" min:"1"` + + // Epochs is the total number of epochs per run. + Epochs int `default:"100"` + + // Trials is the total number of trials per epoch. + // Should be an even multiple of NData. + Trials int `default:"32"` + + // Cycles is the total number of cycles per trial: at least 200. + Cycles int `default:"200"` + + // PlusCycles is the total number of plus-phase cycles per trial. For Cycles=300, use 100. + PlusCycles int `default:"50"` + + // NZero is how many perfect, zero-error epochs before stopping a Run. + NZero int `default:"2"` + + // TestInterval is how often (in epochs) to run through all the test patterns, + // in terms of training epochs. Can use 0 or -1 for no testing. + TestInterval int `default:"5"` + + // PCAInterval is how often (in epochs) to compute PCA on hidden + // representations to measure variance. + PCAInterval int `default:"10"` + + // StartWeights is the name of weights file to load at start of first run. + StartWeights string +} + +// LogConfig has config parameters related to logging data. +type LogConfig struct { + + // SaveWeights will save final weights after each run. + SaveWeights bool + + // Train has the list of Train mode levels to save log files for. + Train []string `default:"['Expt', 'Run', 'Epoch']" nest:"+"` + + // Test has the list of Test mode levels to save log files for. + Test []string `nest:"+"` +} + +// Config has the overall Sim configuration options. +type Config struct { + + // Name is the short name of the sim. + Name string `display:"-" default:"RA25"` + + // Title is the longer title of the sim. + Title string `display:"-" default:"Leabra random associator"` + + // URL is a link to the online README or other documentation for this sim. + URL string `display:"-" default:"https://github.com/emer/leabra/blob/main/sims/ra25/README.md"` + + // Doc is brief documentation of the sim. + Doc string `display:"-" default:"This demonstrates a basic Leabra model and provides a template for creating new models. It has a random-associator four-layer leabra network that uses the standard supervised learning paradigm to learn mappings between 25 random input / output patterns defined over 5x5 input / output layers."` + + // Includes has a list of additional config files to include. + // After configuration, it contains list of include files added. + Includes []string + + // GUI means open the GUI. Otherwise it runs automatically and quits, + // saving results to log files. + GUI bool `default:"true"` + + // Debug reports debugging information. + Debug bool + + // Params has parameter related configuration options. + Params ParamConfig `display:"add-fields"` + + // Run has sim running related configuration options. + Run RunConfig `display:"add-fields"` + + // Log has data logging related configuration options. + Log LogConfig `display:"add-fields"` +} + +func (cfg *Config) IncludesPtr() *[]string { return &cfg.Includes } + +func (cfg *Config) Defaults() { + errors.Log(reflectx.SetFromDefaultTags(cfg)) +} + +func NewConfig() *Config { + cfg := &Config{} + cfg.Defaults() + return cfg +} diff --git a/examples/ra25/ra25.go b/examples/ra25/ra25.go index 6188981..2e4d6f0 100644 --- a/examples/ra25/ra25.go +++ b/examples/ra25/ra25.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019, The Emergent Authors. All rights reserved. +// Copyright (c) 2024, The Emergent Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -6,221 +6,68 @@ // that uses the standard supervised learning paradigm to learn // mappings between 25 random input / output patterns // defined over 5x5 input / output layers (i.e., 25 units) -package main +package ra25 -//go:generate core generate -add-types +//go:generate core generate -add-types -add-funcs -gosl import ( "embed" - "log" + "fmt" + "io/fs" "os" + "reflect" + "cogentcore.org/core/base/errors" + "cogentcore.org/core/base/metadata" "cogentcore.org/core/core" "cogentcore.org/core/enums" "cogentcore.org/core/icons" "cogentcore.org/core/math32" - "cogentcore.org/core/math32/vecint" "cogentcore.org/core/tree" "cogentcore.org/lab/base/mpi" "cogentcore.org/lab/base/randx" - "github.com/emer/emergent/v2/econfig" + "cogentcore.org/lab/patterns" + "cogentcore.org/lab/plot" + "cogentcore.org/lab/stats/stats" + "cogentcore.org/lab/table" + "cogentcore.org/lab/tensor" + "cogentcore.org/lab/tensorfs" "github.com/emer/emergent/v2/egui" - "github.com/emer/emergent/v2/elog" - "github.com/emer/emergent/v2/emer" "github.com/emer/emergent/v2/env" - "github.com/emer/emergent/v2/estats" - "github.com/emer/emergent/v2/etime" "github.com/emer/emergent/v2/looper" - "github.com/emer/emergent/v2/netview" - "github.com/emer/emergent/v2/params" - "github.com/emer/emergent/v2/patgen" "github.com/emer/emergent/v2/paths" - "github.com/emer/etensor/tensor" - "github.com/emer/etensor/tensor/table" "github.com/emer/leabra/v2/leabra" ) -//go:embed *.tsv -var patsfs embed.FS +//go:embed random_5x5_25.tsv +var content embed.FS -func main() { - sim := &Sim{} - sim.New() - sim.ConfigAll() - if sim.Config.GUI { - sim.RunGUI() - } else { - sim.RunNoGUI() - } -} - -// ParamSets is the default set of parameters. -// Base is always applied, and others can be optionally -// selected to apply on top of that. -var ParamSets = params.Sets{ - "Base": { - {Sel: "Path", Desc: "norm and momentum on works better, but wt bal is not better for smaller nets", - Params: params.Params{ - "Path.Learn.Norm.On": "true", - "Path.Learn.Momentum.On": "true", - "Path.Learn.WtBal.On": "true", // no diff really - // "Path.Learn.WtBal.Targs": "true", // no diff here - }}, - {Sel: "Layer", Desc: "using default 1.8 inhib for all of network -- can explore", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "1.8", - "Layer.Act.Init.Decay": "0.0", - "Layer.Act.Gbar.L": "0.1", // set explictly, new default, a bit better vs 0.2 - }}, - {Sel: ".BackPath", Desc: "top-down back-pathways MUST have lower relative weight scale, otherwise network hallucinates", - Params: params.Params{ - "Path.WtScale.Rel": "0.2", - }}, - {Sel: "#Output", Desc: "output definitely needs lower inhib -- true for smaller layers in general", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "1.4", - }}, - }, - "DefaultInhib": { - {Sel: "#Output", Desc: "go back to default", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "1.8", - }}, - }, - "NoMomentum": { - {Sel: "Path", Desc: "no norm or momentum", - Params: params.Params{ - "Path.Learn.Norm.On": "false", - "Path.Learn.Momentum.On": "false", - }}, - }, - "WtBalOn": { - {Sel: "Path", Desc: "weight bal on", - Params: params.Params{ - "Path.Learn.WtBal.On": "true", - }}, - }, -} - -// ParamConfig has config parameters related to sim params -type ParamConfig struct { - - // network parameters - Network map[string]any - - // size of hidden layer -- can use emer.LaySize for 4D layers - Hidden1Size vecint.Vector2i `default:"{'X':7,'Y':7}" nest:"+"` - - // size of hidden layer -- can use emer.LaySize for 4D layers - Hidden2Size vecint.Vector2i `default:"{'X':7,'Y':7}" nest:"+"` - - // Extra Param Sheet name(s) to use (space separated if multiple). - // must be valid name as listed in compiled-in params or loaded params - Sheet string - - // extra tag to add to file names and logs saved from this run - Tag string - - // user note -- describe the run params etc -- like a git commit message for the run - Note string - - // Name of the JSON file to input saved parameters from. - File string `nest:"+"` - - // Save a snapshot of all current param and config settings - // in a directory named params_ (or _good if Good is true), then quit. - // Useful for comparing to later changes and seeing multiple views of current params. - SaveAll bool `nest:"+"` - - // For SaveAll, save to params_good for a known good params state. - // This can be done prior to making a new release after all tests are passing. - // add results to git to provide a full diff record of all params over time. - Good bool `nest:"+"` -} - -// RunConfig has config parameters related to running the sim -type RunConfig struct { - // starting run number, which determines the random seed. - // runs counts from there, can do all runs in parallel by launching - // separate jobs with each run, runs = 1. - Run int `default:"0"` - - // total number of runs to do when running Train - NRuns int `default:"5" min:"1"` - - // total number of epochs per run - NEpochs int `default:"100"` - - // stop run after this number of perfect, zero-error epochs. - NZero int `default:"2"` - - // total number of trials per epoch. Should be an even multiple of NData. - NTrials int `default:"32"` - - // how often to run through all the test patterns, in terms of training epochs. - // can use 0 or -1 for no testing. - TestInterval int `default:"5"` - - // how frequently (in epochs) to compute PCA on hidden representations - // to measure variance? - PCAInterval int `default:"5"` - - // if non-empty, is the name of weights file to load at start - // of first run, for testing. - StartWts string -} - -// LogConfig has config parameters related to logging data -type LogConfig struct { - - // if true, save final weights after each run - SaveWeights bool - - // if true, save train epoch log to file, as .epc.tsv typically - Epoch bool `default:"true" nest:"+"` - - // if true, save run log to file, as .run.tsv typically - Run bool `default:"true" nest:"+"` - - // if true, save train trial log to file, as .trl.tsv typically. May be large. - Trial bool `default:"false" nest:"+"` - - // if true, save testing epoch log to file, as .tst_epc.tsv typically. In general it is better to copy testing items over to the training epoch log and record there. - TestEpoch bool `default:"false" nest:"+"` - - // if true, save testing trial log to file, as .tst_trl.tsv typically. May be large. - TestTrial bool `default:"false" nest:"+"` - - // if true, save network activation etc data from testing trials, - // for later viewing in netview. - NetData bool -} - -// Config is a standard Sim config -- use as a starting point. -type Config struct { - - // specify include files here, and after configuration, - // it contains list of include files added. - Includes []string - - // open the GUI -- does not automatically run -- if false, - // then runs automatically and quits. - GUI bool `default:"true"` - - // log debugging information - Debug bool - - // parameter related configuration options - Params ParamConfig `display:"add-fields"` +// Modes are the looping modes (Stacks) for running and statistics. +type Modes int32 //enums:enum +const ( + Train Modes = iota + Test +) - // sim running related configuration options - Run RunConfig `display:"add-fields"` +// Levels are the looping levels for running and statistics. +type Levels int32 //enums:enum +const ( + Cycle Levels = iota + Trial + Epoch + Run + Expt +) - // data logging related configuration options - Log LogConfig `display:"add-fields"` -} +// StatsPhase is the phase of stats processing for given mode, level. +// Accumulated values are reset at Start, added each Step. +type StatsPhase int32 //enums:enum +const ( + Start StatsPhase = iota + Step +) -func (cfg *Config) IncludesPtr() *[]string { return &cfg.Includes } +// see params.go for params, config.go for config // Sim encapsulates the entire simulation model, and we define all the // functionality as methods on this struct. This structure keeps all relevant @@ -230,68 +77,92 @@ func (cfg *Config) IncludesPtr() *[]string { return &cfg.Includes } type Sim struct { // simulation configuration parameters -- set by .toml config file and / or args - Config Config `new-window:"+"` + Config *Config `new-window:"+"` - // the network -- click to view / edit parameters for layers, paths, etc + // Net is the network: click to view / edit parameters for layers, paths, etc. Net *leabra.Network `new-window:"+" display:"no-inline"` - // network parameter management - Params emer.NetParams `display:"add-fields"` + // Params manages network parameter setting. + Params leabra.Params `display:"inline"` - // contains looper control loops for running sim + // Loops are the control loops for running the sim, in different Modes + // across stacks of Levels. Loops *looper.Stacks `new-window:"+" display:"no-inline"` - // contains computed statistic values - Stats estats.Stats `new-window:"+"` + // Envs provides mode-string based storage of environments. + Envs env.Envs `new-window:"+" display:"no-inline"` + + // TrainUpdate has Train mode netview update parameters. + TrainUpdate leabra.NetViewUpdate `display:"inline"` - // Contains all the logs and information about the logs.' - Logs elog.Logs `new-window:"+"` + // TestUpdate has Test mode netview update parameters. + TestUpdate leabra.NetViewUpdate `display:"inline"` - // the training patterns to use - Patterns *table.Table `new-window:"+" display:"no-inline"` + // Root is the root tensorfs directory, where all stats and other misc sim data goes. + Root *tensorfs.Node `display:"-"` - // Environments - Envs env.Envs `new-window:"+" display:"no-inline"` + // Stats has the stats directory within Root. + Stats *tensorfs.Node `display:"-"` - // leabra timing parameters and state - Context leabra.Context `new-window:"+"` + // Current has the current stats values within Stats. + Current *tensorfs.Node `display:"-"` - // netview update parameters - ViewUpdate netview.ViewUpdate `display:"add-fields"` + // StatFuncs are statistics functions called at given mode and level, + // to perform all stats computations. phase = Start does init at start of given level, + // and all intialization / configuration (called during Init too). + StatFuncs []func(mode Modes, level Levels, phase StatsPhase) `display:"-"` - // manages all the gui elements + // GUI manages all the GUI elements GUI egui.GUI `display:"-"` - // a list of random seeds to use for each run + // RandSeeds is a list of random seeds to use for each run. RandSeeds randx.Seeds `display:"-"` } -// New creates new blank elements and initializes defaults -func (ss *Sim) New() { - econfig.Config(&ss.Config, "config.toml") - ss.Net = leabra.NewNetwork("RA25") - ss.Params.Config(ParamSets, ss.Config.Params.Sheet, ss.Config.Params.Tag, ss.Net) - ss.Stats.Init() - ss.Patterns = &table.Table{} - ss.RandSeeds.Init(100) // max 100 runs - ss.InitRandSeed(0) - ss.Context.Defaults() +// RunSim runs the simulation as a standalone app +// with given configuration. +func RunSim(cfg *Config) error { + ss := &Sim{Config: cfg} + ss.ConfigSim() + if ss.Config.GUI { + ss.RunGUI() + } else { + ss.RunNoGUI() + } + return nil } -////////////////////////////////////////////////////////////////////////////// -// Configs +// EmbedSim runs the simulation with default configuration +// embedded within given body element. +func EmbedSim(b tree.Node) *Sim { + cfg := NewConfig() + cfg.GUI = true + ss := &Sim{Config: cfg} + ss.ConfigSim() + ss.Init() + ss.ConfigGUI(b) + return ss +} -// ConfigAll configures all the elements using the standard functions -func (ss *Sim) ConfigAll() { - // ss.ConfigPatterns() - ss.OpenPatterns() +func (ss *Sim) ConfigSim() { + ss.Root, _ = tensorfs.NewDir("Root") + tensorfs.CurRoot = ss.Root + ss.Net = leabra.NewNetwork(ss.Config.Name) + ss.Params.Config(LayerParams, PathParams, ss.Config.Params.Sheet, ss.Config.Params.Tag, reflect.ValueOf(ss)) + ss.RandSeeds.Init(100) // max 100 runs + ss.InitRandSeed(0) + // ss.ConfigInputs() + ss.OpenInputs() ss.ConfigEnv() ss.ConfigNet(ss.Net) - ss.ConfigLogs() ss.ConfigLoops() + ss.ConfigStats() + // if ss.Config.Run.GPU { + // fmt.Println(leabra.GPUSystem.Vars().StringDoc()) + // } if ss.Config.Params.SaveAll { ss.Config.Params.SaveAll = false - ss.Net.SaveParamsSnapshot(&ss.Params.Params, &ss.Config, ss.Config.Params.Good) + ss.Net.SaveParamsSnapshot(&ss.Config, ss.Config.Params.Good) os.Exit(0) } } @@ -303,26 +174,31 @@ func (ss *Sim) ConfigEnv() { trn = &env.FixedTable{} tst = &env.FixedTable{} } else { - trn = ss.Envs.ByMode(etime.Train).(*env.FixedTable) - tst = ss.Envs.ByMode(etime.Test).(*env.FixedTable) + trn = ss.Envs.ByMode(Train).(*env.FixedTable) + tst = ss.Envs.ByMode(Test).(*env.FixedTable) } + inputs := tensorfs.DirTable(ss.Root.Dir("Inputs/Train"), nil) + + // this logic can be used to create train-test splits of a set of patterns: + // n := inputs.NumRows() + // order := rand.Perm(n) + // ntrn := int(0.85 * float64(n)) + // trnEnv := table.NewView(inputs) + // tstEnv := table.NewView(inputs) + // trnEnv.Indexes = order[:ntrn] + // tstEnv.Indexes = order[ntrn:] + // note: names must be standard here! - trn.Name = etime.Train.String() - trn.Config(table.NewIndexView(ss.Patterns)) + trn.Name = Train.String() + trn.Config(table.NewView(inputs)) trn.Validate() - tst.Name = etime.Test.String() - tst.Config(table.NewIndexView(ss.Patterns)) + tst.Name = Test.String() + tst.Config(table.NewView(inputs)) tst.Sequential = true tst.Validate() - // note: to create a train / test split of pats, do this: - // all := table.NewIndexView(ss.Patterns) - // splits, _ := split.Permuted(all, []float64{.8, .2}, []string{"Train", "Test"}) - // trn.Table = splits.Splits[0] - // tst.Table = splits.Splits[1] - trn.Init(0) tst.Init(0) @@ -331,16 +207,14 @@ func (ss *Sim) ConfigEnv() { } func (ss *Sim) ConfigNet(net *leabra.Network) { + // net.Context.SetThetaCycles(int32(ss.Config.Run.Cycles)). + // SetPlusCycles(int32(ss.Config.Run.PlusCycles)) net.SetRandSeed(ss.RandSeeds[0]) // init new separate random seed, using run = 0 - inp := net.AddLayer2D("Input", 5, 5, leabra.InputLayer) - inp.Doc = "Input represents sensory input, coming into the cortex via tha thalamus" - hid1 := net.AddLayer2D("Hidden1", ss.Config.Params.Hidden1Size.Y, ss.Config.Params.Hidden1Size.X, leabra.SuperLayer) - hid1.Doc = "First hidden layer performs initial internal processing of sensory inputs, transforming in preparation for producing appropriate responses" - hid2 := net.AddLayer2D("Hidden2", ss.Config.Params.Hidden2Size.Y, ss.Config.Params.Hidden2Size.X, leabra.SuperLayer) - hid2.Doc = "Another 'deep' layer of internal processing to prepare directly for Output response" - out := net.AddLayer2D("Output", 5, 5, leabra.TargetLayer) - out.Doc = "Output represents motor output response, via deep layer 5 neurons projecting supcortically, in motor cortex" + inp := net.AddLayer2D("Input", leabra.InputLayer, 5, 5) + hid1 := net.AddLayer2D("Hidden1", leabra.SuperLayer, ss.Config.Params.Hidden1Size.Y, ss.Config.Params.Hidden1Size.X) + hid2 := net.AddLayer2D("Hidden2", leabra.SuperLayer, ss.Config.Params.Hidden2Size.Y, ss.Config.Params.Hidden2Size.X) + out := net.AddLayer2D("Output", leabra.TargetLayer, 5, 5) // use this to position layers relative to each other // hid2.PlaceRightOf(hid1, 2) @@ -356,40 +230,37 @@ func (ss *Sim) ConfigNet(net *leabra.Network) { // net.LateralConnectLayerPath(hid1, full, &leabra.HebbPath{}).SetType(InhibPath) // note: if you wanted to change a layer type from e.g., Target to Compare, do this: - // out.SetType(emer.Compare) + // out.Type = leabra.CompareLayer // that would mean that the output layer doesn't reflect target values in plus phase // and thus removes error-driven learning -- but stats are still computed. net.Build() net.Defaults() + net.SetNThreads(ss.Config.Run.NThreads) ss.ApplyParams() net.InitWeights() } func (ss *Sim) ApplyParams() { - ss.Params.SetAll() - if ss.Config.Params.Network != nil { - ss.Params.SetNetworkMap(ss.Net, ss.Config.Params.Network) - } + ss.Params.Script = ss.Config.Params.Script + ss.Params.ApplyAll(ss.Net) } -//////////////////////////////////////////////////////////////////////////////// -// Init, utils +//////// Init, utils // Init restarts the run, and initializes everything, including network weights // and resets the epoch log table func (ss *Sim) Init() { - if ss.Config.GUI { - ss.Stats.SetString("RunName", ss.Params.RunName(0)) // in case user interactively changes tag - } ss.Loops.ResetCounters() + ss.SetRunName() ss.InitRandSeed(0) // ss.ConfigEnv() // re-config env just in case a different set of patterns was // selected or patterns have been modified etc ss.ApplyParams() + ss.StatsInit() ss.NewRun() - ss.ViewUpdate.RecordSyns() - ss.ViewUpdate.Update() + ss.TrainUpdate.RecordSyns() + ss.TrainUpdate.Update(Train, Trial) } // InitRandSeed initializes the random seed based on current training run number @@ -398,108 +269,84 @@ func (ss *Sim) InitRandSeed(run int) { ss.RandSeeds.Set(run, &ss.Net.Rand) } +// CurrentMode returns the current Train / Test mode from Context. +func (ss *Sim) CurrentMode() Modes { + ctx := ss.Net.Context() + var md Modes + md.SetInt64(int64(ctx.Mode)) + return md +} + +// NetViewUpdater returns the NetViewUpdate for given mode. +func (ss *Sim) NetViewUpdater(mode enums.Enum) *leabra.NetViewUpdate { + if mode.Int64() == Train.Int64() { + return &ss.TrainUpdate + } + return &ss.TestUpdate +} + // ConfigLoops configures the control loops: Training, Testing func (ss *Sim) ConfigLoops() { ls := looper.NewStacks() - trls := ss.Config.Run.NTrials + trials := int(math32.IntMultipleGE(float32(ss.Config.Run.Trials), float32(ss.Config.Run.NData))) + cycles := ss.Config.Run.Cycles + plusPhase := ss.Config.Run.PlusCycles - ls.AddStack(etime.Train). - AddTime(etime.Run, ss.Config.Run.NRuns). - AddTime(etime.Epoch, ss.Config.Run.NEpochs). - AddTime(etime.Trial, trls). - AddTime(etime.Cycle, 100) + ls.AddStack(Train, Trial). + AddLevel(Expt, 1). + AddLevel(Run, ss.Config.Run.Runs). + AddLevel(Epoch, ss.Config.Run.Epochs). + AddLevelIncr(Trial, trials, ss.Config.Run.NData). + AddLevel(Cycle, cycles) - ls.AddStack(etime.Test). - AddTime(etime.Epoch, 1). - AddTime(etime.Trial, trls). - AddTime(etime.Cycle, 100) + ls.AddStack(Test, Trial). + AddLevel(Epoch, 1). + AddLevelIncr(Trial, trials, ss.Config.Run.NData). + AddLevel(Cycle, cycles) - leabra.LooperStdPhases(ls, &ss.Context, ss.Net, 75, 99) // plus phase timing - leabra.LooperSimCycleAndLearn(ls, ss.Net, &ss.Context, &ss.ViewUpdate) // std algo code + leabra.LooperStandard(ls, ss.Net, ss.NetViewUpdater, cycles-plusPhase, cycles-1, Cycle, Trial, Train) - ls.Stacks[etime.Train].OnInit.Add("Init", func() { ss.Init() }) + ls.Stacks[Train].OnInit.Add("Init", func() { ss.Init() }) - for m, _ := range ls.Stacks { - st := ls.Stacks[m] - st.Loops[etime.Trial].OnStart.Add("ApplyInputs", func() { - ss.ApplyInputs() - }) - } + ls.AddOnStartToLoop(Trial, "ApplyInputs", func(mode enums.Enum) { + ss.ApplyInputs(mode.(Modes)) + }) - ls.Loop(etime.Train, etime.Run).OnStart.Add("NewRun", ss.NewRun) + ls.Loop(Train, Run).OnStart.Add("NewRun", ss.NewRun) - // Train stop early condition - ls.Loop(etime.Train, etime.Epoch).IsDone.AddBool("NZeroStop", func() bool { - // This is calculated in TrialStats + trainEpoch := ls.Loop(Train, Epoch) + trainEpoch.IsDone.AddBool("NZeroStop", func() bool { stopNz := ss.Config.Run.NZero if stopNz <= 0 { - stopNz = 2 + return false } - curNZero := ss.Stats.Int("NZero") + curModeDir := ss.Current.Dir(Train.String()) + curNZero := int(curModeDir.Value("NZero").Float1D(-1)) stop := curNZero >= stopNz return stop + return false }) - // Add Testing - trainEpoch := ls.Loop(etime.Train, etime.Epoch) trainEpoch.OnStart.Add("TestAtInterval", func() { if (ss.Config.Run.TestInterval > 0) && ((trainEpoch.Counter.Cur+1)%ss.Config.Run.TestInterval == 0) { - // Note the +1 so that it doesn't occur at the 0th timestep. ss.TestAll() } }) - ///////////////////////////////////////////// - // Logging - - ls.Loop(etime.Test, etime.Epoch).OnEnd.Add("LogTestErrors", func() { - leabra.LogTestErrors(&ss.Logs) - }) - ls.Loop(etime.Train, etime.Epoch).OnEnd.Add("PCAStats", func() { - trnEpc := ls.Stacks[etime.Train].Loops[etime.Epoch].Counter.Cur - if ss.Config.Run.PCAInterval > 0 && trnEpc%ss.Config.Run.PCAInterval == 0 { - leabra.PCAStats(ss.Net, &ss.Logs, &ss.Stats) - ss.Logs.ResetLog(etime.Analyze, etime.Trial) - } - }) - - ls.AddOnEndToAll("Log", func(mode, time enums.Enum) { - ss.Log(mode.(etime.Modes), time.(etime.Times)) - }) - leabra.LooperResetLogBelow(ls, &ss.Logs) - - ls.Loop(etime.Train, etime.Trial).OnEnd.Add("LogAnalyze", func() { - trnEpc := ls.Stacks[etime.Train].Loops[etime.Epoch].Counter.Cur - if (ss.Config.Run.PCAInterval > 0) && (trnEpc%ss.Config.Run.PCAInterval == 0) { - ss.Log(etime.Analyze, etime.Trial) - } - }) - - ls.Loop(etime.Train, etime.Run).OnEnd.Add("RunStats", func() { - ss.Logs.RunStats("PctCor", "FirstZero", "LastZero") - }) + ls.AddOnStartToAll("StatsStart", ss.StatsStart) + ls.AddOnEndToAll("StatsStep", ss.StatsStep) - // Save weights to file, to look at later - ls.Loop(etime.Train, etime.Run).OnEnd.Add("SaveWeights", func() { - ctrString := ss.Stats.PrintValues([]string{"Run", "Epoch"}, []string{"%03d", "%05d"}, "_") - leabra.SaveWeightsIfConfigSet(ss.Net, ss.Config.Log.SaveWeights, ctrString, ss.Stats.String("RunName")) + ls.Loop(Train, Run).OnEnd.Add("SaveWeights", func() { + ctrString := fmt.Sprintf("%03d_%05d", ls.Loop(Train, Run).Counter.Cur, ls.Loop(Train, Epoch).Counter.Cur) + leabra.SaveWeightsIfConfigSet(ss.Net, ss.Config.Log.SaveWeights, ctrString, ss.RunName()) }) - //////////////////////////////////////////// - // GUI + if ss.Config.GUI { + leabra.LooperUpdateNetView(ls, Cycle, Trial, ss.NetViewUpdater) - if !ss.Config.GUI { - if ss.Config.Log.NetData { - ls.Loop(etime.Test, etime.Trial).OnEnd.Add("NetDataRecord", func() { - ss.GUI.NetDataRecord(ss.ViewUpdate.Text) - }) - } - } else { - leabra.LooperUpdateNetView(ls, &ss.ViewUpdate, ss.Net, ss.NetViewCounters) - leabra.LooperUpdatePlots(ls, &ss.GUI) - ls.Stacks[etime.Train].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - ls.Stacks[etime.Test].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) + ls.Stacks[Train].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) + ls.Stacks[Test].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) } if ss.Config.Debug { @@ -508,231 +355,380 @@ func (ss *Sim) ConfigLoops() { ss.Loops = ls } -// ApplyInputs applies input patterns from given environment. -// It is good practice to have this be a separate method with appropriate -// args so that it can be used for various different contexts -// (training, testing, etc). -func (ss *Sim) ApplyInputs() { - ctx := &ss.Context +// ApplyInputs applies input patterns from given environment for given mode. +// Any other start-of-trial logic can also be put here. +func (ss *Sim) ApplyInputs(mode Modes) { net := ss.Net - ev := ss.Envs.ByMode(ctx.Mode).(*env.FixedTable) - ev.Step() + ndata := int(net.Context().NData) + curModeDir := ss.Current.Dir(mode.String()) + ev := ss.Envs.ByMode(mode) lays := net.LayersByType(leabra.InputLayer, leabra.TargetLayer) net.InitExt() - ss.Stats.SetString("TrialName", ev.TrialName.Cur) - for _, lnm := range lays { - ly := ss.Net.LayerByName(lnm) - pats := ev.State(ly.Name) - if pats != nil { - ly.ApplyExt(pats) + for di := range ndata { + ev.Step() + curModeDir.StringValue("TrialName", ndata).SetString1D(ev.String(), di) + for _, lnm := range lays { + ly := ss.Net.LayerByName(lnm) + st := ev.State(ly.Name) + if st != nil { + ly.ApplyExt(uint32(di), st) + } } } + net.ApplyExts() } -// NewRun intializes a new run of the model, using the TrainEnv.Run counter -// for the new run value +// NewRun intializes a new Run level of the model. func (ss *Sim) NewRun() { - ctx := &ss.Context - ss.InitRandSeed(ss.Loops.Loop(etime.Train, etime.Run).Counter.Cur) - ss.Envs.ByMode(etime.Train).Init(0) - ss.Envs.ByMode(etime.Test).Init(0) + ctx := ss.Net.Context() + ss.InitRandSeed(ss.Loops.Loop(Train, Run).Counter.Cur) + ss.Envs.ByMode(Train).Init(0) + ss.Envs.ByMode(Test).Init(0) ctx.Reset() - ctx.Mode = etime.Train ss.Net.InitWeights() - ss.InitStats() - ss.StatCounters() - ss.Logs.ResetLog(etime.Train, etime.Epoch) - ss.Logs.ResetLog(etime.Test, etime.Epoch) + if ss.Config.Run.StartWeights != "" { + ss.Net.OpenWeightsJSON(core.Filename(ss.Config.Run.StartWeights)) + mpi.Printf("Starting with initial weights from: %s\n", ss.Config.Run.StartWeights) + } } // TestAll runs through the full set of testing items func (ss *Sim) TestAll() { - ss.Envs.ByMode(etime.Test).Init(0) - ss.Loops.ResetAndRun(etime.Test) - ss.Loops.Mode = etime.Train // Important to reset Mode back to Train because this is called from within the Train Run. + ss.Envs.ByMode(Test).Init(0) + ss.Loops.ResetAndRun(Test) + ss.Loops.Mode = Train // important because this is called from Train Run: go back. } -///////////////////////////////////////////////////////////////////////// -// Patterns +//////// Inputs -func (ss *Sim) ConfigPatterns() { - dt := ss.Patterns - dt.SetMetaData("name", "TrainPatterns") - dt.SetMetaData("desc", "Training patterns") +func (ss *Sim) ConfigInputs() { + dt := table.New() + metadata.SetName(dt, "Train") + metadata.SetDoc(dt, "Training inputs") dt.AddStringColumn("Name") - dt.AddFloat32TensorColumn("Input", []int{5, 5}, "Y", "X") - dt.AddFloat32TensorColumn("Output", []int{5, 5}, "Y", "X") + dt.AddFloat32Column("Input", 5, 5) + dt.AddFloat32Column("Output", 5, 5) dt.SetNumRows(25) - patgen.PermutedBinaryMinDiff(dt.Columns[1].(*tensor.Float32), 6, 1, 0, 3) - patgen.PermutedBinaryMinDiff(dt.Columns[2].(*tensor.Float32), 6, 1, 0, 3) - dt.SaveCSV("random_5x5_25_gen.tsv", table.Tab, table.Headers) + patterns.PermutedBinaryMinDiff(dt.Columns.Values[1], 6, 1, 0, 3) + patterns.PermutedBinaryMinDiff(dt.Columns.Values[2], 6, 1, 0, 3) + dt.SaveCSV("random_5x5_25_gen.tsv", tensor.Tab, table.Headers) + + tensorfs.DirFromTable(ss.Root.Dir("Inputs/Train"), dt) } -func (ss *Sim) OpenPatterns() { - dt := ss.Patterns - dt.SetMetaData("name", "TrainPatterns") - dt.SetMetaData("desc", "Training patterns") - err := dt.OpenFS(patsfs, "random_5x5_25.tsv", table.Tab) - if err != nil { - log.Println(err) +// OpenTable opens a [table.Table] from embedded content, storing +// the data in the given tensorfs directory. +func (ss *Sim) OpenTable(dir *tensorfs.Node, fsys fs.FS, fnm, name, docs string) (*table.Table, error) { + dt := table.New() + metadata.SetName(dt, name) + metadata.SetDoc(dt, docs) + err := dt.OpenFS(content, fnm, tensor.Tab) + if errors.Log(err) != nil { + return dt, err } + tensorfs.DirFromTable(dir.Dir(name), dt) + return dt, err } -//////////////////////////////////////////////////////////////////////////////////////////// -// Stats +func (ss *Sim) OpenInputs() { + dir := ss.Root.Dir("Inputs") + ss.OpenTable(dir, content, "random_5x5_25.tsv", "Train", "Training inputs") +} + +//////// Stats -// InitStats initializes all the statistics. -// called at start of new run -func (ss *Sim) InitStats() { - ss.Stats.SetFloat("UnitErr", 0.0) - ss.Stats.SetFloat("CorSim", 0.0) - ss.Stats.SetString("TrialName", "") - ss.Logs.InitErrStats() // inits TrlErr, FirstZero, LastZero, NZero +// AddStat adds a stat compute function. +func (ss *Sim) AddStat(f func(mode Modes, level Levels, phase StatsPhase)) { + ss.StatFuncs = append(ss.StatFuncs, f) } -// StatCounters saves current counters to Stats, so they are available for logging etc -// Also saves a string rep of them for ViewUpdate.Text -func (ss *Sim) StatCounters() { - ctx := &ss.Context - mode := ctx.Mode - ss.Loops.Stacks[mode].CountersToStats(&ss.Stats) - // always use training epoch.. - trnEpc := ss.Loops.Stacks[etime.Train].Loops[etime.Epoch].Counter.Cur - ss.Stats.SetInt("Epoch", trnEpc) - trl := ss.Stats.Int("Trial") - ss.Stats.SetInt("Trial", trl) - ss.Stats.SetInt("Cycle", int(ctx.Cycle)) +// StatsStart is called by Looper at the start of given level, for each iteration. +// It needs to call RunStats Start at the next level down. +// e.g., each Epoch is the start of the full set of Trial Steps. +func (ss *Sim) StatsStart(lmd, ltm enums.Enum) { + mode := lmd.(Modes) + level := ltm.(Levels) + if level <= Trial { + return + } + ss.RunStats(mode, level-1, Start) } -func (ss *Sim) NetViewCounters(tm etime.Times) { - if ss.ViewUpdate.View == nil { +// StatsStep is called by Looper at each step of iteration, +// where it accumulates the stat results. +func (ss *Sim) StatsStep(lmd, ltm enums.Enum) { + mode := lmd.(Modes) + level := ltm.(Levels) + if level == Cycle { return } - if tm == etime.Trial { - ss.TrialStats() // get trial stats for current di + ss.RunStats(mode, level, Step) + tensorfs.DirTable(leabra.StatsNode(ss.Stats, mode, level), nil).WriteToLog() +} + +// RunStats runs the StatFuncs for given mode, level and phase. +func (ss *Sim) RunStats(mode Modes, level Levels, phase StatsPhase) { + for _, sf := range ss.StatFuncs { + sf(mode, level, phase) + } + if phase == Step && ss.GUI.Tabs != nil { + nm := mode.String() + " " + level.String() + " Plot" + ss.GUI.Tabs.AsLab().GoUpdatePlot(nm) + if level == Run { + ss.GUI.Tabs.AsLab().GoUpdatePlot("Train RunAll Plot") + } } - ss.StatCounters() - ss.ViewUpdate.Text = ss.Stats.Print([]string{"Run", "Epoch", "Trial", "TrialName", "Cycle", "UnitErr", "TrlErr", "CorSim"}) } -// TrialStats computes the trial-level statistics. -// Aggregation is done directly from log data. -func (ss *Sim) TrialStats() { - out := ss.Net.LayerByName("Output") +// SetRunName sets the overall run name, used for naming output logs and weight files +// based on params extra sheets and tag, and starting run number (for distributed runs). +func (ss *Sim) SetRunName() string { + runName := ss.Params.RunName(ss.Config.Run.Run) + ss.Current.StringValue("RunName", 1).SetString1D(runName, 0) + return runName +} - ss.Stats.SetFloat("CorSim", float64(out.CosDiff.Cos)) +// RunName returns the overall run name, used for naming output logs and weight files +// based on params extra sheets and tag, and starting run number (for distributed runs). +func (ss *Sim) RunName() string { + return ss.Current.StringValue("RunName", 1).String1D(0) +} - sse, avgsse := out.MSE(0.5) // 0.5 = per-unit tolerance -- right side of .5 - ss.Stats.SetFloat("SSE", sse) - ss.Stats.SetFloat("AvgSSE", avgsse) - if sse > 0 { - ss.Stats.SetFloat("TrlErr", 1) - } else { - ss.Stats.SetFloat("TrlErr", 0) +// StatsInit initializes all the stats by calling Start across all modes and levels. +func (ss *Sim) StatsInit() { + for md, st := range ss.Loops.Stacks { + mode := md.(Modes) + for _, lev := range st.Order { + level := lev.(Levels) + if level == Cycle { + continue + } + ss.RunStats(mode, level, Start) + } + } + if ss.GUI.Tabs != nil { + tbs := ss.GUI.Tabs.AsLab() + _, idx := tbs.CurrentTab() + tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Train, Epoch)) + tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Train, Run)) + tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Test, Trial)) + tbs.PlotTensorFS(ss.Stats.Dir("Train/RunAll")) + tbs.SelectTabIndex(idx) } } -////////////////////////////////////////////////////////////////////////////// -// Logging - -func (ss *Sim) ConfigLogs() { - ss.Stats.SetString("RunName", ss.Params.RunName(0)) // used for naming logs, stats, etc - - ss.Logs.AddCounterItems(etime.Run, etime.Epoch, etime.Trial, etime.Cycle) - ss.Logs.AddStatStringItem(etime.AllModes, etime.AllTimes, "RunName") - ss.Logs.AddStatStringItem(etime.AllModes, etime.Trial, "TrialName") +// ConfigStats handles configures functions to do all stats computation +// in the tensorfs system. +func (ss *Sim) ConfigStats() { + net := ss.Net + ss.Stats = ss.Root.Dir("Stats") + ss.Current = ss.Stats.Dir("Current") - ss.Logs.AddStatAggItem("CorSim", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("UnitErr", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddErrStatAggItems("TrlErr", etime.Run, etime.Epoch, etime.Trial) + ss.SetRunName() - ss.Logs.AddCopyFromFloatItems(etime.Train, []etime.Times{etime.Epoch, etime.Run}, etime.Test, etime.Epoch, "Tst", "CorSim", "UnitErr", "PctCor", "PctErr") + // last arg(s) are levels to exclude + counterFunc := leabra.StatLoopCounters(ss.Stats, ss.Current, ss.Loops, net, Trial, Cycle) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + counterFunc(mode, level, phase == Start) + }) + runNameFunc := leabra.StatRunName(ss.Stats, ss.Current, ss.Loops, net, Trial, Cycle) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + runNameFunc(mode, level, phase == Start) + }) + trialNameFunc := leabra.StatTrialName(ss.Stats, ss.Current, ss.Loops, net, Trial) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + trialNameFunc(mode, level, phase == Start) + }) - ss.Logs.AddPerTrlMSec("PerTrlMSec", etime.Run, etime.Epoch, etime.Trial) + // up to a point, it is good to use loops over stats in one function, + // to reduce repetition of boilerplate. + statNames := []string{"CorSim", "UnitErr", "Err", "NZero", "FirstZero", "LastZero"} + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + for _, name := range statNames { + if name == "NZero" && (mode != Train || level == Trial) { + return + } + modeDir := ss.Stats.Dir(mode.String()) + curModeDir := ss.Current.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + subDir := modeDir.Dir((level - 1).String()) // note: will fail for Cycle + tsr := levelDir.Float64(name) + ndata := int(ss.Net.Context().NData) + var stat float64 + if phase == Start { + tsr.SetNumRows(0) + plot.SetFirstStyler(tsr, func(s *plot.Style) { + s.Range.SetMin(0).SetMax(1) + s.On = true + switch name { + case "NZero": + s.On = false + case "FirstZero", "LastZero": + if level < Run { + s.On = false + } + } + }) + switch name { + case "NZero": + if level == Epoch { + curModeDir.Float64(name, 1).SetFloat1D(0, 0) + } + case "FirstZero", "LastZero": + if level == Epoch { + curModeDir.Float64(name, 1).SetFloat1D(-1, 0) + } + } + continue + } + switch level { + case Trial: + out := ss.Net.LayerByName("Output") + for di := range ndata { + var stat float64 + switch name { + case "CorSim": + stat = 1.0 - float64(leabra.LayerStates.Value(int(out.Index), int(di), int(leabra.LayerPhaseDiff))) + case "UnitErr": + stat = out.PctUnitErr(ss.Net.Context())[di] + case "Err": + uniterr := curModeDir.Float64("UnitErr", ndata).Float1D(di) + stat = 1.0 + if uniterr == 0 { + stat = 0 + } + } + curModeDir.Float64(name, ndata).SetFloat1D(stat, di) + tsr.AppendRowFloat(stat) + } + case Epoch: + nz := curModeDir.Float64("NZero", 1).Float1D(0) + switch name { + case "NZero": + err := stats.StatSum.Call(subDir.Value("Err")).Float1D(0) + stat = curModeDir.Float64(name, 1).Float1D(0) + if err == 0 { + stat++ + } else { + stat = 0 + } + curModeDir.Float64(name, 1).SetFloat1D(stat, 0) + case "FirstZero": + stat = curModeDir.Float64(name, 1).Float1D(0) + if stat < 0 && nz == 1 { + stat = curModeDir.Int("Epoch", 1).Float1D(0) + } + curModeDir.Float64(name, 1).SetFloat1D(stat, 0) + case "LastZero": + stat = curModeDir.Float64(name, 1).Float1D(0) + if stat < 0 && nz >= float64(ss.Config.Run.NZero) { + stat = curModeDir.Int("Epoch", 1).Float1D(0) + } + curModeDir.Float64(name, 1).SetFloat1D(stat, 0) + default: + stat = stats.StatMean.Call(subDir.Value(name)).Float1D(0) + } + tsr.AppendRowFloat(stat) + case Run: + stat = stats.StatFinal.Call(subDir.Value(name)).Float1D(0) + tsr.AppendRowFloat(stat) + default: // Expt + stat = stats.StatMean.Call(subDir.Value(name)).Float1D(0) + tsr.AppendRowFloat(stat) + } + } + }) - layers := ss.Net.LayersByType(leabra.SuperLayer, leabra.CTLayer, leabra.TargetLayer) - leabra.LogAddDiagnosticItems(&ss.Logs, layers, etime.Train, etime.Epoch, etime.Trial) - leabra.LogInputLayer(&ss.Logs, ss.Net, etime.Train) + perTrlFunc := leabra.StatPerTrialMSec(ss.Stats, Train, Trial) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + perTrlFunc(mode, level, phase == Start) + }) - leabra.LogAddPCAItems(&ss.Logs, ss.Net, etime.Train, etime.Run, etime.Epoch, etime.Trial) + lays := net.LayersByType(leabra.SuperLayer, leabra.CTLayer, leabra.TargetLayer) + actGeFunc := leabra.StatLayerActGe(ss.Stats, net, Train, Trial, Run, lays...) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + actGeFunc(mode, level, phase == Start) + }) - ss.Logs.AddLayerTensorItems(ss.Net, "Act", etime.Test, etime.Trial, "InputLayer", "TargetLayer") + pcaFunc := leabra.StatPCA(ss.Stats, ss.Current, net, ss.Config.Run.PCAInterval, Train, Trial, Run, lays...) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + trnEpc := ss.Loops.Loop(Train, Epoch).Counter.Cur + pcaFunc(mode, level, phase == Start, trnEpc) + }) - ss.Logs.PlotItems("CorSim", "PctCor", "FirstZero", "LastZero") + stateFunc := leabra.StatLayerState(ss.Stats, net, Test, Trial, true, "ActM", "Input", "Output") + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + stateFunc(mode, level, phase == Start) + }) - ss.Logs.CreateTables() - ss.Logs.SetContext(&ss.Stats, ss.Net) - // don't plot certain combinations we don't use - ss.Logs.NoPlot(etime.Train, etime.Cycle) - ss.Logs.NoPlot(etime.Test, etime.Run) - // note: Analyze not plotted by default - ss.Logs.SetMeta(etime.Train, etime.Run, "LegendCol", "RunName") + runAllFunc := leabra.StatLevelAll(ss.Stats, Train, Run, func(s *plot.Style, cl tensor.Values) { + name := metadata.Name(cl) + switch name { + case "FirstZero", "LastZero": + s.On = true + s.Range.SetMin(0) + } + }) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + runAllFunc(mode, level, phase == Start) + }) } -// Log is the main logging function, handles special things for different scopes -func (ss *Sim) Log(mode etime.Modes, time etime.Times) { - ctx := &ss.Context - if mode != etime.Analyze { - ctx.Mode = mode // Also set specifically in a Loop callback. +// StatCounters returns counters string to show at bottom of netview. +func (ss *Sim) StatCounters(mode, level enums.Enum) string { + counters := ss.Loops.Stacks[mode].CountersString() + vu := ss.NetViewUpdater(mode) + if vu == nil || vu.View == nil { + return counters } - dt := ss.Logs.Table(mode, time) - if dt == nil { - return + di := vu.View.Di + counters += fmt.Sprintf(" Di: %d", di) + curModeDir := ss.Current.Dir(mode.String()) + if curModeDir.Node("TrialName") == nil { + return counters } - row := dt.Rows - - switch { - case time == etime.Cycle: - return - case time == etime.Trial: - ss.TrialStats() - ss.StatCounters() + counters += fmt.Sprintf(" TrialName: %s", curModeDir.StringValue("TrialName").String1D(di)) + statNames := []string{"CorSim", "UnitErr", "Err"} + if level == Cycle || curModeDir.Node(statNames[0]) == nil { + return counters } - - ss.Logs.LogRow(mode, time, row) // also logs to file, etc + for _, name := range statNames { + counters += fmt.Sprintf(" %s: %.4g", name, curModeDir.Float64(name).Float1D(di)) + } + return counters } -//////////////////////////////////////////////////////////////////////////////////////////// -// Gui +//////// GUI // ConfigGUI configures the Cogent Core GUI interface for this simulation. -func (ss *Sim) ConfigGUI() { - title := "Leabra Random Associator" - ss.GUI.MakeBody(ss, "ra25", title, `This demonstrates a basic Leabra model. See emergent on GitHub.

`) - ss.GUI.CycleUpdateInterval = 10 - +func (ss *Sim) ConfigGUI(b tree.Node) { + ss.GUI.MakeBody(b, ss, ss.Root, ss.Config.Name, ss.Config.Title, ss.Config.Doc) + ss.GUI.StopLevel = Trial nv := ss.GUI.AddNetView("Network") - nv.Options.MaxRecs = 300 + nv.Options.MaxRecs = 2 * ss.Config.Run.Cycles + nv.Options.Raster.Max = ss.Config.Run.Cycles nv.SetNet(ss.Net) - ss.ViewUpdate.Config(nv, etime.AlphaCycle, etime.AlphaCycle) - ss.GUI.ViewUpdate = &ss.ViewUpdate + ss.TrainUpdate.Config(nv, leabra.Theta, ss.StatCounters) + ss.TestUpdate.Config(nv, leabra.Theta, ss.StatCounters) + ss.GUI.OnStop = func(mode, level enums.Enum) { + vu := ss.NetViewUpdater(mode) + vu.UpdateWhenStopped(mode, level) + } - nv.SceneXYZ().Camera.Pose.Pos.Set(0, 1, 2.75) // more "head on" than default which is more "top down" + nv.SceneXYZ().Camera.Pose.Pos.Set(0, 1, 2.75) nv.SceneXYZ().Camera.LookAt(math32.Vec3(0, 0, 0), math32.Vec3(0, 1, 0)) - ss.GUI.AddPlots(title, &ss.Logs) - + ss.StatsInit() ss.GUI.FinalizeGUI(false) } func (ss *Sim) MakeToolbar(p *tree.Plan) { ss.GUI.AddLooperCtrl(p, ss.Loops) - //////////////////////////////////////////////// tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "Reset RunLog", - Icon: icons.Reset, - Tooltip: "Reset the accumulated log of all Runs, which are tagged with the ParamSet used", - Active: egui.ActiveAlways, - Func: func() { - ss.Logs.ResetLog(etime.Train, etime.Run) - ss.GUI.UpdatePlot(etime.Train, etime.Run) - }, - }) - //////////////////////////////////////////////// - tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "New Seed", + ss.GUI.AddToolbarItem(p, egui.ToolbarItem{ + Label: "New Seed", Icon: icons.Add, Tooltip: "Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time.", Active: egui.ActiveAlways, @@ -740,63 +736,42 @@ func (ss *Sim) MakeToolbar(p *tree.Plan) { ss.RandSeeds.NewSeeds() }, }) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "README", + ss.GUI.AddToolbarItem(p, egui.ToolbarItem{ + Label: "README", Icon: icons.FileMarkdown, Tooltip: "Opens your browser on the README file that contains instructions for how to run this model.", Active: egui.ActiveAlways, Func: func() { - core.TheApp.OpenURL("https://github.com/emer/leabra/blob/main/examples/ra25/README.md") + core.TheApp.OpenURL(ss.Config.URL) }, }) } func (ss *Sim) RunGUI() { ss.Init() - ss.ConfigGUI() + ss.ConfigGUI(nil) ss.GUI.Body.RunMainWindow() } func (ss *Sim) RunNoGUI() { + ss.Init() + if ss.Config.Params.Note != "" { mpi.Printf("Note: %s\n", ss.Config.Params.Note) } if ss.Config.Log.SaveWeights { mpi.Printf("Saving final weights per run\n") } - runName := ss.Params.RunName(ss.Config.Run.Run) - ss.Stats.SetString("RunName", runName) // used for naming logs, stats, etc - netName := ss.Net.Name - elog.SetLogFile(&ss.Logs, ss.Config.Log.Trial, etime.Train, etime.Trial, "trl", netName, runName) - elog.SetLogFile(&ss.Logs, ss.Config.Log.Epoch, etime.Train, etime.Epoch, "epc", netName, runName) - elog.SetLogFile(&ss.Logs, ss.Config.Log.Run, etime.Train, etime.Run, "run", netName, runName) - elog.SetLogFile(&ss.Logs, ss.Config.Log.TestEpoch, etime.Test, etime.Epoch, "tst_epc", netName, runName) - elog.SetLogFile(&ss.Logs, ss.Config.Log.TestTrial, etime.Test, etime.Trial, "tst_trl", netName, runName) - - netdata := ss.Config.Log.NetData - if netdata { - mpi.Printf("Saving NetView data from testing\n") - ss.GUI.InitNetData(ss.Net, 200) - } - - ss.Init() - - mpi.Printf("Running %d Runs starting at %d\n", ss.Config.Run.NRuns, ss.Config.Run.Run) - ss.Loops.Loop(etime.Train, etime.Run).Counter.SetCurMaxPlusN(ss.Config.Run.Run, ss.Config.Run.NRuns) - - if ss.Config.Run.StartWts != "" { // this is just for testing -- not usually needed - ss.Loops.Step(etime.Train, 1, etime.Trial) // get past NewRun - ss.Net.OpenWeightsJSON(core.Filename(ss.Config.Run.StartWts)) - mpi.Printf("Starting with initial weights from: %s\n", ss.Config.Run.StartWts) - } - - mpi.Printf("Set NThreads to: %d\n", ss.Net.NThreads) + runName := ss.SetRunName() + netName := ss.Net.Name + cfg := &ss.Config.Log + leabra.OpenLogFiles(ss.Loops, ss.Stats, netName, runName, [][]string{cfg.Train, cfg.Test}) - ss.Loops.Run(etime.Train) + mpi.Printf("Running %d Runs starting at %d\n", ss.Config.Run.Runs, ss.Config.Run.Run) + ss.Loops.Loop(Train, Run).Counter.SetCurMaxPlusN(ss.Config.Run.Run, ss.Config.Run.Runs) - ss.Logs.CloseLogFiles() + ss.Loops.Run(Train) - if netdata { - ss.GUI.SaveNetData(ss.Stats.String("RunName")) - } + leabra.CloseLogFiles(ss.Loops, ss.Stats, Cycle) } diff --git a/examples/ra25/typegen.go b/examples/ra25/typegen.go index 4163884..2310e29 100644 --- a/examples/ra25/typegen.go +++ b/examples/ra25/typegen.go @@ -1,17 +1,29 @@ -// Code generated by "core generate -add-types"; DO NOT EDIT. +// Code generated by "core generate -add-types -add-funcs -gosl"; DO NOT EDIT. -package main +package ra25 import ( "cogentcore.org/core/types" ) -var _ = types.AddType(&types.Type{Name: "main.ParamConfig", IDName: "param-config", Doc: "ParamConfig has config parameters related to sim params", Fields: []types.Field{{Name: "Network", Doc: "network parameters"}, {Name: "Hidden1Size", Doc: "size of hidden layer -- can use emer.LaySize for 4D layers"}, {Name: "Hidden2Size", Doc: "size of hidden layer -- can use emer.LaySize for 4D layers"}, {Name: "Sheet", Doc: "Extra Param Sheet name(s) to use (space separated if multiple).\nmust be valid name as listed in compiled-in params or loaded params"}, {Name: "Tag", Doc: "extra tag to add to file names and logs saved from this run"}, {Name: "Note", Doc: "user note -- describe the run params etc -- like a git commit message for the run"}, {Name: "File", Doc: "Name of the JSON file to input saved parameters from."}, {Name: "SaveAll", Doc: "Save a snapshot of all current param and config settings\nin a directory named params_ (or _good if Good is true), then quit.\nUseful for comparing to later changes and seeing multiple views of current params."}, {Name: "Good", Doc: "For SaveAll, save to params_good for a known good params state.\nThis can be done prior to making a new release after all tests are passing.\nadd results to git to provide a full diff record of all params over time."}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.ParamConfig", IDName: "param-config", Doc: "ParamConfig has config parameters related to sim params.", Fields: []types.Field{{Name: "Hidden1Size", Doc: "Hidden1Size is the size of hidden 1 layer."}, {Name: "Hidden2Size", Doc: "Hidden2Size is the size of hidden 2 layer."}, {Name: "Script", Doc: "Script is an interpreted script that is run to set parameters in Layer and Path\nsheets, by default using the \"Script\" set name."}, {Name: "Sheet", Doc: "Sheet is the extra params sheet name(s) to use (space separated\nif multiple). Must be valid name as listed in compiled-in params\nor loaded params."}, {Name: "Tag", Doc: "Tag is an extra tag to add to file names and logs saved from this run."}, {Name: "Note", Doc: "Note is additional info to describe the run params etc,\nlike a git commit message for the run."}, {Name: "SaveAll", Doc: "SaveAll will save a snapshot of all current param and config settings\nin a directory named params_ (or _good if Good is true),\nthen quit. Useful for comparing to later changes and seeing multiple\nviews of current params."}, {Name: "Good", Doc: "Good is for SaveAll, save to params_good for a known good params state.\nThis can be done prior to making a new release after all tests are passing.\nAdd results to git to provide a full diff record of all params over level."}}}) -var _ = types.AddType(&types.Type{Name: "main.RunConfig", IDName: "run-config", Doc: "RunConfig has config parameters related to running the sim", Fields: []types.Field{{Name: "Run", Doc: "starting run number, which determines the random seed.\nruns counts from there, can do all runs in parallel by launching\nseparate jobs with each run, runs = 1."}, {Name: "NRuns", Doc: "total number of runs to do when running Train"}, {Name: "NEpochs", Doc: "total number of epochs per run"}, {Name: "NZero", Doc: "stop run after this number of perfect, zero-error epochs."}, {Name: "NTrials", Doc: "total number of trials per epoch. Should be an even multiple of NData."}, {Name: "TestInterval", Doc: "how often to run through all the test patterns, in terms of training epochs.\ncan use 0 or -1 for no testing."}, {Name: "PCAInterval", Doc: "how frequently (in epochs) to compute PCA on hidden representations\nto measure variance?"}, {Name: "StartWts", Doc: "if non-empty, is the name of weights file to load at start\nof first run, for testing."}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.RunConfig", IDName: "run-config", Doc: "RunConfig has config parameters related to running the sim.", Fields: []types.Field{{Name: "NData", Doc: "NData is the number of data-parallel items to process in parallel per trial.\nIs significantly faster for both CPU and GPU. Results in an effective\nmini-batch of learning."}, {Name: "NThreads", Doc: "NThreads is the number of parallel threads for CPU computation;\n0 = use default."}, {Name: "Run", Doc: "Run is the _starting_ run number, which determines the random seed.\nRuns counts up from there. Can do all runs in parallel by launching\nseparate jobs with each starting Run, Runs = 1."}, {Name: "Runs", Doc: "Runs is the total number of runs to do when running Train, starting from Run."}, {Name: "Epochs", Doc: "Epochs is the total number of epochs per run."}, {Name: "Trials", Doc: "Trials is the total number of trials per epoch.\nShould be an even multiple of NData."}, {Name: "Cycles", Doc: "Cycles is the total number of cycles per trial: at least 200."}, {Name: "PlusCycles", Doc: "PlusCycles is the total number of plus-phase cycles per trial. For Cycles=300, use 100."}, {Name: "NZero", Doc: "NZero is how many perfect, zero-error epochs before stopping a Run."}, {Name: "TestInterval", Doc: "TestInterval is how often (in epochs) to run through all the test patterns,\nin terms of training epochs. Can use 0 or -1 for no testing."}, {Name: "PCAInterval", Doc: "PCAInterval is how often (in epochs) to compute PCA on hidden\nrepresentations to measure variance."}, {Name: "StartWeights", Doc: "StartWeights is the name of weights file to load at start of first run."}}}) -var _ = types.AddType(&types.Type{Name: "main.LogConfig", IDName: "log-config", Doc: "LogConfig has config parameters related to logging data", Fields: []types.Field{{Name: "SaveWeights", Doc: "if true, save final weights after each run"}, {Name: "Epoch", Doc: "if true, save train epoch log to file, as .epc.tsv typically"}, {Name: "Run", Doc: "if true, save run log to file, as .run.tsv typically"}, {Name: "Trial", Doc: "if true, save train trial log to file, as .trl.tsv typically. May be large."}, {Name: "TestEpoch", Doc: "if true, save testing epoch log to file, as .tst_epc.tsv typically. In general it is better to copy testing items over to the training epoch log and record there."}, {Name: "TestTrial", Doc: "if true, save testing trial log to file, as .tst_trl.tsv typically. May be large."}, {Name: "NetData", Doc: "if true, save network activation etc data from testing trials,\nfor later viewing in netview."}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.LogConfig", IDName: "log-config", Doc: "LogConfig has config parameters related to logging data.", Fields: []types.Field{{Name: "SaveWeights", Doc: "SaveWeights will save final weights after each run."}, {Name: "Train", Doc: "Train has the list of Train mode levels to save log files for."}, {Name: "Test", Doc: "Test has the list of Test mode levels to save log files for."}}}) -var _ = types.AddType(&types.Type{Name: "main.Config", IDName: "config", Doc: "Config is a standard Sim config -- use as a starting point.", Fields: []types.Field{{Name: "Includes", Doc: "specify include files here, and after configuration,\nit contains list of include files added."}, {Name: "GUI", Doc: "open the GUI -- does not automatically run -- if false,\nthen runs automatically and quits."}, {Name: "Debug", Doc: "log debugging information"}, {Name: "Params", Doc: "parameter related configuration options"}, {Name: "Run", Doc: "sim running related configuration options"}, {Name: "Log", Doc: "data logging related configuration options"}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.Config", IDName: "config", Doc: "Config has the overall Sim configuration options.", Fields: []types.Field{{Name: "Name", Doc: "Name is the short name of the sim."}, {Name: "Title", Doc: "Title is the longer title of the sim."}, {Name: "URL", Doc: "URL is a link to the online README or other documentation for this sim."}, {Name: "Doc", Doc: "Doc is brief documentation of the sim."}, {Name: "Includes", Doc: "Includes has a list of additional config files to include.\nAfter configuration, it contains list of include files added."}, {Name: "GUI", Doc: "GUI means open the GUI. Otherwise it runs automatically and quits,\nsaving results to log files."}, {Name: "Debug", Doc: "Debug reports debugging information."}, {Name: "Params", Doc: "Params has parameter related configuration options."}, {Name: "Run", Doc: "Run has sim running related configuration options."}, {Name: "Log", Doc: "Log has data logging related configuration options."}}}) -var _ = types.AddType(&types.Type{Name: "main.Sim", IDName: "sim", Doc: "Sim encapsulates the entire simulation model, and we define all the\nfunctionality as methods on this struct. This structure keeps all relevant\nstate information organized and available without having to pass everything around\nas arguments to methods, and provides the core GUI interface (note the view tags\nfor the fields which provide hints to how things should be displayed).", Fields: []types.Field{{Name: "Config", Doc: "simulation configuration parameters -- set by .toml config file and / or args"}, {Name: "Net", Doc: "the network -- click to view / edit parameters for layers, paths, etc"}, {Name: "Params", Doc: "network parameter management"}, {Name: "Loops", Doc: "contains looper control loops for running sim"}, {Name: "Stats", Doc: "contains computed statistic values"}, {Name: "Logs", Doc: "Contains all the logs and information about the logs.'"}, {Name: "Patterns", Doc: "the training patterns to use"}, {Name: "Envs", Doc: "Environments"}, {Name: "Context", Doc: "leabra timing parameters and state"}, {Name: "ViewUpdate", Doc: "netview update parameters"}, {Name: "GUI", Doc: "manages all the gui elements"}, {Name: "RandSeeds", Doc: "a list of random seeds to use for each run"}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.Modes", IDName: "modes", Doc: "Modes are the looping modes (Stacks) for running and statistics."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.Levels", IDName: "levels", Doc: "Levels are the looping levels for running and statistics."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.StatsPhase", IDName: "stats-phase", Doc: "StatsPhase is the phase of stats processing for given mode, level.\nAccumulated values are reset at Start, added each Step."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.Sim", IDName: "sim", Doc: "Sim encapsulates the entire simulation model, and we define all the\nfunctionality as methods on this struct. This structure keeps all relevant\nstate information organized and available without having to pass everything around\nas arguments to methods, and provides the core GUI interface (note the view tags\nfor the fields which provide hints to how things should be displayed).", Fields: []types.Field{{Name: "Config", Doc: "simulation configuration parameters -- set by .toml config file and / or args"}, {Name: "Net", Doc: "Net is the network: click to view / edit parameters for layers, paths, etc."}, {Name: "Params", Doc: "Params manages network parameter setting."}, {Name: "Loops", Doc: "Loops are the control loops for running the sim, in different Modes\nacross stacks of Levels."}, {Name: "Envs", Doc: "Envs provides mode-string based storage of environments."}, {Name: "TrainUpdate", Doc: "TrainUpdate has Train mode netview update parameters."}, {Name: "TestUpdate", Doc: "TestUpdate has Test mode netview update parameters."}, {Name: "Root", Doc: "Root is the root tensorfs directory, where all stats and other misc sim data goes."}, {Name: "Stats", Doc: "Stats has the stats directory within Root."}, {Name: "Current", Doc: "Current has the current stats values within Stats."}, {Name: "StatFuncs", Doc: "StatFuncs are statistics functions called at given mode and level,\nto perform all stats computations. phase = Start does init at start of given level,\nand all intialization / configuration (called during Init too)."}, {Name: "GUI", Doc: "GUI manages all the GUI elements"}, {Name: "RandSeeds", Doc: "RandSeeds is a list of random seeds to use for each run."}}}) + +var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/examples/ra25.NewConfig", Returns: []string{"Config"}}) + +var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/examples/ra25.RunSim", Doc: "RunSim runs the simulation as a standalone app\nwith given configuration.", Args: []string{"cfg"}, Returns: []string{"error"}}) + +var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/examples/ra25.EmbedSim", Doc: "EmbedSim runs the simulation with default configuration\nembedded within given body element.", Args: []string{"b"}, Returns: []string{"Sim"}}) diff --git a/go.mod b/go.mod index a5d6996..a7cd6be 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,9 @@ module github.com/emer/leabra/v2 go 1.22.0 require ( - cogentcore.org/core v0.3.9-0.20250127075122-ddf64b82d707 - cogentcore.org/lab v0.0.0-20250116065728-014d19175d12 - github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250128232110-1e71a5c7249b - github.com/emer/etensor v0.0.0-20250128230539-a9366874f7c3 + cogentcore.org/core v0.3.12-0.20250708071531-c93d8bc12968 + cogentcore.org/lab v0.1.2-0.20250708073836-e69d5b7332a1 + github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f ) require ( diff --git a/leabra/deep_net.go b/leabra/deep_net.go index ccd2e6e..00ad757 100644 --- a/leabra/deep_net.go +++ b/leabra/deep_net.go @@ -10,32 +10,32 @@ import ( // AddSuperLayer2D adds a SuperLayer of given size, with given name. func (nt *Network) AddSuperLayer2D(name string, nNeurY, nNeurX int) *Layer { - return nt.AddLayer2D(name, nNeurY, nNeurX, SuperLayer) + return nt.AddLayer2D(name, SuperLayer, nNeurY, nNeurX) } // AddSuperLayer4D adds a SuperLayer of given size, with given name. func (nt *Network) AddSuperLayer4D(name string, nPoolsY, nPoolsX, nNeurY, nNeurX int) *Layer { - return nt.AddLayer4D(name, nPoolsY, nPoolsX, nNeurY, nNeurX, SuperLayer) + return nt.AddLayer4D(name, SuperLayer, nPoolsY, nPoolsX, nNeurY, nNeurX) } // AddCTLayer2D adds a CTLayer of given size, with given name. func (nt *Network) AddCTLayer2D(name string, nNeurY, nNeurX int) *Layer { - return nt.AddLayer2D(name, nNeurY, nNeurX, CTLayer) + return nt.AddLayer2D(name, CTLayer, nNeurY, nNeurX) } // AddCTLayer4D adds a CTLayer of given size, with given name. func (nt *Network) AddCTLayer4D(name string, nPoolsY, nPoolsX, nNeurY, nNeurX int) *Layer { - return nt.AddLayer4D(name, nPoolsY, nPoolsX, nNeurY, nNeurX, CTLayer) + return nt.AddLayer4D(name, CTLayer, nPoolsY, nPoolsX, nNeurY, nNeurX) } // AddPulvinarLayer2D adds a PulvinarLayer of given size, with given name. func (nt *Network) AddPulvinarLayer2D(name string, nNeurY, nNeurX int) *Layer { - return nt.AddLayer2D(name, nNeurY, nNeurX, PulvinarLayer) + return nt.AddLayer2D(name, PulvinarLayer, nNeurY, nNeurX) } // AddPulvinarLayer4D adds a PulvinarLayer of given size, with given name. func (nt *Network) AddPulvinarLayer4D(name string, nPoolsY, nPoolsX, nNeurY, nNeurX int) *Layer { - return nt.AddLayer4D(name, nPoolsY, nPoolsX, nNeurY, nNeurX, PulvinarLayer) + return nt.AddLayer4D(name, PulvinarLayer, nPoolsY, nPoolsX, nNeurY, nNeurX) } // ConnectSuperToCT adds a CTCtxtPath from given sending Super layer to a CT layer diff --git a/leabra/helpers.go b/leabra/helpers.go index f1e8490..9faef64 100644 --- a/leabra/helpers.go +++ b/leabra/helpers.go @@ -9,13 +9,12 @@ import ( "cogentcore.org/core/core" "cogentcore.org/lab/base/mpi" - "github.com/emer/emergent/v2/ecmd" ) -//////////////////////////////////////////////////// -// Misc +//////// Misc -// ToggleLayersOff can be used to disable layers in a Network, for example if you are doing an ablation study. +// ToggleLayersOff can be used to disable layers in a Network, +// for example if you are doing an ablation study. func ToggleLayersOff(net *Network, layerNames []string, off bool) { for _, lnm := range layerNames { lyi := net.LayerByName(lnm) @@ -27,8 +26,7 @@ func ToggleLayersOff(net *Network, layerNames []string, off bool) { } } -///////////////////////////////////////////// -// Weights files +//////// Weights files // WeightsFilename returns default current weights file name, // using train run and epoch counters from looper @@ -51,17 +49,6 @@ func SaveWeights(net *Network, ctrString, runName string) string { return fnm } -// SaveWeightsIfArgSet saves network weights if the "wts" arg has been set to true. -// uses WeightsFilename information to identify the weights. -// only for 0 rank MPI if running mpi -// Returns the name of the file saved to, or empty if not saved. -func SaveWeightsIfArgSet(net *Network, args *ecmd.Args, ctrString, runName string) string { - if args.Bool("wts") { - return SaveWeights(net, ctrString, runName) - } - return "" -} - // SaveWeightsIfConfigSet saves network weights if the given config // bool value has been set to true. // uses WeightsFilename information to identify the weights. diff --git a/leabra/layer.go b/leabra/layer.go index b42a30d..1db3520 100644 --- a/leabra/layer.go +++ b/leabra/layer.go @@ -11,7 +11,7 @@ import ( "cogentcore.org/core/enums" "cogentcore.org/core/math32" "cogentcore.org/lab/base/randx" - "github.com/emer/etensor/tensor" + "cogentcore.org/lab/tensor" ) ////////////////////////////////////////////////////////////////////////////////////// @@ -169,8 +169,8 @@ func (ly *Layer) ApplyExt2D(ext tensor.Tensor) { for y := 0; y < ymx; y++ { for x := 0; x < xmx; x++ { idx := []int{y, x} - vl := float32(ext.Float(idx)) - i := ly.Shape.Offset(idx) + vl := float32(ext.Float(idx...)) + i := ly.Shape.IndexTo1D(idx...) ly.ApplyExtValue(i, vl, clear, set, toTarg) } } @@ -186,7 +186,7 @@ func (ly *Layer) ApplyExt2Dto4D(ext tensor.Tensor) { for y := 0; y < ymx; y++ { for x := 0; x < xmx; x++ { idx := []int{y, x} - vl := float32(ext.Float(idx)) + vl := float32(ext.Float(idx...)) ui := tensor.Projection2DIndex(&ly.Shape, false, y, x) ly.ApplyExtValue(ui, vl, clear, set, toTarg) } @@ -205,8 +205,8 @@ func (ly *Layer) ApplyExt4D(ext tensor.Tensor) { for yn := 0; yn < ynmx; yn++ { for xn := 0; xn < xnmx; xn++ { idx := []int{yp, xp, yn, xn} - vl := float32(ext.Float(idx)) - i := ly.Shape.Offset(idx) + vl := float32(ext.Float(idx...)) + i := ly.Shape.IndexTo1D(idx...) ly.ApplyExtValue(i, vl, clear, set, toTarg) } } diff --git a/leabra/layerbase.go b/leabra/layerbase.go index 69c6e95..e4b706d 100644 --- a/leabra/layerbase.go +++ b/leabra/layerbase.go @@ -5,20 +5,19 @@ package leabra import ( - "encoding/json" "fmt" "io" - "log" - "math" + "reflect" "strconv" "strings" "cogentcore.org/core/base/errors" "cogentcore.org/core/base/num" + "cogentcore.org/core/base/reflectx" "cogentcore.org/core/math32" "github.com/emer/emergent/v2/emer" + "github.com/emer/emergent/v2/params" "github.com/emer/emergent/v2/weights" - "github.com/emer/etensor/tensor" ) // Layer implements the Leabra algorithm at the layer level, @@ -208,31 +207,70 @@ func (ly *Layer) ShouldDisplay(field string) bool { return true } -// JsonToParams reformates json output to suitable params display output -func JsonToParams(b []byte) string { - br := strings.Replace(string(b), `"`, ``, -1) - br = strings.Replace(br, ",\n", "", -1) - br = strings.Replace(br, "{\n", "{", -1) - br = strings.Replace(br, "} ", "}\n ", -1) - br = strings.Replace(br, "\n }", " }", -1) - br = strings.Replace(br, "\n }\n", " }", -1) - return br[1:] + "\n" -} +// ParamsString returns a listing of all parameters in the Layer and +// pathways within the layer. If nonDefault is true, only report those +// not at their default values. +func (ly *Layer) ParamsString(nonDefault bool) string { + var b strings.Builder + b.WriteString("//////// Layer: " + ly.Name + "\n") + + b.WriteString(params.PrintStruct(ly, 1, func(path string, ft reflect.StructField, fv any) bool { + if ft.Tag.Get("display") == "-" { + return false + } + if nonDefault { + if def := ft.Tag.Get("default"); def != "" { + if reflectx.ValueIsDefault(reflect.ValueOf(fv), def) { + return false + } + } else { + if reflectx.NonPointerType(ft.Type).Kind() != reflect.Struct { + return false + } + } + } + isPBWM := ly.Type == MatrixLayer || ly.Type == GPiThalLayer || ly.Type == CINLayer || ly.Type == PFCLayer || ly.Type == PFCDeepLayer + switch path { + case "Act", "Inhib", "Learn": + return true + case "Burst": + return ly.Type == SuperLayer || ly.Type == CTLayer + case "Pulvinar", "Drivers": + return ly.Type == PulvinarLayer + case "RW": + return ly.Type == RWPredLayer || ly.Type == RWDaLayer + case "TD": + return ly.Type == TDPredLayer || ly.Type == TDIntegLayer || ly.Type == TDDaLayer + case "PBWM": + return isPBWM + case "SendTo": + return ly.Type == GPiThalLayer || ly.Type == ClampDaLayer || ly.Type == RWDaLayer || ly.Type == TDDaLayer || ly.Type == CINLayer + case "Matrix": + return ly.Type == MatrixLayer + case "GPiGate": + return ly.Type == GPiThalLayer + case "CIN": + return ly.Type == CINLayer + case "PFCGate", "PFCMaint": + return ly.Type == PFCLayer || ly.Type == PFCDeepLayer + case "PFCDyns": + return ly.Type == PFCDeepLayer + } + return false + }, + func(path string, ft reflect.StructField, fv any) string { + if nonDefault { + if def := ft.Tag.Get("default"); def != "" { + return reflectx.ToString(fv) + " [" + def + "]" + } + } + return "" + })) -// AllParams returns a listing of all parameters in the Layer -func (ly *Layer) AllParams() string { - str := "/////////////////////////////////////////////////\nLayer: " + ly.Name + "\n" - b, _ := json.MarshalIndent(&ly.Act, "", " ") - str += "Act: {\n " + JsonToParams(b) - b, _ = json.MarshalIndent(&ly.Inhib, "", " ") - str += "Inhib: {\n " + JsonToParams(b) - b, _ = json.MarshalIndent(&ly.Learn, "", " ") - str += "Learn: {\n " + JsonToParams(b) for _, pt := range ly.RecvPaths { - pstr := pt.AllParams() - str += pstr + b.WriteString(pt.ParamsString(nonDefault)) } - return str + return b.String() } // RecipToSendPath finds the reciprocal pathway relative to the given sending pathway @@ -329,76 +367,6 @@ func (ly *Layer) UnitValues(vals *[]float32, varNm string, di int) error { return nil } -// UnitValuesTensor returns values of given variable name on unit -// for each unit in the layer, as a float32 tensor in same shape as layer units. -func (ly *Layer) UnitValuesTensor(tsr tensor.Tensor, varNm string, di int) error { - if tsr == nil { - err := fmt.Errorf("leabra.UnitValuesTensor: Tensor is nil") - log.Println(err) - return err - } - tsr.SetShape(ly.Shape.Sizes, ly.Shape.Names...) - vidx, err := ly.UnitVarIndex(varNm) - if err != nil { - nan := math.NaN() - for i := range ly.Neurons { - tsr.SetFloat1D(i, nan) - } - return err - } - for i := range ly.Neurons { - v := ly.UnitValue1D(vidx, i, di) - if math32.IsNaN(v) { - tsr.SetFloat1D(i, math.NaN()) - } else { - tsr.SetFloat1D(i, float64(v)) - } - } - return nil -} - -// UnitValuesSampleTensor fills in values of given variable name on unit -// for a smaller subset of sample units in the layer, into given tensor. -// This is used for computationally intensive stats or displays that work -// much better with a smaller number of units. -// The set of sample units are defined by SampleIndexes -- all units -// are used if no such subset has been defined. -// If tensor is not already big enough to hold the values, it is -// set to a 1D shape to hold all the values if subset is defined, -// otherwise it calls UnitValuesTensor and is identical to that. -// Returns error on invalid var name. -func (ly *Layer) UnitValuesSampleTensor(tsr tensor.Tensor, varNm string, di int) error { - nu := len(ly.SampleIndexes) - if nu == 0 { - return ly.UnitValuesTensor(tsr, varNm, di) - } - if tsr == nil { - err := fmt.Errorf("axon.UnitValuesSampleTensor: Tensor is nil") - log.Println(err) - return err - } - if tsr.Len() != nu { - tsr.SetShape([]int{nu}, "Units") - } - vidx, err := ly.UnitVarIndex(varNm) - if err != nil { - nan := math.NaN() - for i, _ := range ly.SampleIndexes { - tsr.SetFloat1D(i, nan) - } - return err - } - for i, ui := range ly.SampleIndexes { - v := ly.UnitValue1D(vidx, ui, di) - if math32.IsNaN(v) { - tsr.SetFloat1D(i, math.NaN()) - } else { - tsr.SetFloat1D(i, float64(v)) - } - } - return nil -} - // UnitVal returns value of given variable name on given unit, // using shape-based dimensional index func (ly *Layer) UnitValue(varNm string, idx []int, di int) float32 { @@ -406,7 +374,7 @@ func (ly *Layer) UnitValue(varNm string, idx []int, di int) float32 { if err != nil { return math32.NaN() } - fidx := ly.Shape.Offset(idx) + fidx := ly.Shape.IndexTo1D(idx...) return ly.UnitValue1D(vidx, fidx, di) } @@ -540,8 +508,8 @@ func (ly *Layer) BuildSubPools() { pi := 1 for py := 0; py < spy; py++ { for px := 0; px < spx; px++ { - soff := ly.Shape.Offset([]int{py, px, 0, 0}) - eoff := ly.Shape.Offset([]int{py, px, sh[2] - 1, sh[3] - 1}) + 1 + soff := ly.Shape.IndexTo1D(py, px, 0, 0) + eoff := ly.Shape.IndexTo1D(py, px, sh[2]-1, sh[3]-1) + 1 pl := &ly.Pools[pi] pl.StIndex = soff pl.EdIndex = eoff diff --git a/leabra/logging.go b/leabra/logging.go deleted file mode 100644 index 7090650..0000000 --- a/leabra/logging.go +++ /dev/null @@ -1,297 +0,0 @@ -// Copyright (c) 2022, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package leabra - -import ( - "reflect" - "strconv" - - "cogentcore.org/core/base/errors" - "cogentcore.org/core/math32/minmax" - "github.com/emer/emergent/v2/egui" - "github.com/emer/emergent/v2/elog" - "github.com/emer/emergent/v2/estats" - "github.com/emer/emergent/v2/etime" - "github.com/emer/etensor/plot/plotcore" - "github.com/emer/etensor/tensor/stats/split" - "github.com/emer/etensor/tensor/stats/stats" - "github.com/emer/etensor/tensor/table" -) - -// LogTestErrors records all errors made across TestTrials, at Test Epoch scope -func LogTestErrors(lg *elog.Logs) { - sk := etime.Scope(etime.Test, etime.Trial) - lt := lg.TableDetailsScope(sk) - ix, _ := lt.NamedIndexView("TestErrors") - ix.Filter(func(et *table.Table, row int) bool { - return et.Float("Err", row) > 0 // include error trials - }) - lg.MiscTables["TestErrors"] = ix.NewTable() - - allsp := split.All(ix) - split.AggColumn(allsp, "UnitErr", stats.Sum) - // note: can add other stats to compute - lg.MiscTables["TestErrorStats"] = allsp.AggsToTable(table.AddAggName) -} - -// PCAStats computes PCA statistics on recorded hidden activation patterns -// from Analyze, Trial log data -func PCAStats(net *Network, lg *elog.Logs, stats *estats.Stats) { - stats.PCAStats(lg.IndexView(etime.Analyze, etime.Trial), "ActM", net.LayersByType(SuperLayer, TargetLayer, CTLayer)) -} - -////////////////////////////////////////////////////////////////////////////// -// Log items - -// LogAddDiagnosticItems adds standard Axon diagnostic statistics to given logs, -// across the given time levels, in higher to lower order, e.g., Epoch, Trial -// These are useful for tuning and diagnosing the behavior of the network. -func LogAddDiagnosticItems(lg *elog.Logs, layerNames []string, mode etime.Modes, times ...etime.Times) { - ntimes := len(times) - for _, lnm := range layerNames { - clnm := lnm - itm := lg.AddItem(&elog.Item{ - Name: clnm + "_ActMAvg", - Type: reflect.Float64, - FixMax: false, - Range: minmax.F32{Max: 1}, - Write: elog.WriteMap{ - etime.Scope(mode, times[ntimes-1]): func(ctx *elog.Context) { - ly := ctx.Layer(clnm).(*Layer) - ctx.SetFloat32(ly.Pools[0].ActAvg.ActMAvg) - }}}) - lg.AddStdAggs(itm, mode, times...) - - itm = lg.AddItem(&elog.Item{ - Name: clnm + "_ActMMax", - Type: reflect.Float64, - FixMax: false, - Range: minmax.F32{Max: 1}, - Write: elog.WriteMap{ - etime.Scope(mode, times[ntimes-1]): func(ctx *elog.Context) { - ly := ctx.Layer(clnm).(*Layer) - ctx.SetFloat32(ly.Pools[0].ActM.Max) - }}}) - lg.AddStdAggs(itm, mode, times...) - - itm = lg.AddItem(&elog.Item{ - Name: clnm + "_CosDiff", - Type: reflect.Float64, - Range: minmax.F32{Max: 1}, - Write: elog.WriteMap{ - etime.Scope(etime.Train, times[ntimes-1]): func(ctx *elog.Context) { - ly := ctx.Layer(clnm).(*Layer) - ctx.SetFloat32(ly.CosDiff.Cos) - }}}) - lg.AddStdAggs(itm, mode, times...) - } -} - -func LogInputLayer(lg *elog.Logs, net *Network, mode etime.Modes) { - // input layer average activity -- important for tuning - layerNames := net.LayersByType(InputLayer) - for _, lnm := range layerNames { - clnm := lnm - lg.AddItem(&elog.Item{ - Name: clnm + "_ActAvg", - Type: reflect.Float64, - FixMax: true, - Range: minmax.F32{Max: 1}, - Write: elog.WriteMap{ - etime.Scope(etime.Train, etime.Epoch): func(ctx *elog.Context) { - ly := ctx.Layer(clnm).(*Layer) - ctx.SetFloat32(ly.Pools[0].ActM.Max) - }}}) - } -} - -// LogAddPCAItems adds PCA statistics to log for Hidden and Target layers -// across the given time levels, in higher to lower order, e.g., Run, Epoch, Trial -// These are useful for diagnosing the behavior of the network. -func LogAddPCAItems(lg *elog.Logs, net *Network, mode etime.Modes, times ...etime.Times) { - ntimes := len(times) - layers := net.LayersByType(SuperLayer, TargetLayer, CTLayer) - for _, lnm := range layers { - clnm := lnm - cly := net.LayerByName(clnm) - lg.AddItem(&elog.Item{ - Name: clnm + "_ActM", - Type: reflect.Float64, - CellShape: cly.GetSampleShape().Sizes, - FixMax: true, - Range: minmax.F32{Max: 1}, - Write: elog.WriteMap{ - etime.Scope(etime.Analyze, times[ntimes-1]): func(ctx *elog.Context) { - ctx.SetLayerSampleTensor(clnm, "ActM") - }, etime.Scope(etime.Test, times[ntimes-1]): func(ctx *elog.Context) { - ctx.SetLayerSampleTensor(clnm, "ActM") - }}}) - itm := lg.AddItem(&elog.Item{ - Name: clnm + "_PCA_NStrong", - Type: reflect.Float64, - Write: elog.WriteMap{ - etime.Scope(etime.Train, times[ntimes-2]): func(ctx *elog.Context) { - ctx.SetStatFloat(ctx.Item.Name) - }}}) - lg.AddStdAggs(itm, mode, times[:ntimes-1]...) - - itm = lg.AddItem(&elog.Item{ - Name: clnm + "_PCA_Top5", - Type: reflect.Float64, - Write: elog.WriteMap{ - etime.Scope(etime.Train, times[ntimes-2]): func(ctx *elog.Context) { - ctx.SetStatFloat(ctx.Item.Name) - }}}) - lg.AddStdAggs(itm, mode, times[:ntimes-1]...) - - itm = lg.AddItem(&elog.Item{ - Name: clnm + "_PCA_Next5", - Type: reflect.Float64, - Write: elog.WriteMap{ - etime.Scope(etime.Train, times[ntimes-2]): func(ctx *elog.Context) { - ctx.SetStatFloat(ctx.Item.Name) - }}}) - lg.AddStdAggs(itm, mode, times[:ntimes-1]...) - - itm = lg.AddItem(&elog.Item{ - Name: clnm + "_PCA_Rest", - Type: reflect.Float64, - Write: elog.WriteMap{ - etime.Scope(etime.Train, times[ntimes-2]): func(ctx *elog.Context) { - ctx.SetStatFloat(ctx.Item.Name) - }}}) - lg.AddStdAggs(itm, mode, times[:ntimes-1]...) - } -} - -// LayerActsLogConfigMetaData configures meta data for LayerActs table -func LayerActsLogConfigMetaData(dt *table.Table) { - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(elog.LogPrec)) - dt.SetMetaData("Type", "Bar") - dt.SetMetaData("XAxis", "Layer") - dt.SetMetaData("XAxisRot", "45") - dt.SetMetaData("Nominal:On", "+") - dt.SetMetaData("Nominal:FixMin", "+") - dt.SetMetaData("ActM:On", "+") - dt.SetMetaData("ActM:FixMin", "+") - dt.SetMetaData("ActM:Max", "1") - dt.SetMetaData("ActP:FixMin", "+") - dt.SetMetaData("ActP:Max", "1") - dt.SetMetaData("MaxGeM:FixMin", "+") - dt.SetMetaData("MaxGeM:FixMax", "+") - dt.SetMetaData("MaxGeM:Max", "3") - dt.SetMetaData("MaxGeP:FixMin", "+") - dt.SetMetaData("MaxGeP:FixMax", "+") - dt.SetMetaData("MaxGeP:Max", "3") -} - -// LayerActsLogConfig configures Tables to record -// layer activity for tuning the network inhibition, nominal activity, -// relative scaling, etc. in elog.MiscTables: -// LayerActs is current, LayerActsRec is record over trials, -// LayerActsAvg is average of recorded trials. -func LayerActsLogConfig(net *Network, lg *elog.Logs) { - dt := lg.MiscTable("LayerActs") - dt.SetMetaData("name", "LayerActs") - dt.SetMetaData("desc", "Layer Activations") - LayerActsLogConfigMetaData(dt) - dtRec := lg.MiscTable("LayerActsRec") - dtRec.SetMetaData("name", "LayerActsRec") - dtRec.SetMetaData("desc", "Layer Activations Recorded") - LayerActsLogConfigMetaData(dtRec) - dtAvg := lg.MiscTable("LayerActsAvg") - dtAvg.SetMetaData("name", "LayerActsAvg") - dtAvg.SetMetaData("desc", "Layer Activations Averaged") - LayerActsLogConfigMetaData(dtAvg) - dts := []*table.Table{dt, dtRec, dtAvg} - for _, t := range dts { - t.AddStringColumn("Layer") - t.AddFloat64Column("Nominal") - t.AddFloat64Column("ActM") - t.AddFloat64Column("ActP") - } - nlay := len(net.Layers) - dt.SetNumRows(nlay) - dtRec.SetNumRows(0) - dtAvg.SetNumRows(nlay) - for li, ly := range net.Layers { - dt.SetString("Layer", li, ly.Name) - dt.SetFloat("Nominal", li, float64(ly.Inhib.ActAvg.Init)) - dtAvg.SetString("Layer", li, ly.Name) - } -} - -// LayerActsLog records layer activity for tuning the network -// inhibition, nominal activity, relative scaling, etc. -// if gui is non-nil, plot is updated. -func LayerActsLog(net *Network, lg *elog.Logs, di int, gui *egui.GUI) { - dt := lg.MiscTable("LayerActs") - dtRec := lg.MiscTable("LayerActsRec") - for li, ly := range net.Layers { - lpl := &ly.Pools[0] - dt.SetFloat("Nominal", li, float64(ly.Inhib.ActAvg.Init)) - dt.SetFloat("ActM", li, float64(lpl.ActAvg.ActMAvg)) - dt.SetFloat("ActP", li, float64(lpl.ActAvg.ActPAvg)) - dtRec.SetNumRows(dtRec.Rows + 1) - dtRec.SetString("Layer", li, ly.Name) - dtRec.SetFloat("Nominal", li, float64(ly.Inhib.ActAvg.Init)) - dtRec.SetFloat("ActM", li, float64(lpl.ActAvg.ActMAvg)) - dtRec.SetFloat("ActP", li, float64(lpl.ActAvg.ActPAvg)) - } - if gui != nil { - gui.UpdatePlotScope(etime.ScopeKey("LayerActs")) - } -} - -// LayerActsLogAvg computes average of LayerActsRec record -// of layer activity for tuning the network -// inhibition, nominal activity, relative scaling, etc. -// if gui is non-nil, plot is updated. -// if recReset is true, reset the recorded data after computing average. -func LayerActsLogAvg(net *Network, lg *elog.Logs, gui *egui.GUI, recReset bool) { - dtRec := lg.MiscTable("LayerActsRec") - dtAvg := lg.MiscTable("LayerActsAvg") - if dtRec.Rows == 0 { - return - } - ix := table.NewIndexView(dtRec) - spl := split.GroupBy(ix, "Layer") - split.AggAllNumericColumns(spl, stats.Mean) - ags := spl.AggsToTable(table.ColumnNameOnly) - cols := []string{"Nominal", "ActM", "ActP", "MaxGeM", "MaxGeP"} - for li, ly := range net.Layers { - rw := errors.Log1(ags.RowsByString("Layer", ly.Name, table.Equals, table.UseCase))[0] - for _, cn := range cols { - dtAvg.SetFloat(cn, li, ags.Float(cn, rw)) - } - } - if recReset { - dtRec.SetNumRows(0) - } - if gui != nil { - gui.UpdatePlotScope(etime.ScopeKey("LayerActsAvg")) - } -} - -// LayerActsLogRecReset resets the recorded LayerActsRec data -// used for computing averages -func LayerActsLogRecReset(lg *elog.Logs) { - dtRec := lg.MiscTable("LayerActsRec") - dtRec.SetNumRows(0) -} - -// LayerActsLogConfigGUI configures GUI for LayerActsLog Plot and LayerActs Avg Plot -func LayerActsLogConfigGUI(lg *elog.Logs, gui *egui.GUI) { - pt, _ := gui.Tabs.NewTab("LayerActs Plot") - plt := plotcore.NewPlotEditor(pt) - gui.Plots["LayerActs"] = plt - plt.SetTable(lg.MiscTables["LayerActs"]) - - pt, _ = gui.Tabs.NewTab("LayerActs Avg Plot") - plt = plotcore.NewPlotEditor(pt) - gui.Plots["LayerActsAvg"] = plt - plt.SetTable(lg.MiscTables["LayerActsAvg"]) -} diff --git a/leabra/looper.go b/leabra/looper.go index 1149cc0..1d283f5 100644 --- a/leabra/looper.go +++ b/leabra/looper.go @@ -5,152 +5,269 @@ package leabra import ( - "github.com/emer/emergent/v2/egui" - "github.com/emer/emergent/v2/elog" - "github.com/emer/emergent/v2/etime" + "cogentcore.org/core/enums" "github.com/emer/emergent/v2/looper" "github.com/emer/emergent/v2/netview" ) -// LooperStdPhases adds the minus and plus phases of the alpha cycle, -// along with embedded beta phases which just record St1 and St2 activity in this case. -// plusStart is start of plus phase, typically 75, -// and plusEnd is end of plus phase, typically 99 -// resets the state at start of trial. -// Can pass a trial-level time scale to use instead of the default etime.Trial -func LooperStdPhases(ls *looper.Stacks, ctx *Context, net *Network, plusStart, plusEnd int, trial ...etime.Times) { - trl := etime.Trial - if len(trial) > 0 { - trl = trial[0] - } - ls.AddEventAllModes(etime.Cycle, "MinusPhase:Start", 0, func() { - ctx.PlusPhase = false +// LooperStandard adds all the standard Leabra Trial and Cycle level processing calls +// to the given Looper Stacks. cycle and trial are the enums for the looper levels, +// trainMode is the training mode enum value. +// - minus and plus phases of the theta cycle (trial), at plusStart (150) and plusEnd (199) cycles. +// - embedded beta phases within theta, that record Beta1 and Beta2 states. +// - net.Cycle() at every cycle step. +// - net.DWt() and net.WtFromDWt() learning calls in training mode, with netview update +// between these two calls if it is visible and viewing synapse variables. +// - netview update calls at appropriate levels (no-op if no GUI) +func LooperStandard(ls *looper.Stacks, net *Network, viewFunc func(mode enums.Enum) *NetViewUpdate, plusStart, plusEnd int, cycle, trial, trainMode enums.Enum) { + ls.AddEventAllModes(cycle, "MinusPhase:Start", 0, func() { + net.Context.PlusPhase = false }) - ls.AddEventAllModes(etime.Cycle, "Quarter1", 25, func() { - net.QuarterFinal(ctx) - ctx.QuarterInc() + ls.AddEventAllModes(cycle, "Quarter1", 25, func() { + net.QuarterFinal() }) - ls.AddEventAllModes(etime.Cycle, "Quarter2", 50, func() { - net.QuarterFinal(ctx) - ctx.QuarterInc() + ls.AddEventAllModes(cycle, "Quarter2", 50, func() { + net.QuarterFinal() }) - ls.AddEventAllModes(etime.Cycle, "MinusPhase:End", plusStart, func() { - net.QuarterFinal(ctx) - ctx.QuarterInc() + ls.AddEventAllModes(cycle, "MinusPhase:End", plusStart, func() { + net.QuarterFinal() }) - ls.AddEventAllModes(etime.Cycle, "PlusPhase:Start", plusStart, func() { - ctx.PlusPhase = true + ls.AddEventAllModes(cycle, "PlusPhase:Start", plusStart, func() { + net.Context.PlusPhase = true }) - for m, stack := range ls.Stacks { - stack.Loops[trl].OnStart.Add("AlphaCycInit", func() { - net.AlphaCycInit(m == etime.Train) - ctx.AlphaCycStart() - }) - stack.Loops[trl].OnEnd.Add("PlusPhase:End", func() { - net.QuarterFinal(ctx) + for mode, st := range ls.Stacks { + cycLoop := st.Loops[cycle] + cycLoop.OnStart.Add("Cycle", func() { + net.Cycle() }) + trlLoop := st.Loops[trial] + testing := mode.Int64() != trainMode.Int64() + trlLoop.OnStart.Add("AlphaCycInit", func() { net.AlphaCycInit(!testing) }) + trlLoop.OnEnd.Add("PlusPhase:End", func() { net.QuarterFinal() }) + if mode.Int64() == trainMode.Int64() { + trlLoop.OnEnd.Add("UpdateWeights", func() { + if view := viewFunc(mode); view != nil && view.IsViewingSynapse() { + net.DWt() // todo: need to get synapses here, not after + view.RecordSyns() // note: critical to update weights here so DWt is visible + net.WtFromDWt() + } else { + net.DWtToWt() + } + }) + } } } -// LooperSimCycleAndLearn adds Cycle and DWt, WtFromDWt functions to looper -// for given network, ctx, and netview update manager -// Can pass a trial-level time scale to use instead of the default etime.Trial -func LooperSimCycleAndLearn(ls *looper.Stacks, net *Network, ctx *Context, viewupdt *netview.ViewUpdate, trial ...etime.Times) { - trl := etime.Trial - if len(trial) > 0 { - trl = trial[0] - } - for m := range ls.Stacks { - ls.Stacks[m].Loops[etime.Cycle].OnStart.Add("Cycle", func() { - net.Cycle(ctx) - ctx.CycleInc() +// LooperUpdateNetView adds netview update calls to the given +// trial and cycle levels for given NetViewUpdate associated with the mode, +// returned by the given viewFunc function. +// The countersFunc returns the counters and other stats to display at the +// bottom of the NetView, based on given mode and level. +func LooperUpdateNetView(ls *looper.Stacks, cycle, trial enums.Enum, viewFunc func(mode enums.Enum) *NetViewUpdate) { + for mode, st := range ls.Stacks { + viewUpdt := viewFunc(mode) + cycLoop := st.Loops[cycle] + cycLoop.OnEnd.Add("GUI:UpdateNetView", func() { + viewUpdt.UpdateCycle(cycLoop.Counter.Cur, mode, cycle) }) - } - ttrl := ls.Loop(etime.Train, trl) - if ttrl != nil { - ttrl.OnEnd.Add("UpdateWeights", func() { - net.DWt() - if viewupdt.IsViewingSynapse() { - viewupdt.RecordSyns() // note: critical to update weights here so DWt is visible - } - net.WtFromDWt() + trlLoop := st.Loops[trial] + trlLoop.OnEnd.Add("GUI:UpdateNetView", func() { + viewUpdt.GoUpdate(mode, trial) }) } +} - // Set variables on ss that are referenced elsewhere, such as ApplyInputs. - for m, loops := range ls.Stacks { - for _, loop := range loops.Loops { - loop.OnStart.Add("SetCtxMode", func() { - ctx.Mode = m.(etime.Modes) - }) - } +//////// NetViewUpdate + +//gosl:start + +// ViewTimes are the options for when the NetView can be updated. +type ViewTimes int32 //enums:enum +const ( + // Cycle is an update of neuron state, equivalent to 1 msec of real time. + Cycle ViewTimes = iota + + // FastSpike is 10 cycles (msec) or 100hz. This is the fastest spiking time + // generally observed in the neocortex. + FastSpike + + // Gamma is 25 cycles (msec) or 40hz. Neocortical activity often exhibits + // synchrony peaks in this range. + Gamma + + // Beta is 50 cycles (msec) or 20 hz (two Gammas). + // Gating in the basal ganglia and associated updating in prefrontal + // cortex occurs at this frequency. + Beta + + // Alpha is 100 cycle (msec) or 10 hz (two Betas). + // Posterior neocortex exhibits synchrony peaks in this range, + // corresponding to the intrinsic bursting frequency of layer 5 + // IB neurons, and corticothalamic loop resonance. + Alpha + + // Phase is the Minus or Plus phase, where plus phase is bursting / outcome + // that drives positive learning relative to prediction in minus phase. + // Minus phase is at 150 cycles (msec). + Phase + + // Theta is 200 cycles (msec) or 5 hz (two Alphas), i.e., a Trial. + // This is the modal duration of a saccade, the update frequency of + // medial temporal lobe episodic memory, and the minimal predictive learning cycle + // (perceive on Alpha 1, predict on 2). + Theta +) + +//gosl:end + +// ViewTimeCycles are the cycle intervals associated with each ViewTimes level. +var ViewTimeCycles = []int{1, 10, 25, 50, 100, 150, 200} + +// Cycles returns the number of cycles associated with a given view time. +func (vt ViewTimes) Cycles() int { + return ViewTimeCycles[vt] +} + +// NetViewUpdate manages time scales for updating the NetView. +// Use one of these for each mode you want to control separately. +type NetViewUpdate struct { + + // On toggles update of display on + On bool + + // Time scale to update the network view (Cycle to Trial timescales). + Time ViewTimes + + // CounterFunc returns the counter string showing current counters etc. + CounterFunc func(mode, level enums.Enum) string `display:"-"` + + // View is the network view. + View *netview.NetView `display:"-"` +} + +// Config configures for given NetView, time and counter function, +// which returns a string to show at the bottom of the netview, +// given the current mode and level. +func (vu *NetViewUpdate) Config(nv *netview.NetView, tm ViewTimes, fun func(mode, level enums.Enum) string) { + vu.View = nv + vu.On = true + vu.Time = tm + vu.CounterFunc = fun +} + +// ShouldUpdate returns true if the view is On, +// View is != nil, and it is visible. +func (vu *NetViewUpdate) ShouldUpdate() bool { + if !vu.On || vu.View == nil || !vu.View.IsVisible() { + return false } + return true } -// LooperResetLogBelow adds a function in OnStart to all stacks and loops -// to reset the log at the level below each loop -- this is good default behavior. -// Exceptions can be passed to exclude specific levels -- e.g., if except is Epoch -// then Epoch does not reset the log below it -func LooperResetLogBelow(ls *looper.Stacks, logs *elog.Logs, except ...etime.Times) { - for m, stack := range ls.Stacks { - for t, loop := range stack.Loops { - curTime := t - isExcept := false - for _, ex := range except { - if curTime == ex { - isExcept = true - break - } - } - if below := stack.TimeBelow(curTime); !isExcept && below != etime.NoTime { - loop.OnStart.Add("ResetLog"+below.String(), func() { - logs.ResetLog(m.(etime.Modes), below.(etime.Times)) - }) - } - } +// GoUpdate does an update if view is On, visible and active, +// including recording new data and driving update of display. +// This version is only for calling from a separate goroutine, +// not the main event loop (see also Update). +func (vu *NetViewUpdate) GoUpdate(mode, level enums.Enum) { + if !vu.ShouldUpdate() { + return } + if vu.IsCycleUpdating() && vu.View.Options.Raster.On { // no update for raster + return + } + counters := vu.CounterFunc(mode, level) + vu.View.Record(counters, -1) // -1 = default incrementing raster + vu.View.GoUpdateView() } -// LooperUpdateNetView adds netview update calls at each time level -func LooperUpdateNetView(ls *looper.Stacks, viewupdt *netview.ViewUpdate, net *Network, ctrUpdateFunc func(tm etime.Times)) { - for m, stack := range ls.Stacks { - for t, loop := range stack.Loops { - curTime := t.(etime.Times) - if curTime != etime.Cycle { - loop.OnEnd.Add("GUI:UpdateNetView", func() { - ctrUpdateFunc(curTime) - viewupdt.Testing = m == etime.Test - viewupdt.UpdateTime(curTime) - }) - } - } - cycLoop := ls.Loop(m, etime.Cycle) - cycLoop.OnEnd.Add("GUI:UpdateNetView", func() { - cyc := cycLoop.Counter.Cur - ctrUpdateFunc(etime.Cycle) - viewupdt.Testing = m == etime.Test - viewupdt.UpdateCycle(cyc) - }) +// Update does an update if view is On, visible and active, +// including recording new data and driving update of display. +// This version is only for calling from the main event loop +// (see also GoUpdate). +func (vu *NetViewUpdate) Update(mode, level enums.Enum) { + if !vu.ShouldUpdate() { + return } + counters := vu.CounterFunc(mode, level) + vu.View.Record(counters, -1) // -1 = default incrementing raster + vu.View.UpdateView() } -// LooperUpdatePlots adds plot update calls at each time level -func LooperUpdatePlots(ls *looper.Stacks, gui *egui.GUI) { - for m, stack := range ls.Stacks { - for t, loop := range stack.Loops { - curTime := t.(etime.Times) - curLoop := loop - if curTime == etime.Cycle { - curLoop.OnEnd.Add("GUI:UpdatePlot", func() { - cyc := curLoop.Counter.Cur - gui.GoUpdateCyclePlot(m.(etime.Modes), cyc) - }) - } else { - curLoop.OnEnd.Add("GUI:UpdatePlot", func() { - gui.GoUpdatePlot(m.(etime.Modes), curTime) - }) - } - } +// UpdateWhenStopped does an update when the network updating was stopped +// either via stepping or hitting the stop button. +// This has different logic for the raster view vs. regular. +// This is only for calling from a separate goroutine, +// not the main event loop. +func (vu *NetViewUpdate) UpdateWhenStopped(mode, level enums.Enum) { + if !vu.ShouldUpdate() { + return + } + if !vu.View.Options.Raster.On { // always record when not in raster mode + counters := vu.CounterFunc(mode, level) + vu.View.Record(counters, -1) // -1 = use a dummy counter + } + vu.View.GoUpdateView() +} + +// IsCycleUpdating returns true if the view is updating at a cycle level, +// either from raster or literal cycle level. +func (vu *NetViewUpdate) IsCycleUpdating() bool { + if !vu.ShouldUpdate() { + return false + } + if vu.View.Options.Raster.On || vu.Time == Cycle { + return true + } + return false +} + +// IsViewingSynapse returns true if netview is actively viewing synapses. +func (vu *NetViewUpdate) IsViewingSynapse() bool { + if !vu.ShouldUpdate() { + return false + } + return vu.View.IsViewingSynapse() +} + +// UpdateCycle triggers an update at the Cycle (Millisecond) timescale, +// using given text to display at bottom of view +func (vu *NetViewUpdate) UpdateCycle(cyc int, mode, level enums.Enum) { + if !vu.ShouldUpdate() { + return + } + if vu.View.Options.Raster.On { + counters := vu.CounterFunc(mode, level) + vu.updateCycleRaster(cyc, counters) + return + } + if vu.Time == Theta { // only trial + return + } + vtc := vu.Time.Cycles() + if (cyc+1)%vtc == 0 { + vu.GoUpdate(mode, level) + } +} + +// updateCycleRaster raster version of Cycle update. +// it always records data at the cycle level. +func (vu *NetViewUpdate) updateCycleRaster(cyc int, counters string) { + vu.View.Record(counters, cyc) + vtc := vu.Time.Cycles() + if (cyc+1)%vtc == 0 { + vu.View.GoUpdateView() + } +} + +// RecordSyns records synaptic data -- stored separate from unit data +// and only needs to be called when synaptic values are updated. +// Should be done when the DWt values have been computed, before +// updating Wts and zeroing. +// NetView displays this recorded data when Update is next called. +func (vu *NetViewUpdate) RecordSyns() { + if !vu.ShouldUpdate() { + return } + vu.View.RecordSyns() } diff --git a/leabra/network.go b/leabra/network.go index a27b018..e947a47 100644 --- a/leabra/network.go +++ b/leabra/network.go @@ -10,8 +10,8 @@ import ( "unsafe" "cogentcore.org/core/base/datasize" + "cogentcore.org/lab/tensor" "github.com/emer/emergent/v2/paths" - "github.com/emer/etensor/tensor" ) /////////////////////////////////////////////////////////////////////////// @@ -38,6 +38,7 @@ func (nt *Network) AlphaCycInit(updtActAvg bool) { } ly.AlphaCycInit(updtActAvg) } + nt.Context.AlphaCycStart() } // Cycle runs one cycle of activation updating: @@ -48,14 +49,15 @@ func (nt *Network) AlphaCycInit(updtActAvg bool) { // * Average and Max Act stats // This basic version doesn't use the time info, but more specialized types do, and we // want to keep a consistent API for end-user code. -func (nt *Network) Cycle(ctx *Context) { - nt.SendGDelta(ctx) // also does integ - nt.AvgMaxGe(ctx) - nt.InhibFromGeAct(ctx) - nt.ActFromG(ctx) - nt.AvgMaxAct(ctx) - nt.CyclePost(ctx) // general post cycle actions. - nt.RecGateAct(ctx) // Record activation state at time of gating (in ActG neuron var) +func (nt *Network) Cycle() { + nt.SendGDelta() // also does integ + nt.AvgMaxGe() + nt.InhibFromGeAct() + nt.ActFromG() + nt.AvgMaxAct() + nt.CyclePost() // general post cycle actions. + nt.RecGateAct() // Record activation state at time of gating (in ActG neuron var) + nt.Context.CycleInc() // keep synced } ////////////////////////////////////////////////////////////////////////////////////// @@ -63,7 +65,8 @@ func (nt *Network) Cycle(ctx *Context) { // SendGeDelta sends change in activation since last sent, if above thresholds // and integrates sent deltas into GeRaw and time-integrated Ge values -func (nt *Network) SendGDelta(ctx *Context) { +func (nt *Network) SendGDelta() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -79,7 +82,8 @@ func (nt *Network) SendGDelta(ctx *Context) { } // AvgMaxGe computes the average and max Ge stats, used in inhibition -func (nt *Network) AvgMaxGe(ctx *Context) { +func (nt *Network) AvgMaxGe() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -89,7 +93,8 @@ func (nt *Network) AvgMaxGe(ctx *Context) { } // InhibiFromGeAct computes inhibition Gi from Ge and Act stats within relevant Pools -func (nt *Network) InhibFromGeAct(ctx *Context) { +func (nt *Network) InhibFromGeAct() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -99,7 +104,8 @@ func (nt *Network) InhibFromGeAct(ctx *Context) { } // ActFromG computes rate-code activation from Ge, Gi, Gl conductances -func (nt *Network) ActFromG(ctx *Context) { +func (nt *Network) ActFromG() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -109,7 +115,8 @@ func (nt *Network) ActFromG(ctx *Context) { } // AvgMaxGe computes the average and max Ge stats, used in inhibition -func (nt *Network) AvgMaxAct(ctx *Context) { +func (nt *Network) AvgMaxAct() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -122,7 +129,8 @@ func (nt *Network) AvgMaxAct(ctx *Context) { // value has been computed. // SuperLayer computes Burst activity. // GateLayer (GPiThal) computes gating, sends to other layers. -func (nt *Network) CyclePost(ctx *Context) { +func (nt *Network) CyclePost() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -132,7 +140,8 @@ func (nt *Network) CyclePost(ctx *Context) { } // QuarterFinal does updating after end of a quarter, for first 2 -func (nt *Network) QuarterFinal(ctx *Context) { +func (nt *Network) QuarterFinal() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -145,10 +154,12 @@ func (nt *Network) QuarterFinal(ctx *Context) { } ly.CtxtFromGe(ctx) } + ctx.QuarterInc() } // MinusPhase is called at the end of the minus phase (quarter 3), to record state. -func (nt *Network) MinusPhase(ctx *Context) { +func (nt *Network) MinusPhase() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -158,7 +169,8 @@ func (nt *Network) MinusPhase(ctx *Context) { } // PlusPhase is called at the end of the plus phase (quarter 4), to record state. -func (nt *Network) PlusPhase(ctx *Context) { +func (nt *Network) PlusPhase() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -204,6 +216,13 @@ func (nt *Network) WtFromDWt() { } } +// DWtToWt computes the weight change (learning) based on current +// running-average activation values, and then WtFromDWt. +func (nt *Network) DWtToWt() { + nt.DWt() + nt.WtFromDWt() +} + // LrateMult sets the new Lrate parameter for Paths to LrateInit * mult. // Useful for implementing learning rate schedules. func (nt *Network) LrateMult(mult float32) { @@ -215,8 +234,7 @@ func (nt *Network) LrateMult(mult float32) { } } -////////////////////////////////////////////////////////////////////////////////////// -// Init methods +//////// Init methods // InitWeights initializes synaptic weights and all other // associated long-term state variables including running-average diff --git a/leabra/networkbase.go b/leabra/networkbase.go index 6921f12..d56c84c 100644 --- a/leabra/networkbase.go +++ b/leabra/networkbase.go @@ -12,12 +12,12 @@ import ( "log" "os" "path/filepath" + "strings" "time" + "cogentcore.org/core/base/iox/tomlx" "cogentcore.org/core/core" - "github.com/emer/emergent/v2/econfig" "github.com/emer/emergent/v2/emer" - "github.com/emer/emergent/v2/params" "github.com/emer/emergent/v2/paths" ) @@ -25,9 +25,16 @@ import ( type Network struct { emer.NetworkBase + // Context is the context state. Other copies of Context can be maintained + // and [SetContext] to update this one, but this instance is the canonical one. + Context Context + // list of layers Layers []*Layer + // LayerClassMap is a map from class name to layer names. + LayerClassMap map[string][]string `display:"-"` + // number of parallel threads (go routines) to use. NThreads int `edit:"-"` @@ -49,6 +56,7 @@ func NewNetwork(name string) *Network { net := &Network{} emer.InitNetwork(net, name) net.NThreads = 1 + net.Context.Defaults() return net } @@ -69,6 +77,62 @@ func (nt *Network) LayersByType(layType ...LayerTypes) []string { return nt.LayersByClass(nms...) } +func (nt *Network) UpdateLayerMaps() { + nt.UpdateLayerNameMap() + nt.LayerClassMap = make(map[string][]string) + for _, ly := range nt.Layers { + cs := ly.Type.String() + " " + ly.Class + cls := strings.Split(cs, " ") + for _, cl := range cls { + if cl == "" { + continue + } + ll := nt.LayerClassMap[cl] + ll = append(ll, ly.Name) + nt.LayerClassMap[cl] = ll + } + } +} + +// LayersByClass returns a list of layer names by given class(es). +// Lists are compiled when network Build() function called, +// or now if not yet present. +// The layer Type is always included as a Class, along with any other +// space-separated strings specified in Class for parameter styling, etc. +// If no classes are passed, all layer names in order are returned. +func (nt *Network) LayersByClass(classes ...string) []string { + if nt.LayerClassMap == nil { + nt.UpdateLayerMaps() + } + var nms []string + if len(classes) == 0 { + for _, ly := range nt.Layers { + if ly.Off { + continue + } + nms = append(nms, ly.Name) + } + return nms + } + for _, lc := range classes { + nms = append(nms, nt.LayerClassMap[lc]...) + } + // only get unique layers + layers := []string{} + has := map[string]bool{} + for _, nm := range nms { + if has[nm] { + continue + } + layers = append(layers, nm) + has[nm] = true + } + if len(layers) == 0 { + panic(fmt.Sprintf("No Layers found for query: %#v.", classes)) + } + return layers +} + // KeyLayerParams returns a listing for all layers in the network, // of the most important layer-level params (specific to each algorithm). func (nt *Network) KeyLayerParams() string { @@ -86,7 +150,7 @@ func (nt *Network) KeyPathParams() string { // or `params_2006_01_02` (year, month, day) datestamp, // providing a snapshot of the simulation params for easy diffs and later reference. // Also saves current Config and Params state. -func (nt *Network) SaveParamsSnapshot(pars *params.Sets, cfg any, good bool) error { +func (nt *Network) SaveParamsSnapshot(cfg any, good bool) error { date := time.Now().Format("2006_01_02") if good { date = "good" @@ -96,10 +160,10 @@ func (nt *Network) SaveParamsSnapshot(pars *params.Sets, cfg any, good bool) err if err != nil { log.Println(err) // notify but OK if it exists } - econfig.Save(cfg, filepath.Join(dir, "config.toml")) - pars.SaveTOML(core.Filename(filepath.Join(dir, "params.toml"))) - nt.SaveAllParams(core.Filename(filepath.Join(dir, "params_all.txt"))) - nt.SaveNonDefaultParams(core.Filename(filepath.Join(dir, "params_nondef.txt"))) + fmt.Println("Saving params to:", dir) + tomlx.Save(cfg, filepath.Join(dir, "config.toml")) + nt.SaveParams(emer.AllParams, core.Filename(filepath.Join(dir, "params_all.txt"))) + nt.SaveParams(emer.NonDefault, core.Filename(filepath.Join(dir, "params_nondef.txt"))) nt.SaveAllLayerInhibs(core.Filename(filepath.Join(dir, "params_layers.txt"))) nt.SaveAllPathScales(core.Filename(filepath.Join(dir, "params_paths.txt"))) return nil @@ -135,25 +199,12 @@ func (nt *Network) AllLayerInhibs() string { if ly.Off { continue } - ph := ly.ParamsHistory.ParamsHistory() - lh := ph["Layer.Inhib.ActAvg.Init"] - if lh != "" { - lh = "Params: " + lh - } - str += fmt.Sprintf("%15s\t\tNominal:\t%6.2f\t%s\n", ly.Name, ly.Inhib.ActAvg.Init, lh) + str += fmt.Sprintf("%15s\t\tNominal:\t%6.2f\n", ly.Name, ly.Inhib.ActAvg.Init) if ly.Inhib.Layer.On { - lh := ph["Layer.Inhib.Layer.Gi"] - if lh != "" { - lh = "Params: " + lh - } - str += fmt.Sprintf("\t\t\t\t\t\tLayer.Gi:\t%6.2f\t%s\n", ly.Inhib.Layer.Gi, lh) + str += fmt.Sprintf("\t\t\t\t\t\tLayer.Gi:\t%6.2f\n", ly.Inhib.Layer.Gi) } if ly.Inhib.Pool.On { - lh := ph["Layer.Inhib.Pool.Gi"] - if lh != "" { - lh = "Params: " + lh - } - str += fmt.Sprintf("\t\t\t\t\t\tPool.Gi: \t%6.2f\t%s\n", ly.Inhib.Pool.Gi, lh) + str += fmt.Sprintf("\t\t\t\t\t\tPool.Gi: \t%6.2f\n", ly.Inhib.Pool.Gi) } str += fmt.Sprintf("\n") } @@ -183,6 +234,7 @@ func (nt *Network) AllPathScales() string { // Defaults sets all the default parameters for all layers and pathways func (nt *Network) Defaults() { + nt.Context.Defaults() nt.WtBalInterval = 10 nt.WtBalCtr = 0 for li, ly := range nt.Layers { @@ -231,13 +283,13 @@ func (nt *Network) SynVarProps() map[string]string { // AddLayerInit is implementation routine that takes a given layer and // adds it to the network, and initializes and configures it properly. -func (nt *Network) AddLayerInit(ly *Layer, name string, shape []int, typ LayerTypes) { +func (nt *Network) AddLayerInit(ly *Layer, name string, typ LayerTypes, shape ...int) { if nt.EmerNetwork == nil { log.Printf("Network EmerNetwork is nil: MUST call emer.InitNetwork on network, passing a pointer to the network to initialize properly!") return } emer.InitLayer(ly, name) - ly.SetShape(shape) + ly.Shape.SetShapeSizes(shape...) ly.Type = typ nt.Layers = append(nt.Layers, ly) nt.UpdateLayerMaps() @@ -250,16 +302,16 @@ func (nt *Network) AddLayerInit(ly *Layer, name string, shape []int, typ LayerTy // shape is in row-major format with outer-most dimensions first: // e.g., 4D 3, 2, 4, 5 = 3 rows (Y) of 2 cols (X) of pools, with each unit // group having 4 rows (Y) of 5 (X) units. -func (nt *Network) AddLayer(name string, shape []int, typ LayerTypes) *Layer { +func (nt *Network) AddLayer(name string, typ LayerTypes, shape ...int) *Layer { ly := &Layer{} // essential to use EmerNet interface here! - nt.AddLayerInit(ly, name, shape, typ) + nt.AddLayerInit(ly, name, typ, shape...) return ly } // AddLayer2D adds a new layer with given name and 2D shape to the network. // 2D and 4D layer shapes are generally preferred but not essential. -func (nt *Network) AddLayer2D(name string, shapeY, shapeX int, typ LayerTypes) *Layer { - return nt.AddLayer(name, []int{shapeY, shapeX}, typ) +func (nt *Network) AddLayer2D(name string, typ LayerTypes, shapeY, shapeX int) *Layer { + return nt.AddLayer(name, typ, shapeY, shapeX) } // AddLayer4D adds a new layer with given name and 4D shape to the network. @@ -267,8 +319,8 @@ func (nt *Network) AddLayer2D(name string, shapeY, shapeX int, typ LayerTypes) * // shape is in row-major format with outer-most dimensions first: // e.g., 4D 3, 2, 4, 5 = 3 rows (Y) of 2 cols (X) of pools, with each pool // having 4 rows (Y) of 5 (X) neurons. -func (nt *Network) AddLayer4D(name string, nPoolsY, nPoolsX, nNeurY, nNeurX int, typ LayerTypes) *Layer { - return nt.AddLayer(name, []int{nPoolsY, nPoolsX, nNeurY, nNeurX}, typ) +func (nt *Network) AddLayer4D(name string, typ LayerTypes, nPoolsY, nPoolsX, nNeurY, nNeurX int) *Layer { + return nt.AddLayer(name, typ, nPoolsY, nPoolsX, nNeurY, nNeurX) } // ConnectLayerNames establishes a pathway between two layers, referenced by name @@ -341,7 +393,7 @@ func (nt *Network) LateralConnectLayer(lay *Layer, pat paths.Pattern) *Path { // Build constructs the layer and pathway state based on the layer shapes // and patterns of interconnectivity func (nt *Network) Build() error { - nt.MakeLayerMaps() + nt.UpdateLayerMaps() var errs []error for li, ly := range nt.Layers { ly.Index = li diff --git a/leabra/neuromod.go b/leabra/neuromod.go index 4417ed7..7d87eee 100644 --- a/leabra/neuromod.go +++ b/leabra/neuromod.go @@ -73,7 +73,7 @@ func (ly *Layer) SendACh(ach float32) { // AddClampDaLayer adds a ClampDaLayer of given name func (nt *Network) AddClampDaLayer(name string) *Layer { - return nt.AddLayer2D(name, 1, 1, ClampDaLayer) + return nt.AddLayer2D(name, ClampDaLayer, 1, 1) } func (ly *Layer) ClampDaDefaults() { diff --git a/leabra/params.go b/leabra/params.go new file mode 100644 index 0000000..1992b58 --- /dev/null +++ b/leabra/params.go @@ -0,0 +1,216 @@ +// Copyright (c) 2024, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package leabra + +import ( + "fmt" + "reflect" + "strings" + + "cogentcore.org/core/base/errors" + "cogentcore.org/lab/base/mpi" + "github.com/cogentcore/yaegi/interp" + "github.com/emer/emergent/v2/params" +) + +// type aliases for params generic types that we use: +type ( + // LayerSheets contains Layer parameter Sheets. + LayerSheets = params.Sheets[*LayerParams] + + // LayerSheet is one Layer parameter Sheet. + LayerSheet = params.Sheet[*LayerParams] + + // LayerSel is one Layer parameter Selector. + LayerSel = params.Sel[*LayerParams] + + // PathSheets contains Path parameter Sheets. + PathSheets = params.Sheets[*PathParams] + + // PathSheet is one Path parameter Sheet. + PathSheet = params.Sheet[*PathParams] + + // PathSel is one Path parameter Selector. + PathSel = params.Sel[*PathParams] +) + +// Params contains the [LayerParams] and [PathParams] parameter setting functions +// provided by the [emergent] [params] package. +type Params struct { + + // Layer has the parameters to apply to the [LayerParams] for layers. + Layer LayerSheets `display:"-"` + + // Path has the parameters to apply to the [PathParams] for paths. + Path PathSheets `display:"-"` + + // ExtraSheets has optional additional sheets of parameters to apply + // after the default Base sheet. Use "Script" for default Script sheet. + // Multiple names separated by spaces can be used (don't put spaces in Sheet names!) + ExtraSheets string + + // Tag is an optional additional tag to add to log file names to identify + // a specific run of the model (typically set by a config file or args). + Tag string + + // Script is a parameter setting script, which adds to the Layer and Path sheets + // typically using the "Script" set name. + Script string `display:"-"` + + // Interp is the yaegi interpreter for running the script. + Interp *interp.Interpreter `display:"-"` +} + +// ScriptParams is a template for yaegi interpreted parameters +var ScriptParams = `sim.Sim.Params.Layer["Script"] = &axon.LayerSheet{ + &axon.LayerSel{Sel:"Layer", Set: func(ly *axon.LayerParams) { + // set params + }}, +} +sim.Sim.Params.Path["Script"] = &axon.PathSheet{ + &axon.PathSel{Sel:"Path", Set: func(pt *axon.PathParams) { + // set params + }}, +} +` + +// Config configures the ExtraSheets, Tag, and Network fields, and +// initializes the yaegi interpreter for dynamic parameter scripts. +// Pass a reflect.ValueOf(*Sim) to initialize the yaegi interpreter. +// Sim must have Params in a field called Params. +func (pr *Params) Config(layer LayerSheets, path PathSheets, extraSheets, tag string, sim reflect.Value) { + pr.Layer = layer + pr.Path = path + report := "" + if extraSheets != "" { + pr.ExtraSheets = extraSheets + report += " ExtraSheets: " + extraSheets + } + if tag != "" { + pr.Tag = tag + report += " Tag: " + tag + } + if report != "" { + mpi.Printf("Params Set: %s\n", report) + } + pr.Interp = interp.New(interp.Options{}) + pr.Interp.Use(interp.Exports{ + "github.com/emer/axon/axon": map[string]reflect.Value{ + "LayerParams": reflect.ValueOf((*LayerParams)(nil)), + "PathParams": reflect.ValueOf((*PathParams)(nil)), + "LayerSel": reflect.ValueOf((*LayerSel)(nil)), + "LayerSheet": reflect.ValueOf((*LayerSheet)(nil)), + "LayerSheets": reflect.ValueOf((*LayerSheets)(nil)), + "PathSel": reflect.ValueOf((*PathSel)(nil)), + "PathSheet": reflect.ValueOf((*PathSheet)(nil)), + "PathSheets": reflect.ValueOf((*PathSheets)(nil)), + }, + "github.com/emer/axon/sim/sim": map[string]reflect.Value{ + "Sim": sim, + }, + }) + pr.Interp.ImportUsed() +} + +// Name returns name of current set of parameters, including Tag. +// if ExtraSheets is empty then it returns "Base", otherwise returns ExtraSheets +func (pr *Params) Name() string { + rn := "" + if pr.Tag != "" { + rn += pr.Tag + "_" + } + if pr.ExtraSheets == "" { + rn += "Base" + } else { + rn += pr.ExtraSheets + } + return rn +} + +// RunName returns the name of a simulation run based on params Name() +// and starting run number. +func (pr *Params) RunName(startRun int) string { + return fmt.Sprintf("%s_%03d", pr.Name(), startRun) +} + +// ApplyAll applies all parameters to given network, +// using "Base" Sheet then any ExtraSheets, +// for Layer and Path params (each must have the named sheets, +// for proper error checking in case of typos). +func (pr *Params) ApplyAll(net *Network) { + pr.ApplySheet(net, "Base") + if pr.ExtraSheets == "" { + return + } + if pr.Script != "" { + _, err := pr.Interp.Eval(pr.Script) + if err != nil { + fmt.Println(pr.Script) + errors.Log(err) + } + } + sps := strings.Fields(pr.ExtraSheets) + for _, ps := range sps { + if ps == "Base" { + continue + } + pr.ApplySheet(net, ps) + } +} + +// ApplySheet applies parameters for given [params.Sheet] name +// for Layer and Path params (each must have the named sheets, +// for proper error checking in case of typos). +func (pr *Params) ApplySheet(net *Network, sheetName string) error { + lsheet, err := pr.Layer.SheetByName(sheetName) + if err != nil { + return err + } + psheet, err := pr.Path.SheetByName(sheetName) + if err != nil { + return err + } + lsheet.SelMatchReset() + psheet.SelMatchReset() + + ApplyParamSheets(net, lsheet, psheet) + return nil +} + +// ApplyParamSheets applies Layer and Path parameters from given sheets, +// returning true if any applied. +func ApplyParamSheets(net *Network, layer *params.Sheet[*LayerParams], path *params.Sheet[*PathParams]) bool { + appl := ApplyLayerSheet(net, layer) + appp := ApplyPathSheet(net, path) + return appl || appp +} + +// ApplyLayerSheet applies Layer parameters from given sheet, returning true if any applied. +func ApplyLayerSheet(net *Network, sheet *params.Sheet[*LayerParams]) bool { + applied := false + for _, ly := range net.Layers { + app := sheet.Apply(ly.Params) + ly.UpdateParams() + if app { + applied = true + } + } + return applied +} + +// ApplyPathSheet applies Path parameters from given sheet, returning true if any applied. +func ApplyPathSheet(net *Network, sheet *params.Sheet[*PathParams]) bool { + applied := false + for _, ly := range net.Layers { + for _, pt := range ly.RecvPaths { + app := sheet.Apply(pt.Params) + pt.UpdateParams() + if app { + applied = true + } + } + } + return applied +} diff --git a/leabra/path.go b/leabra/path.go index 43a5e7b..c739c26 100644 --- a/leabra/path.go +++ b/leabra/path.go @@ -6,7 +6,7 @@ package leabra import ( "cogentcore.org/core/math32" - "github.com/emer/etensor/tensor" + "cogentcore.org/lab/tensor" ) // note: path.go contains algorithm methods; pathbase.go has infrastructure. @@ -38,9 +38,9 @@ func (pt *Path) SetScalesRPool(scales tensor.Tensor) { for rux := 0; rux < rNuX; rux++ { ri := 0 if r2d { - ri = rsh.Offset([]int{ruy, rux}) + ri = rsh.IndexTo1D(ruy, rux) } else { - ri = rsh.Offset([]int{rpy, rpx, ruy, rux}) + ri = rsh.IndexTo1D(rpy, rpx, ruy, rux) } scst := (ruy*rNuX + rux) * rfsz nc := int(pt.RConN[ri]) diff --git a/leabra/pathbase.go b/leabra/pathbase.go index 43af30c..b5a29a6 100644 --- a/leabra/pathbase.go +++ b/leabra/pathbase.go @@ -5,21 +5,23 @@ package leabra import ( - "encoding/json" "errors" "fmt" "io" "log" + "reflect" "strconv" "strings" "cogentcore.org/core/base/indent" + "cogentcore.org/core/base/reflectx" "cogentcore.org/core/math32" "cogentcore.org/core/math32/minmax" + "cogentcore.org/lab/tensor" "github.com/emer/emergent/v2/emer" + "github.com/emer/emergent/v2/params" "github.com/emer/emergent/v2/paths" "github.com/emer/emergent/v2/weights" - "github.com/emer/etensor/tensor" ) // note: paths.go contains algorithm methods; pathbase.go has infrastructure. @@ -183,16 +185,46 @@ func (pt *Path) ShouldDisplay(field string) bool { return true } -// AllParams returns a listing of all parameters in the Layer -func (pt *Path) AllParams() string { - str := "///////////////////////////////////////////////////\nPath: " + pt.Name + "\n" - b, _ := json.MarshalIndent(&pt.WtInit, "", " ") - str += "WtInit: {\n " + JsonToParams(b) - b, _ = json.MarshalIndent(&pt.WtScale, "", " ") - str += "WtScale: {\n " + JsonToParams(b) - b, _ = json.MarshalIndent(&pt.Learn, "", " ") - str += "Learn: {\n " + strings.Replace(JsonToParams(b), " XCal: {", "\n XCal: {", -1) - return str +// ParamsString returns a listing of all parameters in the Layer and +// pathways within the layer. If nonDefault is true, only report those +// not at their default values. +func (pt *Path) ParamsString(nonDefault bool) string { + var b strings.Builder + b.WriteString(" //////// Path: " + pt.Name + "\n") + b.WriteString(params.PrintStruct(pt, 1, func(path string, ft reflect.StructField, fv any) bool { + if ft.Tag.Get("display") == "-" { + return false + } + if nonDefault { + if def := ft.Tag.Get("default"); def != "" { + if reflectx.ValueIsDefault(reflect.ValueOf(fv), def) { + return false + } + } else { + if reflectx.NonPointerType(ft.Type).Kind() != reflect.Struct { + return false + } + } + } + switch path { + case "WtInit", "WtScale", "Learn": + return true + case "CHL": + return pt.Type == CHLPath + case "Trace": + return pt.Type == MatrixPath + } + return false + }, + func(path string, ft reflect.StructField, fv any) string { + if nonDefault { + if def := ft.Tag.Get("default"); def != "" { + return reflectx.ToString(fv) + " [" + def + "]" + } + } + return "" + })) + return b.String() } func (pt *Path) SynVarNames() []string { diff --git a/leabra/pbwm_layers.go b/leabra/pbwm_layers.go index 64d91f6..beb315f 100644 --- a/leabra/pbwm_layers.go +++ b/leabra/pbwm_layers.go @@ -90,7 +90,7 @@ func (ly *Layer) MatrixOutAChInhib(ctx *Context) { for xp := maintN; xp < xpN; xp++ { for yn := 0; yn < ynN; yn++ { for xn := 0; xn < xnN; xn++ { - ni := ly.Shape.Offset([]int{yp, xp, yn, xn}) + ni := ly.Shape.IndexTo1D(yp, xp, yn, xn) nrn := &ly.Neurons[ni] if nrn.IsOff() { continue diff --git a/leabra/pbwm_net.go b/leabra/pbwm_net.go index 8908f11..46893f8 100644 --- a/leabra/pbwm_net.go +++ b/leabra/pbwm_net.go @@ -9,7 +9,8 @@ import ( ) // RecGateAct is called after GateSend, to record gating activations at time of gating -func (nt *Network) RecGateAct(ctx *Context) { +func (nt *Network) RecGateAct() { + ctx := &nt.Context for _, ly := range nt.Layers { if ly.Off { continue @@ -23,7 +24,7 @@ func (nt *Network) RecGateAct(ctx *Context) { // and each pool has nNeurY, nNeurX neurons. da gives the DaReceptor type (D1R = Go, D2R = NoGo) func (nt *Network) AddMatrixLayer(name string, nY, nMaint, nOut, nNeurY, nNeurX int, da DaReceptors) *Layer { tX := nMaint + nOut - mtx := nt.AddLayer4D(name, nY, tX, nNeurY, nNeurX, MatrixLayer) + mtx := nt.AddLayer4D(name, MatrixLayer, nY, tX, nNeurY, nNeurX) mtx.PBWM.DaR = da mtx.PBWM.Set(nY, nMaint, nOut) return mtx @@ -34,7 +35,7 @@ func (nt *Network) AddMatrixLayer(name string, nY, nMaint, nOut, nNeurY, nNeurX // and each pool has 1x1 neurons. func (nt *Network) AddGPeLayer(name string, nY, nMaint, nOut int) *Layer { tX := nMaint + nOut - gpe := nt.AddLayer4D(name, nY, tX, 1, 1, GPeLayer) + gpe := nt.AddLayer4D(name, GPeLayer, nY, tX, 1, 1) return gpe } @@ -43,14 +44,14 @@ func (nt *Network) AddGPeLayer(name string, nY, nMaint, nOut int) *Layer { // and each pool has 1x1 neurons. func (nt *Network) AddGPiThalLayer(name string, nY, nMaint, nOut int) *Layer { tX := nMaint + nOut - gpi := nt.AddLayer4D(name, nY, tX, 1, 1, GPiThalLayer) + gpi := nt.AddLayer4D(name, GPiThalLayer, nY, tX, 1, 1) gpi.PBWM.Set(nY, nMaint, nOut) return gpi } // AddCINLayer adds a CINLayer, with a single neuron. func (nt *Network) AddCINLayer(name string) *Layer { - cin := nt.AddLayer2D(name, 1, 1, CINLayer) + cin := nt.AddLayer2D(name, CINLayer, 1, 1) return cin } @@ -94,12 +95,12 @@ func (nt *Network) AddDorsalBG(prefix string, nY, nMaint, nOut, nNeurY, nNeurX i // else Full set of 5 dynamic maintenance types. Both have the class "PFC" set. // deep is positioned behind super. func (nt *Network) AddPFCLayer(name string, nY, nX, nNeurY, nNeurX int, out, dynMaint bool) (sp, dp *Layer) { - sp = nt.AddLayer4D(name, nY, nX, nNeurY, nNeurX, SuperLayer) + sp = nt.AddLayer4D(name, SuperLayer, nY, nX, nNeurY, nNeurX) dym := 1 if !dynMaint { dym = 5 } - dp = nt.AddLayer4D(name+"D", nY, nX, dym*nNeurY, nNeurX, PFCDeepLayer) + dp = nt.AddLayer4D(name+"D", PFCDeepLayer, nY, nX, dym*nNeurY, nNeurX) sp.AddClass("PFC") dp.AddClass("PFC") dp.PFCGate.OutGate = out diff --git a/leabra/rl.go b/leabra/rl.go index 422ab55..35f6193 100644 --- a/leabra/rl.go +++ b/leabra/rl.go @@ -96,9 +96,9 @@ func (ly *Layer) ActFromGRWDa(ctx *Context) { // Reward layer, a RWPred prediction layer, and a dopamine layer that computes diff. // Only generates DA when Rew layer has external input -- otherwise zero. func (nt *Network) AddRWLayers(prefix string, space float32) (rew, rp, da *Layer) { - rew = nt.AddLayer2D(prefix+"Rew", 1, 1, InputLayer) - rp = nt.AddLayer2D(prefix+"RWPred", 1, 1, RWPredLayer) - da = nt.AddLayer2D(prefix+"DA", 1, 1, RWDaLayer) + rew = nt.AddLayer2D(prefix+"Rew", InputLayer, 1, 1) + rp = nt.AddLayer2D(prefix+"RWPred", RWPredLayer, 1, 1) + da = nt.AddLayer2D(prefix+"DA", RWDaLayer, 1, 1) da.RW.RewLay = rew.Name rp.PlaceBehind(rew, space) da.PlaceBehind(rp, space) @@ -284,10 +284,10 @@ func (pt *Path) DWtTDPred() { // Pathway from Rew to RewInteg is given class TDToInteg -- should // have no learning and 1 weight. func (nt *Network) AddTDLayers(prefix string, space float32) (rew, rp, ri, td *Layer) { - rew = nt.AddLayer2D(prefix+"Rew", 1, 1, InputLayer) - rp = nt.AddLayer2D(prefix+"Pred", 1, 1, TDPredLayer) - ri = nt.AddLayer2D(prefix+"Integ", 1, 1, TDIntegLayer) - td = nt.AddLayer2D(prefix+"TD", 1, 1, TDDaLayer) + rew = nt.AddLayer2D(prefix+"Rew", InputLayer, 1, 1) + rp = nt.AddLayer2D(prefix+"Pred", TDPredLayer, 1, 1) + ri = nt.AddLayer2D(prefix+"Integ", TDIntegLayer, 1, 1) + td = nt.AddLayer2D(prefix+"TD", TDDaLayer, 1, 1) ri.TD.PredLay = rp.Name td.TD.IntegLay = ri.Name From 8f676b89f941edb161a072ffa9a9a64d9d6281a6 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Wed, 9 Jul 2025 16:11:52 -0700 Subject: [PATCH 03/14] lab: ra25 working with new update --- examples/bench/README.md | 19 - examples/bench/bench.go | 229 -- examples/bench/bench_hardware.md | 78 - examples/bench/bench_results.md | 175 - examples/bench/run_bench.sh | 32 - examples/bench/run_hardware.sh | 30 - examples/deep_fsa/README.md | 24 - examples/deep_fsa/deep_fsa.go | 804 ---- .../fig_deepleabra_fsa_net_3steps.png | Bin 430186 -> 0 bytes examples/deep_fsa/fig_reber_grammar_fsa.png | Bin 16796 -> 0 bytes examples/deep_fsa/fsa_env.go | 166 - examples/hip/README.md | 74 - examples/hip/best_2-20.diff | 405 --- examples/hip/fig_ab_ac_data_catinf.png | Bin 76909 -> 0 bytes examples/hip/hip.go | 995 ----- examples/hip/plots/fig_ab_ac_data_catinf.png | Bin 76909 -> 0 bytes examples/hip/test_ab.tsv | 11 - examples/hip/test_ac.tsv | 11 - examples/hip/test_lure.tsv | 11 - examples/hip/train_ab.tsv | 11 - examples/hip/train_ac.tsv | 11 - examples/hip_bench/README.md | 51 - examples/hip_bench/def.params | 419 --- examples/hip_bench/def_learning.png | Bin 73151 -> 0 bytes examples/hip_bench/def_memory.png | Bin 72315 -> 0 bytes examples/hip_bench/def_params.go | 298 -- examples/hip_bench/diff/1vs2_diffs_1.png | Bin 127522 -> 0 bytes examples/hip_bench/diff/1vs2_diffs_2.png | Bin 286384 -> 0 bytes examples/hip_bench/diff/1vs2_diffs_3.png | Bin 162629 -> 0 bytes examples/hip_bench/diff/1vs3_diffs_1.png | Bin 111854 -> 0 bytes examples/hip_bench/diff/1vs3_diffs_2.png | Bin 183293 -> 0 bytes examples/hip_bench/diff/2vs4_diffs_1.png | Bin 428668 -> 0 bytes examples/hip_bench/diff/2vs4_diffs_2.png | Bin 193182 -> 0 bytes examples/hip_bench/diff/README.md | 36 - .../hip_bench/diff/fig_alphacyc_diffs_1.png | Bin 240800 -> 0 bytes .../hip_bench/diff/fig_alphacyc_diffs_2.png | Bin 86337 -> 0 bytes .../hip_bench/diff/fig_alphacyc_diffs_3.png | Bin 33862 -> 0 bytes .../hip_bench/diff/fig_netconfig_diffs.png | Bin 106270 -> 0 bytes examples/hip_bench/hip_bench.go | 2754 -------------- examples/hip_bench/hip_bench.py | 2642 -------------- examples/hip_bench/orig_learning.png | Bin 73360 -> 0 bytes examples/hip_bench/orig_memory.png | Bin 72489 -> 0 bytes examples/hip_bench/orig_params.go | 257 -- examples/hip_bench/params.go | 148 - .../hip_bench/testing_effect/def_params.go | 326 -- .../hip_bench/testing_effect/hip_bench_te.go | 3222 ----------------- examples/ra25/README.md | 64 - examples/ra25/config.go | 152 - examples/ra25/ra25.go | 777 ---- examples/ra25/random_5x5_25.tsv | 26 - examples/ra25/random_5x5_25_gen.csv | 26 - examples/ra25/typegen.go | 29 - examples/sir2/README.md | 91 - examples/sir2/enumgen.go | 48 - examples/sir2/sir2.go | 765 ---- examples/sir2/sir2_env.go | 189 - examples/sir2/typegen.go | 15 - go.mod | 46 +- go.sum | 119 +- leabra/deep_layers.go | 58 +- leabra/deep_paths.go | 28 +- leabra/enumgen.go | 43 + leabra/hip.go | 79 +- leabra/layer.go | 155 +- leabra/layerbase.go | 214 +- leabra/layerparams.go | 230 ++ leabra/looper.go | 29 +- leabra/network.go | 30 +- leabra/networkbase.go | 26 +- leabra/neuromod.go | 2 +- leabra/params.go | 4 +- leabra/path.go | 87 +- leabra/pathbase.go | 123 +- leabra/pathparams.go | 142 + leabra/pbwm_layers.go | 104 +- leabra/pbwm_net.go | 14 +- leabra/pbwm_paths.go | 22 +- leabra/rl.go | 62 +- leabra/simstats.go | 682 ++++ leabra/typegen.go | 30 +- 80 files changed, 1658 insertions(+), 16092 deletions(-) delete mode 100644 examples/bench/README.md delete mode 100644 examples/bench/bench.go delete mode 100644 examples/bench/bench_hardware.md delete mode 100644 examples/bench/bench_results.md delete mode 100755 examples/bench/run_bench.sh delete mode 100755 examples/bench/run_hardware.sh delete mode 100644 examples/deep_fsa/README.md delete mode 100644 examples/deep_fsa/deep_fsa.go delete mode 100644 examples/deep_fsa/fig_deepleabra_fsa_net_3steps.png delete mode 100644 examples/deep_fsa/fig_reber_grammar_fsa.png delete mode 100644 examples/deep_fsa/fsa_env.go delete mode 100644 examples/hip/README.md delete mode 100644 examples/hip/best_2-20.diff delete mode 100644 examples/hip/fig_ab_ac_data_catinf.png delete mode 100644 examples/hip/hip.go delete mode 100644 examples/hip/plots/fig_ab_ac_data_catinf.png delete mode 100644 examples/hip/test_ab.tsv delete mode 100644 examples/hip/test_ac.tsv delete mode 100644 examples/hip/test_lure.tsv delete mode 100644 examples/hip/train_ab.tsv delete mode 100644 examples/hip/train_ac.tsv delete mode 100644 examples/hip_bench/README.md delete mode 100644 examples/hip_bench/def.params delete mode 100644 examples/hip_bench/def_learning.png delete mode 100644 examples/hip_bench/def_memory.png delete mode 100644 examples/hip_bench/def_params.go delete mode 100644 examples/hip_bench/diff/1vs2_diffs_1.png delete mode 100644 examples/hip_bench/diff/1vs2_diffs_2.png delete mode 100644 examples/hip_bench/diff/1vs2_diffs_3.png delete mode 100644 examples/hip_bench/diff/1vs3_diffs_1.png delete mode 100644 examples/hip_bench/diff/1vs3_diffs_2.png delete mode 100644 examples/hip_bench/diff/2vs4_diffs_1.png delete mode 100644 examples/hip_bench/diff/2vs4_diffs_2.png delete mode 100644 examples/hip_bench/diff/README.md delete mode 100644 examples/hip_bench/diff/fig_alphacyc_diffs_1.png delete mode 100644 examples/hip_bench/diff/fig_alphacyc_diffs_2.png delete mode 100644 examples/hip_bench/diff/fig_alphacyc_diffs_3.png delete mode 100644 examples/hip_bench/diff/fig_netconfig_diffs.png delete mode 100644 examples/hip_bench/hip_bench.go delete mode 100755 examples/hip_bench/hip_bench.py delete mode 100644 examples/hip_bench/orig_learning.png delete mode 100644 examples/hip_bench/orig_memory.png delete mode 100644 examples/hip_bench/orig_params.go delete mode 100644 examples/hip_bench/params.go delete mode 100644 examples/hip_bench/testing_effect/def_params.go delete mode 100644 examples/hip_bench/testing_effect/hip_bench_te.go delete mode 100644 examples/ra25/README.md delete mode 100644 examples/ra25/config.go delete mode 100644 examples/ra25/ra25.go delete mode 100644 examples/ra25/random_5x5_25.tsv delete mode 100644 examples/ra25/random_5x5_25_gen.csv delete mode 100644 examples/ra25/typegen.go delete mode 100644 examples/sir2/README.md delete mode 100644 examples/sir2/enumgen.go delete mode 100644 examples/sir2/sir2.go delete mode 100644 examples/sir2/sir2_env.go delete mode 100644 examples/sir2/typegen.go create mode 100644 leabra/layerparams.go create mode 100644 leabra/pathparams.go create mode 100644 leabra/simstats.go diff --git a/examples/bench/README.md b/examples/bench/README.md deleted file mode 100644 index bedd082..0000000 --- a/examples/bench/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# bench - -This is a standard benchmarking system for leabra. It runs 5 layer fully connected networks of various sizes, with the number of events and epochs adjusted to take roughly an equal amount of time overall. - -First, build the executable: - -```sh -$ go build -``` - -* `run_bench.sh` is a script that runs standard configurations -- can pass additional args like `threads=2` to test different threading levels. - -* `bench_results.md` has the algorithmic / implementational history for different versions of the code, on the same platform (macbook pro). - -* `run_hardware.sh` is a script specifically for hardware testing, running standard 1, 2, 4 threads for each network size, and only reporting the final result, in the form shown in: - -* `bench_hardware.md` has standard results for different hardware. - - diff --git a/examples/bench/bench.go b/examples/bench/bench.go deleted file mode 100644 index 71272df..0000000 --- a/examples/bench/bench.go +++ /dev/null @@ -1,229 +0,0 @@ -// Copyright (c) 2019, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// bench runs a benchmark model with 5 layers (3 hidden, Input, Output) all of the same -// size, for benchmarking different size networks. These are not particularly realistic -// models for actual applications (e.g., large models tend to have much more topographic -// patterns of connectivity and larger layers with fewer connections), but they are -// easy to run.. -package main - -import ( - "flag" - "fmt" - "math" - "math/rand" - "os" - "time" - - "cogentcore.org/core/base/timer" - "cogentcore.org/lab/base/randx" - "github.com/emer/emergent/v2/params" - "github.com/emer/emergent/v2/patgen" - "github.com/emer/emergent/v2/paths" - "github.com/emer/etensor/tensor/table" - "github.com/emer/leabra/v2/leabra" -) - -var Net *leabra.Network -var Pats *table.Table -var EpcLog *table.Table -var Silent = false // non-verbose mode -- just reports result - -var ParamSets = params.Sets{ - "Base": { - {Sel: "Path", Desc: "norm and momentum on works better, but wt bal is not better for smaller nets", - Params: params.Params{ - "Path.Learn.Norm.On": "true", - "Path.Learn.Momentum.On": "true", - "Path.Learn.WtBal.On": "false", - }}, - {Sel: "Layer", Desc: "using default 1.8 inhib for all of network -- can explore", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "1.8", - "Layer.Act.Gbar.L": "0.2", // original value -- makes HUGE diff on perf! - }}, - {Sel: "#Output", Desc: "output definitely needs lower inhib -- true for smaller layers in general", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "1.4", - }}, - {Sel: ".Back", Desc: "top-down back-pathways MUST have lower relative weight scale, otherwise network hallucinates", - Params: params.Params{ - "Path.WtScale.Rel": "0.2", - }}, - }, -} - -func ConfigNet(net *leabra.Network, units int) { - squn := int(math.Sqrt(float64(units))) - shp := []int{squn, squn} - - inLay := net.AddLayer("Input", shp, leabra.InputLayer) - hid1Lay := net.AddLayer("Hidden1", shp, leabra.SuperLayer) - hid2Lay := net.AddLayer("Hidden2", shp, leabra.SuperLayer) - hid3Lay := net.AddLayer("Hidden3", shp, leabra.SuperLayer) - outLay := net.AddLayer("Output", shp, leabra.TargetLayer) - - net.ConnectLayers(inLay, hid1Lay, paths.NewFull(), leabra.ForwardPath) - net.ConnectLayers(hid1Lay, hid2Lay, paths.NewFull(), leabra.ForwardPath) - net.ConnectLayers(hid2Lay, hid3Lay, paths.NewFull(), leabra.ForwardPath) - net.ConnectLayers(hid3Lay, outLay, paths.NewFull(), leabra.ForwardPath) - - net.ConnectLayers(outLay, hid3Lay, paths.NewFull(), leabra.BackPath) - net.ConnectLayers(hid3Lay, hid2Lay, paths.NewFull(), leabra.BackPath) - net.ConnectLayers(hid2Lay, hid1Lay, paths.NewFull(), leabra.BackPath) - - net.Defaults() - net.ApplyParams(ParamSets["Base"], false) // no msg - net.Build() - net.InitWeights() -} - -func ConfigPats(dt *table.Table, pats, units int) { - squn := int(math.Sqrt(float64(units))) - shp := []int{squn, squn} - // fmt.Printf("shape: %v\n", shp) - - dt.AddStringColumn("Name") - dt.AddFloat32TensorColumn("Input", shp) - dt.AddFloat32TensorColumn("Output", shp) - dt.SetNumRows(pats) - - // note: actually can learn if activity is .15 instead of .25 - // but C++ benchmark is for .25.. - nOn := units / 6 - - patgen.PermutedBinaryRows(dt.Columns[1], nOn, 1, 0) - patgen.PermutedBinaryRows(dt.Columns[2], nOn, 1, 0) -} - -func ConfigEpcLog(dt *table.Table) { - dt.AddIntColumn("Epoch") - dt.AddFloat32Column("CosDiff") - dt.AddFloat32Column("AvgCosDiff") - dt.AddFloat32Column("SSE") - dt.AddFloat32Column("Avg SSE") - dt.AddFloat32Column("Count Err") - dt.AddFloat32Column("Pct Err") - dt.AddFloat32Column("Pct Cor") - dt.AddFloat32Column("Hid1 ActAvg") - dt.AddFloat32Column("Hid2 ActAvg") - dt.AddFloat32Column("Out ActAvg") -} - -func TrainNet(net *leabra.Network, pats, epcLog *table.Table, epcs int) { - ctx := leabra.NewContext() - net.InitWeights() - np := pats.NumRows() - porder := rand.Perm(np) // randomly permuted order of ints - - epcLog.SetNumRows(epcs) - - inLay := net.LayerByName("Input") - hid1Lay := net.LayerByName("Hidden1") - hid2Lay := net.LayerByName("Hidden2") - outLay := net.LayerByName("Output") - - _ = hid1Lay - _ = hid2Lay - - inPats, _ := pats.ColumnByName("Input") - outPats, _ := pats.ColumnByName("Output") - - tmr := timer.Time{} - tmr.Start() - for epc := 0; epc < epcs; epc++ { - randx.PermuteInts(porder) - outCosDiff := float32(0) - cntErr := 0 - sse := 0.0 - avgSSE := 0.0 - for pi := 0; pi < np; pi++ { - ppi := porder[pi] - inp := inPats.SubSpace([]int{ppi}) - outp := outPats.SubSpace([]int{ppi}) - - inLay.ApplyExt(inp) - outLay.ApplyExt(outp) - - net.AlphaCycInit(true) - ctx.AlphaCycStart() - for qtr := 0; qtr < 4; qtr++ { - for cyc := 0; cyc < ctx.CycPerQtr; cyc++ { - net.Cycle(ctx) - ctx.CycleInc() - } - net.QuarterFinal(ctx) - ctx.QuarterInc() - } - net.DWt() - net.WtFromDWt() - outCosDiff += outLay.CosDiff.Cos - pSSE, pAvgSSE := outLay.MSE(0.5) - sse += pSSE - avgSSE += pAvgSSE - if pSSE != 0 { - cntErr++ - } - } - outCosDiff /= float32(np) - sse /= float64(np) - avgSSE /= float64(np) - pctErr := float64(cntErr) / float64(np) - pctCor := 1 - pctErr - // fmt.Printf("epc: %v \tCosDiff: %v \tAvgCosDif: %v\n", epc, outCosDiff, outLay.CosDiff.Avg) - epcLog.SetFloat("Epoch", epc, float64(epc)) - epcLog.SetFloat("CosDiff", epc, float64(outCosDiff)) - epcLog.SetFloat("AvgCosDiff", epc, float64(outLay.CosDiff.Avg)) - epcLog.SetFloat("SSE", epc, sse) - epcLog.SetFloat("Avg SSE", epc, avgSSE) - epcLog.SetFloat("Count Err", epc, float64(cntErr)) - epcLog.SetFloat("Pct Err", epc, pctErr) - epcLog.SetFloat("Pct Cor", epc, pctCor) - epcLog.SetFloat("Hid1 ActAvg", epc, float64(hid1Lay.Pools[0].ActAvg.ActPAvgEff)) - epcLog.SetFloat("Hid2 ActAvg", epc, float64(hid2Lay.Pools[0].ActAvg.ActPAvgEff)) - epcLog.SetFloat("Out ActAvg", epc, float64(outLay.Pools[0].ActAvg.ActPAvgEff)) - } - tmr.Stop() - if Silent { - fmt.Printf("%v\n", tmr.Total) - } else { - fmt.Printf("Took %v for %v epochs, avg per epc: m%6.4g\n", tmr.Total, epcs, float64(tmr.Total)/float64(int(time.Second)*epcs)) - } -} - -func main() { - var epochs int - var pats int - var units int - - flag.Usage = func() { - fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n", os.Args[0]) - flag.PrintDefaults() - } - - // process command args - flag.IntVar(&epochs, "epochs", 2, "number of epochs to run") - flag.IntVar(&pats, "pats", 10, "number of patterns per epoch") - flag.IntVar(&units, "units", 100, "number of units per layer -- uses NxN where N = sqrt(units)") - flag.BoolVar(&Silent, "silent", false, "only report the final time") - flag.Parse() - - if !Silent { - fmt.Printf("Running bench with: %v epochs, %v pats, %v units\n", epochs, pats, units) - } - - Net = leabra.NewNetwork("Bench") - ConfigNet(Net, units) - - Pats = &table.Table{} - ConfigPats(Pats, pats, units) - - EpcLog = &table.Table{} - ConfigEpcLog(EpcLog) - - TrainNet(Net, Pats, EpcLog, epochs) - - EpcLog.SaveCSV("bench_epc.dat", ',', table.Headers) -} diff --git a/examples/bench/bench_hardware.md b/examples/bench/bench_hardware.md deleted file mode 100644 index fa74eae..0000000 --- a/examples/bench/bench_hardware.md +++ /dev/null @@ -1,78 +0,0 @@ -# Hardware benchmarks - -NOTE: generally taking the best of 2 runs. Not sure how the mac allocates priority but it often slows things down after a short while if they're taking a lot of CPU. Great for some things but not for this! - -## MacBook Pro 16-inch, 2021: Apple M1 Max, 64 GB LPDDR5 memory, Go 1.17.5 - -``` -Size 1 thr 2 thr 4 thr ---------------------------------- -SMALL: 0.79 1.63 1.96 -MEDIUM: 1.03 1.18 1.20 -LARGE: 6.83 5.04 3.90 -HUGE: 10.60 7.49 5.54 -GINORM: 17.1 12.3 9.07 -``` - -## MacBook Pro 16-inch, 2019: 2.4 Ghz 8-Core Intel Core i9, 64 GB 2667 Mhz DDR4 memory - -## Go 1.17.5 -- uses registers to pass args, is tiny bit faster - -``` -Size 1 thr 2 thr 4 thr ---------------------------------- -SMALL: 1.16 3.01 3.29 -MEDIUM: 1.51 2.09 2.00 -LARGE: 9.40 7.13 5.26 -HUGE: 17.3 12.2 9.15 -GINORM: 26.1 19.8 15.3 -``` - -## Go 1.15.4 - -``` -Size 1 thr 2 thr 4 thr ---------------------------------- -SMALL: 1.25 3.31 3.51 -MEDIUM: 1.59 2.26 2.07 -LARGE: 9.43 7.01 5.35 -HUGE: 18.6 12.9 9.66 -GINORM: 23.1 17.4 13.2 -``` - -## hpc2: Dual AMD EPYC 7532 CPUs (128 threads per node), and 256 GB of RAM each, Go 1.15.6 - -``` -Size 1 thr 2 thr 4 thr ---------------------------------- -SMALL: 1.29 4.54 5.7 -MEDIUM: 1.7 4.32 4.25 -LARGE: 11.2 13.4 10.3 -HUGE: 22.1 18.8 13.6 -GINORM: 26.6 22.6 16.9 -``` - -## crick: Dual Intel Xeon E5-2620 V4 @ 2.10 Ghz, 64 GB RAM, Go 1.15.6 - -``` -Size 1 thr 2 thr 4 thr ---------------------------------- -SMALL: 1.91 5.2 7.18 -MEDIUM: 2.28 3.62 5.19 -LARGE: 12.1 14.4 12.1 -HUGE: 24.0 26.5 19.2 -GINORM: 30.0 33.5 24.5 -``` - -## blanca: Dual Intel Xeon E5-2667 V2 @3.3 Ghz, 64 GB Ram, Go 1.13.4 - -``` -Size 1 thr 2 thr 4 thr ---------------------------------- -SMALL: 1.6 5.07 5.99 -MEDIUM: 2.04 4.64 4.68 -LARGE: 11.2 12.3 9.52 -HUGE: 21.2 21.7 15.2 -GINORM: 27.0 28.5 21.4 -``` - diff --git a/examples/bench/bench_results.md b/examples/bench/bench_results.md deleted file mode 100644 index 6e03b61..0000000 --- a/examples/bench/bench_results.md +++ /dev/null @@ -1,175 +0,0 @@ -# Benchmark results - -5-layer networks, with same # of units per layer: SMALL = 25; MEDIUM = 100; LARGE = 625; HUGE = 1024; GINORM = 2048, doing full learning, with default params, including momentum, dwtnorm, and weight balance. - -Results are total time for 1, 2, 4 threads, on my macbook. - -## C++ Emergent - -``` -* Size 1 thr 2 thr 4 thr ---------------------------------- -* SMALL: 2.383 2.248 2.042 -* MEDIUM: 2.535 1.895 1.263 -* LARGE: 19.627 8.559 8.105 -* HUGE: 24.119 11.803 11.897 -* GINOR: 35.334 24.768 17.794 -``` - -## Go v1.15, 8/21/2020, leabra v1.1.5 - -Basically the same results as below, except a secs or so faster due to faster macbook pro. Layer.Act.Gbar.L = 0.2 instead of new default of 0.1 makes a *huge* difference! - -``` -* Size 1 thr 2 thr 4 thr ---------------------------------- -* SMALL: 1.27 3.53 3.64 -* MEDIUM: 1.61 2.31 2.09 -* LARGE: 9.56 7.48 5.44 -* HUGE: 19.17 13.3 9.62 -* GINOR: 23.61 17.94 13.24 -``` - -``` -$ ./bench -epochs 5 -pats 20 -units 625 -threads=1 -Took 9.845 secs for 5 epochs, avg per epc: 1.969 -TimerReport: BenchNet, NThreads: 1 - Function Name Total Secs Pct - ActFmG 1.824 18.59 - AvgMaxAct 0.09018 0.919 - AvgMaxGe 0.08463 0.8624 - CyclePost 0.002069 0.02108 - DWt 2.11 21.51 - GFmInc 0.3974 4.05 - InhibFmGeAct 0.107 1.091 - QuarterFinal 0.004373 0.04457 - SendGDelta 3.117 31.77 - WtBalFmWt 1.285e-05 0.0001309 - WtFmDWt 2.075 21.15 - Total 9.813 -``` - -``` -$ ./bench -epochs 5 -pats 10 -units 1024 -threads=1 -Took 19.34 secs for 5 epochs, avg per epc: 3.868 -TimerReport: BenchNet, NThreads: 1 - Function Name Total Secs Pct - ActFmG 1.639 8.483 - AvgMaxAct 0.07904 0.4091 - AvgMaxGe 0.07551 0.3909 - CyclePost 0.001287 0.006663 - DWt 3.669 18.99 - GFmInc 0.3667 1.898 - InhibFmGeAct 0.09876 0.5112 - QuarterFinal 0.004008 0.02075 - SendGDelta 10.21 52.87 - WtBalFmWt 1.2e-05 6.211e-05 - WtFmDWt 3.172 16.42 - Total 19.32 -``` - -## Go emergent 6/2019 after a few bugfixes, etc: significantly faster! - -``` -* SMALL: 1.46 3.63 3.96 -* MEDIUM: 1.87 2.46 2.32 -* LARGE: 11.38 8.48 6.03 -* HUGE: 19.53 14.52 11.29 -* GINOR: 26.93 20.66 15.71 -``` - -now really just as fast overall, if not faster, than C++! - -note: only tiny changes after adding IsOff check for all neuron-level computation. - -## Go emergent, per-layer threads, thread pool, optimized range synapse code - -``` -* SMALL: 1.486 4.297 4.644 -* MEDIUM: 2.864 3.312 3.037 -* LARGE: 25.09 20.06 16.88 -* HUGE: 31.39 23.85 19.53 -* GINOR: 42.18 31.29 26.06 -``` - -also: not too much diff for wt bal off! - -## Go emergent, per-layer threads, thread pool - -``` -* SMALL: 1.2180 4.25328 4.66991 -* MEDIUM: 3.392145 3.631261 3.38302 -* LARGE: 31.27893 20.91189 17.828935 -* HUGE: 42.0238 22.64010 18.838019 -* GINOR: 65.67025 35.54374 27.56567 -``` - -## Go emergent, per-layer threads, no thread pool (de-novo threads) - -``` -* SMALL: 1.2180 3.548349 4.08908 -* MEDIUM: 3.392145 3.46302 3.187831 -* LARGE: 31.27893 22.20344 18.797924 -* HUGE: 42.0238 29.00472 24.53498 -* GINOR: 65.67025 45.09239 36.13568 -``` - -# Per Function - -Focusing on the LARGE case: - -C++: `emergent -nogui -ni -p leabra_bench.proj epochs=5 pats=20 units=625 n_threads=1` - -``` -BenchNet_5lay timing report: -function time percent -Net_Input 8.91 43.1 -Net_InInteg 0.71 3.43 -Activation 1.95 9.43 -Weight_Change 4.3 20.8 -Weight_Update 2.85 13.8 -Net_InStats 0.177 0.855 -Inhibition 0.00332 0.016 -Act_post 1.63 7.87 -Cycle_Stats 0.162 0.781 - total: 20.7 -``` - -Go: `./bench -epochs 5 -pats 20 -units 625 -threads=1` - -``` -TimerReport: BenchNet, NThreads: 1 - Function Name Total Secs Pct - ActFmG 2.121 8.223 - AvgMaxAct 0.1003 0.389 - AvgMaxGe 0.1012 0.3922 - DWt 5.069 19.65 - GeFmGeInc 0.3249 1.259 - InhibFmGeAct 0.08498 0.3295 - QuarterFinal 0.003773 0.01463 - SendGeDelta 14.36 55.67 - WtBalFmWt 0.1279 0.4957 - WtFmDWt 3.501 13.58 - Total 25.79 -``` - -``` -TimerReport: BenchNet, NThreads: 1 - Function Name Total Secs Pct - ActFmG 2.119 7.074 - AvgMaxAct 0.1 0.3339 - AvgMaxGe 0.102 0.3407 - DWt 5.345 17.84 - GeFmGeInc 0.3348 1.118 - InhibFmGeAct 0.0842 0.2811 - QuarterFinal 0.004 0.01351 - SendGeDelta 17.93 59.87 - WtBalFmWt 0.1701 0.568 - WtFmDWt 3.763 12.56 - Total 29.96 -``` - -* trimmed 4+ sec from SendGeDelta by avoiding range checks using sub-slices -* was very sensitive to size of Synapse struct - - diff --git a/examples/bench/run_bench.sh b/examples/bench/run_bench.sh deleted file mode 100755 index bbabadd..0000000 --- a/examples/bench/run_bench.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# typically run with -threads=N arg as follows: -# $./run_bench.sh -threads=2 - -exe=./bench - -echo " " -echo "==============================================================" -echo "SMALL Network (5 x 25 units)" -$exe -epochs 10 -pats 100 -units 25 $* -echo " " -echo "==============================================================" -echo "MEDIUM Network (5 x 100 units)" -$exe -epochs 3 -pats 100 -units 100 $* -echo " " -echo "==============================================================" -echo "LARGE Network (5 x 625 units)" -$exe -epochs 5 -pats 20 -units 625 $* -echo " " -echo "==============================================================" -echo "HUGE Network (5 x 1024 units)" -$exe -epochs 5 -pats 10 -units 1024 $* -echo " " -echo "==============================================================" -echo "GINORMOUS Network (5 x 2048 units)" -$exe -epochs 2 -pats 10 -units 2048 $* -# echo " " -# echo "==============================================================" -# echo "GAZILIOUS Network (5 x 4096 units)" -# $exe -nogui -ni -p leabra_bench.proj epochs=1 pats=10 units=4096 $* - diff --git a/examples/bench/run_hardware.sh b/examples/bench/run_hardware.sh deleted file mode 100755 index 9d12179..0000000 --- a/examples/bench/run_hardware.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -# Use this for generating standard results for hardware - -exe=./bench - -echo " " -echo "Size 1 thr 2 thr 4 thr" -echo "---------------------------------" -echo "SMALL: " -$exe -silent -epochs 10 -pats 100 -units 25 $* -$exe -silent -epochs 10 -pats 100 -units 25 -threads=2 $* -$exe -silent -epochs 10 -pats 100 -units 25 -threads=4 $* -echo "MEDIUM: " -$exe -silent -epochs 3 -pats 100 -units 100 $* -$exe -silent -epochs 3 -pats 100 -units 100 -threads=2 $* -$exe -silent -epochs 3 -pats 100 -units 100 -threads=4 $* -echo "LARGE: " -$exe -silent -epochs 5 -pats 20 -units 625 $* -$exe -silent -epochs 5 -pats 20 -units 625 -threads=2 $* -$exe -silent -epochs 5 -pats 20 -units 625 -threads=4 $* -echo "HUGE: " -$exe -silent -epochs 5 -pats 10 -units 1024 $* -$exe -silent -epochs 5 -pats 10 -units 1024 -threads=2 $* -$exe -silent -epochs 5 -pats 10 -units 1024 -threads=4 $* -echo "GINORM: " -$exe -silent -epochs 2 -pats 10 -units 2048 $* -$exe -silent -epochs 2 -pats 10 -units 2048 -threads=2 $* -$exe -silent -epochs 2 -pats 10 -units 2048 -threads=4 $* - diff --git a/examples/deep_fsa/README.md b/examples/deep_fsa/README.md deleted file mode 100644 index 51196e1..0000000 --- a/examples/deep_fsa/README.md +++ /dev/null @@ -1,24 +0,0 @@ -This example illustrates and tests the predictive learning abilities of the `deep` leabra biologically based model. It uses a classical test of sequence learning [Reber, 1967; Cleeremans & McClelland, 1991](#references) that was explored using simple recurrent networks (SRNs) [Elman, 1990; Jordan, 1989](#references). As shown in Figure 1, sequences were generated according to a finite state automaton (FSA) grammar, as used in implicit sequence learning experiments by Reber (1967). Each node has a 50% random branching to two different other nodes, and the labels generated by node transitions are ambiguous (except for the B=begin and E=end states). Thus, many iterations through the grammar are required to infer the systematic underlying grammar, and it is actually a reasonably challenging task for SRNs, and people, to learn, providing an important validation of the power of these predictive learning mechanisms. - -Reber FSA Grammar - -**Figure 1:** Finite state automaton (FSA) grammar used in implicit sequential learning exerpiments (Reber, 1967) and in early simple recurrent networks (SRNs) (Cleeremans \& McClelland, 1991). It generates a sequence of letters according to the link transitioned between state nodes, with a 50\% random choice for each node of which outgoing link to follow. Each letter (except for the B=begin and E=end) appears at 2 different points in the grammar, making them fully ambiguous. This combination of randomness and ambiguity makes it challenging for a learning system to infer the true underlying nature of the grammar. - -Three steps of network predicting FSA Grammar - - -**Figure 2:** Predictive learning model applied to the FSA grammar shown in previous figure, showing the prediction state (end of the *minus* phase, or the first 75 msec of each alpha cycle) for the first 3 steps of a sequence, after having learned the grammar, followed by the plus phase after the third step. The `Input` layer provides the 5IB drivers for the corresponding `HiddenP` pulvinar layer, and the `Targets` layer is purely for display, showing the two valid possible labels that could have been predicted. The model's prediction is scored as accurate if either or both targets are activated. Computationally, the model is similar to the SRN, where the `CT` layer that drives the prediction over the pulvinar encodes the previous time step (alpha cycle) activation state, due to the phasic bursting of the 5IB neurons that drive CT updating. Note how the CT layer in b) reflects the Hidden activation state in a), and likewise for c) reflecting b) -- this is evident because we're using one-to-one connectivity between Hidden and HiddenCT layers (which works well in general, along with full lateral connectivity within the CT layer). Thus, even though the correct answer is always present on the Input layer for each step, the CT layer is nevertheless attempting to predict this Input based on the information from the prior time step. **a)** In the first step, the B label is unambiguous and easily predicted (based on prior E context). **b)** In the 2nd step, the network correctly guesses that the T label will come next, but there is a faint activation of the other P alternative, which is also activated sometimes based on prior learning history and associated minor weight tweaks. **c)** In the 3rd step, both S and X are equally predicted. **d)** In the *plus* phase for this trial, only the X present in the Input drives HiddenP activations, and the projections from pulvinar back to the cortex convey both the minus-phase prediction and plus-phase actual input. You can see one neuron visibly changes is activation as a result (and all neurons experience much smaller changes), and learning in all these cortical (Hidden) layer neurons is a function of their local temporal difference between minus and plus phases. - -The model (Figure 2) required around 20 epochs of 25 sequences through the grammar to learn it to the point of making no prediction errors for 5 epochs in a row, to guarantee that it had completely learned it. A few steps through a sequence are shown in the figure, illustrating how the CT context layer, which drives the P pulvinar layer prediction, represents the information present on the *previous* alpha cycle time step. Thus, the network is attempting to predict the actual Input state, which then drives the pulvinar plus phase activation at the end of each alpha cycle, as shown in the last panel. On each trial, the difference between plus and minus phases locally over each cortical neuron drives its synaptic weight changes, which accumulate over trials to accurately learn to predict the sequences to the extent possible given their probabilistic nature. - -# References - -* Cleeremans, A., & McClelland, J. L. (1991). Learning the structure of event sequences. Journal of Experimental Psychology: General, 120, 235–253. - -* Elman, J. L. (1990). Finding structure in time. Cognitive Science, 14(2), 179–211. - -* Jordan, M. I. (1989). Serial Order: A Parallel, Distributed Processing Approach. In J. L. Elman & D. E. Rumelhart (Eds.), Advances in Connectionist Theory: Speech. Hillsdale, NJ: Lawrence Erlbaum Associates. - -* Reber, A. S. (1967). Implicit Learning of Artificial Grammars. Journal of Verbal Learning and -Verbal Behavior, 6, 855–863. - diff --git a/examples/deep_fsa/deep_fsa.go b/examples/deep_fsa/deep_fsa.go deleted file mode 100644 index 2b2b1a1..0000000 --- a/examples/deep_fsa/deep_fsa.go +++ /dev/null @@ -1,804 +0,0 @@ -// Copyright (c) 2019, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// deep_fsa runs a DeepLeabra network on the classic Reber grammar -// finite state automaton problem. -package main - -//go:generate core generate -add-types - -import ( - "log" - "os" - - "cogentcore.org/core/core" - "cogentcore.org/core/enums" - "cogentcore.org/core/icons" - "cogentcore.org/core/math32/vecint" - "cogentcore.org/core/tree" - "cogentcore.org/lab/base/mpi" - "cogentcore.org/lab/base/randx" - "github.com/emer/emergent/v2/econfig" - "github.com/emer/emergent/v2/egui" - "github.com/emer/emergent/v2/elog" - "github.com/emer/emergent/v2/emer" - "github.com/emer/emergent/v2/env" - "github.com/emer/emergent/v2/estats" - "github.com/emer/emergent/v2/etime" - "github.com/emer/emergent/v2/looper" - "github.com/emer/emergent/v2/netview" - "github.com/emer/emergent/v2/params" - "github.com/emer/emergent/v2/paths" - "github.com/emer/etensor/tensor/table" - "github.com/emer/leabra/v2/leabra" -) - -func main() { - sim := &Sim{} - sim.New() - sim.ConfigAll() - if sim.Config.GUI { - sim.RunGUI() - } else { - sim.RunNoGUI() - } -} - -// ParamSets is the default set of parameters. -// Base is always applied, and others can be optionally -// selected to apply on top of that. -var ParamSets = params.Sets{ - "Base": { - {Sel: "Path", Desc: "norm and momentum on is critical, wt bal not as much but fine", - Params: params.Params{ - "Path.Learn.Norm.On": "true", - "Path.Learn.Momentum.On": "true", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: "Layer", Desc: "using default 1.8 inhib for hidden layers", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "1.8", - "Layer.Learn.AvgL.Gain": "1.5", // key to lower relative to 2.5 - "Layer.Act.Gbar.L": "0.1", // lower leak = better - "Layer.Inhib.ActAvg.Fixed": "true", // simpler to have everything fixed, for replicability - "Layer.Act.Init.Decay": "0", // essential to have all layers no decay - }}, - {Sel: ".SuperLayer", Desc: "fix avg act", - Params: params.Params{ - "Layer.Inhib.ActAvg.Fixed": "true", - }}, - {Sel: ".BackPath", Desc: "top-down back-pathways MUST have lower relative weight scale, otherwise network hallucinates", - Params: params.Params{ - "Path.WtScale.Rel": "0.2", - }}, - {Sel: ".PulvinarLayer", Desc: "standard weight is .3 here for larger distributed reps. no learn", - Params: params.Params{ - "Layer.Pulvinar.DriveScale": "0.8", // using .8 for localist layer - }}, - {Sel: ".CTCtxtPath", Desc: "no weight balance on CT context paths -- makes a diff!", - Params: params.Params{ - "Path.Learn.WtBal.On": "false", // this should be true for larger DeepLeabra models -- e.g., sg.. - }}, - {Sel: ".CTFromSuper", Desc: "initial weight = 0.5 much better than 0.8", - Params: params.Params{ - "Path.WtInit.Mean": "0.5", - }}, - {Sel: ".Input", Desc: "input layers need more inhibition", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "2.0", - "Layer.Inhib.ActAvg.Init": "0.15", - }}, - {Sel: "#HiddenPToHiddenCT", Desc: "critical to make this small so deep context dominates", - Params: params.Params{ - "Path.WtScale.Rel": "0.05", - }}, - {Sel: "#HiddenCTToHiddenCT", Desc: "testing", - Params: params.Params{ - "Path.Learn.WtBal.On": "false", - }}, - }, -} - -// ParamConfig has config parameters related to sim params -type ParamConfig struct { - - // network parameters - Network map[string]any - - // size of hidden layer -- can use emer.LaySize for 4D layers - Hidden1Size vecint.Vector2i `default:"{'X':7,'Y':7}" nest:"+"` - - // size of hidden layer -- can use emer.LaySize for 4D layers - Hidden2Size vecint.Vector2i `default:"{'X':7,'Y':7}" nest:"+"` - - // Extra Param Sheet name(s) to use (space separated if multiple). - // must be valid name as listed in compiled-in params or loaded params - Sheet string - - // extra tag to add to file names and logs saved from this run - Tag string - - // user note -- describe the run params etc -- like a git commit message for the run - Note string - - // Name of the JSON file to input saved parameters from. - File string `nest:"+"` - - // Save a snapshot of all current param and config settings - // in a directory named params_ (or _good if Good is true), then quit. - // Useful for comparing to later changes and seeing multiple views of current params. - SaveAll bool `nest:"+"` - - // For SaveAll, save to params_good for a known good params state. - // This can be done prior to making a new release after all tests are passing. - // add results to git to provide a full diff record of all params over time. - Good bool `nest:"+"` -} - -// RunConfig has config parameters related to running the sim -type RunConfig struct { - // starting run number, which determines the random seed. - // runs counts from there, can do all runs in parallel by launching - // separate jobs with each run, runs = 1. - Run int `default:"0"` - - // total number of runs to do when running Train - NRuns int `default:"5" min:"1"` - - // total number of epochs per run - NEpochs int `default:"100"` - - // stop run after this number of perfect, zero-error epochs. - NZero int `default:"2"` - - // total number of trials per epoch. Should be an even multiple of NData. - NTrials int `default:"100"` - - // how often to run through all the test patterns, in terms of training epochs. - // can use 0 or -1 for no testing. - TestInterval int `default:"5"` - - // how frequently (in epochs) to compute PCA on hidden representations - // to measure variance? - PCAInterval int `default:"5"` - - // if non-empty, is the name of weights file to load at start - // of first run, for testing. - StartWts string -} - -// LogConfig has config parameters related to logging data -type LogConfig struct { - - // if true, save final weights after each run - SaveWeights bool - - // if true, save train epoch log to file, as .epc.tsv typically - Epoch bool `default:"true" nest:"+"` - - // if true, save run log to file, as .run.tsv typically - Run bool `default:"true" nest:"+"` - - // if true, save train trial log to file, as .trl.tsv typically. May be large. - Trial bool `default:"false" nest:"+"` - - // if true, save testing epoch log to file, as .tst_epc.tsv typically. In general it is better to copy testing items over to the training epoch log and record there. - TestEpoch bool `default:"false" nest:"+"` - - // if true, save testing trial log to file, as .tst_trl.tsv typically. May be large. - TestTrial bool `default:"false" nest:"+"` - - // if true, save network activation etc data from testing trials, - // for later viewing in netview. - NetData bool -} - -// Config is a standard Sim config -- use as a starting point. -type Config struct { - - // specify include files here, and after configuration, - // it contains list of include files added. - Includes []string - - // open the GUI -- does not automatically run -- if false, - // then runs automatically and quits. - GUI bool `default:"true"` - - // log debugging information - Debug bool - - // InputNames are names of input letters - InputNames []string - - // InputNameMap has indexes of InputNames - InputNameMap map[string]int - - // parameter related configuration options - Params ParamConfig `display:"add-fields"` - - // sim running related configuration options - Run RunConfig `display:"add-fields"` - - // data logging related configuration options - Log LogConfig `display:"add-fields"` -} - -func (cfg *Config) IncludesPtr() *[]string { return &cfg.Includes } - -// Sim encapsulates the entire simulation model, and we define all the -// functionality as methods on this struct. This structure keeps all relevant -// state information organized and available without having to pass everything around -// as arguments to methods, and provides the core GUI interface (note the view tags -// for the fields which provide hints to how things should be displayed). -type Sim struct { - - // simulation configuration parameters -- set by .toml config file and / or args - Config Config `new-window:"+"` - - // the network -- click to view / edit parameters for layers, paths, etc - Net *leabra.Network `new-window:"+" display:"no-inline"` - - // network parameter management - Params emer.NetParams `display:"add-fields"` - - // contains looper control loops for running sim - Loops *looper.Stacks `new-window:"+" display:"no-inline"` - - // contains computed statistic values - Stats estats.Stats `new-window:"+"` - - // Contains all the logs and information about the logs.' - Logs elog.Logs `new-window:"+"` - - // the training patterns to use - Patterns *table.Table `new-window:"+" display:"no-inline"` - - // Environments - Envs env.Envs `new-window:"+" display:"no-inline"` - - // leabra timing parameters and state - Context leabra.Context `new-window:"+"` - - // netview update parameters - ViewUpdate netview.ViewUpdate `display:"add-fields"` - - // manages all the gui elements - GUI egui.GUI `display:"-"` - - // a list of random seeds to use for each run - RandSeeds randx.Seeds `display:"-"` -} - -// New creates new blank elements and initializes defaults -func (ss *Sim) New() { - econfig.Config(&ss.Config, "config.toml") - ss.Config.InputNames = []string{"B", "T", "S", "X", "V", "P", "E"} - ss.Net = leabra.NewNetwork("RA25") - ss.Params.Config(ParamSets, ss.Config.Params.Sheet, ss.Config.Params.Tag, ss.Net) - ss.Stats.Init() - ss.Patterns = &table.Table{} - ss.RandSeeds.Init(100) // max 100 runs - ss.InitRandSeed(0) - ss.Context.Defaults() -} - -////////////////////////////////////////////////////////////////////////////// -// Configs - -// ConfigAll configures all the elements using the standard functions -func (ss *Sim) ConfigAll() { - ss.ConfigEnv() - ss.ConfigNet(ss.Net) - ss.ConfigLogs() - ss.ConfigLoops() - if ss.Config.Params.SaveAll { - ss.Config.Params.SaveAll = false - ss.Net.SaveParamsSnapshot(&ss.Params.Params, &ss.Config, ss.Config.Params.Good) - os.Exit(0) - } -} - -func (ss *Sim) ConfigEnv() { - // Can be called multiple times -- don't re-create - var trn, tst *FSAEnv - if len(ss.Envs) == 0 { - trn = &FSAEnv{} - tst = &FSAEnv{} - } else { - trn = ss.Envs.ByMode(etime.Train).(*FSAEnv) - tst = ss.Envs.ByMode(etime.Test).(*FSAEnv) - } - - if ss.Config.InputNameMap == nil { - ss.Config.InputNameMap = make(map[string]int, len(ss.Config.InputNames)) - for i, nm := range ss.Config.InputNames { - ss.Config.InputNameMap[nm] = i - } - } - - // note: names must be standard here! - trn.Name = etime.Train.String() - trn.Seq.Max = 25 // 25 sequences per epoch training - trn.TMatReber() - - tst.Name = etime.Test.String() - tst.Seq.Max = 10 - tst.TMatReber() // todo: random - - trn.Init(0) - tst.Init(0) - - // note: names must be in place when adding - ss.Envs.Add(trn, tst) -} - -func (ss *Sim) ConfigNet(net *leabra.Network) { - net.SetRandSeed(ss.RandSeeds[0]) // init new separate random seed, using run = 0 - - in := net.AddLayer2D("Input", 1, 7, leabra.InputLayer) - hid, hidct, hidp := net.AddDeep2D("Hidden", 8, 8) - - hidp.Shape.CopyShape(&in.Shape) - hidp.Drivers.Add("Input") - - trg := net.AddLayer2D("Targets", 1, 7, leabra.InputLayer) // just for visualization - - in.AddClass("Input") - hidp.AddClass("Input") - trg.AddClass("Input") - - hidct.PlaceRightOf(hid, 2) - hidp.PlaceRightOf(in, 2) - trg.PlaceBehind(hidp, 2) - - full := paths.NewFull() - full.SelfCon = true // unclear if this makes a diff for self cons at all - - net.ConnectLayers(in, hid, full, leabra.ForwardPath) - - // for this small localist model with longer-term dependencies, - // these additional context pathways turn out to be essential! - // larger models in general do not require them, though it might be - // good to check - net.ConnectCtxtToCT(hidct, hidct, full) - // net.LateralConnectLayer(hidct, full) // note: this does not work AT ALL -- essential to learn from t-1 - net.ConnectCtxtToCT(in, hidct, full) - - net.Build() - net.Defaults() - ss.ApplyParams() - net.InitWeights() -} - -func (ss *Sim) ApplyParams() { - ss.Params.SetAll() - if ss.Config.Params.Network != nil { - ss.Params.SetNetworkMap(ss.Net, ss.Config.Params.Network) - } -} - -//////////////////////////////////////////////////////////////////////////////// -// Init, utils - -// Init restarts the run, and initializes everything, including network weights -// and resets the epoch log table -func (ss *Sim) Init() { - if ss.Config.GUI { - ss.Stats.SetString("RunName", ss.Params.RunName(0)) // in case user interactively changes tag - } - ss.Loops.ResetCounters() - ss.InitRandSeed(0) - // ss.ConfigEnv() // re-config env just in case a different set of patterns was - // selected or patterns have been modified etc - ss.ApplyParams() - ss.NewRun() - ss.ViewUpdate.RecordSyns() - ss.ViewUpdate.Update() -} - -// InitRandSeed initializes the random seed based on current training run number -func (ss *Sim) InitRandSeed(run int) { - ss.RandSeeds.Set(run) - ss.RandSeeds.Set(run, &ss.Net.Rand) -} - -// ConfigLoops configures the control loops: Training, Testing -func (ss *Sim) ConfigLoops() { - ls := looper.NewStacks() - - trls := ss.Config.Run.NTrials - - ls.AddStack(etime.Train). - AddTime(etime.Run, ss.Config.Run.NRuns). - AddTime(etime.Epoch, ss.Config.Run.NEpochs). - AddTime(etime.Trial, trls). - AddTime(etime.Cycle, 100) - - ls.AddStack(etime.Test). - AddTime(etime.Epoch, 1). - AddTime(etime.Trial, trls). - AddTime(etime.Cycle, 100) - - leabra.LooperStdPhases(ls, &ss.Context, ss.Net, 75, 99) // plus phase timing - leabra.LooperSimCycleAndLearn(ls, ss.Net, &ss.Context, &ss.ViewUpdate) // std algo code - - ls.Stacks[etime.Train].OnInit.Add("Init", func() { ss.Init() }) - - for m, _ := range ls.Stacks { - stack := ls.Stacks[m] - stack.Loops[etime.Trial].OnStart.Add("ApplyInputs", func() { - ss.ApplyInputs() - }) - } - - ls.Loop(etime.Train, etime.Run).OnStart.Add("NewRun", ss.NewRun) - - // Train stop early condition - ls.Loop(etime.Train, etime.Epoch).IsDone.AddBool("NZeroStop", func() bool { - // This is calculated in TrialStats - stopNz := ss.Config.Run.NZero - if stopNz <= 0 { - stopNz = 2 - } - curNZero := ss.Stats.Int("NZero") - stop := curNZero >= stopNz - return stop - }) - - // Add Testing - trainEpoch := ls.Loop(etime.Train, etime.Epoch) - trainEpoch.OnStart.Add("TestAtInterval", func() { - if (ss.Config.Run.TestInterval > 0) && ((trainEpoch.Counter.Cur+1)%ss.Config.Run.TestInterval == 0) { - // Note the +1 so that it doesn't occur at the 0th timestep. - ss.TestAll() - } - }) - - ///////////////////////////////////////////// - // Logging - - ls.Loop(etime.Test, etime.Epoch).OnEnd.Add("LogTestErrors", func() { - leabra.LogTestErrors(&ss.Logs) - }) - ls.Loop(etime.Train, etime.Epoch).OnEnd.Add("PCAStats", func() { - trnEpc := ls.Stacks[etime.Train].Loops[etime.Epoch].Counter.Cur - if ss.Config.Run.PCAInterval > 0 && trnEpc%ss.Config.Run.PCAInterval == 0 { - leabra.PCAStats(ss.Net, &ss.Logs, &ss.Stats) - ss.Logs.ResetLog(etime.Analyze, etime.Trial) - } - }) - - ls.AddOnEndToAll("Log", func(mode, time enums.Enum) { - ss.Log(mode.(etime.Modes), time.(etime.Times)) - }) - leabra.LooperResetLogBelow(ls, &ss.Logs) - - ls.Loop(etime.Train, etime.Trial).OnEnd.Add("LogAnalyze", func() { - trnEpc := ls.Stacks[etime.Train].Loops[etime.Epoch].Counter.Cur - if (ss.Config.Run.PCAInterval > 0) && (trnEpc%ss.Config.Run.PCAInterval == 0) { - ss.Log(etime.Analyze, etime.Trial) - } - }) - - ls.Loop(etime.Train, etime.Run).OnEnd.Add("RunStats", func() { - ss.Logs.RunStats("PctCor", "FirstZero", "LastZero") - }) - - // Save weights to file, to look at later - ls.Loop(etime.Train, etime.Run).OnEnd.Add("SaveWeights", func() { - ctrString := ss.Stats.PrintValues([]string{"Run", "Epoch"}, []string{"%03d", "%05d"}, "_") - leabra.SaveWeightsIfConfigSet(ss.Net, ss.Config.Log.SaveWeights, ctrString, ss.Stats.String("RunName")) - }) - - //////////////////////////////////////////// - // GUI - - if !ss.Config.GUI { - if ss.Config.Log.NetData { - ls.Loop(etime.Test, etime.Trial).OnEnd.Add("NetDataRecord", func() { - ss.GUI.NetDataRecord(ss.ViewUpdate.Text) - }) - } - } else { - leabra.LooperUpdateNetView(ls, &ss.ViewUpdate, ss.Net, ss.NetViewCounters) - leabra.LooperUpdatePlots(ls, &ss.GUI) - ls.Stacks[etime.Train].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - ls.Stacks[etime.Test].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - } - - if ss.Config.Debug { - mpi.Println(ls.DocString()) - } - ss.Loops = ls -} - -// ApplyInputs applies input patterns from given environment. -// It is good practice to have this be a separate method with appropriate -// args so that it can be used for various different contexts -// (training, testing, etc). -func (ss *Sim) ApplyInputs() { - ctx := &ss.Context - net := ss.Net - net.InitExt() - - ev := ss.Envs.ByMode(ctx.Mode).(*FSAEnv) - ev.Step() - ss.Stats.SetString("TrialName", ev.String()) - - in := ss.Net.LayerByName("Input") - trg := ss.Net.LayerByName("Targets") - clrmsk, setmsk, _ := in.ApplyExtFlags() - ns := ev.NNext.Values[0] - for i := 0; i < ns; i++ { - lbl := ev.NextLabels.Values[i] - li, ok := ss.Config.InputNameMap[lbl] - if !ok { - log.Printf("Input label: %v not found in InputNames list of labels\n", lbl) - continue - } - if i == 0 { - in.ApplyExtValue(li, 1, clrmsk, setmsk, false) - } - trg.ApplyExtValue(li, 1, clrmsk, setmsk, false) - } -} - -// NewRun intializes a new run of the model, using the TrainEnv.Run counter -// for the new run value -func (ss *Sim) NewRun() { - ctx := &ss.Context - ss.InitRandSeed(ss.Loops.Loop(etime.Train, etime.Run).Counter.Cur) - ss.Envs.ByMode(etime.Train).Init(0) - ss.Envs.ByMode(etime.Test).Init(0) - ctx.Reset() - ctx.Mode = etime.Train - ss.Net.InitWeights() - ss.InitStats() - ss.StatCounters() - ss.Logs.ResetLog(etime.Train, etime.Epoch) - ss.Logs.ResetLog(etime.Test, etime.Epoch) -} - -// TestAll runs through the full set of testing items -func (ss *Sim) TestAll() { - ss.Envs.ByMode(etime.Test).Init(0) - ss.Loops.ResetAndRun(etime.Test) - ss.Loops.Mode = etime.Train // Important to reset Mode back to Train because this is called from within the Train Run. -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Stats - -// InitStats initializes all the statistics. -// called at start of new run -func (ss *Sim) InitStats() { - ss.Stats.SetFloat("UnitErr", 0.0) - ss.Stats.SetFloat("CorSim", 0.0) - ss.Stats.SetString("TrialName", "") - ss.Logs.InitErrStats() // inits TrlErr, FirstZero, LastZero, NZero -} - -// StatCounters saves current counters to Stats, so they are available for logging etc -// Also saves a string rep of them for ViewUpdate.Text -func (ss *Sim) StatCounters() { - ctx := &ss.Context - mode := ctx.Mode - ss.Loops.Stacks[mode].CountersToStats(&ss.Stats) - // always use training epoch.. - trnEpc := ss.Loops.Stacks[etime.Train].Loops[etime.Epoch].Counter.Cur - ss.Stats.SetInt("Epoch", trnEpc) - trl := ss.Stats.Int("Trial") - ss.Stats.SetInt("Trial", trl) - ss.Stats.SetInt("Cycle", int(ctx.Cycle)) -} - -func (ss *Sim) NetViewCounters(tm etime.Times) { - if ss.ViewUpdate.View == nil { - return - } - if tm == etime.Trial { - ss.TrialStats() // get trial stats for current di - } - ss.StatCounters() - ss.ViewUpdate.Text = ss.Stats.Print([]string{"Run", "Epoch", "Trial", "TrialName", "Cycle", "UnitErr", "TrlErr", "CorSim"}) -} - -// TrialStats computes the trial-level statistics. -// Aggregation is done directly from log data. -func (ss *Sim) TrialStats() { - inp := ss.Net.LayerByName("HiddenP") - trg := ss.Net.LayerByName("Targets") - ss.Stats.SetFloat("CorSim", float64(inp.CosDiff.Cos)) - sse := 0.0 - gotOne := false - for ni := range inp.Neurons { - inn := &inp.Neurons[ni] - tgn := &trg.Neurons[ni] - if tgn.Act > 0.5 { - if inn.ActM > 0.4 { - gotOne = true - } - } else { - if inn.ActM > 0.5 { - sse += float64(inn.ActM) - } - } - } - if !gotOne { - sse += 1 - } - ss.Stats.SetFloat("SSE", sse) - ss.Stats.SetFloat("AvgSSE", sse) - if sse > 0 { - ss.Stats.SetFloat("TrlErr", 1) - } else { - ss.Stats.SetFloat("TrlErr", 0) - } -} - -////////////////////////////////////////////////////////////////////////////// -// Logging - -func (ss *Sim) ConfigLogs() { - ss.Stats.SetString("RunName", ss.Params.RunName(0)) // used for naming logs, stats, etc - - ss.Logs.AddCounterItems(etime.Run, etime.Epoch, etime.Trial, etime.Cycle) - ss.Logs.AddStatStringItem(etime.AllModes, etime.AllTimes, "RunName") - ss.Logs.AddStatStringItem(etime.AllModes, etime.Trial, "TrialName") - - ss.Logs.AddStatAggItem("CorSim", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("UnitErr", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddErrStatAggItems("TrlErr", etime.Run, etime.Epoch, etime.Trial) - - ss.Logs.AddCopyFromFloatItems(etime.Train, []etime.Times{etime.Epoch, etime.Run}, etime.Test, etime.Epoch, "Tst", "CorSim", "UnitErr", "PctCor", "PctErr") - - ss.Logs.AddPerTrlMSec("PerTrlMSec", etime.Run, etime.Epoch, etime.Trial) - - layers := ss.Net.LayersByType(leabra.SuperLayer, leabra.CTLayer, leabra.TargetLayer) - leabra.LogAddDiagnosticItems(&ss.Logs, layers, etime.Train, etime.Epoch, etime.Trial) - leabra.LogInputLayer(&ss.Logs, ss.Net, etime.Train) - - leabra.LogAddPCAItems(&ss.Logs, ss.Net, etime.Train, etime.Run, etime.Epoch, etime.Trial) - - ss.Logs.AddLayerTensorItems(ss.Net, "Act", etime.Test, etime.Trial, "InputLayer", "TargetLayer") - - ss.Logs.PlotItems("CorSim", "PctCor", "FirstZero", "LastZero") - - ss.Logs.CreateTables() - ss.Logs.SetContext(&ss.Stats, ss.Net) - // don't plot certain combinations we don't use - ss.Logs.NoPlot(etime.Train, etime.Cycle) - ss.Logs.NoPlot(etime.Test, etime.Run) - // note: Analyze not plotted by default - ss.Logs.SetMeta(etime.Train, etime.Run, "LegendCol", "RunName") -} - -// Log is the main logging function, handles special things for different scopes -func (ss *Sim) Log(mode etime.Modes, time etime.Times) { - ctx := &ss.Context - if mode != etime.Analyze { - ctx.Mode = mode // Also set specifically in a Loop callback. - } - dt := ss.Logs.Table(mode, time) - if dt == nil { - return - } - row := dt.Rows - - switch { - case time == etime.Cycle: - return - case time == etime.Trial: - ss.TrialStats() - ss.StatCounters() - } - - ss.Logs.LogRow(mode, time, row) // also logs to file, etc -} - -//////// GUI - -// ConfigGUI configures the Cogent Core GUI interface for this simulation. -func (ss *Sim) ConfigGUI() { - title := "Leabra Random Associator" - ss.GUI.MakeBody(ss, "ra25", title, `This demonstrates a basic Leabra model. See emergent on GitHub.

`) - ss.GUI.CycleUpdateInterval = 10 - - nv := ss.GUI.AddNetView("Network") - nv.Options.MaxRecs = 300 - nv.SetNet(ss.Net) - ss.ViewUpdate.Config(nv, etime.AlphaCycle, etime.AlphaCycle) - ss.GUI.ViewUpdate = &ss.ViewUpdate - - // nv.SceneXYZ().Camera.Pose.Pos.Set(0, 1, 2.75) // more "head on" than default which is more "top down" - // nv.SceneXYZ().Camera.LookAt(math32.Vec3(0, 0, 0), math32.Vec3(0, 1, 0)) - - ss.GUI.AddPlots(title, &ss.Logs) - - ss.GUI.FinalizeGUI(false) -} - -func (ss *Sim) MakeToolbar(p *tree.Plan) { - ss.GUI.AddLooperCtrl(p, ss.Loops) - - tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "Reset RunLog", - Icon: icons.Reset, - Tooltip: "Reset the accumulated log of all Runs, which are tagged with the ParamSet used", - Active: egui.ActiveAlways, - Func: func() { - ss.Logs.ResetLog(etime.Train, etime.Run) - ss.GUI.UpdatePlot(etime.Train, etime.Run) - }, - }) - //////////////////////////////////////////////// - tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "New Seed", - Icon: icons.Add, - Tooltip: "Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time.", - Active: egui.ActiveAlways, - Func: func() { - ss.RandSeeds.NewSeeds() - }, - }) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "README", - Icon: icons.FileMarkdown, - Tooltip: "Opens your browser on the README file that contains instructions for how to run this model.", - Active: egui.ActiveAlways, - Func: func() { - core.TheApp.OpenURL("https://github.com/emer/leabra/blob/main/examples/deep_fsa/README.md") - }, - }) -} - -func (ss *Sim) RunGUI() { - ss.Init() - ss.ConfigGUI() - ss.GUI.Body.RunMainWindow() -} - -func (ss *Sim) RunNoGUI() { - if ss.Config.Params.Note != "" { - mpi.Printf("Note: %s\n", ss.Config.Params.Note) - } - if ss.Config.Log.SaveWeights { - mpi.Printf("Saving final weights per run\n") - } - runName := ss.Params.RunName(ss.Config.Run.Run) - ss.Stats.SetString("RunName", runName) // used for naming logs, stats, etc - netName := ss.Net.Name - - elog.SetLogFile(&ss.Logs, ss.Config.Log.Trial, etime.Train, etime.Trial, "trl", netName, runName) - elog.SetLogFile(&ss.Logs, ss.Config.Log.Epoch, etime.Train, etime.Epoch, "epc", netName, runName) - elog.SetLogFile(&ss.Logs, ss.Config.Log.Run, etime.Train, etime.Run, "run", netName, runName) - elog.SetLogFile(&ss.Logs, ss.Config.Log.TestEpoch, etime.Test, etime.Epoch, "tst_epc", netName, runName) - elog.SetLogFile(&ss.Logs, ss.Config.Log.TestTrial, etime.Test, etime.Trial, "tst_trl", netName, runName) - - netdata := ss.Config.Log.NetData - if netdata { - mpi.Printf("Saving NetView data from testing\n") - ss.GUI.InitNetData(ss.Net, 200) - } - - ss.Init() - - mpi.Printf("Running %d Runs starting at %d\n", ss.Config.Run.NRuns, ss.Config.Run.Run) - ss.Loops.Loop(etime.Train, etime.Run).Counter.SetCurMaxPlusN(ss.Config.Run.Run, ss.Config.Run.NRuns) - - if ss.Config.Run.StartWts != "" { // this is just for testing -- not usually needed - ss.Loops.Step(etime.Train, 1, etime.Trial) // get past NewRun - ss.Net.OpenWeightsJSON(core.Filename(ss.Config.Run.StartWts)) - mpi.Printf("Starting with initial weights from: %s\n", ss.Config.Run.StartWts) - } - - mpi.Printf("Set NThreads to: %d\n", ss.Net.NThreads) - - ss.Loops.Run(etime.Train) - - ss.Logs.CloseLogFiles() - - if netdata { - ss.GUI.SaveNetData(ss.Stats.String("RunName")) - } -} diff --git a/examples/deep_fsa/fig_deepleabra_fsa_net_3steps.png b/examples/deep_fsa/fig_deepleabra_fsa_net_3steps.png deleted file mode 100644 index bf082ae4291f10fb518f20922dca2dac46266be3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430186 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 z 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 JN>!Vv{|`%2-+BN5 diff --git a/examples/deep_fsa/fig_reber_grammar_fsa.png b/examples/deep_fsa/fig_reber_grammar_fsa.png deleted file mode 100644 index c4443b15808ca7a443e7fe286a546ab24363049d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16796 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%0DV7DGzm0 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 nst-1 { - ev.AState.Cur = 0 - } - ri := ev.AState.Cur * nst - ps := ev.TMat.Values[ri : ri+nst] - ls := ev.Labels.Values[ri : ri+nst] - nxt := randx.PChoose64(ps) // next state chosen at random - ev.NextStates.Set1D(0, nxt) - ev.NextLabels.Set1D(0, ls[nxt]) - idx := 1 - for i, p := range ps { - if i != nxt && p > 0 { - ev.NextStates.Set1D(idx, i) - ev.NextLabels.Set1D(idx, ls[i]) - idx++ - } - } - ev.NNext.Set1D(0, idx) - ev.AState.Set(nxt) -} - -func (ev *FSAEnv) Step() bool { - ev.NextState() - ev.Trial.Incr() - ev.Tick.Incr() - if ev.AState.Prv == 0 { - ev.Tick.Init() - ev.Seq.Incr() - } - return true -} - -func (ev *FSAEnv) Action(element string, input tensor.Tensor) { - // nop -} - -// Compile-time check that implements Env interface -var _ env.Env = (*FSAEnv)(nil) diff --git a/examples/hip/README.md b/examples/hip/README.md deleted file mode 100644 index 4a19c71..0000000 --- a/examples/hip/README.md +++ /dev/null @@ -1,74 +0,0 @@ -Back to [All Sims](https://github.com/CompCogNeuro/sims) (also for general info and executable downloads) - -# Introduction - -In this exploration of the hippocampus model, we will use the same basic AB--AC paired associates list learning paradigm as we used in the standard cortical network previously (`abac`). The hippocampus should be able to learn the new paired associates (AC) without causing undue levels of interference to the original AB associations (see Figure 1), and it should be able to do this much more rapidly than was possible in the cortical model. This model is using the _Theremin_ model of [Zheng et al., 2022](#references), which is an updated version of the _Theta Phase_ model of the hippocampus ([Ketz, Morkanda & O'Reilly, 2013](#references)). The EC <-> CA1 projections along with all the other connections have an error-driven learning component organized according to the theta phase rhythm. - -![AB-AC Data](fig_ab_ac_data_catinf.png?raw=true "AB-AC Data") - -**Figure 1:** Data from people learning AB-AC paired associates, and comparable data from McCloskey & Cohen (1989) showing *catastrophic interference* of learning AC on AB. - -* Click on `Train AB` and `Test AB` buttons to see how the AB training and testing lists are configured. The "A" pattern is the first three groups of units (at the bottom of each pattern, going left-right, bottom-top), and the "B" pattern is the next three, which you can see most easily in the `Test AB` patterns where these are blank (to be filled in by hippocampal pattern completion). The 2nd half of the pattern is the list context (as in the `abac` project). - -# AB Training and Testing - -Let's observe the process of activation spreading through the network during training. - -* Set `Train Step` to `Cycle` instead of `Trial`, and do `Init`, `Step Cycle`. - -You will see an input pattern from the AB training set presented to the network. As expected, during training, all three parts of the input pattern are presented (A, B, Context). You will see that activation flows from the `ECin` layer through the `DG, CA3` pathway and simultaneously to the `CA1`, so that the sparse `CA3` representation can be associated with the invertible `CA1` representation, which will give back this very `ECin` pattern if later recalled by the `CA3`. You can use the Time VCR buttons in the lower right of the NetView to replay the settling process cycle-by-cycle. - -* Set `Step` back to `Trial` and `Step Trial` through several more (but fewer than 10) training events, and observe the relative amount of pattern overlap between subsequent events on the `ECin, DG, CA3`, and `CA1` layers, by clicking back-and-forth between `ActQ0` (previous trial) and `ActP` (current trial), in the `Phase` group of variables. - -You should have observed that the `ECin` patterns overlap the most, with `CA1` overlapping the next most, then `CA3`, and finally `DG` overlaps the least. The levels of FFFB overall inhibition parallel this result, with DG having a very high level of inhibition, followed by CA3, then CA1, and finally EC. - -> **Question 7.4:** Using the explanation given earlier in the text about the pattern separation mechanism, and the relative levels of activity and inhibition in these different layers, explain the overlap results for each layer in terms of these activity levels, in qualitative terms. - -Each epoch of training consists of the 10 list items, followed by testing on 3 sets of testing events. The first testing set contains the AB list items, the second contains the AC list items, and the third contains a set of novel _Lure_ items to make sure the network is treating novel items as such. The network automatically switches over to testing after each pass through the 10 training events. - -* Set step to `Epoch` and `Step Epoch` to step through the rest of the training epoch and then automatically into the testing of the patterns. Switch to the `Train Epoch Plot`, and do `Step Epoch` again so 2 epochs have been run. You should see the `Mem` line rise up, indicating about 50% or so of the items have been accurately remembered. Then switch back to the `Network` tab, press `Test Init`, change `Test Step` to `Cycle`, and do `Test Cycle` to see the testing input propagate through the network (be sure to change back to viewing `Act`). - -You should observe that during testing, the input pattern presented to the network is missing the second associate as we saw earlier (the B or C item in the pair), and that as the activation proceeds through the network, it fills in this missing part in the EC layers (pattern completion) as a result of activation flowing up through the `CA3`, and back via the `CA1` to the `ECout`. - -* Click on `Test Trial Plot` tab, and do `Test Run`. - -You should see a plot of the overall `Mem` memory statistic for the `AB`, `AC`, and `Lure` items. To see how these memory statistics are scored. First click on the `TrgOnWasOffCmp` line for the plot, which shows how many units in `ECout` in the "comparison" region (where the B or C items are) that were _off_ but should have been _on_. These are the features of B item that the hippocampus needs to recall, and this measure indicates the extent to which it does so, with a high value indicating that the network has failed to recall much of the probe pattern. - -Then click on the `TrgOffWasOn` line, which shows the opposite: any features that were erroneously activated but should have been off. Thus, a large `TrgOffWasOn` indicates that the network has _confabulated_ or otherwise recalled a different pattern than the cued one. When both of these measures are relatively low (below a threshold of .34), then we score the network as having correctly recalled the original pattern (i.e., `Mem` = 1). The threshold on these factors assumes a distributed representation of associate items, such that the entire pattern need not be recalled. - -In general, you should see `TrgOnWasOffCmp` being larger than `TrgOffWasOn` -- the hippocampal network is "high threshold", which accords with extensive data on recollection and recall (see [Norman & O'Reilly, 2003](#references) for more discussion). - -* Do more train `Step Epoch` steps to do more learning on the AB items, until all the AB items are getting a `Mem = 1` score. - -> **Question 7.5:** Report the total proportion of `Mem` responses for the AB, AC, and Lure tests. - - -# Detailed Testing: Pattern Completion in Action - -Now that the network has learned something, we will go through the testing process in detail by stepping one cycle at a time. - -* Click back on the `Network`, then do `Test Init` and then test `Step Cycle` so you can see the activation cycle-by-cycle for an AB pattern. - -You should see the studied A stimulus, an empty gap where the B stimulus would be, and a list context representation for the AB list in the `Input` and `ECin`. You will see the network complete the B pattern, which you should be able to see visually as the gap in the `EC` activation pattern gets filled in. You should be able to see that the missing elements are filled in as a result of `CA3` units getting activated. Interestingly, you should also see that as these missing elements start to get filled in, the `ECout` activation feeds back to `ECin` and thus back through the `DG` and `CA3` layers, which can result in a shifting of the overall activation pattern. This is a "big loop" pattern completion process that complements the much quicker (often hard to see) pattern completion within `CA3` itself due to lateral excitatory connections among `CA3` units. - -# AC Training and Interference - -* Select the `Test Epoch Plot` tab, and restart with `Init` and now do `Step Run`. As in the `abac` model, this will automatically train on AB until your network gets 1 (100% correct) on the `AB Mem` score (during _testing_ -- the `Train Epoch Plot` value shows the results from training which have the complete `B` pattern and are thus much better), and then automatically switch to AC and train until it gets perfect Mem as well. - -You can now observe the amount of interference on AB after training on AC -- it will be some but probably not a catastrophic amount. To get a better sense overall, we need to run multiple samples. - -* Do `Train Run` to run 10 runs through AB / AC training, and click on the `Train Run Plot` to see the results, with the `Tst*Mem` stats from the testing run. Then click on the `RunStats Plot`, which reports summary statistics on the `TstABMem` results. - -> **Question 7.6:** Report the `TstABMem:Mean` (average) values for the AB items. In general the AC and Lure items should all be at 1 and 0 respectively. How well does this result compare to the human results shown in Figure 1? - -In summary, you should find that this hippocampal model is able to learn rapidly and with much reduced levels of interference compared to the prior cortical model of this same task. Thus, the specialized biological properties of the hippocampal formation, and its specialized role in episodic memory, can be understood from a computational and functional perspective. - -# References - -* Ketz, N., Morkonda, S. G., & O’Reilly, R. C. (2013). Theta coordinated error-driven learning in the hippocampus. PLoS Computational Biology, 9, e1003067. http://www.ncbi.nlm.nih.gov/pubmed/23762019 [PDF](https://ccnlab.org/papers/KetzMorkondaOReilly13.pdf) - -* Norman, K. A., & O’Reilly, R. C. (2003). Modeling hippocampal and neocortical contributions to recognition memory: A complementary-learning-systems approach. Psychological Review, 110(4), 611–646. [PDF](https://ccnlab.org/papers/NormanOReilly03.pdf) - -* Zheng, Y., Liu, X. L., Nishiyama, S., Ranganath, C., & O’Reilly, R. C. (2022). Correcting the hebbian mistake: Toward a fully error-driven hippocampus. PLOS Computational Biology, 18(10), e1010589. https://doi.org/10.1371/journal.pcbi.1010589 [PDF](https://ccnlab.org/papers/ZhengLiuNishiyamaEtAl22.pdf) - - diff --git a/examples/hip/best_2-20.diff b/examples/hip/best_2-20.diff deleted file mode 100644 index 4342dcd..0000000 --- a/examples/hip/best_2-20.diff +++ /dev/null @@ -1,405 +0,0 @@ -diff --git a/examples/hip/hip.go b/examples/hip/hip.go -index 0e622a4..acac8c5 100644 ---- a/examples/hip/hip.go -+++ b/examples/hip/hip.go -@@ -73,18 +73,25 @@ var ParamSets = params.Sets{ - "Prjn.Learn.Lrate": "0.04", - "Prjn.Learn.Momentum.On": "false", - "Prjn.Learn.Norm.On": "false", -- "Prjn.Learn.WtBal.On": "false", -- "Prjn.Learn.XCal.SetLLrn": "true", // bcm is now active -- control -- "Prjn.Learn.XCal.LLrn": "0", // 0 = turn off BCM -+ "Prjn.Learn.WtBal.On": "true", -+ "Prjn.Learn.XCal.SetLLrn": "false", // using bcm now, better - }}, - {Sel: ".HippoCHL", Desc: "hippo CHL projections -- no norm, moment, but YES wtbal = sig better", - Params: params.Params{ - "Prjn.CHL.Hebb": "0.05", -- "Prjn.Learn.Lrate": "0.4", // note: 0.2 can sometimes take a really long time to learn -+ "Prjn.Learn.Lrate": "0.2", - "Prjn.Learn.Momentum.On": "false", - "Prjn.Learn.Norm.On": "false", - "Prjn.Learn.WtBal.On": "true", - }}, -+ {Sel: ".PPath", Desc: "perforant path, new Dg error-driven EcCa1Prjn prjns", -+ Params: params.Params{ -+ "Prjn.Learn.Momentum.On": "false", -+ "Prjn.Learn.Norm.On": "false", -+ "Prjn.Learn.WtBal.On": "true", -+ "Prjn.Learn.Lrate": "0.15", // err driven: .15 > .2 > .25 > .1 -+ // moss=4, delta=4, lr=0.2, test = 3 are best -+ }}, - {Sel: "#CA1ToECout", Desc: "extra strong from CA1 to ECout", - Params: params.Params{ - "Prjn.WtScale.Abs": "4.0", -@@ -104,24 +111,35 @@ var ParamSets = params.Sets{ - }}, - {Sel: "#DGToCA3", Desc: "Mossy fibers: strong, non-learning", - Params: params.Params{ -- "Prjn.CHL.Hebb": "0.001", -- "Prjn.CHL.SAvgCor": "1", - "Prjn.Learn.Learn": "false", - "Prjn.WtInit.Mean": "0.9", - "Prjn.WtInit.Var": "0.01", -- "Prjn.WtScale.Rel": "8", -+ "Prjn.WtScale.Rel": "4", - }}, - {Sel: "#CA3ToCA3", Desc: "CA3 recurrent cons", - Params: params.Params{ -- "Prjn.CHL.Hebb": "0.01", -- "Prjn.CHL.SAvgCor": "1", -- "Prjn.WtScale.Rel": "2", -+ "Prjn.WtScale.Rel": "0.1", -+ "Prjn.Learn.Lrate": "0.1", -+ }}, -+ {Sel: "#ECinToDG", Desc: "DG learning is surprisingly critical: maxed out fast, hebbian works best", -+ Params: params.Params{ -+ "Prjn.Learn.Learn": "true", // absolutely essential to have on! -+ "Prjn.CHL.Hebb": ".5", // .5 > 1 overall -+ "Prjn.CHL.SAvgCor": "0.1", // .1 > .2 > .3 > .4 ? -+ "Prjn.CHL.MinusQ1": "true", // dg self err? -+ "Prjn.Learn.Lrate": "0.4", // .4 > .3 > .2 -+ "Prjn.Learn.Momentum.On": "false", -+ "Prjn.Learn.Norm.On": "false", -+ "Prjn.Learn.WtBal.On": "true", - }}, - {Sel: "#CA3ToCA1", Desc: "Schaffer collaterals -- slower, less hebb", - Params: params.Params{ -- "Prjn.CHL.Hebb": "0.005", -- "Prjn.CHL.SAvgCor": "0.4", -- "Prjn.Learn.Lrate": "0.1", -+ "Prjn.CHL.Hebb": "0.01", -+ "Prjn.CHL.SAvgCor": "0.4", -+ "Prjn.Learn.Lrate": "0.1", -+ "Prjn.Learn.Momentum.On": "false", -+ "Prjn.Learn.Norm.On": "false", -+ "Prjn.Learn.WtBal.On": "true", - }}, - {Sel: ".EC", Desc: "all EC layers: only pools, no layer-level", - Params: params.Params{ -@@ -134,7 +152,7 @@ var ParamSets = params.Sets{ - {Sel: "#DG", Desc: "very sparse = high inibhition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.01", -- "Layer.Inhib.Layer.Gi": "3.6", -+ "Layer.Inhib.Layer.Gi": "3.8", - }}, - {Sel: "#CA3", Desc: "sparse = high inibhition", - Params: params.Params{ -@@ -145,7 +163,7 @@ var ParamSets = params.Sets{ - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.1", - "Layer.Inhib.Layer.On": "false", -- "Layer.Inhib.Pool.Gi": "2.2", -+ "Layer.Inhib.Pool.Gi": "2.4", - "Layer.Inhib.Pool.On": "true", - }}, - }, -@@ -197,13 +215,14 @@ type Sim struct { - TrlAvgSSE float64 `inactive:"+" desc:"current trial's average sum squared error"` - TrlCosDiff float64 `inactive:"+" desc:"current trial's cosine difference"` - -- EpcSSE float64 `inactive:"+" desc:"last epoch's total sum squared error"` -- EpcAvgSSE float64 `inactive:"+" desc:"last epoch's average sum squared error (average over trials, and over units within layer)"` -- EpcPctErr float64 `inactive:"+" desc:"last epoch's percent of trials that had SSE > 0 (subject to .5 unit-wise tolerance)"` -- EpcPctCor float64 `inactive:"+" desc:"last epoch's percent of trials that had SSE == 0 (subject to .5 unit-wise tolerance)"` -- EpcCosDiff float64 `inactive:"+" desc:"last epoch's average cosine difference for output layer (a normalized error measure, maximum of 1 when the minus phase exactly matches the plus)"` -- FirstZero int `inactive:"+" desc:"epoch at when Mem err first went to zero"` -- NZero int `inactive:"+" desc:"number of epochs in a row with zero Mem err"` -+ EpcSSE float64 `inactive:"+" desc:"last epoch's total sum squared error"` -+ EpcAvgSSE float64 `inactive:"+" desc:"last epoch's average sum squared error (average over trials, and over units within layer)"` -+ EpcPctErr float64 `inactive:"+" desc:"last epoch's percent of trials that had SSE > 0 (subject to .5 unit-wise tolerance)"` -+ EpcPctCor float64 `inactive:"+" desc:"last epoch's percent of trials that had SSE == 0 (subject to .5 unit-wise tolerance)"` -+ EpcCosDiff float64 `inactive:"+" desc:"last epoch's average cosine difference for output layer (a normalized error measure, maximum of 1 when the minus phase exactly matches the plus)"` -+ EpcPerTrlMSec float64 `inactive:"+" desc:"how long did the epoch take per trial in wall-clock milliseconds"` -+ FirstZero int `inactive:"+" desc:"epoch at when Mem err first went to zero"` -+ NZero int `inactive:"+" desc:"number of epochs in a row with zero Mem err"` - - // internal state - view:"-" - SumSSE float64 `view:"-" inactive:"+" desc:"sum to increment as we go through epoch"` -@@ -219,7 +238,10 @@ type Sim struct { - TstTrlPlot *eplot.Plot2D `view:"-" desc:"the test-trial plot"` - TstCycPlot *eplot.Plot2D `view:"-" desc:"the test-cycle plot"` - RunPlot *eplot.Plot2D `view:"-" desc:"the run plot"` -+ TrnEpcHdrs bool `view:"-" desc:"headers written"` - TrnEpcFile *os.File `view:"-" desc:"log file"` -+ TstEpcHdrs bool `view:"-" desc:"headers written"` -+ TstEpcFile *os.File `view:"-" desc:"log file"` - RunFile *os.File `view:"-" desc:"log file"` - TmpValues []float32 `view:"-" desc:"temp slice for holding values -- prevent mem allocs"` - LayStatNms []string `view:"-" desc:"names of layers to collect more detailed stats on (avg act, etc)"` -@@ -232,6 +254,7 @@ type Sim struct { - StopNow bool `view:"-" desc:"flag to stop running"` - NeedsNewRun bool `view:"-" desc:"flag to initialize NewRun if last one finished"` - RndSeed int64 `view:"-" desc:"the current random seed"` -+ LastEpcTime time.Time `view:"-" desc:"timer for last epoch"` - } - - // this registers this Sim Type and gives it properties that e.g., -@@ -291,7 +314,7 @@ func (ss *Sim) ConfigEnv() { - ss.MaxRuns = 10 - } - if ss.MaxEpcs == 0 { // allow user override -- ss.MaxEpcs = 50 -+ ss.MaxEpcs = 20 - ss.NZeroStop = 1 - } - -@@ -339,15 +362,19 @@ func (ss *Sim) ConfigNet(net *leabra.Network) { - ca3.SetRelPos(relpos.Rel{Rel: relpos.Above, Other: "DG", YAlign: relpos.Front, XAlign: relpos.Left, Space: 0}) - ca1.SetRelPos(relpos.Rel{Rel: relpos.RightOf, Other: "CA3", YAlign: relpos.Front, Space: 2}) - -- net.ConnectLayers(in, ecin, prjn.NewOneToOne(), emer.Forward) -- net.ConnectLayers(ecout, ecin, prjn.NewOneToOne(), emer.Back) -+ onetoone := prjn.NewOneToOne() -+ pool1to1 := prjn.NewPoolOneToOne() -+ full := prjn.NewFull() -+ -+ net.ConnectLayers(in, ecin, onetoone, emer.Forward) -+ net.ConnectLayers(ecout, ecin, onetoone, emer.Back) - - // EC <-> CA1 encoder pathways -- pj := net.ConnectLayersPrjn(ecin, ca1, prjn.NewPoolOneToOne(), emer.Forward, &hip.EcCa1Prjn{}) -+ pj := net.ConnectLayersPrjn(ecin, ca1, pool1to1, emer.Forward, &hip.EcCa1Prjn{}) - pj.SetClass("EcCa1Prjn") -- pj = net.ConnectLayersPrjn(ca1, ecout, prjn.NewPoolOneToOne(), emer.Forward, &hip.EcCa1Prjn{}) -+ pj = net.ConnectLayersPrjn(ca1, ecout, pool1to1, emer.Forward, &hip.EcCa1Prjn{}) - pj.SetClass("EcCa1Prjn") -- pj = net.ConnectLayersPrjn(ecout, ca1, prjn.NewPoolOneToOne(), emer.Back, &hip.EcCa1Prjn{}) -+ pj = net.ConnectLayersPrjn(ecout, ca1, pool1to1, emer.Back, &hip.EcCa1Prjn{}) - pj.SetClass("EcCa1Prjn") - - // Perforant pathway -@@ -356,25 +383,26 @@ func (ss *Sim) ConfigNet(net *leabra.Network) { - - pj = net.ConnectLayersPrjn(ecin, dg, ppath, emer.Forward, &hip.CHLPrjn{}) - pj.SetClass("HippoCHL") -- pj = net.ConnectLayersPrjn(ecin, ca3, ppath, emer.Forward, &hip.CHLPrjn{}) -- pj.SetClass("HippoCHL") -+ -+ pj = net.ConnectLayersPrjn(ecin, ca3, ppath, emer.Forward, &hip.EcCa1Prjn{}) -+ pj.SetClass("PPath") -+ pj = net.ConnectLayersPrjn(ca3, ca3, full, emer.Lateral, &hip.EcCa1Prjn{}) -+ pj.SetClass("PPath") - - // Mossy fibers - mossy := prjn.NewUnifRnd() -- mossy.PCon = 0.05 -+ mossy.PCon = 0.02 - pj = net.ConnectLayersPrjn(dg, ca3, mossy, emer.Forward, &hip.CHLPrjn{}) // no learning - pj.SetClass("HippoCHL") - - // Schafer collaterals -- pj = net.ConnectLayersPrjn(ca3, ca3, prjn.NewFull(), emer.Lateral, &hip.CHLPrjn{}) -- pj.SetClass("HippoCHL") -- pj = net.ConnectLayersPrjn(ca3, ca1, prjn.NewFull(), emer.Forward, &hip.CHLPrjn{}) -+ pj = net.ConnectLayersPrjn(ca3, ca1, full, emer.Forward, &hip.CHLPrjn{}) - pj.SetClass("HippoCHL") - -- // using 3 threads :) -+ // using 3 threads total - dg.SetThread(1) -- ca3.SetThread(2) -- ca1.SetThread(3) -+ ca3.SetThread(1) // for larger models, could put on separate thread -+ ca1.SetThread(2) - - // note: if you wanted to change a layer type from e.g., Target to Compare, do this: - // outLay.SetType(emer.Compare) -@@ -455,10 +483,20 @@ func (ss *Sim) AlphaCyc(train bool) { - } - - ca1 := ss.Net.LayerByName("CA1").(leabra.LeabraLayer).AsLeabra() -+ ca3 := ss.Net.LayerByName("CA3").(leabra.LeabraLayer).AsLeabra() - ecin := ss.Net.LayerByName("ECin").(leabra.LeabraLayer).AsLeabra() - ecout := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ca1FmECin := ca1.RcvPrjns.SendName("ECin").(*hip.EcCa1Prjn) - ca1FmCa3 := ca1.RcvPrjns.SendName("CA3").(*hip.CHLPrjn) -+ ca3FmDg := ca3.RcvPrjns.SendName("DG").(leabra.LeabraPrjn).AsLeabra() -+ -+ // First Quarter: CA1 is driven by ECin, not by CA3 recall -+ // (which is not really active yet anyway) -+ ca1FmECin.WtScale.Abs = 1 -+ ca1FmCa3.WtScale.Abs = 0 -+ -+ dgwtscale := ca3FmDg.WtScale.Rel -+ ca3FmDg.WtScale.Rel = 0 // turn off DG input to CA3 in first quarter - - if train { - ecout.SetType(emer.Target) // clamp a plus phase during testing -@@ -467,11 +505,6 @@ func (ss *Sim) AlphaCyc(train bool) { - } - ecout.UpdateExtFlags() // call this after updating type - -- // First Quarter: CA1 is driven by ECin, not by CA3 recall -- // (which is not really active yet anyway) -- ca1FmECin.WtScale.Abs = 1 -- ca1FmCa3.WtScale.Abs = 0 -- - ss.Net.AlphaCycInit() - ss.Time.AlphaCycStart() - for qtr := 0; qtr < 4; qtr++ { -@@ -498,6 +531,11 @@ func (ss *Sim) AlphaCyc(train bool) { - case 1: // Second, Third Quarters: CA1 is driven by CA3 recall - ca1FmECin.WtScale.Abs = 0 - ca1FmCa3.WtScale.Abs = 1 -+ if train { -+ ca3FmDg.WtScale.Rel = dgwtscale // restore after 1st quarter -+ } else { -+ ca3FmDg.WtScale.Rel = 1 // significantly weaker for recall -+ } - ss.Net.GScaleFmAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins - case 3: // Fourth Quarter: CA1 back to ECin drive only -@@ -528,6 +566,9 @@ func (ss *Sim) AlphaCyc(train bool) { - } - } - -+ ca3FmDg.WtScale.Rel = dgwtscale // restore -+ ca1FmCa3.WtScale.Abs = 1 -+ - if train { - ss.Net.DWt() - } -@@ -980,7 +1021,12 @@ func (ss *Sim) OpenPats() { - // any file names that are saved. - func (ss *Sim) RunName() string { - if ss.Tag != "" { -- return ss.Tag + "_" + ss.ParamsName() -+ pnm := ss.ParamsName() -+ if pnm == "Base" { -+ return ss.Tag -+ } else { -+ return ss.Tag + "_" + pnm -+ } - } else { - return ss.ParamsName() - } -@@ -1124,8 +1170,9 @@ func (ss *Sim) LogTrnEpc(dt *etable.Table) { - // note: essential to use Go version of update when called from another goroutine - ss.TrnEpcPlot.GoUpdate() - if ss.TrnEpcFile != nil { -- if ss.TrainEnv.Run.Cur == 0 && epc == 0 { -+ if !ss.TrnEpcHdrs { - dt.WriteCSVHeaders(ss.TrnEpcFile, etable.Tab) -+ ss.TrnEpcHdrs = true - } - dt.WriteCSVRow(ss.TrnEpcFile, row, etable.Tab) - } -@@ -1291,10 +1338,20 @@ func (ss *Sim) LogTstEpc(dt *etable.Table) { - tix := etable.NewIndexView(trl) - epc := ss.TrainEnv.Epoch.Prv // ? - -+ if ss.LastEpcTime.IsZero() { -+ ss.EpcPerTrlMSec = 0 -+ } else { -+ iv := time.Now().Sub(ss.LastEpcTime) -+ nt := ss.TrainAB.Rows * 4 // 1 train and 3 tests -+ ss.EpcPerTrlMSec = float64(iv) / (float64(nt) * float64(time.Millisecond)) -+ } -+ ss.LastEpcTime = time.Now() -+ - // note: this shows how to use agg methods to compute summary data from another - // data table, instead of incrementing on the Sim - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) -+ dt.SetCellFloat("PerTrlMSec", row, ss.EpcPerTrlMSec) - dt.SetCellFloat("SSE", row, agg.Sum(tix, "SSE")[0]) - dt.SetCellFloat("AvgSSE", row, agg.Mean(tix, "AvgSSE")[0]) - dt.SetCellFloat("PctErr", row, agg.PropIf(tix, "SSE", func(idx int, val float64) bool { -@@ -1338,6 +1395,13 @@ func (ss *Sim) LogTstEpc(dt *etable.Table) { - - // note: essential to use Go version of update when called from another goroutine - ss.TstEpcPlot.GoUpdate() -+ if ss.TstEpcFile != nil { -+ if !ss.TstEpcHdrs { -+ dt.WriteCSVHeaders(ss.TstEpcFile, etable.Tab) -+ ss.TstEpcHdrs = true -+ } -+ dt.WriteCSVRow(ss.TstEpcFile, row, etable.Tab) -+ } - } - - func (ss *Sim) ConfigTstEpcLog(dt *etable.Table) { -@@ -1349,6 +1413,7 @@ func (ss *Sim) ConfigTstEpcLog(dt *etable.Table) { - sch := etable.Schema{ - {"Run", etensor.INT64, nil, nil}, - {"Epoch", etensor.INT64, nil, nil}, -+ {"PerTrlMSec", etensor.FLOAT64, nil, nil}, - {"SSE", etensor.FLOAT64, nil, nil}, - {"AvgSSE", etensor.FLOAT64, nil, nil}, - {"PctErr", etensor.FLOAT64, nil, nil}, -@@ -1370,6 +1435,7 @@ func (ss *Sim) ConfigTstEpcPlot(plt *eplot.Plot2D, dt *etable.Table) *eplot.Plot - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("Epoch", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) -+ plt.SetColParams("PerTrlMSec", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("SSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("AvgSSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("PctErr", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) -@@ -1461,9 +1527,15 @@ func (ss *Sim) LogRun(dt *etable.Table) { - - params := ss.RunName() // includes tag - -+ fzero := ss.FirstZero -+ if fzero < 0 { -+ fzero = ss.MaxEpcs -+ } -+ - dt.SetCellFloat("Run", row, float64(run)) - dt.SetCellString("Params", row, params) -- dt.SetCellFloat("FirstZero", row, float64(ss.FirstZero)) -+ dt.SetCellFloat("NEpochs", row, float64(ss.TstEpcLog.Rows)) -+ dt.SetCellFloat("FirstZero", row, float64(fzero)) - dt.SetCellFloat("SSE", row, agg.Mean(epcix, "SSE")[0]) - dt.SetCellFloat("AvgSSE", row, agg.Mean(epcix, "AvgSSE")[0]) - dt.SetCellFloat("PctErr", row, agg.Mean(epcix, "PctErr")[0]) -@@ -1505,6 +1577,7 @@ func (ss *Sim) ConfigRunLog(dt *etable.Table) { - sch := etable.Schema{ - {"Run", etensor.INT64, nil, nil}, - {"Params", etensor.STRING, nil, nil}, -+ {"NEpochs", etensor.FLOAT64, nil, nil}, - {"FirstZero", etensor.FLOAT64, nil, nil}, - {"SSE", etensor.FLOAT64, nil, nil}, - {"AvgSSE", etensor.FLOAT64, nil, nil}, -@@ -1526,6 +1599,7 @@ func (ss *Sim) ConfigRunPlot(plt *eplot.Plot2D, dt *etable.Table) *eplot.Plot2D - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) -+ plt.SetColParams("NEpochs", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("FirstZero", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("SSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("AvgSSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) -@@ -1839,6 +1913,7 @@ func (ss *Sim) CmdArgs() { - flag.StringVar(&ss.Tag, "tag", "", "extra tag to add to file names saved from this run") - flag.StringVar(¬e, "note", "", "user note -- describe the run params etc") - flag.IntVar(&ss.MaxRuns, "runs", 10, "number of runs to do (note that MaxEpcs is in paramset)") -+ flag.IntVar(&ss.MaxEpcs, "epcs", 30, "maximum number of epochs to run (split between AB / AC)") - flag.BoolVar(&ss.LogSetParams, "setparams", false, "if true, print a record of each parameter that is set") - flag.BoolVar(&ss.SaveWts, "wts", false, "if true, save final weights after each run") - flag.BoolVar(&saveEpcLog, "epclog", true, "if true, save train epoch log to file") -@@ -1857,13 +1932,13 @@ func (ss *Sim) CmdArgs() { - if saveEpcLog { - var err error - fnm := ss.LogFileName("epc") -- ss.TrnEpcFile, err = os.Create(fnm) -+ ss.TstEpcFile, err = os.Create(fnm) - if err != nil { - log.Println(err) -- ss.TrnEpcFile = nil -+ ss.TstEpcFile = nil - } else { -- fmt.Printf("Saving epoch log to: %v\n", fnm) -- defer ss.TrnEpcFile.Close() -+ fmt.Printf("Saving test epoch log to: %v\n", fnm) -+ defer ss.TstEpcFile.Close() - } - } - if saveRunLog { -@@ -1883,4 +1958,6 @@ func (ss *Sim) CmdArgs() { - } - fmt.Printf("Running %d Runs\n", ss.MaxRuns) - ss.Train() -+ fnm := ss.LogFileName("runs") -+ ss.RunStats.SaveCSV(core.Filename(fnm), etable.Tab, etable.Headers) - } diff --git a/examples/hip/fig_ab_ac_data_catinf.png b/examples/hip/fig_ab_ac_data_catinf.png deleted file mode 100644 index 0898dccba1593ae0837511caa8a7c737aa227715..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76909 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 MzkFV@-rD{D1>xI4&Hw-a diff --git a/examples/hip/hip.go b/examples/hip/hip.go deleted file mode 100644 index 2298f82..0000000 --- a/examples/hip/hip.go +++ /dev/null @@ -1,995 +0,0 @@ -// Copyright (c) 2024, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// hip runs a hippocampus model on the AB-AC paired associate learning task. -package main - -//go:generate core generate -add-types - -import ( - "embed" - "fmt" - "math" - "math/rand" - "reflect" - "strings" - - "cogentcore.org/core/base/errors" - "cogentcore.org/core/core" - "cogentcore.org/core/enums" - "cogentcore.org/core/icons" - "cogentcore.org/core/tree" - "cogentcore.org/lab/base/randx" - "github.com/emer/emergent/v2/econfig" - "github.com/emer/emergent/v2/egui" - "github.com/emer/emergent/v2/elog" - "github.com/emer/emergent/v2/emer" - "github.com/emer/emergent/v2/env" - "github.com/emer/emergent/v2/estats" - "github.com/emer/emergent/v2/etime" - "github.com/emer/emergent/v2/looper" - "github.com/emer/emergent/v2/netview" - "github.com/emer/emergent/v2/params" - "github.com/emer/emergent/v2/patgen" - "github.com/emer/emergent/v2/paths" - "github.com/emer/etensor/plot/plotcore" - "github.com/emer/etensor/tensor/stats/split" - "github.com/emer/etensor/tensor/table" - "github.com/emer/leabra/v2/leabra" -) - -//go:embed train_ab.tsv train_ac.tsv test_ab.tsv test_ac.tsv test_lure.tsv -var content embed.FS - -func main() { - sim := &Sim{} - sim.New() - sim.ConfigAll() - sim.RunGUI() -} - -// ParamSets is the default set of parameters -- Base is always applied, and others can be optionally -// selected to apply on top of that -var ParamSets = params.Sets{ - "Base": { - {Sel: "Path", Desc: "keeping default params for generic prjns", - Params: params.Params{ - "Path.Learn.Momentum.On": "true", - "Path.Learn.Norm.On": "true", - "Path.Learn.WtBal.On": "false", - }}, - {Sel: ".EcCa1Path", Desc: "encoder projections -- no norm, moment", - Params: params.Params{ - "Path.Learn.Lrate": "0.04", - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - "Path.Learn.XCal.SetLLrn": "false", // using bcm now, better - }}, - {Sel: ".HippoCHL", Desc: "hippo CHL projections -- no norm, moment, but YES wtbal = sig better", - Params: params.Params{ - "Path.CHL.Hebb": "0.05", - "Path.Learn.Lrate": "0.2", - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: ".PPath", Desc: "perforant path, new Dg error-driven EcCa1Path prjns", - Params: params.Params{ - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - "Path.Learn.Lrate": "0.15", // err driven: .15 > .2 > .25 > .1 - // moss=4, delta=4, lr=0.2, test = 3 are best - }}, - {Sel: "#CA1ToECout", Desc: "extra strong from CA1 to ECout", - Params: params.Params{ - "Path.WtScale.Abs": "4.0", - }}, - {Sel: "#InputToECin", Desc: "one-to-one input to EC", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.8", - "Path.WtInit.Var": "0.0", - }}, - {Sel: "#ECoutToECin", Desc: "one-to-one out to in", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "0.5", - }}, - {Sel: "#DGToCA3", Desc: "Mossy fibers: strong, non-learning", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "4", - }}, - {Sel: "#CA3ToCA3", Desc: "CA3 recurrent cons", - Params: params.Params{ - "Path.WtScale.Rel": "0.1", - "Path.Learn.Lrate": "0.1", - }}, - {Sel: "#ECinToDG", Desc: "DG learning is surprisingly critical: maxed out fast, hebbian works best", - Params: params.Params{ - "Path.Learn.Learn": "true", // absolutely essential to have on! - "Path.CHL.Hebb": ".5", // .5 > 1 overall - "Path.CHL.SAvgCor": "0.1", // .1 > .2 > .3 > .4 ? - "Path.CHL.MinusQ1": "true", // dg self err? - "Path.Learn.Lrate": "0.4", // .4 > .3 > .2 - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: "#CA3ToCA1", Desc: "Schaffer collaterals -- slower, less hebb", - Params: params.Params{ - "Path.CHL.Hebb": "0.01", - "Path.CHL.SAvgCor": "0.4", - "Path.Learn.Lrate": "0.1", - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: ".EC", Desc: "all EC layers: only pools, no layer-level", - Params: params.Params{ - "Layer.Act.Gbar.L": ".1", - "Layer.Inhib.ActAvg.Init": "0.2", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.0", - "Layer.Inhib.Pool.On": "true", - }}, - {Sel: "#DG", Desc: "very sparse = high inibhition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.01", - "Layer.Inhib.Layer.Gi": "3.8", - }}, - {Sel: "#CA3", Desc: "sparse = high inibhition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.02", - "Layer.Inhib.Layer.Gi": "2.8", - }}, - {Sel: "#CA1", Desc: "CA1 only Pools", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.1", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.4", - "Layer.Inhib.Pool.On": "true", - }}, - }, -} - -// Config has config parameters related to running the sim -type Config struct { - // total number of runs to do when running Train - NRuns int `default:"10" min:"1"` - - // total number of epochs per run - NEpochs int `default:"20"` - - // stop run after this number of perfect, zero-error epochs. - NZero int `default:"1"` - - // how often to run through all the test patterns, in terms of training epochs. - // can use 0 or -1 for no testing. - TestInterval int `default:"1"` - - // StopMem is the threshold for stopping learning. - StopMem float32 `default:"1"` -} - -// Sim encapsulates the entire simulation model, and we define all the -// functionality as methods on this struct. This structure keeps all relevant -// state information organized and available without having to pass everything around -// as arguments to methods, and provides the core GUI interface (note the view tags -// for the fields which provide hints to how things should be displayed). -type Sim struct { - - // simulation configuration parameters -- set by .toml config file and / or args - Config Config `new-window:"+"` - - // the network -- click to view / edit parameters for layers, paths, etc - Net *leabra.Network `new-window:"+" display:"no-inline"` - - // all parameter management - Params emer.NetParams `display:"add-fields"` - - // contains looper control loops for running sim - Loops *looper.Stacks `new-window:"+" display:"no-inline"` - - // contains computed statistic values - Stats estats.Stats `new-window:"+"` - - // Contains all the logs and information about the logs.' - Logs elog.Logs `new-window:"+"` - - // if true, run in pretrain mode - PretrainMode bool `display:"-"` - - // pool patterns vocabulary - PoolVocab patgen.Vocab `display:"-"` - - // AB training patterns to use - TrainAB *table.Table `new-window:"+" display:"no-inline"` - - // AC training patterns to use - TrainAC *table.Table `new-window:"+" display:"no-inline"` - - // AB testing patterns to use - TestAB *table.Table `new-window:"+" display:"no-inline"` - - // AC testing patterns to use - TestAC *table.Table `new-window:"+" display:"no-inline"` - - // Lure testing patterns to use - TestLure *table.Table `new-window:"+" display:"no-inline"` - - // TestAll has all the test items - TestAll *table.Table `new-window:"+" display:"no-inline"` - - // Lure pretrain patterns to use - PreTrainLure *table.Table `new-window:"+" display:"-"` - - // all training patterns -- for pretrain - TrainAll *table.Table `new-window:"+" display:"-"` - - // Environments - Envs env.Envs `new-window:"+" display:"no-inline"` - - // leabra timing parameters and state - Context leabra.Context `new-window:"+"` - - // netview update parameters - ViewUpdate netview.ViewUpdate `display:"add-fields"` - - // manages all the gui elements - GUI egui.GUI `display:"-"` - - // a list of random seeds to use for each run - RandSeeds randx.Seeds `display:"-"` -} - -// New creates new blank elements and initializes defaults -func (ss *Sim) New() { - // ss.Config.Defaults() - econfig.Config(&ss.Config, "config.toml") - // ss.Config.Hip.EC5Clamp = true // must be true in hip.go to have a target layer - // ss.Config.Hip.EC5ClampTest = false // key to be off for cmp stats on completion region - - ss.Net = leabra.NewNetwork("Hip") - ss.Params.Config(ParamSets, "", "", ss.Net) - ss.Stats.Init() - ss.Stats.SetInt("Expt", 0) - - ss.PoolVocab = patgen.Vocab{} - ss.TrainAB = &table.Table{} - ss.TrainAC = &table.Table{} - ss.TestAB = &table.Table{} - ss.TestAC = &table.Table{} - ss.PreTrainLure = &table.Table{} - ss.TestLure = &table.Table{} - ss.TrainAll = &table.Table{} - ss.TestAll = &table.Table{} - ss.PretrainMode = false - - ss.RandSeeds.Init(100) // max 100 runs - ss.InitRandSeed(0) - ss.Context.Defaults() -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Configs - -// Config configures all the elements using the standard functions -func (ss *Sim) ConfigAll() { - ss.OpenPatterns() - // ss.ConfigPatterns() - ss.ConfigEnv() - ss.ConfigNet(ss.Net) - ss.ConfigLogs() - ss.ConfigLoops() -} - -func (ss *Sim) ConfigEnv() { - // Can be called multiple times -- don't re-create - var trn, tst *env.FixedTable - if len(ss.Envs) == 0 { - trn = &env.FixedTable{} - tst = &env.FixedTable{} - } else { - trn = ss.Envs.ByMode(etime.Train).(*env.FixedTable) - tst = ss.Envs.ByMode(etime.Test).(*env.FixedTable) - } - - // note: names must be standard here! - trn.Name = etime.Train.String() - trn.Config(table.NewIndexView(ss.TrainAB)) - trn.Validate() - - tst.Name = etime.Test.String() - tst.Config(table.NewIndexView(ss.TestAll)) - tst.Sequential = true - tst.Validate() - - trn.Init(0) - tst.Init(0) - - // note: names must be in place when adding - ss.Envs.Add(trn, tst) -} - -func (ss *Sim) ConfigNet(net *leabra.Network) { - net.SetRandSeed(ss.RandSeeds[0]) // init new separate random seed, using run = 0 - - in := net.AddLayer4D("Input", 6, 2, 3, 4, leabra.InputLayer) - ecin := net.AddLayer4D("ECin", 6, 2, 3, 4, leabra.SuperLayer) - ecout := net.AddLayer4D("ECout", 6, 2, 3, 4, leabra.TargetLayer) // clamped in plus phase - ca1 := net.AddLayer4D("CA1", 6, 2, 4, 10, leabra.SuperLayer) - dg := net.AddLayer2D("DG", 25, 25, leabra.SuperLayer) - ca3 := net.AddLayer2D("CA3", 30, 10, leabra.SuperLayer) - - ecin.AddClass("EC") - ecout.AddClass("EC") - - onetoone := paths.NewOneToOne() - pool1to1 := paths.NewPoolOneToOne() - full := paths.NewFull() - - net.ConnectLayers(in, ecin, onetoone, leabra.ForwardPath) - net.ConnectLayers(ecout, ecin, onetoone, leabra.BackPath) - - // EC <-> CA1 encoder pathways - net.ConnectLayers(ecin, ca1, pool1to1, leabra.EcCa1Path) - net.ConnectLayers(ca1, ecout, pool1to1, leabra.EcCa1Path) - net.ConnectLayers(ecout, ca1, pool1to1, leabra.EcCa1Path) - - // Perforant pathway - ppath := paths.NewUniformRand() - ppath.PCon = 0.25 - - net.ConnectLayers(ecin, dg, ppath, leabra.CHLPath).AddClass("HippoCHL") - - net.ConnectLayers(ecin, ca3, ppath, leabra.EcCa1Path).AddClass("PPath") - net.ConnectLayers(ca3, ca3, full, leabra.EcCa1Path).AddClass("PPath") - - // Mossy fibers - mossy := paths.NewUniformRand() - mossy.PCon = 0.02 - net.ConnectLayers(dg, ca3, mossy, leabra.CHLPath).AddClass("HippoCHL") - - // Schafer collaterals - net.ConnectLayers(ca3, ca1, full, leabra.CHLPath).AddClass("HippoCHL") - - ecin.PlaceRightOf(in, 2) - ecout.PlaceRightOf(ecin, 2) - dg.PlaceAbove(in) - ca3.PlaceAbove(dg) - ca1.PlaceRightOf(ca3, 2) - - in.Doc = "Input represents cortical processing areas for different sensory modalities, semantic categories, etc, organized into pools. It is pre-compressed in this model, to simplify and allow one-to-one projections into the EC." - - ecin.Doc = "Entorhinal Cortex (EC) input layer is the superficial layer 2 that receives from the cortex and projects into the hippocampus. It has compressed representations of cortical inputs." - - ecout.Doc = "Entorhinal Cortex (EC) output layer is the deep layers that are bidirectionally connected to the CA1, and communicate hippocampal recall back out to the cortex, while also training the CA1 to accurately represent the EC inputs" - - ca1.Doc = "CA (Cornu Ammonis = Ammon's horn) area 1, receives from CA3 and drives recalled memory output to ECout" - - ca3.Doc = "CA (Cornu Ammonis = Ammon's horn) area 3, receives inputs from ECin and DG, and is the primary site of memory encoding. Recurrent self-connections drive pattern completion of full memory representations from partial cues, along with connections to CA1 that drive memory output." - - dg.Doc = "Dentate Gyruns, which receives broad inputs from ECin and has highly sparse, pattern separated representations, which drive more separated representations in CA3" - - net.Build() - net.Defaults() - ss.ApplyParams() - net.InitWeights() - net.InitTopoScales() -} - -func (ss *Sim) ApplyParams() { - ss.Params.Network = ss.Net - ss.Params.SetAll() -} - -//////////////////////////////////////////////////////////////////////////////// -// Init, utils - -// Init restarts the run, and initializes everything, including network weights -// and resets the epoch log table -func (ss *Sim) Init() { - ss.Stats.SetString("RunName", ss.Params.RunName(0)) // in case user interactively changes tag - ss.Loops.ResetCounters() - - ss.ApplyParams() - ss.NewRun() - ss.ViewUpdate.RecordSyns() - ss.ViewUpdate.Update() -} - -func (ss *Sim) TestInit() { - ss.Loops.InitMode(etime.Test) - tst := ss.Envs.ByMode(etime.Test).(*env.FixedTable) - tst.Init(0) -} - -// InitRandSeed initializes the random seed based on current training run number -func (ss *Sim) InitRandSeed(run int) { - rand.Seed(ss.RandSeeds[run]) - ss.RandSeeds.Set(run) - ss.RandSeeds.Set(run, &ss.Net.Rand) - patgen.NewRand(ss.RandSeeds[run]) -} - -// ConfigLoops configures the control loops: Training, Testing -func (ss *Sim) ConfigLoops() { - ls := looper.NewStacks() - - trls := ss.TrainAB.Rows - ttrls := ss.TestAll.Rows - - ls.AddStack(etime.Train).AddTime(etime.Run, ss.Config.NRuns).AddTime(etime.Epoch, ss.Config.NEpochs).AddTime(etime.Trial, trls).AddTime(etime.Cycle, 100) - - ls.AddStack(etime.Test).AddTime(etime.Epoch, 1).AddTime(etime.Trial, ttrls).AddTime(etime.Cycle, 100) - - leabra.LooperStdPhases(ls, &ss.Context, ss.Net, 75, 99) // plus phase timing - leabra.LooperSimCycleAndLearn(ls, ss.Net, &ss.Context, &ss.ViewUpdate) // std algo code - ss.Net.ConfigLoopsHip(&ss.Context, ls) - - ls.Stacks[etime.Train].OnInit.Add("Init", func() { ss.Init() }) - ls.Stacks[etime.Test].OnInit.Add("Init", func() { ss.TestInit() }) - - for _, st := range ls.Stacks { - st.Loops[etime.Trial].OnStart.Add("ApplyInputs", func() { - ss.ApplyInputs() - }) - } - - ls.Loop(etime.Train, etime.Run).OnStart.Add("NewRun", ss.NewRun) - - ls.Loop(etime.Train, etime.Run).OnEnd.Add("RunDone", func() { - if ss.Stats.Int("Run") >= ss.Config.NRuns-1 { - ss.RunStats() - expt := ss.Stats.Int("Expt") - ss.Stats.SetInt("Expt", expt+1) - } - }) - - // Add Testing - trainEpoch := ls.Loop(etime.Train, etime.Epoch) - trainEpoch.OnEnd.Add("TestAtInterval", func() { - if (ss.Config.TestInterval > 0) && ((trainEpoch.Counter.Cur+1)%ss.Config.TestInterval == 0) { - // Note the +1 so that it doesn't occur at the 0th timestep. - ss.RunTestAll() - - // switch to AC - trn := ss.Envs.ByMode(etime.Train).(*env.FixedTable) - tstEpcLog := ss.Logs.Tables[etime.Scope(etime.Test, etime.Epoch)] - epc := ss.Stats.Int("Epoch") - abMem := float32(tstEpcLog.Table.Float("ABMem", epc)) - if (trn.Table.Table.MetaData["name"] == "TrainAB") && (abMem >= ss.Config.StopMem || epc >= ss.Config.NEpochs/2) { - ss.Stats.SetInt("FirstPerfect", epc) - trn.Config(table.NewIndexView(ss.TrainAC)) - trn.Validate() - } - } - }) - - // early stop - ls.Loop(etime.Train, etime.Epoch).IsDone.AddBool("ACMemStop", func() bool { - // This is calculated in TrialStats - tstEpcLog := ss.Logs.Tables[etime.Scope(etime.Test, etime.Epoch)] - acMem := float32(tstEpcLog.Table.Float("ACMem", ss.Stats.Int("Epoch"))) - stop := acMem >= ss.Config.StopMem - return stop - }) - - ///////////////////////////////////////////// - // Logging - - ls.Loop(etime.Test, etime.Epoch).OnEnd.Add("LogTestErrors", func() { - leabra.LogTestErrors(&ss.Logs) - }) - - ls.AddOnEndToAll("Log", func(mode, time enums.Enum) { - ss.Log(mode.(etime.Modes), time.(etime.Times)) - }) - leabra.LooperResetLogBelow(ls, &ss.Logs) - - leabra.LooperUpdateNetView(ls, &ss.ViewUpdate, ss.Net, ss.NetViewCounters) - leabra.LooperUpdatePlots(ls, &ss.GUI) - - ls.Stacks[etime.Train].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - ls.Stacks[etime.Test].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - - ss.Loops = ls - fmt.Println(ls.DocString()) -} - -// ApplyInputs applies input patterns from given environment. -// It is good practice to have this be a separate method with appropriate -// args so that it can be used for various different contexts -// (training, testing, etc). -func (ss *Sim) ApplyInputs() { - ctx := &ss.Context - net := ss.Net - ev := ss.Envs.ByMode(ctx.Mode).(*env.FixedTable) - ecout := net.LayerByName("ECout") - if ctx.Mode == etime.Train { - ecout.Type = leabra.TargetLayer // clamp a plus phase during testing - } else { - ecout.Type = leabra.CompareLayer // don't clamp - } - ecout.UpdateExtFlags() // call this after updating type - net.InitExt() - lays := net.LayersByType(leabra.InputLayer, leabra.TargetLayer) - ev.Step() - // note: must save env state for logging / stats due to data parallel re-use of same env - ss.Stats.SetString("TrialName", ev.TrialName.Cur) - for _, lnm := range lays { - ly := ss.Net.LayerByName(lnm) - pats := ev.State(ly.Name) - if pats != nil { - ly.ApplyExt(pats) - } - } -} - -// NewRun intializes a new run of the model, using the TrainEnv.Run counter -// for the new run value -func (ss *Sim) NewRun() { - ctx := &ss.Context - ss.InitRandSeed(ss.Loops.Loop(etime.Train, etime.Run).Counter.Cur) - // ss.ConfigPats() - ss.ConfigEnv() - ctx.Reset() - ctx.Mode = etime.Train - ss.Net.InitWeights() - ss.InitStats() - ss.StatCounters() - ss.Logs.ResetLog(etime.Train, etime.Epoch) - ss.Logs.ResetLog(etime.Test, etime.Epoch) -} - -// TestAll runs through the full set of testing items -func (ss *Sim) RunTestAll() { - ss.Envs.ByMode(etime.Test).Init(0) - ss.Loops.ResetAndRun(etime.Test) - ss.Loops.Mode = etime.Train // Important to reset Mode back to Train because this is called from within the Train Run. -} - -///////////////////////////////////////////////////////////////////////// -// Pats - -// OpenPatAsset opens pattern file from embedded assets -func (ss *Sim) OpenPatAsset(dt *table.Table, fnm, name, desc string) error { - dt.SetMetaData("name", name) - dt.SetMetaData("desc", desc) - err := dt.OpenFS(content, fnm, table.Tab) - if errors.Log(err) == nil { - for i := 1; i < dt.NumColumns(); i++ { - dt.Columns[i].SetMetaData("grid-fill", "0.9") - } - } - return err -} - -func (ss *Sim) OpenPatterns() { - ss.OpenPatAsset(ss.TrainAB, "train_ab.tsv", "TrainAB", "AB Training Patterns") - ss.OpenPatAsset(ss.TrainAC, "train_ac.tsv", "TrainAC", "AC Training Patterns") - ss.OpenPatAsset(ss.TestAB, "test_ab.tsv", "TestAB", "AB Testing Patterns") - ss.OpenPatAsset(ss.TestAC, "test_ac.tsv", "TestAC", "AC Testing Patterns") - ss.OpenPatAsset(ss.TestLure, "test_lure.tsv", "TestLure", "Lure Testing Patterns") - - ss.TestAll = ss.TestAB.Clone() - ss.TestAll.SetMetaData("name", "TestAll") - ss.TestAll.AppendRows(ss.TestAC) - ss.TestAll.AppendRows(ss.TestLure) -} - -func (ss *Sim) ConfigPats() { - // hp := &ss.Config.Hip - ecY := 3 // hp.EC3NPool.Y - ecX := 4 // hp.EC3NPool.X - plY := 6 // hp.EC3NNrn.Y // good idea to get shorter vars when used frequently - plX := 2 // hp.EC3NNrn.X // makes much more readable - npats := 10 // ss.Config.NTrials - pctAct := float32(.15) // ss.Config.Mod.ECPctAct - minDiff := float32(.5) // ss.Config.Pat.MinDiffPct - nOn := patgen.NFromPct(pctAct, plY*plX) - ctxtFlipPct := float32(0.2) - ctxtflip := patgen.NFromPct(ctxtFlipPct, nOn) - patgen.AddVocabEmpty(ss.PoolVocab, "empty", npats, plY, plX) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "A", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "B", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "C", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "lA", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "lB", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "ctxt", 3, plY, plX, pctAct, minDiff) // totally diff - - for i := 0; i < (ecY-1)*ecX*3; i++ { // 12 contexts! 1: 1 row of stimuli pats; 3: 3 diff ctxt bases - list := i / ((ecY - 1) * ecX) - ctxtNm := fmt.Sprintf("ctxt%d", i+1) - tsr, _ := patgen.AddVocabRepeat(ss.PoolVocab, ctxtNm, npats, "ctxt", list) - patgen.FlipBitsRows(tsr, ctxtflip, ctxtflip, 1, 0) - //todo: also support drifting - //solution 2: drift based on last trial (will require sequential learning) - //patgen.VocabDrift(ss.PoolVocab, ss.NFlipBits, "ctxt"+strconv.Itoa(i+1)) - } - - patgen.InitPats(ss.TrainAB, "TrainAB", "TrainAB Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TrainAB, ss.PoolVocab, "Input", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - patgen.MixPats(ss.TrainAB, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - - patgen.InitPats(ss.TestAB, "TestAB", "TestAB Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TestAB, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - patgen.MixPats(ss.TestAB, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - - patgen.InitPats(ss.TrainAC, "TrainAC", "TrainAC Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TrainAC, ss.PoolVocab, "Input", []string{"A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"}) - patgen.MixPats(ss.TrainAC, ss.PoolVocab, "ECout", []string{"A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"}) - - patgen.InitPats(ss.TestAC, "TestAC", "TestAC Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TestAC, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt5", "ctxt6", "ctxt7", "ctxt8"}) - patgen.MixPats(ss.TestAC, ss.PoolVocab, "ECout", []string{"A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"}) - - patgen.InitPats(ss.PreTrainLure, "PreTrainLure", "PreTrainLure Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.PreTrainLure, ss.PoolVocab, "Input", []string{"lA", "lB", "ctxt9", "ctxt10", "ctxt11", "ctxt12"}) // arbitrary ctxt here - patgen.MixPats(ss.PreTrainLure, ss.PoolVocab, "ECout", []string{"lA", "lB", "ctxt9", "ctxt10", "ctxt11", "ctxt12"}) // arbitrary ctxt here - - patgen.InitPats(ss.TestLure, "TestLure", "TestLure Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TestLure, ss.PoolVocab, "Input", []string{"lA", "empty", "ctxt9", "ctxt10", "ctxt11", "ctxt12"}) // arbitrary ctxt here - patgen.MixPats(ss.TestLure, ss.PoolVocab, "ECout", []string{"lA", "lB", "ctxt9", "ctxt10", "ctxt11", "ctxt12"}) // arbitrary ctxt here - - ss.TrainAll = ss.TrainAB.Clone() - ss.TrainAll.AppendRows(ss.TrainAC) - ss.TrainAll.AppendRows(ss.PreTrainLure) - ss.TrainAll.MetaData["name"] = "TrainAll" - ss.TrainAll.MetaData["desc"] = "All Training Patterns" - - ss.TestAll = ss.TestAB.Clone() - ss.TestAll.AppendRows(ss.TestAC) - ss.TestAll.MetaData["name"] = "TestAll" - ss.TestAll.MetaData["desc"] = "All Testing Patterns" -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Stats - -// InitStats initializes all the statistics. -// called at start of new run -func (ss *Sim) InitStats() { - ss.Stats.SetString("TrialName", "") - ss.Stats.SetFloat("TrgOnWasOffAll", 0.0) - ss.Stats.SetFloat("TrgOnWasOffCmp", 0.0) - ss.Stats.SetFloat("TrgOffWasOn", 0.0) - ss.Stats.SetFloat("ABMem", 0.0) - ss.Stats.SetFloat("ACMem", 0.0) - ss.Stats.SetFloat("LureMem", 0.0) - ss.Stats.SetFloat("Mem", 0.0) - ss.Stats.SetInt("FirstPerfect", -1) // first epoch at when AB Mem is perfect - - ss.Logs.InitErrStats() // inits TrlErr, FirstZero, LastZero, NZero -} - -// StatCounters saves current counters to Stats, so they are available for logging etc -// Also saves a string rep of them for ViewUpdate.Text -func (ss *Sim) StatCounters() { - ctx := &ss.Context - mode := ctx.Mode - ss.Loops.Stacks[mode].CountersToStats(&ss.Stats) - // always use training epoch.. - trnEpc := ss.Loops.Stacks[etime.Train].Loops[etime.Epoch].Counter.Cur - ss.Stats.SetInt("Epoch", trnEpc) - trl := ss.Stats.Int("Trial") - ss.Stats.SetInt("Trial", trl) - ss.Stats.SetInt("Cycle", int(ctx.Cycle)) - ss.Stats.SetString("TrialName", ss.Stats.String("TrialName")) -} - -func (ss *Sim) NetViewCounters(tm etime.Times) { - if ss.ViewUpdate.View == nil { - return - } - if tm == etime.Trial { - ss.TrialStats() // get trial stats for current di - } - ss.StatCounters() - ss.ViewUpdate.Text = ss.Stats.Print([]string{"Run", "Epoch", "Trial", "TrialName", "Cycle"}) -} - -// TrialStats computes the trial-level statistics. -// Aggregation is done directly from log data. -func (ss *Sim) TrialStats() { - ss.MemStats(ss.Loops.Mode.(etime.Modes)) -} - -// MemStats computes ActM vs. Target on ECout with binary counts -// must be called at end of 3rd quarter so that Target values are -// for the entire full pattern as opposed to the plus-phase target -// values clamped from ECin activations -func (ss *Sim) MemStats(mode etime.Modes) { - memthr := 0.34 // ss.Config.Mod.MemThr - ecout := ss.Net.LayerByName("ECout") - inp := ss.Net.LayerByName("Input") // note: must be input b/c ECin can be active - _ = inp - nn := ecout.Shape.Len() - actThr := float32(0.5) - trgOnWasOffAll := 0.0 // all units - trgOnWasOffCmp := 0.0 // only those that required completion, missing in ECin - trgOffWasOn := 0.0 // should have been off - cmpN := 0.0 // completion target - trgOnN := 0.0 - trgOffN := 0.0 - actMi, _ := ecout.UnitVarIndex("ActM") - targi, _ := ecout.UnitVarIndex("Targ") - - ss.Stats.SetFloat("ABMem", math.NaN()) - ss.Stats.SetFloat("ACMem", math.NaN()) - ss.Stats.SetFloat("LureMem", math.NaN()) - - trialnm := ss.Stats.String("TrialName") - isAB := strings.Contains(trialnm, "ab") - isAC := strings.Contains(trialnm, "ac") - - for ni := 0; ni < nn; ni++ { - actm := ecout.UnitValue1D(actMi, ni, 0) - trg := ecout.UnitValue1D(targi, ni, 0) // full pattern target - inact := inp.UnitValue1D(actMi, ni, 0) - if trg < actThr { // trgOff - trgOffN += 1 - if actm > actThr { - trgOffWasOn += 1 - } - } else { // trgOn - trgOnN += 1 - if inact < actThr { // missing in ECin -- completion target - cmpN += 1 - if actm < actThr { - trgOnWasOffAll += 1 - trgOnWasOffCmp += 1 - } - } else { - if actm < actThr { - trgOnWasOffAll += 1 - } - } - } - } - trgOnWasOffAll /= trgOnN - trgOffWasOn /= trgOffN - if mode == etime.Train { // no compare - if trgOnWasOffAll < memthr && trgOffWasOn < memthr { - ss.Stats.SetFloat("Mem", 1) - } else { - ss.Stats.SetFloat("Mem", 0) - } - } else { // test - if cmpN > 0 { // should be - trgOnWasOffCmp /= cmpN - } - mem := 0.0 - if trgOnWasOffCmp < memthr && trgOffWasOn < memthr { - mem = 1.0 - } - ss.Stats.SetFloat("Mem", mem) - switch { - case isAB: - ss.Stats.SetFloat("ABMem", mem) - case isAC: - ss.Stats.SetFloat("ACMem", mem) - default: - ss.Stats.SetFloat("LureMem", mem) - } - - } - ss.Stats.SetFloat("TrgOnWasOffAll", trgOnWasOffAll) - ss.Stats.SetFloat("TrgOnWasOffCmp", trgOnWasOffCmp) - ss.Stats.SetFloat("TrgOffWasOn", trgOffWasOn) - -} - -func (ss *Sim) RunStats() { - dt := ss.Logs.Table(etime.Train, etime.Run) - runix := table.NewIndexView(dt) - spl := split.GroupBy(runix, "Expt") - split.DescColumn(spl, "TstABMem") - st := spl.AggsToTableCopy(table.AddAggName) - ss.Logs.MiscTables["RunStats"] = st - plt := ss.GUI.Plots[etime.ScopeKey("RunStats")] - - st.SetMetaData("XAxis", "RunName") - - st.SetMetaData("Points", "true") - - st.SetMetaData("TstABMem:Mean:On", "+") - st.SetMetaData("TstABMem:Mean:FixMin", "true") - st.SetMetaData("TstABMem:Mean:FixMax", "true") - st.SetMetaData("TstABMem:Mean:Min", "0") - st.SetMetaData("TstABMem:Mean:Max", "1") - st.SetMetaData("TstABMem:Min:On", "+") - st.SetMetaData("TstABMem:Count:On", "-") - - plt.SetTable(st) - plt.GoUpdatePlot() -} - -////////////////////////////////////////////////////////////////////////////// -// Logging - -func (ss *Sim) AddLogItems() { - itemNames := []string{"TrgOnWasOffAll", "TrgOnWasOffCmp", "TrgOffWasOn", "Mem", "ABMem", "ACMem", "LureMem"} - for _, st := range itemNames { - stnm := st - tonm := "Tst" + st - ss.Logs.AddItem(&elog.Item{ - Name: tonm, - Type: reflect.Float64, - Write: elog.WriteMap{ - etime.Scope(etime.Train, etime.Epoch): func(ctx *elog.Context) { - ctx.SetFloat64(ctx.ItemFloat(etime.Test, etime.Epoch, stnm)) - }, - etime.Scope(etime.Train, etime.Run): func(ctx *elog.Context) { - ctx.SetFloat64(ctx.ItemFloat(etime.Test, etime.Epoch, stnm)) // take the last epoch - // ctx.SetAgg(ctx.Mode, etime.Epoch, stats.Max) // stats.Max for max over epochs - }}}) - } -} - -func (ss *Sim) ConfigLogs() { - ss.Stats.SetString("RunName", ss.Params.RunName(0)) // used for naming logs, stats, etc - - ss.Logs.AddCounterItems(etime.Run, etime.Epoch, etime.Trial, etime.Cycle) - ss.Logs.AddStatIntNoAggItem(etime.AllModes, etime.AllTimes, "Expt") - ss.Logs.AddStatStringItem(etime.AllModes, etime.AllTimes, "RunName") - ss.Logs.AddStatStringItem(etime.AllModes, etime.Trial, "TrialName") - - ss.Logs.AddStatAggItem("TrgOnWasOffAll", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("TrgOnWasOffCmp", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("TrgOffWasOn", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("ABMem", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("ACMem", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("LureMem", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("Mem", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatIntNoAggItem(etime.Train, etime.Run, "FirstPerfect") - - // ss.Logs.AddCopyFromFloatItems(etime.Train, etime.Epoch, etime.Test, etime.Epoch, "Tst", "PhaseDiff", "UnitErr", "PctCor", "PctErr", "TrgOnWasOffAll", "TrgOnWasOffCmp", "TrgOffWasOn", "Mem") - ss.AddLogItems() - - ss.Logs.AddPerTrlMSec("PerTrlMSec", etime.Run, etime.Epoch, etime.Trial) - - layers := ss.Net.LayersByType(leabra.SuperLayer, leabra.CTLayer, leabra.TargetLayer) - leabra.LogAddDiagnosticItems(&ss.Logs, layers, etime.Train, etime.Epoch, etime.Trial) - leabra.LogInputLayer(&ss.Logs, ss.Net, etime.Train) - - // leabra.LogAddPCAItems(&ss.Logs, ss.Net, etime.Train, etime.Run, etime.Epoch, etime.Trial) - - ss.Logs.AddLayerTensorItems(ss.Net, "ActM", etime.Test, etime.Trial, "TargetLayer") - ss.Logs.AddLayerTensorItems(ss.Net, "Act", etime.Test, etime.Trial, "TargetLayer") - - ss.Logs.PlotItems("ABMem", "ACMem", "LureMem") - - // ss.Logs.PlotItems("TrgOnWasOffAll", "TrgOnWasOffCmp", "ABMem", "ACMem", "TstTrgOnWasOffAll", "TstTrgOnWasOffCmp", "TstMem", "TstABMem", "TstACMem") - - ss.Logs.CreateTables() - ss.Logs.SetMeta(etime.Train, etime.Run, "TrgOnWasOffAll:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Run, "TrgOnWasOffCmp:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Run, "ABMem:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Run, "ACMem:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Run, "LureMem:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Run, "TstTrgOnWasOffAll:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Run, "TstTrgOnWasOffCmp:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Run, "TstABMem:On", "+") - ss.Logs.SetMeta(etime.Train, etime.Run, "TstACMem:On", "+") - ss.Logs.SetMeta(etime.Train, etime.Run, "TstLureMem:On", "+") - ss.Logs.SetMeta(etime.Train, etime.Run, "Type", "Bar") - ss.Logs.SetMeta(etime.Train, etime.Epoch, "ABMem:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Epoch, "ACMem:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Epoch, "LureMem:On", "-") - ss.Logs.SetMeta(etime.Train, etime.Epoch, "Mem:On", "+") - ss.Logs.SetMeta(etime.Train, etime.Epoch, "TrgOnWasOffAll:On", "+") - ss.Logs.SetMeta(etime.Train, etime.Epoch, "TrgOffWasOn:On", "+") - ss.Logs.SetContext(&ss.Stats, ss.Net) - // don't plot certain combinations we don't use - ss.Logs.NoPlot(etime.Train, etime.Cycle) - ss.Logs.NoPlot(etime.Test, etime.Cycle) - ss.Logs.NoPlot(etime.Test, etime.Run) - // note: Analyze not plotted by default - ss.Logs.SetMeta(etime.Train, etime.Run, "LegendCol", "RunName") -} - -// Log is the main logging function, handles special things for different scopes -func (ss *Sim) Log(mode etime.Modes, time etime.Times) { - ctx := &ss.Context - if mode != etime.Analyze { - ctx.Mode = mode // Also set specifically in a Loop callback. - } - dt := ss.Logs.Table(mode, time) - if dt == nil { - return - } - row := dt.Rows - - switch { - case time == etime.Cycle: - return - case time == etime.Trial: - ss.TrialStats() - ss.StatCounters() - ss.Logs.LogRow(mode, time, row) - return // don't do reg below - } - - ss.Logs.LogRow(mode, time, row) // also logs to file, etc -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Gui - -// ConfigGUI configures the Cogent Core GUI interface for this simulation. -func (ss *Sim) ConfigGUI() { - title := "Hippocampus" - ss.GUI.MakeBody(ss, "hip", title, `runs a hippocampus model on the AB-AC paired associate learning task. See README.md on GitHub.

`) - ss.GUI.CycleUpdateInterval = 10 - - nv := ss.GUI.AddNetView("Network") - nv.Options.Raster.Max = 100 - nv.Options.MaxRecs = 300 - nv.SetNet(ss.Net) - ss.ViewUpdate.Config(nv, etime.Phase, etime.Phase) - ss.GUI.ViewUpdate = &ss.ViewUpdate - - // nv.SceneXYZ().Camera.Pose.Pos.Set(0, 1, 2.75) - // nv.SceneXYZ().Camera.LookAt(math32.Vec3(0, 0, 0), math32.Vec3(0, 1, 0)) - - ss.GUI.AddPlots(title, &ss.Logs) - - stnm := "RunStats" - dt := ss.Logs.MiscTable(stnm) - bcp, _ := ss.GUI.Tabs.NewTab(stnm + " Plot") - plt := plotcore.NewSubPlot(bcp) - ss.GUI.Plots[etime.ScopeKey(stnm)] = plt - plt.Options.Title = "Run Stats" - plt.Options.XAxis = "RunName" - plt.SetTable(dt) - - ss.GUI.FinalizeGUI(false) -} - -func (ss *Sim) MakeToolbar(p *tree.Plan) { - ss.GUI.AddLooperCtrl(p, ss.Loops) - - tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "Reset RunLog", - Icon: icons.Reset, - Tooltip: "Reset the accumulated log of all Runs, which are tagged with the ParamSet used", - Active: egui.ActiveAlways, - Func: func() { - ss.Logs.ResetLog(etime.Train, etime.Run) - ss.GUI.UpdatePlot(etime.Train, etime.Run) - }, - }) - //////////////////////////////////////////////// - tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "New Seed", - Icon: icons.Add, - Tooltip: "Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time.", - Active: egui.ActiveAlways, - Func: func() { - ss.RandSeeds.NewSeeds() - }, - }) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "README", - Icon: icons.FileMarkdown, - Tooltip: "Opens your browser on the README file that contains instructions for how to run this model.", - Active: egui.ActiveAlways, - Func: func() { - core.TheApp.OpenURL("https://github.com/CompCogNeuro/sims/blob/master/ch7/hip/README.md") - }, - }) -} - -func (ss *Sim) RunGUI() { - ss.Init() - ss.ConfigGUI() - ss.GUI.Body.RunMainWindow() -} diff --git a/examples/hip/plots/fig_ab_ac_data_catinf.png b/examples/hip/plots/fig_ab_ac_data_catinf.png deleted file mode 100644 index 0898dccba1593ae0837511caa8a7c737aa227715..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76909 zcmc%xcRZGT{67w#(vTu0qbVzej7rLEkdabmvXW8u4rNs&LfIrlWbeo(D=tmy$;WtH>9X24^omyBq|wc2?Y{~e3nEa z%cIzi|1%`kbqN33YJFKoi2{EdDfC|8zjsCQ8YKO zvD2~AC)wHA@feyJTkGmr=<}Fc-4CA>IY=TMBgsfyQnG(L{@YGzzv}9aY2MFCHzWdRBlh)^;uH5I~+p|VWWoFHS?|PNrlbO7rY^S@vmCom> ztm32mQt_n;y{U8bTU*_St-nQ9d=zfvDLgaxwJYW`z6zsGA`}K>1(GrpW=l3aYu?E)A{?BVsFdMn; zbNJt{C46qO$p7yPC+w9S*!jONEO6OVEB zC%HyPGqorzLT9X_?lpIAu}_xJ;ykN?{~Vk z_|nRX$~A8ZD*oy~he198>#^2TAEKi_llZP*zy5HdBZo8S%%k}St$CKZlLFR5a`|KC zzYCO&)~kIEoiR2xZvAlmP;2pHJG=p3uI-pgaDd_&rZMr&wTd@q4O!?aer4Ye>e#>! zn{<3MOi{}=*iBkIeddfVEyoSLTeohd;7@rL3oC0rqtL_g1f|`gkN*w)dptLEJuWwZ zotgQ``oB)|@-e&$omoIo5c|UN`ubvzvhO9$7cN7`j~`E>mXbBC`egF!^rXww)D*9E zF$1rbw3GZ%(ML+UmV0BUA1zKctgFz{(gt;yeSW&F{M_W^q-=yPo2b)@($Ml$SH3l6 ze~@i=Zf2$q4-Zd@c~8lB|0{6=et!NSUn#Y*w)Bt=m*H;_K^?iVv2GK;3qu?n9QdzX zxiXpE*4(T|O-*ewSQjMA6nt8V*YwTVIfxzuR~?yFF!v&S<|_> zMsaJ)JqOQ@q~5!^L)dO|Kx{GJdN@gl?S^UfeRFf(g+p&dALn*0G)9T@&e^%FEzKPC zoN7)~?7Giy@u!S4DBEfEVcOf}xnWi7Sc!<{UmUaFzI|gn`+&yxsHj&~*6FR=w)MUe z-$+n8U}$J~-f@Xf_S&`lWgQ)zrH$1o9X&m^oasPt)?&3p* zc2m_0V{Jd8uk3Ko+`oUnMU+QyaIpVW%*xt)lYG~a-sx$J-3Lxf^q$k#*H_q-s+}TB zEYvD>Zdl*U&dSnDlj@RAX|K-&cRn<=lmdXPm+RlDn%%@IK4L3%G91fx?8N-u$}{os$bacjnBM zt5>hOcMc8>Sy^&rQzZ&xguUv;I?QdC@;&@HRwjUx8{6f|`CbM( zI?J82*irlsz8@2DT%vjO=#lIf<-IeUf_>CXV&2!o&wc*>{iczcn%V(JC#RX!snTnw zntuL#>f=KdDf;-izrVlHOGUrvD<0*)eyN29+tM6w;XQWDHMw9T&7rNI)lDe^Ke>I+ zQSS(>n)H}+5CA8K)q~=}mpw{WH_K`gz_%SCZIxcQoHKUi8SDrr3-%{U8-V78K z*{V2cM@Ny#u6$N&wcEEtyClR;p4@r#=uw5*U8J)n?KIDyKc{5kR^q@(l8X}449(5S zNexqaEd~1(w z+qMy>^x^u-0%iXNs{snt4?aHEbBa}~8M#iJxSOt3e2<---Ks52#Njl<6?=Po_dx?a zJ!z+-i<7^T6}<65gN&}utSlG@2L&m|Iq_HDHZV9|-_W3(_bpt|JV|4tGf?%GhCp1_ zlpWTrYty+o;nwN4YuBy?tVFVLaHvYvC{XU&rDkZD*fofXL8l`5t+DYw-Zn`gNdJe} z{;Fd!U#I+=HR+U786p(*{6y|oR#$Tt_qe%jbssK85v=L@R#oM$Zr+(|TAqcjlBrev z$g;lklX<$0T-_4R*GYrS+gIj~^RS z=ia?7y1Kfdp`m5JejU(uoY{u{kZ+3b@Y{^s)LAKeLS9o}uW01bmahH9=a8VA;hsHv z&R@8&v+2i=ANFfYmT}$B;^NrpPuQ_R3+>Fmh70b&GFA)rI6k`(A+$5+w8YT2i25L> z@%BukSDWZqO9KJ&-%%vbKKM?muCC6=&Al2W=9FRHBWCuS$$5!POib)@yad&ub8d-= zC%wJB|NQym8g}NsRg3T^)6VLu()*1^_4M_1a9baA=AQcc_3NL$zVg(7z(6-tYMrI& zUSa_co_*ko^Q-eCMzV{RLseB(=g^D+@f0a?p@%+Ah``ogyVaRb0h_Zm|nx364$C{D?H&w3s9^U!*@#B%Pv5K-X60u%Q zP0vzOPd%qPR2>xb`gPfa3r@>j?_Lik=Zom7IwmIG+o=w|!}TaA+pw~*{23f%pR@b> z_wUIy9+~yP(9jo`o^Aj9^XEPkX$vc>^12|dTPiBmse*UQNRx@nzDI-uyQP%BxzPP> z&tx_D_O`a+nv6`M&4tN)l*VpfI*;wXyIMuCbYI*I^+7iFrcqpIF(+uu2XJ~sI=X@*< zpB5011aON^PJRh6r(5}AZ~12R@83t#($X}3UAS;T%WZSx^@ILNE9vQk3F zvF<^81~ci;kM~ktws&=Om~%}#kLN_jhVW|N`#1i}!q%3!aQC8ql$0wsZ@&J{AD{R0 zrvkTT!G0X0E6=u5;R4*5uRQ>S%I$o4UNX17TnxI^ z!ZAB5REQV6;@(3}BED?`2qBw#=-@%loXt-TETy_%s9T9|ug?GbXAl+^=FMMy`0!y) z?_1j1Q4trcpYvD8mU!U6+y`dt5}BDIBmD!w<5yHv4AbAkB&P8~)3L< z&64I#6)cbulZuK8_k{~#%d4yPj<2v~h!1QPa;@a)vu6i%y{jrKE#_7i#=Za<=$pOA znG!KvN9zpgXhgT?S{wIV30M<#o@)?H!HGFtO8acb9s@~9$*zBW@@3%y#vhu+UZUme z`uO@%KVF_?&(6uA8!|L9$^xm8HccM!6w&oQb?2k>sNF41=hX?p#C}C3rTv19ot^4N z!k`moM>sg*jgrX}gZ^99dNec5!iTBT?KrVjjJk3FW#zU4XV2Vj)U9C9+~Ru>T-)uI;EaF5PU?;@piARDel-{Ycr1EUF>Ro@7gIj9(MLP zg~21j59O9b21HX^@hvpK!Jz|;j3?Gij9J7S*rIA0-w0e=0ut>me-s@ZUGAu^uAVsc z*xvrUu>JJ0GlGJuOPe{lxdt3J-qO@H)Yt2FcXyv|6A%ypXFAnCu)M? z(wW&rlVk^YwM)K!{P;0%0(_}PY|0^y1J~{MWeCM}8>q)*jmHIxew+?xwL^cYL;Q>WWn) zXioXynfu@L(0t?+6$2JVemuMW_PpOIjl9>_L;0TMnD=NgwvdyWnwoThvI1lWBzaGr zIu$0UN3;i7S=qeEEV^}`lYZ$;dh16eOV`1Pubt}rXh{31*nVn()DBw3)peh!S`Dsb zD9Cd7GHHA)y)-R1H0g|APxk#if<3=}5hpPl7o4e6@jMfy@btwT z&mz4oiShAYh|i0*RT(>jrY!o%0Mll&08agh(vgM|eXHnM7Nfrkur`3O^lWV+> zj?H&Jp4vHw3h?VS^Od{_=Z)q2i9I1fL3Cq3-tTDBU^pSZ_#rNiznXCs951fV>{k}M zwWXy_M@NT3y@cnQ_klC9B`&BB_sMrq5BQ3rN^+x2?QanDc2sq5@#dU;pUYqr`x_ui*zTkJ! zvuEU=A_m;uM%?Zk!P1pFt)3G!#{pC5)Hg85LV?&RUw9z-_qkbrQ~FQlJv`h5_69QT zyK#GFW`-O6*q}4n-+!Nhxp`v{4%dZ5iK8Uq3ckEzx-TCoqSKb92|zvi_wUZy0Tkk} z@bE*Q9D(WoX9?>9QmAxsUWxJ z+8%c;gi&`*aqEwIoX+1x4go>I!Lp(!EgwE4=)Qu0g~Zz0THbK*noev7lS_YNF5 z;LZQ{CE)0p#PB$OnFG36E+Mg#{%gcaT1^a;uFYOEa{#l-pIgNa$s62UpK{^q8lLX0 z$Tx*_f?IDUI5jeIA}3Xkg?B10H8s^HRZJhm*8kdB0JmcwJwoJosyti+Y@IuRGjpnx zBRtnYxZNFAR#r~GBEy;unfW#w99qU%wh$C(XlVF_WpE#a$T3g{pul?V`gMK4;M1!I z{Y0MU8a6%WKORv-eitgw-JLskj)Q@jU=0=Og>6UK4wr5&_3uga*!t_&uOQjLpp){m zhX?xmSsgjRGV_cX-#wyr(C<@}IPKR6iU2-9|6zT7J-=f=x)C=k>lIGF5XV>OY;-H) zH4P2=xDEZm@;KOo0|R_mBC`!ZVb)4|1_ln>fct;So{Zy4x)vMD%b%`pR8?2YR$cWJ z`49iUI(%W@MTf_o&CN=&adFHX96P-E^YZfkd<{EOUa&aTBQ-bFKz8wgJnv}B!eD&} z-Q=~bBN6tGbAUm6R~E*)3Vs*ZCjWfgQT$ktfWP1bloP*5@6ZfRdo26)%$xuP_NWR0`;I$}{d8W?GgAC|p<-oGUN}N5b^mocXLF?|_ zV{MZTzq0fxcI~452109?XFC?mx8E2vC~tyG$o#&Zo&{^#i>OVs_U{k_qkRk&6cpm5 zGWMQ4dGd36rfwz(&-_%6cBsotpXAc=vT}jQkt0U{(04UmdA@t^O6&pAM`zEOcCc~p z+O?}9M)D;oa8LH}znVvWNv;)X-n{9GBCPZM-6ac4%S&Uesp$4(92^{Jdty3la1+eV zMnhDz%CbQ{?C!a{po zt_&^4{V!3gjUr4tb9c67VN+iLBFP_Xtc(1@R&V|A;n2#{6*LE$Lx;HJj2}F>i_ThZ z_p`2!5{hg!`VeQ1w*LBTJuhWH?!u)n;2O$9kr~h0cl|i?`Hsa(C2Z^vSqqT#! z+G~!cXVR5-i&3ra`*#`w**w=0bC_k@M@yUUTtL8CV`0)rM-JDA8xdYn&MTgss**jW zX1@!f(HAbuVFSJ|F`$q#-M5U&&U*elBLI4ug=X!uaHzVkYwAbeUe-`ip>I3+JU90o z;G+9qAbMRe^YVG9188U4!O!Zs8@s!Y_PA_{lK!+LtDbjWI}Z`|7FHW{-=w?fK6~eyS?S^4?tm4zi?b|yeTV7`7wuXvl1-u88jP5;8mQFA?lH=*w|QU z_8X`!snbLCpocZruWd9A`ULR2`t-@peNfbX+BLi_$5_?uj=K6GG*JQnnrqb@%gajt z)`f(G?$x|zR+yWcoz1Z9uddsXz&2Ca(caF8&f3*pBl>8bX2YyGVJ{B-^k@qgGo)O$ zlsh?;5a=LbJSlgoUHL66ENorMPDMopz0W!-3QJdD^OxmtIJ-*-B(9OpPrOf`KK%{> zyROJdK}wqX0;)L`*xKaK9B_%dgjUvEqSv?19n^>a2xYE~ynmH<`s%BrKISFMS3{|H z?NSV_X$<8j$Mzy8brm_#_V)Ic`;C7^$FiV3*+?|R#IfJkojT)B~@Q*3NonVFeMb*~JuFyO0OKFEbB z^e$%|myY~Yx-!b;xX_|X`6=IajQ*akZYFeO6fEi90zl2vjh5KYig^(z3V8K=2mejG zTIxtTet<(x`Pm|;#YxSyXJXK`J{q-nsY_*fkKQvg<5}B~?EY6o70C1$hyFEKdQp+c zVR2`T+vkj1xx+eNxNL{@p)h<3fCAKXr(iQd)NBv#3Us;g=8dCEpMTp$*ZD>BDlfX* znfKhw7umX(`I(LUYBm957)2j_RGP}gP5s{7EFmMaQ?R>m;P!BzxHF)V`>GJ&J(M+f zLlldxJ9b!)L4~-P$9i0LP0HsWd$x$RwRPI?nqkuio$exs+ojIMeCFsT8Z14j>Vk>S z?n|a=71wEw7dfxLDLiz-A#3k%S3;vGE*AYX4!VAVn>(d7b0WDOiYC8hpM*w%jc2&_ zojYFW620L2OAv)EX8NjRd-9#sl@FvZqJS`-w|Hm4p)GON*V54Nd+wPJ@LvU*p=fm*GdxK6tHU{t1`^@{`{|R`uDuozgD8uH%gg^M&3oU-l1$ z1PAwlbmswoq1!!2FTJy=xvwQ);p1(q`CzmH3YTkI8LBqj!6}j<0Ra^en`{AHz=U_P zA5klV)U@JnM7YiU1D?-(@Pp;7ajV=5esOUo?5gtXPU!8?|6XRz&d$1p|6~E$I1l8? zcgp$9(GxCFIQZzAfBYRu<+S~F*YP?TaDiY(SbpJox3+0B^!32o3)b7g)UMjtd{mlM zY)Z1~-hcq4_b-;Gz<`sJv(K!qUMN?^rd#D-dop*eG3nyU8rOxSfB~Q5YMn|Uqt2y$ z291%Yl*3ce;4hn=lVp3P$YNk%pwYlsd#E=nH$WhrvqxOth(2KD%Bg+JQzfgu*ZLqR z=mJjcKq~{aEJFt$pymRltyI3^S44i&5LL9x=FXir(-NAIP=xY5i?|7lyl*)$a6i$S zcD_kC_&RH{r*zMb9Xrgrfuk%}<_+^Z^$ZO9Mt;0!ykNyvR8*8h{hK!Q=Uzbv^x?45 z`lnB~aI0mxC2zSt>H#Vw+YnIXnv3T7w&|c`MR-bBXYRWQo zzvOj1^coo*jd9uBXfL!&=aVlAYkE9Y>=7Eu7+1GXt;jx8i3QC{$h~vCr<4i(`dL~U z50;7sstb1~BrCDaHS3_}tI01C5($YRO(Xv)u|~6l^<53&u%B31Shj$*CbzUhi^=;C z))X)A@&5h$t_A29)62tA)^oWgzn((m*eP$O{_(-BUjCApx!kNTTKcs~6UWpd2LguS z2wAs%xHu7!J=l=!#jjg^?8J!|t0lFM5Aw>W#AxC;<0p1C9Xxo@eyVtpv+G8y2=4M* z(Z?#G)D#r23nD`#l*c^t?8N-;d+#*$dNRAK6H1L%UWN9}o5!rZmG{;fae>A77pCd0 z9@CEyao7jb&Lbx$M`3Iec4gPc2StNP{zc30Qn0nW0d}G1yCo-cq4sccuL4c+oue)@qbm1h1F!1%nd@U9)_XZVHLr;fd3a!n4%&OUSY>{++U zK_KE#e%FN=gT=5VSgPQ^U7wXR#Czej%{NF4k!M&b<7Ty%T5|(Kr z^PBeQQJ#5g@<5KCeYLb@;?aSJnKXYm6msfTkY9Z8AmOK{N=`Hl@b|Y^n%04Q__5BilnN^5?ju4< z34hBND_~>3fLu*E)>Yzk2z%k#^XJ>=7Z%)yF5-$oJyLTyKK8whh{!iYX~HR&np}bS z(DjU6P*8B|_U)8S3_Ke4V;}sI?&;}mJ#^?$^yov#nNW3oAnsF+No!>%kOR&`gWc6& zd?(k$6Nj%}vj^r|Ld0}m)h<{uRt?X5nZ&=fWMyP$2RtfZqNRNX`@#CUqn@Zn()i*O zeApM>-hqX0o5iObS<>N`=SZI9;)0WO9wc&l{;wi|Z7#3csj(&BU4*GMS>VsmrdeR~ zGB@PUhQQ+gh4$_FwUGrT)k8WJdQN`=Po zar7*%Q?Wt*v7B(OA}qQxS29LHv%`dlp(z~~7iVeeS|!Y92>n3y8?pK^F)Y!FL0A?p z$kIU^hpjd=RgM^F9p|Sh=0UwP2r10Y#u-l% zfR0O0Dnc-Uk@FfB&C-&+n}^4Hluu>ZfjvirDs4%}zrhq)U7QLjoB*KPi!BAP8V&E` zvh4(f^u*kL|6$V~%js~$A)zty-6j1WbLZs3a!>JN)!v2bHv-0dj!PBoT*}efyZ)j;&h> zk>0|>qKxQlP{ru3s@hr)eckInfl9>X*g@D{Jb&q1R&2q#;P4UNN~*YN$JxC6{AdU} z<=1Q8zCDcS$UWRsJ^_I$STQtv_cG`3{#cZ^$yT3VKO|`Owt0~NU((mERe%xoOjaDT z-KF@fcNiOrRY1-?C@6^UEa55S>mx6coiUMT*`LQO2Xv=D`5xY+kv)y%m2Nk8cgwL{ z^PWh4mHgh}>CFmlrL!M$SO`}{HPYRE8y62xaA8S&JjZ`thPyua;ps13!HWgX>yO-L zWT?eee~b}Qmv`+^XCA=X@OWs_ASA2;V!~|C`}1u6`jL-{kr6)dg4P(xU1oAONhUvIWfb(GL7hSI2GP8rrs0;_)Vqv(nV!f=10J!p3mwWQx-V2J~RA@+_3n zx_G`K+f&2jd}CJd_=Us0kYDl!{d+`fLn0$1`84A793grH927Dnn9h`%)q_Zom^haZ ztgqryen7#c*~JsfP9cs*0K?nQad3DX(p|;L3M!031GOGJYt$^=yFB%5kJxL6aixb# z7iM~rW7d`Q%H4KqIK(jL>&e`>5iArH8y|lL4mmfs9{Kj&H-#o)9?K^#v3W!(&YwPg z`kr?!ld~E0t}aKQZ-{oh0=@;o!Ssce{m*HxT)gPo<%DgZV$kJZ(WpFM0LG&0EkhMV z>3ZPMp)=^P2GHsn>>#%x>JW6NR3_kf`ReP#=IiJQ3T+|CJ!p&*+&mZ-*salZ8EU%2 zM~Z&KSxaiX-uZ($wcVs!5?Mf}6Zbcr!cE^B)cpXw@_pSKAN z4!(zckVX!ZB}CCK%^ZBX+SDOO;MX*&bfQ2opLb2;#Yr170Y!z=5H`#^5oG*)ui@)j!8!4hkZfvZYC;kg`TAA;C zbYk*n+%6o)n_Lkix9{9x;pC)5U85g@v%t#EzU>v0_)yY7*qb-^zP-JmAWx6=zj^!i z3qY{Gdfw8MnNZ`OS^D)E*yV{+u`m#CM2S&>Z<&?onYWDA!7>$Jn|}7Sa3ez4E-fei zASz0i4Z0v+1}NX-VB(!UHJh6MCVz*oYWlDAqk5hezR>*hXL*6`SYC%F3b+P`Hx?+f z%Zfd@rL|s9c9mYQx~=Zw1qHXg1CAg>PtR;J?!*0;fLdY-mnb}4EzD0~(&d$#52ok9ZpAZ&SA6k5M)tTA9 zdpT+0qC?|XNUhbV^_IZKdiU>FG&E4*+!66Ablh6yU;86ch>+S1W;R}R0$CC$J+1%`pCO!pz61C?3khK;csM}` z!K$*VN(Wa9vF7TXI|qeqMqJUtbfG|_e(qzCLa@c{#eBimJxwSwgN3Y~|*HgL2qzB($(2TKC`#-h_Rsc&_8*;4QcTW7&H z=&09Tvp@b!MM>G0#O<;?7{VxG&*!|ppekZNO-fb&bQM+spHBJKf#G3m{lzv)@7{ga)%|{9VS(5S?d|RFfPT!K$b}JH zgZ5PZF)~uiUAF`4cMx=q_CuBMW>a%>CCpOLmfb{l?fCKSD2fsfAD%-3wH`|^^2pvw{PFJ*xYq1{xSBr#lwfy#GXQk5>~@LxEK$&#lB>v#~i#lq9I|I|a+x%}Fn9rn-w2hD~Q8yCjdyqP6dWQ&&Mq%3)zU zk@h4m02``Bvg)k#ooPpUwCFL0-i zCchLI6_i_ZhK8eDe6dkkMMMr0m-~|b)ORo}LdOSV8}81wkADdLs{*%c(0LPvDuubZ zIewcshl6#u{ylozeEpzY{<)+Jq~^)oa7fDEqrWBGdf!~o&v&``7Sv22G!oRYM12(e zfyhdfYZW66jmy%%XMs6BL#{FYGC47k+Lu6)s12J6egx-S?JW3Pp7CE$9F_AOTbN^q z5~^sIlOP(zysjJ@9qsEhFIBdbaBCI^jgrL9M}TD)q(+p3K4`Tse0&JBm1mpSA;7$# zZefw}x)P>Cl)wFDrMnQl>}LmdR=;8*gbM_hdLjO{6P9LH0KgLDs`zs0oy@l9{2Ch? z==>KUT)aa9hST@O>y^ZJ??_O5D0c4jEBuC2z^7a7eaG92W;P9SNrXlBQ8ZMq_sp>y zvNvv2Ne^EQt|Wme+u|MGBWZGPCatf?%!+w%a3U!Cn@#+ zi#PeGeB`1N4HMHVh(pOjyOE@~ZHMB2*W5gPl&={ZY3_AMNc<=tQuWQZAoC%V-k~0H z#nbT=p;u=@!M8OvH_v)H zLL$XJdI7XRq{;xY=+ay!Is_`ee5v^MjT-6$-??)tc?~$`7QN-$z+B&f(^}Zrz!bY` zTSA3T8T;+=#@Yq+KN1PbJYCu*im^tX1sT#VQ08{r$uWwvSOjv?Gx6 zw_LeWVdNQsK>`QW#Oo|fhYr1jor3L723{}a>?}sQi^>RpEU54|I1xXZbT7*m(pdq4 zz5DmOK~%h9w2ly?+}rbe!9)9oI&m16X8L6{-IQV>>rw39?KoydER{Af0)Q@~bmVy; zC{l|0Cu%sc($dmpz=LiGmg-xXd)+rMxCg24{NsPzf~9Ea1eW2L`#>OJevqu*HzX2F zIT}RN8pT#q?sPXo)_wQ>z2YhTy_YExU63?(+guwKZ_!HYV4H>KRDpv{MuMRAy{%1( zury2|qw#@f?5CsC0mh%6pRa^XK@fB(Sw~?2FM-~=F962RK#OHTlfg%>Mp~K3aJ_gz z@%Fssmf}YXm!Z&UXlQhg7PtTUr2~d*uDl(C8!HpQi&J_mn=n5KbD{iWbhM6p#25Sq zC14XALV6+FQ8&=rORB02r5h_;Fdlv&)eVh}9!Hig_g8@}7lJR*Fi~7wT#&ydZWWPe z8~PgdOwhdhF8nIx!&Gy^dV4a!Xaqel95` zm7S8pO;1BpM#_M1TCY)>lH#2Mzk=*8mrBZ?U}TN?(Vw=vYL+@{hGIm6XS?gK_Vx^P ziZpI*ZSC!@R0mGS{>+@}DUBkd(E{^IvpIl0{Ng;i!DQDykdV>Wh?_vg^FF0j6pF0! z3w92UY~1#p{KyB_b{Sv>U^mGa@9 zgak2J@!|dZib!!6t-ni>gI-#o96>zKusQc8CTiR?6)HRgkpb53p8rW-D&=jUral2# zysf6z3-~_}Y&+3Ghcx^SQtwG|Qtypg_@;2D&ghgtD?{RnL|Q@)Z3a8^le0LkMOstO z)YQkkbe*2{s<&%Igr@r#VHzMrPew}7DtBkB6}zn?B3tV=2bg#XM~fh7b`-$ep` ze%-v%@J8SYYQrt)uGoWZcL#{ivu=sFN9>0Wml3SR>jd5DMq|d+F>`V4!iFZl={&jJ z6_R8fx1x|iT zCHBZ#QAucILJ9i=u?Mb&2#zzc4Pi$!VZW=$h~T5tbUs>|W+owgtY%<72baad&Q3~C zFVlB#QRzy6zHiP1+xK5_D7 zV)IH4JJJG)=awJ;8^846!Gne!61Y=J@9QGds~SJg=I)KsRvaFO$ghi#GF{pi#)`hG zm&WVNBvg`u)NjXU5mF$#*==?`7=#gtXR;GhI;v;Sr4}tzg{Y~ktKLtr3JMIoiwtU) z2+T2)_6#z@S3u_blL?IEa;lx^3KBW91{(@qJDQnM1Lq) z`pL`5RpJWV4WUzO6xr{EJ-+2;cVP)seRN84QcYc5IdUj}hK5wQW>BM<&6Be{i*ObR z*o`!kYG@7Aq_VEAqBpGDp>XYGVEED?Y&GzLZ?s{cHlTNC=sBcRrQ4CAp|>Y2i6d4z zI!?QcvW`KWmE-l;-DD&LI5LpwXho31{kxWY_qmw(MS%${X4gC%^Al_{BqD&Zw6tU~ zrjc(Ir*e<=zncuyOCrHL3;M;dn*`C2>f-Xv4AELYigv!>Jic=kwA`M&bq-hMROQ1n}cSq^LE*f zRjO5@MnQssn+43^1Q!?Whx)oY3nEv3JVTdHK%l+FNL1%EEt8&AUE^g{k>e;+JEcld?V65QMvnN`~5P^1C2NJs5}| zb(uthKzZ`(9tsK)DMho89%0_Db2ukbn57~1Fv3_Z7W0GME}KqfE1>yk*AkFpFzP_V z$oK+MB}F}=eBYtJ-0}1wR-YP@!t~r6IVnXW-~TbEwu;Jg;88LHigU451aQa`BLqYn zCbW)0O~4P_WRDLYj-#m=vkhToV{FG-%Wd!`NO8JDvL_9;9q@PRf*jB+&5irApNQe2 z1Ee)`L5*nX<-Bg%QG;NME_zA%#{|<3SPcC7b^CQTaD#hCMkuhUiC&8V&@!moesAA; zJFl3$Ebt>bU|pC!sD|nT6ONLcoIK@rW=wAP zX$TbjdNnk?wOdFgow-!dT(;bF?mcD(U_$9JMZh+r3V-%%ZZo}A9tO1R?^ z)^deC)F|6P|Fp1CLv_Fzn zd4cqZ&;9){!ooHgmVH^08t1-U8^az&taOo5=q3DdbK%42f}Y>C=mI$b;8%KSrA;1{q~D!$U(Y^kJ~nYosHEwlMxn zG0`{x)=Y+MCU%v>W6TT69!cg3k3TtPYIRAndC0RUAb>XJ{d+ErbkwD;d7>8d_df&t z?L#>D0Sp-t5fRAvC$h;8BicaVCqc8Wiy9h-2_X;47Li=T9AwKs=Rkc!Lr-i+9jG!^ z!gZNDEbdnCPV5~)Ev8XMdh3drSz5U*o0KbI^MJEIK?Du54w^b6VE0H@{+ZoWRQkb0 z0043Qqeu-@qDO)bK-}1q*75lI4+s;mg!mth-wrcfl`JYQh8XF4@YR3VEasf2Bc%M^ zzkk)@OjA=*_^`8xA;821_@XFp|Gw?+ADW!>CE5V6-T6oJClC`Oky6QaZ=I$hy}#n& zx@j&YO|*Fb!otTvxrhm0fwoTY^|()lttkgET%u-tgzMdE4MftH)u1`Xeve;;8y^IV(eaLOB3V(Fi5H|;3f>l*xE zyU!5HKZI|6Hx3*Q|R^Aoq)DlJ21 zWHGKmymrk+f*2=g$jR+iNxA(50qwiM*b4P~TKzmCm2$LxJ2;S~rET5_3Enc+n#gmM zsI(<91Y=ghzS<5rKk~a!5IdZlM2M%zX)7I8Yk0>oYYVx&Y-wim##GnNl-p#tZzpiG z;g>JoxIv958&}SCNJkixQNOa+?;v{^N*lR1*};QJp4cvK7$j(3k%8&47f=OJs-`e*x1&D*Z+_aqvr}ffiiz~>}GU@c3JlOcQHL{vS#zu zlC;osR5Ybc^L^WB4kl$;5Vz!!XGbmVWoe(+E!(yHU%lEx^n{w48li|v@_C7pNsN9` z?B1%9zG2s0VCz~c{!V7mn1Xpg6Vp7;@uL=VIQzGhlwxCENay?~QzQkQmjC1A=$LV@ ziZapKMDwbrqvmO2`izICp#F=kw`pIrKhNiwXVlLk;R~KbjJ7Itfi9iPPj5GMPQGuH#` zLQ^8gaPm%E58K+^*?9=O&DFz0>eSVLX3-KQX<_0_?V0Z#^A3?-yd?h?wd2u0B~uNz z*G7seD%(llmA;z{0VvrcpyR{-6R7%%{I)MaDDVAfIV~IAl4y>2Hvv&cb%GiXB3m6; z)22F4?C~VGeM@!3TUgp`-A=W|_vpHvmIWWSfRdkHi_wo{Xw`sRfrY=_cQHUK(f-TX zS+}OCpzsuSw=Rga)nchp3+Ea#9Rf3cq!Z@!(Jzu{4V9;~wdP)dB7AOY3J4GJ^Sh;~ z<7aoN>4R%zcWFbHR>@W?E0V76f7^R11Dbm@=FZD2C}qHpzTixw=zY55JN{b|Hy=YN z9H97QGBSfQV$4%~=wgY&DfhpQFE8?2{L-uDhiKtAm!3aifH*QV2 z^=KV^u^+=IMC$_Zcm{4~S&zXb51b@o&adT2QU`GoM}N_dv{L2SXF9&&zuR!IWI}{_ z>KF#05`D{{56_JJVAa9=-3*DCh`a}l)~a3>5FFWFc=2ia( zVE68VmZW1mJZVBbW^shNP5O?>uAu5mO0l-a#BN^r30H)(j{*mZMy@qsBh?e$m#_@6k*C=P*>q5fdVUurLmS>Kr!L7j;mY2;aB&5rVTs zLb_+v@T0Hqji7s5>mDmF{QH+S`!CiEGF|X!mv1w9>YbS;LcSeMguJeUY-IU71`gd( z+!FX=3W#?%nbo`d>+~_vVn-paVz`2Y;lFL`FK=h5V_zgIcmb#x* zWIyvXoJhnpPk zvMP=21E#x=iZFs7KX#wUm&Cv_SIZ?zX1AgMP`0yY>x9F%xi%}kOQ1;TEfFSqFH>Mc zi|rW$QjgP)fx#eoacA^fiZz$U9=B#Tu)Ta4M?{|gOicI?2sQXU3!Yo@AzoE1axH*k zut{IPtir>!xLCFV|G$GCYAT`2m7f*ONEAbnv8AUkYff~vkH2T!iU*V!xkp7Y!E@!3 zI|Lj8QU!`p0WtLzP>~{@Uy>Mp=hKFuA4Znj{`=2<4Djav1@Dr$dNt|9n*yJG%PWxh zXMHDSuhqw=Ym(oH*s`*qXsRJ$N=Hx60+$2Chw|~&siycnI7L4o2qAE4$69~I zynML}i5#vRb6wqj&M%Ntaz5A^W9q^sJ~2XsIo5X-F?R5Zlu^D>D%pWCa$(`Sl`m#F z7g#=j4y*}~efjE@l(aO(zp0*AcoGD>h0l$RdvGjHx3wW+3HCei&?F`V7!e!}V2>_Vbqu`TQkfeYRx}9V{H$)}2^oRU`pfdQ9yLCC~8jcv`N%3v7MBcHEhmSlS^-R z6}H1)76UbVNo6p1GW6@|u|5EWF_+P#C5Tm<{QVM_>OO{C`dtt--1+1r{>Ep8} zPYzc6Fno}39Ox_YD!MnL@I&s6)t*hOx$twQUP#B#f;n({rEI*DC^@>5m%CD$iYlfDI#x$X$v$%AhQxok|Dt0gGu(p;~9^zQy$&>`!fzeisl1`HhZV0UcvIZ2Ne-H zc(06cC{)B#H&$+?|Fiw}e}rvx>VDKGJT8Y#Hq(VTm0xhXzQ>G za@zFF%q0*g!BX5x;#I)hh>MiKMG~T<*$TvzGH7;WBy6c?NESi7&R@V>qA+@!2bwLC z3~C7Jf~b+h#M*uMJPq8+oc+uwCYPFfkKiQP&-86uS)3vufaTop-@h#}44ssjxCJGF z9K?1B110}W6cMg>If^SaF$Bssg|?J)kTp>a*Qppz(cfX9h_s8XCgU-2>$_mQBkY z&~FD`_B)aYIt3{yyWz{weZXjThH2+Hv+%`z`&>Ie8K1hUV2hBZ!gUTd+y9xVB2xUA z#Looh7J2+{w|cJ06Y#rJlCnVdu#NC$Wlc@AAXD^jG^h`rrGWVR3@qM@HMu9j$Vrrt z3@|XE7)nh^c^MqW#B}pj@hbJp(T;=X*A69Z;k?JLa&hZkfneh{My}k-*^{1{{W(|p z-`viuKH4epP&fTYWo7$!#_J}x-ru`2e&Qa()v=dsOb17Tt)5g{xz%m6&5ZFl%ibw7F!ur?Qnvlf zz5SGuUj4EI^M>8pqd!5)aUP$;5bxfA_GWp2`N@{lW6$m7vwf zJ{%)QBrxFA6PXUE2Qt#q--TOYjK30Fd11f234)i!AT!`jbD{Fc@@nAwnuE(CA3)I& z&b9tGt_BUO0(%po&~iL30r}pRW4ye1kLW(gdrXxmUeA=DUlDLzpfl;B;8M9b(eYtf z(kc_ZBm$TM#l^pdl8HVl!xY+h=)=-d@#f_C(eMk3l#6>Q7cmS77pF0f;$7|xvd`vOKg`%H2^^SnI(0I@2D6yPk^J6ds zIM67iUSCN}nl^egyS2dfS@5Y#@_WzCbYtJ&&M~6H=SM*K88JzLvp;ggSV!kG7O)&R z)E*ib-YnLrB}wftG_4nMmR4KN_@t{dGt95DKZeVpHRxwy0>;5A>Kkjz2(&Ta z@j1u6WcA#zq}FvI9!{%&hNC`z*>O~?d9o)Qabs=?=QJB> zK?JI?$Hs^x(~~Dp0=d;r|1vIF9y&DHU3?8*&5O!-+hfRu<_v@k^RdqR&LM2U33gSx&#K5sgUVwdR%bpv2&dZA4_{(LSl z44lIj8fJq?w%N-RtO&voIrWpiw>X2~r?{j38|N@^sdxi75U%;bGZH!y`R4#%M)PN=cHLQ7S@4$xKGlWrUKQkr`zbWmL8@G9pAq zBxR38iOeXwh>TJwG^i+&&3kA8y!k&*rH8(2knb9j)<_S}D1N@X0OZd;kQ>RE!bL?96Zg$AA^%HGF|_h8mA$ zI|7{6cz5m#s7X`LtwK%PfzX?4TAJ5>>j5g7$GA1seet~?r(So{vFV-v3=mN6X85(E zHCkheP`;4a=V+3cPd(L8E&jqZC@}d0c3@XyB6_}ZtGtA@eBBf zO+p4aIwfh(K*oSnaeKi2nmJ1LVM~OkZ`1t^UwnDD+zt;{6ct2+0x<#Nf6`+3<)>DTfwUmfE@PKfZJSL(3y!3;vwL z4tdY1(Y;!u=4NI%o;#oPd(DhDfP&ZkP3TtvpX+Ufgy!qP!MSDZXc{d`M$no-AiWun zt2OV9Ypu`xrw=ZM-fdfU(EG3C4)}kelR8Ih=|k=IH6Sohqn;HP`w*Fs1z_CBdYx5~ z1w;{0Jzpq{JrsH$##+Tf;fslmR)Wh0ra7i$*6h)KEMB+)Tw^_-Lnuix(7fLRV-TB{ zLrRHycaM#t!8r~*9^w%qN!YsZ#Q`i6sLF7vDfRr!IL)vAxLBsXiP%CQBY{^Y;YytuHC*H@4xe>n;=5-t(G_O!zt@Wjv&WQ9J^ zD0>J`6R%09$l{R4De!)XeGC{s01(8z|DA)7JaVhe-H}gJ`9{iVih0%FiY$62R;RUd zPHwK5U+?2<_;xz-JGho=zP>0E9d6AH+ykg7Co>2fsug)~9-ei@k00xo?L6ca2Q!=t z%L^Vj*}*8LdV70KxGtBVHmM)QFz-q1G`=F(SS*FpFGrxV5R~2_0dJ-8)YN?0wM1uQ z8dk+q?K3aYBaTi%PLg>v-C!aP`Lvo-q#)C~Dt7B3lBu$q=iXwu@D?%B2LxnR*g zM2}zOVd3ZAs{Uh9Vyl5F;Nja9_%FEuMa(-{s0m~O@*(X@^6&S4`%XJQt!$eyuCSNB z{zcv3;FF6RVR~i;IElC%&D}Wol;R06cju*xJOtx9Ki4zA@*m-+V33+(dp{dsKwlw==$B)9$v@)oi{=rw=RO5)iLDm(Us+lo z0S;e~=J4A&^xnEqW4fE;p?RXYBy21&r6ts^a6Zrpcr0l@C|2XP;l@E0-O!I`k&Q|3 zI_`!BxbTiIVg={I-L#WvMUVB(f&29aC5A1FySMkEZNdUw3|FAQ6u}cvny)hm)4h+1 zqy%%u)IX?8M{t|Q-E0I@F@Oeyl>*TIEe4D3mX`OFr~!sIA~}|O&pzavYBYGbed*t} zrKwHyI~jO*`j_P|1*D~o3oS?USOpvoAmpOtlSMj$@8B6E?bzM?*J%@v%8AEtJeZ06 zhaWj!XvxCK*@8bu4e8T8H0kR-CxNaJOo`8OR8(4Y^@L5wrM65nGn_?U7CJWJj8flZ z-&oFlA>f&O{Fs6&NdLad#+h`N+^Dk(E`wE_<1igKjkCHwLW5Roz1FDz!q}eMqUL#T z{lIFhSs2eZDAJxZpZ%*|RS6c;EInJd_slq3$7+d>=irjQtkI$Y0UhWDaC+0`txasID zY>-0NFVKKpka6_%p*x5eb~!o&pvK8w_(VkoLX))pxg-Ia$sn;jpZTdyL;}`Z({a6t z-=z38af!#uMK{6=hRsM8s}BJ{9wU5=?jC zyU{3kF zx`&EeI&-v2AUaRwI)IQm?(s9APVogUXM|pE1_&$$`6u_izlbq`HQpfN6|Q9n*gxP4 zBCb*EWF68{3)uRezP?*k7%gvOa0+w?tQ(V5)j=zLQsD4kOw#s!7wy#?lb zNzK|x5)IKV@n`XCUche)x9$5tobQ3xZ3@bJfXI)aJh!}mnrLFiGzo6xAWq92FEnmM*I@JUPDY;A8 zCR9%ZH>*9gtbO=UJ3iHZYZ*&@+>HbNw1*#@+PlG_0@nk@fi-Gd9dh2{l8Xd;`eN zw$ai9&L0!AE~45yIT>GIARHDR-g-C8TkrO5ohN?ANOD_k#K}k1e=PAYRCroj3~Q?)CfD&OKxB^%~74iOUmaHo>=?!F|hOIFb=u zDt$baZlE$hYhb7B{ehhvv|7nZlY?R|J9IBydhe14gk)3)p#pTlFwJ=3q`m8dDKV0< zNJ#CIES@@AMG1fzN>PiEyKv!x81nSD2mU)7%PT8KCMNCYi)Nv@*B$fJ=z(gHP`zf30lZX4SF7OIDs` zxo$&&Wv#{2Az%&u@uKFYPDLZIOuaBUWb1|!Urt5|_g$Ox1^U?x?PCQ;W4}Esw;yu9 z?J-5ksrFsGjf2U|!9n{R>^~|FId{QhxA%&lv8UL|ue@SSQTZh6o9qO;E#2y%yLxulPVv@*%BXyiLiSd0x=Sn`v=Q^uP_)@k_ z!66}e{!!Wm!@@y4-T527bxeCLxK|`6rR&mdk+=GBYmeZ=MHZ+3lbN#r z0smC8c0aUy4+cL-=VFLvvi!K8>$-q^qi2~HZ8lo*>o9#<@wFeaD3z&htZBhB zO+W({j$2s*i;dRX`|>XzM|SG5LDwGB!1UEhgJu5SuEH}`lu>D*3U5tTAy8-sXk8p{ za*M(za*TN%7VE#?+ogd5ZR2qY?F=g8FQIC6?E237dt9@TXU0B${^eqKv@Bz-|2&Pb zA#Os z56#l8jtH9mUG_9!Rq(L~5GIz6IPS#Ozs~T_Yy58A40R?JReqIrt0yWoN>|s6|Kg>B zBY_s8xS)B36kHp?3?zQ#9{)ADX3t8B>zO>?;0a({(dn44mq`~9crUuuvHn z1GY)0-qDwNh6v4@k@)do>hOo(Jw3k-zbzA$wOp_<3RfA80+W%SKW|Xd-^gbH#TXYV z(i;&-we_lI1OO7azjjG4|8-s6Rq_!L#{c_>*4?d4P^P{SK9O!9OjvJV^1L-w-Xdn# zz8#E_NY1EcWjL}U=a@ga?G9xC0mi1-_t9a5`mH0sw{y?u%VW$tH*ar7Ap2YM5Bwci z%cd(_Wu}a3YDPK?3iXtGE-y&Kb&pCeZH$);z(F&>$F!K%;@^_t}aJ)5S1>k!*vL zXnLL)SYvShhPyxqE(;fy<^F!JJFPT5e+wF2;!oevaT9&4leyRGif`c;9vt;k_Px*0 znQZZ2`g483EZ3j}4ozxNKDD{o$GTn`Wb7SVwYWT)EWp51@(u?P+{4W%Jax;2Sm{9Y zzc)CgM;miM?ZZ(;T?%CloG(71&M^JZ2JuxG#!oQS=Kv2w8I^ewOvs8~Fg-JaQoG$t z1U*9y442~e@3q)|;QVlRsndne*D5?Qn;hrei`#b}r}R~-ywQNa<7+NKy>({h=@c44 zb5jpDC0ZWWN0@~@_MUa70-&J;5xS7^qg^OW(6j^r!*Ym3nvWE!fAtK0zs-RZ3dJ7C zJDgMBI9fijXCjmIu=~us-z3IaJTvu3DaCQ%Tw-skOaKN3Z}SXA@NWPlTn|!(jHk%jY*>1VXUaiW(Wn6iyPfGUvtgW|cPMylp zQ!Py$NE8R-{&%0{@9(}7#!iMLOanHax(671 zoV5{-BWGY=A`q?~n({hFdlU$93mWd&U;7Pm7%^NDj zuN=XQ_3se43G72G-aX^$Bh?}N+q&N(B{=2_b5xX-&Dt;-)%yBf3fq7F(%P25sD`;- z1LEEoe1qUdeim|JpT%EgSq#TQx3}4A!`^X(Q~pxH!pHjhHF)8v7jaikuA;C$V-vjF z^%$4|28Uw+c;uQk@+AiFMI>` zx=mzzOazheWHY8>D2qG}E?w!l_p#`S^E!}Ul+lzToYKJ$?<*dO>BtB7Uvyu;Uih)~ zV@;vg{aB_V%fQ;&arHbMo@MPn=H_*EJT{XAXC-4);KBu^3UGD3g!cOEwM znu|Sj>Dt)5fs^|Mwfp!1Fq26F`|9y0nSgqLVK8kkulNOM9=TQ9?i{d^?{gzJ`y=;T zZ6WU?ZJ zO4OoC9Ywkp)7f_ZADF9AY_E0Z_Xawe`ntlwuKTcj^IO%J6Y!o#GEmJwkIKm)&p=4I zC|gI+`0?4zC~ElOllT52x-Ba_&flqzCI`BStpo_h)Kn`%3w!_HuL;nGW+6D5#ZPt)3;X)7Nr6U|9<6P zPWk%Os$@%{`b}igVy_v;!lwZLx^VN3S3g7t0Ftv6W{{93ab@b|PQd5K20xP=?RVL; zVVA?0^B!0$57ZpJ`Gm#$b=vOTlK&#AuB6MYteo=SyKr~ZD2Ga;x1Nq?>Mp0`*_?!? ztBzqG@dm=e!gR|ZrPu=XD4@K|MlCgU-u!C0^Pxp<;UO@k#G&YBycg1?@?a^ z6H<2k_}_SleE}Z0--l`sLlFg>;08d%J92zHuKQ4zp%oyVE1F|!qPqquJbhvoYrz>Uv98PHJ_nl7d?(DkEkJ@H#UaAm)pwblgeYOx@%ecTJP%syv!RJxmk)K1Ef*Q z8h$#A_CB9aBsASLY$~>?D2@}JS!wa@;sexvqk5=z1s1e8`;=x-3haeM5xg;-N z9+iIn-e(SQpvQO7ykv%1_%qmwbeFe;x_&We&|^v1ui%qYA?tMhe1CaR^F3tZ&k$By z#9}bM9a9jSN7wgKXwR#e?>_9%#RrS9*zr^^P{6U1!ReKbiYS@0fVuSF+8G3P9D9&v z6XgmD&YaC!;5B}@UCQO*0Q*iz;9B;~U%WWxe>jtwLNRFSe9-SpM-wOXU{#~$v81s{ z=3Ez8-luUkP1`t_VX4#!`)vg1g2(b#8S4)+i@eD`uuY)2JrbWB%5cF`Cud|h4P@*B zuPNC$+-H<+K-Do1Lk1|;^~$hO13;M*iyFVm#Mvh*iU5ESk%`+Yi9X1z_b!`3$Owx0 zZouo(Ck1&E^aNSa=!c*%`8+=EIDVmo-OcTSs~-2hQ;xF@4RzJt@PS{P9Xiadxg}H2 zV`SGs4p{3~?*9`KShHvT#EGSgKaEQ?mKLK&P*$enry$_%UjDO@rz`VxLwE|XVTcM@ zpm@D?>sEUrvK-6y?eyxAcj(gs6ayxZrXJGhH&J9{;u4cO>Emnr zuqAv!a5fpJ@b_;}la1o|LUa@ft}14_xhD&`h%6jic8sk<6_jG<+)Ezm@OQHbD|N|# zDK5S+`*5Y+yRI&8kJ?!LT%3>~EdzJgc({yA_DxE9{7VdZ-@=z1cNceX|HjoCJNQge`#)x9pOuhwB6Tq^q7!8L-M$#BaYoc9AI_zKLRaMEC#yK*)=K7Y}!wDYv zE`TS*i9&LGk#t^V>56=W6&k@S-ro6(D0`Z3MKfyN7EPU)Wu{~d zgfi_W`W#H6AhK2yaTtP~aj!8JXJB|8-NW;hLGSm8Q7c%mz;sj7NyH%l(v&~&5>FBo z=9yx^y~USg719er^X)uTqlK~$c8HB$@;pJsCa07$HSy7!)qB`=d^P-Hhdq+p`D9%n z;Fk;AKwM?XP&Gr%V_EXV37_$=>v!zPGiF{L`zoM%KS(SZniH}r2DS9v@ptHT^dS}6 z8!F6>7(S{4rX04PMTrdf26D&{YuqV-<~VvJ-Qvp;a}sm{)Id zXO53Gn`@W<)f~FG>F|~<1ALak=QpJ*=Nd?0ZQ9IMJ@iXokbK}!N5C5l?4ZgkpMZp-}GpfP$pWpy>2B8WYn+9ISY*fx2yhn{;i^|cXYxC~Q zVySmEaeIU}*rz5{=nE9WuEWY%|1Z=pEh4&~T zkO6i}nIn$e67Y2K?kG5Ix1k~8#bdj?>F@SEep7lIR1%xv=h)MbH{%JB8w%|%$9%9I zh!DKDq)IDv@0o62Oj>V%XFg^im~fuXjUA;Cv~_J5_xGG9jTrvAIrv9^tEft6(N54+ zu3o+HD|wuj-hgfR*krG#c3NIkh78BAUo(5=zO=U7l8D(uEUuPkXOWI$o44JHXj@d- zVes|`=o12%mem0ee5+7{7zgo~k{xFXWBnX3{`XxNgT5rRyMD#RpOU#ZQZ_|mRS9w& zbb*P(<){NCfd3lun&;mhf5XbXS;nPC`zOn)=d{4fml^wWeqWedbm>WNX;dq1a_d?* z)Sy~gn8x_*CFI7kP&g4%31$Ptr~;`-|9ZSUu&LF;XKou57n(8gjbXqjIrek{B{8(K z#?zww!c_#zwRsL+(A*xMIToA7X!f?K%?*i!$3?`GcmR^C@|J_(ba^XR36{5i*`mN2E($6-7Spu?l*2X zH@$rM`{z*ZX@C|mvhFl?;dhNew*Wy{SZJtD88o|(v05eRX?%n);m#K1jRCK3HGt(h%zxCLaKC{4`qHmMD}eWbcs)qlqXV+RR44PaNW>gBCu*_Al{oyDJNYBN+Du z1A;vN+v|>J^q{Yhy*!a}@&jf}^JomUSYw(sL5jpMZN16#S-N1y*WS-u-&B-d8X9Tp z*Pdiqo&W2wFt}TBW%-h~hR9fg&;x(&8iOu&UY8gZ3tO9i|NfbNSj{>pd4e`36AuOf zh>M8j%qz))JUonhfQS*8V>S_m$P#Qh-#Y%l-2^OhKv#vg!`0n@TkDP^`iU{^-#Zo5 z{rQ(aS@rP5{|#>bfYS+VfLg7v{RtL9DS}@D(acy+KKr%<=c0XwgDv3sk_{6s)AM9+ zp+$8+4o3R*z_n8L_vECiJs+6570Di2?U(Mk`=&7`qbO-KVV?+oa2?Ht4f#Jl632zF zUvCf3?Y*OMYg@b^_0y-5PM4~Da^>jQ51c2$u@Y${8ZbuSa-WF7O7y2sR%9_uN=gcG z69Px@1=QN#l5vFzZe$b8SCWf3i!*>LpINc*qIp%#eNDiumoBv!b=6)}o)uatJQb3k z;e!6%E$y#RO+E8j(&Dj#k#n;Jig~=q&;aKEOq)lc_7Wpe@I@$20Oiz%yh= z8G#Rx`GX4$&u-P-C3nip4-$)B*!pyz$4(-Egvys>7%6ElHDTo7@c)kL&=04RU9;0~ zCq#59GIg`R17i6lXXV4rIiY7{6*c2Pyo0hM*D!x8ZbCNVu9s5+k>$DneAl@y<|{LB z>)mp0U+M8#4LeFSK*utMd0*r+wL|ep$zsqF?Tyl*jbQ>xkD{!@F3mSfam(h-{3wx8 za1!&(>(@5`XlT@ZYS4NM)tyJL+3QsK1k(}$ozTA*F9d{aHoTsN{!6>9FD1)=R+Nt~ zWAYHQ$k@(9c>~TaMThGWG#6wC5&kn~GA(lrvMNrVWS%ELAV(cOG3Q}F1+4do7+k?@ zzzwW$5S$)3=btJQMJj%s#~93*Wc4?92EKr=;5UZa5pikUvXf_%dmvP004txG({cMBl0yu#x3vv7M^HO7s znU+2)_dI0ROVqPf0{<6gtJdJ6zWniiO%J9;IO`G~;|6H@?XJ-Vqa^KCQN$DgC6U|D zcjDE{I9ovDF2LDyX?Yo+QvB>e-fe`uN$@gLcF>+YktprzbApi7Do~zB|o<2E9)4J zR`T0vmQ_xsn3`Gj!q}P`inqk6Ha;ALm#E<1Dh#664(%Le5*6*&AD{e)*qfmNTxAv1 zDq<@2x#j1DF37!L6Rw3$wd5eS3Ks)!FcOYGo+x%C|1}8a2+PPkL@i7zi-i`loP-lI zbp}0d*}neAb~oE2Q_&hb6~1Ps*h(hH|NZc!bHe+tdRa48V0;xGn;a}$9$XL}^S+|= zxjt$6wF(^x$uk|mut|3V+fYE3a9+#8U>Y8&4s0#VNqj#>RpsD5Qw;GWpyXD7(0`){ zLWS@YH~yD0O2O&giTw&V;naqoE3sra5^vBc5*-IK=}BM#fLhIMX55fV#`#=9bWj+M z(NzQ!F%;=&ddaE^PFdFsP>3nE-5Yl1L}kSPRaQn#q^EJXi2!UUd-ezls%IC0-2p42 zC}G3A#9bw3>dc-oYB(cUFR>9x6)u9gmyg5JFbRu?(e#0nx;J7sE5()uIRGp(qt%bK zpi=VfxCi9)2DkieME%^N7!^f$VHR#fhdK;F!&w~9EQX`B*7U03--|L<7fKyp`*t}j z965rhZ(07x+0`;P)}X6{XljW%yf9fH8LS#@^!vo14BzV2@OM`paIaGk?ImEQ=WhNM zW-WNDuW^O`{v*`OjVuCUFrxu9L(i1O$a_b^ly?>9ccueymHMTWvuR(Yd1v#Ci+NFp z-^qOe^s96YO>9wy|47J${?e(kT`kUga=qpyzGyD|7x9bwK#~MTbi72v=RRr}SbS;% z9_QPf#2@B!cNz;oFFA?s(F{aG;D+KQ^%D9Hgw_U_zzOQy3rMHnA=%(9nwy*V9EJxW z5yw|MjRCpLo=twGiOJig3SC~bcA5f`o2PNWfaHXOo`qiIdS#_Noo6yUIzkfm?=;BI zl9NIM|La4=#+8{LjGRd|v&{nWe_5EB%dwdYd(3u$t%FsP0hqmWE%{0~fqDjS15ICx z0%LK3quEgG&_Ne3<8hD@y4UuJip6w93#MI!N{S!Y zCw!?4z#ZnRSv%~S^U6@>-^bw>ib6EJ+5XfH#*(n32qXi){DGF1F!<}MpRoW0FT8bY zUiSBiiHi8YlLK$f1Jhn3Dl7UVqT~6qOQSG=Aeoq8I(Fy8r1wdOfQOdj{|}`eH0Z`o zAKzU8e+EpNuc#+`IMbNWb&enhYg{}|p1U{yu_K~+Y*`yL!H=vmu`T)@CJvK@RdMmk;RsZNG|DNAc`fk zXSoF9HIwRg1&J{PuSrQUIQrpfzwgZ*V*+y!2-h|kz1^Fsxp1a!-12%Fg?||w6){+V zRqOYxU9%2ixV|ZMrZ0& zx|v%p4%{rq(o)blfa2)kZWqvNL%YD?v2z|+{zX`}pFVwBkGs;gh55lb8yl$NEV~?= zTIN88lLd=6Q!{=Ti0Lq#hN-N;GbV_DrQduoz=R(Ph3x%E24sSTr(4(5)I=WmR4n4Z z#-@Uhka6wb%9O6z1x@~swMBBVeoy1}=E~F^cAs}8w-eQ62t8-L|H|~vTSiwA+sCVO z0A}3%sb#WZ!v?%;AU%MtU+tPagiDATX4;^M5CBm6+&2&=h%81wG=!8Wb-q6i&=+x6 zslfu|6zPF?4XTwjFH+^-WQ4WUGnur(RTAXR!lxNO2GHfFWUZ^Or29k&I>)W^Xj2prJ;5o)s-5Lr3z(LTGP!Z8W^k2U}Z8jwELo|rSWF6YdINlHn z?OPGObzIWdsMkU!bMT5zDK~@{7rxRLoZ9fVM5uE zzc{1)zg&Q!p)@2pAa55hU(Uu=fJca8TP@XhHw;gR_plPmO7{g!%a7sTF2C@34W?=% zgibTg=oW;tCka2(nRy%yO#~{aOyW`0QbKK61*uA%P=ts5S9@sN@h?X_-yK;vgJgXW zmk4kujTO{ygttE64?z$%$sEB0mYi`q11_&TBn&W=c?+Q{_%lcG2YVVOAUsUOD)rvE zf+r9_DXo5!Rss}9Xpe*#2z;}n^^L?)=6QuL=zC4SfkFvKC*Ayg64k+nf*CzSuyYjE z?6DHSeg#)VxPhCa?+%AakPZkoAPeVM)+*xSz2!n{en`nMNyfqQJ}8gGuMi7ETz)=s z%fO)_W;x7KHBW8}>8t%{gS2jxHrKFAJNeTdeT~&CvC{~^Ik&C^fVY9?K}TFzJwD)) z5Sr}f`41VV&`WkVd_z&8_wh$RDn39w+eUq{m_Y+vQ+V$@0D^SI%Zt=KsTaf2-mhv@ z#DA_unYuQ5TCs>frh^4j3zE-?=-#pR^5hQOa2Z_#N@$9}F=kKw@W{wBm=>CnBL4=5 z_%#BtExOEnepz`RGfRzsrObsmZ?xVIR%;zDt$u%J#5Zn%<(}Q~kT*1Wa zs=F7q1fC0V@1lk`c#y>Y5F7_IR-_^( z?Hg>t0Ke*LcXE(E{jn8n116^eii$hb=QY$%TMiqiyTUOKaAQ_aFQyV$ zUv(ahEhDdYj%ledupUtHsPo<*14ZIKLU@($;z{#6{HO#YOJ48I0^a8aFcj3+R!qqt zW*LP6M;vfugo;ks_W>B#JY@kjbJt=j5n6TU8{GscPZHY<;0c>M!_wmZy+VJinmGit4a7d{1?u!Q^*q*HjMXL)|hLjAr?PK8H>;mjiy#e)YE z;b%gX_e*m9X0Et#X)+RkZWbG#Q^51P2*>t7wwhxOTc(klrx6HB0I8rxJBsqP$8a3> z)3>Tci;HYqV%LX>%fLuPh-mlFCSfuPMxNke^Cq4tvRVp_x)R=3xBnhUHVI#&9dQC4yVX1vyA3lTrGuJaSo+nSpXr@$Lf!8;c#;7DT;8$TiVZTor14BD}Re_>%IFG$o z#Vf<|za3k*whYOa6&G9M%f3I&p72xP&-4POq{LDLHI8PSAT{4=QtCVB^XIidzIrU6 zqa5QgC2NY23+cRabkf&g2;ZqOjP8sR+bZDJbQ%?3?8{9&60fYne1=Ugs}CKJO16=< z+?^l4@6^@+03iI8>j#I1cIp&Xv%_DQ9%k|dJqOUqk_P90P8&GWMF%equfvc-&KH&J zH-L2r#SQCXa#694jE#jM?t|_nr@wM*0Sm)=Y*_jh?J{3>{5+Pd{ZN|E&muwCP`K^1 z1c%0`TLCIX6s2rL!bY?#3)qF+2*#~3$^lZ^9tom^etc;aR`qpf0YO^l?;;SIf9TNHzGBWZ`c8&Tit3bHN@tu9;MZb&i*1<3Mvs+?hdA?hPi zUHun1{+&eS1w4jW7NdEvL#GC3!B9BI4S)T5w(FhW(x0Q`AA{rq89+A#wGDs36X3^5 zMy7cLW)1kJ&QIPkA1*q7?i_ZXuhH>mnEX(tJt>U>ZN1po>lpf5DvC|d&>W!T%|LB4 zZmOGXW^Vo-YcbJ4ot&(J^fU>#qlWNQ(@+E?fBhlV7_`8iKV{!jE#&T>ufW;` zbpd3#NNi}zeL-!7LpGjr2>DAti7%&+#WaeS+`gPWzLBrsRWAsdGG;nHZYz)sSi!adW32?TfhizQ@WiFxYI6cG<=Fej*L5OY(cI+Bq z%>2er&m}Ezp>C~NS#ZkIPKzollL0)Cg%|>n@L`|Xfy+<{qY2hQ_DjG6$vS89=t zgtRJr>po31J2O#-Ve^3U(J1W>R{y!5_kgSq5~S1ko18C9oJf;Tb{FPXV>k!BTngGe zSGWtofG2wb@;pXV6`A<3>m$VXfX4Da8ihO9M@qcE!+4od9dH8DRq$WgP6gtES*#+{ ziIB7Z@v!aYmZ!h8!C{pTUI3jRhOj6PTQKgqJ)R>aCm04;d@c!R|H2yRZY4lR*W9_?#yvdqaRBknJ5_Kdd2U;o;mHQ&w7#r5j3McYKh(LQ49wr#jQU+kG*N%Kxdixy6@8bCS8^{(&6y&@T5_$tq zVZBh@Fd_v7GpA2$1z66=$*4p42l`BnjfrWUl=l8to5+qva2_9e%sx{IV}?XcwYLEp z0fsEkTc)`N%#4gm$ozWMC)^y&&bqurt&)P0)b4vfA-BL`B*o;NsBFmz#Sh5wT&VqD zKrTai*(<+4v6dx5cc?6Bzy2hC>&b^^VU%?BX=%FPYj~2HY#ry0=Nf?evmeIbInIRY zgIOem$z4G)umo$~3n;nJ;Rnz}^_gUdL5aFX5zoF#oYGdw7t`^N^xPP^5Nr><{w+Sp zw!hG?2$mw-ETNhPIZCXj7%V9mh8j8*RyF&96Vis>_(?x(^0o21Fb0Aww$C*7Jv;eH33+B~2>L`DZG?K_pcDkb!+Vt0g zWm~Xj`Q_1_zAtep34;}^gmIzw7|w&F8wvaLPa`ABsP=C#T@#B2)BN*~ANf7K*oKD3 zcRD!$k{Av%m=wG(wz8UQ4h-vlF>jEZBC>U%Us z9|r?bOq5#(7S`>~uheV+^$`OIKx|VT+)UU3c$~4((Tqyc@p~_7C4x);5yn>$IC2+p z3_VU^qcFh7^Lc%Ka2PFVxSh_wuNNHyA74OsMvESb*w2{aV~Jv8cRDT@!@LTkP#&NO zd_Q6fts_VnDm#6CUnM{!t+f@dS2hmVSVb0eEE39X9OuqG@BFju=`OY8t!&P58v@t` z^@?`$Tmx6k>RD6;f*6Hh#*mQ*!+&xK!IS;;<;xi|5}|OA&BkO+6=n%1lN)Epdx&wn zM$CSjn6ViXA{fJh!~6H|yPv&BY@IR7|NlP^=j@Ge2p?+LSs{?DaUjm%WP-$S!pTWa zhkp?~-A|Y}6Gvg_oLE$oH>mTvxF!vp)TQOQq2c^s6O@b;t#qCLh~yxXC&|TCX%Wdf zqmY;e@9OW*%1F{DaKBNG#O*uP%SyrzFh_0B(Xi`o z!a|qq5JQ^pcAP|8fS&mQZk!2clsd7LCl?<4H2v$uqIvW@)PKhyba>It0~TF~?HJcQ zUd0c1{o;DxM~D-QZ!MrdYCngoi-awU=@%hC5+D|L=l@O-ukAfH>M~H#fFMpqx>r13 zTl`F)r9Vv&^T1r85uvt3I7Oie+n*ux_^DfY={#T_EY*=BY9we-vlvXs53CH|8hnjr zDDC=nW#h!L;TC>WsmHmm;WY)-W%UBlv2k|3du|o~5;X~gq(nZMhTw|SybGfnpwOJc zd@&p8g6qlm32Ht|P;BI0^tI_I2Y{TzXX(uNBiH@x?7wII{r$c%pdu2zyImCKR(L9a zk9y9dZOOtY*{i7!K_j1nJnSxM%zM~>#RpTX#Df=kk-+50)FWV}PyzHc`eyU4pD$6R z{?G4Jg97aZnhGe(b;@LAWsBk9mn`GrT;J>}?i;q`zXBf%*K$&5u(4$-?mt<;0WCrI zVznWLqVj?KQvgrMdO3WG5+HGy0T%RFqQq1x-BAOI2lml2;xJ(sTN_#_svPL?)9aaX zAC;7Jd5vRyneB1i6yIF^38FGIYDI5%u(GP4I(&xpA0Md>tT)-?B8KQTN;c7*{D6ry zKb#Uqjn|*rjg3KW7ziSuQm@YXuU>~$3rcRiS+ER}@MhPLO?u+kLPaR?$XF1EJpfz} z@=g_Ymj-uG~RK*O_^Y9s5?mOgoJyBoHN*5UVn1 z1sD1bB*pG;gb<4INZF%iXAp^B z;Zt;y(3{)**B(sMo0cj9v4#~@BtBLb8dZd9GHwDf@-&1BB+>zDCL5K|1%W&idSRgP6eC8#_;jP@Zz0y-_E2qonA8dQ4(- z?3s|`+w>eLs-|p(X+t|-ACen5Iq~aBRocxa&)>4&+&VmmZhL#Bbv$)q$Dt!)W*C08 zNFdL_1xiUzkNMoWbHZAU@JG@yGo#0u&V6}QVlvWp$97(uxaPK(I2+N}#2b&zK-kV_ zNz1_mi@L+lq^@H5856=h*^UT=I})yVWZ}Jq0>L@7 zOxU?d4cqyNMB}|7P-nuP(5=Y{KJ+R4|xyOo9!~LHn!^oMb^^LWPY*h2#|51 zGBmUvaa6LX@e%6bss$#KlbgGd6`!U##H=rdtmi=>c;r5&2Lra zKynEN!Vi8W6%{FzAa=fY|9-u9A&j_yQ*>hZjt|9^YX~L_j6bQXJ^yba$xI=#PU)YIA4$FiSCC-GuNtbbsYpzXz za+7QmF)p#)`0DlRKiJ{1iJKX(D(E+K zR@zc!4x|7;3BZA^YiwK(f?6Y5G6!x`*?y>&Fv3S@5|I{)0lEM3@seld<+Q9qNT=yZ ziHXkv8K9k_0KUeKr*+^Z0kT|!2v51*_e6(xza$-<>rP$#eh;;?Y4$i3D%RFKctSDB z$>HdQd9mgN0+_(Cu#MPaeF2ilK_?6h{vc-(9u>Zt%EgPt1@$~%uw$vdrDY?~u8(Wk z!Y~1GZQ?tH-@Gn74ofS1KY#iZ0HdtEmNnb4^OP2rWIz`mLF@rc&-DB6@Rx(_fp`u$kR{WSj+e|HU_Bw zeVP(Y6&FX#zJ<6GA2}OVh3S7l7naYVSi=k-mXdhR5$JHI#tl?pY>FZ`#_(VUGhShp zMB(x=S{^s6u{2Vn+FA1bMyVj59oe5v5baH6!&TCZ;7)! z+uqu$d5_qDce7(`#E;iSMMc)VA=BN<$XG{J?zb#Qct{T?;IqgG8VF(_1&s|gH8pHZ zSokIc0vlWU5^;qG;7Ce^N`(q3SOv@?;;WCkg6cWIbI&4OBcmoHs6TMRvBKsvsiw#(U0$rD z2@4}31cv$gTlQyfh6r7%sU6%yIK z8?l%McB+jaOVfAyj}+q;lI3qm%ruxuveoo{{J0$u#vE{g9}=Tka6RQhS-ly801{{+ zhW&&v@}H$3Lj=AqB`ZupM~(s0)R_{+eK9dp`=*FLtNPn4EZu^kF9ZqC;iZPrzYxC5 zb<{Q&+FFwn6Ae70FsJHO&CxQNFFMRWrH5>dhULYFS-2BaDpap{QkR z1Y=w%cq$~o)5G`=9*RVESD}Lz!l42%)2mYrLE??et3cc{R4nY{nvI08HV~!K$gf*_ zQ*lNj<6l+w-dbpT^M;X7OO5_k(%1jgo?7;${GjG2HGrDa00*mlfmn8PY12CV{jMK{PXQnG2NN@Frf>mv znO8==gByKbA7D=DFwYrBD&sF=Ipn<@yozUx;R3kWmi0e`j<_LnwT` z`ZfUU3(N0}>W8wjvo~N3MEZ-IGU5X%B@Dk#qJ+db@3z5N!S*M1BpS!-%$`CJhYy!F zUdAdM=t0(~sW|5U@oRH#HsoE*2U;Ai@H@1hYy7q%eckO|Jj0dt*isW{zNMr0j0QR8EUdO&_loT%^NcBTz4asyysH2 zFa>BE>NrMP0XH|IW~U+lAm~V#4~tHX^k7$4Y-0>r3bR>@MSFB|pmGB^H-n1fA;)MP z@^A|<=0AkYNf!5Ec1b)L(v`7h&tW*sXTEoi=%RcM2hlbo2f`|WMec?`gg~X!n$|s2 zC$%n|-cF$%LfP>LQw_@Ats{7x_Pqs32C1kg4$8|<{|i&$#Z-*0v9S>g+_;V(Kkn#$ z2wcCoxHurLMXg@I#~P8|i9aX&D4#V>egoD@7ITx$3pvttCRG|Nok66Zoz(R8({WO8 zKo+7C15SnfV*`IiSgGVZg24nk*4wv!K#eC!mMkDV!o$}f(ra|$UGZ92WB~ExL}y}l zW&qIoY0RofJaby|v#9lpBo)D%H_;&rHG3TKI8e}go^iwh$Ff*X*co7&6qkHZ^FEyI z@xO@QEmlWFV^bhjAa7Un;lNS91{4!;pwWXL;J5zg``-H&?+C#{#OIMtJV+>2G|`ltx;80AAkp;6!D|Q`Vx4~<#u^t zHlPZS1l?}A_a)Hr{8r}eNNtU6T1u$VO8X+h!j9k%;DhBAeyH*FMsn*LU&d_u0m$1Z z-H+k-W=M~3o&Wjs98{y2Ol?OYr=zbQ2wgDfaHQzWT|n_xj*al~-w1G(4vW^J=r7kQ zuvf7al|LugQbapEf-i~$*7(HXt#IKG=8ypG-M(Pg9O_?sK5vk>aw%6@m5wnjQdX)a}e?gam#0C z-|%*-+O3s11}ZN7R;E(Y(AbEXG;~Yhm?*qxYT5uyFWTfB)|<3Dg|L$9HJ-q6q&1MT_`p;?SyESnMF- z0Mw3jjAAI)Po`t<4*nspxHyxksVUh6NOpX(vBjIF+5u=oz9;$kA}}b7elz+H)3^y>7dxn`kCJo)1HFk)@Soh)YxywVo*MTj*0O0*$7M6cx zNxR|Q*~-ZpCm$s6{_2{a+nFz3j8u#v7!ldm0^Zy%K|xy5dEmeVGemS3qfF!z5a2~j z#Zm**5FvOWZ>$Y-us00<4eT=|JQFO=-GayUeSExkTmfaUGR`R^_GHlub^(z0fW-Z< z^9LI%E1@vGN;|w0@23g)hHY~5^^g$Cv16Oi>yP|9AVPc(UC!!jZje-DWoLJR@auhzChS5gs*BaN7O7!<{-HJe&??*5`={1{6wH zc}Lq?TCU;(L-NPlv#uAIy{(WI4)^EeBE0e3j z3X=iUYsYz)D(oET%xadNZfD;>&n;}G;E@4p64|H(OpyVALHY|GkMC%Zj4RxQ&`M`S zp-{HQfDL^n%dV2}RBUL(bT~TsiQ(R@Hb9F>XMhdaj_#r@fwO3{t+B_+{=?IKpgTl> zC`~z%{&jc8U(yl{3UwQ#kpRRq5 zyQ2VQ#fFoA7Khz3kBr<`+)4-obxcy;XC@CZJttZ!>K>xtw z>Z`&e5JwZSQ?m3AG@EJo#RlFrcw-V&=YUMz5N|};n1}^jlGsTPer;6+Z13r*$WQr) zKa1h%L@_$$C~6`}%kNx#^X82e#&h{k2T_)CP?32^O&)k zje~>3IZTD5%;jW3VW&q=kFm6gx1 z4+B_gD}#93(x7oo?n5YL^Q1)}Kq*CTIoG=9^8 z{+0=WyI%EYoS&;br`E%2% zJN*$@FP4`lte~J!E*giB&LQi{M|K_Gdt!J}LiR4YJh(QbV@;^bb#=xXKuFf0AhPXn z0x*stE5p4%Lq$#n8#~OjlW(JF1n!^S?}hFwQU08fLIHXj00+7(!YBm+Ocl0?#OJxcp?}<3d=>T zv8fJGn~FeC&py-O4313nAySu)TPtZwzb{J6ICa~2@79CN^H{hPU4~|pP{juo&!0bk zgG-tYg*)o#Puz=N5-cQCMvyv zfB?tA3%kl{D-P4crCuEE6^_#eWT@c6!hHq?29LnnC5*PRhmQ;1V~s6d7%9$R+V$lU zx1PUr{GvysF0XcSD0@PxW{7g6QqfFq4(FmcKCv0iXU1j?2sf#zaB_t_K7uQNju<#s z03aP8IpR*edvl9DHy@c7pL!Ca;Lr*pUPmO$+5qf`A-18!eI%f(7@MpvAH}$a3VjI& zPG9^FmY;dRHh%wCx8v(RYx#xph`ct8*wzZBQvC#67=OYZt|%L^Y5o)VjGuqOrhgOo za15|Mv^{$kdF9S!Gb~TVewnYo+S=LzVT=Yu(aPD`B42vQi7Z?vI~54wgH(0s4mN~r z*%<}C9Vk7fqJ4Zb$B>W%!YBI>d^oW90YxU+^A6mN)T0DM9G81lp&X{*z>Cz-F0u;R zTOyeUY8!XG*@q3uIM^5jAB7UNgp2c)G-FYn0a>E@Wn z%GN;-Kn9LdA-AJL3i8CK0Ok#I<0!;>ErYz7&pjm2eF>g%xmQ4VxdKAMbcbf`0eDR_ zt$mJjY=T4Kc_%rUYwdFkI~se6>~Hv(AST;TC01AamJTIc=H9)ZtTXsmySjX{)OjG8 z+6rmn=bLopkAFaA2%)wDBVF%XhWOOxgwe|<&COGhIxa5q_t`~iJ<`3R;c^i-$HFQj+RiPl@Ml=b|+`g?LHToLnwgE1^< zS+SrZ@Y=OC@DK8yC?9Zi{P0&PvSgDUQ6^wxA%R{A zkm=~?2=H{c^rN&~WR>9x)DVvzJ%ZF{LyosIiy=_0r6r$-dzr&BCf;MIwX{W{>R@XV z&)AsJZQGPe6(pU^Z?`^1aC38KPV}K31HY{a4`E-ATaiRwUY?nYyywtk%nm+*EC%%Z zGX_X7?W%){q@1ncyWc+fnUU<;|A=`Q-0I-iBD|xVeJO9DJIe|-AW-1b0At^kx$MNf z*tBO)_WBq`{W34gT&utuC5N(Vl&}-)&9DXx{XQL&X(V3vCp6$+Tfwp#?zM>*T;0)D zb6cG347EnZ!qy9S*8uom0=aeSK5s7JS0q|l9?@_b?i<_DV7x$m7Jc_F1HO>+R0^_5 z@}>+XLPNy$pz_KrMSMFIJ{yZF0OgaZx`anZg2XO8Y1X#GmwA@>Bm0Md|NsU;>$7w?kf-Q&X z+1v)GQ}5^GsOKd`^f@wM8fmFCO8cZ7`BrgMZml=eKVB@jcnNF+VS zs0ZP9p9VX$)N2{_260lz$jJBvJnrMqmKjbh_oK9Fm~FALvX*bXiyvSO0yE-NAff_D zq(UAK%n=bGapYAg$DSBEbPfN9xc83h`ThI9-z8f~Rz)Zj4bm_}lLi_Hl|)uTM2MuQ zkfIP-iDZ=#l97y*6e10?G>l|aB+{Xy)6;&x9N=pV7Xq8G-}*v5MaVr67G@ZiHqC{a6QfsSU4L+{>!LURi+KTBNP2TIj@+1a60 z@%?c2QLC=t--H%| z8INz0P^k*_ma#|G281U-51l15udSFHzUe3n(9vU;BI30(ecAvY->0zCU0G(1wX=&v z9@LeZ!EAuS$~|AM0z5GwN*I{9Kikm?nrZi#8dE!DW>>}jn`paFo;Y!zyGhIcx46Lw z9pik-3)b?Iy3xlnvpOpqY+L)5!)EmLA*!Zlm#Z+!VPV0#N3Y@TgM7QT4A$0W=vQ6B z%2dAIg=!+#l4$CQ9Xoe^cru4w0a?yHm9}?y2o>E8CZwtQGS%nu)vF67FX&w# zQ8$-V8gbe9t;?5JotyKzUuG88i%nsTKPycq4$$9y-DtpTT7_V_?OFB>8%$=wOI2(< zIV0I)@nSLbul>&<)?b-xm|0&1WRb+bS{{kJb}gC#LBo<}x_rI$8H8++MC5QNxqCgx znsEg;PUuEPv?a2BU)8HB^`BF)FFHC)v3ytLoRsA%YhAQ^tXlP*>iH5fyvViT+}#!K zO#_{2*ux_)#7`(u>&xmyI&tjuX;I~7a#$5t8i^~kw1}&}cfmGqGo9KXOJ^38z`yeI z^EInDOK&)qXS_FIoFEcW@$ZfmA@k{ccD$I&#$bD-Er2KSQX0`sT!QQ_< z=M3|DG|-MtJv$>G{I_*zNV{`XJrqqR^K}n~0xQm{?lY4Q62hJgaeOxMRBUVjKIrK$ z^jz)i0;u3kCQlAOwDqJOD@LR_T>thLl<^*UE$e(Jq2WDb%*@i2>z5)N>4V!~>VhLw zVyz^2^pC~Ix0WzN{sGESk*WkhBT8(6K5;U~@2mGggUAvVw3&FqfY!S|(K0@JS9#@* zMvkaxdWWvt&6m=1fA=}hZn{OvO)YZUf<;B&a#YQC7(Je8d+_XMrwS!^?NOr+5Lc0w zr}3C10#T~^^z|Fav2dRt8N0cO{1z?8j`&ljI;t$ZWua4BHwToj>g8pPR@RF)Jjuz~ z@Nw0GMT;&|Pw7d%K!%>LtLkOG!_PtCwngz%yHDHZ&trp4y|A&NAlR~eYIBUED-a&& z=9m%X>l@C|040ALtYr&wuoUm;B<&tE6uoFhNi~XoI=9dn;%7|wRSPk{8rr}V7)R8P zk7CB&%>Dyr%1Dck3zrX}jSf0AYAvj&*dCqVTr$-!?CLNI97VvHsPobR6RVL4_t(QT<}!h8BBd44NQ2T_gYOa^pE;cIR zN2{){-|rNDER}LWg>7%|lJ{1VCucCeQo!!a3!XMg!+c925yfXaFm=jl%9J*)x7(a; zxKXf(XvKdl;NR1RG26`51YSo4e4nRNL|dpbD;J%uB06}ML;BB|utE z7ecf`l@p%jn_O)x*42tgu z8O*{E+biYIJ)Brtx8`^(S>kP@1Hvb_>cb-w+(ggL&mObb)3cnTR*Z^fbSvBPMbDxk zfXpYK6i+;&u$_UW{nSrhc{H=~QJw5>*YBmJcf|}xWlEqPgOnXg6d5i)Jo4>L;iu&A zR$r}nBGU89_SE_NGANgL3LKq=jvcEa5t0ek=sQjWQLSFsNkfkSIDlHogxbsBBqw72 zfmEbQkTSHP&}FWgW3;@dubQ!Uw%K|XBoTY91s=*}s{Z`)#fx{eDN7nRnIAfsHn}1& zZ)L6QPuHQdTAP^;P_Xx8_VKj1XX>@@olhjV&z&2{GU&%bV*Lp+TvR7Zmv-W!Zp)ZA z%0hE|NJxkfIvhE2q8e3zF4`^_1k0|gNgQRGgJ`g^bJ*FP z{&RgfTe=uM*WN(MU3b_p6F~7AhPmf2zMjTzsH&mS7Kg`~OU)RUh4g{Hn+xNU?C%w1 z&>pI-Lx+I*m+s)+Dw`K8^|*3snxQ|*a|WY^s&@ZPJr!~E=q~(0$H2V{3NheMgj|Q) z5d&_}V9If92=xsrnzI|5sDQ;2A|#0gQ+iWug>qi3O7M#mjW1u>WPD?FE0DQXv8xaC zW~_j96>}2jVs{e;i-5f8oxeKRi{6M${vr!Td0=yLvOqcs6r|4m z^g89jqg-1{3VG=(%Q`mx_42rWQQp#8b8>aB0Dys&M+X~wc=|QmkCB(g-Y;9?_d_-y zPo@d=PE_GWqH95OLjcH}#;enC|)m2E4kqb~DL6E{+nW zy0nLW*oNEOjs9A1{HCcUv#WX?V+=sC_c)e@qkvph#=Vq%)m&#wLU<}T%{Jn7}6T$SQn_*8VE zFZm~fpa168x7xI+#pzbaun-zF82xO6eJ4W{8YX1DdZmo4f<3n2WuNQikKaqPKkkcQ1r(Lb+fW&~~^} z5;5RZTHDak2o7Zv12FJAX&d%wf~6I5b@jA0>}C_Eb}53zv47XwoBw-#|ZOcyw>3L#2r7595PS2h`s*o@W>LrDI6A#4jI%% z9JeSF+6t82>p&)*JP2W#z)r7UZy0lXYkeJI6@rX1F_B_-vS7SWER`p`R2fTxIkbU5 zv{#qE?Lfk3C%pLe8|Dme&?sQoY$T%q%A!1e%`ml`MR=>ESp6f&h!_DQ*L!3DT7}}J z*UAlG&sFhIp`PXS;en0BS)@i={tO>BDW)it8nMZlPM=>H?=>L^4S+H zO2u2Suu@88VN(Y}m)cu=lOgo~rXI5j6P)LKD`LLIgoO*$p>}dMoF0ZVNubISw|VoV z=>!pO-_6hOhUfC#XRG42XOxutmt-;VxZRma>@R|X0*Q6wF1~4|ppe2=uy%J$$L`@9 z6KvR*1QClH@2+B3gC3@zyEA{+;|gJ3cNEL(LVGcwPw148k5#LO?s;<|XWW+_n~@or zt91c71|HE_tUXyOnU(eaW+5#T*Dh zT1NHh+`j#p6sj7o_7*;!+Gnr6BLwVPtoaq&xqbq$xU z96lm@B3?@G@MY6|r~t3!?xsr@IZN-hS(@p&-H`|nmzLLyi-Buh9P2&Bu;%?P8vxL} zE=}0ZQmM`6lBLGD7Z(>h)c?%3?2}6C*qb+e;}3#@=SGlSoJU&$X9M#78rqGXu`dE( zPl6tp9OgJdT)>;qj0{_nKZqj6@#zcY{?-+}l+aw9SR;-wxt4P`zo7lHso-3ZS5Q#f zQ-vCP`pdT)Am|O1leldQE*EFD9G|PBkKVc>_)daw{*tv*wuxfFbXkZ zT3@WxfIN*VnsjLCI}xg8OZ-%3RY7etP52`D@rV}MVhFp-$?E3j7JwOU9_9Mxj0xM` zO`2SyUTf@;;5T-11rKo6#$QJMjnN9e4q6<1WK7MS=(Tn1v9JO$& z4%3t+w>NC0ww97`(|Qc}aEa6qDdN11{C>-K?qd`HY0W3_G)$6L4d1=J{q0F_tJ-^1 z52&A)8J*uWnhKvPXyk@p+C|b{G}xTP<+PZFu9Xv9S^BuM!&#$DOP8iQ-U2}=q_wo? z?UbF}&9?jXcStjgxlzD4HvqdJPD7zt9Xxn&_vJLV83G9%-${MS;cXlgsv`-BZElW= z83VHn?CewL=(ccS8zfT9t0?E$gVmRoEPvZT?>%})u>9R;BYjPkyFc8rmP+Ns$&-%j zZZ}iyp>q%8wWTD}rcW0;G5D~y)0NZN4fB^=K2h>lC@VPOFJiWk2+Z($ljQA%lAb>2 zyv!H-8L1}M(|>(yfdWZ&ha>ug*K*SNsc#kZA=_Mfwp`*-UpKpk>m>#{NRn?#S>Gtw z|J`9uA=)M3@5VONmpx`P#}rp-82Lh|pD@X_LbUg^u&|9}KKW*FdxFM*l$7)ItWwSp zgREP(uKbwATXB?QeUn^F|m@<0};)t%MI2$kCMO)IC;L>CCFg3?4U^g ztXVWUTK)WhEP0rVX2pS zdwt2951&74?ysT|KeYA;I{obTql5Anv74lp2zh?ZPImg3wW(*%HF^f?`u(m}e()Nt zc8A=R#9g!rsKX(i?Frqimo)Pc)SK^L;VdGM=~|UYhefQd8)q|P+MIHmOHa#|4{ulsc+lJbsMer zgw}OQW5WWf>ebiGCGR)MW!J*9*W}tZ6m_^;RFvXalX?ICv~@95*ux~+dU}_#t456; z4H5#F@FtBtc{sVP-$Y&eh@nX^KYEf$phCXu*E{}oP5b-p=8|$mf^K2M5Z2}hVpP$6 zDRo~b$@AyW-N_-F2PiWMc2LTV|48JRznRH*xV8!*OBm~%Sr#LT4Oy%+mL_w0#el_jTg8QW5#2a*E;z}uIaPpG1q%_0)M z4<9+A+G9sTxM=UD51Ghk=_Lt3UItzMl<~5XJ20UuYsxGrn*~>dT68OO+C`b>n%f^3 zN(6PFwKE5o1~hrbuVdkv-m90YtmD{ak>i=q#ibg!S~19Akgu<=B9mo>3gBx=4GuOl z3cwm7WS7qYvPq)g6T}ZytO?Qrazr*GM<(=HfzoUO1wWsW1GNB6#Lu4+33R{*$Cd*; zQIsAlvC;q*sEruWlbQGb2>$S1530gbumS=2mC_bkPM&OmP6ciF+3@gGi+`J)=U8Tm z%g3&M7z56mfBG9|f!3P~w0BHxWCmH0TSc6G7FtmK!&2MB{^|9-J0e^y|~JR>EYMz2JM(iS<;!3f&*i96D?2Zu#1M zsQcI{J*O4nSb6enT5eWWJN(;*XPuuZZZNg%uc087nQ8oTYeP+qvFyjhh-6%NB6eJe z)cNup0g%jRH%82Oma25Z<9R{BxtgX6D~3c!z};v=(nDBvgj0xa-HvPDgQI zwO5fwn5=L3UZZy9%FP36!H5Lu?6r9c#RDy6;cqETRfYdbox_wbLoZPh17u1YwfFc6Asr@CZs4Jle+FRv=uzD{a zzRUl7__EKsk+zd2-3JmDbmQ0OMMV#&IANa#q*Ng}_O-G9B+2^AwYC6603+$5qB0qI z_Tc_l5rnb!>0Eg!#8wETRcmKV+}?=T00dDqrpu3luA$WGfb!?M%N_%j)wh?w;)zpR z-A=Z{z}oOTXak1%H?BMH@~izQ)ycDwSO2dwB4MY3FT0SKbeFo30(mSAsrLS=$dm7> zHcYn~TW%2ug=*{8f36B$^ki$50kwiQpaOpK`Xf3{Op;lRPOOKs6O{ULIZQ3hG(MU) zqkr1W&f+D=Ixe)%^D6G(8Kuuoh~uYG@``~QD7NdOK}Mdck}&i5P^%j^0_G30pCVUX z*81t$f(=LiKz#w7ngAQ8*m9C`D$)pMZa8|>VD{?U>eGioGmH*eAFkkQY8l5BYXy1A zYX(K2tNSxNvaPlA`x5=gp@RqC<-Q4_UhS{HzklC(^QQ6ElgXB>wqUuyh&DR}G$xi{ z8}Co9x9PEk67ZLfYpNJW{C(qc{_Q&#N&HAerm@_1zcp)yUofKi!G`_oRxW0liYB|F zKW(%roy62Sp>ISA9|z&MK~q~iWPWU5B$>W$uhsk$rq(MTk0$-g^Ja$Y94CS9q&ve_nV%5l@nwp!D3(@{mW8cUctjn)lGUr#Or#at3Lu;-U zX)K%?fV=Cqn)@?A=Nf`LEG@!qBVdSzh6e8r5!m;%?bJ$)?cv_}7?x)isBJ=u14tg3 z@|}*6hiSLZe7@NHZ3+!-Le+1Orf9ltuhW29;dLV)VSMp8oTI&s*2#D1@KZw#JarM4 ze&c_*GA{0~uUpNldF?$<&CW%8`d0)%BzR5${7$h&N`ra1E#Ty5H3#1Nd!TrO|Ew1C z(A^48&%b@`Jy*5*`)!AUg^!{G$&M^eqqywOb|0}eNPMIKg$B(Nr%v@x>vR6LlYizP z%+JR-Jw(T#8r1F-YIdB&^cM1?_x?F{@LL^JPk#`k%-18Bw@YOE>?eV&o=DnZEdlDx zoHfg2#*CgPPoCu9{`cLO{nK7WSyH*Y4n?Qf=Yt~DHIOWWn+3!6QjI`kxycc5}VpuOFlf^ zTfn7D-m@p*-l-TnxPyxEMg@jVkn(1N-cJBz|51uNI`*Il+e%TFPIfDsT@QmP2S0J5 zSWb1M%>b@a6Av5)F~E{+75YXYgxV_po(7NOPkMsWS_Ex4-JG2UjrgTvVlrs?TMH**Ci5PGf_d=2v}mQ$Wk#@n_x=mdoXd zS|wI&Mc|FX77atg?xZV7Ng#VBeEv<+K>)?EnwFN$lFiXKCj2w#7%X7RZ6gtGgR)CD z=cMGfo3k%UNg6?fefl_?VM4z*`j#t~7;!zbyX{UDowEk0L69BJQFzR(ROsU={YoIaE8n zN!xhSwUhlmp(@82=XKiN%nY}D9|oG!qd*?TfyZ?(RKg=DsWf+T#V811eeX3taOY5x zD-RUXoHsRP9STF)^GubyTIF704)nBjE_vD7xqp2u>OY;mitH{&XW!cCGrGPH*}Byo z7s=DSJi(|4oQWM?m?H5DB<@kne$9Mhv>xJbnP1%#`=dK4m8|r>)!k%W`qmX4qXRswV>o=L$-)_6%_-r($8`li>dR}>@+?BwB&-01n%!Q zcI>Su<%1!_QM1xQ_}*TGi`r%AryH>M?I=*MEPbhfU`j{>uUxs}=IN>RBDZeC+^~ZA zISa$zfP*VaAWIxQjsRN?lPpD1m^`{3&61L2`6?fubI+=9Z>_tK@Q^&9sR=LGT?{7C z>3!VTyfrAOor=Q|`{~mcNM5kLX&Lq5$k;fWOXTUZ{C`!+-3x6jEl(FTy?p)p=2frD zjv~C^rYpAB7a-5;4$ag)|7^pa_`d$X0|#qq&G_SE@8B?xnt#uR-U^kKl}i!qO!vP) zV&e;X!z%5QJhp;Uc2wSlMjIiu_mPZMc+1X|Y`Mg1Ed+*{Pq*QtU<(RL9+zWO$>rQ} zf5XuAkf6!GJbL@~$Y4!Pejn&;3~|3l?x!odL)$!h`t)Mnx=ymPvygD`qQJBZJv?T; zuNNPIUi93Pd9TR3Bs_dp)KLr0s;Hdg62qQ}a^aCJx!^ijNu94IUZGu*lK>|ED_Gt> z#4XJZBbnx(JLKkg1dAq9KKw#IH-G+oZk!5g40sY_4ux?|Kc6e#D#kX=7yS73HGAuk zUvK^bq+cYrM6(J$WFB}Ej*l~Y&Nssjjru1oSjF=smMxpT-Sp{Eo<^WB!ZUTLVC<+- zN_-XpQL;0=SI$MADndzlAxEcENK}c^*-QyV%umZh!#)zB@F#F+`T`YFPB0j`^KRa| z9=v|-{CRCcDh4194HbF_L4CWFv%~|@r9_Q46V_+2K-Q+x0iyNf-e-g_9X6f=b*?WEMGi&WY-D`9vf`Pv16)eOJdKT-$^V^ zEY*@w7b1ol=JPq<`oX)xl$9~!b?D;afAvyQ5|%=TzxzQZdAV%Elbmp+ly#{ag@1I| zu*id+rIgdZNrQW@+}ZAr+c7`slO*ufMQG~lPyJ@KiXu|oHby(@epO{9hvJ#=rCi{|CPJ#Lk5P6G z`?Y4H(ryD|Yxa}5F#g`*ttCPZd1ipCb`PA8GNGZ3!z;jf+^~jvhl{((a*eVsOTKbN z(=TfbNBsG~l(e`W4K0>2Q>NDi4jARw+%x$+9DuOGrF^GBulx34GFLatMo?rei{{T4 zA~FY`?BblN&oMeZcKDu)2S><4(U}c?*Iiwb%!9d^WBSbar&6iU?>jE7b~82^w`{Z& z7%b(qi%5VH3s_x7asjRzo%K9k|`{;p-vtmAQd3k(M$5o1!cm)1!CqunN~(Zm}l@ z>|fXXy#=~(?^kXBot)$49qqPW~5jA1-r zppc^T2cMJdZT9~%=azD-%a&vQ3ux zf2%T_;Ep6GjJkE0B$47Os_+1+j#hW5`lctW%2^WTM-g`7GcMQXiu4m6n-A71`f_%) z2|y~Dbgvv0;QLIY!Zp3WBM2VaQlAcdweCS%x!yCYe7!VZ!98k)EuwiyU61PDjk+pz zvV}$P42|Aylcv1>;=S_b&6_qEer&U@N6vePosx0W$<6?b9P4Vt4whQ3Dbd>JK50=- z#&c#7Q$sz<5OQtd14$^?day2SXwO`3Onlm+-M51WzOMHU+bWef=i`&qDwR>*K|OO( zim!Wc69~#MW-|F!H;cuSnKps-T~RP=#Qbe<%0|upwxJOFSn(pkC|4EV8gt>vtWleC z4RSK3`SHFE@`5tMyj*sN@z*K)e_H zwhoDijKsUIv)ErEvXzvT)!2-YZM+H9TVVCAh(p$Axc<#V&WYokifp>2O$mvKE_0h; z$Xy$-^n3|Z=YyWqpKc+itB*rcW zq7F(bkM`#$TpN-Oe@t3$|Lw<#J$KgR!Q`7bJb-_4dz#KCNR&*a& zxnLKvpTf_LnctrdoIQH-o+IZao3r;`n0>PiJEH3m*aX*?PCIKBx6+l4_&Mjmun?ki zQsa(~el@;%_QBX`gF}C+w+mIvON`CzqxGwH$-IekY>sE{3$SeQoo4PNhvQf zHs@K$M;!lo-17U8hNe=l?>P(BzKqu%cp!Jwh9^^Q<=$dqiqX`V_HuHW=(wUsa!4h{ zee9+>ZeX9^jbWc_A)x`qO#Za&e^OLfsK(Hay9PQ|N7sMDcUXJ>%qExEYmY5|6&7SX zA3gCDI(!A%A?>xZwd?8vN9UY&Rz9+RxaRL=9yRs#i*g2J-o5|ly(&)hf`Woau0NTV zhx7Jg*|r~J_OyQ5T~Z%DecH5s0|y2tx7HjqXj`(*OqH^!Wm3g@+24=U?Co!}(%(a; z?evP4zC1uM8UIv>bQmHXu5eo+Si7C8>l4Kz9v#6`gi>qYoTe`8Is}^@vum!@cD~vP ze}j-)QIbp0HK|jdFg~hSMuPX|Y{C4pZ%H2$%e6%$sn6E(k^n;0 zenW@$@FlpsRS#{qHxN{Jpwx$PPRW~Aqu9aGvomS}P@Y@0TT)gl$(l`#fv0>H?%^wS zg7^lW=#QtFLTX_~UpKGLhexUo_wCeQEnxHlVPX`#GROPf(iI|@iGJ0MRqpt6|h#&t=js?>QNAT@8# zDGSx0Z;>Af#Jh8N=rv|;?~abP#B!X)nY$g!u#_=w{$59hj-438%^alj__psZG)SX5 zrXt>}z=3h%`0>p!srr9S*uW3%^_n<#Vl%&MP87?0U!3)pzP{IARG?2@TD|n=pYbAN ztbQ)HF8}n}HE5KQvd!9cSwC+5+Y$sq8JafBmg(RRke}6uP?V&7jD$uIQJVC%-zN<~ zm0x<(TwSLCj9d6mph3~T*|v;G&em!<&+|6iZm2<;VfcB>%~cQ3LMoTf68(iI~opMQEr&6Y2=ci)GS^I7}%?u|gYUwx%W zk_GK#1w*^1_Uq|TBh{mSWg#|A7l_0PW&@*h`!*JZ?KJzrH(CC~`A zE0L@WOozDi9xZGQ9XUGAljkzx>`1i>-kiHAgUGb5949l0$R?3Bh>ZyMeCxc)n5gdKQ*;wef_p~M07&ePOOmg!yF zvOzP*u3hX(#~Fh<2|+8zxKceWfKa#`tK=D=2S}bU+cSIbU^@qeQyx9Ues-lT1@4x= z^(~90e4%Juv3m8=F@ephm`dYfpU8A<{l7B;M&;vM_8apBF-fBSgWzGbZWPri+rsW; z<>ZJ;s|#Qc))6KcC_(ays6N5PT3J1GjND=aGA&GUa9aH^?6aw&ToLnslHiUU?d__5 zFkhA^T9KPzX=7u?x#+fd@itlwcP4|J^M55EB*ZWhfSc4!Eq#LIxmb6h96;oQ4lC9h z{OHfk1gtW}&j2<=Q{0+;SztW;M1^OA^P8ZcAW^OhFBBg}wBqyTZN@v+h6nH55Zm?Z zM++qjiYM-x$arhhrj76w(d#NtQ_e7P7+m6d)|e=g`@X z9kyuJo(s6<+UMU%bIZ=c)o9z^?&|uubj+mr;-kE zdw0{*s3yj@RF-GzI`}g?IOu@#5c@)VF`Os$`HoUK>5aM8o z8=Bz3gPjIQs18~qRg+E!m6$tkUS6m|lm5dePbRRdpR! zcu*8KclTDKMqPJ|I!41u?ID}_EH4jV(7LsgykFb1H?YYtrm|PBjz}Qs7lp?e(Y5oA z?5VS6ZHH3IFDx{jJzE91&1fZ+CK+BY+{SIr8;;9yoCqG_c!`LLTJU)*_927lA$(&Y z27U4*WXqOT@Yt>8wm#RM6_EQtZK8#RDi{S_XE1Cfi0p$D+vt7!gr6$Vcjd_5&{RwlsL4VQ_U#vzXs%-2O920VDx<8Sh;EKoSF!sLdetc{yY% zg=!17^+nIvFUZ)*>EOpv86>WpJ!|de#G(7CveK~O6`zZX)J3t_ZhTs5sz}lz4RL9g z**1ytrsfUZ6|4`HfBQBCw5OfqLlL?_Zv@$qKalmRp%othma7V-o0!Upb$`&t2lId= z6BkWw!L0wLP;HGR*Eb9Gf+g_6B#^+FxdtE(ZZ|+z^{5kL>e)d|u@pPk$PL;X!srwY zxYUo%UW+|EA|c$4c-`RY>7h=IF(5=jjdJ*$U(dZKQLtKZWX$?*%a) zb0k^x@y?Amuv*SX{4}47#U(s&-4P|B@+5NcCUWt8=O2cF9;~CYY~Lib9P04v>Xatt zyw=0NSeGh#jW;lu_USTRgy$tAURVsrSTVA9j2|aW7DzFc2wB@3wYA=QG&J8gDk~{Pg5y=6P#W*=w#Vy??_KWO7E-&1(@vrYUTRR2;G9uIC0 zoM_)NnOaWlyNn1j0%8}=|Fq`+M{JBbR+jH#G1A;|_v|L@W3Dy0mn z+dxR0aGaxP5pj^LXcHbEF^HX0rxki%F&sDe{QNHW1#E|dT5@#JJDvyg(UJc}=1O!? zA*w%=mcU>LSctY#%m+i49>*gNJTG!z5k&0bNkwg;=fQOyMnn{1=sTpdky9c9{Dc}; z43_}C%K$)mCKRPPKZu4X<4<^aw<3OJ{|V+r#3!SGj3!#1vsQqIF<00?%bj-~ym?6< zj)!NGIwS~J3^@zHMS*l4YG~$ApKJm8M+$SmfY#(ba$8@skWPUpn%2{fsMVqe79cU_f;lg? zWhG5w_Syo6RWp26bjjcKG38Hif+v;m-HeRjiA9=#f!ttc^YcBnJXLB~lgs16=GBQJ zzJk9`ya=YPATc*F3B>)-{&7NT>S4bhk4IDhRty+Ed>`9vo|5ml6^lgXSW)5e#yG?y z>Xaioqc$}gZQrq@Kii1uqKaKip^?brxN?Svk{fchZb$(ZnpdsWS@eKA!(1faX~qz=;Q@>miL>zT1e0dce@3yS!eo z2OTH~=0nVFyslr1eApw;uva>SXnTp6C=sY%>oVKK#%2e^us)WQ=ca=@o2ZHj)Uw^p7A00Ln|qC^~sJzM-4- zhFG@QS(ob3*=Lq889~xd(B8HOp}C|3IM0*zZnFM+m)2R*kH`nV^y^Q|*Jb1^;`5rbx zt|2P0q^v7!?9u^5q=eRZ>R5~$Gv*L{kURy1gOih{U1Um13ilR`sc$V=Tj~-{qyZdh z%dSom3qz8Hr1c@D!qH)Bw-H<jTS~7?+7VdzgwbAhFDhk@ulW0GStEhXnCMj*gQKe3C#BOF zG`v@&y+AXFs9L!H7+Y;WbPZ4e-5dIlRuBfKCnD8wR`77^T%FNZf-RyN4+*tLEPbZ< zTclUOUM7ilS$XnB;RAp!+mhMyAL~a$^Y8*vAPoH?2AUcznBnrN< zRU?fGNQgX za~_wj(Df=dLS}y3qRkUt;ZFGo+!N#m1`XRy63D&YZ#6>CPj`0CSz9;J*|>Yd8oByb zGC@7hgF3^Sn$4blYx?}Z8iIWhvIGi7ZpT>RkOWR(C~OA=OIyj;Mg_*2dsBG4InEB1o?O7x*+>@PV{aUcdPKb2t|b#h6HNQ?PVJ-<7gM)12fOI z-MeSnh)GOm{bcZzFRxQNvlXGioBt$ndBURAq@}&N;nR_`{rA_Dl9_YSq@$ozj3n6BeI;PGq7>h!H{^?wm9@19*F{nM`*%&8u~zMI zF<-BYJ}1nXCRzk?MD9s1#jzwu!4^a#$%UwCZrVUp`8yc%=&>7yQ>`LF%2$6_!>18M z5!jaewcR^xJog^si->zH%oM9XMOb>^q7H>DPRFt+>SeAVtC{Jgn?!gC<}~VCuiDsI zK$gSMe|J*S3#xoTQLPNmcaPf^?R}OO#i+mWy0NZPr#>&!8gsDqvCMC;3<(%m5H_RT zrFDl;z1(l0i;b&2mHF*=dhT&;)uZ8;SB5{M{J#*m1s>-Os|ZXDb)IJ3|ICKk9sS(hxl)r36Rew* zGvIU+P5!(@{{-^4-mW{Y>%P{dl?#ts*XXuIBj2)*I+?4_ot){KK)(pnBdU#s!JLPF-gi=MgizV2J zr+9|`yb$Ev+&Zf1#@xDGuXwvxtwcM;qNUa9B;a5o{JKBUDaY6${UdfkYEvHF!NTqF z7l$A0HRnycCAURt4FQ!rRd{Cl>FU~jxny9zA+e;F(-3mw9BE40QlB!(!(@lcP(rPt zbd5Pbus5#j6qNi+e?4w5;UwcqiQ&TEy;qvNx53hZzelFp_kho;N}RSmhPZ5_uoOX> z<{Vo>eIR;Dz);ZER@J^Y+x7dcR6u30^3dNfw$~lhJo9i_gvqvsfJNwf`STi+TuYEn zGy%q}_nOM*8bF{1pZ@@N&BXXl27nk-6`8l~W~T=1?|5xc{jZL@`la1^K}J04u=T^< z{w57oRaN>;>y|f%7bL%WywvDZ-k&u>UnYnbAu|iMp`38L8-JxYt_W!fkFP37EXc_+ z?PufnXBrs4$vkZ8F;o~e8BHj>kzxZ9aw847l&}%=yC2l7{n``R3}&4Ez$=S;(XKB- zIeF#eIwOHB1I9C5-WcRK?$@QO24C$Xz1qob-9nxe5S%o2-p5adQroZ^#fB*aj$+@| znBqCEKgawe%+UaX%$SroCeD2J$>>^B9EK@Ariruj%~^T{!R$T-1>GSM#9<6<6OJ5( zBEBO)n)Fe7#3kwV zO|+}PTd0Y;&nglYvKcpeOs^OtK>|mmC>mC^Dk&czyKkhM0U-BEl=*2Pq1ST|Gq(UP^yR`+S}}f5!s# zC{NvR&%L&D=G@M>a5w(!*$$FTX8U}=(%MQ;VfR3Y)~foYv?>gii9w1$){a*rlkWx9mMlXi^lUC z{r+U5z!7*WFpwHfftYG;e<{j1%H4TSlH#uny|(O1?1I=g!`Cxv_MG~je#oAcf=><+*Xo3RK0^ND^s1uUoenHhb zW<>okzLvscZp;Gr-`{S2m&s0_U2yE|+3eq7*XE;?++&0kT{a_g@z@8E>g1E}l>+> z03)MRt0G$)oBps~oc3$hsFQMP`dmnOWhBg%)W{v@kV09%|#G>jiS7w_uJ zf*U}ZgV#*@m`X%7QpNxjZwL75>Fc-t)w*57(bC~asdn$%H=$jF%Lk?zn@Hr5VmUVA zJ^#>5P)YHC1GHMOv;#{n=H)qLF798iLiZ5Czo*sYWM^lQ$)+TZ(*;vYf1UcQe6xR0 z1iON~uJwM-K-Q?t?2Se|e=>>*2_(G9@%$pH zGGjXiKV_U^Fd|zXy}6i(!TN@me1Fk}wbhx6Adx^!ieNa28+pl(iuF+Kh~YJNJ}R|k z(-x#5hngUZ1+)tzDi8rmT*e$wRZo8XMn2e~EuX-A;zTo^cGAn=-E`?85tbqn`lNoR zRy->%?!*2m#Ehs0+i?DimQS=IVhIE2E?l@XulYr)uf8ZYDC9)k4~L>DPbx*sE| zyXF228H1-{hJse1b_=w(Gy(wl6ce;vAQu5BXa(*X9lZ_edsxUrWU0aEQh-zEriYXw zkpSQnLF$|ik4F@P&?%+Q<>I4zH3p5wnSgsq8UR!rl)%`5VABF3=a&tg`tWQZOE|I~q>gXbW4wa$- z2W0Lp^Fj+O0=It?fP9Zt!j2-cq8NtRp0qQh2kn8@#Y8ZQlmoZQbu#dh1k`F-Q4-qc7|iW0f(uvNOXW~ z01$2B>^tlHyV8jpEqr$9XGK6^pDlZr$sN@8HI;s)FWoh53 z)6%#x$L!XX_VMih1=m=%^?m?dFd^SE0FXUEAH#3-vUV4Go|3h;7Q2snyk1JC(KD;%uw4EtJJ_<>F75OWb1xLM*J+T5a!B0 za~tKu$-tKB_q;=1GLyCrYVR5;?n)R`vltpNdbBdf?!}Z8MoPKH)xsA~-ZD|;UnKq? zR%vhhF$OGk5wpy}>b+{!G3EdW1%Z>()rPctJExGp1SHZc42CrO@(5bT4iK;HaQreY zi|S+;4nCcj*iAW?p;f28oli_O=Qmlv*sVl$OL!=A1zcUq9Gs$w^%b9t z7(V#R&FtfVozBxk;12ogcZBJHA)8RB;=T}S4IXe4ZmD+Bz@T^R%BJN?y?Xula&(BM zrq}{O)I~BOZ-Jv@#=EfO(|&(`wx_Y~uAF=Ku9TQ3=Hp{1CWdg`sXdwR(2cR^C_V2$ zn6YT`wSD1gNFvZShymz9o;1^+y^*N7iG+Z#=kXOgju~@v;X@dC{m4$CbzffY8D{sZ zrhKBPnb^8{mMuVuiJ)L^@s1v|45!VWEep>sR4G7nAofoS3Pc#&;lqcOwQo~Bm@=6L z;Pn`@dB%(x!)|KxE_;wY^;0_7hnSzm-o{>Giv3Aw^YLlhHeR}7+N{jz1KVW+HT*eW?Vv^3_5z7EA&*lS8s z@CZ)_SB58APMS3TjiBB3?Q^`m;Ka70;`wRQMsGQx4%q0DkD2p@?i~dLfd|q11|1m3 zQL=21eU;Ebeb~g&pt~S@uloBvQBlG475c&|0~m4QWv#u_KVmRQUJ?KiN00t0Q^8*5 zZfV*e)o#*u@|U&uZfXxPZqBh(UW{{Juzn#5+xyZ1L&xcT1C63@ZPIwp;R`1+V(?e6 z5}{xpuK1BMS#;gy%^wbVk;NLQKHIDGUND>Y{5SZbM4sfqy)!13Lt4!pd{3fF%68%9 zW!s>Y#qohWLa3s6l0`N-Z^u*mZhT8aXADOc*;PPl3uUdBF;E9>`ZC>c!be0OoOug8 z4tu2CiK>EAP`OkrVa^}|gj#txxS|%Cix+4I0~LmS<79Lv&T!eFNG1mR1mo{5A4dts zq5M2VVdDoH9Cq-Dd-CX&mIhC@8czpH4t6$!4ZL`#W_3ie<&}7=&LW_&qz3 zI$D_>NJ!LjF3^Dpl#{wU_+&0Z5~>`)Zg~}za7N|`8Xw9Rug6`gieZGBN7mLd1BYh( z@imp+z0EaqddqEXxWKtV>we5b#(vtgAjnKdf1e+x40dg5-rFz!t>Cuzsa>4^aQCKE zwGvnM_&c1k1t+cmuA6rEwf=#-X$!7Z`mtHfT+f+T7Ta$L_g%6?GmRCfoys6VhJLrqhfu2A|sHWL=H|Ytnmy;CI2(H+Hl|?Fb%^Gpcl{i>g@bu|o zGmp{gtfY_jWm5h6_iqINeGer?!$~n#0qhwf!{Wvilp>cambT+5bCMg>&3daba){}3 z&YV7d<(R=ao40=*9UPXJS&dewAe3(Fj8e9>W-WVcG?W>ZL!CUI`!8Kv9c}A>P3tN@ zlCfUL`bTW2QE*-d!~nn$eh0|>gSNU`oAcT)oVGM0 zj5R!ve18PFIs%pgkDx$6M;q)L8O_8fFN-$qBY`NWIpmeruLX$wGpyM?wANE0o`Xj=~m2Q zoaFDme0k)4dKoyScDygUD)Q5Gw76olD*}e&bgN=g4#=1JZYc@9%N?g4Ui5$*wUAj| z?zAkds@fIZ*JxeD0!4X=pn$|sfcHZ93nkJE#=eVZ+bK^|T1!A?uQA<;SqnQ6%<2A> zLNnTdCyJ9pM3I|4vi!05p4zIY+>xfdyooK1$azULqfjjcrgwMWz@@=@uF zMG*mcsaxmIO{~W8l+OGMzOMz9hj73m${?+7`+>kTgv~ia?$FVTd^Qn9MduZ^si_f$ z1IRUZPv8BpP2>&rXK4ymAA&!DB8&LxUukQr3T08zeDK}JMq{+$!u8t1=@qAFZb@dX zxjzPKzxej1+-n4Wv;!16%+jJx6f?2F&I#R+NMMFD>EfjP9KVR2nhaemuS#P$b4q^2RuasnMK(_1>zxs4n>`W{ZU#jY-Z3?bk` zg6aW&-Hg7F#XudmgQa{)U5yvXdNpDkHVWn>3vKi|#?Fuyg@rqqW)O)^yuH?-s?MoI z;E6G^{}#gSL&#Mb-Lmcd2$G^iygOH8K_f4$i)ty6TwLy>S`In-8=YOC5JP6xdB#h0(9&*fw9=V*G1jV~dygKw5o!MjPjR~|UHf)z zNm3)Nfky3L-@4D;ZDU~M{Yoaj9m&R0!G}J8qJO$l4S zZr!%VA-wYg>)WU`E)n~+uY}L#n}-SMQW@cf(<(eWm|0nEkE&l#^f;bQoLTDK6Pp$p0S)-0^&XM$9yI+RI3RWVCINoWKXkdV#aN>W`O(9YG2Mq zU61`b&gws#1pDOCnfK4^aEKy@PbCypEY4%TkB^R@b7F(g%K#iL)*Z@I3yO2^#7lha zT7GP6^C|ZHp6^r~wi!7`=ztsw&+R-wd+R8N6$`791oXvnsIyS@SlBP$tIxfGGE`5#j!A6wsU6<3Nr26 z44g~K1AqJBg3#}f+HBiyP7aYAK3cZdzmii+rj~{fz%&Yj%N5zl(<`bvtGA+W9xX(2 z?@ygOHyOl3(IO_jR36x6-hu@d2zi7&RV$7E!8WE5bTLYn_6c^h(CzJ0yIY+C1luRC zc0+CG5`S>A@Ff?VZ6ZGwJvj5X{8W~Wl@(DvD)T%&bDm$2GN$yN!nc>vtVOf1umOCr zD`C%hVAM?1$ojqGcvewlshJG3AiuvS3{R$YtwC^Q=2=CE% z=U9Jy_wG&y#7LJci@FByn^pmkF|(xq)^t^34M=qeDM&dP>Q`0!{o*x?%4#vX0q{I* z16p<-BojD)*bX5lQvZTz#eyE5398#MJBZ9Mo@j7;W5^vQG9QR{|2MgTeYV;~AO0LA zjc}V2F|~qu<}pnbJXT_;9^ExFfm?AJs)xyM#>=3&+0(6Cva#h)@_p zVUPNx&hd;qbZ7@?fT#jc5so2?Oxb7zBgWzd?tn>!az-9k2z`-oRJ~S_yu*i@xU9Vo zxVvy_l*ceqhHEN*h)o;Rv6O8D6GF1x79D|meonXm6PEFNaz~H>dO#})gUJhg2Wozz}NJ#-o2y5Xep4DUSp543G z)h>CYkWqL)H+NTq*V3h7V6%wQl);^llZ#k0dKyuPk%=Zgk#Hi<@+G=c9^KYl|GMP<2=qwy(Qzn$UrFm0QV^}sL)W8@L|$r z1_ql#>LUTQ@m=cn(%i!0DpdsnRjC)HJ)3?m)dS6o_GZ|L>KqeC+%H@l3YJw7RE<5Tjwx$D=D2B{U3HKDRXbZ3(c z>g;Orj;q?sXI&j`>7MgrY#-Sf$_Dlu6||MDk=!g%<_IO2nr;*RIk&fS^K`xp8Zsn^ zbtroKcv7Z~{OLk<$KLy%=6Qtwxv;}*9Z$V9U6s+)tJ?s|`;3YzzFAhxwBMlLq$p!j z+u1C)0@F}dfP1IC$Sm;Fk))$0T78N$Gwn+K-J4~}^!R$plEBvf-Q-{l8AD`+l|M;A}5wewG3Ju?qW-AN3snr+h{z<*UkeV^Z5y-z% zAHdX2Ue~g)9C7qr??#I#^i)sYydLEfa_V@B_S_PN@;2dsY3t}WvPaP;(Zd%vPQ6J@ zO)XJ_hno12vA?BLwsYb|=zs_C#`ED=)2k)J(6ex9k<8;_2Gj8BdD8s=tve zVuKB|GBdk%(!X}=w3y6H`17EzA3gb5UxGdWmp0k^e&ve1ha7=(T+E8H-h2qWVtT z8ZK}#&O$+VtEwX9XVHLjHXXHH+5=i!)Yr9q8%)GboVBDwUNp5iJ!r08sL$>8Dkc*j zjpK-3^Ev6N$>4Zqt@GB+-BdH~eFO((Y1l~+GKzLNa+t6x8gxzV+49FiLk}T2?MYoL zUUGv37D;6w1P1cbWSOCA07t@>Krz?};fvoWElFaSVRiF6N1OP_NSF=-Pd>?kn0*vX z>L*qHgQDhMb;}c94#CM?WF?c=U+XR856A-%f`6wjf`R~J495l+7)sT0nL&F#7h&_1 z!krHImk?kYi8(f+x6j1n5XZexkNyuIPOtmO`B!>pBxy``DvN{G9xm->wE&OEp4(Tf?nVkL#jl{mS?NqRMpjKvY~q_r-UGCgs(aHfq;HNJ?WAYqDR%_ zGoKaKmVE&fI5B18_wk541Tlh+ok;|eQ^AewM*3GVP|!tj=+HA%IDR?V*&%V8yX8Z3 z-H+8DQeY{~eWeiU-SkExSW;h~2TJZ;F}6SuFT zCqTq=A@9@K^^-V%$R;bQ1GB!?`c-Y4*%InQYID@tD(cdWgV+wK)qBEYF-9l|^?@@ji)kn4SYc^d)D(2=*uDb?=Kt}wuB>p*%lcOZuS~q|W#`fY z%ru^HhL<>akUq|>QNOF`kOHLT4a=97STIlz7|R=`SIk5}TQ3--dX2!Z0;PxD`>xkR z)}zx1QD$aQ0tdhIg~o+k0#gBYIJcUBUu~Rn)wQ%X^%Ju$ro^QobWZ=_Slg|~O2TP| z=>3r<;f$}@)Ptgq6BQz{cr73!xW<}4{%{Bmq5Uyo zOJ@0o@r=TAN?p}@#LA;r-=GjHoItIjv21S1%)suF;^WQ|bj&wgn!|PN?j-8z-#_tk zu0S~qUjQVYXfBG4iAlxgpQ_L@<`Og&B+oweO?Rt-VQALTg<3g(7SZArUwKv2=<1dP zslkz|y!Nj*;y)Ull(}DNGq+^KGt8530Ea3reMyHdC&8zNXNo8g$D0x93tBII$;RbE ziB`0~alI36T!6Ubb5ZH(frpJiE_o{(nw&-#E3F(GoGr|J$sGLlz)?aG4jf9mQ#X-J z6*@E2@lO6Pql9${5=+?=hd4R!eZJtC`=dtQmMxn-TY7m_=Pmo->=2WZ{|o5HEZ2f}8|J7h+9x5_`3 z+Ueul=8ILi7!?Qt#>|iJh0`Ew)4_! z9s~=aGMPl|W1C;7kTX~rUzJLTI#Qb)AD<6OU||%qz{vgBd_EIZ)m0j0L?bd3T$-)j zd|mE)SH}l0;e$&IABh<=AKZ3=`T%Ikts8P1e$uIKE`Qy!$wLgkbK%``R=W7=p^+-q zmOnsp2#ePP_>h*SwFh|D^SW1$AOqBCEj6bUUW?pj8nfex+zhOo3 zRkzONygx`c^~{#~>%hgDkF9e4{yX&ttJ9}Wi6mQ?Hz7X&)^c2N*txjGdcg?1x-vek zDbcOZj_Uj@W>s89hDO>&nw7gq|9QPSoW3xeVZ=%yH9}vMh!Y#636N1_yYeE3;@Y?I{rtUP0c^ueP$G<3UL11Xpadjd@aHeCy*Z$03eV z7yzKT0`#jp6+$jX$D&|k7Tmd^4KZ#fW_ip&0$X6*B--7?RKg9n=mQ#*UsRNIe^0Xo zm_y+?PtpxQX#ol8^%kBCk0v7n*Akj0%3O6%7}}vz9R@LNNTjB(W>5}{Khoy*Ryem2 zOTlBSGn|CGiNNXeU&pp0jkSrD)6}mV)cLi3VyT}i&liE!ZLNli3(jG`wh4U*!|ISq z2S9{hCUeP>?&a+;g6bnCL6S03fQ(|6BB<&##-=jWz#C#j%e;~Z+4yc%O;k!s07p^Z zrRbK;@ZS+brZ!X_!Bqn8xd+8y>G+=RD`GoGo~CJ-@Fr9Wg15oex?I(UUS=-}qOF)j z{Qewa+f~k2(N9?5Ot~wj`eF)Twhdh4Bfbx5B2L)l7J~Ou z95m@H+m8Y&*(%o;+~Y!8a6cpW?4Q@R#=#0I#@?(1xF*jK6L{2hl@UR3N3Y(!do-&i zuXE0B57g;J=9*IQbKyHlUx_HS;H6B{D=I3QEj_D#2ILj7BE;HKwbPCMkc};Fz$$55 zpX&*EYhPuf1*#HBU(dz!bdA|7Gj9MS3C%T!f#5*-AdL;rw1wuA3#F{=mXVb_88Uoo z+sp}O>E4?hWkP8NqRnMJ^07qca@q)4`5RAnc>w%7qfPXY zl=cw#9|CoHaL*D&&lrTf z**-WiYK7G369YrmGEr^sOECmD@z=dbLr&0rrlFxBqB!1T2dCP(Ag?5`NS|MuRIx6l zn1!NXEc*Pu)02V>rk|4A#CyUSUq9JX=GwcNY;3$*RMZc&)n@Y)(NdeAFM4k|LN=C%5lb$UJkAR-GN$0Y z>0rauVBu4fw=E+*{S4?Vz?&qW+>Vr`2aN}GQ7fyc_)gt9oEby#2F*q16Dsboc^J1j zX3|~+Vcq1vfcG=Qx+eyLxoa`Z?mc2Hrs+vPR+mR_tRE5dHhOd`>>G50a2M>pV^&` zJiq;1kh9CIj);IguTK?Ee?22|``y>gyR6H;?Y4gYoTt|G#_wB84my-T_|fNixhUdV zn}YivioSZMuj|p0-KKgQHpDQD)7h_pyl5$5eFjs6AuRouM53`RSknYP&gxo5RqyNP zSAyrpp3IJC6I508shg}uRB&S9uCw-OtMeoE5Qnur{7Fn4!7KjLzyFRZVy8B4w>NvgK*5zjjlE^!D?=-* zEo<(;SGtOZU!cfbXDr#!0t*j#6?Z{z{%j4Rz zcBY4tl&i))Od!8GPu6{NUg6D~lT>o|h_~UUMBiKo-cCBXwnrm)(e0w5_nAXqe6VwV zztb6GEnC-W4K1yD0$yMYDID0l3WB$|?G;rz)>@jHbr292U21*d$busyon7aVTH28` zG*lpQ{N~tmc-M$YqXU$*Xod(dPWs$#KHU>*AC-v{%LvA91Xmoc3>he4G-u8}Rw}qq zEb3c3aN?7*JT3x&#?dLs)_4Xqt+-?DqMtlxfH$Z}E{J9Y&o za|liT3=E8dZ*d^sRC@n;RYhxXP0KYgtHws#`EAwv_eNlnp@p&J;v`@O(1pGM0cDs0 zWa6hfe75J)u_1$$lqwtYs&d>@Kwymx4WlTcJUZLWii(Q<)2GjUkgY5-0H`(9F=Gni zilxM3O3|eh0=wHjo<)1h;0dky3m4{u&bI*kOEbWmf6Ji1?6sTl=d#ayW|3vHn11QW z+2HQ$56$mE#-9ac8U64|t;;_Zcs-p#WB-P1*JZ|OQr`!l>r_uMr$mQz*QOl{X}9>5SV!u8=IoakQyQ%tkQ)EO$ zG6l3)&Y(XHAJ#ODSL<2bic&T^T;<&|$6ii$cJZK?EQ1u}47ocS_0S6&dU)g_9g>%m z8+GXFS=uukNE{V(cBay;aUO6WAu37_eWJ^>pK+2sja5!E{G7seM<>m2aEPZ}dz|0? z1N$`jNrRJT=GEtux``Q(juZ|B&E~yiJzHC1Lf&0rkKcUjTE}-3X1K<4_-A4N6(Dyj z`BaKURdboV%@ge(=(8@L=De$7lhiY>^llI^mL=5>Xv+gG3TZ(sWBkNDx_#$P@Utyi zufCAh1O0zTFFV^)c)C76I2*7W&N@-+epuxXES!vqHE;7oo> z*>qCf8QWfXQ$Cy{9Y{EHCf~9>i%tiH=`JxCnPsiN?z_AyZWT;kXs0yk^rFg63xoqD zoc%Q}{}`K_pX18UAqm$EU&b|=Y~GwmZ5d5Eu5fxKD*k)$k$(mSMT2J7p=fDXekr-L z^m#%+fWA}v!k=pQKX^s)T_lEm2^Ta3R}fgFjl>yl>!y?%VGVa?GTfAwWD z%iTR^6LlQy?B0|r)tC15uRQb5KW0@@FRk?c?Td*kRoVUWKR7x#7=owA-FSd?K>s*h zvy}^PU=pf<+U>T-9u7Zl`n$6sZkF!W2Gm^kpfb-wHa-f!TV`1JDUI_pdQ7l1J|)G3 zAhBobe`XeUdCJcjk~!o~_M`CqI}>8_%a}9cO27O}&vsMvYrDHTb6JTRUY&cDeXKL> zj$8L?G;H;ptr?zF@$l~Mhx5hJ*FIy#=hxXXZ62E8MR7Lv&V66}YL7qXlS{iY@O5sX zNgsvEGHf*XVvyXmiua%UKg{URdqSJv>Ll|=-6wRrr`Wb>$bfzQ-89z=|78Rr zi`7Dpj8u~Blg4MPd`FmLar%!`niD!{^Z?TmG`+59cu~!ShBAknnHcfn(qQ+5ev(X;ZkV)pdXM_rEQP{A9o7^SA{DL4!UWs_6FpYcrlZ z{_hPX?UL;^GU98gvfXxl|K51-IZEGO^c{7qmw1t{*ZbceIo8!}_9V$Hm*f3zi*GER MzkFV@-rD{D1>xI4&Hw-a diff --git a/examples/hip/test_ab.tsv b/examples/hip/test_ab.tsv deleted file mode 100644 index 122e37c..0000000 --- a/examples/hip/test_ab.tsv +++ /dev/null @@ -1,11 +0,0 @@ -_H: $Name %Input[4:0,0,0,0]<4:6,2,3,4> %Input[4:0,0,0,1] %Input[4:0,0,0,2] %Input[4:0,0,0,3] %Input[4:0,0,1,0] %Input[4:0,0,1,1] %Input[4:0,0,1,2] %Input[4:0,0,1,3] %Input[4:0,0,2,0] %Input[4:0,0,2,1] %Input[4:0,0,2,2] %Input[4:0,0,2,3] %Input[4:0,1,0,0] %Input[4:0,1,0,1] %Input[4:0,1,0,2] %Input[4:0,1,0,3] %Input[4:0,1,1,0] %Input[4:0,1,1,1] %Input[4:0,1,1,2] %Input[4:0,1,1,3] %Input[4:0,1,2,0] %Input[4:0,1,2,1] %Input[4:0,1,2,2] %Input[4:0,1,2,3] %Input[4:1,0,0,0] %Input[4:1,0,0,1] %Input[4:1,0,0,2] %Input[4:1,0,0,3] %Input[4:1,0,1,0] %Input[4:1,0,1,1] %Input[4:1,0,1,2] %Input[4:1,0,1,3] %Input[4:1,0,2,0] %Input[4:1,0,2,1] %Input[4:1,0,2,2] %Input[4:1,0,2,3] %Input[4:1,1,0,0] %Input[4:1,1,0,1] %Input[4:1,1,0,2] %Input[4:1,1,0,3] %Input[4:1,1,1,0] %Input[4:1,1,1,1] %Input[4:1,1,1,2] %Input[4:1,1,1,3] %Input[4:1,1,2,0] %Input[4:1,1,2,1] %Input[4:1,1,2,2] %Input[4:1,1,2,3] %Input[4:2,0,0,0] %Input[4:2,0,0,1] %Input[4:2,0,0,2] %Input[4:2,0,0,3] %Input[4:2,0,1,0] %Input[4:2,0,1,1] %Input[4:2,0,1,2] %Input[4:2,0,1,3] %Input[4:2,0,2,0] %Input[4:2,0,2,1] %Input[4:2,0,2,2] %Input[4:2,0,2,3] %Input[4:2,1,0,0] %Input[4:2,1,0,1] %Input[4:2,1,0,2] %Input[4:2,1,0,3] %Input[4:2,1,1,0] %Input[4:2,1,1,1] %Input[4:2,1,1,2] %Input[4:2,1,1,3] %Input[4:2,1,2,0] %Input[4:2,1,2,1] %Input[4:2,1,2,2] %Input[4:2,1,2,3] %Input[4:3,0,0,0] %Input[4:3,0,0,1] %Input[4:3,0,0,2] %Input[4:3,0,0,3] %Input[4:3,0,1,0] %Input[4:3,0,1,1] %Input[4:3,0,1,2] %Input[4:3,0,1,3] %Input[4:3,0,2,0] %Input[4:3,0,2,1] %Input[4:3,0,2,2] %Input[4:3,0,2,3] %Input[4:3,1,0,0] %Input[4:3,1,0,1] %Input[4:3,1,0,2] %Input[4:3,1,0,3] %Input[4:3,1,1,0] %Input[4:3,1,1,1] %Input[4:3,1,1,2] %Input[4:3,1,1,3] %Input[4:3,1,2,0] %Input[4:3,1,2,1] %Input[4:3,1,2,2] %Input[4:3,1,2,3] %Input[4:4,0,0,0] %Input[4:4,0,0,1] %Input[4:4,0,0,2] %Input[4:4,0,0,3] %Input[4:4,0,1,0] %Input[4:4,0,1,1] %Input[4:4,0,1,2] %Input[4:4,0,1,3] %Input[4:4,0,2,0] %Input[4:4,0,2,1] %Input[4:4,0,2,2] %Input[4:4,0,2,3] %Input[4:4,1,0,0] %Input[4:4,1,0,1] %Input[4:4,1,0,2] %Input[4:4,1,0,3] %Input[4:4,1,1,0] %Input[4:4,1,1,1] %Input[4:4,1,1,2] %Input[4:4,1,1,3] %Input[4:4,1,2,0] %Input[4:4,1,2,1] %Input[4:4,1,2,2] %Input[4:4,1,2,3] %Input[4:5,0,0,0] %Input[4:5,0,0,1] %Input[4:5,0,0,2] %Input[4:5,0,0,3] %Input[4:5,0,1,0] %Input[4:5,0,1,1] %Input[4:5,0,1,2] %Input[4:5,0,1,3] %Input[4:5,0,2,0] %Input[4:5,0,2,1] %Input[4:5,0,2,2] %Input[4:5,0,2,3] %Input[4:5,1,0,0] %Input[4:5,1,0,1] %Input[4:5,1,0,2] %Input[4:5,1,0,3] %Input[4:5,1,1,0] %Input[4:5,1,1,1] %Input[4:5,1,1,2] %Input[4:5,1,1,3] %Input[4:5,1,2,0] %Input[4:5,1,2,1] %Input[4:5,1,2,2] %Input[4:5,1,2,3] %ECout[4:0,0,0,0]<4:6,2,3,4> %ECout[4:0,0,0,1] %ECout[4:0,0,0,2] %ECout[4:0,0,0,3] %ECout[4:0,0,1,0] %ECout[4:0,0,1,1] %ECout[4:0,0,1,2] %ECout[4:0,0,1,3] %ECout[4:0,0,2,0] %ECout[4:0,0,2,1] %ECout[4:0,0,2,2] %ECout[4:0,0,2,3] %ECout[4:0,1,0,0] %ECout[4:0,1,0,1] %ECout[4:0,1,0,2] %ECout[4:0,1,0,3] %ECout[4:0,1,1,0] %ECout[4:0,1,1,1] %ECout[4:0,1,1,2] %ECout[4:0,1,1,3] %ECout[4:0,1,2,0] %ECout[4:0,1,2,1] %ECout[4:0,1,2,2] %ECout[4:0,1,2,3] %ECout[4:1,0,0,0] %ECout[4:1,0,0,1] %ECout[4:1,0,0,2] %ECout[4:1,0,0,3] %ECout[4:1,0,1,0] %ECout[4:1,0,1,1] %ECout[4:1,0,1,2] %ECout[4:1,0,1,3] %ECout[4:1,0,2,0] %ECout[4:1,0,2,1] %ECout[4:1,0,2,2] %ECout[4:1,0,2,3] %ECout[4:1,1,0,0] %ECout[4:1,1,0,1] %ECout[4:1,1,0,2] %ECout[4:1,1,0,3] %ECout[4:1,1,1,0] %ECout[4:1,1,1,1] %ECout[4:1,1,1,2] %ECout[4:1,1,1,3] %ECout[4:1,1,2,0] %ECout[4:1,1,2,1] %ECout[4:1,1,2,2] %ECout[4:1,1,2,3] %ECout[4:2,0,0,0] %ECout[4:2,0,0,1] %ECout[4:2,0,0,2] %ECout[4:2,0,0,3] %ECout[4:2,0,1,0] %ECout[4:2,0,1,1] %ECout[4:2,0,1,2] %ECout[4:2,0,1,3] %ECout[4:2,0,2,0] %ECout[4:2,0,2,1] %ECout[4:2,0,2,2] %ECout[4:2,0,2,3] %ECout[4:2,1,0,0] %ECout[4:2,1,0,1] %ECout[4:2,1,0,2] %ECout[4:2,1,0,3] %ECout[4:2,1,1,0] %ECout[4:2,1,1,1] %ECout[4:2,1,1,2] %ECout[4:2,1,1,3] %ECout[4:2,1,2,0] %ECout[4:2,1,2,1] %ECout[4:2,1,2,2] %ECout[4:2,1,2,3] %ECout[4:3,0,0,0] %ECout[4:3,0,0,1] %ECout[4:3,0,0,2] %ECout[4:3,0,0,3] %ECout[4:3,0,1,0] %ECout[4:3,0,1,1] %ECout[4:3,0,1,2] %ECout[4:3,0,1,3] %ECout[4:3,0,2,0] %ECout[4:3,0,2,1] %ECout[4:3,0,2,2] %ECout[4:3,0,2,3] %ECout[4:3,1,0,0] %ECout[4:3,1,0,1] %ECout[4:3,1,0,2] %ECout[4:3,1,0,3] %ECout[4:3,1,1,0] %ECout[4:3,1,1,1] %ECout[4:3,1,1,2] %ECout[4:3,1,1,3] %ECout[4:3,1,2,0] %ECout[4:3,1,2,1] %ECout[4:3,1,2,2] %ECout[4:3,1,2,3] %ECout[4:4,0,0,0] %ECout[4:4,0,0,1] %ECout[4:4,0,0,2] %ECout[4:4,0,0,3] %ECout[4:4,0,1,0] %ECout[4:4,0,1,1] %ECout[4:4,0,1,2] %ECout[4:4,0,1,3] %ECout[4:4,0,2,0] %ECout[4:4,0,2,1] %ECout[4:4,0,2,2] %ECout[4:4,0,2,3] %ECout[4:4,1,0,0] %ECout[4:4,1,0,1] %ECout[4:4,1,0,2] %ECout[4:4,1,0,3] %ECout[4:4,1,1,0] %ECout[4:4,1,1,1] %ECout[4:4,1,1,2] %ECout[4:4,1,1,3] %ECout[4:4,1,2,0] %ECout[4:4,1,2,1] %ECout[4:4,1,2,2] %ECout[4:4,1,2,3] %ECout[4:5,0,0,0] %ECout[4:5,0,0,1] %ECout[4:5,0,0,2] %ECout[4:5,0,0,3] %ECout[4:5,0,1,0] %ECout[4:5,0,1,1] %ECout[4:5,0,1,2] %ECout[4:5,0,1,3] %ECout[4:5,0,2,0] %ECout[4:5,0,2,1] %ECout[4:5,0,2,2] %ECout[4:5,0,2,3] %ECout[4:5,1,0,0] %ECout[4:5,1,0,1] %ECout[4:5,1,0,2] %ECout[4:5,1,0,3] %ECout[4:5,1,1,0] %ECout[4:5,1,1,1] %ECout[4:5,1,1,2] %ECout[4:5,1,1,3] %ECout[4:5,1,2,0] %ECout[4:5,1,2,1] %ECout[4:5,1,2,2] %ECout[4:5,1,2,3] -_D: ab_0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 -_D: ab_1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 -_D: ab_2 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 -_D: ab_3 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 -_D: ab_4 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 -_D: ab_5 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 -_D: ab_6 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 -_D: ab_7 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 -_D: ab_8 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 -_D: ab_9 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 diff --git a/examples/hip/test_ac.tsv b/examples/hip/test_ac.tsv deleted file mode 100644 index 82ced17..0000000 --- a/examples/hip/test_ac.tsv +++ /dev/null @@ -1,11 +0,0 @@ -_H: $Name %Input[4:0,0,0,0]<4:6,2,3,4> %Input[4:0,0,0,1] %Input[4:0,0,0,2] %Input[4:0,0,0,3] %Input[4:0,0,1,0] %Input[4:0,0,1,1] %Input[4:0,0,1,2] %Input[4:0,0,1,3] %Input[4:0,0,2,0] %Input[4:0,0,2,1] %Input[4:0,0,2,2] %Input[4:0,0,2,3] %Input[4:0,1,0,0] %Input[4:0,1,0,1] %Input[4:0,1,0,2] %Input[4:0,1,0,3] %Input[4:0,1,1,0] %Input[4:0,1,1,1] %Input[4:0,1,1,2] %Input[4:0,1,1,3] %Input[4:0,1,2,0] %Input[4:0,1,2,1] %Input[4:0,1,2,2] %Input[4:0,1,2,3] %Input[4:1,0,0,0] %Input[4:1,0,0,1] %Input[4:1,0,0,2] %Input[4:1,0,0,3] %Input[4:1,0,1,0] %Input[4:1,0,1,1] %Input[4:1,0,1,2] %Input[4:1,0,1,3] %Input[4:1,0,2,0] %Input[4:1,0,2,1] %Input[4:1,0,2,2] %Input[4:1,0,2,3] %Input[4:1,1,0,0] %Input[4:1,1,0,1] %Input[4:1,1,0,2] %Input[4:1,1,0,3] %Input[4:1,1,1,0] %Input[4:1,1,1,1] %Input[4:1,1,1,2] %Input[4:1,1,1,3] %Input[4:1,1,2,0] %Input[4:1,1,2,1] %Input[4:1,1,2,2] %Input[4:1,1,2,3] %Input[4:2,0,0,0] %Input[4:2,0,0,1] %Input[4:2,0,0,2] %Input[4:2,0,0,3] %Input[4:2,0,1,0] %Input[4:2,0,1,1] %Input[4:2,0,1,2] %Input[4:2,0,1,3] %Input[4:2,0,2,0] %Input[4:2,0,2,1] %Input[4:2,0,2,2] %Input[4:2,0,2,3] %Input[4:2,1,0,0] %Input[4:2,1,0,1] %Input[4:2,1,0,2] %Input[4:2,1,0,3] %Input[4:2,1,1,0] %Input[4:2,1,1,1] %Input[4:2,1,1,2] %Input[4:2,1,1,3] %Input[4:2,1,2,0] %Input[4:2,1,2,1] %Input[4:2,1,2,2] %Input[4:2,1,2,3] %Input[4:3,0,0,0] %Input[4:3,0,0,1] %Input[4:3,0,0,2] %Input[4:3,0,0,3] %Input[4:3,0,1,0] %Input[4:3,0,1,1] %Input[4:3,0,1,2] %Input[4:3,0,1,3] %Input[4:3,0,2,0] %Input[4:3,0,2,1] %Input[4:3,0,2,2] %Input[4:3,0,2,3] %Input[4:3,1,0,0] %Input[4:3,1,0,1] %Input[4:3,1,0,2] %Input[4:3,1,0,3] %Input[4:3,1,1,0] %Input[4:3,1,1,1] %Input[4:3,1,1,2] %Input[4:3,1,1,3] %Input[4:3,1,2,0] %Input[4:3,1,2,1] %Input[4:3,1,2,2] %Input[4:3,1,2,3] %Input[4:4,0,0,0] %Input[4:4,0,0,1] %Input[4:4,0,0,2] %Input[4:4,0,0,3] %Input[4:4,0,1,0] %Input[4:4,0,1,1] %Input[4:4,0,1,2] %Input[4:4,0,1,3] %Input[4:4,0,2,0] %Input[4:4,0,2,1] %Input[4:4,0,2,2] %Input[4:4,0,2,3] %Input[4:4,1,0,0] %Input[4:4,1,0,1] %Input[4:4,1,0,2] %Input[4:4,1,0,3] %Input[4:4,1,1,0] %Input[4:4,1,1,1] %Input[4:4,1,1,2] %Input[4:4,1,1,3] %Input[4:4,1,2,0] %Input[4:4,1,2,1] %Input[4:4,1,2,2] %Input[4:4,1,2,3] %Input[4:5,0,0,0] %Input[4:5,0,0,1] %Input[4:5,0,0,2] %Input[4:5,0,0,3] %Input[4:5,0,1,0] %Input[4:5,0,1,1] %Input[4:5,0,1,2] %Input[4:5,0,1,3] %Input[4:5,0,2,0] %Input[4:5,0,2,1] %Input[4:5,0,2,2] %Input[4:5,0,2,3] %Input[4:5,1,0,0] %Input[4:5,1,0,1] %Input[4:5,1,0,2] %Input[4:5,1,0,3] %Input[4:5,1,1,0] %Input[4:5,1,1,1] %Input[4:5,1,1,2] %Input[4:5,1,1,3] %Input[4:5,1,2,0] %Input[4:5,1,2,1] %Input[4:5,1,2,2] %Input[4:5,1,2,3] %ECout[4:0,0,0,0]<4:6,2,3,4> %ECout[4:0,0,0,1] %ECout[4:0,0,0,2] %ECout[4:0,0,0,3] %ECout[4:0,0,1,0] %ECout[4:0,0,1,1] %ECout[4:0,0,1,2] %ECout[4:0,0,1,3] %ECout[4:0,0,2,0] %ECout[4:0,0,2,1] %ECout[4:0,0,2,2] %ECout[4:0,0,2,3] %ECout[4:0,1,0,0] %ECout[4:0,1,0,1] %ECout[4:0,1,0,2] %ECout[4:0,1,0,3] %ECout[4:0,1,1,0] %ECout[4:0,1,1,1] %ECout[4:0,1,1,2] %ECout[4:0,1,1,3] %ECout[4:0,1,2,0] %ECout[4:0,1,2,1] %ECout[4:0,1,2,2] %ECout[4:0,1,2,3] %ECout[4:1,0,0,0] %ECout[4:1,0,0,1] %ECout[4:1,0,0,2] %ECout[4:1,0,0,3] %ECout[4:1,0,1,0] %ECout[4:1,0,1,1] %ECout[4:1,0,1,2] %ECout[4:1,0,1,3] %ECout[4:1,0,2,0] %ECout[4:1,0,2,1] %ECout[4:1,0,2,2] %ECout[4:1,0,2,3] %ECout[4:1,1,0,0] %ECout[4:1,1,0,1] %ECout[4:1,1,0,2] %ECout[4:1,1,0,3] %ECout[4:1,1,1,0] %ECout[4:1,1,1,1] %ECout[4:1,1,1,2] %ECout[4:1,1,1,3] %ECout[4:1,1,2,0] %ECout[4:1,1,2,1] %ECout[4:1,1,2,2] %ECout[4:1,1,2,3] %ECout[4:2,0,0,0] %ECout[4:2,0,0,1] %ECout[4:2,0,0,2] %ECout[4:2,0,0,3] %ECout[4:2,0,1,0] %ECout[4:2,0,1,1] %ECout[4:2,0,1,2] %ECout[4:2,0,1,3] %ECout[4:2,0,2,0] %ECout[4:2,0,2,1] %ECout[4:2,0,2,2] %ECout[4:2,0,2,3] %ECout[4:2,1,0,0] %ECout[4:2,1,0,1] %ECout[4:2,1,0,2] %ECout[4:2,1,0,3] %ECout[4:2,1,1,0] %ECout[4:2,1,1,1] %ECout[4:2,1,1,2] %ECout[4:2,1,1,3] %ECout[4:2,1,2,0] %ECout[4:2,1,2,1] %ECout[4:2,1,2,2] %ECout[4:2,1,2,3] %ECout[4:3,0,0,0] %ECout[4:3,0,0,1] %ECout[4:3,0,0,2] %ECout[4:3,0,0,3] %ECout[4:3,0,1,0] %ECout[4:3,0,1,1] %ECout[4:3,0,1,2] %ECout[4:3,0,1,3] %ECout[4:3,0,2,0] %ECout[4:3,0,2,1] %ECout[4:3,0,2,2] %ECout[4:3,0,2,3] %ECout[4:3,1,0,0] %ECout[4:3,1,0,1] %ECout[4:3,1,0,2] %ECout[4:3,1,0,3] %ECout[4:3,1,1,0] %ECout[4:3,1,1,1] %ECout[4:3,1,1,2] %ECout[4:3,1,1,3] %ECout[4:3,1,2,0] %ECout[4:3,1,2,1] %ECout[4:3,1,2,2] %ECout[4:3,1,2,3] %ECout[4:4,0,0,0] %ECout[4:4,0,0,1] %ECout[4:4,0,0,2] %ECout[4:4,0,0,3] %ECout[4:4,0,1,0] %ECout[4:4,0,1,1] %ECout[4:4,0,1,2] %ECout[4:4,0,1,3] %ECout[4:4,0,2,0] %ECout[4:4,0,2,1] %ECout[4:4,0,2,2] %ECout[4:4,0,2,3] %ECout[4:4,1,0,0] %ECout[4:4,1,0,1] %ECout[4:4,1,0,2] %ECout[4:4,1,0,3] %ECout[4:4,1,1,0] %ECout[4:4,1,1,1] %ECout[4:4,1,1,2] %ECout[4:4,1,1,3] %ECout[4:4,1,2,0] %ECout[4:4,1,2,1] %ECout[4:4,1,2,2] %ECout[4:4,1,2,3] %ECout[4:5,0,0,0] %ECout[4:5,0,0,1] %ECout[4:5,0,0,2] %ECout[4:5,0,0,3] %ECout[4:5,0,1,0] %ECout[4:5,0,1,1] %ECout[4:5,0,1,2] %ECout[4:5,0,1,3] %ECout[4:5,0,2,0] %ECout[4:5,0,2,1] %ECout[4:5,0,2,2] %ECout[4:5,0,2,3] %ECout[4:5,1,0,0] %ECout[4:5,1,0,1] %ECout[4:5,1,0,2] %ECout[4:5,1,0,3] %ECout[4:5,1,1,0] %ECout[4:5,1,1,1] %ECout[4:5,1,1,2] %ECout[4:5,1,1,3] %ECout[4:5,1,2,0] %ECout[4:5,1,2,1] %ECout[4:5,1,2,2] %ECout[4:5,1,2,3] -_D: ac_0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 -_D: ac_1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 -_D: ac_2 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 -_D: ac_3 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 -_D: ac_4 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 -_D: ac_5 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 -_D: ac_6 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 -_D: ac_7 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 -_D: ac_8 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 -_D: ac_9 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 diff --git a/examples/hip/test_lure.tsv b/examples/hip/test_lure.tsv deleted file mode 100644 index da48a2c..0000000 --- a/examples/hip/test_lure.tsv +++ /dev/null @@ -1,11 +0,0 @@ -_H: $Name %Input[4:0,0,0,0]<4:6,2,3,4> %Input[4:0,0,0,1] %Input[4:0,0,0,2] %Input[4:0,0,0,3] %Input[4:0,0,1,0] %Input[4:0,0,1,1] %Input[4:0,0,1,2] %Input[4:0,0,1,3] %Input[4:0,0,2,0] %Input[4:0,0,2,1] %Input[4:0,0,2,2] %Input[4:0,0,2,3] %Input[4:0,1,0,0] %Input[4:0,1,0,1] %Input[4:0,1,0,2] %Input[4:0,1,0,3] %Input[4:0,1,1,0] %Input[4:0,1,1,1] %Input[4:0,1,1,2] %Input[4:0,1,1,3] %Input[4:0,1,2,0] %Input[4:0,1,2,1] %Input[4:0,1,2,2] %Input[4:0,1,2,3] %Input[4:1,0,0,0] %Input[4:1,0,0,1] %Input[4:1,0,0,2] %Input[4:1,0,0,3] %Input[4:1,0,1,0] %Input[4:1,0,1,1] %Input[4:1,0,1,2] %Input[4:1,0,1,3] %Input[4:1,0,2,0] %Input[4:1,0,2,1] %Input[4:1,0,2,2] %Input[4:1,0,2,3] %Input[4:1,1,0,0] %Input[4:1,1,0,1] %Input[4:1,1,0,2] %Input[4:1,1,0,3] %Input[4:1,1,1,0] %Input[4:1,1,1,1] %Input[4:1,1,1,2] %Input[4:1,1,1,3] %Input[4:1,1,2,0] %Input[4:1,1,2,1] %Input[4:1,1,2,2] %Input[4:1,1,2,3] %Input[4:2,0,0,0] %Input[4:2,0,0,1] %Input[4:2,0,0,2] %Input[4:2,0,0,3] %Input[4:2,0,1,0] %Input[4:2,0,1,1] %Input[4:2,0,1,2] %Input[4:2,0,1,3] %Input[4:2,0,2,0] %Input[4:2,0,2,1] %Input[4:2,0,2,2] %Input[4:2,0,2,3] %Input[4:2,1,0,0] %Input[4:2,1,0,1] %Input[4:2,1,0,2] %Input[4:2,1,0,3] %Input[4:2,1,1,0] %Input[4:2,1,1,1] %Input[4:2,1,1,2] %Input[4:2,1,1,3] %Input[4:2,1,2,0] %Input[4:2,1,2,1] %Input[4:2,1,2,2] %Input[4:2,1,2,3] %Input[4:3,0,0,0] %Input[4:3,0,0,1] %Input[4:3,0,0,2] %Input[4:3,0,0,3] %Input[4:3,0,1,0] %Input[4:3,0,1,1] %Input[4:3,0,1,2] %Input[4:3,0,1,3] %Input[4:3,0,2,0] %Input[4:3,0,2,1] %Input[4:3,0,2,2] %Input[4:3,0,2,3] %Input[4:3,1,0,0] %Input[4:3,1,0,1] %Input[4:3,1,0,2] %Input[4:3,1,0,3] %Input[4:3,1,1,0] %Input[4:3,1,1,1] %Input[4:3,1,1,2] %Input[4:3,1,1,3] %Input[4:3,1,2,0] %Input[4:3,1,2,1] %Input[4:3,1,2,2] %Input[4:3,1,2,3] %Input[4:4,0,0,0] %Input[4:4,0,0,1] %Input[4:4,0,0,2] %Input[4:4,0,0,3] %Input[4:4,0,1,0] %Input[4:4,0,1,1] %Input[4:4,0,1,2] %Input[4:4,0,1,3] %Input[4:4,0,2,0] %Input[4:4,0,2,1] %Input[4:4,0,2,2] %Input[4:4,0,2,3] %Input[4:4,1,0,0] %Input[4:4,1,0,1] %Input[4:4,1,0,2] %Input[4:4,1,0,3] %Input[4:4,1,1,0] %Input[4:4,1,1,1] %Input[4:4,1,1,2] %Input[4:4,1,1,3] %Input[4:4,1,2,0] %Input[4:4,1,2,1] %Input[4:4,1,2,2] %Input[4:4,1,2,3] %Input[4:5,0,0,0] %Input[4:5,0,0,1] %Input[4:5,0,0,2] %Input[4:5,0,0,3] %Input[4:5,0,1,0] %Input[4:5,0,1,1] %Input[4:5,0,1,2] %Input[4:5,0,1,3] %Input[4:5,0,2,0] %Input[4:5,0,2,1] %Input[4:5,0,2,2] %Input[4:5,0,2,3] %Input[4:5,1,0,0] %Input[4:5,1,0,1] %Input[4:5,1,0,2] %Input[4:5,1,0,3] %Input[4:5,1,1,0] %Input[4:5,1,1,1] %Input[4:5,1,1,2] %Input[4:5,1,1,3] %Input[4:5,1,2,0] %Input[4:5,1,2,1] %Input[4:5,1,2,2] %Input[4:5,1,2,3] %ECout[4:0,0,0,0]<4:6,2,3,4> %ECout[4:0,0,0,1] %ECout[4:0,0,0,2] %ECout[4:0,0,0,3] %ECout[4:0,0,1,0] %ECout[4:0,0,1,1] %ECout[4:0,0,1,2] %ECout[4:0,0,1,3] %ECout[4:0,0,2,0] %ECout[4:0,0,2,1] %ECout[4:0,0,2,2] %ECout[4:0,0,2,3] %ECout[4:0,1,0,0] %ECout[4:0,1,0,1] %ECout[4:0,1,0,2] %ECout[4:0,1,0,3] %ECout[4:0,1,1,0] %ECout[4:0,1,1,1] %ECout[4:0,1,1,2] %ECout[4:0,1,1,3] %ECout[4:0,1,2,0] %ECout[4:0,1,2,1] %ECout[4:0,1,2,2] %ECout[4:0,1,2,3] %ECout[4:1,0,0,0] %ECout[4:1,0,0,1] %ECout[4:1,0,0,2] %ECout[4:1,0,0,3] %ECout[4:1,0,1,0] %ECout[4:1,0,1,1] %ECout[4:1,0,1,2] %ECout[4:1,0,1,3] %ECout[4:1,0,2,0] %ECout[4:1,0,2,1] %ECout[4:1,0,2,2] %ECout[4:1,0,2,3] %ECout[4:1,1,0,0] %ECout[4:1,1,0,1] %ECout[4:1,1,0,2] %ECout[4:1,1,0,3] %ECout[4:1,1,1,0] %ECout[4:1,1,1,1] %ECout[4:1,1,1,2] %ECout[4:1,1,1,3] %ECout[4:1,1,2,0] %ECout[4:1,1,2,1] %ECout[4:1,1,2,2] %ECout[4:1,1,2,3] %ECout[4:2,0,0,0] %ECout[4:2,0,0,1] %ECout[4:2,0,0,2] %ECout[4:2,0,0,3] %ECout[4:2,0,1,0] %ECout[4:2,0,1,1] %ECout[4:2,0,1,2] %ECout[4:2,0,1,3] %ECout[4:2,0,2,0] %ECout[4:2,0,2,1] %ECout[4:2,0,2,2] %ECout[4:2,0,2,3] %ECout[4:2,1,0,0] %ECout[4:2,1,0,1] %ECout[4:2,1,0,2] %ECout[4:2,1,0,3] %ECout[4:2,1,1,0] %ECout[4:2,1,1,1] %ECout[4:2,1,1,2] %ECout[4:2,1,1,3] %ECout[4:2,1,2,0] %ECout[4:2,1,2,1] %ECout[4:2,1,2,2] %ECout[4:2,1,2,3] %ECout[4:3,0,0,0] %ECout[4:3,0,0,1] %ECout[4:3,0,0,2] %ECout[4:3,0,0,3] %ECout[4:3,0,1,0] %ECout[4:3,0,1,1] %ECout[4:3,0,1,2] %ECout[4:3,0,1,3] %ECout[4:3,0,2,0] %ECout[4:3,0,2,1] %ECout[4:3,0,2,2] %ECout[4:3,0,2,3] %ECout[4:3,1,0,0] %ECout[4:3,1,0,1] %ECout[4:3,1,0,2] %ECout[4:3,1,0,3] %ECout[4:3,1,1,0] %ECout[4:3,1,1,1] %ECout[4:3,1,1,2] %ECout[4:3,1,1,3] %ECout[4:3,1,2,0] %ECout[4:3,1,2,1] %ECout[4:3,1,2,2] %ECout[4:3,1,2,3] %ECout[4:4,0,0,0] %ECout[4:4,0,0,1] %ECout[4:4,0,0,2] %ECout[4:4,0,0,3] %ECout[4:4,0,1,0] %ECout[4:4,0,1,1] %ECout[4:4,0,1,2] %ECout[4:4,0,1,3] %ECout[4:4,0,2,0] %ECout[4:4,0,2,1] %ECout[4:4,0,2,2] %ECout[4:4,0,2,3] %ECout[4:4,1,0,0] %ECout[4:4,1,0,1] %ECout[4:4,1,0,2] %ECout[4:4,1,0,3] %ECout[4:4,1,1,0] %ECout[4:4,1,1,1] %ECout[4:4,1,1,2] %ECout[4:4,1,1,3] %ECout[4:4,1,2,0] %ECout[4:4,1,2,1] %ECout[4:4,1,2,2] %ECout[4:4,1,2,3] %ECout[4:5,0,0,0] %ECout[4:5,0,0,1] %ECout[4:5,0,0,2] %ECout[4:5,0,0,3] %ECout[4:5,0,1,0] %ECout[4:5,0,1,1] %ECout[4:5,0,1,2] %ECout[4:5,0,1,3] %ECout[4:5,0,2,0] %ECout[4:5,0,2,1] %ECout[4:5,0,2,2] %ECout[4:5,0,2,3] %ECout[4:5,1,0,0] %ECout[4:5,1,0,1] %ECout[4:5,1,0,2] %ECout[4:5,1,0,3] %ECout[4:5,1,1,0] %ECout[4:5,1,1,1] %ECout[4:5,1,1,2] %ECout[4:5,1,1,3] %ECout[4:5,1,2,0] %ECout[4:5,1,2,1] %ECout[4:5,1,2,2] %ECout[4:5,1,2,3] -_D: lure_0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 -_D: lure_1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 -_D: lure_2 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 -_D: lure_3 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 -_D: lure_4 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 -_D: lure_5 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 -_D: lure_6 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 -_D: lure_7 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 -_D: lure_8 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 -_D: lure_9 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 diff --git a/examples/hip/train_ab.tsv b/examples/hip/train_ab.tsv deleted file mode 100644 index 5bd29c7..0000000 --- a/examples/hip/train_ab.tsv +++ /dev/null @@ -1,11 +0,0 @@ -_H: $Name %Input[4:0,0,0,0]<4:6,2,3,4> %Input[4:0,0,0,1] %Input[4:0,0,0,2] %Input[4:0,0,0,3] %Input[4:0,0,1,0] %Input[4:0,0,1,1] %Input[4:0,0,1,2] %Input[4:0,0,1,3] %Input[4:0,0,2,0] %Input[4:0,0,2,1] %Input[4:0,0,2,2] %Input[4:0,0,2,3] %Input[4:0,1,0,0] %Input[4:0,1,0,1] %Input[4:0,1,0,2] %Input[4:0,1,0,3] %Input[4:0,1,1,0] %Input[4:0,1,1,1] %Input[4:0,1,1,2] %Input[4:0,1,1,3] %Input[4:0,1,2,0] %Input[4:0,1,2,1] %Input[4:0,1,2,2] %Input[4:0,1,2,3] %Input[4:1,0,0,0] %Input[4:1,0,0,1] %Input[4:1,0,0,2] %Input[4:1,0,0,3] %Input[4:1,0,1,0] %Input[4:1,0,1,1] %Input[4:1,0,1,2] %Input[4:1,0,1,3] %Input[4:1,0,2,0] %Input[4:1,0,2,1] %Input[4:1,0,2,2] %Input[4:1,0,2,3] %Input[4:1,1,0,0] %Input[4:1,1,0,1] %Input[4:1,1,0,2] %Input[4:1,1,0,3] %Input[4:1,1,1,0] %Input[4:1,1,1,1] %Input[4:1,1,1,2] %Input[4:1,1,1,3] %Input[4:1,1,2,0] %Input[4:1,1,2,1] %Input[4:1,1,2,2] %Input[4:1,1,2,3] %Input[4:2,0,0,0] %Input[4:2,0,0,1] %Input[4:2,0,0,2] %Input[4:2,0,0,3] %Input[4:2,0,1,0] %Input[4:2,0,1,1] %Input[4:2,0,1,2] %Input[4:2,0,1,3] %Input[4:2,0,2,0] %Input[4:2,0,2,1] %Input[4:2,0,2,2] %Input[4:2,0,2,3] %Input[4:2,1,0,0] %Input[4:2,1,0,1] %Input[4:2,1,0,2] %Input[4:2,1,0,3] %Input[4:2,1,1,0] %Input[4:2,1,1,1] %Input[4:2,1,1,2] %Input[4:2,1,1,3] %Input[4:2,1,2,0] %Input[4:2,1,2,1] %Input[4:2,1,2,2] %Input[4:2,1,2,3] %Input[4:3,0,0,0] %Input[4:3,0,0,1] %Input[4:3,0,0,2] %Input[4:3,0,0,3] %Input[4:3,0,1,0] %Input[4:3,0,1,1] %Input[4:3,0,1,2] %Input[4:3,0,1,3] %Input[4:3,0,2,0] %Input[4:3,0,2,1] %Input[4:3,0,2,2] %Input[4:3,0,2,3] %Input[4:3,1,0,0] %Input[4:3,1,0,1] %Input[4:3,1,0,2] %Input[4:3,1,0,3] %Input[4:3,1,1,0] %Input[4:3,1,1,1] %Input[4:3,1,1,2] %Input[4:3,1,1,3] %Input[4:3,1,2,0] %Input[4:3,1,2,1] %Input[4:3,1,2,2] %Input[4:3,1,2,3] %Input[4:4,0,0,0] %Input[4:4,0,0,1] %Input[4:4,0,0,2] %Input[4:4,0,0,3] %Input[4:4,0,1,0] %Input[4:4,0,1,1] %Input[4:4,0,1,2] %Input[4:4,0,1,3] %Input[4:4,0,2,0] %Input[4:4,0,2,1] %Input[4:4,0,2,2] %Input[4:4,0,2,3] %Input[4:4,1,0,0] %Input[4:4,1,0,1] %Input[4:4,1,0,2] %Input[4:4,1,0,3] %Input[4:4,1,1,0] %Input[4:4,1,1,1] %Input[4:4,1,1,2] %Input[4:4,1,1,3] %Input[4:4,1,2,0] %Input[4:4,1,2,1] %Input[4:4,1,2,2] %Input[4:4,1,2,3] %Input[4:5,0,0,0] %Input[4:5,0,0,1] %Input[4:5,0,0,2] %Input[4:5,0,0,3] %Input[4:5,0,1,0] %Input[4:5,0,1,1] %Input[4:5,0,1,2] %Input[4:5,0,1,3] %Input[4:5,0,2,0] %Input[4:5,0,2,1] %Input[4:5,0,2,2] %Input[4:5,0,2,3] %Input[4:5,1,0,0] %Input[4:5,1,0,1] %Input[4:5,1,0,2] %Input[4:5,1,0,3] %Input[4:5,1,1,0] %Input[4:5,1,1,1] %Input[4:5,1,1,2] %Input[4:5,1,1,3] %Input[4:5,1,2,0] %Input[4:5,1,2,1] %Input[4:5,1,2,2] %Input[4:5,1,2,3] %ECout[4:0,0,0,0]<4:6,2,3,4> %ECout[4:0,0,0,1] %ECout[4:0,0,0,2] %ECout[4:0,0,0,3] %ECout[4:0,0,1,0] %ECout[4:0,0,1,1] %ECout[4:0,0,1,2] %ECout[4:0,0,1,3] %ECout[4:0,0,2,0] %ECout[4:0,0,2,1] %ECout[4:0,0,2,2] %ECout[4:0,0,2,3] %ECout[4:0,1,0,0] %ECout[4:0,1,0,1] %ECout[4:0,1,0,2] %ECout[4:0,1,0,3] %ECout[4:0,1,1,0] %ECout[4:0,1,1,1] %ECout[4:0,1,1,2] %ECout[4:0,1,1,3] %ECout[4:0,1,2,0] %ECout[4:0,1,2,1] %ECout[4:0,1,2,2] %ECout[4:0,1,2,3] %ECout[4:1,0,0,0] %ECout[4:1,0,0,1] %ECout[4:1,0,0,2] %ECout[4:1,0,0,3] %ECout[4:1,0,1,0] %ECout[4:1,0,1,1] %ECout[4:1,0,1,2] %ECout[4:1,0,1,3] %ECout[4:1,0,2,0] %ECout[4:1,0,2,1] %ECout[4:1,0,2,2] %ECout[4:1,0,2,3] %ECout[4:1,1,0,0] %ECout[4:1,1,0,1] %ECout[4:1,1,0,2] %ECout[4:1,1,0,3] %ECout[4:1,1,1,0] %ECout[4:1,1,1,1] %ECout[4:1,1,1,2] %ECout[4:1,1,1,3] %ECout[4:1,1,2,0] %ECout[4:1,1,2,1] %ECout[4:1,1,2,2] %ECout[4:1,1,2,3] %ECout[4:2,0,0,0] %ECout[4:2,0,0,1] %ECout[4:2,0,0,2] %ECout[4:2,0,0,3] %ECout[4:2,0,1,0] %ECout[4:2,0,1,1] %ECout[4:2,0,1,2] %ECout[4:2,0,1,3] %ECout[4:2,0,2,0] %ECout[4:2,0,2,1] %ECout[4:2,0,2,2] %ECout[4:2,0,2,3] %ECout[4:2,1,0,0] %ECout[4:2,1,0,1] %ECout[4:2,1,0,2] %ECout[4:2,1,0,3] %ECout[4:2,1,1,0] %ECout[4:2,1,1,1] %ECout[4:2,1,1,2] %ECout[4:2,1,1,3] %ECout[4:2,1,2,0] %ECout[4:2,1,2,1] %ECout[4:2,1,2,2] %ECout[4:2,1,2,3] %ECout[4:3,0,0,0] %ECout[4:3,0,0,1] %ECout[4:3,0,0,2] %ECout[4:3,0,0,3] %ECout[4:3,0,1,0] %ECout[4:3,0,1,1] %ECout[4:3,0,1,2] %ECout[4:3,0,1,3] %ECout[4:3,0,2,0] %ECout[4:3,0,2,1] %ECout[4:3,0,2,2] %ECout[4:3,0,2,3] %ECout[4:3,1,0,0] %ECout[4:3,1,0,1] %ECout[4:3,1,0,2] %ECout[4:3,1,0,3] %ECout[4:3,1,1,0] %ECout[4:3,1,1,1] %ECout[4:3,1,1,2] %ECout[4:3,1,1,3] %ECout[4:3,1,2,0] %ECout[4:3,1,2,1] %ECout[4:3,1,2,2] %ECout[4:3,1,2,3] %ECout[4:4,0,0,0] %ECout[4:4,0,0,1] %ECout[4:4,0,0,2] %ECout[4:4,0,0,3] %ECout[4:4,0,1,0] %ECout[4:4,0,1,1] %ECout[4:4,0,1,2] %ECout[4:4,0,1,3] %ECout[4:4,0,2,0] %ECout[4:4,0,2,1] %ECout[4:4,0,2,2] %ECout[4:4,0,2,3] %ECout[4:4,1,0,0] %ECout[4:4,1,0,1] %ECout[4:4,1,0,2] %ECout[4:4,1,0,3] %ECout[4:4,1,1,0] %ECout[4:4,1,1,1] %ECout[4:4,1,1,2] %ECout[4:4,1,1,3] %ECout[4:4,1,2,0] %ECout[4:4,1,2,1] %ECout[4:4,1,2,2] %ECout[4:4,1,2,3] %ECout[4:5,0,0,0] %ECout[4:5,0,0,1] %ECout[4:5,0,0,2] %ECout[4:5,0,0,3] %ECout[4:5,0,1,0] %ECout[4:5,0,1,1] %ECout[4:5,0,1,2] %ECout[4:5,0,1,3] %ECout[4:5,0,2,0] %ECout[4:5,0,2,1] %ECout[4:5,0,2,2] %ECout[4:5,0,2,3] %ECout[4:5,1,0,0] %ECout[4:5,1,0,1] %ECout[4:5,1,0,2] %ECout[4:5,1,0,3] %ECout[4:5,1,1,0] %ECout[4:5,1,1,1] %ECout[4:5,1,1,2] %ECout[4:5,1,1,3] %ECout[4:5,1,2,0] %ECout[4:5,1,2,1] %ECout[4:5,1,2,2] %ECout[4:5,1,2,3] -_D: ab_0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 -_D: ab_1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 -_D: ab_2 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 -_D: ab_3 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 -_D: ab_4 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 -_D: ab_5 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 -_D: ab_6 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 -_D: ab_7 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 -_D: ab_8 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 -_D: ab_9 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 diff --git a/examples/hip/train_ac.tsv b/examples/hip/train_ac.tsv deleted file mode 100644 index 33b9eb9..0000000 --- a/examples/hip/train_ac.tsv +++ /dev/null @@ -1,11 +0,0 @@ -_H: $Name %Input[4:0,0,0,0]<4:6,2,3,4> %Input[4:0,0,0,1] %Input[4:0,0,0,2] %Input[4:0,0,0,3] %Input[4:0,0,1,0] %Input[4:0,0,1,1] %Input[4:0,0,1,2] %Input[4:0,0,1,3] %Input[4:0,0,2,0] %Input[4:0,0,2,1] %Input[4:0,0,2,2] %Input[4:0,0,2,3] %Input[4:0,1,0,0] %Input[4:0,1,0,1] %Input[4:0,1,0,2] %Input[4:0,1,0,3] %Input[4:0,1,1,0] %Input[4:0,1,1,1] %Input[4:0,1,1,2] %Input[4:0,1,1,3] %Input[4:0,1,2,0] %Input[4:0,1,2,1] %Input[4:0,1,2,2] %Input[4:0,1,2,3] %Input[4:1,0,0,0] %Input[4:1,0,0,1] %Input[4:1,0,0,2] %Input[4:1,0,0,3] %Input[4:1,0,1,0] %Input[4:1,0,1,1] %Input[4:1,0,1,2] %Input[4:1,0,1,3] %Input[4:1,0,2,0] %Input[4:1,0,2,1] %Input[4:1,0,2,2] %Input[4:1,0,2,3] %Input[4:1,1,0,0] %Input[4:1,1,0,1] %Input[4:1,1,0,2] %Input[4:1,1,0,3] %Input[4:1,1,1,0] %Input[4:1,1,1,1] %Input[4:1,1,1,2] %Input[4:1,1,1,3] %Input[4:1,1,2,0] %Input[4:1,1,2,1] %Input[4:1,1,2,2] %Input[4:1,1,2,3] %Input[4:2,0,0,0] %Input[4:2,0,0,1] %Input[4:2,0,0,2] %Input[4:2,0,0,3] %Input[4:2,0,1,0] %Input[4:2,0,1,1] %Input[4:2,0,1,2] %Input[4:2,0,1,3] %Input[4:2,0,2,0] %Input[4:2,0,2,1] %Input[4:2,0,2,2] %Input[4:2,0,2,3] %Input[4:2,1,0,0] %Input[4:2,1,0,1] %Input[4:2,1,0,2] %Input[4:2,1,0,3] %Input[4:2,1,1,0] %Input[4:2,1,1,1] %Input[4:2,1,1,2] %Input[4:2,1,1,3] %Input[4:2,1,2,0] %Input[4:2,1,2,1] %Input[4:2,1,2,2] %Input[4:2,1,2,3] %Input[4:3,0,0,0] %Input[4:3,0,0,1] %Input[4:3,0,0,2] %Input[4:3,0,0,3] %Input[4:3,0,1,0] %Input[4:3,0,1,1] %Input[4:3,0,1,2] %Input[4:3,0,1,3] %Input[4:3,0,2,0] %Input[4:3,0,2,1] %Input[4:3,0,2,2] %Input[4:3,0,2,3] %Input[4:3,1,0,0] %Input[4:3,1,0,1] %Input[4:3,1,0,2] %Input[4:3,1,0,3] %Input[4:3,1,1,0] %Input[4:3,1,1,1] %Input[4:3,1,1,2] %Input[4:3,1,1,3] %Input[4:3,1,2,0] %Input[4:3,1,2,1] %Input[4:3,1,2,2] %Input[4:3,1,2,3] %Input[4:4,0,0,0] %Input[4:4,0,0,1] %Input[4:4,0,0,2] %Input[4:4,0,0,3] %Input[4:4,0,1,0] %Input[4:4,0,1,1] %Input[4:4,0,1,2] %Input[4:4,0,1,3] %Input[4:4,0,2,0] %Input[4:4,0,2,1] %Input[4:4,0,2,2] %Input[4:4,0,2,3] %Input[4:4,1,0,0] %Input[4:4,1,0,1] %Input[4:4,1,0,2] %Input[4:4,1,0,3] %Input[4:4,1,1,0] %Input[4:4,1,1,1] %Input[4:4,1,1,2] %Input[4:4,1,1,3] %Input[4:4,1,2,0] %Input[4:4,1,2,1] %Input[4:4,1,2,2] %Input[4:4,1,2,3] %Input[4:5,0,0,0] %Input[4:5,0,0,1] %Input[4:5,0,0,2] %Input[4:5,0,0,3] %Input[4:5,0,1,0] %Input[4:5,0,1,1] %Input[4:5,0,1,2] %Input[4:5,0,1,3] %Input[4:5,0,2,0] %Input[4:5,0,2,1] %Input[4:5,0,2,2] %Input[4:5,0,2,3] %Input[4:5,1,0,0] %Input[4:5,1,0,1] %Input[4:5,1,0,2] %Input[4:5,1,0,3] %Input[4:5,1,1,0] %Input[4:5,1,1,1] %Input[4:5,1,1,2] %Input[4:5,1,1,3] %Input[4:5,1,2,0] %Input[4:5,1,2,1] %Input[4:5,1,2,2] %Input[4:5,1,2,3] %ECout[4:0,0,0,0]<4:6,2,3,4> %ECout[4:0,0,0,1] %ECout[4:0,0,0,2] %ECout[4:0,0,0,3] %ECout[4:0,0,1,0] %ECout[4:0,0,1,1] %ECout[4:0,0,1,2] %ECout[4:0,0,1,3] %ECout[4:0,0,2,0] %ECout[4:0,0,2,1] %ECout[4:0,0,2,2] %ECout[4:0,0,2,3] %ECout[4:0,1,0,0] %ECout[4:0,1,0,1] %ECout[4:0,1,0,2] %ECout[4:0,1,0,3] %ECout[4:0,1,1,0] %ECout[4:0,1,1,1] %ECout[4:0,1,1,2] %ECout[4:0,1,1,3] %ECout[4:0,1,2,0] %ECout[4:0,1,2,1] %ECout[4:0,1,2,2] %ECout[4:0,1,2,3] %ECout[4:1,0,0,0] %ECout[4:1,0,0,1] %ECout[4:1,0,0,2] %ECout[4:1,0,0,3] %ECout[4:1,0,1,0] %ECout[4:1,0,1,1] %ECout[4:1,0,1,2] %ECout[4:1,0,1,3] %ECout[4:1,0,2,0] %ECout[4:1,0,2,1] %ECout[4:1,0,2,2] %ECout[4:1,0,2,3] %ECout[4:1,1,0,0] %ECout[4:1,1,0,1] %ECout[4:1,1,0,2] %ECout[4:1,1,0,3] %ECout[4:1,1,1,0] %ECout[4:1,1,1,1] %ECout[4:1,1,1,2] %ECout[4:1,1,1,3] %ECout[4:1,1,2,0] %ECout[4:1,1,2,1] %ECout[4:1,1,2,2] %ECout[4:1,1,2,3] %ECout[4:2,0,0,0] %ECout[4:2,0,0,1] %ECout[4:2,0,0,2] %ECout[4:2,0,0,3] %ECout[4:2,0,1,0] %ECout[4:2,0,1,1] %ECout[4:2,0,1,2] %ECout[4:2,0,1,3] %ECout[4:2,0,2,0] %ECout[4:2,0,2,1] %ECout[4:2,0,2,2] %ECout[4:2,0,2,3] %ECout[4:2,1,0,0] %ECout[4:2,1,0,1] %ECout[4:2,1,0,2] %ECout[4:2,1,0,3] %ECout[4:2,1,1,0] %ECout[4:2,1,1,1] %ECout[4:2,1,1,2] %ECout[4:2,1,1,3] %ECout[4:2,1,2,0] %ECout[4:2,1,2,1] %ECout[4:2,1,2,2] %ECout[4:2,1,2,3] %ECout[4:3,0,0,0] %ECout[4:3,0,0,1] %ECout[4:3,0,0,2] %ECout[4:3,0,0,3] %ECout[4:3,0,1,0] %ECout[4:3,0,1,1] %ECout[4:3,0,1,2] %ECout[4:3,0,1,3] %ECout[4:3,0,2,0] %ECout[4:3,0,2,1] %ECout[4:3,0,2,2] %ECout[4:3,0,2,3] %ECout[4:3,1,0,0] %ECout[4:3,1,0,1] %ECout[4:3,1,0,2] %ECout[4:3,1,0,3] %ECout[4:3,1,1,0] %ECout[4:3,1,1,1] %ECout[4:3,1,1,2] %ECout[4:3,1,1,3] %ECout[4:3,1,2,0] %ECout[4:3,1,2,1] %ECout[4:3,1,2,2] %ECout[4:3,1,2,3] %ECout[4:4,0,0,0] %ECout[4:4,0,0,1] %ECout[4:4,0,0,2] %ECout[4:4,0,0,3] %ECout[4:4,0,1,0] %ECout[4:4,0,1,1] %ECout[4:4,0,1,2] %ECout[4:4,0,1,3] %ECout[4:4,0,2,0] %ECout[4:4,0,2,1] %ECout[4:4,0,2,2] %ECout[4:4,0,2,3] %ECout[4:4,1,0,0] %ECout[4:4,1,0,1] %ECout[4:4,1,0,2] %ECout[4:4,1,0,3] %ECout[4:4,1,1,0] %ECout[4:4,1,1,1] %ECout[4:4,1,1,2] %ECout[4:4,1,1,3] %ECout[4:4,1,2,0] %ECout[4:4,1,2,1] %ECout[4:4,1,2,2] %ECout[4:4,1,2,3] %ECout[4:5,0,0,0] %ECout[4:5,0,0,1] %ECout[4:5,0,0,2] %ECout[4:5,0,0,3] %ECout[4:5,0,1,0] %ECout[4:5,0,1,1] %ECout[4:5,0,1,2] %ECout[4:5,0,1,3] %ECout[4:5,0,2,0] %ECout[4:5,0,2,1] %ECout[4:5,0,2,2] %ECout[4:5,0,2,3] %ECout[4:5,1,0,0] %ECout[4:5,1,0,1] %ECout[4:5,1,0,2] %ECout[4:5,1,0,3] %ECout[4:5,1,1,0] %ECout[4:5,1,1,1] %ECout[4:5,1,1,2] %ECout[4:5,1,1,3] %ECout[4:5,1,2,0] %ECout[4:5,1,2,1] %ECout[4:5,1,2,2] %ECout[4:5,1,2,3] -_D: ac_0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 -_D: ac_1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 -_D: ac_2 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 -_D: ac_3 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 -_D: ac_4 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 -_D: ac_5 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 -_D: ac_6 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 -_D: ac_7 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 -_D: ac_8 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 -_D: ac_9 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 diff --git a/examples/hip_bench/README.md b/examples/hip_bench/README.md deleted file mode 100644 index 3f3d467..0000000 --- a/examples/hip_bench/README.md +++ /dev/null @@ -1,51 +0,0 @@ -This project supports testing of the hippocampus model, systematically varying different parameters (number of patterns, sizes of different layers, etc), and recording results. - -It is both for optimizing parameters and also testing new learning ideas in the hippocampus. - -# Best Params for AB-AC, Jan 2021 - -This is the third pass of parameter optimization, starting from original params inherited from C++ emergent `hip` model, and used in the Comp Cog Neuro textbook, etc. - -Dramatic improvements in learning performance were achieved by optimizing the following parameters and adding the following mechanisms: - -## Error-driven CA3 - -Modified `AlphaCyc` to reduce the strength of DG -> CA3 mossy inputs for the first quarter, then increase back to regular strength in Q2 onward. This creates a minus phase state in CA3 in ActQ1, where it is driven primarily / exclusively by its ECin -> CA3 inputs. By contrasting with final ActP state, this drives std error-driven learning in all the CA3 projections. - -The best params were a WtScale.Rel = 4 for mossy inputs, which is reduced to 0 during Q1, by setting MossyDel=4. This is in contrast to the Rel = 8 used in original params. - -## Strong ECin -> DG learning - -ECin -> DG is playing perhaps the strongest role in learning overall, and benefits from a high, fast learning rate, with a very low "SAvgCor" correction factor, meaning that it is really trying to turn off all other units that were not active. In effect, it is stamping-in a specific pattern for each DG unit, and potentially separating the units further through this strong Hebbian learning which, using the CPCA mode, is turning off inactive inputs. This ability to turn off inactive inputs also seems to be important for CA3 -> CA1, which works better with CPCA than BCM hebbian. - -However, learning in the DG -> CA3 pathway (mossies) is definitely bad. My interpretation is that you want the CA3 neurons to be able to participate in many different "DG coded" memories, so having CA3 be biased toward any specific subset of DG units is not good, but the DG units themselves are really very specific. - -## Reduced DG on Test - -Decreasing the DG -> CA3 input during test significantly improves performance overall -- setting MossyDelTest = 3 was best (going all the way to 4 was significantly worse). This allows the EC -> CA3 pathway to dominate more during testing, supporting more of a pattern-completion dynamic. This is also closer to what the network experiences during error-driven learning. - -## Somewhat sparser mossy inputs - -Reducing MossyPCon = .02 instead of .05 was better, but not further. - -## Adding BCM Hebbian to EC <-> CA1 - -The standard Leabra BCM hebbian learning works better than the hip.CHLPrjn CPCA Hebbian learning. - -## Performance - -The graphs below show number of epochs to get to 100% perfect performance, for the first AB list (First Zero) and both AB and AC lists (NEpochs), and also for the memory performance at the end of training, showing how much of the AB list is still remembered after full training on the AC list. The new params show robust learning up to list sizes of 100 *each* for AB, AC lists, in the medium sized network, although the AB items are almost completely interfered away after learning the AC list. In comparison, the original params had slower learning and poorer AB memory. - -All models have 7x7 EC pools with A, B/C item pools and 4 additional Context pools that differentiate the AB / AC lists. The `SmallHip` has 20x20 = 400 CA3, DG = 5x = 2000, and 10x10 = 100 CA1 pools (i.e., original textbook model size); `MedHip` has 30x30 = 900 CA3, DG = 5x = 4500, and 15x15 = 225 CA1 pools; `BigHip` has 40x40 = 1600 CA3, DG = 5x = 8000, and 20x20 = 400 CA1 pools. - -### Current best params from 1/2021, list sizes 20-100 - -Current best params from 12/2020, learning epochs, list sizes 20-100 - -Current best params from 12/2020, item memory, list sizes 20-100 - -### Updated original params runned in 1/2021, list sizes 20-100 - -Original params runned in 2/2020, learning epochs, list sizes 20-100 - -Original params runned in 2/2020, item memory, list sizes 20-100 \ No newline at end of file diff --git a/examples/hip_bench/def.params b/examples/hip_bench/def.params deleted file mode 100644 index 3065351..0000000 --- a/examples/hip_bench/def.params +++ /dev/null @@ -1,419 +0,0 @@ -[ - { - "Name": "Base", - "Desc": "these are the best params", - "Sheets": { - "Network": [ - { - "Sel": "Prjn", - "Desc": "keeping default params for generic prjns", - "Params": { - "Prjn.Learn.Momentum.On": "true", - "Prjn.Learn.Norm.On": "true", - "Prjn.Learn.WtBal.On": "false" - } - }, - { - "Sel": ".EcCa1Prjn", - "Desc": "encoder projections -- no norm, moment", - "Params": { - "Prjn.Learn.Lrate": "0.04", - "Prjn.Learn.Momentum.On": "false", - "Prjn.Learn.Norm.On": "false", - "Prjn.Learn.WtBal.On": "true", - "Prjn.Learn.XCal.SetLLrn": "false" - } - }, - { - "Sel": ".HippoCHL", - "Desc": "hippo CHL projections -- no norm, moment, but YES wtbal = sig better", - "Params": { - "Prjn.CHL.Hebb": "0.05", - "Prjn.Learn.Lrate": "0.2", - "Prjn.Learn.Momentum.On": "false", - "Prjn.Learn.Norm.On": "false", - "Prjn.Learn.WtBal.On": "true" - } - }, - { - "Sel": ".PPath", - "Desc": "perforant path, new Dg error-driven EcCa1Prjn prjns", - "Params": { - "Prjn.Learn.Lrate": "0.15", - "Prjn.Learn.Momentum.On": "false", - "Prjn.Learn.Norm.On": "false", - "Prjn.Learn.WtBal.On": "true" - } - }, - { - "Sel": "#CA1ToECout", - "Desc": "extra strong from CA1 to ECout", - "Params": { - "Prjn.WtScale.Abs": "2.0", - "Prjn.WtScale.Rel": "2.0" - } - }, - { - "Sel": "#InputToECin", - "Desc": "one-to-one input to EC", - "Params": { - "Prjn.Learn.Learn": "false", - "Prjn.WtInit.Mean": "0.8", - "Prjn.WtInit.Var": "0.0" - } - }, - { - "Sel": "#ECoutToECin", - "Desc": "one-to-one out to in", - "Params": { - "Prjn.Learn.Learn": "false", - "Prjn.WtInit.Mean": "0.9", - "Prjn.WtInit.Var": "0.01", - "Prjn.WtScale.Rel": "0.5" - } - }, - { - "Sel": "#DGToCA3", - "Desc": "Mossy fibers: strong, non-learning", - "Params": { - "Prjn.Learn.Learn": "false", - "Prjn.WtInit.Mean": "0.9", - "Prjn.WtInit.Var": "0.01", - "Prjn.WtScale.Rel": "4" - } - }, - { - "Sel": "#CA3ToCA3", - "Desc": "CA3 recurrent cons: rel=1 slightly better than 2", - "Params": { - "Prjn.Learn.Lrate": "0.1", - "Prjn.WtScale.Rel": "0.1" - } - }, - { - "Sel": "#ECinToDG", - "Desc": "DG learning is surprisingly critical: maxed out fast, hebbian works best", - "Params": { - "Prjn.CHL.Hebb": ".5", - "Prjn.CHL.MinusQ1": "true", - "Prjn.CHL.SAvgCor": "0.1", - "Prjn.Learn.Learn": "true", - "Prjn.Learn.Lrate": "0.4", - "Prjn.Learn.Momentum.On": "false", - "Prjn.Learn.Norm.On": "false", - "Prjn.Learn.WtBal.On": "true" - } - }, - { - "Sel": "#CA3ToCA1", - "Desc": "Schaffer collaterals -- slower, less hebb", - "Params": { - "Prjn.CHL.Hebb": "0.01", - "Prjn.CHL.SAvgCor": "0.4", - "Prjn.Learn.Lrate": "0.1", - "Prjn.Learn.Momentum.On": "false", - "Prjn.Learn.Norm.On": "false", - "Prjn.Learn.WtBal.On": "true" - } - }, - { - "Sel": ".EC", - "Desc": "all EC layers: only pools, no layer-level", - "Params": { - "Layer.Act.Gbar.L": ".1", - "Layer.Inhib.ActAvg.Init": "0.2", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.0", - "Layer.Inhib.Pool.On": "true" - } - }, - { - "Sel": "#DG", - "Desc": "very sparse = high inibhition", - "Params": { - "Layer.Inhib.ActAvg.Init": "0.01", - "Layer.Inhib.Layer.Gi": "3.8" - } - }, - { - "Sel": "#CA3", - "Desc": "sparse = high inibhition", - "Params": { - "Layer.Inhib.ActAvg.Init": "0.02", - "Layer.Inhib.Layer.Gi": "2.8", - "Layer.Learn.AvgL.Gain": "2.5" - } - }, - { - "Sel": "#CA1", - "Desc": "CA1 only Pools", - "Params": { - "Layer.Inhib.ActAvg.Init": "0.1", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.4", - "Layer.Inhib.Pool.On": "true", - "Layer.Learn.AvgL.Gain": "2.5" - } - } - ] - } - }, - { - "Name": "List010", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "10" - } - } - ] - } - }, - { - "Name": "List020", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "20" - } - } - ] - } - }, - { - "Name": "List030", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "30" - } - } - ] - } - }, - { - "Name": "List040", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "40" - } - } - ] - } - }, - { - "Name": "List050", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "50" - } - } - ] - } - }, - { - "Name": "List060", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "60" - } - } - ] - } - }, - { - "Name": "List070", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "70" - } - } - ] - } - }, - { - "Name": "List080", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "80" - } - } - ] - } - }, - { - "Name": "List090", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "90" - } - } - ] - } - }, - { - "Name": "List100", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "100" - } - } - ] - } - }, - { - "Name": "List120", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "120" - } - } - ] - } - }, - { - "Name": "List160", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "160" - } - } - ] - } - }, - { - "Name": "List200", - "Desc": "list size", - "Sheets": { - "Pat": [ - { - "Sel": "PatParams", - "Desc": "pattern params", - "Params": { - "PatParams.ListSize": "200" - } - } - ] - } - }, - { - "Name": "SmallHip", - "Desc": "hippo size", - "Sheets": { - "Hip": [ - { - "Sel": "HipParams", - "Desc": "hip sizes", - "Params": { - "HipParams.CA1Pool.X": "10", - "HipParams.CA1Pool.Y": "10", - "HipParams.CA3Size.X": "20", - "HipParams.CA3Size.Y": "20", - "HipParams.DGRatio": "1.5", - "HipParams.ECPool.X": "7", - "HipParams.ECPool.Y": "7" - } - } - ] - } - }, - { - "Name": "MedHip", - "Desc": "hippo size", - "Sheets": { - "Hip": [ - { - "Sel": "HipParams", - "Desc": "hip sizes", - "Params": { - "HipParams.CA1Pool.X": "15", - "HipParams.CA1Pool.Y": "15", - "HipParams.CA3Size.X": "30", - "HipParams.CA3Size.Y": "30", - "HipParams.DGRatio": "1.5", - "HipParams.ECPool.X": "7", - "HipParams.ECPool.Y": "7" - } - } - ] - } - }, - { - "Name": "BigHip", - "Desc": "hippo size", - "Sheets": { - "Hip": [ - { - "Sel": "HipParams", - "Desc": "hip sizes", - "Params": { - "HipParams.CA1Pool.X": "20", - "HipParams.CA1Pool.Y": "20", - "HipParams.CA3Size.X": "40", - "HipParams.CA3Size.Y": "40", - "HipParams.DGRatio": "1.5", - "HipParams.ECPool.X": "7", - "HipParams.ECPool.Y": "7" - } - } - ] - } - } -] \ No newline at end of file diff --git a/examples/hip_bench/def_learning.png b/examples/hip_bench/def_learning.png deleted file mode 100644 index 0decd65d5eac2ab5c9dd27a1e3ee95da17395912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73151 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 diff --git a/examples/hip_bench/def_memory.png b/examples/hip_bench/def_memory.png deleted file mode 100644 index 9ab900399ccb5d2449dfa70a7e01db39ecd0d479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72315 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 z .05? > .1? - "Path.Learn.Lrate": "0.2", // .2 probably better? .4 was prev default - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: ".PPath", Desc: "performant path, new Dg error-driven EcCa1Path paths", - Params: params.Params{ - "Path.Learn.Lrate": "0.15", // err driven: .15 > .2 > .25 > .1 - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - //"Path.Learn.XCal.SetLLrn": "true", // bcm now avail, comment out = default LLrn - //"Path.Learn.XCal.LLrn": "0", // 0 = turn off BCM, must with SetLLrn = true - }}, - {Sel: "#CA1ToECout", Desc: "extra strong from CA1 to ECout", - Params: params.Params{ - "Path.WtScale.Abs": "4.0", // 4 > 6 > 2 (fails) - }}, - {Sel: "#InputToECin", Desc: "one-to-one input to EC", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.8", - "Path.WtInit.Var": "0.0", - }}, - {Sel: "#ECoutToECin", Desc: "one-to-one out to in", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "0.5", // .5 = .3? > .8 (fails); zycyc test this - }}, - {Sel: "#DGToCA3", Desc: "Mossy fibers: strong, non-learning", - Params: params.Params{ - "Path.Learn.Learn": "false", // learning here definitely does NOT work! - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "4", // err del 4: 4 > 6 > 8 - //"Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - }}, - //{Sel: "#ECinToCA3", Desc: "ECin Perforant Path", - // Params: params.Params{ - // "Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - // }}, - {Sel: "#CA3ToCA3", Desc: "CA3 recurrent cons: rel=2 still the best", - Params: params.Params{ - "Path.WtScale.Rel": "2", // 2 > 1 > .5 = .1 - "Path.Learn.Lrate": "0.1", // .1 > .08 (close) > .15 > .2 > .04; - //"Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - }}, - {Sel: "#ECinToDG", Desc: "DG learning is surprisingly critical: maxed out fast, hebbian works best", - Params: params.Params{ - "Path.Learn.Learn": "true", // absolutely essential to have on! learning slow if off. - "Path.CHL.Hebb": "0.2", // .2 seems good - "Path.CHL.SAvgCor": "0.1", // 0.01 = 0.05 = .1 > .2 > .3 > .4 (listlize 20-100) - "Path.CHL.MinusQ1": "true", // dg self err slightly better - "Path.Learn.Lrate": "0.05", // .05 > .1 > .2 > .4; .01 less interference more learning time - key tradeoff param, .05 best for list20-100 - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: "#CA3ToCA1", Desc: "Schaffer collaterals -- slower, less hebb", - Params: params.Params{ - "Path.CHL.Hebb": "0.01", // .01 > .005 > .02 > .002 > .001 > .05 (crazy) - "Path.CHL.SAvgCor": "0.4", - "Path.Learn.Lrate": "0.1", // CHL: .1 =~ .08 > .15 > .2, .05 (sig worse) - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - //"Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - }}, - //{Sel: "#ECinToCA1", Desc: "ECin Perforant Path", - // Params: params.Params{ - // "Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - // }}, - {Sel: "#ECoutToCA1", Desc: "ECout Perforant Path", - Params: params.Params{ - "Path.WtScale.Rel": "0.3", // Back proj should generally be very weak but we're specifically setting this here bc others are set already - }}, - {Sel: ".EC", Desc: "all EC layers: only pools, no layer-level -- now for EC3 and EC5", - Params: params.Params{ - "Layer.Act.Gbar.L": "0.1", - "Layer.Inhib.ActAvg.Init": "0.2", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.0", - "Layer.Inhib.Pool.On": "true", - }}, - {Sel: "#DG", Desc: "very sparse = high inhibition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.01", - "Layer.Inhib.Layer.Gi": "3.8", // 3.8 > 3.6 > 4.0 (too far -- tanks) - }}, - {Sel: "#CA3", Desc: "sparse = high inhibition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.02", - "Layer.Inhib.Layer.Gi": "2.8", // 2.8 = 3.0 really -- some better, some worse - "Layer.Learn.AvgL.Gain": "2.5", // stick with 2.5 - }}, - {Sel: "#CA1", Desc: "CA1 only Pools", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.1", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.On": "true", - "Layer.Inhib.Pool.Gi": "2.4", // 2.4 > 2.2 > 2.6 > 2.8 -- 2.4 better *for small net* but not for larger! - "Layer.Learn.AvgL.Gain": "2.5", // 2.5 > 2 > 3 - //"Layer.Inhib.ActAvg.UseFirst": "false", // first activity is too low, throws off scaling, from Randy, zycyc: do we need this? - }}, - }, - // NOTE: it is essential not to put Pat / Hip params here, as we have to use Base - // to initialize the network every time, even if it is a different size.. - }}, - {Name: "List010", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "10", - }}, - }, - }}, - {Name: "List020", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "20", - }}, - }, - }}, - {Name: "List030", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "30", - }}, - }, - }}, - {Name: "List040", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "40", - }}, - }, - }}, - {Name: "List050", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "50", - }}, - }, - }}, - {Name: "List060", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "60", - }}, - }, - }}, - {Name: "List070", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "70", - }}, - }, - }}, - {Name: "List080", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "80", - }}, - }, - }}, - {Name: "List090", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "90", - }}, - }, - }}, - {Name: "List100", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "100", - }}, - }, - }}, - {Name: "List125", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "125", - }}, - }, - }}, - {Name: "List150", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "150", - }}, - }, - }}, - {Name: "List175", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "175", - }}, - }, - }}, - {Name: "List200", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "200", - }}, - }, - }}, - {Name: "SmallHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "10", - "HipParams.CA1Pool.X": "10", - "HipParams.CA3Size.Y": "20", - "HipParams.CA3Size.X": "20", - "HipParams.DGRatio": "2.236", // 1.5 before, sqrt(5) aligns with Ketz et al. 2013 - }}, - }, - }}, - {Name: "MedHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "15", - "HipParams.CA1Pool.X": "15", - "HipParams.CA3Size.Y": "30", - "HipParams.CA3Size.X": "30", - "HipParams.DGRatio": "2.236", // 1.5 before - }}, - }, - }}, - {Name: "BigHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "20", - "HipParams.CA1Pool.X": "20", - "HipParams.CA3Size.Y": "40", - "HipParams.CA3Size.X": "40", - "HipParams.DGRatio": "2.236", // 1.5 before - }}, - }, - }}, -} diff --git a/examples/hip_bench/diff/1vs2_diffs_1.png b/examples/hip_bench/diff/1vs2_diffs_1.png deleted file mode 100644 index 3db122fc2ecb710a324f87b695542a8a20f998e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127522 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%0A0EK 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%0DqF{Ua5t$!9wR)EZ4##(!$ELzc2zy(_Kkbu zI_x_R)|LRc&Y2C^(H+V^&5OMrYaSZuLw6fHE9j35NAT7EF3Ffqg1x5H%>zK(x@$RX z$ca}F646Bp-2OrCPgX$a zq0Wd@^*;lT(2?G+TX3y;TTfYVAwhlgw+nznq-B@e z@HhpS;q#qL(tKn=v=`lerTRgJ^VN0S^O&48 zwEZ_|wWTQ0hjEPN&!(=+wRNB{wxGEn6#N02sIaE28bd~&K64ID=>Uv z^xp79@dUov0#D>hcUXy!TU4lPkAIn0CY;scvt1zOB9U;9-69vjm?5oGMkW5*S z@M^0bBfBXc-nm=1H?-4L{Wn$H59gkqdsG~;I{xgckDVt<=YtOSso2GfHlyNbc%V8) zE$vP&y^|Yr%fn1D?o}4&ylF$GQqkqM1J3yEL;8w3?>VR{WHy%Of?!qxU{@ z&~N3&ber&2CP#A1amj%zLk0Tdd0L9D2qkqPa6qiQFsVm0+P#d`s}Lexbo#3dIRuY# z7-6Vrs}bp{d8zqDR9{zk0n28~wufC>mrVr=hzRltr+Osj2vOtjZP|dLjMjElk{RYq zbI2ra1!o6+;Kmo+qVu$L@{i zH`4QcwcE}1`!>x@_vc={)misjzi^)cNcWgkvs>dGY$aqObv{+?nl zEQ!~@B_TZz!g9AsNPgj`+IYhJc}uknd|bM@asO(3k|<$(eYYNj^C;I{{b_?~KF)y7 zaSwY2MMC4QXRAL*o`&BcR75FOCdQz8GTiH9$vfV*JaUp0eVwWCd7-xnr5duVyJqV( zy@;`7bkMNsT!NxJ@?&eu^eESwK+OJn2UI9_YP&$os}-MJ&Q+9tmFxkQ#H;=uypDfS z7QcqG1(kUfXEiP==St`0j$G8wZ+Q3RV2{&e4s4)(7ygFv`I_@03rEvZkV`flSgR>b zjA!P0Cly)gv->|eb2}!Wu@F5-fUD6LcvvA_!QA}|${3o6+xaF8vvXG1Ltf8Qev8R` z63Z_KP;W9qQ2aA><3dCy&=SlaGS%R5WMRs>m?8P>lR5;ABWl@4dE!qW9Aei&Uu^?* z?mjH@F+)pv9(nnkNeeDW3%Sra_U^dj7*)b?PH3LjvWhxw(d+Fd7}>s zD36(%EsOSstcA*duLV4i7F$Tc?}YJskJtXA;+e#Rb(4k)%8xBpfJ78Wn@lI}1F`N5 zHY5X{C$sz@M3$`KcDM)ziJ(~ml%p527JPZfU zz)2@^7T*)J96W?jMbe_n%&gP)ZOuutMGqcl==*spi>oGnRF6Za5~6}&Yh+WRH6tc! zB}n<0F*q{DM=Usls-yCTv#qM=z~!9DeWKG$GwMT(U&+7oVHQA&nlfmsiVLVn{xwi%BB)>#A2m$zCtaVCgPGSu4dn}@L zcy}zn@v`gs)3yzgGNPoA_MZt7-%q1;2bWa6rJepFt;rq~eEpG`r$*eCu{_T=SCh3& z-%d-TDjF8!brroIP2=wKGCB@nX_5Dh`pths6?%xIeU!UIjmh^c{yZif$4&87al=Ia zwNLC1MM;q!mp$z;PS*qJ9e*8aNYY~}nNscB>lx9v>)7H)n+_|1h4-knDe#i*7MCFI z)i5Bv*u%?x+2oneQoINM6diO>dH?9nT@dlRFF89%y6-io4!xUy=P&)BHJ zxKQ<>Ht+(XXaY5>77#5icNn&tHDuH&{b|I>-e!>bhy9=p6~+%~mC0y3dI@1&am-l9 zXqa9HByy}cVthc76p4pG(+uLI+PaC4!Ly872h8@g3oftt+NI;XLd?HWBuErfbU)V| zyXGH(w=NJDUzIw|ONy_rMb{l3LT2}H?(ADy->cb#*twGC<`)o%h=%CrAA>s%mLF7= zGz*A~^JL9oxF{MrQi#GTbxpsS1v{E}wsqH^# zW`OnX?5uqp3p%2R0S7s$_gdAEUJB=bvG)Hg*#GwzNH0UtZ6x)T#N{Wrk^AEutNY5Yvm0Xj36JddF+BpTV+R&wozuY8m2G2G7kl z&SK5lzngYdi=P=jwZlZ;{0@BGV)lja-w>H=FRMp{*t>gh)Ya%Kldb^xu}T@Ov~-j2(ebCxR?zowZsW;&L&ny5Hxjs$TOr|n)T4V}t`?l_gXz;D}+tk#Qk&gp<&Fdfj z(3PR&U=u}4!G$hwuGxAv7LQf}+v)7<%X*IFK4rTQYb#g^4X>a2--Cbbvlb>meR1%5 z_1&ZYG@LNH#(3jsC>FB=%WB>xx=<*K6EBi!C!dk=hjXv@v_+9bDx%TAh_^iunFA}e z=%b4w^)#|mF%#LkfE_O2NBQl@SZ#0O*&fID75K$yqMes!7B;FOz5alq(txGG^-MWa=c{ zdouxPXVj2FnSFvE60G;xBTVq(VFAZn5G)k9)jnGUk+>ZZOIJUsZNjaUYaW9E_N#&5 zbWsKOMKot*rTpgy*JvFOu>L2c^j9i{rzz*{rqc~RCf`uRBGO#+%};}ahmEHbilv1k zR>3YqIl3q`C7U}!9Aet{EWg65(p1AyD`M03|LnDJT~cp7`o)S2{T#|RVOYdjwR!X_ zzW!LgD|(`PCIRsS{ZNquu0;&=2}L@WW9Mj&>2Srz}cjam*cq>fGbs z_q6BJLjK|Q=29KNeib?Hbl0DhEk!cPlc*89HhL|x3Q4h(iHheW+O2zz!0kjdUi9fq zACvU!I1T04yu13mNLjy3v@fi$vt}hn{l1CF%@Ie2#ZXCcccD86z(jmjv-X3|ul>Mr z0cNPP+2;|96q0vR>GdCq<1kDHGQQiyDIk>A+)`%|y+@ zijZc*dn8Fhrr1U}5_+7pb@@e$VQpzfPLZHy?RG*8|2a5+$Qe;~vicq7GV_c2V4V$_ z%4Ob2+Bx1$Ph8@5L)f=Xow)placW=lYUdk6eONR z6ytt~c5z z2uBzjylUR&06{j=gP+E#$FQ~22+2(27nA1Dz#lI|4(tN_>1YW_lCCZbBP5%oP01mU zhIgua%Txb)RI^T>zv*9YP=r{XdQET+u(K(o6xwdnu{Q^2$k>?c_MK;C`bLt<;4)cz zGRn@&1%0_`t<-}-iVSsqnEnT=`Mw4$Y=s7d%31a}n4BG}Wsg-U!w0x=wtX#?#hO67 z3`C&4>SKOCmt=pX?}J`|ao7+W>qUKENvuknI(txr+z0{kily!y7CW0M$LdwG-_T6akX5_S2l7D zK8zyM=zqEj9+7pv0X|o+TNhFcP9&(v!M3q_RDS;{=%Shcv|SBZJ~g_kqnOr9(D0Ol z-!f(hHb65L4#^_@nGYeYNZO1GfPoZA5iUXv?6s{J)vpfsMk?(NGO92}RoAf%cZL_D zG{sLHQN^qb%S#V=Vk7ys%r*+9xLs>WrC)=S+9DzrG&!WE#W*a5QPe+>^T&you`Hz zKe&vq!KYK}{})BMhA&KT615M_@f&sJeA=uyM8xvH2uUA3$(Z@ghIZ{$j4wfbx2+a? zGXocx5DY9ddpzhpdD)-3c#vA0Qc>sNEhnMR8)p>=GShNbH#@ZXZA({>K~c#0gKfzH z3LhQ!Ga`L<$2ByG6lCBq+Z?LT8-czu1C>cRJf^yqWzH`xog8oMCZX9Mka43`9+Sm& zrO57t=UqPT(3zM`?v=jqMF>_c8TzzbGI`IuVxq;6W1@ErrQMV-t0=BHE=zP5Yu1w2 zb5-6dwCd&q3AV~gm{b?`LLfi}Z&$|1O=nKfEiJ2mO+NcaL(V&@S7?5@^Tvpd&J_*< zZHBwKmDblBijoli4GVp4M2xLHE>Upx^TUygPv*qBtjmod3Ks(g&5J#4&a}zAW!~qd z_DFzRbu>Do2{qeHzZo4Hh3Mi0<ufjOm6Pv=U$Oab9IM|l9(Uy4EA5Ap2N;$e z@_RM`8J&q1436Jh^@T|qm=I}t$ru>!oY}GWQQG2$qT(*Oveu<{I#qGhR;MTVUFY2= zX=;;WJ@I>EkNT-7Kx#zH+3f0i0>5!KX2|%li8{`q1w5DMvVKorZ;4afN^vjaY^WsJ z8@7tKassBqbj;EoJY5pDP;aJYRniOKsQEfKi@pEQd54qgk~M$O&E+Qg5XJqT-sVFf zrX&RW7nXoq2n&c*WaRa~fK;bq^96_Ca%l-ENb>C7dF-jO(z&zb4n18_$6fxQ2QA|g zU#&x{mIa{;u^A)6P;Ht|XT*)yW5tl_P&2D1Wg2E#W|j<_FLVreL+(gsZg{wk;wrmM zl-Y^0YX;@bbUF-h$B-mCP-nQd?mQvnUY)Lhs95}QDUhk(PL zB?fW#ylgP;her+XMyyZXYxy;b8#|porLNN7qjkdDkaY4u*5kd(GgQLDc7QT0$pT7`iHmQX5Owyjyl8>yM5&udONUe3nWDp7T<*#H z0=FX7_%nj1=}{&=F53~=J=QvpYuT74sN)K|*d{7v@ktEDK}CR~69e;@0RzH6Ggb@f zK_2p{ed=@Kr8(m2-!L6x7@vgV!ME9lI-hYsgArv_r7hT8aBY-h)=;0cx7AZ)BcW&c zhweR=j(T}#bO8kC2DvJ>mg)~Tbh$#d@DFcwKJ(}YF54WE@8#SCL?zf!Se}oZAe+e9m`fHIB8CtF48*N%iX}7V?b?2Rq#*f=Ljuq$b z-Qmm@e~{1BhMBm7J}j@=W$RxIHiia=q{dr{dFT`1V zf0Z%)S%Z0)wqtXZygfE^yz){`FsWIi$neb$9M6zIk^I<}s8PY;Jy&#P!{G@`(y~UM z^$1PS`7ZSKva`GA5u-0kIU+e>)RNHIXy#$xVIX3H-oMVu^Tw>R7AyNR#ft@V(j@Bi z>TR5L@qBHD+VuEq4-@O)NbQ%C35n8ebr~g zxv@qmYI^9-wN1f-EE)gc1c8g}2%kXD?OQLN_UvRtH@ZvZ{i+BPr#N0yJkYkm<)CIrWuRWd+b z{Cbur+7>xjtP|%=KL!^ckh*_D2O84Ug;XJ z09-vc+M~_K%SUta=PccWXJIjPRqwnLNN=NI#kZJxMoh5s=JQ5e_<&deURM)@#Ld|0a7>DJ@$-kgpb5D^p7UWZ7>OrbVqAo zYP6^WjiFwv6M%HgCk!Z|moeIICrC=AVa`|M8!Pqlrk%eW_DcJ?wrI&{eM=wCY?8DN z^cR#{Kd2JXR-Gitcr@-t9ez#WfY#Qri;U`Y$h%+p^l~$vTp26i8$5O#RcdC=Q&XIZ zoHBXYNz^gRl%x@v<(HRL4ZbO+lj7XB^_D^c859`ads;WOS90@SccP{f-wW)n;he6)Q_(rNa02m~J-!c6XK7aqy;%(=wD)aya1BmybzuNb-qWrZV^o^7l+lc+E4s92bsQ&6huqiBzd>(*kJ27J zXwb>3`BfLf>Kx_K!E_Of9u?AM?xZ8zh+ND{Fz&Q>#I~`bzf{Da~ z1G7PTXV3*K)9Q7%u6jn?HFj%Edv8pZlW5(iG@BM|u|hEEfwt$E{sucyA8%p1u|9h0 zdu|96?54J5iJLCW1jyGXwkPQtH_=kGjl{98icn9jtFtJf;v{eJN}$BX>`lm^7{?Ot@$T)Tqg&+J)Mgq&%At=JZr_ zr&Vz{6wI}29KPVe#Vf+4tueqVS$a?1sF@vfN2-)K?|j~@H>+!Q(7hfbi1+vv_Y-|q zn4nnweAkFG+97q^=IdtFEj3WfUD zNuF7J4yuZA^0TzBtx)8+v~5GeL#>{3_rRUgu8+ZBXK`liM|rw_T{pq$zF3i;DT(}g z<=q_(@+j_VWjWQ7YtZ{C4}u-2dL%{r6s|S{l?Ew!`~*SwFYyI1zP~+hfx+WmO&a4x zv0J;&vwFIAe^~IR0zD~oyB}BN5(l4+7_Z>GVB8VHt#$T9qH{uC&eugG)EdxQ;3$(atKJQg zUOKTmeLcz^l{O|d!pavskVgdj>nW&VHuCSd)CLVahwp+Ietti2by6D^Z8|hDGAonH zlF`eOG~023cVPndrOp_SqI-ap2TVP~OxEF@aC2nllKPXZ3D%8+>SX2O>fxyH6KXik zN&+iY7$^j}cf3L_uNK{o!T6^$k798V=MRu$LN>Zy_YtWw+RFqc_CcWIuE>T%G^xoUj zgmjOp)!@RE%%w(v6*9z;Ms!9of+1 z^AHk3V9VATN7)_g`doI@t2>nDpf!DW+;nKn{g~OHkwV}R9qMebA-zb1^P-UX@XO_&1-zp%ZqOs1TH(*A#?PmGxXbgWM}-Qw{l(XiJ_fsnWB{_=9JY-peFZe z5zo|{z~b=KtGWV-sTG%XH>ediIr^?C>L-&2<7=&#T2@Ep@vjEf3WaXX!z3wIzEQ!7 zaWAd-d9SW+jSW^0s-%f8v&=obdNH$#wuG6J<@KA&2faEH;k8p`y^0#7uRB!X^ntAt zvK(wOdUu2Gs6?W}6~zqaIo&LE2JNyAmToUy({CRL0_DeV@8Hgg^8P z2Df70`CK;<{8pnnNs zUYzB`vsWC7s@z55c!gS}d|hv>P<-yx9L0&q(S@D6mIeXbI;1vfV9rGd>&_ z3XwPVt9D86+1$J&F7qW02_cO0oceX9-j9vg<~K}Qv_MAzh+|4gV79a0x%fcB-9qxO-s(HQ4X*&2G542UM1@QD0C6OOOIuQHNxPGtyNC+bR&_tO zb@ko)Xdy6>c{OusOL1GN33e~$t}f2K%DEj}A(-9Ac&wr*$Smo* zB2+3(Kdoxssa51vbhM+^35H+USS%Z()5M6&A!Z`JmO8j+9c+6ZRNq?+(wTJdp0Ydm zM{Nj%g4V{Os~bL?d@zW+CrZE}TArIAzKMV9NwG{rC{}M`{NOH>t7~Xhr*t>bI*-9- z#HK5%cU6V;`zoGBl6Tob`-f?+)_&&-!~MV==RRbJnpOGj*cXA`3`96B2@Re0sJiRr zLtd`QiY`72zoExqbZdVW&Y`MG(faZH=|O=X6V=L0)FsTGfP!prdr=1W#_)QfziVr; z6pNc#oi*$-rIr~Rq7X~Z7@|Bv@y?*v^1fPHM_3LAJ!?oq?UGkn^O~3xpB_0t$eYh} zDF1VCZ*)^_JTtmbyASn2+zJ861I?7wye;8bZLLY&ag&oyqgXrH;#uqf$u%0{e=r>| z_8GfDA>TN#<5}09CyZsSPLVgL)hqn=5uOtJ{UNyP)u|jhY_`mo>iX^Yjd5K;$lE?zzVjI<~CZNISceWZ)M?C{O#V zT{rW=teOnWx6Jj7+E+GXL|Dcx3@Osm{xaROjRb?J0Uv{&iV@~`=| z>FmU0EUF}qlTx%zBnx*$k6<;A>(5*pwp^*5OqKz#?d?=vp7Wa4=%5{?bfM)7>dqR$ zZH)Gy9eYP(sW4o|v^Z&x&I;7XmU-rO1B0t=GAK3?4O`|qLyT2noaE}tlJ0X7NSX5w z^qux0&n5dZNPn=O*gg@NjE>*3{~ctG^SOdl1+>G(!wceA8GYHt_ZOPJ(=#&i-X5EC8aDe{kzj_N1*}Mh zH>~?z4&ocV$~wLwON+lOzT~7x@3?@6NEs)YA7zp>RK$%MG7j;#a!fzn%Nck${uzz^ zCPLdzzx!6I_fjInI?>3R_7>eXGZtdmHqTKR^R2>iDK%;6Z2h#C^)CEGc>HHl`57~$ zFx&LcVy!UK`@a}F3#cf=b>Ax@ihw9cOGrw0w{#2*LxXfkH%N(ex5Uuh(mhH_cXu~P z&CuKr-DmH8_BnUmyVk6MwOBKY@B7}Te$W4X-U02HL=$hfa~be^;zfh^aU=u^&+u>e z?Wc#RUK}bTVY~SbqEBlLq%q7ll!0|;?eoeDa#rtk!;C9m*VL~)N4@-1FC$f>?J_8L z71=a?Mn_XUacD1dB5ZH=S-z$2aeQ@O?C(Yyve+;cRwFj)Us`D$P(U)!cuMCX zy9<3b0+Yz$_|}V4n2H8v^d`27B}ia(Gcm;^2%Oj zi?ei2WsCD6J(jCW(-M4sOE&yGk-K{l?5djcvTwghoRT{<0@8yC@$+;T zHTNTA$6>cif%^Awk|dqct*M07Yf5ku=EHdAFDO@Fr^R!$OJ1M#h!2$3-Xdy~lZXdA z^Ir4O3uak4m?%$Evg4G44-Y;|-uBg7kPxZsHmmnY)hRWu`kwVo+?{g!+?z+{q*AcA z_%x*WbmvZQp;&EKwI)u<`s4P5vlmv`nph4jIcPPfrSh49qOky>*S&S8qMDhGpj)80 zwN|m5ELX}e>~8^th$nOm=Qhjq+D$^slMMniOG>iw`)aU5^!=>VFLX4ewB$QSw1Vtf z(Z!un;ROdNiZY*pI(6cJdkFQsWu`Dz+*5YtK2BNbQgCylrWBJELT#EnnDZ`^L!?&w z{e?+w4=SnM67{`Xh?bO_TO7_aW><|A(rYzWsg@H25@FrJ4pkqzBl$Ioo7oIUXmPXD-P-*NWni{>+T<6OL{JQg0zyri=@k5 zh8i|$(I3XWWFZ!NoTXbEKQhgdAU$JHEo+*H0oc!%T*n@PCnMp2FOd&Zxaw5Xb)^Vu z<4Bq4HoJHa)nWXy6x%a(uzKX57e05t|3f~Ab(CnT27~EJH30YG?+0nLQP}#UR4kzMtRD^zTS{~YN$~3}l!PTm2qoooSMwKp9#>{rq0+Nr9HUaN_=m43nR}MFItXNt2;8TC zw25ON=QW0yyA=(`dv|;zYlM#5SS>IWJ1TnM&-BT+mId9>c?9j)(7@OzxAIQJiuc4u z#cDo9kBTXm_izoLha_es?bG*%L+h$WEK7ghSxL8&?eOC{H8=y4o;edW%B_32>?@U& znndI6l9}gfScppPQkakCbUPhW8*f2v2U}ADFZJukvT4d9K25CZFAw+%G9=}*TV+8B zkc)5PEtWQ%P_D;x;4$2M0noidtY+eOh zFRqnE@4{6SMYQ5)amx1$1SgKlv^#0=8SbotJw0-*C{M)3bg55QX{V@T^#+ZwvNrkc zyVuy~lk5{JU#$lIn3%Fr7S?!K^VU2gp{ewKU-TpI-GNN;*E8b2V(Y*lb-dGehsomk zrYFxdU!qhQ$l77A3-T^4I^Pvf?NcP@Rc#@=lqDW(-S=owdol_OJc*ir{bWI@sNRfD z8M#!$%(Ho=Y@=(u*Xov*;W-^ni2qHNQZ8xLv_iff%Z9NgOcWFR7-c^|*$X45{|BB7 zM!BhJPlK)#<<VkU5$5quYDy!f8oIT{UFaJYUX8#x-U+Y8+zGnPlZi4Kw~6iFmN3 zE4@f=`s$6M*lwJmhfSSy>!AVZ34QChg)LocV&~<2hOKb)9q^vU;FcjfyypG)5q@a& zL&ce6&vDjTQoUySk-KRYHe25x(EM7OP;d(~oRd;-u<%^xGzspWjCL!fU$0#J@@HFl zq}^i#l2?*H+@IC$b^21D)dU|Fj3pD@o(D|t{m5%HW8<-9)1GW<8Abp5crkgP3X-kM zwS(yi=AOF)G=mhEGwpox(@yyFKor~Kn79OuB~2EOmDas%uFvudqQdFZr$S<1l=Cfj z$YZqlKCZ}DB{@7tTM$ZeFFGnl5sJ%19waQ`9b3_AcXk5zE#6JLF)S+nmas*y9#6kS zS=7>4_zMHq2!ZW8Cc0(iarlq9uBm?-i_afp+2M+6Jg944rx@ny7LR~FWVOmB><&o=;*jt#<|mO z1Fi9D6Dp2Dv3*-O-*jPI8f0(6;}*Ly9Kbu~C`@bjPATChV-8k1?sV$8zYc2BK<%#$ z^QDu@p|obYZk}JEiyt(DSrp6+vswmWi#4Tb)rnXG4W6kX-<4XTLYN)w`u8x#bkmyI zdd0g(1J0N8_ORE=X8j_-Y9XW_^)~XyegOwEgtmZI20`6b)KFU|?uIRxE3;L3VadoZ zK%E5Hnuzo0y#^IK@@UG2EEY8Z~mmaLW;LhT)yUipj$q0-|_XT?}7XRsv%jgQcS_!$lD|s#c z6BO?IB%&|UINcF)kPidf__NJQE%4(Ytqz)PnRq{i!B>B<-7Z1vm+ZWsCQwZg-{<OmO!M!#keNP@{?L?zVp<(r zlDG3grE1e`Mjm7$ZJy|6Nv|+VX52&Mw%TRi5+=V2);6Jf$~s$G1G3&o#PVSw5_KEC zo_?A@&mcZ=>%`udw zs@CNk%kBUE+ViUMe6B;B_u~s}>j=8IrwBa{$K?W@QlN_vH>fv+=_Iz57~JUFnAYP| zB1Kg+$fzxQ!M&q5a%pT(nX-XmI&$fKFT&?G2eYD{ybV2pU{0g*K&c6pAxmr!^A>`5 zIm)jViGGzulCW9b;t{!7jBo}T%%FC>gPdkFN37VBoPGsif^vY#QrmF0b<$@;#?497 z=NfejYLU8ZR9bxP$#-jZxSaM_i6qJu@dJN$W#(t&L!(vp=NR2+zP^Qg&d~MwbEkPW#4kQVsTjjN*#eE3 zydi^n9vR|0H!}N1!10qwtx^(87#WyI#9ZGm)G*~ZT^v43@;CCG+5El(B}}XDC|U2^ zCh@*~O_mhz zqiL}G{Vj?FVIrgbJ4C8wHSdOn`;oZ7JG8~R9t=wt;cs+SA9xKU^t0!`>Zf*<$t&91 zzkYrmW?fy}zn<01t@Q+)lv1@cvU^UkTzlxctuwci`7C)Sd~9Ld)9RZ^Bjw~7{YOu8 za&fDNs|_zZ?5caGqi66cFi!5dP@?^ZfkZ06${GEyP0jIURP?~@*J)a`2lM6cm}Rsj z8S}-QiIXeY`WWVCSV!;|0w^h;N)jF+8ZC8P_RoIfhf?#-Rdnk#qa*x!hCuS@UoT3; z-acA0Tib(co8)nSwjQZRhVQwru}Tphzk2j|2uRIO}A?zJYBrYIa|}#>27O;HY`j8o0Opn>VH5fISYJig&&gG1;zq z_B&A1oO3HtPs9>ghZplY9#3v=uih~FHKNcXL=I}-`FXzN8(atM4ugjEdyzf|h-#2p z&52}?A^GPi`{H80FE7cSZ$^-ol6p7Pfs2NAR#No6zB=Z`3mGmDO+H@k%1_?nQF0MP zb#f8LEHsi=gpbEubOCN^7aj=olc(x%GEPOd^p;)+&OY2klDp?WY;n9j+c0w97Y4ZV zv2j)jiD5Owf#bw@(Wgd7S6N!lYCez%l4m*s+!5yiDeUJ(q@Tau?teV{P*YI=pj30VA?S<_vj( zg7u-+I`}4rlb`2%_5*|}mE<1I`X+K;>Dw|}uI*O*p0BqjH z6w+r0m|JmDhYPCX-T5Bz_6=|&Y^pOUAMR<8-h;t-T?a4_A7$FyOlX}g-T$T<_i9TH zZZ>vt6Ad;0c-|-yn&Z+Cu>`w2E`Z zbIK~w*>Zu0uB7+}7%ioZ16+S?mmJ%7WW}p-#x0m3&C?Ifj>_z7`RR+00ymG8x_6JG}#x;500Z6y&WD^cgZ-F zAYC8ye7ODvJgN6j9}Ev8MaT?A-k^?lCr9vZ6m7N^nrwe^0~R9mGC(=-c15X4-_H$c zM4%~W%;?{DOvX*iOH6AKS~yt6h?Ugdmuh}#(=slV?`>4tIAV8nd*G?kk{iSToygYK z-aMs&CKbBzcvpu;2)KZ#LVN7)$Y5j7Pjwhhktvoc# zY^%B|YGe`Upt0{q&I(&I?*toU>+2VEnMXmO{_iPc7!)$9hOg0JvIP_RUTw#nPmY$l zXy04L5e#(tQ{WS%W=%oYEW3rR_cC4BM)uE|HSM_h1tfI9frZ94@ie<65E~bX%e2VDTnp4!jT6Xn4*sIz}dM@lt#D{}Kfi`X+6IKb1)*(9L# z_a!ufvN*fCkK9GrGAn{_*sW7Z*~(sP~$dW|p)Rz}M%kKx$Yo9@MpvetA|1G=~I0zN?4p5|j___|P$0hYz-G@;v z2S)NmGdoXJ_xjhHod$^8$)38|NlAe+JD=WTX=^m#^@eYjc~}%S76$3CRnqno81{C4 z6b?Qj>lub1FM3;jz-#I_$Xf`?-%DsIUtjcZtQSrfJ;{#y3if>5J>!p zr=|Rj8}^ZGm4Hw9z?ZMJ%&#+F&=d9CeO`4}njLW~)5D|cvpCs-KwA@~iyc~a);qq+ z(9O>ESxbuL0b!|FJtUfpY5scAgy&4XYS&LI@tLYep9RYHF?!wimC;?+B;@y=@5*R8 zjf;MpwKRzzWOmQ}9ESN#EE<3=ld8d8n?h6d26SD_b^|oc=Qhc3&2eFEl@RTnq)7n> z490m1xvucWh%7=Hk+0q~1g8_N&SRKWUJT6F)}VsaM%@M`^YWZfSVKSK`<%8mQe8p? z@)^QsW9|~yR9N@l-}QNZyFnYdWfoX>a3dHv{YdI~s$;xsBdqAga1_j)m&QFKqtI2v z|1Cmr3^v=>#r^l0u3|*pF5o9S7a{!;aL)Xo+j@S#GhcFaU#(z{$xcLvQL{zD`CL?9 zpZ=(M_!1fD;(C1<9Ewc_toXhghx?EFMn=9!(5LvgwpuC$#2#wFXkaP_m3UBIEsO54 zlC;(w4KN*X?x5YvcsrC%7X)tu4=Pm`wJ3*#xvp_;Mdqa~G%VEI#z#fcBs#4{fV zsgP9WXTVL{`S+7QuTKZu_il!X=Rq~}6xDl+_)sh}9$|8Zn85*9E%8zA!Ly>B!|oJ7 zU@=xcpGPKNZDu#Fh-$mKd%RsYx6>clq&j~s=p2Qw)wjLqVv|dJvqoX#KGS{>zQw!4 zdB1-EL`AXt6L9wq_->sD!!YD!-i_mx?LoYN*Wr;|aSrr&2NYw+upDz8i;u89lt`z2hLt&rJ-bnQ#`2L`%NE)@ZGNkHg61U}I z1Esjg<>Ye-O$YY(H3cjJDP=cy%k-reP4gf6-WSIvKRm`=dppEGd6%Rt0{gjEVS_Qc zJXh7`vzIXVaCmX?{nBV@v6WfohH={aahn#*oeLu_U~|J6>Fgtfk=H>m2+qUv#MGHl z*&5AePko6BNq;|D$2DMADlrCq2E-?6{7d170L_gI1nBNtn&Qg!d_U8#3lew3ET49` zJl`Zn&ze!$J*lIg^1t$8>prw>)fgf3jP12e)Y?AEVog42%f%uS5;lKHPfuU zwXpIwFmZBN{G~wxuNqT+rRM(`D%7ihT?daRZWW!G;jXUGFHJ=&vB@rj@DZ;VwJZpH zXgXY(z~JrO-ntvJ-rdDj^DvYPzotaw!t-9)?co2L`*ct-@v@2;X8Xm(LyG71u(1*q z@yc8G4q97_>`FZj^HS$O!eM+44Z&UuKBe!LG^c2pRmetqbgZc8WaQrWPgK$hYLid*NUa2IU_SrIy}L= zN^cPXw~CFz?;u$PRR_dg5mFR=GSBuB9_tLAlXbfsTggN}P_X9R&_vZ+wNN3jIJ?v1 zDHTYzwQFkOhmgg!Ta(-9=pIli>o$(Dj!o#gYKn8aiTADTicflJE!`rU>>BM?Tvs{yBvF2lK7S($q+S<);)q~O*}mwOz1A}r zLG?QZ(i$?+TGf%^OYpm6aiJ}E)(_+dr}pUu!kyX|(8zj+dCq<$Y!c-sc=~DWhocl6 z+@p2(Bs7ueFSyb#`CG*(w3e~-CDNO)sbz+*{d9;pq+f$7-yP1FMmzg?L<$?3 zF1q8=Ti(aQX2$|~ra~8UY#i11diy2Uc3~T@F)q)gWpr%J<7=K}g$-<4h}q z2oR4VSs}ihOxuDwsvQtF+$vD8AJXK{mUdPj{S+@>8SJ@0QA1ySaJi2VV`7DDhR^`5 zjcRF8Rb55dM}mn;nSq%kJPWAn7i=8x{k@fZI_j2wG-^u_hmX%SkcM4<G!jA+c|CD)hz$u5Y)OFD`5GVsEx?cXib2ypnBR+uytSnM5 zhS~r}S#gh7RFNAoyNM<3+fzfpc>}KD&N21PWh6#KoHq3ny3ytVaH9U@mg!ldg5wZ% zUCV<7j)qEb3S9gvrn1-T5M*~Plm6h;nmM{`1O2Q^EHaJuL8YV8O8jEN#h~}{vRr+- z-WtvKYpoKyExA)xbzO4z2X;2vC2|6H&(bqY?`|B<(giPNONxRTweyF%$;-C~XwNuF zpQ$kz?hhO-WO(21t&x{GbkbYxeeBD%qU&B#miG?3I~)3TnlDK39;58Rqdh`gjT6#L zwqc13Qdd!u!%NbruKwiqDyqJB7sg$rP^LCy!s* zruYO~n<(WM4lb+YGe`d<57#<~Zv-!Xg;8`w0xN2(E#%QAwI-!C=v zjni|imP1-b#?Ws8w+R^3A=uDR&m~WoSmGjLvx><7I27@K3pmt^WceGQ&+&E~zPxo4 z^>_;LW@mmVxk&yzix|iwR2RFMcG@x;@XHm^xRxOmCP{*_w;p(lEEGzK#8EShpdT$i zWSH-M4H4~k-mUBLyyqticP1*!q~DK__rfqjZ#vF2x8a!4vb+}wAFr$nsXZuG3P>KT zx~+Dyq3GKI<;gXlJngv79o^n9pIhdtH%hU2!fWDbwaCdu4|dio^YRi5%Nac}kLgD=!fIAT zx6aSPVb@(U)dy&bIya(w!g-O8W5iBBZq#i`-ax@*9mb1`P4UQ>uP3=R$64S z(08za!Xk&yBOG|XjE=F6yM0tFcE;)_dW)qJX(E}DBu-j)2!d;sjLg_U6X>2wGCW}H~@stYIW zw;iv3U(A4GQdCy+B;vay(mcu4^8DB~WF^3RRA`WxyyJM7zhI3+Sj#tqUT*CDlpxwf zBqF}zDfteFGadand#Mtd3idY{4G$Gz8|TMMNY+{_Z_G;&Xe(ne?p)}pTg=#ko)1)< zuTuWWtbHPd+}xg`y+ra3Jjo4N(D-PFx3Q^N)=$+H7(0oThx}6%m>p&K>nr^z5VF2f zK7t6crJT1ufp}YWWS&0TdIk~X!s&RZ!G$VcOVXB?+^STv(~Qh1_Z5$|Ui4?5Rk60P z{iF?^bZ^rI|{KhWcy5YMnllRIlK{^ zi@T=;V>@!1^6*SWBEuEQdfoL^k8L9<2kY|MM(!KA6Z^n?Kk4}bE;_H8b}5ta3y0Io zD9@K08ck!|;$wh}**R08p8f97ZEnt7=2Y!&dN0$4@7h>XUH!Q##p++*itv1Wb8}=| zWgA}LvtFh*I4B!yYM^qvxn-imC>Z@hRt1}YKLDdJ@*VASu6MsDpl)s78Hjf0gt~tq zZX64o1rk~3=8<1l!% zfQKHEcH4_5u^|Y*E#@${d-3r3L(J*g?D%`N+_BD6(}J~LV>qo)@SoJI15w{mYIRU2 zKkp-IDW;i9l{vB*p&s$V@U7UEO+)?zhL%-xyhBcVv$sBn0I)({wh`M`>YNBb7LCSE z1FTv}eFWQhJW~i&)zRI$L%AY4!M+j4g5J%_6U)}S*%8aQwlaz;*0F8Kv)vs=L5Fd> zOHv$!KP%}U-03rhPfGj6exhj13&Z!(?kJU%G>_{XJ#P<|qtQR*r+d^V>GF?&IA;UR zs~rqLOBfjOwChO!q_Vz7?;f@5RGyK~0*%FgBHfA|6 zf8GaCu3_J!KH?>`D(N~e;3R}K`)+Q;y*`BKPJ#Ad^XA0Tj6T!S6v;sDhq;F#11`;< z|DBx7=e8%NM1(Vg8&`zj5uqw2ny;(tmj7TnTRZh8n(rX7R)^d@k76ZG!FIRd@Pr;7A;#i;=T&{-H8#mf3L zUCUJ|t>fiDYXJoZAzTqBbr~)Z+&z=WtEcZJbt= z6#GEu+3#mABc(F!pXie1!H*t%&FX=GjsI*Cg;SN@{d_iIVdJ$WmdmrMF%;o3!fQFIo+0wDwB6+1 zbYoo6^h#-xaL_DSK%*x*hbx*3rCSzgEg*Ge_tR#4CZAN=V9TVKAdo3YUlHG*>C%+b zDwOF&3b@dl!PNV(sz*U@GyqDg$?MpSIbs&rIxYI-3FzsAm2#0X@yyFV@zi14!OK27 zLoF(>&WIV6wpd&g$B~1Uk+Vx-N`UO?LZo;>qg>dJ@BlxJ@ddcF;f3{oqS=c>p)K^g z(jJNDrgF$aTQ1TsFCW7EpW;7}0=v4jVHch>_pJw{fnMf-;(}F42{6(Y-KM?*5miQ}){8_1txVyUc4HuVRUY`u;6d zFIMGKU{e5&Kg;BHvnBtbcTU>eh~y>3OoC-@UheYou2X$M#;KcYVyY`}RXyFU?pmO5+*=JwmxYBs1IDa@6()aM)Y55c zt7m=xN$q~iJ5nd2olfK~fk|MoHPPF@bIiTl$RkVdQLN&W@BNu|x0SZEC;O>$`+GyV zKx+nNRF|4LX~#DW1M)aG|G`ryM^az~-1)irG)UpReLICi0tJKRX@|Ms*2S{HY&QYf zkF5uu^yINmrD+_f!x!=fPnP_E^mp6)KJwH{>>D4{3(xkiAC8JcEYmx`zyIjvrG|IN z!dlgQz%I20O8r4adB7$W`{OwY50C=H0ri{67CHgslT=06!iIMyR=PYOB`Fo`q0-a+TT(cTnx)Fp?&Aofxteu=eRjiMnr4wTO_rja zznfv0{R!*LkBw_d7Dv-BaE%m&E(W_MbI#Qr1mh#x2AAa#N{)HDQIe+J{>_t4CUrH_ zgW%k;MmIjdm-AovLR8cf`m7&OH7p_<|M2*ITUvdq;9p1M_A#EnA%_sMbro+{Swfk< zc)90MSj{t)A}1$X-;vbz@`L6R(G8{{xUVvk*BlZBTjeh_fD^ zqP!@qs0ey-k=Xw;uFvc~2mjPiMEONvMVzUS*P4hxVjaM}DYa9MXq3HCLV6wCEC$EpkYsPY=<`HDyRUj_p#=@4sR4~t?ZytDZ5|jYas5=9W&YYyowi@EfF-=S z*dHcX>CYpFT2MLE+FM3&U+M?nN;#iA&lIdrvCxt>n`&Vf1}BKEl0I#i(X|t4TvI@s zuwkTN{_+&XKphhtCjniMGxeG;jcL9&d{+3qChX7?u6FfPP**daUWM0DuUFU6hHps< zdTDBtKjKS$l?dgLgPu^qqi}VykT;wX`YTrliTIikls=fKCG%@SB!KOJ^?ItpG2-9s z-OiWFXb=p3ms-$ewQ3nYgwc|$)%8nt)gXF1FkJihz5=$Xh)1CvIwC*`Jz>t4?lv^D~aUHWDR0G8K?*}q-bB$-cGD5&X8Vp1f zmnSDISjYT?jb&k@I_Q%lKu7pJFEE7FDMR-$<XO=>Kd z6&UP)A+im}@F|611T*n6PWJ3lTb;YFm9sCeN$e9p= zUII7N_s@11_aLFIDRNs>u}3`K?^%MLJp`n6av!ZD;hTiMfYKm)R_V_04`TRkdWc;j>xAU=oL*{wa}wn2K13L2jyr zS*BVyV+;R_C^^LcB1%nE0f122|ASD*>-;;R&mLLM}F7VPM81VS+|@7e3yjF9!j`TI?x2aZ`n8U{(wBIu$vgnC_DT58`ZQ^j#rbX z+t;swx;+Jb?{)0TX^NG`+-2TW42?+?(Z@*kGX*WxE|z|Jrtfn}qY z&OKo+>u8J#VF#FQtO_ND$X4Cy54U|}E>8hbmhGGGN5tcQ>Xh%mSvtfm>XJSzm@z^h zH8=>DZ@1R#5(U?J(b`*-n{k%j5-iyld^DB%WpEP0GP9w?Q!blwjDJ9G=cXh4i_dy7 zsJ6xCbGb6!oJDddIGDNJ1Ks4euALS7xa(2;lqPXCB^VZSx@ddZkwaK1k@o4Vr{e;6J*(bIjujCt0d?j3P=N|he0iX{au8{0CB0iSJRT@ge-S^33!wF$Q# zhTfgqVN5lwCe)r+Y>ZBxU82#AtzQ-93yOPRnex39xYdYVmwfW4{Cf2aadh-%3lTd$ zPFdUpo1R`P?Xjq6ESueM9DAt#Lk4PzjrbH;L_R(u2$YT4QX_dhe#($8QKVS5ky;!c zDDuQI0CS&hVK7YYoIZvKzEzzE@Z=-k3(Dnko$k7lCmw9#;e}o{kIbwr~U0M;CQEc%)}H&9@9WMpY2d@jG^l7=K!JACiENDnth2YsyeV zxy~$jp)aN`fjO1Q);dJ%p4Ua-iO*}JBsB|q@)BugD-*Jpak1&bK(b{1(JNZ+{sLBX zwnu2Uw)!ak_lqWv^iP?+R|vh-zjCe)a(f{=!HENEK4nrS&PV10&qD_Xwvu;cfA<62 zl)2-OOC3afx9)jU5>5-R61)>{$~rDv`lK9i%nQk8V`c#vvtO!ocrf*b-XGAm>l#oF zm2=v?p`tD<+!yDJ2d^8v74=1v`jZs3KYx>`rnHyVWd8Y6kVzh;Tbt@jtTzb-_hVH2 zhSChNYy^{!aA-LIbH&FI`=Iy`OI|4h)%xx6hb{Ql_uUsf_cY|uqz`I^uh$QMjr#o1 zo#_+Mu~TiZe@>OPZ=Ux>c-D4fy6<-ab#&v6PrsKr!r@ch5Ibovm_8$n>V8ys2hY6v z)E3QZ#dBqyN*GoVi_zBzd&mq zb~&*Fik!Lm32r;9t~tsw7sz>7c#mIA<01fhkbP^9VCg>B(U>Xai~r(*((i%WP1e#> zlMDpo@Ft~9wugmEnh{_4OUcct{*}AXI>skz#~SC(5ie_beA2~)4v!ZQ!GXRHazMXg z<%d7@zq!+#04+}blK>j?!Tc{SY-aR+iYL!Rc}Bl4;fzhS79d`gfEs&qm%kXuA;1YVEAU{U zlaAfu{PdWXv)IyNhisolS#2Kjc@NF~PHTy+CxGp5Dk7WF-24UUnIBZ7^jSvRDogJ` zjdqfJ82VU_X-$e%EZg2Y%aT2&hX|qGho^og9+@fRX8TZO5(3hok>e0!3&8E=G`aN! z3_{(miRghyI<1X33be!oYZ{W@-j|kcOqlC^-c-DrNzzSTj+e7+S#+of5jdAXAO7@_ zhkc(W+kb}Q3f+aBi$O2}G0>fIXRwADzZKIxK75{F`=moD%!%3~8Q!?pA|U7YI_%vZ zsce+=rU`c8QJ3p<>+={iMFQC$16zi6AEo#$U3j|9+zkW_`ef6Vg8Xg2cr3!4XGfdk z1!3;n1Vdg)*x1;zmG990A}Y*Z0|VKGg~LaR-viiqSwU&RisvcmDQKDyspJeiOuEsB zba}FA1^|D6YP|p*aWdrx_$-cjxi?;|HI2{!oZt*>aR^{BE_lTFZ|d zUh+Pu=5dC*Pkz3&p5bLMOe#taeb3JyUNknkGgF>wr*h}81htsQCjZkur$VefFx!Bt z?l>Ob;O*Ai&q%%g^~X)8Bs>aZNU7b^vE=HCvV5=j>Nz4shSO(HM-ey<1iF!ipL@z^ zSDJMy|2s#WY6%13Pt5hqa}8JZ0|SNw|@|LwgbSZFudo{aThU-S@*{%w^6aw`75x2^;h)|3+ds0yReq&NF73Q!r8NpKe96Bk3D7QCfCrHi%#wa0 zLMRO^-d;hk89nr{952tT`C10SQ)l)04^ijI>dK`pU9(?U&*-9&d7vMIDE7k@1<4>x zr_(VsQDlB?!<8;L{8C{jPC~R8o_X3mlc6qQmvLH7_Q|hkb>+y{_uK1Oav5GyjyK2; zx0Yn^c}{l{pA@~^SlWxCPw#Wghu-S&Ov(VMsQI2wd>k+#ol3WL!|M9~Q@h#foDJf_ zOS_Q-ruwOf;OHJ@C8oE$VKD!&RQ#zwU+;45+Uy(r{`&rI$*_1fb787Fd_OvJ(G}4i|rVJje86bYCGfI zXxzN)IKp4bCYzuo9sZlvb5u5BV6=Ft@dMBZK}n(-M;qHBQ@IljjjU~n?&=e-5uA1Y z6qj0n^U$6Y()WBG2cA^4)_t6tlM`iX5Eg*s-lnFlrYO_b*T=@^O7*Exv>6#Yc-j&u zb0@`roGsw;+|P2AyI4QS_aI^1K#AM<2`HryBmR284*-9!fBTGDnuhtTe}GOwQLKz* zdH>(ppZovD{(6SJ`$SHwP~zfKUaPG41|VQDB58RP0H+qG-pG2W44(qwKdw#A3Pr}D zpe*-mQA!BFIU^X}h95qe+5tC8dSRs9%}Mx8Vu98@1)=fIOJI2v2NcJHPl6lRMoJ(D zX8xO>I*xmzOnqF$AUjC{UmsvssRF9?-xA+PsQ>v}u9E_m*%{hzMr%6Pxv^~Q+}4q5 zTlBmzMJF9hk1y(3hJu%eMc2V^A7cm4dqfc;PWl1(>^x&%jqpJb+yu-#jei1UVT6CP zumK6+MsOXT_5m9JX^YQxYv`N$$fW6t>rL`;zU1-3AaXJ3QqRE=Qg`ZkcBEQ4e9?!2 zmP2giL2uesD-;xxOSAa1M+jsR6BBj_yw4Nr)cIMfF3UnP0-9>7e`*D%^7(r#V6(sqa{yj&#*% zHp(i#vxBFixFAH48$aIM63&q7wIE+<5K+EkLLAhjVjNR?i zbT87kq`0JU4S_Q-u|}E%E9G@ew~Q4mG(+rz3rR21C9NsD15FDe#*9rg%cv>z*tE%8 zv@)wHBe6FVCA;!oE`S5$SIV5Vf+I*dxjj%eVwbMA$5d3bKUA@@p7{^m*W9X&rUIMz zWxH-4n)pQoq1(Lo2XA`%6_IT`^iU3Xlw`Idokj?jS`If%Pqf`J*AV|2<``zZ*LgFs zA0V|fuJ7wVYq*<4PS$iD+kY!>VbHFl=3EvbmrSNk4gzPrBdM?k@SsHgT=KSn^={Vi zWvRqt9%z#{M#gDVALgIJOo-*R&x$pnhqCS&pz>}hUNM=j$S#}V!ln+2CZ}K*YoMsk z$AX7dqR#?KOE(h-8nj9ekVdYmTFMX-!;(ZyCNE}OT9TaDCvBR--c#1qof9K;HtM|} z*&sF!uH0UlE&C28*UM5}{9WDaG_yvA>*HlZw6h=AnyTaaLtm5K=!p`~`(3Up}L1i;PXu7fX2ol70>s4Tm%AX5^#>lVk-w z^gi}MYbWwUgzayDh1F{fG5>x*gvAV_x=tsrTMA3VYWEp(OReI2=~oV5AE7K~V%X)C z9xJq_g}1KIkRr2R;Ig-8w}5a+4ieG_0tSep=m50&pDM~NQVVO^e097-82@;IT3QQC zo0stZ4n&c>pYA-=q-l0frX@*mIM~|DfcFOtR)rbG{1)-H<(xQawP`vm{X2Dxx;-2w z7bYvCXfdH$I6t5bC*Bj(=aF!u`I==)_>t4Dzn;R!`8S)(Q)-Fh)y$_=8 z^+-Rv&v4qL;%xDlkYb_I-gn~SW-RXm&lq(=_|050k~CVee6PI72S)^m8|Ov&ldHjL z4Q5@TCLdW2on{pz#Ka0n(8Xz zs_a^3pB$sE4(DYp+6mQNn+T~$D$JjYUIPz+7!W(&t>2#NpTGf7bpjLAMEcXkq42?S zv82FlzX>F=q`cf&#`_457OY0q;*lfnG|u6em74!y)%P^5m3ZL$b+V1xndDLq%lroR zRnvA@UbC&a0}5+F23uf)Yy2|oiE8z&emrMG2_5af>l>S)DfLNj+P~?(BmYbNW_jmL zOJSIG-&R=wvFA5UH}IHBNAV%c_=}(VCt@M7R(iVk*1WkV-Q_Qw{b zp9B!9Se1L%+ z?Y-UooX6XY16ZY1KM5ZUKoT1urJZ*2i>vWA%KKjwVfF-ssd=%COE0KP>%TeDIy!~9 zh9;-zsB9GqqcSgwT5=UGDYl6hzL^lWLLKcygUgMU41{ls5YJ}LJNJ6pG1DBf)c8t< zx&DEovmV!@6`w{vG<>S>W9-di(8Z$`?_BNW14h-P`F(P9dQ(4Kr~4bv(o*xqPNLTl zQ*fUwVXEzj8-z$g4K?0({uDf4HCP@-;BjefTbt;zyN-NKF=&M-+tosUSu|#r)~A~E zz=MIJzM>Er6&)6HL#{H#p(sOpl-WC7aeBLj011p(!epF=b-*(!5p`Q^i6{gZvK)>GM3 ztqk5F;K->QhaRX!@t=@BWgdR({y9{-mZ=VR9AuosvVNzJbJWv4@ectaFf^x&5g3|d zZWjz}Db6oEEjd@*@`P5U!%zBNCJlWJB{+z`J@5FTsRk*Z_kw8?C|)1;=z1pYcd5*7 ziPt+=rNX(jvsOd2Ra2E2Vz|XV+kbr?eFX>Phc$^=y2k~f)H-(UG;|1l$Xh@7>Yc?& z=Iax;KwrWL2@$~K$pVQyg8#_qNM40KC=D&lEOJw|`#Nh&+F})y)N;LGd0IVS5WVFMF%0Z~|)o;%RPy%));ogV; zQWs*Z`>$*}Oue0;MPi((sLLP^#CJ}J!u|Tizd1`b#_jgmEPs zVKtzT)kl0FS^S87LR2Kv7xM4TzsF$tTN#NSo!O^r#LCocG;O+mC68@jEt~?&s&oU5F}o_Qr(IA=O} zHmpsAL%MkRJDS(wZ&S^?w+1g(-hj-~VeU*%g~*IgkQ`~v*S`iT97#88s52`$e|~NK zozcj6tP5s^5|8DjrtUWK+$JgMsePAqFrXkUZLsfgu0yUPbMv~ z`9=%5_dHC6Uu;O1Qs*YyrlXK%5Z2brxmR9wcfOG*Y%_bNDs4S@E1!UU?C8f^IA(*i zGgxR(M^BF);Z0e+Sf=w|3C%x%P;&+M0sG+O3oYV+6g%)fita5)n+^#V+&2~RhsgLJ z0=ec?1@OPA^6fyEc$kgCV%BquRFQ;jAM3-D0d8J7h~{%p)xa_iQd023V?f*(y@ii_ z`AO7LRaY!_!Irsspqp zy6QnGA0L_iBK3DJkH@B6@YA2oZn)!&X3us=u4e_)qPO(<_Ez~M12b6YIWiYI4BeCP zmEs?>i(e+P`}_W#nVQ|nG;?N82)B*gw(Q9wEtwxr5B1+136f^nZcW4}lF&-+(-_;zg1+i(-;2ouGu8L4XoR0RbENY*Sf-ax5ofGDx;NhM z6zIb8_faRX$isdx{9I6XwTi?HVbJO8$DT1{4{=B+(a@pXLGBs{~ zMfDpZfN&2vu=t#->-?RmZ|6SXcdc05f^pf1TC`a4;rYeZ!<@@u=q7Eiwfh}K%0&AL z+FlW_6VS*&*1Sx)*E7{}sKu;0Qc90|?{p4d?P{&=pWnxzBL$hxyU;)8b72qmq6bk! zFV5n+s$s)qB@A(2+}W`Xo!>QZbGkI=F=}xsccYzD55l0T2&-#SJ!fH;s^TzXL&&e% zUZI^0gIQx~026>mD%~KPz$%*j6wAS&wvr~J&e3BhCM^xXz?pYQr65Ek+I3+|-=7U6 zIEkB@`!GLw`qUVMR8%IV$UbNbCXy_NCUuhcowLX>*Rh_q;JdvGQ(t8Jy_)BU7}F-T zynTG1Uz^I?XXE;f^$$!RfG;o#44dtHm@(u}g_4fUMmCfQNd#t;; zw&pMRpV|r5#;=ZE;|j-4akm(Sq5Fl{`^c}>mChYG_-Zc%e<7V8NQCc6Px3HExJwN5 z%Nt#~1OWcP0CSGC0_zlJ=7ab1GZCm@qw^+!p|&n2QSx|mQy-g!UClEG@%@(wXmW<- zhtJkFX-}J*k2F+72PHfchXv3<0~#)T9cGalm^J8Ywm>F>(`kyJ$k$F9!4#anx|9k` z+p^TA;0`sTsV@SdBMJ&b{29V?@J`USqvZE`P12~OKjO^W))PkE@V3$NK#gc!t)-;{ zac;wBUwd?u-CeCFUtTK1Ly&@+T2u|ybs0@cG8RQOh8?LAJ3WQ>;BYvuMj8s0cl87F zVol@zTTXoUyr(MtCZ;Ff<-X;ZlaUtYkCbE!lZ|ayjpq(VGG}%cS`)Mt_8Ez2Aw&Wq z^&TKn*HH@u*RoQ^8W<`K&BSy`Ho7kd#(Oekh zJ%ump_n{qVUmN^f3gm&SLdqMg4fZV9=h8vNeoR<$znP+cms0=ir%!TQ<29E~*CHh^ z1BB^jSFSCOE=3y?+|(xy{t~Es!(UQczHJ(s5FMnfu#i(n&9L^BtGNO*#vm$I`uNfK z3GVrojhk4MVuL>Z$5PyHgr0-OXJlM7H8tfC%H&+yKItFQhFd%%rgZNpDR4f3pnyao z&1B36h|vyj6vT|GFf0!=Ldyqk-Wqm_E_U>=9X|nsX(MoY$GjVutbwRM3!- z8HxkqPdFy{^JTVtcaLcY-grQby2B)UrAdO%`bw9l7;ZNp_!}F zuBKVr*;$arTeo(1Pb`@Gwd?7jaT_cXwL#G>+DAo{lv0Ij5VRMv>(?0t0te-6 z-$Fe9IMC63!+mC-Akg34Uu4mL#Go;ue9;}{6>4JIrvcTC@h{Vfao0RO6%|q_0m=YB zz#cXJMSDXMdp%RH7&W#97s-rAEM4nE8!GQf7ZnvcrK;*}&V8F@{TTB-Q}163J)8^< z+Ivw6ah{57Dam40>D%Y-81gM~R~aJ%j=s}3Tzr-faw1L8r@5I4RQi}(eP9najejA) z{ZnAB8W3F+zPPJcX)Zp^v^s zwkC@6yI$iXO!Plx2NMX*mm8P&m?)_6_VpEVO~n?p|HH`0QtLIY>;m`dZnKJ9?wYNc?FKfji)bt*?lr>~1TK4*T2(BKp67-x? z-wYQZPw?H&Y$;nt^?g4}`P!Q@>4^S4!MgJ02=ET>iK#>i-=xxuycbGp)$(y>K?T_%A&Yu zPdbWSk-)6?d_0WJpj92|v{nmy6rvS|W_zQrLlH_SNRkk^2MPa4Mi0#wiZ_dV6&>xh zSbZnf+1Z(_`j}l8b)_!3OvlL=ehuD93JYu9jCTGi*Kb7~G|)hM`MLRcO&UDK_m4d$ z5ZFNb1UcJi@Sm-RO>HOTGUezMgHK?jG%3*@McIw0OnhHX@HzHt0)+DhRt^Xhq72Ve-H1xn8zrn!w z=oj}47I|YNm^I6E9u20H-+ay+`p|xK#_YSGlW>-nYW^fmE$hUa?_Zx2W&jx!|4urk d(fC*6H%8xSGYxvL82dxuqpO9`e6C?1_CH?-mreix diff --git a/examples/hip_bench/diff/1vs2_diffs_2.png b/examples/hip_bench/diff/1vs2_diffs_2.png deleted file mode 100644 index 2c6e4aa7d8d2b3e2220767b50198b9eff26ac38d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286384 zcmZ_01ymeOur`dlJHcTI?iM^a1PyM%2`)hwcXxs%z~aFrxO;GScXxOBHm~3N-=A~l z%V=T3i_d0&W=s0_r0I9QX}g8gLQ<0#evQOiW2e zOpIK~!S1t#wJ8JyZJe=z!G;VYZJ(i`fkEFe109lst8!>)q_Tm}Kzm>NFnLdA7kNgC zuI?HE#u~J0Cq&N2jykLN)9>xI@J*7&t_eyddKJG^9oLq+uPNfSd5~ zeJ9kASrF*w#|GD@&dfpw@sr5cI*u|k$M=Yi+=VZ&1*%)Yzv9++IuM2zdLG}`+HWhe z8;AT6GPd+w_HYfV?jHrLtiUg9tgP4M-PRebtR=Bf?i$b(KOCa{{BF6S zyFdf}-Pz*x&;)Hiaq%$&@ultM`4gvku%E4^sV8+76%gf8c z%Fe>h&IC@uUkiW|jH+3|2u&{Tsu(KuqU9O>#owJi5CFO5H|NQ+~ zPg9`9zmjYn|7sSvfh@nju&^<+viwsvIIF<#w|q(#KvQc?aSI!8_kd*xvGH*62>g-Z z|MTfzk$+}Yb2N1jv$Fx`bQ1cvga69>-;e)0;~z4${*}qa%kf{4|M~J)P63wRP5)0< z{MpZcyaji(5Rw4PKZ7QO1d|ag00HqHLPlIf6$p9M0`Cdv{lcu*7ZEk*o7M%H49&b6 zClG9mMHi=nUl_Zid(AU_oXB7y?L1 zU(A1QNl;K|Qrz#-mm_9yJX|1i&Grl&jEEmRnhdS2O~w~0ap-4E4>~LdgD^)~udZE! zY?MF$fULCU9b4UniCM%|H={tt_dsDX(Qhc*4)HzE)l-YXSmS-YAc9{q`X6$Lpb7^| zJ1Se4XUVI%R(<2*FzdB_U=>Jwq(DduMF-;&hupS!fs1Ej7|jnGmm)5A|Ec6(RenOa za;m#W2cq|L^HkUA#e@gKBl0Suq!+;50jTV;DKhzzHKwWdfFnNGsN^T~RP6|?P>~RS z+#&+sPdHpVrJ^^Vw7!ba78hUvR_xH4-;t?R$p5#RU`gZ@2o=f7q6W={QD+2=g?6v< z^KPKa)r7iq{^5TMjBNL(Y|mZv?;K8K`&-Cgvcg1s5x;h?0XcNm*_=35y-xW5Ta!N$ z4Z%b8Um7OZu>Y^Df0gim-gvN~26&fe>=vLTsPi%>_r+hTe;m%*zD=ty|3A}5wuejj z?mjWx%sBM^&oRftfTW%{?g$Y^(5XEQ%*_R)5Rk!BE{V$2LCNx2({hLX;BjhPx2!W$ zU#_p=Lq5^mJ^Qq{`6j@w)xFDAK%d`(w8*!_T2QxbEl^g9FVn?`Z7WeLv&sTPp_%>l zTBWTrB1%csCP=8e{M>WY)7d%rQwuLDJ#uGevk|pIftaGSi&fn2O%Hc;yrvnJ|OagUTxds*Nf&K2d#?V zhP1h2N6{`C|G5SqCy-TxptzJMY1L=h!s*)WXm6 zWLsODC|x&kf#f$hI4TU^i$;dh*=HyhkbgoKG#&I-T2eW>o1Y7Iq=W5l=#~X$zlb=+ zsW3J<54(uln9m7qC>lb!kU=Tm`V;pSPHG1S=UeGIN?nukxmaim!a_rty7(IP`d#D0 ztQS@I=6feWf%9K2(wwNBWF%#x`dsvhse@;m-#) zy!L}#(*~9MFh6C2s^{)UA~e>Q7HvAYG5yE4I@j@l+wjTRg+uS8j+<}8uCrIg`C{cF z?%F3MlP7W2l(5KB# zxFclNxBER2Ri~Z2M;H`OiK}|(oO~A6jZ!p*?Sg1_`UieyicZ5F7ZWY2u)B&cqdFpX zBfcjyB6sJ)t(%8KG_RP0@`P*F&K)r?=PBi$dB;yTt4EMlWsq-aT3C5cU~dh86O3g2 zw?)GZW0OLh0Zut=8Tz0gAQ$UC-e=$DU00s>lAq}X9&1z#M;ykL#mKQ=L1x{_@rN;P^7>GYr}^jz>}C-4(62T*7WQU($p~tULQxSU)c^`k3*!bG!yk>a#VlUVn2g;MRD(wu^_-eg#6{> z{eyL;gbcoWUCDAfP4kxaVF1m@W~hwaZUs4ONrU9vWviM|obZ@qrllrxdCK`q&Z$)r!UEK_xneL5rRhsse zKH$1Hg&@?eL{k9In|3ps+-Qw7;9~_&Y`=71MB63ZVf6hvMSZX}&>}@h^KOCN6T6sd zTWSz^Lz0vD^wa|ps>lK5_&&4R0TtsMkN!GYK~zJkigu-PQ$eI2_5g+ITs?$O{6i_A zP`icD;UYXv_o~hJGpEkF`!nzOFv_R5IEm^3(;#F*!f&iX+(@Uy?iSP{?Os|t2xn3zsGd+mSCIr)sres^HE?|kr8Aag&7*`i?uHa*Q{r!$*)GB z9n~Dt`j|>&U(vdnf2m|sYv)6K@(wAAl6Z65__*SBoqk*bNfDnGl=US8etac_fz8B} zu%u|XOJbO4%vnrlYqh>y6T_B=`L=!ZbvyU;!sa&V;U?p?uB!Dp`#a;^nps^JtNZrT zovimMAj5xSqzr!0D{#^A)g8%Qn+uAiyfe~}i_2gBdv--K-c>c#C>M5o;nqAhecRK_ zKA|C<&+A}aKu0{JRcu0TYYY5J!~>u zfxcoZoL;SL)7GQ6jp<>P$ptS(b05cLRNF+40gWf(i^w*oy3uBnwVJcte2T~NSC_@g zySnxpR)l`r!R=EC_+>o02$nZ%zQW?}K6c4xH*ZMa_)bl6_DL!aSPuGKs2#3%?stjI zGVKOTgxAET>LZnP2<=&0`Nv`MV8wHLT8zIcFBMJKyeG9iF-&eZ;=N5?Y<0j~1CM6Q zHm?sWslYCJ57h+b=sguhRmHZzuD)jTW+~IhOL|;>dcN~oeKp~6XPO0&rLgMN=f7*Y z!P_>lY?%J*{rfPdh@DfTvAlK+_fN1`wo`HXX(%IJ;-;tbd%hlQt^`3*xk?Ew1Ow+m zD(Pn%)n-Kd-3*E^FDeH8m7RNi2%g8q`q8%+^;coBji+I#8*iY4w{wVHW4vuc`V1w5 znn(-$V2T;xe-<;z**N zJ0JUlNktRjM+6JpR>z&!FWONJ&6NgDlfp9c-U{9ZlIGvA&))!vu)p1V4 z`chYjBlDpcZ32S~Nym+}1-I=%*;vVSU+VU&Yf>mi$yh zDDb=|NNs!$+wAa3tG6f~Uteyd*9z-zji+^#O#R@68f513b~9GW5(re*7f1E{27CFu zu8VFoOrQE6J?@ve3s%DQQl%ea*6#Ry3Sjs6-zlBEreAM>5Un2tQraBfM?Tu$GM_az z9Q97Nir>02AEUXJ4ggo&T@l^=@%_VEsn}FGqJ-VuHv7u`UrFP<62D-ed()5F3Ebcr zHwSj54-)uMhqU9o_ZX}R9d2B~c&hX9^i++t-8bx1mgKBNQ83xXGg>)h69FhFShB35 zT)~b8xqI+s)-*sqxbqo4u6VE=xm6R+uiw+>;mf`N+|il|9P5EQDPbq&o+nr}VBPpsj!Au>_cJ{&%vbnDCh!Iq57$_efGToR zoITA6H8R}ZE29OyrQX3Tm^xv$8NZ9x`>NKcPqMNI6+b4`W69t1aj*1O1w6im8G|Ht zFdL^%dtgQb!nQ+Bn!<#vsR>Y*AB1)&U7H`vm=zl*ZW2d>v2BrKY_ziPzL2j7*sm8N zR~XOcm)Ykd+VPaejEFtf2oU2z2-140J8apmaQ11?%x(KJPltfx;fHwA^W>Otr5V1G z!0aHC=4tc!$i0xNZlbCb(J}Md1x3u#9m%@BMj8bA$y74p&o5m0=4cOA1_(kSr&qNH z8QO!8-i!@~bw_JTeDueZ>@G4 z4G7w(%u(RN!%4TH0G&VT7tlV3+ziE{BB6eZ=$`0~WzWQ)<3|IoP1>Nm>o20VyWiU4peB6U}d`>&L_1Ke+fRGC0_h5Aix1h$Xu zmM9HH`0nD?6SwU)r{#WXIsq;IVfEOg+5E_3hg1GGE@CvnK6&=cKlaTuVTHALY_4~l zFuA7;&Nm5wdd~WJdhR=PZPbQ*ehnARUsZ%63nK-5p(XO#iZ)|5zGAy@!qKp%m0)LZ zHQI?AEg;wEnyTKu#FYAdx4HL+uxp-UsuiCY_Zk^vXofnSKje(jW{B?Yv)4RX~@QY5GD*0=uqZZk~JE@dIhGtg7RiyuzdR+i#?@ zciW2`-`zLUSQhj3$~pO9PkUR0>^`Y%NSusuQGzZ9F*|i|VJOR(Z5JDeDjhE}ODd7# zzlbh7y;=X|B*yvTE{U?T0ydWV1#^>`yvtrN3CV1*h?vBl|^U#>(TZ8SZ0Ds zY>&n!tXZZ^-gBML4Efa_Jeu2e9Dcf|tr%+a%O*qiUaMk>Sh=9EA$E~eZz*ca*^q`p zsLHLUXX)7qMS1NHWbM9r`Nt11e!#N^zF57Ird16{{?qcnVb=uF=diW9^?oI|=t2C~ zO~xsb*;W?1p<+OZ>Nz&*hczGi>-gOx$JKXCme1X*$G9fzj{4{?-l(&==Fe&*J`=Xc zSiQm-FA6?Km;5j?I;|^^6UB8#0kyPG2RBlv?1>E?(U4a+HmtWo>w7ZIrlsrXgy29 z)I31|wh;W_qsE;Wb7WGn>rP%PQF1*8T=6Y>eHvsb^1T>veh)(uR#lApMod)sAt8Ak zZQCZNA$~m2Esm{sd5%ERU7EwU!@Ofv+(OBR?q;>!bk4^10!ajH3FDhB$^5ZK%H+?} z$jF!eSRtg0YJ$ICX7tGZxk8FOga9+d9KRbu1{@*tjtbp<3L~{(SOjI*Anfm!>D>4Y zpJ3$8md|t*v$SAjXOVcn9&-ccgX4gMexd`nK`TU8S~18AKKJ^`u>J4FVcf9gv-9WB zP>k!a5s~S(p2b$|suE}Q`62k^GPY05rZ$zJnaRDMgl>ZBgpt=(*O_@Z@*Yx70$ zdz8#oGkKO$6oB0h&&^-D;W6hhkOqR}HYa)bw$)x5q`aW~j_YD2E|BQc6tGn%)>bPe zS^fi(J4O`Ud&!1v+9z%P_+kJ)S{_wy zF6sQqH98di7=FMgayM9Ixf43*;%3|n4TXq)@dsbo_rnK+VFk~xBrTJno|c8DK@lmV zEK@&7HJy)*9?Z4etQ!lDp83qlFtZ$E05CMQ45K;-gg!(#_XBDjL-r@aw=gd!mSZ!UpFu74?cgPIWebdD7Q#{n$XN zye@iX4ZjMn@j0wWF?c{uK>>4}Dom-`Y**}hq13=}%a}{9ks8UW_A3zV*dZeXEA`}@ z4KP0W`c$*5(f;tYr$QKJ zSJyNGM}l!!Xr+fxEm|e39d21_*PE+3hAsj1wwIBHP_>V999S1`sIn@)0QOT3B?oG% zQtU}D{im&2VkHK2v{B^c6>)hRp;+D=%r?(Mb^RERF{PX|lKB!PUyy4k-4731BERVu zi^eORJ?RgL2zj<+pX@iw7u4=MJU(xmgQb?1vuSK$4TZsxOltR052!^@e&yXj0u_Ie?eGmw5h*)Xf3(O!sKD!v_3^vR=wa{I{AHef=|ItstMLN7_9~B5__>%U~eCBg<80J8-i$zJ%S@?TP z9;=?}V~2ZWyC~Jz^87}zgMB9a_tY|9LPRdgS*X0(c|SnfjVo<=rd*%_*xUYzEqC!O z_J+vUp+N?{6?Ec4a9+U%6ha|4R>;n;!kn;9Y6TP*M<&XB(VALX`}abb;VuAXp};Av&f*<1EpKI zQBci$h|Th(n_=Bof+qDND=C|H!Z1!Oiz^7Xyf`EU$F`#z~@RbV>emv*w*^8|lH z1uSpH+;m!$=l|Nv|B$X7D#0XRS>P?O8D8e~vO0ofm#rqb&a7+q0582v}s61U+?r!k3bJjS$=d7u5F z%9h&}b`Q=DqaPW!9@<&*oF)QKrD)*;m1?qtgx#pX3vIX$Yq$0W_nt>mR{GhGk7(|J z6K34;;zuT-1<_{i=SHYI)K}S3=jCmV3%hD}XJpnrOMwfncA*wu2>$OmWJJX}w%cvy z4W;jZ;N1bJ_(Wn8b*HQ!g&;ww*_w7MB_*&oEELw(5%6lOs9@g4GRd||giKYT`iDy+ zef{@z36O#T&mFTeYD~!@N73I~Z%DMju_kWYnZ{_VQ|mz#=dA1%F_3O(J$sl9ds!cJ z*-Lsje$uNGUIv-IvSL7|D_*cO5jG(n|S|JZo(C1pNY{E*z};n$vML z%<`z+ZiF3_oQlLlyDWR|@9%zeiK5)b^ii6ZO$vOU*~m68z)?2~%RV^f^~cC%P1b*& zVrU&je)X128I9aNnq`^4Pdp0?&@mz7kxCc@5S-cG@| z16sUfJRX7En+auZJIe}pogCL=D?F4JUCVq?WL!UR1$kvYRGIC-45p*G(%}4f)hRe9 z*32JhJ*bbbb?0A7xh%)@e%Ri8zy53KpVoP9yUbd>H8>{``IGxzMruEH zr355MpD2AK8HJN=Ji8(8Y~yE-q?t$ZR2Q{j`L#J8i9hW80**zaxAr`{}a_lbZSV8A3}l*>o++bC)icivHl6>bdQeeyo~%n<^9LnaKmw9*vU zp}NSy^#bp**xKo3^IKxr(jl;ZP!(l zbNddS^P0MIv(`8=OBT#tUTWzn13kcijmsd_n~yV2Up`9<6-79t3SNZh1WE;Q&4%_* zeO*8JreOYV{@7}up)Pg(Mrt;bMu|?-5oIjI5P=D;g#{*A@#B~L^LUl5)A=v@)b2!C zG$1xqq$2CN9hrB}l2xMvVCQGhh4Vb+?D(e7PZi)Yrk0eR49-Pa%?YQfAxJ2`-BZm; z&h3Zo>sY~=5kpbGKLr3J^pM=d#`pvIA>EdkLB_~%`nwgzdN-Q!r>aDNoSb6+e*TXg zZ=Y*|o=X<8A{eB5>27=aU><(I6`)kvgBWyCG#G&Bx>5r(4i-b&!$1+g_QsQ~#zlmK z75PIz^2*+!Am64~>)~Hx*{{A?Gt3nI--EBg@H2w#`5IbYS#6Q|42V`Ha1nP<-}ve} z6XCJyT}r0wMY<08p<%-uQkeBLs|aKrCs!udyDn<*p+(##EV6Jeg=y#;iS`H=Eu_;h(6Huk%e2*7GynCZ;X_Wm~tZEUej33NfRyG_E;|1Ba zr~~)Q^`7Wejiy?)hvQl4wBuB20QO?-)UKQLr`QHB+s5kEeG)KZRr5H^wYj^JW|ZdQ zG_|^4N75h*gOy;o!gi9Bpt~Y0p-MjRBc~Nh($%#&XjQA0xIn88)!Ci3vy&C;{F{L& z$-^?U7(277$8HnorPX%5rOt8~Z|~O&k-V0_ZmxH<;@4PJb=9I_5>9q@MD_Aj=I=90 zs_;_ZYxdjCw& z!w+6gU}e9lMRgHVz2_mY8xuYHLAY4FF)Aw3x8EdKzGiW4sDD!=rFtXVl9##YRNP2p zfHqz^gq3G1Ci+ec{iS!YRGJ&mu`=y4r(}sqHj(eCy-d;IoSU9J>VoV5AQKc1kDb~R z6E%k0f18MJo*Lvua`eU6`_0u-*DvvbkB+c{>79r{v-BM=(Tz0i(}#WxGz;r{<^KJ@ z9PR25{cU!i6P1Di1YXj8{JsbcN*y&%1sB}zx^b>h+fzj?#d3S`$hTn{-cYh}GN2EuZbo@8{`S#yEN69Alv7yxnq_@p0l!DoI|yWy@e(^*(Fx0FprG8q`U zt$oLxC?fxaucqg=&h_ubHafsQNL<1A@WWV6XX9uZ%7N&q>rNk%Lj?9>K7|mew-PI& zZ;}C9Y*L$d&O=-?F}M6mt(V%^0^YI|s+8y2K`=0gf>h#nOh38_K2QR(tuqelvv)iE zQ_R=#M1U@6e1i5bN)f=%xq@nfg+4C^4Dsy^tkK<%{j;`x8}oLiyW8B|$`rvU%MMZ& zN*2H1q5^+(;t})v2C7M?ktwt#~$)%G}~;wg~D6>g2^10|L7Y zVltX@*eQQ-F!TG95uS@?%iUqs~+>GvQ2mQ^2$`ChsgNi{=8 z->T7`=RRAw-Gk!+X-U-5N$PgPQp!N_Si3Fx{qz(>Pq-Vuzz1QPxH|3%dB4ZW9_;1S z`ReU;anm2!~uI+h*Jw4*JycHTm0FXkmNLFRC#@|@`n823LB9D}* z*Q=Lr^ZXz-Q_=ifwF`L%Wi01sRe@fncnD}UjW9mfUe*$!*S2X;Qc|UO!?r=#!}_eP zib9{M>w0svhJbxhU!3zzrtVjRv#u2cl)&z7K!>9@D)Mhnf-u;z@EZv$3b_gFCQF+y z0?(0K-EXAMXTUfZqXc(11svDukSC?z0Q;vA3G9;Dp=63@?ILQssTW@Qa>)EpQ>}i9 z{^&gp21gp8MnHV~hxkGLIx4;qjs&7*_+3PL?GkD!*H|IWPON??z8xnoU^B@(Qe24G-u-|6>y;KsG!=H zuzz||p4t51JmeHb!;NkyRwrg%Ei9AYs|z;$-Ai(6K_mlZDgzJy*dRN}n{ng>-N&x5 zBGOMyk6yU%yE)@NjXs@XuMaV~6S~dLoqL=uXwje;kq%0W8tTyH?&rx-#Kd;n!9Mx>NgFne4Qf3>^e=6EFj>4aIVYvZA3zy23390t=KDhkJ z*Yuh(rneKcf?^@}Lp@n-bwoWqpI@Fi%;rVPXGPTpYH`2arw&%;8#}N^6@C?+Px)Iw!3d(-b%7q} z5*w)l3*EazW8~QU=Rux&abz3N1K$d**YRa9^de0d7)8sc{ZbY2d^@~~wW7lalOWAw zxpe$^>UXpxkjYaOL+XirP|mp2xoPCrb>%*cZe z#Y-(oTU3iwE)N}i>bWgE+9iQ9-`|Na1nU!%ir(;15O+=Tbnf)^nqms^#spP)Cjd9>y}+gfF2u{@k8qsBU!q`YkS4e~Akhn{Nb z#VU_lu6h|r87On`LR3zw*+6SQngoE_TAx{2fYLZDXI-xaoQ^&59Dri1csB~(BFXj! zE$zMh2{~2naWbHc8F&lW#{>{FLP_lPOsE0%E zvmQxn;A?A8Z;&kEpHwkCd`QqG3-b$)@$pmY-sk4S4zHcxF;>q60+@~8wG?JcVKHMk z{|!F>u4QHZ;y{qEM-P}WC5!8Ke4Ff#DY(QJcV*CNQ@E11Jz))uk z>MC9G;3pH@JZC2>sFZ)Z3`F^d^Ys@iY7hhRtz6Q&ypECl4qJ7%Edo!-zx21iN=y=j z8d#@J_EKzs2Is=S_Pb84eg9F0ZpU`2qj2-|{p7V3Te%_Z|6+>$!%)+F_)R9*U!}68 z_>=0@ej(*6Q@8Dd-T)u@UK9g(wvOJJbj(jdM~C>frx$j;Cs#)_)0FD}hqsmedqGG9 zWiXiiNmQy2!_chFU0n4xz%60sytke1-oinNl4}pz5xHCNd#lfT$_jN(es(YD13i7i z)hhe81)G(V8zwn@cYRgCYgwZe%k{$`gLs{u_Y3bkm%FtON0hf=|Mme^pzpjHiX5&n(yxT#q z9uKJlwMnT)e8CCCL?ou2HVw<~Y+3&1*Hs`OB&e4`Qm%;Ry-djL9hjpr1rHp6L&=(O zdgb`h&G*HG;Kqnd9}LHS)nG*6n#ZTYvYtI04eJ_SJcS5|(<7Mjwu1V-nUNhZlZIf% z=;(FofCn8R0Bm@7`F2WFNrHXhV4lzQ+B))Ii-Q1C0wzgt-{tND`qL3GdGEyRlp$bw znj4J05Es4v;8(bHfg)51j=!7lQqJoXZTAeR5?siM+knCq3jEAx#rg3q&9Y)vEd*iO zEP?8(kA(}Poj0A!70e#SbD#HAuGc`Jc0U0NT;n4_Ht(U3Ehr*`{vA95NL-j7XF<7# zsQCV>@bK>b(fhsv&7rZBEOm*rdAL>-JZ(5K)&HeVeCyvlJlWcUsjlOOa)WwHLnEf( z9Y)R+7TIjS6RH^F3LY$jx8T9c2NHXp4F9w|f zj4kQ!#^V8ty`8hMT~xI?axYyEvlguDZK9x$emITg<@uUXnoL!A`18*M;*0#@H zz@)X&AG+_T1ytD= zwUVhG#f`w9FoqZcATO(~$71d>ickHPi7v&xMqAuSS}!Bu^q1Qnm2jhLa#{8>y^5T_}kp_CC33k@9@_R*wT6`-WS}f;p=6CI+&0wxeL; zt9Bw{65mFUYz41fYQbrZ6-x()hWAnNV*po7$3vQYtkqEOmqfU(%`W?fM<~z3Ee$U| zKmLoB!*=$SztqnkTw!ubsJ^V4I^77MHi))Z7dZ#V0ZXP1C0!4%JjKSvmSU%iBmg-d z9Xiem0PVFb^33mgahz#_1(uQg)gAW@IEo(~`g+RD!`&I&Ow zskmaQE8!IM#TSudAyeU- z)GfA%2$!@!``=pk2cw66fd!n7CfKiy&&CS$I zMi$_B;EEAd>Z2=;h`a?}wF|n~Clz5$l>OMKK+3Ri!LDi&j*XeAlgBumunLqS?A&O3UynDA((9?9n;VS1^tj)$0c}PIuC@MaDh?hpfD==X$=fvQD4} z?HFY!tSK0NWZOfPBGvTeIpvTL_3!i6cr7{>N9IBHYwed{(-9t}2y zr+*s#hnXE3<-1DFSbGvbHI{QbJ)?|m&B)f36wWAO8K?0rL1Wal3mvW2-?2|IHB9ALQhe1hwpsxW!@012Oclw9~T@F=~023}Zj22%gE+kHa^Tj8~*jMi_72OtMjoW6f+YSVf5@ZoLjBwKK{;3ngn{K@IC%8#~}-74#L%zMI5Ub zWrQ;gPu}yzfWz}}S0l67PL-Rm^@fJu;8PIl$-EZA>dUVoSR6t3y64SXg)Y0X%UBb& zI83-;uBXkPu3OeLp07c0ckB3eA>4p7q07aMsd5)qIM zw_~H~w`ui^&%W~WI^xp(@@_g`bg4UVcO^1Pc~bTKUK{VA_ejn|lpZd@Mkl=o>Jifl zyl~4CRYuuTzua)(Y1-WzVk=?F@DK8)Yj0+IECp^xsxy3d54@3Ht6z!6xRxMaFURyd zR+k>A<9rlmYFZ5H&TRRYzXQSYT#bd5Fh>_eQbUO2JDUec+AxMHK8u5Q{s)h7NzbM zf&10|nJXa9vd{t?blz8;v&F^H2)9pN{#0r>>i8Q@-ThV?WD)a6V4Nvn3AX=Ykill( z-_WUj2~(5cv)RdUr1`oC;L{#eo~t>Ex7P$JXT7=gzss9TBqpf zE}7f4lo5)L3ckO#Fokb z6OluEq@Hgf!OKJ-$O`aQ0F5SnZhfjZ%eM=>xcLgJO8&GLS%tl0*+JjyvUMa&H zV6y#bPpht>2h!)^r?WktSU@YVn#BE_bVTB$)SYEa>H}G@zkvO*n;QbY2XlKmwJS8H zL$DK7?%TX@COU$NNTHVYbW#*yIz%3NI|r@@g@K7xoGwLF!oF*m(a(kxH3> z$Bs(lrE*e)efYd2`P9!^TFgX2b1vbiI)FTiI@!RChv|Te~=D% z&4-4*m$ITlF+}5tG1H8dr`|5^FmitX(IPR%iJ@3KWL8mRQtdTD788|u5_@0zT|9s$ z|GkwXG^bHCzlV#EYWXq}H@t*dicI5l$>Lk-fmV>ho_Py%+3qVCc964!VMk14)Bqva zK_(Tp`?UULUHM-{g98s8efnwToQH4hF?gsm(Bc_<`2VU=nWMvy)$S$J~_d_9;tcp4f?~WX! z{E@}r31HbU(%4mtCu zSCtl+B%XOv8HF{s?}?EbUNO8Y&qSfkC;U{mWD1n_$O?04z+9J{m|RAqBIOC5=Je|~ zf}VX}UY=^2c-S7N;`>Y%$besMj@|mTxeIIq8vc%BX=)}QyN!^M(u0ThU+eNW-aJ7F zG=txuu_sF_TuryPpp&xIaMFSYJMTLwL1&S`5R#!x;fM`54uQASkTk zk>w&9)ArQq9H(!KzoWdUX&J0`FIn$lte`o;bhXexs$q~aJgaDVH=U3Y`wj}g%B39Q zQ2o)n7SROd^<`DDv!hDkSc)p)+i9j?pk|8IZZX#_GKeO!n@%Zw#mTeMzWw%t&3#)7ADS?X_&`X zh^I_HK=EmX?5=qw7j@-dEeAoB>EHf71G`yTAg&ib46s^qqnoLisdU0Yd8`h#&&{_1 ziB!c)h!teyAc|ZHioRdT#lh1M5%~xUhQI~{BiQf7Nsz(1wEMUH@{=w6M+cbjuy+Pl zsLZ+p{~l^`lxjbH!{MqUJK~SqMW*b{jRZzwJeDS5RP2U0rPyJ$_?jBX!5=;U6G#)) zU(rs-Eug%4y>rY6VR`8i?$GyKkKh;?{*js8chqG4dIR-ym8T$x(MfZ{@1lzLQOYxr zh%N#Dq5S+)NyS%l4?i_-mwL9>MXtN9@@DAL^e)P)?d8R1Ln#@aLCXLV4_n*}8~$4u zJ0wbjf*%nb1 z^Rbj^c+CafSP#!8%Q_ee|G&Ng3|Pp4*`)aIaM+vLp{K1Y3g#{27*~WuB$%KFRfQD; z28mFh>}Vf`A-8FU(>J)dDjST;`M9kuTrsxbwY2xyrRxK91f=1_grW;;On>w(`MBd1 znE8GL2@dU#hx&jywd-u)!y!Q3`h>rCOHDbLq?UXg&a*u!8`&86a8{{#AD>L(?_YdA z{Uj{u>C>}Cwum`+$nlVkgP9WZdc=75$yh1UX1Hcgyl==6vSG~gSX6_PsX1F%JnwXg z(WTaaxq8&ggefwIXYtb_vIK1}bjo5>p!XDaO;aXL%lgYn|L|DoV`?#pLGR75B$iFg z!kI?KTqqzDk=Zb1h#9~zI3~*~tP{h#EVqDC{U(GYYb(K>)JPj4}gYs^uc2wlh zfTLtY4_%ATDpxi;iDrRR?dDPEMJd)-!{ab>77RO8*tQ59B>ILTMjQKgp3$=H;{h!rXy=IaD2{2{A_uB`oO;uptZ*Qm zk;iARWlE{VA}*awSH85*Z+6^s#=dS&0!*}~-Ou?W1}=~WeuX>;@baQvCx71Y(is8T zFB19%iT|G6<6z&Eb)+a4mY|ekwV)--=)KtK8#0c+5rZtepQ&Oa=0^dsI1ii$TZQf0YdTw=M)rl|s_9d{6jfov6QEnAxDx^SG znw4?K^b{#3jpmj^m2Q%-)Fan5-iC4$yM@^5T@J=57@Ybg<5;s7-9qZjMWy-i#lGAkTC>!J?%K^*6wg{&_@ja23in)m8wu_0;UlvS_!*+tbWC;*#rblv;7TwR0TyqC!LtWYmn3ib^G;bzgygkU@8g zJQQRthaWCb?C*4Ws(HI+y&jW@F^evL<%A)^CP;fEFr3WD&l`xK_qej~ty?bISC`RT zE!{My$NFWxMXzm+!)W?LhUKM;FWoZCZsW-N!Lg_U8_%urnD*e|8h^R#`epmIApQ1v z6`CBqE}DNqlfgNL{kzJJ{Ug0c<4SmM+gQRamV5k_`SoB-XcyflFtP*K6<}Ubrpae-YB%1U=G_^y*=IE z7IeiN!V+ihq7ih<)B!qR`FoRqY^mE4NJ4b&=K1!$i!JHinayzy{A%C>!wXL}exZ!+ zZ>9B@LKJ@w_DdtQ+y4Y3u;7F&BMC`^d2qz?#ng2WFSi4HdIlq<0qajB=9fzBXG*4b z@wUxp$xD(v3!(Y^z%OvY*!XWm{^x<)e}7eQ{yq>qQIEca^j8UqQ4n8k86ICGkCr=B zNR)hxAs%!$F`e&V{;kk|6?HoTqcGSsYUB~lP>c4c05pG9m)QeTxZlsp&KVc` zqi8{8I%1|^{)*?jpiu9hgKPhlf|ZT9wrj-%dTXyM1K9%-te7bfoSIN$H=IKf6v%!M zLQ+PyoZ*9~lD#8E#mNa$!O};Bev5wAF*cau8$7Y=6|6C{{Y-cjUdBMxRb?ov6WWme zei?gb31AX_Hid3)yoABeo_*`X(j_$ntD8hI3mYMml!+{!5wk*bV`gi&3b=tY_lGT2 z?W|)Xn3xlom74h*9$oAn=P<2H1T+3PQ*|+1%_viYfg${iNKRy6Pg+=sQHPDzRbFf! zOF$u=?qHhko7KX=;;!m96UwNp>??I^DMPM7XqRtTO}6|!oNPxeJ~xt_exi&1CE7Ps zk=63em~H%)XZ$AHuw@EVC%#-~?xlC+7#t}e-Mee+>ELo{GqTUE=vrZrNN9cUPCx?k zCEA4}&mTgN;KCDmGevTIKJDJy%h1iMwU(ad|M3>aN!PW5f3&7=L(9en)}6Mb*0;*k z@I{HBWWU1asmb>5{{?WkZj|Z%RV7|Lm8Pe~{#X?~&ApIh?P!mRJkNrFgI>(^+KglH01-AG5XiD zCkRl+qMfdl0;0)Y-O90(Li{%S7JW#Ty+Sm+Qs6fD=g0R!h|nh%Pt!N^q_ z5)n@6u-{aqY5_m6OJkoz(KaZ}A@y{QfBzTn>pLgTt9E`x{j^ z$)h$M?CQ@=Ld~TAkEwTXue;rzhZ{R-Z11>H8{0OTq_J(=_Ks~djcwa#Y}@v`pYxvc ze1HGIXJ7liZp@lBGfRqnzi-}EbL(k}aX?A;;ZRM=S9Qod-*(CBq~kO8(T{WW%UzU= zoSS|>=I7WhZU_q#Ct^OgMA)6& zwCZl~{lk>E8p&NlQy^9ZzZ=6Xo{112<#Ubd1>}va%dj9JpNCx!REulJg|~9idX+wR zm+tqDMDXLJrlKkl{Jo1MAte=(7cX~&$H7=$wA)@j+(|fiMbVd>UC@bFJ8^oIHWsp1 zh@r@KToFQ~2BEXc5EFUE9Us+~f?hB@ErAU(N<-yBaTeJtPjBv{66sTFav7!1=6V$% z6}Ky2T`-#RN9jn+5l|)79MP3Lfu4(mi2Cl=Wg~*d$vpYj0$}9boUGOFj6R3^%%$nwn zjb>AvdqEMcChYJDCpZn2rNBYbYrU#X9Bg@r@=_mex7zu+YqvYv_9eR0;Gc@uUsPNm zgZQq1eeLN8GWEX;w&aA1^t#*vVo9wb=SE-V%IQO|FxJ{k5H9Iq^uX^`HXQMVul= z#QwGTzC8c+>5PGl&L<7^e$ZGh+(}<#JXpopuy}= zxG&`od0hI`w1VssPj$K#>}ckeJ$%`^A)VkB^Kjo+o5`r2k!-4u+6&vpXKY`Fx>Jld zb5W_(_0(*Pwevg;UDUVZ$}DOiK|c#lqoqu4h@tf<^BBX6f@JG-(oVi2vgF!?5%=AQ zN|;k|n<6g9GOTdRf=XxX$8Hpz&o0XziLrg!1(e^9ekn997I2ZgV<$v|ManSvAJE$o z%57^vmg~A#Uh-NE?RVZ=Kd|b8rrLaB{=4y!N*$Tv);Dh;LG*V6BQaVM?^fLDt1&It z&5m*FJ>FsfcHc4}`d+ZM4fRVOs%+6RiTTQIY->`GEjOim25SI4jqFz^8r`J zdzIJsVHhHagk?lS!-A^>VjubYTH_Mafv*)9O10bC)?l``ywAOXKrW^F6$19-VhefI zs`oO4lMQ>J#e4nccftMio+vk?pX z<#7vE3sjI+5?No*i$5RHHeyB)xcxr<&E&7+C+tnc;h9Us#Q@XQofm-c$j$%vq-_v*g!WeHF%aCN@2EfSDkwkLv$uFi6I!bkXb>Nj3x;kA zz)Jtf&g;~p*FOeRF`Q4-cL2C`#t0UrfNdnn(y5A$%P{Zf94X%-oBBg~cFP1<_y_+yl;se0pE$v5SzbguAvq*FNS5kIP zPRbV%Qi`FgSAYTl4sUX9k@ypE1;3H=13Yoe+Q^K+w^RmR(-6l~jli>h*93nOcV0PaFXR)I*+t>Plcoic`aRvWrsS}^gHiAwRM88@yCm~gtySo~-F zeEU=KN*_{&4Lw}K6pGh;MJ{5t>O_J1SMuLgNfkgSL|o(>s!feZLs!k&mHYoX2zr&U z5u7bnEyP0kFZcnd2KM35^{%HcAL^ghm3QR7U~(u1vwt zGC)eLqlQL}zFvD6H(7i#7b7XPphLCDTS-Nstsp$TUV02vJ`+fgNNRLnjI(60xMMnO z8f~aKn&N;UknJ!BR)<((v1ogZNLYRW%dev!9D{Fmna9tOSVma?dTQ>KTWfmp0&SaC zk{`2UTPWB;bEaj!DRDc~7wu&xkec@glEp(Z_&mREt%WV~Up_yCn4i2M@C1Vma4964 z7R06gz4yzV7S;nMigNE}9ZM9j?9wr)E}sixOeU{={4-Fr&33+ho11P!zkBqc3r5KJ zIx|=!3Fkd%4)LP>^K{NB98ma_on&&h`Fu+&-3BA29B(bos$Ukqqh2(;4t}ZM!f`^0 zfv@Gh@|eFaU)dB`4c}-wl7<`+iJYAgQDsa=a*x5vRGvu)6?zp#BXcwB$q8x~G-J+o zNaT!S6->clVxe?TZH~vm85Ff8GZ{YZ*Z+lHDE^#gcAde~T^^#u!yb%q1QF0J-Qx&I zw2bNPof!%rJbaGQd}>4kYG>#dYzckpb;0ccPx?j7M*Hg<2%*cy0_=OwPVTj_s>SUwvS_rAsDL_b>Vu* z3`Vxhij^b`%<__urMJU{uOZ$YsF*kXQ>P|z6~%yVM23GGjQ-DJ0%*1wkG${;XJj0n zPuL{kO)K0)5YjHBneL})OB3Cq;WUUzuq?~n1F<7cbcJ{NF|{*(14NivORV%7(Z5;f zCcA*lnMTRUyD?Z=%{Ppu8NQHn!Jc!8yjFRVb_G z<$xW~c31q?j;?eKaC5ib{D%CuCRCH<>4|`xi4nH_p1367tP`J{9UoP^W!`02(>Sn~ zHE{^~@NKczGb9dsHIFzac;R-XH#E zH{la_71WIyx87H{n&&u+J3DDP$$&Y=g`T9QbP>$c2es~(HrhNqxUPlUbSgUtkB+Qo zXI{6sqd14dOY6Y1?{taQBPgfQ*a+CQeeXz}AkUhzJL5sCYQ^JOBvO7^gKJV`jU*@h zrn|?%=HPNvikUa{Ab|tTk@liP-jCrrdI;TOWQ_kE1#c#a{bd4#RR=o3#iXHV| zWg#UvYVc=v5qNc}<$rO1hyh4@qp&vi!JFDEJ3d)}DjyhRV%lJP>I-4h)=Hs`{?BPI zA?eenqWHp2av^kuF7YWD*uJ5S_t^qkac@Jl?d8!w&hFdnWl=ac+so<6g4QI$7BQDq z8%$Y~;lA6M70w;ziMxbrMTp5L5pIhBA!=SwQ9#Fbz>ra^O?a#pao^20N^sY2ScNQb z*i#Z1fBlzE_$}#h%|GabdU$ub72Vx;q%oqSQ=cA9qSCm4#D`|>G`EDa-u$b)@9~cM zRK{InzNt*agbJ%{vorjTRPrAy)ys@|b&70L50@2>P0V81R-xg>a;&MYa=PpfG+2CR`D#31NZ@6QtrE6zwth?Jc{tG;x`*%@}6z?a4&#EOs6<_ zaQpR<@Hrx{xCaOv=Qo7CT0R`~rgwZm566XkpnYyA@VDm6q1&i%P49okpDZe^o_213 z=JAGQYm2lVPg~OKNDeYZ?V{@xjScTsU1=OZ{B)u?m?eke>;^_Qg#V+B%Z1L_!b zGN1-hUmp!Q5@BGei{vTQGUlh`<;LGm8w}rpX zS=3pKgu*dnX#iPEkca{q4#?CJ0q$*!N#I@f;m`<6FfGqGS|Z78?+r)V{wS77u%YFO zKV!^r$TWlNX{t#G#fuZ+j^)?_4{)Y)bAFa+ef9(fAt*^2KH=kR!sn0~AaB-Y_Cgf_ zew~GrKCC&QrkmuJ43wBp(P1YXeN?6;xaFXMgsoBCKta8UPKVrBj7L8#2Sp+n8=CQa zz*?zSE;&c0Vy;d3`^7OR>56@c_gffJmi<8{YcgTdt%y2K?e_-G`w%Va!PrEaOcnf! zU({5zjyjj2H-y0w0w#ucL|&4l6dG2?1cagJm|D$USXy&w@9(@WS6?bwjdp$spJA8v ztrtAgW=yz+FC1wAHATO6Vfx`u%yG)pX3HN^PV1n9Q1Iw zzv*s&p!R%~Xr6JGT!|OQhYJo*h}^EXlM`|dMMup?^L=fFXs;~HF5~6>Xe5`XE;)^8 zR|zVCs1^lKdPnHH7)}0Ge-DE(#eCbT!7g6@5mB!YsXQHf3qy0$2?;tk3zoyf=#I%C z%}QZad1PaFb643zVK!E$9efA-yXDpmf%WdWZTX?>Z6oa?>KNBJvn)}e2>gBX3B;eD zD{39Kd%=?1+OHv%FK4Y{znI4@qOYzJgRk#WvORAs$afsf3L!dl8&cvZ!5vJb+h!U= zqSlU?zkj=c;LX{i_~Q;i`8;eVX@~BQPyON)>f()Kt5YkeV~5UBf=qQ?N4H&Wx15Q3 z)O;YsSYw}xlL4uAiSw6uPK&4y_hKk6G#q###(&JlTufiCKvd@z+-p``^m;oi+UDb6 z0MF1-(XlS(F>v}#qE)nwjQP-D{*-!N$V)+eQU%c;mpX8rDE^kAI_klbsl6nz^8s}` zTvW$5FCP?xqg}ZB(kdMzIA7y*9l@={SEdNj4NN{r6=H2mXwE$^`ZeFemgh*a|3=o$S( zZ52g+*^kJdc28^@pWpR=31lZ@OYRk?lxnToMnIeU&Ybl@2FE*dAWU#nBz6k7yELRS z9*;@Ary)+tQDo&)jaSC(OE@w-O&x{2%Xz&(!O$Ro_y}xu_yej7vGp_i-YdFF-N_}# zQ$}6bb}4?XX2>-n^s;vif+eMD#_{2UT>fgYO}ztZtc*#Z42b&HgI5CguDC^`)jE zQ^T~LDZRc_Zs+ESJVvrM+<_%H0V8TnfRtJo1iw^k#GjOWX`Br7D!Fd5NpbNXtGXh< zgFoNAqt{~H?22jM*&xW2A?qo0Ji$`L){5dn_Y^U30%Auc3RCv1PLei&7^6Ru$L~Kv zR$@)$Pk`*0(TCwo*|~McRqd|Z+3aNr5~gHH;d+1?-0LDaQG5(d;@-aScG~4MWppfHvMqdr zEs`RwSfzBig2FEoCnw;x%5nq}qN?C388_|slkh+YzmmyE4borPyH2TBl@o&Qb{EJ{ zm`y8>u*hFNzu}Irl_5cmp7flD)FsXP?E2Y zs}s;rKq*Tg5=4Gs;vc>He>!4%EhHpxO`Vg2=DpVNfbD}5^F>&8TO*VviFXVlt)~N$ z$~#e|nf7*rBawEu-`Tm6EDT@4?&%cvH2>Bg?dlpnm;>DLuJ0G-CB|{RjcZ)+7|pj; z!NZ#lJgn^#!<*EPuHD7-u2GNrnPO8m&6F&LpPaHeDE4urq#S+5-+wx0i22QE9le2l zuAVTD!(mnh;VV0(ba2`?HuKz8>-uT!yKWZ-TaPm4u&zMn`)BJ|` zH|6!8x`*NyohkR~wGix+Z#GC)XsUu0%3fOXyhC)YMzc|PscbJxp-6%5e zDXYquy)b9MO3gez&5 zU4J~+DNA-yHHCB0Un}0aXDkLdTT*wcb!Oub_uMdg9d?Wpa-Y4GD+KVWz0Ykk6vd4G zyzh*6rSh5U-BY;=8VVya0RZD7n!3FE)bzU@A!KkcgLsa^Sf+aU2BceyN-PXTLN)-i zSywYfmO*KE&4tWTXk2m>HK)k82L1;l5*>=Hsu-8y~y z3bs74LhaJhlVBa}PJ1#tcTDgMXRsx zCl>G@O3Jt}|Dcuwgso8Gcj~1&$Lr8N46jGsuJ5|@)!P5-Q6u_4ldZvuRp}=U>nCIA z&*qiY5!gzi$!&!36fkA%-HU%u66#VbX339-r!GYG=#xzAg@TPoU^LPf%Z{x#-l0eP zt~Cj2pgIZ)*v<(-%M+l*Qhpy zDM?iw?nD>qBFXDk@6j-ALpg6esq}1GmN@>tpDB#}j>qlClP>LXrsl=wT!>CV3p1%5 zcOC^#Ymb{QffPfqqN$e^`&Lw?F^90l1z7xV*HZz!FyW?%rcdj>A6_c!W>n_azBTP@ zrP?E@tL#e6>|~J=)Bqj8<##Sd-sv?7DalxpKY3`k^yYgjSEZi=zVN7$A}V?kLba&W z-=~z!vVK32VQlmAlyyuKx9*kCLd=oK7L2skOugQ|DpzOa$>q?$9 zhkw<>LS@bPRqQEW{{zeGC$?ioJmY=P$F8yqg@a;{B{67I@~};n8RHe44_4`okKM?^)cFgw9n{Xek>%_&@^_+iNu~N4XWSxpkiuvvfV;d?6x@*GV=MxiMG;8C1hQ zw~uScd2b5&w8?XHZ$^>CZ=|&?bUE~A=?Q4Hu-L&x`Z3FE!!qq2c{C^_8vouI0b~%F zrg_0(eDfc~bj=1ts@ERkYjX`=X5C(gq6Lk^xy*Q0Vg9%tcGJfu3xaxLca5F`wsPq2 zM}6;oQ;=;Zhe;WFr-4vgqA1<9(QMbj3vR8hVvZ{JCR#XoegXc|_?oxq7yzN7NCmH5 z1AdN(=(xcC)kYYEYZynorJH*JPLwJF#al!qtHyt--&*g}P-#(EOmg5P0MvH2ssa-p zjOzWJvMQ?4{z*YWwM&dXT2#>SjCpxqKJ`DLMi5z?M6WgNJb1zbFOFCZC|hwy1cAy$ z+5D%X@$6l1ScIGze#)smn%n|42onFn>a%gtt7Pj3$JPQKO;{oBe^1H|L*SKp_G!=po-0bS^ zQ-0#sH-r?`tuTSEV#6vYL!!0E<@M=RHtODt><`r}9A0i;OJ4Q(y>pur7;bWApW zf3InlJsj!#hTAa`W>gRtIl&tmOavlV{UD+wNDPD|0O{Xn>YyGK!G#rOnd75^2!q2S z0f~JPgVlG{@g5=}P%8yqdb0@hjw@pkJPB5*IjO_o%P6Xz!sO?A?5cuX9y5D}Ho7;1 zV;EhJCJ(}mG%LwrG%po6e~8OCl(qkJJbu0Ix1f%L$v)Cy3cu{Dv%!J`c~Xw}X5ZtC z_N`7ZA2EjXn&WcAJ3;8%sLME2i0p{qpn;>FYMR{XizHFBNVcqR0k3VX&hd;W;P9$+ zPA!M0sugrh4ABGKd_%7}*~8u}ovLWC3Dz@6e?gH^4dSiqoKeBUJ3H~68twSSZqn#XUvB#Uz3%W{eUg)8H}7Zz6#*L0^n&A*1x z$aNepr5=nszen(b~RhPV7#2F_a(qNU}~g5@ex4a)r#6k&J0XS zfLq|1@OE_QML0+5v2_eWgS+9-;!U<91f>88-3!G+I72)d^VZ4`!RYuNBq2*kN{2WA zrf>d??+CvX;EdXp@{?4avZ#2c>Q*@*v`FoykM3cx5L|{7J2rQdiK@z<+_J&?hq!w5 z7)|(%R=AXwQ=}Nn1Vsj|USq#qm+wRQKPn~%+o+!ZK8b(#0%RP2NY`Ln80wm4cDR~~ zg|Honi!&Kv{-b&Qk1!|h3*>l=*U@n^!;RmJW)XnWk_eGYb89>=XIF$NCJxB)4058(a9MK~AHTd6-5bVE1L?*XxxY3E0jT zNRBYe^x?6$D&0=5 z!asu0#%__TKlBDz7G=u8)79c$j9}QBBy??pooHnr&S96O_LAp@UJ(;pp5@a}7!-Uw z(^6P)R5PwtU(F|qDS5vRzZ)Gq=OHb9;1fUOvMU0!@kgwhBTCOXt(*MA6vfJ=fKEj-{32R+H6lLJ99g@N11 z_t99AZA)Av7n>>Ue-7Wv!nngGc}cw+?OB-^b|5gy+K|osl{#H=%TL2~*&w?uc{2 zFDkE&oi^#3#o;4vx!PKYUA2DZ_Y$Y}J8xzGUtXWlB=h3^DKM9L`myz9WGdzXSp-@b zQhNo&;oi$82Rv?5G6+gcHyfm}(kL-~<&0mgm3^*VyB*Q(FB2m}8%27h5We*KDhp8^ zx~e?#U0nqX#Rh9Uxpk1)O;OQx2WP9>ezYTTF^GQ^#3lMV^44N$H{eJD3jmX-jXs@; zVAlvrS=~EAbkdHbL?#~+R!YREtH9q!=`f5eqS$Yjx*d6T#}^YYoffbUgxWoy5PEc$ zH2Lnu_RL#!PcxC?g|d@Uz0bKdGsI8-;il_;$V1@!p7fOVjQHP{>Y%_EHMqgrv~N^a zE_Xv*4P@qmgrj8J7DkvBPk-K)V!L-FtAIRov&%_lkVPs17+qiB*yrzdEGZ?WCZ$Uz za#Oa>MtO6F@IUr@yrw4yD7$0mWC@2C~y)mC=fgvzXrb=sxU)gJ2fn{h$3D=ULM*CloYrrOfhmn>#{ z5ByNQcHeCJh#yQ8i|leUrA8TbUy0uDuoaobk<=!;poUOBzn!!%wm!Mj()PW9xhtc# z{NUIKV+^K%Yuew7RAnPHw`jn+qwbMa3cmwt-nhX@+l*N&L{(XNC8zhBj;d!%J9OSx zQ`qv}Y>}bxldZpqG43{he`S}WnUuPgcJ*%khTwr^5XB5IG_ER8_m*^Rt65Q(Ha{j} zbVo;X=Q%hJ$_qaoBPyFc6?<$a+Fe53Zv5L(>C_Gl7%jqanLD~?!&4h{S%%P30E=JW z%aW)~Q|8dsjFD8_NmhnP(Z&L2C?V>+H+}VMG#cZrTuDUGeXZlIKI{?Nwq`re3TE`K z=G%W!#w9?N$5^b`KO0UbSyLKlx*g?+V)fjP_8DZITT+!q@pWB>%PB{NNKE+&AVE+=j zp$S(7XO9bOTP&JpBw<0W!o--mBLAkbAFu|A)f}L--$vuT@MXI(UBP}es#{EOOHi+Q&O{47M4vC_?ouj?s_^aofZ zYi8f@t=m}+k{X>h7%{ryE;L!k+>nZ4>In$M;3KelmI3~H@ze% z2}Q8%w52S%<6^UM6833F6mO|b-jYJmVX5K2FPuRif1_&q{d3sRIVy#A8KH#wl z11=sqOcYbf{^yEL>nV9{^u;{rD<_(*tEyZZ^P?#-*YIR?tH{WX5NI}Xs2NOzLHPRl zcde)+Jk0Y+S2}83I*h=}JNCZ7+4t+69pjz!_%(X>M*0-Hf=+YVGK-u^5vrESepo9| zq_lF*8syYlyQGyTjMo?+-;+A7Q<+K6PpdDo$$0P$%U6*(O@%6-W8&D-PZUJ+D`TX) zw6=5Mu3VLy6#=&^Z8xWN;-VD$xidzBj&rO>R<_zXfm=HN70wr8gJqTv)%vZ#K8GwF z8tfmki0P4nL+Fs3f!h~WC>(^hKP>%Y;c|xbc;&tNdwB`v{yH8z#rXQPHPk4)Eyunj zRq^D2m&-(lQ2atE+A*^5c@vNS8zn{>q^%W@g2hN$+lR7!4dm7z%CXM`b{AG0%{I9}TmF1CH&=wuFxt0{~T zsLVslTzGl*w80Be2w}#Qocrt9O<_pdeFLmf(8y!C>3+%ZZH4ugXp9g2o8#lNS{v(o z_mdmCR!tCj^v7D)1k~qSY>IMa&WrOO_0}ud$9v#uo2uP`{l5y|C;{lNVdU3MD>pz~ z92&KjUfAmPJ$Q)832O<+VTg12&nx7ojLUW~Z;4*|N4Li|%dHD;+O3LP?df?QMCB~> zu`*v_9SkDSc#;rQ1zN_IkkD$+<$K;f!n9JG=av9vWy33W2$`C$Qk;~P zw+b+6pbOu$ST8xYVPC%=XlKeC{$D**js@_N0S(04-xN-{qnd{y=s`sK%-e?`2P^hCL zRv?`t7bQAeqB@Y6Av9ixnBe1(GT!GkR4Ugh5-EKO zx#t+WO~_q&eI}z$kNAPUYdi==TWK=@$H~LtFG{?3{ORVazd`AeO(=<2vCn=RyIvvp zt%y0<+g@jp(YvYHF)BbP52IR7C_Jm){Zbf$< zJML&cf9QOF;KeH=cN|R~`C|^tY{BnZ9}S4h1dC z(9w!#2|S~oG_@7s4&Sp_S7F5lUMC)QY(JVQL?;&H9@|b&&cy7|m_Os-n3|c>j*b|S zred^gU4J2oUr&5+F7CTgK6d)^ZLsDKdJT0~AcWV6p0*eJ4mWT2eoi0PZ9UuOXsU#u z@!bt*EBp%WqF_Et@@<1mi7okfoYA%kJ|SelIk^^?OIvCNoajc`&`WvjR9!*_io!r> z?_Qm;%Y{txUn9w|pXyaxf`7c@+lJ1n8Hyi!r(bkZ%w2pus`bWrj`qI`bww9I=y1FR zN>9)6WIHv5S+!kWL%-Sl5)7{LIqH~tio@1DA#5k z13an53hfi3;GJ(9)uhohaHBjp!WwPc@q}NQDw8tgjp^?`)aKHS8XOJor*>>g;6OY? z!qSGqA)wPvA+Vqya&YaebcfdCCYfK`{V z{n}t&uAdYa)oFj#K`qEhIYPJmW24M`6$MjZf(XX!N(U%QDZ6j@|9BR=N6EidTLtJn z?4%T>&(!7K1naWFlyj5jGUkPrDNxN5;g?cvz!6s6#SjN0xAtDHgQ9Jn-;swIse7=! zw(Zluu{AH(yJf02tmfsG67VX6+wHh^$wwVdGiPRaNIZX#_pBTkA}Lt#Fgqs%WT47Jgw;V;-# zT1H&-@I~_3tB5U6KK>i0RxN!<#cKrdvN}-&8X=DbsAfyLUz$4pfG;!qEsQ}ttq-F< z_OA2AgaZX8im7Cn|ym_yK+|#|~554;1Y+(jg(YKuucAXDx{%P@WdevCqO~!>o2y9aU ze=FSXtwVC75bqvlUg9ooMnOOIPmU~)8VIhcAT^M)@KC7k;I!Ln5l#{!kQF~%c(?Z( z4IyLjwbXW#3b7KNN(e&Qth(xmrjH5o?ud5xE-Ev6j>3@Q~b8hMZ z&HwrKlUwE$n~q{{WyX_ug!9+P)IU*C_z3=%C2iY(rL7I7FWn6g{$98UFH?#OeI3>u zkBt;FTn_)V0(+sZDLRo<*$B;chjz3ApRh`SrJOQz=--S##1pOC*Sy(^FLBx4(dOrQ zov3b7Z|9@I760DcZz*p6a&||+fHvRV*cQ2cB%hJ%pvl)+kcR#}TCThciJmaTS^&lPipq2Q5s zBZ2l%wYv+wjSQfaV6^j<|kqHYlRFscjqu;+GVLBDHh|64Qu&ABU~L4$Z?bCO|sU z7T3{ZpG52_A|K)XtB^HtKN~1Jv_JE8TkIGx){HhA^>;xjSr#2L@jME!M(tbpw?wPc zi@UOOaNZ*DsN%4HV05oT+SJ?lN1|$HS{C*=MnbX0Wn3I zjMUm=51O4?hG0eo*smJ#jZl$2ZSENqb~&j<3f#BGjYFYJZu~u*1_NWjae}T}1&oKS zTmDP_oliJz;?`DREFZE-Bvf(9`_)=(XAa5Zjr=2vyuj{=;87PR+@lwoT35}#OBL0f zE+lXs{aMRyMlJSx#C#fYcl0Lru2-FvQ1igD2%0r|{Ycial%nJhtchvy_RTZ9zKtB- z;gZCeeX^Q0_$Nzes@SY-3ONm3`QN1$!hdQ&ZrDt|wTPQgs9bh2bPZ1;TJ-Op(Wag~ z8b;7C9)89J>`VPjAqG#|#zz(aTuDE9es6)oF>)^FW~j+ewqLUk-oAc14aPs4UCK1S zdQsk0X53767wu-*y#<@Jl;+dB*J#|_2`D8LYY{%wV0b0`xSH)ElMJ{A#=C0hH((O^ z7_@N|KhsY9$$2}_-bwx7et5etluR@ly!J0~@hf0zSGYZkXXALZaGT5y|3K|I$VwH1 zQ_R4ja@Rm|k@ss8@(@SE_vu)EiApmZsS1D;dG6fo8i5u?PQOD98o?*MCny z;(QxNN;hbUmwRR51C8*^%;R{F9FlIZvOftbCzX^H`Q;KL2FzZ|hH)PdOT|eSine1! z6Vk|S3MwKJdo2<1V)1w)|2_H*QKW5J1eZsxi=X(w1cEw{DHw$cPw+&8U{?6H_q#OV zsjNnCLix4zh^FoDcDxGsFb*JpWyF>6wbFjFqm6+Zykyxo5=Nm6&0pczReZ~J71(e& zHU2cD2^uZj?7tP)RfIlvSL6eo%=_D!#XEYQpYoT9dJ9O-0)$qQXb0JB!`r zlD8WxM-aRBvl2LkKX__V26;h^7;St=(CD0+A#0Dk1JArISnzs`z6Xv_ONI@<%e(xk zUq6`Z3$T+`>6(2(o9{dPpK=CN`oKXdNZC)i^ZOw8WWJM(%C_di!^}S^*}H&)Cle|W z4Rw5FvW*_Cn}t~~IKFo%_^_;V>^{x%D{DQkw%mNLHk{&BQ0y?CnWmo5s~1qybhBT` zm&yExzdVHoBg=2!{fNU}!2l}k;DlF*n7HB(fEaPMm-jD{9KbuHzD^jwO!s?dd$<|%=9(37@Jue=F^>Tq_HhV^lA1{-=S1*c5!XYm`eKrg_aigw&SJ(=LRx{%u4R;x|Kn*VmL#%;I|> zcTQPg`ue1TOT?V`O=6J7825XCT~RCX+c;bGZm;EX;?6&7{#~=%pk~KF^Us=!lxETS zY=`tFAz7m3<6dNQ7$0C_I2lM4Jx_D~_UN}^FN(MRX(R$UR$TAv;PZd*V}zvoY2;hl zY$iJcxcFxW>q#a?27RXr02NS4i~coUS%nJ9>%5H%u5CmS5Z+#&T&rWXdldUiG+Fpljg`*}zgycd=H{nnS-Y292$D zNVQl=x@7Yx3~UDCxw6L<;SG!61^^8FbhuJjE#__m!1EQGuopd==V0Sjr6W!%@pk$r zjgPU!mf~3(LY0f~EiMht$a+p`_v;{H#>HspkFJxL@}Fmn&Rqb{9ELKUfgq=*jEff~ z0xax*A8$4+@E%UsvMZ=$XkAFtG(Cn@==As>xi^owQGm)PaV3V*i6n!ri9A;|tWj^v z>t%`P4HQFDH3B+d;#o3L&g=r)fVJ|UdA;w4`GrPAWnf!Ej1{O+lynShvqE$8j`{Rl z;%JG61%cCxbI_ti^X8`zYW<)c{3o#cb~Cwi)8RDS02GlSsuW?Iai-8hp*w!cg;#)S zzSl~(Xc4(%4)x_Hz2jWbvFmQK-lDDjPQOqg@H1^>D?6H z1uUkW{T$(l;qlZ~d7U<852W{HW?(sxxvRQ%V*Gp7zhs1>0&6~UE6$~NDXgj}yyoNj z`|8beH&~40y%zAJ_47Tc`f^?M2uuxH*0k^uG|$YrcP58D+!f0KiugHUHMe>c8mXxb z+nt88mty%<#m2Eklj0oD?wZ5BAs&Wu`8-TikHK%lx5DlUqJep2ujoazpK!z*$ZjH7 z1m&Sw=xTy|her_!C`r1r{oM$XpZ>RfQH=pE(@Gya37<`VSrihu4J{dRwE}mXN0&)^ z?k-j$9E4vKbw7lH++KawyX*gO75MP9l}NJg0MZs}DF0Dqs?%dtZ07=r3$GLJ1mxU@ zAu3#K-Hg@R9mXWPt}Lpq;LF!fziya`h|LaZ8;7WU6w!!aEu6c;GJXdp11x#@!877X z3Ui0!7v?!AK^=by&}`8#`nFY)pJuEb^c5CA_KhR;=9G`_sipaWA`}&9;|rl`rHUO= z*W`rWz4DZ6rB<$U%_Qs8$lBke58rPdG=~IB=JK4B?jpw3&mHjo_cuX~>sHuODosJw zK*WVinDBa@J3ULk+(|GnWhApWCy4tu$8aeKizy@pd9B{tU?$U5B!2>SpbcH@#FtLb z4BfNr#=*L}BKxv=yrYw5unKkt;p{o2h76a$_3c5I!jy^q`3!r0SnCNj&_@2x#ymyv zUk|1ArNB&=AcmNGVLbO2RRfoLud=~vYbvuznv>CCV-0};G zne59B+J$q-JFTPU^+hmtnu12~qp`HzvF&>-zwYzlqTd8^Dq^F3xh_+R2mj0v9+Lkb zX|)swTUyK|wEJ@ck+jAI>A;Da`FDJFv`XD=Io_ZHd2h4~h(n$y06J=z08Y*%Rt6rf zU{x~@vWOCsWtwC?3hkA?v6HP0hd_JijUI~9Nd8EzaH-Bu$-w2^5es<<5+`sUh<7Ep zFV3wdXiq?A;%iiokWm@@2h(@c2MTa|WV+jfQ4Sp85#IGIs{w-3)gcN~^^R*NDYZzL zZ5^Hve%+--IcpJOZ37S`TGPror^AUnL?HL`*>NRhMgfxFohdWe33nwLCyZ`fo1*lF zL#@oZ8lNuR?djb`|MWMc>?VykC;Tns7Xsd0#QuecQ{a+!C<1g)cNOG4Vj$43H)nEt zn&_kBa#KzT0|N>@OZ9b85%VBv-RUkwXyj_se(zzweq59+Zg&ph2k}_WH+qq}OMTC( zmshX-7i`n{|C7JqUmL(CA$7BIUH!PIB&y_o6{bd9Q6^=CK^G-KTf3Y_qQymqsuI61 z5fe|8SY}fPF|hqhQhBy3_`Su)Kmqb}{kf9NE;;S0o~2kTrM`FkXRf$`%u31_R-RX( zOsnF`SC78<68r%T@>tG*+ViZdAQP_*i1?ibQM`d=O*5%0a>kY~d~pm~>teuMqaPn; z>kci^AS&J=>;ED@K;V-E4Q!r;ZwT5>mB*tIE~8J>fSR9Xmh1=gfv%hR6{jWCrnhW9 zQ@{GlLPfCHUd~P4VJ|@^OVk5wYDN-tO7!)H6X$GQI{g&XT{uew1pD;jNTDWxx_t_E zEgx1Pvr3t06tgk~y5N97VHRw^%^)@Vw zTWrGyu*@F5r%)_A!ZEuZD$*>{_?U4y+lyd+Eo#Jd9J$(l+cB)*9G-mjPuX z&JtZ2KDu{-0l-s1kq!CJhk7@DRTV=_oQ+qvtWvcY%oGdVmVaM}Tnv9RHUV>*$tKWX z1N8<4SIwR@4Q3}44g7kLC1c3YyJ?Pf2N>|zchv+8<}HfbHAE0eC<+_yCe)kl!LaOQGBJ{kr8|fKuV?vA@D?`ir+4KmHQm=sTr<+v z(QQ5yjGttbi=l!s2uGFUm}z7kPt>Gor-F~n@yQspg$|ME;o~G)Lrb2&R}$pCQ4Q;` zA~x^3UT&)je<7v(7t}40{6i86GB_27N{VQaR+5ob{c-iK{1s=Vv207cC{{$lwPf#`7dF8b_9y!-TcdjKa4Yan;pzG&rKAwn zqNXToLC4Hkt|Sn+Q;N%sQ&oTg*Y6T8aMsKNy?SxGn_A>Sw!1s>p66yMA_A(L;O?4a zBitOg`gW?al-^oxqlE7nV60l&zI>C@;*56QFDTg{kkVtzQaPZZd8ALG505KV`0<02 z8L09LKBeXMaWp71#GKDWo7n^VVAq?Kc`wwF@iFKJWlf2YBo)wEY3Ddiq#-lue;F`K zUtuBZ%9&DJzwDERDl(vjv(k@s5GW9AQOwtU5yi+v~-FDt7746whg9)bMboi z<3Bx69P}+{?+Cl?o)R3`B)kz3dKba&yI>6VAiVkoCbO1vauqKeA-r1?bA! z@k8^;$%3iJy!RYQ{mMqF$!G2F8&A^!n$GvRv*W4r&5M>>YjfoNr)a`8)nG}czoPc%39qQ1G9)?yWKcro1D^3zk#!+rVcvM<__QdpHxYFq zj~E1!d&&0$klu!jY(k4>hapJCpWs_FF+(@6j$cVK=_sWyZ!wmrP{JT6=#y;6KPK2F zg@tnfxboCKjhSNzc4fbaQ&ydQ5(P%n!wm~Skv`54XB^S62_kQqB(*Q5!C~J}IEDtC zcHXA{jt^JNTA0TAiDdK01$f|5l7saAtH^CtU2_6(PR7gi#}UU2?yr5Qyv07h4vV}Z z)xZAu_W+F+0zl{OV+=__-rC-1Wpc`WdTtTo_f=Lven#7-PYYVx{YsOdkYj%oVU^EE z`<*rTxLm28#&~Yp9ho0hDP!drzN-<+Aw$!6Hk+w6&vBc=X=Efeo^)eSHL&tMq+uer-cd|3W zNvuCPdwKo+XWBZFb=1Eg4 znsIz{o@cAdl{|U2S0&hxF2A*a5@_Zg3Art8jt2Iej6 z)NLLpNYW?rX+St{ZFBPnCB8lb;&07(Bi-vBEQI~mrvGNBD8zX!_W@y~ehsL*``5?N z0bT-HAXTueZI9O+MAa3^EC4U(`He_(?*-y>hKb1=8TNJ)-WkR#RnqCmA}pvHyN-x2 z-*U-mHTR?o>2WC}zixIj&OjSoEyUT0+~4+r=c2sGc`Qopr289n*BfXzTeZqT&xtwc z+m1v`X=ayo;BkH53|~=nnhxIf=D@oZ?Aa>rYTGu znKWEM`gRL({x>47%Fk5P*fY)ceZRz53Ro=UnpVCA3QI2##ndxY(MZ}M{lrDK zCG9PD)5Ex@^NsA?4DRj@c)))6Esd$L02g@KT~*RG4qNwrC(-rt+I{b+vap}C-?s!- zKd@}X8rZWVUOAgQQ&DS`bFPOYpg|o!##uD$v1-;G7Ivuo zxLpZZQ{{UR%gBf(2{J4r5O4)3N^!cI(Ye^V7W}k?KK{2&RE;ol{L2I9!Nz<~jUI3~ zj*edg;uqP5mF+V5=8Jm4WiT%SI`Auw%>FbZgC|3u;oFkH1UGBQ3`ImyxPB!a+F;z6 zpr_flaV%XyW~%VAWTF+=GWnYKDHN(wfco93_aME|`lC`63&tkJJu9+r@NvwiUb&`X z`yln%8MvOY{p{dGyEldqoF?f1B!ftxG=7|=?PGaY^#hbERNHs}o3#`*;+4T(8!9}r zSkFY}%%0hEem&0lkDDpXL`_D(Gy$6U;?<5HJmgwmA1Da9+|y&AS_eSg`xPM!m!FcL zfg;;}n;|@+It77`DB3jT9)Z<*;W=Lm!&zpP*9!*R!7ttP zMu7Qi$JnwfbdSySc7TR~X9D22)Zq{P4j@OKR8^f7Xg5I+NM{Cb;9S`Jrf3^z?z=|T z&`uT5w6Yx(mn>XjiDBIbIcf4OUn%or=Yxl=%x$N49j&qPIu-hUD(>fB_*~RWW0LRHMwRz2lIL-}?RmD{f2LE1r0Xi>ClMb#lCf+XG zhe7={X2td&$Dy?-G zc3N)YL!Je6+h<*DvVcOV?&0Ep>Zk!RAze7hsk(@mn{wr_d=9FN^P=yptCA_Hqij98 zf}|gMz)q{*kMS?o-v)3eW61D4is<(r)+DVq^zK!=zO(90$~X)&Q9L>xZCm}WJpB_- zejtt42UopcbHE*NmSy~^i~Hv`!xrwcN?yYOW{xZ>f*OB2q1JRDX`ZIpTH(`^EQdQA zN5uiNrOWS|tpE9_zpFA`&_#hCfFB3J&hXpg_P<}Z!UorJg9HD%b3_v&3M zD|m7@P8Ff(AU@gbwc7Un(gw&(caLx;3Zg>l^s{%isoq}`I>{{Gum9HB2Vm*MrMdw3`pqUbhq zvqJBj+T#r@!nWieAB1usV(jX|wA=5UT8TS*2zU@iA-c}91J-aw?XM_PMGwE7EJV>O zsh$USyG9csrjujXzPHmWHLQLdE8*F^@za$rZapp=tz^+JzPD&$RG>NScpic3+F}Fs zkpuz=CiYFm79E~Kj8TL_D)XAXuAh@8(=J6SM9G(5rx8;BHA_~94anm_6spvj$+9%V zBJyvEEu(`r+h^oqq%3_|y|R^P5GC+WZ;n>QZ&YbtgLVzWt*u+!$i@o`=onYhk77rx zTa3EQz`_kZv_Rm&1dVjV3UCP)dNiZlN!9GyPY*4p^vrLXLrB)SPGB1hWUUU~e~Ej& zw52LTn0VZ`7hv5@4~Xq2ei(C0<=l5m*2*)ALiMyYvmMVhundgzaS?>yHrgV5>5CB8 zC@tl{BzT@Cz&g6?LhK|Ec+a713{=R40FHlJDPT#u$Y(qYoaT9nn}l`;O)7ZXtGC!_szk?JPu5Q9J7xdvJN-o#usNcsNkJLr_T;U?G$ zxvzg5&XXDoR(x;3vm{d-Yx30iyF|L3!{X2h?l3!g;E##$zJYSX7FROOMpao|vjpo! zScbH&2vnpgv@L*_`2NC}HDlQhrx}F$=Z?ey${N&PuViaE3m-o4Zs$Tc<$&Cn;j5m| z1rsrh@!$TSrM|Z}nuHV0Hr~M13y5f|SR=Ljbau-_O%?ZPtt!#BdfpZghJ$Qt{7S%e zdBWS{#g_b?E%yNYDW3lc^S)RG;y){j1tLadxENft^p8fNUQ{U)&grh*p$1k&eS&c- zOIFcw9adIWeg544B@jjFThGxeMbt-Ij&@Q=RrT2qVr}$wU(3z&J2_t&jWHW~e?M0> z8PHOR5+uc6OU$~D*!-u;f}Z$8n(~;S!*Zp4#svc-Iecu4H?W6RvN}8UJT>xJzZeIm z{g)=e)kJ0H4Y~ttYS$z{yAaa+yOtsAG$noHO|0ZRx|&jV_d+}(BoAd5D~?~jS-~6i z7f4T?0r0~;u`BlJaO*mrn=O1r3h2hchPh|o-Z#*uQ$2Kl+lWa|j}M)=+*`ix^OTKU ztcsoKHy25BZu4PQhRb^7O-d4|mZHUbn0&-c?tf26GSvE=TGBmCYc!pTaO(EXDx1_| zCb!Nd)PT?n6pe2LdC|4LSi=1yKS&=mY^U*%N{>s;W z(4(14Nxa#xHqf%9>Gb^1Zs~6X9tffoXAn7Dl|g_qP__u86sH%>14Tm*aJkLP5az6d z$MI;YjAw1d64%k1 z+*bh5y1c6&OY{MIFaJsjzW#LbC9!|$Sa5nneP0Bc5nLh5sO;`2%E=rm;&%@|1sO~)$kyims zU9VQgZ)dcXjGXKKw`F;|*}j9qBF#vmiZ%b97Kb9hAyUr7>HVHn_%6yB4-ZTTZ?@KK|186o7`wa1JK)rVOk*zl$3BWdV%?Bx-%HA#u%#x46o--eZTumMIL$B zpt9$T-hDF4rYrDH(XW!C9~~F-GoH0q;MTdn+p3sn

~fSDz32At=u$-z*Ujdj<(NvI!MC1ElCeprGS?(D%-g3#FYxE{LyE9tF6 zZ~+10|I`8WC}E_=y7gRQ0y3`?F*6}BMF2BJ)EZ$vbP(%1@NGBMQUJqtlN~(?M;}DN z?|OLqd3BxIg@Kfv)MM*ZmkZbPi4@8J>;b5pC6HK=#4ovTyk12g$J=r4C=}e@L%rIW zLRG@=Kv7js?S-x%g{K$G!XGwSxV)qNBQur9mxC#hf~@n${O}5eL8{L z@#_)NaA1Szb29S7Me4z0aLhlI6)D2sxc_E$h@BV|Z6wA>VJZj>yS)Z;ph?~YLzi6K z_B23C_bcw_MQ-g$Qf~F{jrgvot%R;8%}_LDjdVDnGL;zn)DwI7P+evd21#M4zV0%H9hbW*i&9p6qZa)F(vA-(g5XS^y;i7hu6w2o-NF%0-BCkb!iLOC^Zx z1Sf9?I9l>B;AVhN3ldIhB#R@6%ud!wTFJ_7n;e9tsZff&zMF;&3s09=)8M{F0lc1W zgGL1?L|a7oWM;!aKLShhf;-Hq738e34rG*)@!*+#SQ}=o`q7-V{4MH-XM{tV0A*|b z#Vgq8K&ckjG7SaL$WHU&F=WknH+1B0XxFFR6V{^B3{UuBfM=q`=LwSr|30HW@wz#s zT$bj-IzQ+0X*b}+<|Y0|5{3dh5dfy1Ob(m=dh(pxn^XzW%GNAt2`zqDR_td6BN8L%k(Wem4EaoMZ^k4O_J0(abpf zLp}_3Uh0#lAT7R~$tsXB{2km@cz_2wA&Cu1O>RVO(4mf+E(@_bLh>(qVz}@dmImiZ z#O+VQ88T?QIwP23z9Fr6u?paQ~n(sVPH{m3+%U%x)Z7qSOVnTT63)3fP) zoPYrh;7*zx2DNEGxPeSmLj2O^h!F~fxm{f0GTsNgba@1jxg+>>ek1%Z<}RLb?Z(!h zbN#8}M{0)~GLE9GldpLM3<*p*=DT#pb)p>k&;`9|_I%ie;NJ7ogT@`nqp^74Ac&~m z@cs*GDUT?Sfw+<-4SwlR_2cz8ws0V}Bih-$?Qt8Ay3T!l5*EhjxVWFDKWv5 z%xPz^^gZ~Ii3zlAfWdKUd3Hlx|2(t0hv6_-8nfcf&#*Q_`i%o(m9rO%6j82rd0j6=%;v-RTLU_RZypCl zdfN=vv>su7u?e2+ZN$Xi$Eda3Z@E0_eEa4ZY+ju88nd*cvOw$#V6;H4N%;v2l1O0| za*v$)+si{&5fR5uvgNlq>}ot@jDB5ya4=!2#Um6#ZpI;)G;5U=1{vHoZdi1$sCa+p zf>DYgmD0YH@hJzoPl0f8^ElcOSa7{!7IvKuSk62?QasekZ^=Bl!>_ff>ra`Id5#*$ zO=VXb4U(MQA5b=I_C31^zq7EWKYRQa=O;i`Qfx4?Za^lRMYj+6cu?&JW)U#n$?JnXiqm6TQ@1H5D-&KldMsxr-SV>t{%jci1y)KsSei_ z8{?%PkoMuV9#2`+jMH8r1xPRtLr(QFPV-d9^~|+KP9~1PkhMz}kt2UMamE{&_8`Rb zIAz+|IhcY|QZbI4U6Uy}WL6-e=PGd%yZ5fcI5~K9+x)^SH(I_l8F*?!w|Yzdi(~)a zSpX!+hST&YF={I%n#yF^lHW%tE~JEWv;p<7;?WH z3o)_-#r(8o~A9(vGL=_ zo35k@IN-#LQJ_dR`eUzdKs95M%Z^h@v{*Cm7 zSb*6?3cNP<=yDiK+`PWsrCE4n)$3!_MU4Pj(D(PntMv{K;epJhdhGN+%p)mO8Ai;e$eAS;$YJ%KU@i+}mP z+7w**mn>o9WGRiuFczK@Tkq=Vs9lYjmrnvji-SP*KyF22NX>6+KwIqRS$MV7V#mPWenv7Se4dC}`@XnuJfIX6V^eVDb zy+$W3(szuv`UB{Y9XTOtu!IPV+|Z2M8por2@@{-%HSSdo(Ix&4%fA#CE zRaO6IU;(fS4g(I_kCQ|?8EEP15S^Dd9^nHYIPAr0>{IMEyh=+)PmLHF&e`5gWkNa> z6+GItE#OZu8!#);1#I!*Jx|_y5xb!yTP^hym|)u} z2qsCuNnJZY-cg|j$eEBOH%|@*Ntgc;`drUW)3Dg%UG7p*jXwfqkPFD0cWM6xHXPhd%KRZ^p*ih2_UGW1ZnZfenA+8gcpzPR=&i8a^1U?0qrZ zr{)YL&>`psmcY91vh2fqz8lu74s8l>neO!$8$jI;qMkoDdFc*j z=DeF0V$F5L83{R(c|a{mbVuz}qo0dAzE_HLK zzd7muT?N;{4KPeW-@8Ka9~O)TBg(o^R3(N@3X5yQHqHtpP!aRp7tvEiq5y+Yd!C@!(VVjEeFgGJL zyH3hI#?Y7J&-LcOKs#U}oJqIBD|WMm7hL>8!av7%L26*DC+7^lvNR4w9 zxnGVOvBp=BE{4qW8rB&c@#0e+5$-BmZU=qRY{a~Rl`oK52c3@Lg9uX!1dMmy!z~9# z8%byDxx>-e7%x74Az)0>pPR$`acE80MC+K3glQ&t@ePuxU|PjD0)nsbll_yaX-|jLMl4q<3hz%~3%T8_c48ldOa6Qy zx_3YBZ~nHK9c!0!*pp^ktOT@mC)d#>LD1b#_N7`&>Vz&gv5z2ti%YHPK&MN87AH85 zLB)5k-YRnrL#|*zeNaLXr&y)x$eXIdJWLYwS1ED!|#5pqsXA$%xv+-_(!L`S>Q@ba%Iu zc}+_=)IX%vJ`&Lhfz#w@^xC;CwXX&wpTCtrX$?^-=>zyy z$8$X4^t}c6QZ-a^uKzjod7!0yUmC~V=T@b3576%_tNDRuaXM$e`^UXcj}d!v?&n}U z+AMB}o~H|WKUE1P`nztGRrMR6IsnJvwLV{U(F-?CX>u&NTa41$9JU!y`4T6z0}%x! z*~*tJnW}0OzA_x8El|Q~pF{$#$EPTnNPB|6wn|_vKn+Rhu~qog1~R$YXBL{%Ss`pL zf0lCP090@KG&lNmT9RFG}*BY!sihB=K1S8>;9_1h9{Qu z+)?;3g|F$I)I~|(CX8Bji>QY_`H7X+vx*-Blye+`X%hns>-+&;#^1F##J=$8m!3g1 z1Eb7Rn@t#S$OJ!u`z?9S2qS3t?*fHC@`4cb7aAG3+%=(Xy-%X69nBwdo?hE8fIZw% zHg=univv)C4fs6l!Zpd-%v`*X^y9;U27GSB#ZLwTj>htvec7MEIY2?hcU>M<#{&0` zG4q`CQ)CG4AVdEqmhmPX93%*(Z}6$Ds!ZtWzH8x3bXKFk z+jjL+y0kIEb<>bFK?ADv5xsA}wG-LBZ>C?52>3n>ohsE&e5`_{-N+TDnl$MayDuu` zTzoQcPv3u$)fEuvgC+|Ra93zG2JpEd=MhHZvO#Y>uia2a?@2MN?vo_p;EK6E2KE0Ns*zey8m}qH4#!;&?dp$ zS^~(DuO0J=M-5(JsekAHcU$!XV2pLkKvj|ERYw(u^6zJt2^3qxf7_uLp#~=xq#+rS z*ei%p81Di{7<%M9yF8RRDW-y36SN*mwmUu(O!O28EvwrL z(QwWx{hOP)(+&)B*G-Lc2qGI>y3|cTpdmk78a-aO7oUx6*)S|TuJKT(BL{7 zX!#Lz$_#whzW)Yr-A&t-)nj~I8RtFDv-QI67u4t->;kuLsRZRXtpZO}Lj+qTb>vv9 z0s+TMfn++;-MFQ^Z?DBJ?>3`>`mshYz*C9t{VT}IP^{4w)3L7EaFUxywlFNcc{T>M z@>WtX$=noI$b2}+&`{m`r`lvjQ517)i%+}DIW&P54{~@%;V-Rg$m;U{(GyLzUN8bA zhjn3-9{=`4haqp4@Uc!#ae;R}p6x1m((qQXz^Ph0h)j$r)8(whWl!H-$;w}RuRaU= zoMrN|!Kgq-qpq3>7w2Pv2=C&x5oUmx>o<|8BU~~OxZmkxtBfu4Fp23VY@w$=>hupk z+~X#X_%D9gPpycB3IVdEe{<0;3m)BL3pdSnuG?@P{N+0)ybuj*YQp7WPcw)^I2qWHGH~E1D0T9iKHLTvdgZXk+=BY$*<3}TUY|awu z1;koyLfx7?r8-kK{d<%=D#*;#lV1aLwqQ+RvL>9vMh6Q0F$|*V?bx^OEG|L!9%@iFo4N!kn4fiC%v7)^*PWVrpQ%ckgS17P9@MhxSevBJwDkX(6YX+s`&1hTx^}l_`{Y-S7H6WdDYxEcQyb>HXTv z5N#c%?WMD4-_FmQ)@0wLd+NL|=la;8s_mRq2MHIKA@t`EHqO{Rg{1dI`MZa1mB6V^ zwlbVqnDUI(A9y|7*7iDRfFFrP*%j@FK>3hY65hC)G;DqiJF zMJMp|7F^@h{?f4mA?fGAF(c!kCcp*j_<8s^EQMBYgTY0}!Y06d!1Ym8mTFz*q{*gL zDAy*a`%(hy-sPu_ibY2gdc`kPGjEKHY@N0y?kW2^Ezd!feShsrVe~-jO`-VG=;>>* z4fGvb)LYN5Px*e?!^jLmZ1{`(^n)Oiq4YyRIlUKR$B2;Oapx z;T@hkGhz8JS`fNJE_V}3sb);Df?7fSfy3HTh^b;S@`_`Dvlbr;)u3*@V2PP9gL@}} zDW`^9UBES3ZtG+6DHU&`;!KXUX#D(ICHd%%;J>eH@1&-QJCG2Pj;UFKv{Uo4P+R(e z6E3(s_*Y4^6aLLv`Qg0=3XdacN;eFx2cf{SQ8%z--jU)<{a`b?JIa4jPS}J33zyM% z&xRxTwoIGDk}NzE4Q!wvpW!wd+|)Ks;PP&-KKODv{(QZtQnU>)&+&CS>|q`!a5rFY zlBs0kI0(5r7TxHw+O8T65hYv)Uw^)y^=k^BGFA9@1kxNCsHxgVp`XhlRxO?wPhQ2C zN(vgxXsNS-Ylc023^d;bcQb>>8~T-ULUuK_u-3ywl^vXn zu+E)%jMVll3`V_dXLOkB#^ zpL>1oTSTC%<_a_n=wf0}Ev{r=2UnkOqZBnUwOFwen1Z<>_PSv_lQkZTD9^}F4@x+L z5k}L>k{Imm%WGZNK4`bgF1M3~=b?;uo4l!T zlkSnX=y2X>NI7CUQc{K{4>8;KmUfe+=*dcv@A+lJBflnRsfNKd^&A_{SBu@|O8dEd z*0$h#x)Ut%gf4x~SczGGUp-)Oe6|F728aF)QZ+!LT(rOj*6eG4f;a2-x*Ta5Uh&5H zxilM}zyx#!Hn{pbZoOHa=4$L;G}#h0+kFC6C(pGJcbJ14#Wk|6@1D~EGU7iv3ZaGvo_dy&X5;sS^}jT0A0t0h^0j-AF3B2uTT=x~NPA=xt+eoFH>Dkh!8dl}oed zMHoBBL+=v_*4eiB!grrBUB>l$(qIJPD43-~RlT(G0e3 z9_|Q3=h8nEp3h_NaEmU3eVmczHa6^ikGw2yoL9yv#C-W1W|h!>UrmX|X?C$Jh6W1) zxkrjMnJA_C#p;;dJ2Iw3-fpti=GjES0Gj8ET7lfR>EpEgs!GrL+t%UyJUT=QiFU(r z_6kqGEtf7!DrA$s;A&odjD#w-bwILM)=a4j6Y%jGMcG7!?tg1VR;Cv~q#nW4qL}N@ zMf7k@kRKpkO^OyRPpIm&)Alq+EpIoOzN*wwQdkN1vjYu8%E};~*ce^5tk3*n(oD4} z9knUJcgn=#L7J3ZHD;N)24IA4Y}OKlZ^%Jj9h%eW*004bHZ|^a(?1mesvv~;fOsM* zY?S6}?%&<&1~oL+6QZUfX4RM0j9gKp8$yUo0IRfrA@yO{_Af<3q{AyD1$^6p>&|3# z$03XJ=b+OEA>$CM65w<$bCL5FYVY_C=Qh;X&Ph7+Pj%#s9B@Z9z`mmYfvMFsZ9>9w z7Z_rll%@mt+H?L_yE<4gv&r9-It6r4>^Pr^lgA(v0)9cBRbb-XIIhh!{i1EudGI6Y=BV>6(eycRLy zPVhdYq$|S;?0p8!`}zEhL;21$*KO-a3V_vYuiCS5Heg9it3yIp4&>G@os+N9>zFMB zESnPeWdE~Q9V_5A`h#b|y>q|cV)@iY6kar|^L0Nt^YBmvGZhuh00etECqzD$EyVP5 zUL7$Z8yXn+S7Fv@{p)MSCe>eH%D1#bsA@#x!fcy&ya}|C_Po!QS%9qH34|3)fR&_9 zzKJZz0sIsr^6?o%Pz#vp;06_0Hp}I{;>NVMT`vpC5>&Lk{u6y{Biw#_9E;3MRq>_wXM#c1$W{TenK$r>@RmZ zx-sbi6S0ERH^cV$L$Xm5?BRaS<-EsAhJ>)KWwkYRGNU8YO+v4$@#{R*-M(J=NiTXn z4UBa3Hw~Z&q#COKP_z%-Q(FG#R=x3znR{$iO_}&&s8aHmI&;vhT@I$DUKG0|=EPHm zqrt%7Kf(_kYo^oO!2OQQM{Ys(>b~Q87X$WC^Gi|1W1=)SI{7w+gR4k<*za`*OO;&Nb5(y-`I3Ltk4FCwmH%bttg$(C?`AKSb}N+;wmC6PbmDwV^y^JkM)C2aYF=4xQRF*Jc$FqQ2b7p_DS%2a z5iFcoe;9pGlHHDB`vdxC*P{@BdDx;_x1$XTY4wIQ94o=B+xz*)r8f0rtJ&W#Q?Tui!C9H01)(L5x@y7pvce3<9T>q!bqYg^$rM!su%P6c`aXmtVg;y)`R|~WP`nte$*&TL z$l`5tBxqd~bNd-~XXP4cCG3CdV@P`Mfyg8yh=&EQd4=W zz;g19d=%e5I;R@op2Um3^9U9*S?y-YyGvvyj7=QXw}yzE-K}yUvIu9q`>v-Y;s{Po zGL&dlWUhM?v$rY?pDz5GBq&xp#1Zhl{?G@+<8{$q`BKGo-rP+D8zqcvVDT5%hgVKX zu~v@*ddkf9pCp6KmgUDXokS~ARgUkHjR7#d?qpW%P_l;ey|+>vI7~UKWYI)>VjZWR zO$d<}?UFonP^J}strSRUe91U_T3ExRXNSn;RTwf z@*X7)4xGO0U&+tu-)Ew^?w*V8!M+a{@s3$iiBC&FpmyYtm#b&k4ar=PA)A=_1Pn_2 zlqF(<>c@lPl5(1g_vqeOZLi zVrA!tMN5o{9V#3>K1W2?;6b1f(zn&huukHW8+YQE(fk>!WdN=&nn3hnAij=-E+vv( za)%h%mn^OsPqtyz-3B>8nt9%l`A+-$wyXXAnV85dK4WWvvuFd^M?v-N5!;E3|+<>rtH31JC2R z>vaLl*ki{T$gsQYT=T}xL)a0Wl%$9>QTkUFA!sy?f?5R)E7;ZnbRsx`{vS>R zy6NiQ`+&-bO*IJFC-aD~ z(>o!ZasAR+a+`wW+gw*CF3Q)UxvTIESc&jBP83h`?k$*>u140iP&C1HJCCIJHTU^t zrOLLQt*Y*C?Uy2?S-x7@%=Q0eL;xxF7B#@Lc`%V_4@xZWNp(r;=ZK4@zL>Y^dQZaG zC)Nb?gOG6X#Den3DxA4T=8maMbm6N-{AV>HHlF7klMYyBZg=`4;t zrUon`r)LB+2Tzj}z_GZ7M0!X>+MCEm9g2QZMj^BuF16AsBgxc5?*(c0p@J zF^f_;Oy=lLsP_y?S>X!H*O#&uQ{5&^{+S^3&WbWWfqw->cyJ#(ppMl3#%s!H@%Pdx zInC|~3&-F`;uLZF8OWY+3j&9r`Q4EK3x0bqbD*ell5`vVm*>-2xzMzc9~+WxIS_$~ zw2Tk`&5Zt_=+>y-xxWJ$ASnZr|8#JWRF>l8%eX-#EPowW8V1LmE)W+EbTE!R62AE% z1j5dG#rg>1P&SX9m4g}b7$UJ`l4t4#lHs0Uh0u1k!z7mOk?4H%tVuv4NA|0JJ5S7C zFb|G^=>;Ej1#6#RcqyZH&Y3=cez5_X+IW}nTAT}9?UB0VTr;xw+!jvb`CRAAEI9h1 z&yYAQx=3dfj-1jiTGm-EJa%Z4(bo4wO_^{)7u-Fa7d?H81v+}1_>`I80mE*a#?l^` z-P;hR1zuRp^%f8)f+dU}Pa3{guE4RcohfHON`Jx=NUd3^hv?fzT$3MJ5_o<&oE#Yn zGf|%y#7@W#XD6v~ti8l0?TKC-M^a|nvWU7e1nd$}w@!N_s|~D@$5Cfvtcy$BOnmNl z?+g_o+x#jzoiY?1ghQG|U9c{P=P}%buWcW=b+#z4R>1gbtPx+~9D#Q!#aUQI6ufz2 z{ct`JXo*Tdv3#b29_wzKS7OAedDC}r`UR69uC6|vrfZ*2*lq;jC$-!HqZ(#5>BLX# zHZv2kohcWRbE(8N@*`VZE{bvLSH{)XLRTMSpLm}1QFI}~MLtq0`UmZYZdrwrzx*8V5uK^tNo5~NE6Y9DoVlhs zsiioB$hEgfl8DF0?Q_wBlZwb9+>d*Sy2MPHrf?O*x>JTeQU6MbbucN5;~f789mhsn zRdw9V9Z3*3<&N~*$^k^TUgIw>2SF0D%+E3L83%0wusY{7B5{oHYf-@z^3Eo4?NW;L z9(0HOyMtC?#FUb8Yk|{8EX~<+*0)%c@q^~tW9}2c@FSMM2Q#*TbcnXny#Pk3b}r^2 zb#Ax&S+En#b5eFDw#fPHg^WG<31E|Z{kI`26KEqWXuDqJ1~wr`t{n>993Ryml}`Zk za+zq6j=nE)nw+|KKTIB5J*G1^B-7S+(oUo$JBbm5N^k}RxXL^QCt1fAIB$#m{#4SV z2w9|=O*l$je!Q;PK}*M@PXJ2c#w%U)!Bb)j?qEi|J^JcAk%}dP)ARU5_mSVBFjhcl zEA4ONi~+K5B9B~-vbEvBko?fN9au4d`You+xeSmNZW)SXOZxh=Uzs^Hnr~l@ij^B! zN#JPIa^E)H&JqM5sj3j}HeVc5VEuH10@i2)_@=}8isD+AK&oGQmx-_Fs>MjKBw7YU zEmU)uB7T}8?R%nQ;Z~M*Q-=$&_d`;O#LKNkf*xX3{!6R^R*_M# z8vStC@Sdnkk+C3jA|TyT!&Y(V?vxWDNTDRGxp{Qr@ta`lSsA8`BIeo`)#-M%5!5?< zS+o)PyHFh-gMxsxTYzLDAwR&ne^}{`J1Lor@rM+tV{EhuBc=@G)6}*+NAcs%i>%GN z-(3e-%lB)Z>p*lv2pE6E^In!LiE(?izrdo^UyysMVIc z)JFU;Pu%7jXpQ9@IOe*`F-dId7q2xQN-=SXVN?6X9n-t!MF|~f*thm9D1d~29`Ipg zw4HCm>-_vZ3~J-`-A&f04fzK?6Z7gO9Y>h@J6V;wrRAQmON1s_x(@U!Zyeo|9CdP_ z7;eLgh>@lCPv=6{ePmJt5o5vzsmP~mxas@sYR7G}!PHwIh-l0HX2 zhNoJ_h$_f2_fN3aW9SeqMvv~_lg0x^m_ZXnx?VGRRNC!Zg^>?LqF8ZTEXY#hQAt_t zAIBIvU8pEDn~F+2Ru*UQ`Uy!RRIs%=p69T9i3=oP0k+Zyw)s%>H{sCJh3wePX-U#3 z=90)-;l#H2G{l`n@uf1ojlKX-Ax_E9oeOY%T2kj#M13SWaf9O zlAz_suAargvr2+-Q)yGlKhjS4k~qkxgcUJM-z)8Q;9-elmYP&*##C`h@10J+mVG_H z_g#d(7to?!`H^xmh{T{cBu|-L4Z&SuR-v2nk5qVJ5E>q_Dqb*UNcrH*IvA~87|H6Y ziS-9uu-DLWs$!svB`C_2-fZkqYj;-2W#kg>j**q?sK`8E6JxCB$_(R=V~H5+GE_#N zjQvlt!ekwumK;?j3aJ%93+jaE=Uv}Y?k6%`-~0W8$Tswi{_+*+>qJfue+&z=KNUXMr3;3L%64v`@3poPiF)PIvvhwpb#IFjr_k z4d_snVT&00Ik?&&N4NQc}~Ao0iP3 z2D@h@n~o}D52VU-tHWdO`|1|WhQ@N?tXl*Lb$YTG(m7iemFT#nTHcUOUf=4n%>6p5 zhCXidY2UZ@OBS-BEXv5A@|9Nc^`~>Mt9PkVq$y=_Tbf&%eK6j%m{OsekZw`d^USsW zah6ghHab>FvS>+`9D1fW}Urlv^4u`S%JWdhBF1Qw_{26e<8IvCoP zzI|bH1nS#Dg3w543k(6lms_raL>9&gULC&}8(P$`acf{|C;iXx2enJ9U37oqlUi{) zE^@}~C>4nh@%8YB8a6fE-7nqSZIQRPnHCMuNXhmbQX23c>lt#3ljPQhMD+o!nh=(% zq`}vW{o3FF%x{^DT8O&dF{Cqf9=d1%2*N%+-fNW~UnDwDL`>$4^9y%giAc^<{rr@X zJh*jKAVTl?s2@dBjr&4))T{pP1O~Rw3_;7q#%-{|q9`6H0LZx6@wb#dt#R;^LvzYx z=460p+Q4rAJP?k%T&L(KYqUthw2+R5>au6v#B}uA5faZMM~wQgGKnODizikJL67SF z1;4RqUrb}GvQ=vd4>((i%U3rLS{#<+?N;n}K+w!cYXmTFf(HGUL4; z_sq(dR=WimB-t`$?xh#MR5fx3SF1IFRxZ-CQJWYumTm4xa=2SHY0o-#>u18CEqyjN z10|YH?A8W16JGaF?p$|QZSC=D?rI2zRmc3WqstfzGo`_=1fvRM>z(PVdb?+X!V#Ci zP0CcA9xOL}Omeu=SlZW%uGBjbj+Up7|z^L)D3oLe47wKu(TKXKc2 z$#GW|%rLMxzz-Yd)NL;vP%y*_nzaE#4_uQyqiW$NjvG$>Mf4ZON&!x2VmlHYy5n6&8v@0A?zY z7W;CgaiD$S_t6Q>qFadmV2Z{>r?bY6rAQ+&u+^LrbFR!y!wFm3W;VpmbU?99VjLiIqR0Jq&G^2kA(Wef@Z*Q; z!_)j5kIE|7GJbELf-AGpG#8|!ZdZlTA;`>ZWE@SYhv0z##k5LpelJ!e#S5~V5NZD! zoLY|Wp4QCLfH(mp{M(a(5BZE)(|;y0S|AS&F^V_NAE(cp(G3M|=`$qp z{xVs+SS8WH(1ME7G1Egbw2SdXQq8eZuK?OX`ss{ZT~klk%5Ou7Q6Ss>aju@gJr>>M z*~3l4%+Z?%ww-8XCtgi6q}WuJ;bzB~XS&IzX&os}-!%Lsvwy(}7#=-(l0ksMBv_iX z?^BDhOnVRY6~SzmAQl=q5Ge=dn)@6TKKBzP&FqOhu0jMle_F0y`P%6*_-Glc=(9wb5L#4Cz}VX7IsIt8f-%s8yK7pS{zE7#%ILS=9EN)XEhif;NW#eSL-SqCM*$6 zb-{A*L`%wvQMPL|Xu0Gz+Q%t2Z0P(ye7$3MrCZas8{4*R+qOHlZL?!z#*7L0Oe*4|{nIALvI0kCesJiMb-CQ>%*^K1i^zk3Zf4oqGa*`(FA3u6L zu@2Ftj6+F*>PRR*ajsM6QMo7}+$cK@u+CBr^+|uYHCylQ;u8i&)2;~V&qPnsZJD6S z(n`tZjHl)x?AHSJ|8#C1=S$=98$ja|r@>Zm6u0Qz3x;1EFYudyU{i=2VBMkDN%qSk z4+yGX-3S|jlO0LD))|RM|v0a00 z%3hm89WM|u!rBxlFMi6+NOw8;+vB*m)AmSero>X#N7LbpKl*DPh9tl}XV}|~BA`{OaM#ghN|^JH z1F5J4!H{j$`>`g@d48DWo#A|7JMnO58RuuMnO@-^Yt%U7EryOz1yOoFv)Vfg!LSQ@ z3sSIpV`|-MtX)5N}$t`Z6mb2{fS2yIB#6?(nUNVxV@_V6@&$r<6xzPhBu>lQ?s#rFWsJ%^8LP1`<=L`INoQko|CL%XafjH*J5b(7{FBEh||xKSZ8 z`q3pb5>;I$6@1tHfI$5_Z1j@QxW#j82To|&H3U{9vKFjSc#xQEpHYXD11x|DhZ7mv zx9;l`OLqvW2v<>Ab|QC;*r=(h zf?aWICm_mu?fYREk=FQ>Jk(e0xB!@Wm}E+N@Dt) zVIR2K``@>2r~0-0B^}Z;D+IJ+*eykaJ{vatd$BzU$3}3>EonAwup9-~YY|C{qTF20 zRY;j!JMr(m56&Ga+&ommh2ExOwI>Npv%saEGLnY9c~kMz5LtWP!`w9 z1d^KV+H#Z*>w2>?=FE0J)1d!)6T^5^5~v~*7tzgaul;CoEe6Q9p4dXx|h%0PrL3 z6su8p$>FIk>&%aRQ{0=}!!w^9M8G;qC@6}GxaZ^}bh>r*-re%HcQxi=_X+7Lo<@>} zQ9`PNBgd(q&7B*euRjj#xf2*w2g}JwO1xDaV%i-I zG`Z6C)I$pNm+xiX?>Q4hNFPMasOJ?GdtLQ{4@omt?WKjCvUY6-M`T^5&l-#B=F)WQ zXc;TquiW6VD0KKl3zDGuH1>KpAAqxz4%Ms#GR)VjnbEVvrB_zN2j9N}x9)-n6Xlh)|5n zJd}80HJA9HHF-nLb8_c$hQQ)H9=dIewD`LYHkjIU7h)nT?GNjsbkKzqw^`RAZYsG7 zhjICkjRp=9FKR}uh@X}&kK(mWgzfrN9cgdk?#!~f?itKo$jrT0^t`c&|0w@NBv4uK z6j|6BI<|+F5N3_XvC{2g;csyY9JJetZzE%ORqC{1rj<{(%)QawR%Q} zK3J?bF-^atM}JhDOs~@pNFzoyv!gs+y40PTNyq!eN5ANTv*5OqlK9zP-_;R#i_qov z$BL9QEv*HAj94&EJNqZw!g(uV*})svZ)$QnIxP3&4n8Qxz|lYQ4FvE;UDCpvbV><{ zz}NgYjZDd8=k)5=_fe^W$O4n?mN8aU-LAR?Ri|xGO~22GEUW(g7>fq1O}XTj!CVKh zfxfo0RoDpuf}6?1*Y0%|kz0{vgkVhRTDxURul*PiE?uAZD`1^K0!3AK?RVCJ$DVhT zjYo<0da_2nqaFH!N~HFHl^-|HYb3MoCNNCha|ghtOR7!!L_KCO+}X^iW?I|l2An%m z4v1cQ!3@W>-7B58{qbv6Yd_>s92Yd{yYBx?qz?XD%)WsN6NmID8l;Smfav~8xd9V( z{e$#)!1YwL4G^9q>N}b6=GPEqo>Ma=ydy=fqDFN?en13#*&D~BJT0#z1pBOx$0qEw zF|9g6xn+Uc5;I2XQ*0d0-o(JPs;n82Nta^K#Hx+CwC_5o{EE^U3zPT}n3AnrF@NlxD zBsrH1r=_d&CsD@iaq@q4gzvoK2}^gxk900+M_H9JHz(!JD9ZFvf9OG! zZ1dT5YDEYRu>Fd3qUWf0=3^Qs(uP9ANIx>8i?F!e1~(OtxMQ2X z{x6Xwge)m335F}jNsCvMew!4sVHSQh8{n9OvS6Y|Cc%6y*aW-HM|49aYHU0TH}lqK zn3O2&TkE*A0xjH*-cZ#@!YGW%y`$=ay+ZcTXERs3_FyDDZTF$*O23&tkh>xkAu&F) z2{$+QV|K$AlF!dEB90K%fGchtPa!oOei`YA9n6aj>_;OUneh;l-F%T2ES8jU3Hi?p z%9U$EGWgcdk16%pNOOFhw)Yuf;if;Q#CeX8h#iEB#r)xs-`#dDKUPkX)+=0o{HtyK z```mhR+rbi_lG5h0yH||32~eT1>@^9QH&px>9wzL$x&z_M#0XRKb}zDHocVlNRpka zy0_l1uy|Z6VYcc{!?%`M>mLJ`zAt}#Y5OcHU6bg zHbANTwh8U?9L^%>5Waj!W$onfz>8FN;IDZo@sDc$zrChNCSjZvT3Nv9xV?T44AsA1 z5JW{Mh5(4@7dHx^mmUwrV?^QK9a3C>L=kxjCn5V0Gxf)ZN#dLyX(O`z;=ddVUyFq6 z1C?)OWWwM1NV$ISK(O#HQLW0nc|(v?)K_S$lg>@(EwZbya=J4pg_2L z^ih-oKD}c82KoQb^!|jA00C`rj|Hh*G&f0uWxG)`9_E8?okkLI)ZxQ$nh}{Nfnw@j zJvh7H3+ljkm0QSLiH(&vZk-nQTA=BAc%KFDQ42i`!Jt{Q4EcC~?SdnETjGVmq{e-g zy&CJ?0D8oq=OaOG%T<<2Swun~Ms_AmGjPJs>uGP&`CCZW9XQ@Q{90XqRQjb0YJ%Tf zLub0UKi{D?1U4_(m1RveP3TfD*aob7F|(PUhbezOrQY2>0XaYy>F$+&t>{|;wPQ8o z6`#JsI1S0ayNx)1rnPo%-t@Z^-F?7I8x=JbS^B>UYanzcU`4$S?KuA&tVi5>x<)*9 zY7U#{q;X*GCyM79WX%vOIi0icBt9pp0oB9vlvK zSOXgf6)es=KE|1?uzIqY2Q3*W5?*<+Nln2GUIz=-GJHek@p)rxI|??dZ!E{6YjF(i zkjL&iEN{xyl2rPio>u>n&5?ZtV!%*Az8IubM#PGhF6IV+swu)IW#S=YHm}w<9e?Ex z)TpcF&6wX4=fXM5g*bg0AC8pw)K-e@sAduF1i6O&A+$a*D*spOp^g|{VMupbms(lJ zqdl43Av-e?xTO@u_A#)W>pmORVM`aMiJIb&*s(cWoMGdIW!TR?{*ZWOQErx5R$$r+ zJ-Mz{%-rm|Dz$Sguu0+CiluPfMgc64&=a5Ia3A;Qgx2Bm zYERF2WJe&%WwmBOLbl+`Qr`b;@ZVe#g@vVPQQo(yhk6+%)*@;&Y*v^eqAq3lyjIO| z;%4uX^)nL7@S(g*y>_zx?%`W5Gl05_jwVxVbMwQZ@XZ(-12s9kCT^q1QVc;2`>Oj@ zP+E*UpT}0ATOQ!c0s>_0Mb_HJ9;Gx#v*H#$dfqh<|2M)v$LpVytpGGdSX3lh>k0!y zLTy*y%_VO~i5){5Hg#0$mvEYN$eb;$oR5A+=Ds`N&&o$b*ivi1<2Fso%RDF+QdXEj z_+gxe@$FtdF;h&`_d7s&pJm}?=I4eN1nv3P7s1%k1bL69E&V22fj!U;Dn~Ym!4lDh z`mWnK+S1twnZ^F=V13G(=2DWzLqDR)M0vu?N{j=oPBG(U$LrG z@|RUagxjB{gS3{485t1;j#2GHSQNP$uE2xS6N;e*f zHc3foab+uZZ7L}ea(d!8Twa;MFQR*jPIj19LtpZfrsGJ*g2)Z54_fvMQf`grl$AuU zHAzBT;9!UPdX(zd9b{z62R0a>;>CaHFwREo=Tr?24vGb;@=pG$t{wCLt6jYiN@h+< zDy4y}1M$%8xTX%Tkq7U;^?3i?(Jp3Hj-fC zG2Ow2FvHfIp0)V2xpY7)_5Py6R(GeMZ@~yf8eK9^79twSL}p*Oz53HjDjRa1oaBMq ze){^8_ySmLKB&DBHurO3n}?zHWP1!7?@J1e?cw!~m1i)kp9S>c&9ze7&2o(02=Ena z{}U?Z7>-qt9ahd0x2V}sV)6@>Gt?ZK5>`xat49zLMTJc`yjp{A6N#mjk!?ha9es|L zhT%y7No&piQ#i8___r61%;xnS{_PJx$}h{MakSi!GT?82U{5{-Z?4&*qEq}O)6OPU zfNUIxy3=Kv4#@M6+7}n^x84iGly+C@f0wpg93;BxgJ>Jh@WnlDD29oW8eo5FpCZ5= zmxu^^+NROn8m`ZClpm}FMN^)`oF#719GoW2VkD_iku}L%&ms)XeLDSfx40C6n^)+} z-iqi}z=dvIZU!4KQ$#@7 z6;6r*{FXkxzO6n?(+aWBz>}1B(E?Q);nA3YNgvVz^8_?cy5IRSwNbVqQ=Q)S&_vXg zjgLzXMbA7y3QM6@49j(gh`9X+#eBT!=~!tFDZ46)Y*-@$Mi8@X9j5nex7a1&kiXw? zBmeJqr~H9TA9|+D)D39c%ihv`3>jHj$j-!H3^zCfJ{o*N9bT}=WT_Lj>=OEeS>JeP zi!3Zi9!o!lzc+Pv>|Iba_dcXf4;Td~{oC|_iybVxlBROit01$VLD%EnqZtI%j)Ijn z`9?c6wo?)qA9gcVsD5R~DT`EZxciv;^+MHecObQw5WfJ-;1S4;dx@zv5T&PMnYj8x z)POiW<G%$^Xpliy;#+ZD`c6b7I~5FiYy? z7#fhuf*cTml#E*Ojg|kdxw=xvh<_EF`lAGQ?@|_mDlK4l<^iTPBF)RBE1I)ssz33${cLaT|@qF57-i@%!X$#EaGZ? z{U9sMU|4qH*ALW-xu&WZlXm?NDrJMvmmz9PQ`RnN4VO3Z)o-OeF6`7)9F0RVP_Pna1&zJto-j{)MGP!04U7;qA>c+=GQHti=> zU*$ard*R&BbbTt4l^hA(@pNzZbNPNCFeT^}an{zOzW%qP!AaG2vmCh{mn)+9a;~(n zD%6Sfv)8=@w!)58XxK)|cYt$iMY$8xUqX$)H{ymP48ol!%)Gs&rEZeqvm|Cxwq@8x zh?-~zKz``t8!U<1ci+oyWl1qGop!{Mf$-;{s|UQ+GfEOVIy~P_y+Uxa z4O|5skqh!@bBHUd&A4)V)+j*H))i8O9uO6724VPee|vQWEe!S?F1fq3w)k7JW9}|3 zy)(XO_uIc%yT3V(MKz@WLYxpl8B;$5P9j zTj(mj;OC}47n3NmljocdutVU?0!2%5mzP@-L)JY;H7S+GPPpca<84()uC!5iSaqHh zcPNmXNW9l0ZDk;&d$baxLIY43AYQnvB?zce>HDb>wUbh2#O#}Cj%`Xb?!v~$wZEpWKEyj7MI7DYI2|w9* zW74VPlR}u#_nMQ7Q7t@;8CrK4`AJAwVU5N_m}r3TJOE~<-6Xq}c$Gl(P<B>neQNR$#j*I@@5= z#Bll17@ACqzuR13M47_7#TwQk(Qe@Y!lB{}q?V-vYWB#4aCJIW5o&BG0A!4Eho~2< z5Cf7Ib#=g=YL1YYP&*eXTf!@uCK3v2xk9daPvgCdqU)T|Nq)d`!{{eBSN{AF=Pl@b z2dC6iABvE%c_+}N`I)XohKMp??%1c1{el%Ft&7-pZJh?^iszrFVer&fkRcX5vE68f z9`m9m`lD@8AnkCMkIJQoh+g>Wm~!@JTF%Tl4ark&85 z_hH}@Bd(TxbNn$SFj2G8oO}&r(hUdgxfeJSW&;Yq#(WtO+-nD2OWp<-c^2UkK_`C2 zr8t+klQFKy^}Jabp|YY`TAg3r*S+8Cdf+z|{1Bx#$F30d+QS)j0d0)AFV3&>Ag849 z5ngPdQ@wPcM?cy6=6FgJE>W{C7K=ktL-V#VkJ`YZ7cK`i?g(fh`yZ zPo9a*o}iJSg`oo+R((Im%>nhUDMzw{IZULgZL1Vj!e}uTMCvd|nLK|M6v*;6 z+<+p6xUXyw$;l~_XA;002k5Q8DGoIN>%^5z)$(RTk_b!5L=@Hx&z;tGp3Qi+~xe!`{U9WziktEYmX}Z=_%EyEz zz8%>Dynx;)Fq7;OON$ozHc=%Lx=To zteQ;FJfpM^yx?2dV5;}%s66Ot7$H+n?Ihcx2bb*{xx9G4M8b$x139>>GXeU*g7X`; zV(k>2(29g)G$MGUnb}UYH<*6XKf6Z+V$`+9_6W3z4>wfjwEs@WuCCCW zo`UkUFQQbBVOU6>+Y&BgU;O=Jvyz{_N?=R^dCMhGlWQL;K*o1aWA%H(F8bbpOb2CO z`nWC5!1F?`P0zk>vg!JmDccboTf)4BtJ3ryIq---NsGjq3&IAZga3c8OJI6=l|%X| zy|l5<0g5@O=sBRJ8U@m#EClppLUGJNO?AaBd14D?pe`7n7}Mkx8kbGW zDfHM*GfB#l1bkZajK7{Li_!G=ks|yULNv&^Gh37N?||LGANy;`pH&(L5X$(c`VFks zn@K6)T;hl>TN{lM-DkL*B2Vd^yh|6BnW#=*!e2yce!e!EjDS@ zFSRL1$lXststNRj<+r6leaW|JM%&>Jbus+Qb^cF<+f>X?G@+R!eA!Ui3EuFsGD;lW zKjAHhr_&roUB%qRoZY2QO<$R?JJ+20W<^>X6?l|J#~HVeKl`i~;lAd7C#P~yT$!~C zMw*|WO3Kq?cp;7Lt$l!M6#_zMTqvnF;jaF27M>&uE88?mQ?wF9ikk?8Q=r8FxBrab zKLgQ>{aS9iPV`B?xYROzzk(S&(%Xga+FCkbC)@>vc%<2su;QVz;UfYeXQzM?>BxOL z(}5BTYPW%#1~$-t<+zA6sWIK3?MR znTnaPkZ0gC`Oq>EN-D`awkatM5!FeeP4x{Z4PX^!~1=7X5aA21?>NJ_lRVoCiy>xx2rlT@q(>dAKVW(5rXq2S3h)o zA4b@IeGqrvMnC9}nRLvHtn)AC+kZ%#36qZi4^E!|HUxMEnYYZ6#xCqOA>F8ac5Xc~ z8#R>u!tV*&@33YY-f9@IN?-6FUd3M+hN+03$Iirek4>->oJL{zQ&!__Oyd$U&f+7m zDmXvK;~6%jx(6mDA#C||8y+89obdV?$w-__;zV#zGqW2+jJ&WHje29??0WBjWjrtjyxzDJw4c1z)SEeQt9z^?L-66!8zSAx=b0jO>@aSM7u;2T`O$ zJJKxF)!T+JC=1ur4~_Q#>x(C8YtPb%UN2hz~rb1Djv$G94tUkic)t(R7W`8MJ3+?6ZiV==K`1SukI}(;xik1UjPDf? zH!YyQR|o>C_q~Zfo#h*%p{^B@p_F1YZbDEc6w^O0YJDKg2?6OKOM7x$8>c0Ddcp zk{l{!(afa$W2FC$=@O5Ei)cO|UBqPGkuJC{vXh9iI^a-%+m-TBWLS`#@&^lUiLQWtZ zh)c=x0l`t>TlhKZp`3Gt=x!uHRT7m+F>?bGvzu3DQ7P95Y^TFK5_aI1%dRa3YPq8y zhL7LY0`FI4jcH~F-X;YQTH^YuJ+{tkD*3WO$4;(iSL}mpPgCkG3P2HfVOf@~Ldzee zH^*=Ok5|ja2MiAZh&a~gZK=02<|>kL|CF#)uA3F9^HtwSk?WDrtTjh{Jqz-?frDXb z4l6BEi#a8{afg)sEWZ#sn#|IZes56hoQ{{jFH&G2*NvTdvmMG22xjge^^n-ZGJ>|Q zcF4|yOMQIg;fiJkTH@(8N0fY2I4r^=%LZR<;o}vi&V-M|%{vS+Sx#@6inHOwtMM)Q zBs)-7MXsU^Ks?~T&BLro$K`qd^X2H?k{8y32y+QC>5Fk#%ZuT$JsynB_s&EOv20r0 z>2443aw<*YZN5~WFb?NLIllzWkgZGvE5lAGu7}9WV5O@G=WXadKMk!AS#A$+TBbY$ z$B?^RjLacO2!JE*&`DA(@($}Yt7GZ9pwTZxT*;GZ&kU>#<7F;naK;knkLR4}I~ApQ zH+7PVeh6{{98n@N@eWkno7sZ1$T3p-u7{v$U&ICN%E;G`N=*hF!_UaHx6b^H1iVyM z=UwQ(;^ttCTn~aj5P!&mE2fr~o&DTQvC;q4ebcM_T8*AC_%x_3!$lQSj;7Yk!pTRN zU>VwSJ-Bk|l|}vY?F>u-QF)*Solqw8yBB_$JCWSwLLs_}j)-FK?C})kMWPS*=#!I!*0CkY7P%Nbw(gX9nKiQ$c*ldz%;8pwb`p zP;77uB;%6!Kl!-8xf5H(Mur0C5aNSV{lH~U!-?9SPW6Igybo&b1*}1Aw~^~aBa=i1 zuRouTxl~gwOn_y%3Pq+z;mfMtujMZuUNGX?w{*77hKaAnQ=shw{0J@BUXcThmJ2I? zc1f0!C|=}cmP0K3@BI>Sd2Q;=KCwn8xkWfWhztVjKx+%^;*WEI*(6$i#Hf8d;w-o< zclM+5P+n%j+B^qMi4MYN6~qhCk^Y>Sg4<|mn%k?@q;UygyMyC^h22IK9-u7dHZ2mU zbJh>6N$eZ0co5P)y=DiBPNV$psZn7|hosEG1Vv7h_wtbUs(v(Ni=7XsHX-F?MQxBp zFw9^%Z@2_{GTyBwQ&9jCYfVMOScF)oImgcZAI&h0rRckP{XvLMo1@HZrO-;V%ZMpk z`%Sv61=qpv$ew>~Z{QE7hjL5CHeUD8Mh!_?$Iz;3OI>^zL&kaR_*rKmZhe)HzR!)E zV9^Ya)Aga!_nv=epXG}vi05HBJS}oJB0?yFIP>q{t z*JS&SFpSFT037T?msuA(NnSad1^I7F^`#Ty{fcYW<-V$#8!Y*{TS*BqkwZ=0zoXcB zauz4!Mem+`zLt#&7N}W;g6hlfmSF8yA9wMNv}C6kYx6X<*Qe?uCE)m`4;_8(vr*7i zpw>~%PP%`)$cAYZd<=kFbF5AxmuOqs`oul9?E;xC>X5BDNzm~nG~cDi;9cSX15V8$wO9E3VD{pe6r`rwV3Q({{O?h&U4`7- zo^lWw)T>*)Sx#+f+~kL5YFZNBZ)}>)%~hHzFD6$OzN7;*yI3nDiy4q<%(A%LjQo(v z^B(nkeT+);4#h!o)$!l*XzU}$XNAC)0O3)5%?-=9D*Qdp83jYlk0id$vcmxgZr_oJ zYR39XumU}$-XC4sMq2XEH*FsKd`-Iz1EAMq_3B(UZQi-`Pe6PD{x8bJs3S{nRozzf z8fQ#lnVHsB>Xpi5asr$GvSDU|{x-07V&Qc9`QnlwrvLUxZas864 ze;yzBqN~KzyF3yv)MM-o%+4SbagJYhtwAGRdd6&BymULL)U(4kjBDyUKH*C-=*CX1 zWBXff0|j=+WfEY`=+#0xheIX9nar|_@_2DvX=||()k%k|;n=4|M{6;|I;)%XhbuiV z>TJlA7XHnICr!^;klsfH&M6Q>DoJqCLR#buA2E-IG=aqAg2T;@!gb>e9ri*ih}_$$ z7YDCE9YMr~21^DW5bu1-9rpU)_vx=D7=%YI(amV1eqfyhwj0T53*dvR?d@Ww=7(S(9S5qpxU63au6)J$al|m-3`VtSv8M`ILH4 zA~#HLLDIV8#`B44gmF_9hJlgsIoAn5D_cDk7|ldd=bns>DSPpaW2~a}fRz)S(Pz%U zT+2Y%KB!V-axTq%-PZ_^;!KXrlujD`BsU@7cON5BKlW2auhdvRUk@#*y7a!bBKOTD zFGFv9&GUSwNA_5I0f5^`qDo@ z$>$rPPSV#4g0b(_2mZ(#-r{-BKL|HtlBkH=vlmVIEue4a*ldWV1--fO zS1J5MD7$mg-Bh~Z#4i&AH%WyTOH%r?2r+gyCdv+NKneSt`@G(5Twt76P^nnkUo-{o zR7ESkqWgElIijIf`mK~ucml=_f;iM=A5Hx$eZLZ1C_J&)=PwPy*xQNzMej0r6cP+v zxursW5(QPy+-uR-rz)|4>Mk_Z&bcpSt95q5J=4NBi|k3c$xv=UdHm4h=av?rzI;wl zOiZ_=VN^57uBe&(aZLK3FwbvK5#!2=xg76PJH%+9?smVpd5u6KF%QaFCI>OUmONuu zHQ3&U2)5;5>bHc=!kXv_Duzb>(2?ji;cqh%^YWKzc+M}dSV)MTXWH(%ptjZMGGbW4 zGFo##_;()iD^H}_3Q85hc`sGof+IgNBjs3WF(~Xsit>sOw;J z<MC=aycYqBk-;M-^jXcT?DYav0^o9>w+~~@-7(2rZ?WLaGpHsi_QeM(uwL&uN zvd%~3icn-J9n`w&^BWUZfB!kXu=_p5g1o{T{`%%6^F4j{LypyVnK$O~LRs01uT#ZW z7~MrHIz0}TRyRuWv2eeo;oCNtu+Zv`eXLTHwIA4Jftni|#jeosd_&GMdMnh9d&+Ci zpzhWqN6VBmG0i5rdWTi9IrGU+b^gJv)iGit(3?AnhVwo&n(t#!t_QlGo}Dr!L2@G% zO}WWFG^^|Cjo3%IaUtlGPpa&4J&~!C;zVdW%2IH&!w^wYr>1KYr6_`zpSuzIgFgQI z>d>UHH9BKtPvJoUD_KP2V-Eq8^&ZNsP1}FOAJ1@h2Z0UU$4muUQkaeUcq)@A-6cIp z?Q0lA1~KwrQcMTl@Q?K78XOKfDN{edmrfk;BVJ<9XSaF5MgpCJ3X5ZIZ7-N2bCVI= zl?%cQSy8NB1@4-W2mF`~G&dsb`d)=JW7}#3!nP$8{xH}02ktjS3TuP650zWkpR;W6 zBjEz8eOS5U%CE6|QbF<1ZstRGB5M`S??QCF+j$-INec(Sj4B>i3GJ;w_w%8EAv z)g6cu6E&7#6Xob9!w_EyvDXc@a5NKb#w>9cQS+huH+stkba3?$Z89y4{c;v4;zNOO z(?C@{%t$yBIN~m9sG36QmG}c_z+x4?vmS@{@_iT86koD?lhC}G@i_xROm`Gsa7NI= zZ+BAO1SYbvWIF<4fw3~Aq2rifny!2_j}u~meS<>$+7&bh>gb<3)adH#tu$9x+-L76 zw0y&hhtxU!YDO+iu2$n%LfM zz?bH)d*^l>upLDSBfRPEL+}Hj9w=f6OkO@#AXV1i$sE?J*Y>X`Y>JfA^!_)nTYyqOU;rFP}S(o;iRmvgP#=Q^^N31XFs)tvG=qv2=&5a}l z|7y{^c))hZwg^;pQA-?XEwFX#iiV)jWvp~oNj&Kt+tWRo> zOH-ia4L`LYC{fi^DD4J9XN=>mIDpe2^!H14KedW}b7q^h`=d4XN>fWYC&B?EL*0VM z@p<@iuwq3Qrnuk{tzHWvN1_;kN6nW1HE`XYP$0`Z|-5=H=o0{s>8QIRFcTS6!(#GZbsfYZB z*gpJ_0zPpA%x*3Wj~w-CM+J=SN<&=4+^}y z>&rZBCYT!$&o3t>GBUEflDPGVvcp3|lsIDZu`&~>O%gH#?O}AwW4JpXY^bs-WHap~SzU9|R#*-xVEKxWQmg5~}L&wDGb*0ZYJT(4!vON7SlSQ%8I{QDTCA9yF zVnMMOUqxTao26|&SbV|x0&wJNY9c2kivO-67+Oc!P6 zS;m2fOrlZ?i2(!Olt}DEbd=tzfkhl6@V%4{n7;pqko7Ayn9}a~D0;uJvG26dwfRqJR-8x8mg z!-j(ii>jG+ppDVjg^zC{7x9m!JozeXj4`d!?%sKD=0;MrIIDw^XIzUE`X2?#a9fHg ziPGABmF^R9ij;;uxv`vqNQSYjq?L;#e70eUk&DP1(DdG01BokKLD#t$_ORy&oCUHx zp|`$eEPqEPce$ILw&#iSDN1&9eXSCt(+N##IKuz*R?==z5pcPI5FfAIky|19hXvpj zWx&Jy$&D5q~my$5YfIgW9^MCQLzs3+z$&u>jRIn(OIbTFJ>Buap)t0?#@w4>}DPay|*yE1ve95+8fr z;rs?eshyryf=+XM)Iif+Q01Z=T)kfF72mGYLg_;zOf2bDEm5oEe0li!R*OoN@j5Bx zBtWGRm5@p^YO;!+zm{vJ2KC15w-Vx>Anbq#5OCTwpa@hRi;1aD zlkp^^3;iR0&@WfpDEr*V3{YUpqQ<+qX2$FFBO{eeTa9w#aOXm5(`m606lnN%^17in z&wjZ{{EJeC+sNa#)jVcjy>1Z}p5o7CiSjo5^^@PJ{0kt}ckkJa>~wBsBVJR^cT}<% zn3?qLzOT9^ySx_ez;3F%dOTzCq0o}gRJiNak~~CFAbhFZTnP-+ z)DV8UQleSUN}PEQr!UP3`L8+Y3v(5Qe(|U2lb(9oe*oKr)`+N9IAOPGtQ|!4-~R^Q zk7#G}C4YfW&Bo8Q-FPI8I>wliSGX8PgGiK-!+%T+&tw1lYz7J_C9uhka_mw{`qEG|)-IN|IR{{DYf=d(vDX45 zi00|57GazMFLT{Y#5I*E_5!f1@C?wYYTM$Pltoa7r6&5I4amS`-Bdm2NQuAYqZJX~ zO56=xiZG6Lom*Zfp90FsO;BQz(xq`bkki7koc8-g(q-=HTkH0{FBb7pi0j19V<9Pr zv<%AkYY9e~xM8cuFyT;>uVt3ARc=$FzN|cYFXg#_|08kwNf`Fk!xRUz#8R~2$ITh5 zAa6)^wdXAUt@CwMY4(6}HEx3%xhNX#_*%%a19y_lM8r_jW__t7wrwf4__Dni0nUH} ze!3(vw0f%q0y{wA0*jpF9ldSfOj-prJym~zUatNpQAQIl8f|o@EmlQeumlAl6-i;` z=?9Z5VP&5_1=kL>v|sL6#3UI7kEw~NOgCg)BdSn)3F@!*N0`!bTu3NE!YSvS?(OHn zJ?@N`Fi2!ntE@I8wvuq@?(s(T9lbgZn47OK5$^s<)XEH-Pm>f|q2GXtMa>Ec zhtkb%Lm1vip4LmzO=Xi3v2B`u`hs+qb8uv-DgAGf_W%qms%ED$$T9@%HBbwei6YV5N3?rrVcp+q;T!6szo}VI` z_!=&a?ZuJhoqr?tBklO??NrL^Z4qQ0b5mld$LcA-8s!tS5E?s~NPlHK4By~U@z+r7 zw1Gv<>*sm+$wBrr3D=GTX<14byBCRDfLe9-+qcD}d#fARP;( z8n>M!0D`h3d3F0C|T>*(r?`H$bcdk)L6E58Td3H6r=ye zZX#Hq?LjxzT8#>3#Mi%54Dh;nZ=IDgOZJ%9pGNuZy(pw9iig${kt`j+WU80JGXaAPT*;4spr#c^Jsrs z*PHDi$N<(DcZO?PvnE%X!;bu0M8pF22Sr9kF0var087eO@Asc?*b){7rgV!!PrRbP z7xP}qg8C8V?XaT0i1+>7Ov>8wHA&$+gtS6Ky{lV#w3H-elWlDF2`K8VV&j+8$ne>; z;Zmrs&k|{7kxRBfN_YeL2)*1}gs>q2A$n@E_Gk)=yJJ}Q_UKwFv%7lhE_`6%EU7KE zS`jS1=3?+xMZ2BYHbIEi^a^0Hd%wUO^JurSlNhTVVBR;{4^t`n`)NWL+)WA9{@WU2 zd$`{3W9a;_jGzy}0>z}XZ2NDX%){M$Ut?UPC_Io#)b`|$AG#r6$<~@$_n=vq%>p>T z!j-YNdBS~JwnY?U9rqGcV~UW?mrkEG_`Q|*MU>4~rRbiiMzLW$p2RPmv^CNE8=Ar- zo90 zkET7mg)jCg$+XV7juspEK18)N1YSExsOgYfDUgx@*t_#$kQ={`*Y)J5-WGO+D_rH{g! zxnPhoJ%CO{GKUU5D9PM#X${W+`cWIlu@Jm_@vv_0jzP8_!C(!-G_d!Bsyjp2w32{ohQzDrypJ>vdm(MgLSVyl=E~4&FJmXxok$b0I@9 zvUJ=|1Ssc5EF&X55$PP142LSNv^!X`3p7};Af2t0HtIT9bmIs=g2Av*iU36F!V-F7Uoa^og0IRZ|bP7F6~{buM|CZlCY+ zQpH3m{z=>Q+c%k2`<0}dqkqh7Oi)J>i~^a+^eRSyRR_(0qaC)p zsC>&Z*;g>lI8ce=hro|Mzw@NvS1NwiJ4s2Um?&iF^rG6*^+{I-kp{HQsD`Wy@E|`^ z+Xvg!Gs?MF3SrIJo@55L9SS2qqW5@Z8(z-aq;-vkR_YAIk^deTR@$tQtOCPO3U#o3 z2l3NWHu6lkJCz8{@*WxP_DyFZtBhW1fpr4nA5q&w`D?ZQpQ`WM&Ik%1my z{D@s$E1x*6siIs#g&{0Q32}NepkxV^(g>QA*8oaeGQ*9bI`h>>|FioT%8E@5~hB1F@JZ;0SFG16#P*Urs~J+SIJtVUeO-+cV$ zw#@`jXDQ*BiyEx)8DtbdTR=(LYt!|C-;g&5Iy$*$Wqa}y+-@@nT{7|Ug|CC5>V$x5 zDjxNG3SDf;N7OMyHol!isDi3k)aq(or|ZNs>!oymGLZJvFm9>(h7IpNO&-9mrDz=Y zz5S$GXe|-X6G_tWePLyp;0jH` zC5BZy9i>&;^WMZn7uldN&H~U3d?NWa*{`CeV}?2&aVUiDUG+3-jqdg9M|xAJD5jxT zY8;9u0>?7XsSI0~oiQ3F5gy$JBnDgUi)U0C?V%yn7TGz_T5^)7U~6^a6o*`^+)L6C zVwFMeHPv|luLi2glyMpWSV(b6_hC{DP?3^oMN@(!``HRhvJC;m4L(EOeKn716J2<@ z2&uRpRZAhK7J!bKEhvoJDqHb48VRY~>a3J!hX(WfrjsR%A|9PT(nQ7}LprKv3)XBk z?HVo?TkwAm#ix8$rEHRj@wiHs9)95zd5>7?PknB~eAz337+Z~D8p`q6zUsfAs z8je|3UYiW8$m23%lME;=D|jKwckuL(Ri^kR2(`&sox&h*ONv=73bTLJW67A^6>azzGS5;w=pr#8F_)|KPt=p!?Y(TeG51{;shlYb~q>it_q`Yu6Gg zf-J+r7j|eIPZny7Ua67*OkrReiQ1f^0kf*QN2o6isKkCBg+0Y<23{AxDU|$#uUo`S=g=FkKXk@lWfHmGEo{ zDPsDU0G~S90aA+ih{eE$=&!$iK(uPG2%kV{X0$;E{UD5C48ugoM1`fwe(e7YTFg?= z6~P?|fTaqH-=(rr_i)d!vl`!WBXEbLs+;If0sqhVI>KVTcd9 zEQPu>t9!8=@`6;;EquRZ_o}bUM|6!+j_UaALT5H1R z7PP0_>7L;@+dia=`Q z5Po?`*5D(8;9vf^dS$+<0^Dk}-qZ|w@oq|oXvV(E7q-ZX3BksJH)2Jo7UMPspejPO zne-dx^-)YDT5>r8*!TOC)xq)lj&6&(^}N=2Cu|9CHFWi2tXR(azOR*jkiD zeR9*7s&N(KEIXG!)QMx!w)j&DHIG)ZyWQlz63^a9+Tr=eSELMy6+*PWle9Xu;uVow z&dhUBR>Z^m)L_42fz*AOr*Hp60~31Vh;o=Q&_K?a7UO){YEy!vtNh0 zS5+e@Z+c=ykendID<9bcGVC0>brf&qHkW;LpR{Gx_?R^J3{F$rv=s|fqjEfvptw=<&c6KTWLZwyt{n{C6A`u-~7y!5O zxF>YVd?I>yhuV=Y&Y(6DUWJFj%dzG7IPdwfbYBBQpbjT4GfEFpYKhSHE$-)k!B&P< z&5Q*MPntW|W(MC}={!>@X2U?x{iL(Q+6b zHQSS|57M?QiN-KSLTrV~A?!6eI;6)~F#ZYK06QYcY=gX{kX@Kj?H(sp0H;Y4AGnVl zwdmI{bk=&<`H=gjfa%lzQ2V`BJFc^O#yv=LH(|sKWOB1`12mpBZL|d`%wkicg*RJ- zOjdn5zMNIfl%(}UDn&J7%xtP)xNRe?%hUecWwLLK9%rd6DFjA@dhoo>DSyK%s_WwR z3b!Ta%(ZeK+kiqQRK14ye2 z8QI0|#@D`^N`k$6BfZrd^sL(~1wd)2q7V>ThO%$4HzjxDdU}e1u0=S=i1vmdza@Gj zjBd1E=D1AD>lVIr(gAnDb8o!n4e8$HB#p$C^)6abxC;p2sVS&_}>77zHQP6YI z71_$d?i}mZ9@7Z>-}PGDn?wf03sf!tD4L!nyH24-uG@$-yVf~sA>e zk+GQ2+Q#_%Qy02J6Un5__CSd++=5p^ItnZf5Oh6AE$^1jW-c2HV85YMW5&MW>^Cn@ z%rO6#Gbh`Z4UUb7Y1lTMTeN?|O#!6T7$$)vJCRXSt>7?vGQ8_2jmW?ZU4Ua&B2~?p@D_5h0-ulThTnO6g>TmUZ9+h8U#Bk#inIu9%cG+;cj%MX3 z{(=CycxGF$v+o=MK&pe}1kx$73AV5D8U)nae1fanXgNDeU0jAs5Fyb8gko9L zzui&nE6c_x6B!&Qf10N>BNuhMXRu{0R;gjetod2Y<~`UE+R)^QyL&?;JB$Qakk6T#JF5yRR$abw4ga8ZoIhSbo%{BsR~( zqCVEXckFvBpQ|b>XrJ&X&kviQQuoSEKFZb9%6WGF{!TKmcRBY(ohX4VzkK9XqRQ+H zFfEczrZ1{SVO8$T*Mh%CaT5{BWdFFl#typwVMiAv&PV)$|N4eR`YFGCu9Fo~mE6;< zXTjE`1u>rca$$dbiRriGZO2Z#5zj`5<~>Ql>7phhx z=VGR->$D_@h(OOo5&#qybY+RQ^VTy&#iff7tVoUPb=eQJ!y_JaPN_DqzzmkZ3_LqL zFpj^Yh6$(X^rt?zc~Bd5cUxo_?fOGXeo&T=%+$}jESIsuwX8=#6l-_y2LWI;3R~Ug zYVqFrc5G$?shD|->BlCdJG~>8`%>khXS@nM{XWiN3x|=qpkD81Ck9CO*X$t1J|?iQ z_qg&4AQ7JR%$>WiV)>zbtk_1xi4wL^@&P6)E&|scqk5*wq+AaX9{OUk%Tb1bNH>%{ya3Hvc@(Qa zW|**?*wX3s2Kw6^-7VPiuhj%L*WYYqj6jJadpeZu`;oZIdqAu!_LGH9V(o9BnY6*o z*;zUGWmQ64*cKK{{=uMO2LYD+VS12bd-P!)my(vziQVJWqBANu&2?NEGKc`&-y|HW z4LwObESr$o5r%|$Y#sD4RDP^|gA4#`V851fJ#NMU{u*@9((Px#*}<0v+qJQ&m5o4x zs13URUU=06I6lFEg-y?wyG2@#Dk`Y_BXRGHMd@9)Yz9>=dG#ME2Xi%FT(3}E0CEhr zw`-7B?uJO8qkBM#;rg@y0sw-!{bESR(0$)%K%|lTTp#*+vZ5S`f&{1TxzWsm@v-G1 z6JjYKmh3_s+2c+~XhAO0H%E8uxjaWlDXjSyeul0Ap)G|*n;x!2#Hb;YeWyK+V1A)-F$-Wri>5;a0fw(ok~$4juh9U9l_>e<^QvRuVjpXNx!k`$EO&GW-5xwfPeM}Oju)O!nS{i z;j3I8M1wIcWa6RWJC`~5_c$~oa2{cenM89%rsi@}x%z_wN>%ris?;ijdMmhDV za^ipaM*pdE6$$ef05KN75WFA{1y~##0Ol(MGykGcwQVQ5IyQ(AVxz9HxDvD1^VUYR zmTKFuzGR*b`R_1^F3F$Y!_O^F3^r+sIzkdgH>+N-e+2I7i01QHsvA!hIy`)^LEGn9gwy44;ha+>``>&h z5#n+~Ax@r28UP)92wb4e%!#YpmzwUV8EERCxto99IS1%>8fO7fKt^Ih?CX4j{9JD5 zb6X2}JXLcp>>R9dXv|XY+d6F~-+Ow!C8_L0>4%o&6#bXG=#b_|UDecj=-k{EWc@hX zgh6wxkfE0d-JISYds@Jw+Q#t9p2bQ{(-1!Uiu zXQVrl*dEzl%j~u-V?g15CMMsO45j=n6#p=fZu{~7fomZ)gAObBFI-D(e0p?-8z!Zd zT9e|!7qym^qGCdFa%Gw5r#RYmSc#AJ6G570vd_%S&v0-1L|uVE4Mj)RJ4f~aBYjZj zx|`nAxBy{IG}g^K=eWya8i4j*h=WeCM)&z>;vzfvJg5@=W{?ay2kUwtCLa>%y~BNp zQ6lm?1szkE9So)faK-|i!J6ZNB9a;LltYxEP)^rpHFoiCd0=asy9qeH{!BN?V>jVb zOmlw16%~{MUPfP_5(oYBxuY+AsV%}ENoxPRH&McTNK5xQY0;2fc1on52Z;@XM*sfv zzay92NI(f+A@+JFdMDdhYFa3*c4eXw+64eaFkd=1==!4c&wE2=n)r7>+BIlS0W|jF zMAI&vUvW=+3NJh46aw_}WI3Qq7>oNf59KCsnuZ;o(f88wDVbUPhWU~knqpGvyGQj6!nfa+ z-SwBU7t{V(U{tYbMIuYhKU8gytaCFaY`PbBXi0KBcOs^@U4*bFR?n}pY(6_PD_)+W zJ{3X8TB&ToB*s^%QAkY<^c?5lr@L368M2SLybGkt2SdO%~Mnh!q`Q4nD5#=y=cX{(e0{Na@S|jX_32_@E*f#a$dRAQzjYA(N7y~CeghmKsqs^mXpTySY zTFAEa(rZL|G-Q22aAwd{@Aqf@Bl(q;)>7INk+}adhd*h{B{7-&ZoXDBt)%uISrZCH zRF+Y^&#I#xOM)4 zysCICA>+~da7fgbr!T;yWE=eiPff2=osa#1zxNB5sR_=v+yib~uY9z^rvm0j6<+_P z8W{T@ejMl7{!P~wGo~v;rylLMPOjHOvTsg&O1G>FN9_FB_OUs za{l|lZNMd?PP!%#eF`461$M66QRhs{J3eJ~8G@g2O|^maP4WRw{`fLDMMAlK0X##9 zh-h%;4lxXLzXbPOEY`$`<~J}x3((JDq?SP>N@gnl;GC@IAYb)j;4n-SWb004jLgeA zKc`i=pq1}Woe*PrBbbmU-?dbTdW{DVlU^Bxjgmw_`V*{=aqaxkm2_9IcWx;MbEqY+ z3KWb5KL=n_S?!m#4E*seLE=8z%Ru%}G{zgQY!&eLu~BUuMxf}l5_BD=1eltb;>{Yk zW=`&M2baD}#iXXjBJ$L9esK@RwLLiGG&BgEn*P>`gk1*fy~I|6&5Dya^OX_qQU~Af z2kH8ETJ@*hV(i?B{F{^lH2JEy=~rh|0qIg8@S)6^MHVRcMqK+?Insn(+0J9Jkd}Mc zm0EAG-vB0tRl@!sW$hU^X$&vT#hb7MTyj9q#%!9G*?|hnLr|m$lzq!FCj>fy}6+u`L`SyEC5tjS|9E>4jEViVmnOS zR_Dt@w~TDuP(f|_K55%Yefj!wrEH8bD8?;z|GxKFbx`2>et8Yqv5uH%*Z?biTv$;Q z&liVjK^<8PShxqFvx6BdS^4pw6?yAS{}HG^a`KnhY_s$G-ZYKcDk>JRF*Yu)uhW)E zF61sAV}&hvR~k*amku*oIvr!SchjND+s_U|2J zygi9?IZ>v65Su+zE^+U;wi9~ManSVew)emf?_FvZ!)bG}!G7MQxnl|dUyd_0^lo`p z1S47MYqiJuj!(q)t~7-q8f6GHa`iK%$O$}zd{R=@fBc@$*x7y%B&{9W-kpT02&=|F z3%KlX1QE3oJcVC}l<_3#?#D?}=}?8`h`wvRduq zYi-pzSbJLAdEeCvVE@|q-xsadT5;^{>Ex8v2D{o{J=#SuJV%lKdCmOch^kq|9jI*D zj<4e>*&zr#52T5SN%bmXYxiV@I7vzBGI!%C|Ja*cA~dh9kedwLF>Y$FW`PgFjEse;DQ2)%E$Hi8}ytOsAW#N1Q`4cI;vu4u_|!8q(Qn3JkC83k&1h zPxK@UL-qA&Lz0pU6etd^&CSazjELbJkbZmQ6^@wH$tfrfQx5ttLzHvk_@u}Dx~keC zSf961u9m<&0UZw?Nb;+1nql8m?=fd2S#g5>JqvD?>`>H)tNVK6U;QAzHfn-knPFK< zfGwn9`?PK+*}?KrAzL?e4{x6H;l}VCbp*tD;a5W(@&IF1M}c7@x48xH;F_(=z(OGJNagYB^t+>;6#v%-_>z2)31Q3?Yh4euCBY%U@n6Bh z2(Fs*SGECuT^J}M2{Q90gt%=LsV9P^OS4P}7vVUxFE82b6ZAk5wSI)%{-Gf{|g_OIfmr(qHM8)FYy6QcPoX&Uir%OH{wK&QW+QI89BL!BF4H*eAef+&1 z=7=eJOgC8kOupNXNovuKJN2bS~3E&+H#I^i{Of(-FaaKVRT zF!U%fdLY8^QDi2fZ4cb9@m<{7X=3ba!4Ot_Gw}1in=FP!C z_XNf|8N6qO>>v<(-3kissFcfD8nK`L@zF|Q!3RC;5z`}S#dpuKcW{&wpr4uB)oMqR zsG{7DLg0q&{j_288gq;G*RlUc4dY|@_bGz*mlBv`p231R3)mrwiph6|KOZ_v?#1aa zegX0I{Hx~w^%k}veLbAPJ2t^oAr!y+DrW3o@JLr2`Ja}_Mf2R2y!Z#mH~HpV?ESN1t~&jB$o$7>80Ts$T+5UEmj6@i=jgDAN*) zb-?|W_`D3;Dhl}`yO6Oxs2AT73!-l7-C~*ERv)MPYbBMH&$oEiBEPOOYTKYXObK_n zkexDoXZzUjx!!=G?Oy*dhOw+<>mPz9;c<3ZL7tN?Uh2>GdaSuUJUZGr*AY{3(rVWB z)7gA$?T+3?LpxM1c(W9C^*Wm1;~y_U%)Ui%euGM7oK|PeNQ;p=BtK`ZsPEY+@G8~k5u>c@=^M4Yj&rbb(w0SSCS zTd;04pU{_E+2X^NEZl^K37RBa_#&TYk8&0U0aI*{j%1ze&n!o+=jvl;rAhE(UcLF6;tE< zBWQmd+&|A&KD>vn+EHOUMu{0Z4iVtrO7<6CC1P$K!2||`9;E!guI{=Sq}1vVf9V|m z{SbL7CIL{?;+M44v#35gd3YA)RTV|`$;F@!BQrUT?kuav`v$%2`k4-v-~9fcwC-Qr z5_Q<`xb;}wNgF^dU^B_VBId@VVG%ImtpgKAE%mx}L_^#`qMxt<%R}S<7B;+(ndV12 zq=U@ZQLaj~I2BKWn-uXST2bmSDPPKc^(r|YFv^myog2+nw9 z=z&as^g+z(>Bgjq5UM1|0+ZYUb##nb5$f=$gt0gSXKF)Sn$m!{4*dLGu7u8i+UAu6 zGxZ{1HPfAuQcgb0mu!uIZO0}3gN6i%n|xJQe+U|ERewb3s5UmOa&a6_5*s=I1k zF&zu=&xcmlbsh@aDX)5kF`-h7%_1qG9?05#IJVW96X%d`O-e18?!j^S0?!^nC;lN1 zjn3*@#gY0WD6SuSyH_r=Q)|iBc6$gQ3j?BrFU1<1mz|4tuDL`QP5L9fR!O3%z3Vnd zToiU|UuLJGnsRuC_F@(~4SN%Oy;Lo(njD;g?C;egF$?Pe&O#)Sp5xOgrc@hoh*_ci zC^PXKep@-{t=~>3qC?61sVPE-oAL7HN0h>Q>U<@vvrTPJHaN_Lu1v=xLyRtdBhPO! zO8H&oC+}_+&A5G=*|=ky6PyD+VCN-V)jB1)^lGDDa+DK#q$)bxn-K#UjH5yoe9G-_ zM(8v!XX&oX-8`GG^y?beh^*>O0tz3_x$8C&ig9}9Kw>x*@Ztx;)Uv5Fc_E--+DWSv-SNmsE9Di??IPBHoG zgSCeEI@w$U9;R{%65F%YM2k@m4%W4}O{?~;I>drf`Spn@nx6;qchy1wutNu4mvO{V zLy1wsNsRsAdC$WMW5{X{KKEVZa5gJ$;}1LBrzwIgJmr@K!s;OCMmn%a_`fdeMY z2GOe5>>^F{vfIYTklhk8_gTZ20!_PDYR-zjwEw{Ez7Y zhFq`v&e86L4bFu1n|5m9#IzfT&O{c%9j$@95jRV|`DYxGwM+=eru+FXLI%&Ie@}zI zBXmeHUGxGW0B1tbrFNs05jnpaY!VLD`jCp5rSn(X-}CIb82>p`*&s82hgMujG&C8$ zI83=Eh=P;P<;*XU`)b$z-bmh;$rLZ*8;*pC7XcsYBb=*c=`SWemvPl$esATeY8mOt z;rqmuiLDis$qtg%rPz(a`5$2z728fG+lVIk3VWwMRhUe|S7?iaeQZLCALq9Ie^La1 zOTYWDFT8C+R(=RMI|a=)pu^iKFhuC@mfnH?Y_1st__FJM==>MaCeA+(t3n9WT5XOF zO|@(EmsP26((C_tpZ~Swq-a3W==?_62ttj6&fLt>YLWkqRsFaT{0!*&XEwRP*k9kW zmfSWC{<-U)Xw)KZqd z?Pt@&{pE&VvzPlIa{%-x_XI?7t57#~l{!%VJ3eYRhr!Np%%3p%48u>wM$;rpavE%= zddv7G`F~>P9;B9YL;xo+O|_MOhrfI*4XW+loEhfHWyg8XHs0>PuJzx?lr;iqaIt>* zx;UAN&VIlh<_?t&0;wy*|NDghh=y(>Vytl6#(j@MO|2e9;m@Cb!z>6womrCN9QC5` zzn;|>FSN^Hz%5yz?(<3)zOnj{)q&a7v@3}k>;o)PNB z_8K?#NCMsAvVS3Lt37$P9qp;$TC5PwPrT$chBHX>w_{UC%`l z2Kndo!|^NfV#{SI$*VR1<|TI9PjSyHw&HXS zSUUMZ_dU84!EiB8A~n?MRz{Fu%p4}SC~x3$l<6DDuul8&R+o};;e$bC)x7X2U1^gq z%2tfs_mOmc$wDtGYh;%kV$j4J%Mo!E|M73&FxoER<~!E^$%gS$0>_It`|m0SCC5pDH6nMiQ6ZcqigO16%kJ~()A#Yvu;%qU4B;lcBhRW9MNqa67qRWUjrx8 zKYB#}x=~i2RC7jhKT%C9lqz_ZrsF$R4>EHTfdeq;b$bO)a+``@c&iaM-;U;W&tUM# zmOnElV>OIH)n-O~4fMgQ@GpEX>V+mS8vR21RTu4w2&TFm>6GKhhLzh17JOZ|V#uOo zbRm$2eLnKsoyoQOt6ITorYHK-qU~H?PfdaGmp-Ykw>!|6dSAq@9?W;Dia83>zk+PO zHYcx@8|Zb09kn5FC)wElQ5-)Fbf8Kmgu5c(<4ef(y14TelN3Y;~{;CuIfGHC(OXs1p67>>$4II*T>dSrTkdrzUBrgFhe` zG>g=-KI)Dj<*dVYNulWL1vIqQ#u{8(V>(C@O6K|PY$|`2x;p@su&ppI<2_05@{Oqc zSxX_YoMIY`aRiXDmbGZxK}u?#VE`Dj9V}6*<7*F#M~{5`dG%WRcF;=N*SAddo#S#p zkGgJtTpC3mJ0<+c2iXBTWls_5Rxa1K&ozVuW$w2(oh>bUd+j(V{14FRkVxtN@h!ex zzOK)J$)`19lugf%L?4~2aOl04&399jesXDaOi6pG$)1SMH)q?~!YZ0X`xz69RM{kD zpm}x^`FAmghZ6=~=-&5C7Y|+YKA@DXOa4CAk4w?g_gMEVQ45#+*S*qayG!trHRawa z4D5)!$Nl4S3|&jc+OWgcAkpQz_H-?c6HauOj}fO9&oYuin(GFJ{Q*?VeVhydDzQHA zHn<{_m;6P-MomQsWQ39{HIZuipb1AXQIHXRVAzZT9Lp&=Sh6;adVRMSI#`u7Da@CL z=dzx2yS~6q5aS~SmuV^I5QqB=CfJublgY0!ATPrtTRI6F!KxqfZk>sT>rt9QT#ixr z(Z4{wBS~uLkpKqA$e2pkd#W?gwgBJDP=$$l-BDc5H5UQRx?zHYve&;___t~X+Ofz( z^E4~@uD;R~Rmmg}T6{ni6-Oew8s-YyDwg|v*K0ScAH5jdltgCfJO>z7+KH|xSsGd9#^V1vnwu@tqm2!jbBQ za{M=OOun?ew?9Jz%w&xWBB8uFyid+qq&Z<sf_Y@Q_!1ebzQH$ld(F+;E%s~A`AMWlELfI zBfkoQ{*3LDSZ~>!gS#Vs-6!CkNG`vRA=gU?myFgC7JfTG#nfARzmL?kr%MTBt%$Q& z0kj-dnAYnn5U~;ph+>()T1S6D%3E=jKKCd@(tgo?136zqu=HQ8G>VOjyRg9!IajYP z8XE%wXmRdmJL5#=>GQmE#Y5?vD^V9rGS+2`%*1;e

ALBziTo_V&P_l)WgB8ut+b}#)H!oRtd$&=a4i4$-lUv* z?S2UhN*ZSk8nkp46)Nr)9Za>R-GdlQ_buUr8G`-rX~||7trN`TUcY5z6Go`!xtDrz z5WxF4-+AEO7o|utU(na%U#kkiT7ze~AAxEv13OwOSU0Ds56L^R81wNOM5afT^K|nq zcfnWyD&D(riu-y`^5b^m0KDbVVNGx7BDlFLitiAmq48MEUs`(AOy-T~?lA4??1^i1=_>7M_us6H5e@4Dwv|-2 zo1oAgGvWe;<7wex5Uq#v_HI0WOY!Y2I-{?uZ$|gyFpL4>tqOEtJQZ*`D~AN7=FeK= zk`kK0{P2TeY375c3~-5RapxV(&9!T?LH%d73(sZ?dTPI-JkT^#84phsPY1gPkkWJ+ zUDM$U9H5^VK@*Wi@-IX`r7F1Ooh;$Q28BK!IUQupD)l4?=Zclx9*LCTi-8dxj8A5k%lsWB=1$>)asZ9OriqU3tD#D zp)HV^J2e)>({DU7Ay?^iyIaQh?OVjXo-J|L(O?U;n!t{t7Q=URDv+Lf#4VR`=(axD z14w`uD^aLXu~k@B;Yb)yoN8NujxXv@y#8R#*zXOyV#-ej2A=9C;c4sfcp9p+g08JS z_K-l}gWkYJGKHBD^!e7i^fNQw7K?bo`E$tFnKw@BX%h1BV+wwx57)x*{!vNbR~0e< zM{Jt^hZg?Yl8f7bY|AV>G!7O%SDmE=ug6HugNz`2^p|7%U;J+M>+m}fep3;N5Z2&A zHu4+#?~3&JYj1LBiA1G^Guv>uzZ{~WFf`wsxM6jM{o+L0(O!s}*wDs>#LJZRju*l; z;no9|E@EOHpUUIhzoFPQBPB()a)FKA8qr!BtiuU>N7ZBz5MoB)aXYvHdNtuH0=y!K=B?Nv^&d)%+o`F18xnb2<`C9ep(@v8Y(P z1$xn1Po5vZl1{7AmsrNSHyM;ua36^3(IJYBo(NHu_Zm^zv%b&h?Y8I#lGZJl}dPWaPt^>h}&fXHwygXGIZC z8XNdg7F-@-`zTr-P5qarS;Pt>aXGrwYi@EaygI%WoJ44Ff&yafXsrMdL?dAy{70Dy zIARB<;LO8cHiK4gjeGd_mygD2NY!qn%jgvSrRB>^1m`jRf>6yQzb6p;&fhfbT=zu& zB>5TzeMg$>qMm=dh}z{^d=mAF$w5NZvj>2XYjnjX>4DJ_H*)v!HvyW{&cl_vTd3 znSG1j6xKBQJAs~%_@oDAZJGT&I3JRy`}+60WyVLATQM3}HB|S{I>tKKXGrq(5-D3# znN@NUWUFZ*4b>KYuy^+U23%)Yp_TB~TWd{3?*bGxmCm1_teBO-`LIYoB&_mh{NJ%D5D~^E;ffc%`tD8IafTNJi$EsKY(;b4tHYqOR zXv!Ae7ZZGf%$V6m!WC$}ufgai>Q#BBjURkqc=-B%H z!gtTPt?{(x?bzJS*tTA@(ue+vL48=H)wvCot(&Z`ONpTsER~)3NT~EK{_CE2dWO;Q z$foyE#V3LgF%%5tXRom&6Qv^d)kH`zG-5=I^j<$kFxJyT7c=FMZOE)8U$B9v zy%^J&YrQTeL@$IDJtOh+!@z^SDW$|)O0{~F9(tquL%4Et;(Ow_6}pn1Lqr)Sc8Sqi z#13{Ef@jSwVXruJGprle1lPJ{26)PeC)c4`reD#(o9^89Jn27uH%n#Sa$v8~J9Hw+FeobUo4xfj_FU~(-|Age7qikF$zE7AJf z3m^%Z?#7^2TxJk6sUxoF_2EUw^zKuZkHZti;eZ`bwN{GOJ$E_K<2TEOe!}f5&Q- zy`P+R?FlBWf$N`lzuG+1xTbN{>1g4q>3sWsPJx7-*Rg1dcU8$fZzfndK;4RY>~gOOd34KM``GJPR#FkOp!UQK2ZYD$jd zgn4?yv%H~wqx0*=D`&?Lf=5=JPrZ$}QAe5;eig|WkW12E7F#8d>IpMKEu(do*@*t` zIi=$Z#SR5*$feHWAPlu1Q%=r)!AW7-i|{3O!80s7N~H zncGB{`+GT}`=_av=MQ@BSxTD}UC#Pk6cOy$7Yp7U$CWrKMGsgH2hp}4^wpBYr#PpGh%zDWgzy79vQHpQOApW zKyecbT(c){^csIw8@2l;`h`#cn5s@cZNa|Qlhj_yFOV>eqW6eBpbQr}a!tRB`O3|{ zaiXwvpll9v6iYS>=BXn&Y(GUn3s&S%D^enES?Za@j!=53yekSvH-wtsh_RFpHyAjD|PP2=J#b^;e{SF zfjo`Q=D;8~qaC%+&-ssOrsug_e{(YQa<5)*gQSF2gxM|IVa|?6kR5!Nt$J?8flB-v zi%F><$vm5wk1JrBmyypFn7Pm8demQ_e`U6d zMY(PH!ON0d5D9L;ywDN_;+X0o!0yDm+o~;%b|E%r(ZsiVZTMSw2Sjuy^f#1G_;!!% zzQO3~nUdbJI4-HU!=CRJ@#x_=Yo13%CaPb_&28DZnyL)$HvoJe4iV4%dOuT!oMt^9 zyR{c$zXbl^5|VOLZk^x3$yuj2_G(KX9l7@#p%@_=WXJPcDPr^ZfpNj8Q_#UzIp6Ad za~P71{5X)r+q0|jqugR?%t(rx&`_w^V@xb02r|Z61okSa4wy&ZF2IHQsfx`Q{X3=BkFac1IhV}S|T0Ide-d3c?w4It0`q| zqt&_E^OB0KbUO5CR!PM$1_ZYy1Cj%Gr^L7r@KV|_`vHRA+z+q5G7pLhC&^n6gnhwJ zwFTw1kuPif%D6xt{JB6C!JlT-ml8)8m2N+QVbULV@0IEz_42OxJxd?UEjXF#wu3bd z=62!d9t$~D4>RNR+EpQAGzq|zrk#3M+_^*9@CE%MRmvZyi<}Q4I9daw)1M||Wg zaGZZbbk0sZ+_^OOr;&vCM}sTteB~HHzY;;&jX~cF0rP@mrq}1REkqq8Ugqlolwnnw!QM1shBCU z40Hh_L!JbiOA2!%R!}nOnJCZM!`=i7?m7a;m^7RJeXP7l3=ySSS~n5SYRr8whL*EN z&<>NtC`IsS0Sb6^4AWecB5{7@qj%`J)PX(zmPH*bcBw$bk-N1R*{^777R!;PzWH{^ zZF1`zfx$$BA3sKMce~~58E>lyggnCm4LUfPnMMq?nJt>5bY}&_ctNf_}5NBb;u%w1fHUK zU6cLipl+E*vXzS7A*3qvbC7(O<1DUVj3HWsGah5`FH~>1;?8G=5rQAJB@{I7_TT>j zM2p$%k74pLMm+KJ7Q4w00Rn2ySd4HoX}OTeN64T8RvLQRA})MCcZOa(6TfsM{P7tz zXd=W?6f%e0GIXnzcVb65=1l`!-x;nW9XpSAU3;qTHnyZcELLF;sE>I~ehPU)HhPHQ zUcdF_$qrBgAbf_jT+sr%Lyi&@)&7cyovqAcEEX?Gx^9|dH9?Ob?(x;XjB&PT=sePq zBuI^iJt&-;87+DP@rNN^x?vu+gEP_{4n%rTd}zMHCb50NUr%$Xco^ul$;_~)v?ghyjBImAJgT8VCd$j{pVxiC;9 zxYcQWS3jvtI5f+Cg?dgF!fOOMk8;L-nq?E}MK~~QQ%}_=J*n3G4orWm;Si>UFJ;o|OeL`!WQS9a>q`=0*q0I+=~Sy=8$7-}lC+$cYA)>s z5MmwBlLB;+cit@EMIYqQalT*1v-kVm!gZ^C7y|K!p)~k8W zi9b)CBn@lS+uamEeH~{!4~A3PDQ-obE-o&8H~h&+{u0_0x!84e^OwS5YKP>zt;1L* z**E_jE8NDI{;#^_z8VpEU(R&4*lQ4ZSh>|;a{=g{&ots7ScSL#>L|P*1y#gG`R#f& zuZ!0Lg%R_f>7-S<*#7{*3nIL&$@w7Y2tao#c0*TVOLvM0#8FH4Kv*gH%&M3X^06(^9oi80 zp|n0}n>pS8kFa+PkF0Cgb~|>`v2C+s+Z}am+qSKW(=j_{$F|wAZQI$^&sxv7-o1|f z9s75Z8da4!<{0xH=XKtq*|PQtUZ_=;j*NL2AFaT1x(Vk_z1>mM@@~??{q^xT{C}kE2N`yr;yBZgs|~O8Iw{& z%2?5Hj)=h_c$IBu<>Z(!DE+9Odr)jy$N(fqTtCHYrp%=jCKOtgc*+2cT7T?MDrsfU zCHSE~S7(HO*v?SS$k3f3wmDq zJ?c&N>!6!^J#^PIkc0z7?L*nvB3%;WS3Qj7?>}LDlF1?E?G!rel0+CRMOql*Y4#BN zNU==_BNs!`)u~$#W+u5y13(^Y4 z^ge0PjlyZb9n%Bnfn|ArO@y&X$pW!qr10VU1YB3}x^o;#Y9XiF0L&s14Eh7J$TuqpHc*xwq+;{#h4$05N4XSk*J zfWc;j3j|*Wu%O9b?&QKuMC)qbmz6VR8bY8b))Qs$QUCb_Rdv z7F(D9$k!0GZxH25aQ+K;kY`#iU*8yCcd>ujh3o4+^5FOsL8;JR_%Ig8{d_Rb?|zr~ zn%hi+Bz-mSfVRTHHcTW5d;0t~)SS8PLsY-#m4s ze^meTf1sZFDN7Np$I0~KUy=*^C=`rH9dmGuO(FD$lq;$1DnaQ5U}pZsB?Y@6zD3`; z)kO>(aXYUM#yF`-cKF+Y$eA`B;bu}fhwVT*bZL@rxCxkyO4!cr?wPiJpw^c9S%bpIs@tYzG@uxcmp1(bkpNrxm=^{`j{g?-UFYR8%NG`}-ruOppL0IZ4;0&D#3P!#*PiX>yrLZ4QON4@!fk#Ib%p8d+jnhw<(mOz!^d~sYPhfL z;wM$Y{6_WcyF@7hlm^~Z+)R6_o5VA zGnNq~9*U)SBz!-^ibmF)&5!FHB(KHptiU^Q>Ay<1NJAP(E$uVnEWp1e8psgrm5OpC zVoyZ1BSHCRLX)9_AWTY^tSa_sPqrMU#@jmkt7vk+bx5BSWJuygCL6D_M zl8ZktQAHa!D^d+NM&;2EG7I1Xl=A^~6~7^gR`W64o>OtM5<*B+c7hE@gATiEGD)_@ zL+Y6AH0cViVx4W9kw+xo$v;KEAU?uwI&JUw+fYA6m<*85&-fU9wZxG@ew7w)9nh*i zqSX}W-@T^uyEXbmy=%2*AAI;O@Mg&Si$cW}c2iHR7A7=43F8*@00TR{+I|hShbvE9 zjPuy&yDzfixR~|$vDW8H2sC-&c|w_PqNcoNWq=Z-9Q6StD#>Rv)u%OD!PiJ*g3;BC zT$pWgBR@z~1V-#~LTna@JsftUCkcEMiaSh3|JQs$}}#sp?GUt zaM<@|rKou%?1XGx2jNvivE?Uixkwfc@wjk~GeeqJK=i3tf5J;;!XMUezL(>xS2)@) z?<6Vvz?+q)I1x)C#)9EX#LsMowWL189wRK8%Z~|+qaI!%SF#1F>Ws9UG9%_xlq@Gi zr_(j%RHz&-1&|K)Mx+P|Fciyu$zB9~0$L@o5G{cei&^TeI6xs*w+kkseOItSZ(xk+ ztpfbf{LgtK(IONCSvRAlaeAa5^~LZF^gdtOZcL%j<_>Dsq>#LQDb<<5DG^K$iMH88 z^3Gyi^!)SXTF%}^@}}+Glj0(8DodG%l3Lcf9i@G?y3Ru*gm^f=LMg2RgymBUAaQdVspbnZTDf%~~Bbyn$^}!S_n&2zkL^@-A_wNr7+ zxZPJSW~PZ@vls1^t6MP|YL*w-WOj8d2j9y}+b~7=skChBK5YYvn(f2;yIVC4E?5~2 z|7~X(+*_g8QB|e(6O7y2T2Sg2$_Bz~)l1>tEa4k-e`tlDZ-OV{qnDuoT9i8D4LuagF9H$&kY{8d0meY3YbKkl zrFL?7!jL)Hq1%4p&bQQ2-7?QNb#&0d@U^&b3=|ew zsCEhZJ0X8*6*5w$T}Rg0iCQe_I;3Qcdmh?l_vrOTXHXDi2Q>ccDkL_hSsRdKSq{d> zAS?>URlbZ|1GjI{`LZ4h5nSTT*TrdF^qgcAr57~p=>CZF-{ZU;8R3me#_pn>hZ$M> z`iIf*-sd5R>LPF2u$>z0w<2t0nN<~j_RYE1>gP79SknYk@_Qjg7ch>>xxLtIH|YY; za*98Ap7PF_LT&H}e+tiMg5E^RR-A38P7OHHA1{R%*(j(ge-UL#w(WLkXf%*4+)#gy zpNroTX6qE!%e>QsIBn%0e#r^zU)4eS#)L9w&Fue2o(pN0@HC$yu@~?nNXD!&66!rn zJ2`mT5Aq9RQ_qzs){ku?DVmwG^yFLV{>~9-NuA?+FfM>g)I3-#+ZWD|(r6p*SRL{J zp&knd``NTX4~db$X_c8L7!=+h!EZd!fk3;85W@&;*ugLjlaxgvyccg>+z+8%QdN$d z=Y3U4)i`_z?;zWWM2hQJo7~0B4C*aDcfj zS<&PgUYH0b7{_Aj6oNi~6Wfw1Acpwi?o4byLK1ffWJc2UZV+n^+ddR@l3`SW#SS(i z(tehH)}wSy0<0O442GHw2cZV_c;3&#LRO#K_v}+Q`24#yxKd$6BsR%eX#5ok>LWrJ zHN^1}Sppk|4SSMxZLVek9O1`7PxLknwaQO(w)i#I{8WJB4*#cP`bc{!VgqZk4oIlp zs=FIDPt1+0j#o9U=yu(~`;{BjgLH~;IOblq%K!t_b_vSJ42}xtgns)g4B4n=D}}JI zPy$@(Vm;ignaS=rSF7)cB(ucgYeXZn_Y*We_RDbu!4uIz9?dtaT=)nDmKQpm3!N9D ze#EMsF0F0utL<^eI&}aV<40N6{&zZw1UkZMA5Q?V=)#Q5?R9V`Q#lJcB{$R7f6ogd*<5-w7wWQs}gCdy5@zz=XA zo2>padMQp3`jZV)1$62X1CH-6T%`&v>iz}EYV?M@S3bOj+8yqhy5=c^?Ctk7%eF*_ zjgm3|*+GaMXrh?YPjaG9NI2ga$td9;16R(D1=u-Hf*+KjN;OH9ZTkmgCh>rps<>^+V$db*0G$r#dEr_vXRn?3sZ{!FuV^y{`-_DGN7&KRL z_$(cDAFa0pO54za~kSG!_)~9a$2@^eLlRvub zE&BRR#!^RxVfmkf)&meSM`moxUU#M)6E4sZQKIwi4Vy9k#r4}^Rt25KaY$Y>Gj02u zbG6)EO?_9IkgoFXH3@DNNMvSL)IJIM?JYC5f*Maql@NvD_NbCCZR;_;Gy97_neRi8 z#M`U|^QKUkl_O$9GG&JpgDh0w5cTxRYN8ey_xbBo4BX|tyF3|13CO$jyzvG9(dAfN#?-I8R!f) z78aHg?Q&s>r&YZu)b8`^stV0;-XbF)fOf_#U0JtD8(yNtKW7t}Y`CwlU8!RL!9&o4 zuuVRU#$ne+nPk7{ffRXjgi`|6_j)ZX#R_$Qk#@;El&~6FrF!z1$km%aWiGF3^^e@?6NPIQ@r;QlM z_g;27BDPi`Nb^|WC+AFJk%xpR)C5L6A);0C(V#xMKs zqyy@86%`aY`=JF_$)bCeDV0Au%ICYbJkhXV%F)m*Sf4(WecSGhO_h;(Z|5-6LCEEYBz^?GDR={cElTj&F&WqoCF!8hSMJ=?K{0qn55!{1 zN+tPi6Hd_bKtTfyghA(_bZd7XM;7-VM2E@t;I>lW2k63*i?U6H!=n{(Zy$~_o%8K8 zcmX_+Al2~mOJ)A~kFm#3h7yWLU(}#xnfm4LvJZ`d&C$f|qXN6rWDt%wh7~#cFDIye z-K+z@Ab)W1(D=ER%c(Vpof|zp{$jM zH*0hLbJ*(OUk<-}6j@UAxba4_1?r!xKAs!=!ng=mjPMjoE~w@=w@mkj<^fo=<{&*R zsP-`i1XgDTX}lFmXbzl$=Eihrie{|Xy=wxgu2HQ&Jn%wrkFn>YtSe_SO;@i{w`1Y!vUnkG(-Aaq^T5si4>JFMvV#AnLnOgL zj+q-#t|zCqfv;do4Ss_AGqpKRSf=>$P= z@GA$%n>%F0E1iF!S|TZEw)1k3EFlCReA4MQYYAMPCUdls*4sR_bDn`-CTTNyI3sW=2IkJmDVXP1YDra(IL{n{(vPh zGX5N4Ws6TP4O`~I9cL7sbi+MgQ-5t36;>FjHyE9d^9ZLjM2~SFFR20z(LNMlKXmA6 zesA^j;;R^Db=Fr&4Y0BWJ!5@8&68?JKtWd6X-EfD89!5Cw%bOSRZbZy@gJ5i-)N;c zzv>ZIg{}x!64FiuBH`5&G_P&psgYO7!$#{LBup8Um<1lq9bbY#NQ`1-LufN=vGxn9D4%rSd-0=TLE+pOgx(0tshqY7!i8OXzNjq%K|eetyf~Zs2N)2+2&i zI-{ob_KK>J_YzfpqyJmrBVf(_boEo6Rb>vnHwKQ+e&=51I@@7(M;! z;P#hlaMs+ZvskhyCs(#7?xU@Ls||WZ7k>^?v5owjwYGn)kQVsV*ySiaTW`wx{Fzf~ zHgV9cL{;CuGCnco;GfQTROK3goi$_;9?a`8ds_B!lxEPJqawZ}Z*K1)T1P8dP61jx z!d}^gOQr%p3xF-=%HS`?WU_vBUPgD`efxm?Z$`=3iW%bld8i^bhJy z`h6#YHRu;@O?a)P`;#>M5XE-N!d_r(Ne;Zg&l}S80K=Zb3Il5{-CoUxeNy+Tr)lF1 zJ?e^FLXZX2!v9bH3}i8|!p926b;3JM3tv-j&Pca~dD*4=)M%{Nq$$J|nw06(#;R@!xoQH?le@c$p5q<19m)iy9^JsS;J%+DNh`|-x_c4_RAWPjDq5NgFB-JX@nA1Ao&{eb|-QV)ov!x zYHc&q8;ojBqlwCWHbbYj^eaw0QGwk#@UECUOGAWPbn;4I5uDoTrrugGknn$)aO5-( zks0rW^3pm-!GI|g(VKpfH6TYPE|4slO|=h6bR*So%N|}REskHl-B(i8@34cSpLlF0 zj#ZkHo@Yq56o1ZZ1qyKBYQ<4`q0%Q9`cj$`DT|*npX*p|I8d0Op#{d0nfvX+TBdo7 zggCxn6`Iljbde7*V_bjxhgios%q9#^+YI-P z09oqfp1wQUE07-Dk+1C`!k^%GkuS;jIwHUg7gAN!OLoEPFf_-?_eGnsvlPm8`8BMt zoGkRc9zFLGVA_+Z=U{fY)_BeloAa>U!2tU-Q+;Ts%orbSfr_=88TGZ8sz}yd%`gk~ zRJ}Q8euJOS9?#d~_ON1Q)8+%znsE)mg-eTsT_i+rrHWIauy!)Sh0YKxq502g%;hbh zzpRD!pOxvq76DsgpiPWjNY|Ho>6Z-?%Mw_9J;U^|9A_@??&ZK=v-qDe9GA%w@v`Ray`xk$h!o?+BZoq zfn*aDi&e)%Iyc_rcjC?3lQ2uK-7dC{UbSkh1=w?GSod-jAG(X#uLW!RZAC)azjGc#Lrf7B_GO*;V zu_7nh(#O)dtXQBMP*_cZq*vRTP+9-$K@6=+qg zBa;g?xpPw<_NY$x_e4_)jPf+`#2(z(-khbUO}xh#(SwXrG2O8=q~_=WwtO3zU~YD7 zB8{rC(Kg)U5dS@?WZPtIl8W09NgB%x;{EgOXy~W;1W_+PaOqA zkVtox>#yE2@UL#X-hKTD+p5ukQVZ}FadIjq*-$tU_gLBHEs5&Jo?4kaz1AG}8a#qc zJ=n_zcp)~ETbEN?d9iyw8`@=kwJ8MaZI8}ZaC|ZJGr=Uv_Koxl8ok{Mv zLU;fFU8psfzO%cSJ5v`k|LA&ndbJai^K|N4c3@F5W#i8)$FHlFzLn|LdtY0Am36y$ zl?tP)(dEi&Jh<8P*vU-xS$Mk}F{(y;H zrq+0pRN6;=X60>RyJG?bjfDV15n;hx$f0PVj*u`Rwa2OgwZi9=pfPCfun)n@J;^`xd!5#H%vSEE@>(pQ0+0efd-#alp35>p4hi^Mk=3lX}T2+y6@(AF+1mX)z{LUfw6*5jQ8||WEHYHDa--jFJT_xVN~phecc-DQ zcv3K9{Qke&)My_rioN|_ALcT)MWC2Gerq5swoz`QH9CNf^wkA^5jtSZ+>*{~gs!H= z<|l$a6KJ7kRS8ry2<$8+Xy)`r95ky?@ZaZOeWODwffKP*GAZlMW$LZkY0FzvM<|FT zKB{wJLYXT3YN{i3{i}Z&a!(?$C zHN>7BR=O-jHHZER6z!p5pc_3=B8=~DVgILygcEd(IG$R~f6OFo^e3eGh6f{?Z5PyN z`AI>xc*}a^nB}rV7@rF(Y-yl37(}Ti&#g)NHAgwrNOLzCvnFNlKcRg4S0bj^&+_}CF_rUUZ;$8>-u^-|$ho$7m$tF%Q< z(#PcXH#UBjfsIv&Os0#0tAacJD8^9;s-G&EyB+fLH2CJDXbV-ueITf>@ z_v?Oor(gp3C5)Zdhpa?5khdE%rEE4GeN`PZhcRFmr6Uv7DH?zW>=AgRN}=QR@mLz- zWbgnfNEc?bbhqtW4OC?z^4S#kDdg3QH2fa+5`}QZ3E?B;QbFQ-QPe(DlxJ}R{)kN0 z66s}w!?T-3z!9alg@Qr2^3U8jVyJ?B$ATJnw1e0aik*38p20a|L)#YpoH-~GFryAk zh(Q~=MJ!|=QD?*NwE|SaGb&JRhQS${fFPF%uzNs~Q(>blQdGZ!`AY2Wb}wJX8*;=i z)wG_9QkZK>+js$%QJ&QB%KdwkHQno#h~Nfkd81~F=wLeb%Ygi|tngn~uM|sRN%!}& zdbO2FUhyv&c2BbnXJJpe^p9M>_$`w|B<(RtO8H_E@jRFB-)(~ZiZwobm?RDWa z%f4MlvO>dFe0jgZUO9GXvqc`a-QE)GscLvbgBR0TpW}E6}2tf zCIecr5nHAFc0pShVwv!xAb0$w{<~dh&?+3DpC%}ZgRzF9)3XAp^L7>is{w+c-|k}@ zu>{DFgYm#^w^jd+(z#~*QDXaAPN?herr;r|s#6$1{mb8v_d{M6Cx8&Y6-MA=l#eMK zeBAk7z}7qQ%p84n6NWe!v$hqf=@Ee7jixBIjk57Fi7i z!_K1Ap@^MI%9Q(gHS}0x@BhPP0D0bhY+Kk@t*uMtmwD|9Wl`5%cKiK~#lZzNd~J!K z%Lowd)-^NKQF4fV2`-=`%e^5-UkzVIDyHOH!-IF57RlA&H@u zwje34MrhYh!G8fLic%>K%hub9Kp%?_B|D;$mczegpGNrY{;}aa;5}j#UlebKd6hIq(eN>wQ^|9bo08;bKFd>8gywqDgm;J_ zCJK}d5ye9$f8Xt0Ds-m;6G4m=&*MC9Pj8XJs)O0&xPeFbiY#$2%AzDz)xU7#31jP4 zajKi0XClp{^sZ>$=S-FigGr(uMj7I8r>|GLuqfkK8Y7CAa1)i3go?QB#iP0!6jx~? zQ0O}up+KnwsCu0#RV9nNRmbE!#(0w#SNB7c!t{(_-%bnCYk)RJI&WLM42C+b&ubBm zu$8g-Cqk(S02yT*BUO0YZC5YL{7}jN$KZ+NP=9Q9P zf%o84mjTVEj#ufe6@Pq0z54A5oiuvN6x7tPO$SqawMB)t{*|sQLIv@B4iv}L;$shFRjRYBItg&EkVkXrF zMi@NIkF)`Q_}6JD z?wTzu8R`1}?=+mSt}idZ-|&2ocMt!oJNvhIx&UK zV>~(J1X`GZ>(n79r>UqDV6d8O37?pauw3GaOCae@L~2-o;a1f$iU7qqY|I(n_qXD{ z1r1JGW8#JmR5ik4d+a-#yK7#j`Hb!Zne-eRI;L86I#L&|SMMcYs7 z=awM%n*P=ib84mgBw1~aWBm5pg?ZnSPxml=Wt~6uDAguTY01mb zcT&J!^w55tiH5o?e1>FX79Ola1Q}prCT8)cAnZ(c8}K1pF@_AYw66r%alJrNOV8@ewnZ{WqLrZ{?Ni}Q%U#RJ zrdsUpj5BesOw4CP5Lh(&v$*sw4o{nL6db6o4o(>LCI!P#JGn^xxJ*`75}t(Jqixe= z4%5Nqb8sQ-{`K}ZK+d3w5$b@ffYF78WQ#Yw9JZa~xNr}CJW7!>`rFw++4jK;M3 zyMQW~UFKQPWfu-158+y>m64h{r}*eR`vFeCBDWv5Hx|F{qXnn>$JbSfmU%oU*9VYd zeC(%vf|38$OcD;bQxt>+hKOmjV=n$7y7I+4_rt`wX%zO+B^~3Fcs|Uoc&Ea<X!+ukNqtJ zT1pPgpCVNMC3z&-L4$ORWaq_N#)@qi$S_GzZB-aUjAc_0NL$EP-gb-^Q~=l>V#_6t zBHth%0BEv3>=rJ$`P58H9e=567b%nenoPqsW6ouc1gRdAZ?Cu;gX-rpgke!U4a)mB_fbGyoN$F{KJ4$m87 z=rE*G|6ak4T#$5{!z+R+!-ik_v1L1wX|8{F2mk19q? zFp|crbMHe9eZ_22JM~09MNO@(dbJmJo}HhlAuGb&K8GDWqm;@Ud|TLmER+ye3A$5XB7d&n!y=Dfg0 z+P^M)_d>dfmTCN8`xeyq8#$U90Z{S@3_D8T z?wj2b89g;z=7brgR#dchc{E}>{f1!$ZaXeBBi{6rO1dOnz%O5;E_L;v_a8X4^sOqf z*;TQ&Yuml1(3- zy18n0YLwmwO@5ozo~S;+1Au=eUw;p5?7`RSS?Q|#gw^*#AmW&6h=#oF0M_m`xRkGR z{z~XvG=harJIiYNg&-;JlajU?ga-#-aAYG{cjckBo|pZ zSpgsN2C_Syzg%nH>}KSX0>>;LINGyjR#MIV`re~fl^ig}st@*jDq95l;(rlBqKEjQhXzt3DY5;4LxwI4jl`H#u*}+% z2y02AdPLcGBQ1-OWEeG)2>uhO7QR6?pQFy8Dj?|~DlQ6*Y+az7y4?8HbSBJW9NbVS zJp?J%oNbF?hlxjEB%DRbhML)Laa>z}7L=B5J0~p>2+E1f(BZ?#DfLcxoXtcApMCnB zb-=hAEjmzWevvdJ4v!&{4CGmstIO!9b-O1i)q34osxui#$Xbdp>S}l3t;LVaO20Ir z*d?>88#lheJM{9-}(PNBE5Dd%X=?69+DU!L&U6bb~F`ci%3kJ%p!cNM6m z=0oV-#O*TqeA(+YC-jNhO9VB@Cyfmz(0JH z!t=Rp<)~{H)X@^{2Odu~zSofdHV5m5HiiTt*|-bU2K=!xb zTz!3Z%WtWs2mp1O!&Kl*VOai+_t9xMpME8WC9|FyhO8l$T!ekW=q;SlA*^QQd-7_P z^ULYL$kZPF5mjxk;G=$elk9R7Utl~d_IKF#ysv09i20ZQ0K>;6PeAN7C?aOa1o~7*lhJ`hu zAdD&;`#CYBNr%zK8*OQ}l(Cj;>u8OW)>H_dT5=QcB*cHf(DLm{6G{ltDB^;liAFa? z4OwkPQRJh@R?L~Si_z$5=1|AOMbVILMZ@Vsf^)gw;Q*!Pd`d@HfS)ar(IK9gitaM7 z^O)3od}ufy%y*oCw7ZW=MSAYk_$D2Okj(y57f`1|F<6f+MFyeXg8oJx$^Ha_{d|fe5=8O0S}d9?UaM|Yz$}F@{q}*h4r5-7wDUS@E!J^MT3pNYQ7eg~TI+@IIk~1@ z=|@6SYF{0CU;EE^D!jgu0JT39U8R1s^GGn4#*fdCon-Uja?AFi%BwJQ3aZfO$!aQjIS%HQ~Y_ zYn*p5lnB~23p}48n)lt~H@FTDJrt2juNJVs&Dhz9pfDlX>Zgqd%wU&@GWP6%0&{e? z-7Oh2wu{HVdFtSiHTbF+s77c*rY=8NoWDB@`}APc9Dy>10$xTMf$#4A-FDXxjZFVk zk~LZuDS)*a9Y#Q5MoubVDs*mZ^}Ssc~yl;_JEBQ)U6Rqtd`sB7NhJlG4Lr>W#3v^ zu6E(|&?ixTOo$<|yfSM87@OFqJ43J!bjNgSD+jeH%bu?yTxl1OtJ3~9Z3-ZR{z`l^ z&HCEgaAkCJk2w|YQ@Pk0ytp=lbQ#c-t%!AjFLC(|A1!4?zu6CO(%tqy_e#yfV_)!4S!Id~au-uR<1#b=^r(js(T2EWx}K7Hi|iaPH&D zix>s(-t89@+v6FFvnR=#mEwlNF=T_Y_JGq43N^;$Nvz+oM8Ga=J>%M(=`xK};G`jb zWQ@!Sbayzkb!T7qR^w^EA*tgWQGBnWCVLz#zJT_Uev?{2y3sD+)k^XjH>N`MDP~Gw zlN8`?!CFY|B~n`AB7vliQ^QEG*#k)I43=)#hu699^sHG2*A7Fa7!9!%0e{&}&giGgiDaG5W5FVo{%AAu5*Eu~U72;?samtfC z0hg4ZS0x>d($kO?>cdvXhI7;<8IOC%x?6AuF|vK817VpTs%2eb3+Fp)N^Qrj1>R-} z<3t{u><#X5lCP-rYGs6um$wdXTI#nGq0+T-!8hiSJ_xL2Mn(_MOO--#+V7QTJenN&edX@!aTw{T#MnHT7UHNtpbGy z4BgYSwAyC+j;_wwMrF$zGRW3^hf#E3?>4zgAqE<&;9*$ z{nyEL`{TD)IQm_P|5=BaKxd%WY&+?~*~%-wW)^{5hNmA>!)xGU#S-{>TkN;}C&9X@L_QKy=^OjZLH!>I7y0RrFp;*T5Cv{ev}o zz=|{ZrjT~gORh?{?EaK#u7K>8xtCjspLO&Wokmo8<~vD(a2&bT_vAtu)9>8b6@+YQ z7mkl4+p5vQnh{ju1YV-i!J%e&uG@u_LKOQD_u-uRYu|%Vj{)^6*dB#|#~4$Cgygx4 z>HY9>v9CYTB3ZohVtQ#2`0NZvz%PC=Wr-#Lz9O@8Hxu$!6I>m8-S6I z^e}ntty4O-2yO8yXC>X*f>ZiS2?GtsW*B62rTnGxb;sEe4@$qWIiNuSyx3+3vu?iX zrKe((F5e63kmFkM>YpHLZjAgWDk#y|i-%!+T#m|X_!!1CaEJ>#vlAbZuY+w8)kRaDSoaIH{9lObEy z7J3^2hOfo5wcLV?^Sd1FbFLJD=w-$b6xU(C81zm` z>!W80)~9B#b%KM*n+TZn0`hhOGPUH!jto zj+PZ%XjEkO0E%Yl;=hfwfjuktzcT5|f8&r((vV8e$qABLOe0!1YzT7fnsIoUn1H;2 z9GaDJ%ON0rv}WkxwM1(SAU6SrTyM#}9_S1`aK7$BP^t=tV*+)f2K9TK*9*Gk@X}8p z`JLM|tLObOLvGgu-zFGlfYo$S78sKubMLFr?j$S%{mt$>G0f)e0 z$abd#){sJGxtyyt7by88!qen_V9v+QXJ5d>-G=}U(_W6*WC(#YJxm*w8e<+ZKNU3c zjdj6v)JU)}2ue{UkLmj8Ui)I)Nu@fu{gKH`j*r_EXBebW zHHmjQ6-oo4M#x%xY1t*9D_ZHLINPrzEc& zMmNF>oLQTe0G;#ukOW&)<>L;fiU)qjS0#zub5~mJE=L%?wMpjf6mD5r_g z3a$!v+*pAhTLQ0K-kqW(AYLEN*_}~`tUoKqu2L}!T^J&G84uU_v?dgv@_7dY(c69Q zN_7-M^Kj3}lc1ox(})izEGt@1NgjoQhIXZ87?L zD;MCVH(cm#3V`g_I6B5^8}D3+cE>bJduQucB9e(9u3b}83BcRf*)|OBJ|p~ZE{wa9nIhG*I~4IU;Cs#`r_<*_Eh(YW7Y71+O+>J-u7;!x!jIN7sJP{ zZaJnG@9Tm7NnU+SRa&alQbgcoJZH^##C!Z!QJ3aVelH%yZ zCNd&KyCW^cgYtj3*_w_dw5tq}J)?%b`l>ysQ56&_Wj0-0J)jageRjE^tfn+vbcC8`!4skcv`VMj5 zs~Q-n)(KM2!Apn2$=VkeT-U&{Z-^qKI*M|M<(NO>-IzfC^BQ0R#TL|ei5oY|?HeE6u_>P#_kzl1ve ze+YZausX7!TR6e};O-JEcyM=jw*vtZ+}+)SySr;}cPF^Jy9RgenVB~;_r5>A?{7cn z>F(3J_S#jeR#j1&Q1~|}p~cT)btw#DTT#f*<64NM(l#fPS-p!lhIp05fO@=TUH6>b zw{G>wTY(XHUyTOq+Zo{kAIs3XwWJy`db*7pyG^R#fzMB^2JdfCmcC(U{eLxvTz}t+ z$hP95Et#cV@DeP*INif+GPCeKf|Xx2u)Ey_GT72;8A2-^S#NciQCXCKh+xBe@#1$G zSe?8ZEn|#mhMz`hzC#fGPPM9x==zOK!F+bo^9mCo(;B{PT1WLmbKs}stjxflX`Vt0 zN;@B9LFQ_ z27ZNz7v4OJ+Xx0_QQ+=RT~Tq5?*(P&*qUrl98@6fZgb(Tkp3o4{u_cy3=YG1l=x9W znFZ(43P;$wiF1NycMne>t0=HkjPk+Li{p9vcJ^1GNo&w5<0>oCj3En&J4>V61tng$ zN;JH(;SA#{Cz9q8Zne4w@j@w}Oa)_WlFU+CI_L9|#3&>Dk!8S=INEeWoy-JH(g-;i zsOc(|*mk(l={WK3u37gcqu^ez_U1rmrcAS0^IaIg3If`#JjOVKoTlCnE6*tY-+{GV z%p}zWv^S2fmn zDFv&lTLCXH2Eyf38oJM`(DIPI%oPlVGCC%KR;3*j<>pZl3geK^+_DUOGTMPT=R2ww=SgXf)l zneq$g2}?gv#^!N8on`|^OU8?VLv!IY*v5m(MDO^!DdmhODZW@8kNi6(6|ZZ%b7CYE z!Sv9Kbj^)O*W^%b6QA+$spG8d&SdKV-5-L2(~og|Q;VD`Jc*m3|3ySn#z{w(RF@M| z*>IO@JSnD<)z7G6hpv$UsG(+TP8{}GB_CDRO>=e@`tDUw;LOjWCj9daAIRCWQq~C= z1M-cD7xBg}e{XVC6vvcbFJC}TPKpryHD5S7PyltB&P2EpSpA{ueb_k1QbcgBJJ_+)!6a04 zqGFS2^|81=ZkvhW?WJ%m-L^av1J`Y0a>o!COZin`D^b{g+{*hEOu{%q$IP}aVu_`T zCPvg(uuBsgt!LWbuTTtYWWVt2geQjOrmqehu3%z?UPNH^}EAwS#w zD<8V0DhTjN_1vaMe}&5Bz*9lPvcIN&6F1%OO`Ghiu2f;t@oj9HIhbK4&Ubsv33rXa zG7n)ZZ&nE!cjNu8HEvMNd7ys3hpGL!=8%{Wmo|}{)aX%-j(e|qF6_L<9d**mYCLos zHg2L3;R;QI?QqYZ)4p5`BA#^p#VkGj3ws!$E;plm3S=ldL#&LjVh)9;tG0-S=-8s@ zB@TO~m;}0YoL=}8%~0*w8tR7Aybw8zb)B*Pi;zbEN)tDVjcjCCWZI9=Jo%xyR&K>z z;J8b0ZU#`~Ggwpfk$x+P_& zHx6ue*Qq8;tX1uKzu?=<1oV}OLbBAz&qRqQt>CQ;YpCU?&4W7wDhU?!g%#ybYc*3d zqueKfN1+0TQ6i4V(b+2={QEZ=-(!@m>D-!1SZSIb!oN2?$`P*`_xjIO@A={uiwZHv zI^Z?2fDOL=PCpzzkFp3#U84Xs61<|Crb_{qE{rk@7r8jvJ*5Tar$X76j?p7)^go+- z9o!1OH?vXk>cE3Cok}PLXNqf$dVECl0pskIf^}Jj$#B;H+8}MDK(tHi1x__)e9xXT zLvQr%Z>L>NMy&X*0%u^@ikvqal7}H7`-rg^394-nf zqmk07&4^PAj>>diGQc!{i-PuY)xykyq7@}KeAqEMQ&k+E@3e1HBX zVNAQ)Is$m0xIJ0*cIi{r)dhBjkIuDf+w6ET|G~$<*Q6W)tRzCKN(S#DOpAR@9r7lw zkCza}l*%%go>IKXKLGEHGOE$xn+*v$MM9PUfR1!6Bwb2%_ArGV>pU520mAi#wX;=1 zR>8AgLgkxQ>|7b^ci~D=fY%M-=M^m~FQv4hoiUR+>9p=WjVjuv^)OG;X}X0{`13fm z-DAn8;Y4G(HYlwM!Zu(^HYH0FT$D0B>yKaL= zKfM!(Do3mbhkl6`$U4tLx`!zIP>O~6>g^NP-YQy@HD!6{!L!1N8oU=xF@>=k{}E5h zNq7f4s zd!zx29{wn?9Oz!48gQH5Yad-7%`S61(bp9}s7SHOw0tHc|C!%t5axhd zUA_jSjX!bgYNbzE*Wx?J$w1AtL`R)oR{)z4raydBMO$oyhSAa!d6+ZuR9yzvJUwvy zam}l>P#Cc-tM6mvyA_<_b+~?$P04sx;@t7PXfv`+!eYs{VQ1M0Th6`oJOct1M0z4b z_Kv#SEYqT8Muel-(=L6k4>nsdP^F^-32i~iKn~Q-4pcoJUF=Ld4U4KIelNs30%1#~ zH?Fyx?N%$3cdFGwc|AYRtPf+0OOwKFe+3+{$Q*7DIMqvGK0^&@jpN;23a1y}n%!Va zw}t=Lx9y5WjvkEtTmnb`8QRwi;d;@bTsM;D7u{}XTtT`>C{I%?>|RV+Yok!{m?6w? zSyjClMozk;mN47wDMR4Ab8Bv-v0ZTb-EfIF$kjo?7xC(NVlUc5|H!i6eFA|mBgB*) zj2Bo){)1Gs5@^)i>X{b83I~6bb}w{4tPK{4Z{M|J!?(>hG&1LBXuQdFJNB4;v3AHq zQ?l5)^7G*Bf1s{h9)i5bvaZw8*XG(^q^UW`9Xue7Au>1(0ya>#58vtmptX#q@r2ov zVdx?{iQUK7S&7{C0FP1i4SJvZ1Y+)ii)_u#JX&Lx_#;lMUdJjTwpA^zWHXLJ)D{E{ zIh`iRUnS-QgKS`~)*{$U#rIG0{_SiF4?3sKeE|Pr&i{NkIAYMb2S!}!j3)AF?kgV) zD(Q!Sd&dBife)E1a=c#Ay^ma3XyOOfg&ozY5 zu@uhb7o*&d5llJ7MUg&|m&-(gb5;wJWpJY%AYD`XNx7tIxAgFUMLeNK+6EozeNiTr z`d$0aY6~bqpp&d(nkl-jk&2M+S;q0qzu=BgoI=liew!GWj6a4^8ZKh!O}FOE&NS<1 zHk4dxokxFJ_7iwF4ES+#GSZc#&JeksWT1OWf%c>gvYC8mW1Kc03pY@9k z@oVh9DEI`da0GqlnQ~&Pm|q;Fv$?Ql4N9P}uG`t@KyHvPiD(GtRq!rGMe_9ER*)Eq zIfrFTcFZNp(Nh97RIgXrYeE)w_V;B!or1;!h@|I+RV^7X2)o(3BnSuy-CN zXwm9PbEc?+)KOa2_Fck~G{{TprrKI??SX~K1Y+5G#Q{fKA34wRuBP_D)P(Q#-1aa{ z7_+qJA`Pf2>%)mmU03ZHIsJ0t$u&(jK+&+7QxYks|Bf_}s4o2|;11q17E=vZL$E}}bp%?jE z`b%}57dh43ka7)Z#|wBsjHKiB3x-|ANbDY)+JkLb8$V?5prm{J__N@D8#S>kgo-%Q z8L(5Y)6}m97`FDFq6=~{{goMXg2ttN+YCpi*x~LqbgTzeh`g|ySl~dlD0EUsY{8dy zX}B3d=Vku3tpYhzW05+Crnq4DCNBWNW;a{fSlcd3q*-h1h2cry8cn@uc+{tnlkY+CGcMXf^*^(4?n6N6rjvFo%Kq#R9UWeC3R_xy-y zC-=T;Wmsr*QCVI%^g6C&r3rSo#o23Wa1*?*7{BGb_Liw#PWrAD?_8k&9DM&nWL2X> zFplGlN|7pr0Cl`y>&1N&$)(pSm$YE?p5w&zC*mCSK@Pg+&E(UzIPOeC7808XPkrXO z-^zt!6+PEI-nYzA2H7ffoM^^N2yA}qxtz$)QerKMtHgON0c*zum3Pt{|21s zq5{gQ=P!n$bTv#%Fc#KSeiN^Ez=!cpUG&io-(d=CA`dHW2h$gQI(Gk0(%|FepIsgU zrA?RK_g3g?o@-JuD0B)6VqIu$-{SjR<=7eIL>r9H#3RQ5Q8X>73{0AqwU`UOT5*Wr zmPz_`2VyEIe^F@RV1a*FFmjQuqH)OJuQWMGpqvXT3FF~7WCVkg3fxgUv!W~C0E`i; z@A{jXiJ2=v>s-gDduzN&b$E^pe6Ju)(Enn$QHw#qeWAXI?eQPb_zyy&>A~=U%(}bi zRN{mh-oGQzCZmk-TqQhj?~&+SpWTbJnbZTI93I^D-Kk%C7vu{qvzF_DBGeuUe0s6G z1vZI2A1WFzW2LrgQ_pN%hUYw-nk@gmdAS^fnkeW3EMlY7C(t95J}H#{71RIsWULv?!}4X8tSailASg{!7p5ueJvY+FG4K`|DeU zmU`rJiccRpiN5R9j;hw5x+S9V7gQ=!9|W)J*bN`6E@$doDp#mi>dqVfu|H;C(2I;h zlsYHLj)RElj0=%=UbjO{j_M0=1sxSwwQ%sKr=TcKYGVNPkVuI_xu{i4UT-RDV@54-uF4(;lW?f?L_^o9@|}b^;}9 zzM|AlQC)jJ!OeKXs{q|Y8y~hd*@fuoQDTntAc*Z{BX{Ca zuAQ{a0pQQEQLUZ&e73~=l643(@3vdp+NJmn-fE_Q$96(cZZZn*`|I9s1ICrB3NLMzy8} z1D&-7mDf)1a&~eN_WI1<07=t;C490(@A4kZ?$>fuc_^#3c>fEtZyAoJUMe{U&|jix zHabjI>z-xmQz};UFy#7rvEe^89!f<};7r~tfAlnzxq6~<)S_I%-r0kYc2R|TAFY)a zG+MRcm)2w&xazvOJ65kE$tc(jmyP(>=8Cc_g|R~GqZx| zVkfh#JS(7qzozEiz7yO#f+f5@k?P6{MC%j?)QBKcTkAG#>wzi%@>fm?D_$$b-~g5;A?9}hz53?&e2SExU(XJq80D_V?olrqQH z2Wf2(8lLZNt*Gc5gP z&J8CBK9Ir~Na_tTzHC1#cMH2>g0DUsk?mq>3;1t*A-}0u^(X-!Z?k1BrmR5cs1Wea z%M+$Iu|AJ;8U-q8%QmbAJh3x0^p>bIP|n66DLrSstwHyF@)URfzOVm%1iX>nxo7TP zi=uwBCbt3m4u9=4jO<(wD+?jq-=d_Ps(~cr5?(V*| zyi3MWMzy>1ti2Q@gncX;x%2%Z ztd68++GqhI&MGE^?%8QG?;Aq<*1k=mHn8L4jq5V;mi=A9iD}~y>u%6irEM~ycBWv2 zJO2_)p`T7NZd%aRxb4u$yia=%So3@rbi!;*ptF@JTE3+zH4=n=4il`X(L(TXPW1p( z?TkI+G%rcw_h3bro&HiE7-dw_LmIsBq(FzbaJ}-o$_39Aq74|l`y^keDhf&RX_e)D zia(gz1p^{2{-L;UdeAL=+@|5o7BGIEu~>=;(YOg{u{aT`%=ii}=y$WWY)>@!EHtpo zoxDcRJ=bvT)46ofO$NHxIZWdmKP}o@V;_`P+yY90|KTKpBliVMc*QqI^9vr?|y* zfYoy}cmzB4Th7&__&uz_S33_am$|9Nn!G+J5vM-X1rD!KvhD+?f_plCW=8rDrkaWY z>*W_xmS00|Fu9CCC2!6`E$bWrkaUnV(KmxWl7mP4k&`j{iTr{wcY63hdR?j#WWF&?r664(MB2?|;7EI^NbeKKV|BA_Dv&V*l)hb=u+_cc`xSZ17$X*^u41 zkibGW{e3pJha`p)fMQkkzPYBaL4MUz%Wddw9xIOhx(gGdEs_{8vck`YwfgzY(pt^qlO1xXUdGB(bwr{~76M#RVj-)Aam1e+W;Z~_+I z=#Ynlj+bj1KV{IcD1Ap2c7I#q_BFm&cKmi}V@Z8V^RqXt(LKkIln3Fv7_N`lttM`= z*p)Twup4J5YT?gw#3PNiZ#B%rk#TDU>zy%{amvOQ8^sk=fNhMp04~ zRWdi_BT4XtJ;wu4tn$}Ac-#^l_bLst8H3OhYd;u6rs6jXxX$y$`KCkSom2PQ1kX)+ z8$*n@A@haY9AaH`>)3v%dK){^H^2K@{A)YH$yRRlAx9MGv-@$;p^ZRG&JnI%<#Ofe z5URK@-IXg(t*<5n-?q0vZ{4q>@Dd=pG1^l(5tVbs40&T`qq{$BJ0RT?CC zU_}@!;?mFlhJOB@A%GoSpt(E!pZk~%0p=x49Tbv|h%ENjrC;@T+M`~3ot%+kx&D;R zgOHq{_xXTjh8sR8`sTCTO>EnH{$0t>bS%k6jV*Qx0w6QkXy^yvPusFlQ6*zk$qa>_ zhwVmj{n}#3?zGkj z3)1t!0N5_tV&_hAmZMs^!`?-hpQR$U5RJg0V4z? zXnds-j;fk{in4MNvh>9GgerCH5oNTxgW9v-hYkIS=5L)Xzcij%63uWrxQnb zA&b$(WJIm2F6(k8Ewr#bV7W(HN9`JqN+Ju)IPjiBcjUDONimuU%0yu_@nTOKgzWWy zAf6GvFF_t&;7T5ODL=in--C1K)V1j6$g(gl^1?+brGaSckORNjcM<8o$Ow_*Bz+EG z?N|sWBP(M#iH3W$$orhUGJx{)!g>r~%6<&Yy6pxS-Bsjdv8eT_=Mu=%%mFJn?&^Md z)E*smP+Me)EH(Aa2HgwOI%WPieWcw3q>{5c{cD#F|4bUW27)xRj2n*D?Jzs{`+$ic zAxQbR0g`OSYIHtMRcljHc_f||*?@0_FNI&G1_KTA7ns^u0=W}KO0KsAF3eggB}_ar z+B&>n?E#W=A=Oij)(+5(d+7kB#F;3SOyO>*Ar03TH0b`?h_(~&8~H(__z<-mW5TaI z;c@aZ^E$}`3RCUasI6eVmT{Ah*$4cg>0Zd=4rhu(r|j>q?VFB*advDw4N#xh1LMTrCtW^Otu0R?I_x8{W{Qqs8SLmCEM4I2(jF`W@5E zHm(zyWCHlEs0rP$v_{76(tL2h1c%${RJhhH5MM(p`rO?AVLHz@H}%p+vOajkS4eI8 zlu^>j(*;e%z>4e1czT5ghEGSSvPI`6dvuB+6RY_lMtrr<-FBb2gYl*w;bVrm{a3DHzw~YP$)UIS>%+ARcCEX-#Yuea;ktPbX=DXOXt)2fM0~ADdY6Sze z>2GG2Kd$>hcboHrb+lDX1v1@`2dbfSHTYv&F*7RCYT3S?{x(13fHfx^ZtC}4nOuK# zEC^9;Uo1$4C$a&|?Kq0*HzV6D(h63w_pG*2eop{DBoY1kz*lQerjojI0P9{{ip|$j zk9&p4btr0`V}%f7B7Ak0w^FLFuK2X!(F}#Qi$kaXg+5l12`|;?0KuzhYIFKCQcs)$ zka_uzn28G3b7q>D*R^S?3zwki4F9FD@T!ilQvpaLoP%fT!+fKz6qx_yhwLiuWVja* z=a5g~+AI4*#^4pmR4q2eM=BcZI&3mo`;m8W|F^am1aw^;hnj#ef1eXv>8s@tkia zLaW-lvbfZvu504+be0TzFH&srT2|}2kk5o>$RwK79w$_8YSWI5_uX{e-3FzjkzaT1 zWVx`<@q&?l1#^VP%^taZV&-L@AVJ)pZWkd359BX!kE+xrg)rflq`6Ovy=RC)V@0Ge zKqx75{E);~JYbop$#CvG)r9^&WJ<)_+OX-vgE#;n9u~(|N?vgg?j5NYCow6#xcj1=8XD)GpsC%u#ap;(S^um<3>UIg3 zDVNU`(w!;M@2|6boCm^I{7SA!F|y4>&C@Ay4pAIndeMy^FMA3 zt*mxQOW6`2=JsyX6)}Kceq6~N1R&`CE0OXJ8UcIOytk)by_lCAL!@j!r~e( zQ*G5SAkOkzNbh;Y$L*;SPRwj)`R6cey@VjB`V5N6N5{n8Mc~Y@b4>COrPw(8ezd%; z_+l+8aM#IUoef{;fyhZ;O=EN<+xd2h{S2?SFe)Jkv^@=Ja?gt1%W-yaOV3Mt4z&DP zg#Oz*M(cW!y#m9f2d2%8+nyVdQvj=ERHBHNWk)BCgZjXNyA^`pZy!Nq;J3pB_Rt)% zV6MT!F|C^ z_r2(DlV87dmf_lGv4q|4QkK2fe`_^A$yr$qW)15~eCmz1rVFZ3`o&PJCTwlpB%Ux^ zG3t4E7IPB7`wenZBNiYmA+m;J+f6%`!RQ0zie1%HM!?0de%zX4bHU(smf+LShLX3S z@rR!DKg3_wlyv1aDrBuE`vORrrN_;F9&X$al#g;_@^QHKXiYA7{op1Wy@2J~DFPR$ z{v*Ep{zBkBqsy7ZRbvvt2JRwRX1on0Bp);;hoEPaJjROw$xgC%FzaQkw?{f3{d!U{ zvRNen>T1~h@U^iDx*d_QyIT==GuO9Nxw8#_A>EzX=8ZyLAoK=)%vOBee;M-129pv> z+9*B!8l}-75b%RUQcMV#5j)hL>1?PWb!FAM$b!GW^j!#*MJ1%KY$9_c=>h;Hw>xB% zhph>G#C7T1TI#o$89ukn7-#M0u@1%wwo-lqMNq9F-fl)C$-|ydvbI|#YPZxnH~89t zkZkC!(Ovw2d?as4%y1=tK~)mpjYnxY17;j|zLS*zSlpXB^4G-DXlINVbJAbGo#h}d z9 z09EpDrB!#ChpT3ihy~d;M+c3JI=dXRga|HqC^(Xx+lWpsuNUJG!#yqTv=AkdITVu1 z78IY7Q_=&qDZxEiFtG!$NYCPg_?1GWMli5A z4HfCVf_N$}lR-70X3Fw2*~DvCSBN>X2$i(1?dhDqaZT#oJRXL5mb%q0;rkM9$s_+$Bw!c1^Vn$c&IP%SiN$!NiU`pYwYRe6WDip zBFRL;@gC5SZ>iKu445KpQpPe<5?!}&3hqV9Is_!{If@aZ!JIDJqJQ4+>g$diPqVpd z&+04R?>{;7Gs>%u5#=Cjfic#cv5xBndk4QZKyej-5at_CEwpjvj!DjY(TJTazw@{; zkWiP)c!e~vPrSzq_{}@;(rqSf?q-v8dJNmHJ>QH$ zg@2um%KlF;fO)sVr`FX4_*Z_aK^y;^bXfr?57C^?`cZ20+uB+L)gS0j4+$AKkxC1TM_)cNp=Vi z9DzIiBTBK|PlD&IvdRb%fs1*Z_xHboWF zG{Xuo*>*bOm?T$;lr~gnrMe3J2OGGBh;{vFRYNqKL=HVQ#6ItYCC0Of8foBV`JyJm z*@1gMA6%X!c}WHNWskCZlg>>iztKQ&0SAES%OOti0jtXDA+>QtG6FR;|5fbF=C4*9 z1YKO3^WQ$NlQs!Cg9&XwE8VC}M072zs{dqUT~Fcytest@iZG(&s}d@igbJ=PDx)L9 zeq%vKD=@|1F)1}m_Jd-w&B3ZLg=I*O>InO*x;qXukfF&J3iCq0T%E@aiFFbRw`n{1 zOenzOep;K~*{lBabaR~c4mRFnwy4qwJu-T{xkc9bk>T~md(h(f`LIBYKUO@(gIh-x z0`f59`UAaQ%hbnu3991XJH}9w$?4G_@un{vW&OEH$;r-=Xcx4%CuEY$g(C^~9G2bd z1dEldDB(m!b7Ey4C1Q8F_{Odn`gz0$fk^M4awos3k3)1&8qNv3D(`yH4$=@=>uvPt zqZ4HH`ZA-!Atr=Pc44A?ivd4YPJRv{XD-*yx1{b%K+m-|AUTjS@#eN+du80O%wx1J zQ~eB||7#XZF>&P9qtqO^0YmdEe2@aK4=3W$eNGS@$I?82-}D^LX(=EFL2_AqPc{`; zdBV5Yg-u(w_kx+YAMPQ8zOG8@RIne3C~KgV)X#+45==cy6N=8K*1|9gzgw-MrlnLo zVwBtWim4?|>K?xk!xL7B#Uoi@_vJDjkV3H*qEEY_5i-GrUnG1L>(zQ*7By1#sh)aC z$<#gPc9_#zDMW=v9DyK6pqNf8$&jH&X4mPToe~I7&SMey38f>UCmhvuZE2dJ z=d<`7_fo?b5_0A!(_A~L^eBmn)H+gB*#HY+SGtZo-D-i0T zwq>F~JTd(;1aX_14F{N4eZxv}xgzZ9%sFi~B1$pHC!V+U^Tni~MnUF7L8-3=*mpL+ z`T;zV)7tU>uDDsPHEFA?QV(#?cxvQgE>D6QFMO3oTl(J2_(#Oq^L@g zSZN#kFa79D0*20p(hHJ}OM(=l@U>4&ZKMJ6msoB+qv0dj!K-fQ-c}KZX(KG@b?&7{ zY(8ynwBvBZ$+y$cK1fJCu4S}?r!F37EJ&i;SM>C zNS=TQ!^n7kuV(|P3eYs4GQk>K;(0$p&D|6+|8R7;mE6!K=wo7(y4te55#E?xkzk2J%=c@w;TVbXyDs+H0QkVje5a{$JIQgPPHHuC zTs4NH{V$N8{AGv*rD8#YyY4U8g;8QBThkvWH>-sZgJO96b{(jW_JNn=#0*pQq_nnP zs>rVb*!`={4!S5uH#^>Zm{@!xy%L!+BFUY%7smcT1Au{x#)vk$Je9aAv*NZFd<9ud zJJYWj386<~VG29$o8;INbhEg&Gn$ih1wX>7z;A3@?Wo7~u~MFPr;;uTR+5tBe!|O< zIwPFc=vQ)Zyi(wIUy}K;n35Tm5)9?1W$WT+HbnLe3F0n89WAIAq|2XWOY`yy093}* zYsxn=MQp1r_#1*EG+5@6uGJEsA1vZ&r7{4`x5HC$Gf@s%!Ybam*Ca)rQpfqrfRPQ2 zi1!0fCkEttXreVF{^td>?oY#>k;+!Gu|txmPhWZ&i>@-s){IMdg8c}7{6y{18{ime z#r`PLr9UUQ)(!VN91AK|LO8Zm7lmG@X#$92Lxu^5^FUVQsp>ABYnFJmHU*C(dBg^d zOtO#b)Z6)bu;AZ`w$Vx+shzR)jt}DULjlspx*w4>*;$W+Do4SElHOzxWPG99r|TYa zRTOF^PWKElnx>y0|7 z;?%$AY`lPZJdJw8cD_P;XHK~-{--nqq9}kAUGjK=5%GOhIgCbc0x+Vc#zWIdt%|!I z%8!`F`N8oPAo6wJkUjZE{>%jU>8e1vv!*Yg)?0HAi?cL%AQ0}Nc)l987;@Nu!H zO1b3geIoRgiu6j|=N=vv^7TOLl8zD_o1CO*L}8ivgVC%|ndZ7*@IbL1{U7|D*FWE( zyf2rkdJp(-lb9lD8pC_A+be=kZuk5(B*A?9%(_ znqH?RRb2=C*NzYE8;^LRr;=h$dBIwizM49t7ful4s$2^!39fr;>@RzgzYZeTGvbM? ztbcF64*|&wB}eF{;^Hx+S`3Emvh>Wrb*+DfP{2t`fftFvS!;KMm>RW~ zeBSf5lb3;pWuG1vpO^!|Ad#YXC<5TD3Psq0J_&grUF;HTA`A8F`eA0_Wag0+vpZ_{ zMPGGdtOmiBq0RK0O5$$)=TMOsc{0~DQ^|QfiWB*Jw@~L!Ny|JB9S4GG`^+~=g(m*c zu6T!C`eCw!0EsqBOrMI?>%5vb6(+nrp$c!c~W?r{lQG-wZr0@m51L zX;S=$njn*)d!Wxjab2atH~VNHOJYV5^Ne2($dWjw_gC=LA(Xk zdnSnc`NG=RcGHUAz!}D8n;qSl0^*F+k0{1kvQq>{IiI&LDV;+YsRshn9UU_96Vz-F zWxE5j*ox*vF`lGn5Y#&P-7s~vpqi2YLfdOL|xT!*xylMxxCo|GY~uuOL<;Tkmx!q5uVd&pX77C2={00ba^j_^khGD=I)5jq8=??6Bwkcd+5?Ihc=-`!8i>f<^ELv~PWk~nsSdxzRo_k}Ha41OALZ{I=xkXQJACBV=G-5*oRZUGj1W}AFkuG$kr!2SI8ih`u zOyC|KBR=JR-DAD{8a((~o`HTC3_I@UGw&nb9C81XeDPT0VGLPAURB-C8$7jN1a8Y6v$IWKb%`#R^Ts!I?|YZnHlZBMjKwpT~fQO>3xi=D7nldUl@yA}xCEdyTYx$JhbT;ki>z*=t0ak;z!So z@Ygi4!Bg!-CVkZ*WCFloF7l3PjOMe}`(ZHzYLg(}N|fZj1MEG+{O6=Lgl8^;gL;|S zPtA8Blhi8;A(_k++g#+a!I?zT7+15c2Qd}c>D`o<peFf|C5}u|kMy)=pvON1+=W5T420(QP?Y&YLjnor8LkmcKYuUk<%% zATLNreGk2>ABemQqot|7HLfTI(W0Ic zlDC}kr!5B4vRvS_4G1opC^7Lehr%Hukygyw)3(Eo%+>9aAt4O`ClVCBN$5|Pea;Ns znE*>LX_TPv4p86OmEIbF6EVCdaC>o#vx3yB(43wV#d zXkNGk*8>lLj{9o^BSU@jh1!DvECD`Va$l0|3rx=y>XFzp^olqWLpq`H{bSB;d)F!7 zGQ+St0}$=^b2!^#^|?Xvz~TeAvsesOZ5VTGrp^of`%B{Gfc^aP*O~T&T#h~e*5Bg< z*j9Qkn+4!0O+b;r(U+p8al(h98U^b&FwN3%n3WW%+Pao51lWlmS40&hb^eZj%GZ7C z!+hMfYlg=57cl%bLcU@shA1etrh@5`0_YLQjux;OKn+N(R*N#vp=esy`-%VovdUw9 z#OO@-1h;Edv|4>&3o5mFA^i!rP>}b=5u}XV+~5N`EVI^&09m?=pxaykufq_xvGY+b zv>!BVit`He<{G=sNIJHd5x$yXw`0ZaP2Fd`gMQcDgwjRC_(_n5vJVUjnhz71@o z8u1vbuNA{DP=TsscH!S2W_(x>Um96&`zjWJ7NJ~XMycdR2eJr`&YM$~5>Uy0EU%`M zQBZ#5IUbaV?qwi2|Gd%k@VXrCAOCTh?(!%8n=bxu6e2SU9j2QQ4gTkON2av4y5*1B z_twbIQ~~oC_#AoN!wMvz0p>rCn#?_L&$FTRjfR@P!|?~bnC#?mF@*r30(<(<-Mm?K zP2gFRrd!wsiEoT~q~C*BjEuWK1w*cKxH>ML`Q9@zXq!+;luDf6$}BVz^a3SGXojEd zVcORt8*jV&gd#ag^4`PxmS+$X{OT%!FtuX$)BWqBHS*KCp?je1e$0UQYr3lmXIQW0 ze&|}5bnTF943vr(L6lgad6hVPL!ii`ep%b+ol{U$Cm#a4(jmS`4_oecmqhR5hdsxY zq$tMl!V^tWd3vKj_2W^Q%@0_;L@G|eYbY_4CpE%E`R?&y=t!Jqf}|wEZag@@HNOC&x({;k;^hkVX zi_7+68Y0cv3)3c=r04vlDs_|4<08lTBWO(7^Df`uhWiPw8}CV9y--}#;X1)N9@d5Y z*1eF)&Q8@RXs_>aiquoIR{kYgM)GCx0)HG@7T$cDIQ8o>!%KJDVvbgyw}TCI|6DnU zZ!95#(*1?A=_bj5Vp;AiS0M>qD0Zl-d&RIxhWC?qi{l!`?%tGgb`997e^sGyB#cR_9}w^QKWYd5D*O&5EcH~+ksSuoF0(yl^i?^+ zP0%NJBekzrS9El73!5dB1I`2_hP#6Ke&s-KdOQS_BpmMjt!)HBVyjJr z0dYi3(oeJr0)*Nc=nuT$@>I2yLpX~(CWE&=n~qy<|WD8?5Z^Sz0GmkwOJHnO4^C{BnDyGSA@lNT$cdbKU4CT zXR1K@A*_1TBl5v-t|mSXB;iAnMoiI?>ol_s+LJKR$cACiG!`3Y5e+m`(M$|;-4F<} z?Gxdw4*6&$>s)6Gap@cGB&ApKRTzFa9PvK&LvlZdV~Kv?+@~TA>#?NhHa$O{$F$&n zpI2$`_fHBMa-?>x$ShauqjmYy8!~mG!zbUM-2~7|rdQY?syb}6V)kRj9jAm$wh3=Y z^&;(aC3?wz3>^)+xgvebC9=!h+4YqW@t|~@p|#Bb9VLp#oPGJ)eX_NyX@Q6Rw{siZ z5dWx%*H!+}e`k4ohkm({!HYi^!P3uH0T`c5H*~JLls7(w9bbbK!rTXLjQF{DW`IOt z#Gv4OKuXrj#zlGBxs*S%xv#^D=f%!s(>v8C!K?u9=Rr`3MEV?U==5v!>D9lrCPNUQ zVT2B&B7=+jHK1aMl^VhJPc+Mo*RVq%1q_=w;DDhM@=Vva+R8ll_v(;iM3*lwQ2;MD z5m@62T+@>`{N@%KxK<9-;y>9`B4* ze6~nOk-+-+6m&v#2x=yQC(~2_Pnx8y45L8Eb=8oqXY(0W__r>%yRq!8KVB;j43%d) ze&MQ@L|cr4%lz#oQwxu=pZQk^OcZ_jM$ylSo@Z5^cP7h(Cck;MJDgiE(3Z>vf;*ub zl6v?(UX7Ls9d=y@Yra6#IBF_PX+U5a6B^}&zui0_I2cL{=QR8*zyW?MNVr2*2FaV7 z)JlQPXNJ6g1lPpqAMYICMg13M1bukdrUfHL{{@2-Q6C|6rMDK3V4T6&FQlEi&_Nm} z7uz=NcF`L(jbZ@_JojaI980+NCzbY!Pi{*s*5Jr7?6ceh0V`acPEGD9!akCXzrMOJ zXjIZ|*ZDY)4Fd-v+3vsIS#stM@-Rz{IP4qb(Jsj}^#98X9StmWDS-s$mL)KDu76(f zUro3^L=Vd5W$c#Af3o!d-NxhZm#;oYF0NQd>+hc^>`{x{`tvu~WE{J1b$fr6D{pAwmK!=5Kyhv8xWo4C-Q^+2<(kn!C7a*{ zfZ9grZvc^kNLiYm2frQ~>{rgH92X#GL?W^=Cf74ApM~M1)^2%0?=IC%+M9!MRsQH5 z@O+HcGw_KaWdG91jn9(>QWF2WD*ve|x?ol#VDNcwK3gn#d{Cjm_%$&h=xhxS8dtg# z*yZ{C9|8Li2bfIDHy8sDKe8w#^H)_|ep=o#R6!a+bio)L*;=HB6Bb7)SUxIi|G};A zATP8hUGL>OAW`gYQA$=pN$-O&K|KFwmi)AS(}01A4e*)XxXGI}WknO*Fgk_%U%+Is zn(`y}BL6{J!ZkQtOSV<7M-LmlLn*aNOd7&_UnR8<{# zrLz#Z%qy!?3_Kj_Lc|E4SdkY1Ol4>I9T zmO_~nO=IN!S>8pgc%JJr9Y!$CASN=9fZogmC_EpbWKKQqf1AMf(vy!U-m-`A?P5`t zzj@fD(-RU*y7=4$9lW4oJ^67LTm^87>IvB3fVsDv*vN`gRV)K84V z9G3Ssv1Q20gL#D$&V}u+PbY;>>KDHXe5ZWB@iy9oi}Jr81E_%n_AgHJQ@1ujV?j=1 z&=+V%io`;))9S%u!F4eG^(}7sM^W{waphs3pBFphRU%W9&|1ENkvvnpf4f2hK>VO! zPI2A)@89?^a2^bo4tu(sp`RQ@j(#yVv#Q1jt-;(Yxc9_3d^!IrZaCK5$GG0PXV4xtTrA z9N7OAulV;ZNdMR8U~M;6a&^u_ndw9c;R%~AZfbzKLenz)=o4v1-S+&R2)0Gg_{zbF zXrbSMHR1ZOl8zMdu5!2>zZsS`4|>I5wcV>|i>)tehwYu`qr-xeFp(jCTY1>Y*z%%n z%?3rop1)KHolUSFY(xU@mJ;n4N>HPRxvp9QZ9#>WsQLiWHBew`f+N{en}`TRYPR#a zm-}2sm92`lHZv}9BOO4pDH4Jn0!lJacM&dv5_FbX3q7_O|7yfA?B6MN z)L{j9o$DLHj6fNepe0k7`4Q7jBh0~-m4}h5z%9#A&n$w+OT`b`u(0~}srM6!jNVgN zWH|(d$eAjMdk>TUc1{JR3imkl;J0*X&BSDheNZ#+N^{^5PU*%?jWz1`YWw~r*iuP8 zPqf#9VTQ%wN0g6PSc9axYo9;bJn2!w5pVUvkPGjmGi=s23?L2RzvbvAgjYoG3W<}f zAZX86voi^__&dHvz`muekG8<%}!1kE-Egj3WKAChI)F9ER`C; zjWWR{KLaVPkgi3k7J^R{%)4C6=atZ14|};X?cel242V{d)k3jad@MlR?5V-P;|OAQ zxX$7gxcV#7*Mt5Dw6sIT*;j$^?&XWp|E#kEH?e>ExH)tD^Jfo2llD5X6K@wtuyQSg zr^Pof9f0BV;=>k2w|^RAOeT_vos2Md;mHGoG!^ z?cRpl=C6BVc#0JLVJPWJ!p%Y|$B9<)jjh2E@-FGKCbyI5d{{+&>&qL7ZNqu^Mx{^@ zVZAH)XMgRo8%E_kWQ)FX@1753Zry7L-7ox*gD-H@EUG{b zO8D$5$&=slwnzm~z0mvdSP=4&R{(}>i>B5lx`%@csVaHdFq&dV+1Fjv-k5RCqX;4@Ys2mj)P|P(_u8E zU$jmTv1!&e0;*m_Q+EcvhF+*hpd)MBf-!|2N=O@$192yzCJ@cb>w{b8ke1d+iCO9K zq?yqkdmub!lcW2n6!sPG5iK-l+wRG370{5o4w4^rpUHHD;go3zqIH*i9H~}*M?tP~ z`dOgpZju#LqTY>4i{yWa#CJg^=B#=bD#{|1?kgW|7Kx*H07ZWN8}NzKEDVsh%M=NiOq_?qtvI*pD4@0-LZKa(XJ4R!>7OP8ZBup%8EXht>k@@vIq=mOME; z6s-Yq=ndX!A_6toTB>Dr2K2#ICL?xZ6{-=V0>jvlhmrJOke#6Nc{wqJrpVt85P{Aw zB3h_!Ho%2Tjrr;h(v`MKqIS>S0{dvcYk?P`Un=jb)83xLRdr~AuAWl7`aL)3d{Emf zi_ zZD13)e%>pP>0T0s_|k=FF6UR5x^G8gY}!4Rx@%nNu+ma=OP(IGxPU!(u0)``-zao* zpZT$|{xhPu`p7U0huyo0;~#YTVmAIl?d2|e+)ENy^6z8K>;A@x1CqB94>%hJX) zU2DEyiDY(h7MLXufpG$qTic(IN`E!>9o*vR4t9g8+X-Nt6xjrp2(%Kyr{TFE)%|hD zA_!4#q}JH)z6gaDxv+1(4CNi$8Xjrw9kl0m@P|I)Z&0!#xB0CJRCWbP9)%-x@Y0Vk zwn3u-0}Tui5+Wu>L4hd}Ax?{xRuegJA-NuMR}eobj+&GR(e~6~QEkK$e)!1>X99`- z&W7qb0&TkKb`Wl1bkNc0wWMwY`HSq$`DqEci2KXIPu6bskLV8FWshz4jvKqOnn%7a z>?j*srB!9HyX9v+s)SJNNW!X3xt7})vDk{o2#E|xW z(zfDIt?tQ3*<(uOXOC0ssxRgC4$z1>25f#pIEgcbPVzbU2xS)Sn;#YmVZVQ7=ch9X zdGMQysjDNi+PObMbFnQaVN^I4Q2F?G+ywVVd}MpLLByX@iT&d*g@J$o0}HezL+ObW zkJ^{GnE>M^ffewtkl)8$Fn<@3rZQ9J6p8k^<`+~O~;scCl4a5nr}T-fXI8dST}xqM^gAAP~RyMLy5 zJYcF883pKK-v{Txudiyd!%ugNwN>7_1>Nuf3t0WxI@VxV>;co_}qDn>0jU4-0Z5_`g=Tvj)lA+xP<|_=L|m=hU>DF^Ok? zp|Mz1){eG8uT`xZMcZ+$Qi)#mJu9V3mKX$B40R#8)v%`v1m{b{?$$*Ma%FyRAY( z3HGf*9Kk$Xo3k+Y$%94)VdLR9!F+M_Q#_&}cxLOv*!z|@6!J)6n|2B70;HQU>Q1osn zo<*pP6aDIy@Ohk@G9#7z$7c14>Fr~Jmp^SYFviu|oxS06b-Ll>zNh`-Bn^+wg33JCw>B48lq#Dxg5PE@UCtShh=xTSHKRRe1rv7cg7rP_=_ z`FKv7+d=Qahpd-mo7kLh;sv|WGk<{?yBdMVhyav{Yr9ZdYO0_vZQviRmQI7xgIKnx zAI2v5HsaE3^f1K@g;}MdqsbUfTtf#6qCcy+Vz=X1cO|?;;gQyurAq{$(Okv;c;2kf z5ZtTo4~dtE)sH%xjUoM7N*9*Y0`)1cz&&|l062WTiu=s=xgTKa$>R!SlHJxd<)<8{ zJFaG#tEwdK;C|e=X78}j;Xk)83*mcPS~T9ak|lLGyuJOyquoCmf>(?vCq006QSxn@ z)L7Cq7n;SzlbnfyaX>ZPUc~IHzg?2nk}GFQ-_=HUu-18}mlMpjmFLju6|9zFDbSsdY2Q&>b*iF|~>=6h=pc=Hr_0np3m0RWPigF;>Yadjfs+iKI%D zsp@I7Hgg``hzj6>+pRIY_$;Vm9Upxc88!{|!C=wOPRf#_Ru#D`E7@DLUX_fbq607x zljf?r6y9~Y*s`ZUGk#({cNX<|Q?wBM>&mIc=wQ;G{9;0BMkUO&5OeI2vvJup$ zelSlhV2mTGZj4hHgo+ZpjTFE?n!le|NpFwA4gLkcop2j{wom>LK?m(=c2QHv0H)k5 zCbmfYOz17Km{_`JA>gAETj(&;e0Wa~Xzs*VfwDNSF&iw5WMv$Y5Rd@e^e)3vb!$I2_OI9OzoDw}Yu{+KRGkZ_HSc5wQ~0PSM@ynH3@JuanM~Q- zBmoCuKRgH3sep6O?!il$776YQpV1;r+_a|SkVvs?{=pv9{|O z+C&tY6?6e!l*9K<2{P1-x~~@xa+7C&dY`dhNuyd=KE5MsoMy^Y#>8mjXF_H#_UMvZ zJBE_9O6is*z)SwNz96_TtfE0sqe9mm%F`KF3NsEj9>;X3mKbLjynnxEr`OFkZjHU# z?%nI4QQbcuLQ9wkLV6Y1Z+m+$bQ%+*v`UPjU#HnUetbf2t0y0CU6n1Yyq-8zw)`9s zpthtRo+<7q(JCTX)Wq7?g5`X@%?lQ~vAD_69 z2a~Wa_8sD0QmgAV7(RZclN2RCP33r~kIK+Wf>l14k-QLwJvI}O-H;xd=p$v1ZY8d6 zJ50zdp0-dG?G-HW2Y%pqvdcAmsM!xRBy`50q93GYt@YPn(gaH~d;Ek4>+qGC~mcb>rJteA1&DR?ok@R!CSShp7Vyxk#rzJv` zyODhm8R=!jPAu@cf}EC$aO`g2cxFWya!j=iI@(gKwp;%QYWcKYG=tCN{37^Lb>XNp z3XWQ|K5zgs13V4L0=Fku!oq>34?im<&*A@~rhl4If*wTQxM{skP3Z-cNDokk`VaWS z`LdhMTV4lY42@)(y#N4Kcp&la1?+^GnpG=gumMoW?O=Uh=z!D~9upR=D=ZO>swbBO z5md2jnM*$|HDUH_Tk)odjc`yo=!fzw`JMpFr4FTMNQv%zC3Rrbh%$Q8yXgPIhpt)P z4`JAt<5M~8r{u%)qAbTrn9phMO__l=!AdWgWZzzik}AuL^i?qX;zRNSdgE@irk{Z5 zeH;*FR;klejN#Vlk8a7lwb^R$M|e6hKjusY%jcj!H(=Z64S9#l@AWZt)Y#y^AQ4mn zLRA1T_>-kp)66+BAZ%-KrmvrY!EtXkaeNDAJs^;h)#)uRFk-hS5<)^sEwIi$B%cn; zB~zo3l5e6v>gGG<7S3|Cp6uY>pZj(#k29!*rVa@7)bT#(5bkQiaRY3Q`mHw;s$wbH z2pZ^w4E(@7KXF!}+$asAO>WHKtQu4Ly8b}3-VJOqz^2L#aQNd7Tg?;?ToUi?l~Q@_ z``NeP9ROpX1jEwSZ~z(Fe@(#*V!&XX9^9)z{aC#FCE${L(@pm|##nN^GHNrnWewY; zizE<(K`bEgb)e0=xo0ke09)qOFf7qEiRtNgu$@vJbTCr^%iG^kxHs+>#dk54&U><7we~ppRv@QNAxHZ2W)9%kGP!3S zeNmzCFFkApxv9&beL^wwyV9<#1Ac}#H>|kCMS9L0;u6=Cqu?jsF+bfkjFumb z;R!B5hgKaLio2&h<3!tcee(2EZ@MMN23L^DP&l&%2^P0wn7K7Sx_5SiBbXD=PjTmU zltsKBa1OPVuu|@-p45Z{N!@9Bja@`m{SW*!f>5oNK9ZR;s72qTjAMI@6zePFJ5guF z@eh-v(%m20g2%BzMTW=oZ>*3?wLyq%l9GJ~8R~)$&>!$vUn$YM_ah({5?eay0589r zyl&mRueAX$zf7c)gP;%i=;^LZ)^f2@C>dQqY7gZ!B()qGYc z@b=;D&VrV(VXCm(TFo#T9wh=lQBX1Ka>B@lEh4t`bc>?;-FkQV>;vbqM!3S2Ze_;T znKB8u8syx{XHjxcJVV1%xCu|kk3mgniZHk%)&_T)4`mkaM7C+i}-Idf*mx78^BHivvkm&_a-o)T1 zCa-{RF8i#LP~}G#Gng6g@4VXLEL1Iwc)MozAcFa*0}obDbC?mkVpxXrh}uGyv7&YA zA^mS8tr{I=aJGmP=aQ}{EXQzY@y^+N$LdRJ_MI&+2_v%B!7mC$Iy@I+t`vCTl@0p8 zyn^o|>aj8d{bZabWS6s8W8Jq66JRu!>&4LS($KyB=lP{zN{^>SKsG6p#s>m0H)#t> zJ7lFuL-)_FPo$dc-ag+cN4-J@?e@PYyge#b7l=p`J0=sOyu`^kwc~g4^cuI>NiN6o zmPc!y|6(hgp9vj?6?i}^A#3J)2<@5-J|?Y?PLz~=y3h*3GEk+0DH}K7YnF?W49MG9f6=S+ zdSptRiEZP$3}HwWq_+{?Ie65&+m;^~kDYgI{0*v9ih|ws0@d=Da!JsT6iOQqZl7o+ zQ|e$iawutPqz!g$^=|%mH2NoVE$w@M`$twy2F?@9R!GLjE`n@^xc^{GVw4dyu<~}K zOQg@mDV5@a?+<}J*}1EO^ucigPFP`6QeCSqvklEr8@eI~gmXda`aJi8iZ}Dr>iDS2 zkplr0o0S~m^ls~YO;*==9D0ohT&V>*vJ4Y?k-B#HRq0c8h>?5*+LNub6ws(96%;m$ zm)5a0-dO_hUk5O7@hH?H`}WYDc82{BHR8*6_gd#251P_Rqq$w&Ys5IoKwh>bCsC9jP7|#==JHDZ8JiUqcz3v*{TO`Xe`jFwzLkeoi zzM3!C?OpR+py-wiSc>*`We{XxW*!g5Zn`fP4FXY^zmQ+ksz`#zl2zfYL^V$j*!Y*iU99`zRwCNp1tky{&ny?nv2wO*gZQfFdf>OGVEfUmwM zP}G(%h5H{cAOQA#sI9!F$UrV-1PkoYO#NwGkO!iKDW-oe2~XW?qoWDm@9GZPXtp5q zw%NGx>9${z$A+ys*CI<;l!I`w5%AX1XOGLUg}?9C{80Fy&3dy7$6cS|qQD4}8cS8J z1zka>um97kI+J2aQe$R}Y2Is&;g|Zw&-H1!hZ5|s(p=f5G^6VZ7Rw5ymDS)SCb0TG zmo(R}1=Vy}>=>lLJNTdZp4fl@BC7SV37a=}x*g&4sD`{-ic{$LDG87_sPp}zey}h8 zZ?GQmEFZ7;h%mu8bBIAbD@o{K*n0-knFuUD9z18;VqccRFY&R_d@9W6hE2^bFRTsi zN&P?U1@9FmgptGSHJvG%EAeu)LWB`g6BtI#eF+=w3%m4ivmtqhu5{!xg*1{2t3N6^ zGACa;o*q+QI8QntqPsMaMQ5`w@%UoRLuiTnCJ&waW-Pf@j`x{5A{goZ*Wh;~fmw|= zO*6d)8(B!c4?OSPc0r!W=KW=C4IiJKeLdz%SRtcqMD~{N)iM>K7CGF>%I{1aYvUY8 zx{3C>vGB!sSb@M-i%p1mvzGZa$E*kjcrk;D3HEgv5g7kM&YI~kmGEhiodL*l5eTr5o)Jyt`}^FGasFY*T}npS|6uL|7|>mPR>_`Q)mL|a zCqbVFqU{h^^7WCvi+I1|ov8TkPjw=w`sF+w7{rZDHSo{dSTfvY#rM5L-PZI2E1i># z7MO#vPE(nI5bx0x6j;cAFNp}aq{pN)aJboM1XPqu3N{D@40IS<5D0{s#*F>vvZIU@W-|bG6dlFISFI# z6gTp(e-ARyqy3MM`nU19hWA_}2+5-cC^THQQSy-g+baJZmi_a4Tr6PUlj_TBYzJSOwv2vgAsM^MK z-<%UfGq%-c-@H_70ML#*RgYs*jk4mT!`tY-XhQGGF`>ZNbF>)?R1HMew4=Nwj5Os(NZ_E2Wl5X z{&FY5mLI5Un3)3$U4j~6Q>)Jvwg4~jrmeozCa-?{sDh+ywVyYy4hM4qhX50}eqw#a z>QJ7-+eD`DB*>fBHe7Asxzg`AcJJ421!Y_p30^W2L^I9uH{hJ()(F7{P;@LFlh;Q)sKo^H%bCYIwp` zO92v9(B0eVsZr5)YrT0*eFtxtW@ZU^rAdIP@IfUo318v4SJK597uT&h zT*-2Q+k+nubH1nUUY-jYY8L%T_91f}n@F7+jBIn0maG&IaT-iUkffsjztu+w6h$rK|M>)gQ`sQpX+m4;Gq5> zTW`;&F_Lz#;TbY64Fw{jm*{9r8 z0r1U5X>e``#xGpSDX=^q)Yph;Yv!fyrWD*SvA;9&iN+B3XHni zTF%8n?YgzEXr>Uo-tMI6=<}Q5)-nCtBL91y2S}B+8*#_z&SnQ+>E&YdLl4cM57wg` zMYN3j@T2d5;&VS#8np=)IGTg!6Q8ZM&3x^3XHITGZ~$WqK&C^!H%Sx!*q&%HxW6BC zDWCE_!jmw+zd%7S?IU2Ij{ENcu-AonnTqdeHR-essK->3|7JA?dUmgUJp;}Zm*v-h zcQQ;i`g@lqS2kPjC9Pbp{7pBGN^LXqo z7tzb+nq)Rvu70!I)K2{P=01MxItN*wf6J}#74M2W`_5^T@R=XAMnGmCSF(9phi6}E z;R-OvM$+%;C|!aaSsje1*fvVM(~u$S@z6qxF7rQN`Jc!92TI`Ft@X9nhU4zN^7V7k zDD3OGDGV&~Q7mHkW`(lE`jOsKH{21>&D^WEvBeJ&6x&F(fhq`<5+v^5uNOI$>(=eZ zEa{y-iF^J%X;(ip+=T#x|5Y>y5oc`&cA81_S~zq!*}EtRz2k9_VbOwXo;+CLx7N$E6K*gh`l=c=BsrRoWSi~a zq?h~U_0%MD(^roL-ZW}EQ~%Zi7}q?bWYFGK%jZ?-v-M%L<=0bdgpR~UL{RLWw5A(c z(Kz^?5E22Ms*UJM0lmud;ADEly`KI_H@OW)DN14-{4UBmciQ*CP_*5B8^m}t=4|_i zeGjjBp|Hi+^Cw*6%J)GhgM=T4TetV|k3QGGm5)8viqAsm`}MZOV?^}^u7BRKbdP?Si5b z0?zw9?8=JrxZ@L*1!@FE)Z%}(AMpYBBhinFxrGG8kX}`=I*gQG~GJ08|Vo1bIHHGWc)W=`k?k*)(+^?`k=$QLA7QiNq1tWdd zy%nhzOeT1>WM(>ZD7Ind_uX2S_>rPr6sYMZ!J}ML4ai%glU)DWcdWnPe5V4#k4N+diAISKrj7UhZ%>giOH2e5agX)I%vo&e>K7Bkk!2>7F)Lr}Fe1 zwRskO$0Nlw_W_SfQ&Z*{j+QXF8td+&tUC0e)=a7yNGB?H!jqP>JX=!KNNiGve15^t zylBVlrHK(P=(Yzkw5W(CpKtO~@oo{04LGv6sI`rJgSsF|i-d`8GG(+IvE(wD3(YoA zU^^Benk-3lvm#4U+KqB|q$D_s6EA2IISKIYS`n&+8Fn)1J$~d%x+lfLln*1mR0It~ zXc01H5`A$nENIYw;*Cd@<=W9~+ErpNN`4dV${xghm3mSpiTalAP;J~o&qyV>%z|hP z=J4q;4P8U1*v`(`IW^`7h=a9YGIp3b6xU?}UO}X~tF8TKaS=a-i2ZB@bI!De*cLsL zA5`q-aV2?{eaqb_SaqkX^G&(G@$0i44#}}ZgyYl(^STr9J-^Qw_fD-1_Y?C zU1eWt!cO!TDnESanFsQnaMm622t@;!@2l?0TnmzL>I0~q!tgZ$?~J+^X*tMZ60KQA1VnZsoq=xHo za>V?u>)w_0br2YItoOC|i~B-7+{TD%IW#{~oN?flr0Q7n=X}KGn`MlfAeU*!s#!)hz(yD* zhmOzz$xG|8lQ|-{}3}dx)4KMY3+;r6w{w9uX9SkphhxZ z;U_hSt{dCnok0&G;`O_$q466FiGe@xYO6dbUScnj$SUj0COH0(;^oxhc_%AiT71qE zxH-9L97X}!FIG~nW!P)m<0o3^{yGd&pBvzMZn&fgxEMeO+8$&2 z?~YNgvgVF`smC_O#cH{*lD^E}yS?I+O%EP|46T%!cj8Ot9SRRpEwN;$G)7b21R?LJ zMPEjFran*o`C*Yeu9Qn{EKR$+F2`Al@LY2>90-ur0P_DAW7htJIeCCu>e8+XOw8BE zIqw7+EKZ&9HC2|TI2uf{rzlpdoLG2Bto-9k!>93M(TlB$J^-DP+}h%Rdr>wRXWtGh zvPB%`B&s*QqGXhGD!w9<16b(7uvbPW=U-r zMk*Lq@4`yePz;^`Ef^M?dH|JBcfbSQkmC69B+?*2*a5CJF3#nP*c>fckIN?2nF`ON zS-qD!8Ix^i8g1GSTf}tT_>yVuCRp2M9?rUIi5iF}tl=mclXj~n$~4X^9J3HSf|0t# z1!XK-)ws&Fh!t&J!r{@^v&zb4B0noLEPG2ewsxF9AGNi7U=+_66LWExN^exjYW4s% z9L0kcb(!U4R?p)bl5gk~Je)Zo+K+<zW|Ix|MOkY-C;t>RAc+vev%qxZ_&R{KX zXUt4NOC2%m$093~F$=VjYDm>RXIy9Z%&u`~2Fcst(f%fgHt=C$kmOh^7@c9i3Z4Z- zUky-gz#ux0W-#DNI?H0k>o`jmkIjlUbo|U1EGuB4-P}}ub@>*(qmR@+z3y!Z@8T-$ zS+AqeYG5t@CPmHH5^+<&KLIy&HMq5qrU94=sU!sBTlTHrDsnNPte{%{fJX* z%Ja((@6Wj?rlNRtcXs{ym1rzyHRPoc)pBbi$60Gq5tl{e3&ZPd?~+?ODt%!AdSr)9Cyy{$?vh zMQuHV=;}-DbSRZy>NDMD2@3UB)-|aL8&FxcDS-8ip6PF=a!WIoA#-Bizcq-S$-thI z9gHkqEPa}6+XW0FMxBC~o8(f3hDDfcoY&Za=(?W@gk4!u99A#q3w#ZhWa){DpX)ZT zuC87T(K?bWRr=4<=*$~TT0t9k`JMDwY6U@mx0_N#vB*IcB1!M@_Mv({yh^l?fxz=> zylKdyscHjmBKGM+GiXUSn%PJYk2LSM3=%VSS}-G3(+Q_;R0)iWy&yRyCo;)jbGN%eY56Wd`@_k)FI7Ue7e}V9b}x? z?aWDixXI!w_N#wa-5)tecaE(wNDoDry0jJ_m~<%!{qo`!Dg zPF1(J(t|F8s@=M)^7MSFRbrcC&@%9R5V(87&g-a;;?MYaQS45slu4xezcF+R4QgJC zEoDRKAmGO@S@PsrQ={anJD0?2YdAO>AzzRoNhp_~RFlpG`zMkZqy-^y7HpM>?YXEU zPadURYx{rJoD8c_YuDsz&1w!rCN6GG<=Q5v>3dlPQmURQOH1j(ZftI_Nir&-V(!X9 z#Q}vh==LGPPM)@vdAf!!4Y6DV2!ijkg3vl$7&Q++K0gKlQE;2=DA&(#6JHuD+fb_G z^IlI8LMvsY%fHANnhKHDz>nXOTJLu0Ml{JH!~7vWc8wv9}D3+Dq;T zXe!)(_^fet9tLT?6eHt4s)w^&v)IGvL&BLbMIzNQfy0kV|9XLk&<)0<2NXZ70g8Lm zP1AL`m-KTV>UEi)!|RNwd9&oyO~MBZ+1nHv7_eVr64Ot7s9zXy@G<%6;Q)5{! zTOfA-MiMAVu1{QxXf`k*JwOL(n0 z_a1$h{W9Y=0VCWp>7%W-?wRzPOWI&V+Ax+3IKL+2x<{ms0+yh<_TDW)xq_>yoC-qK z3D4lP($#v2H*GfkXS@E9Kiv_}tNe*_`F`Cc<(d`mc{-e=)7J&xKVf}21O2Dx;DlZ- zes$Js66TOYoSEM!TqD;HI|3q)+f@wdZ$M5gn^pdz!h9^QEhEWU&nd~Z?&0(&M}B8s zUFs4gFCz|;!qaglkWr%TxkKQDp9|sJeqEZ}sFzW$e#lyyv*nr!qE{hO)YxsWx@jy; zpNqi|#-3E(^Stduesyyy9%AesmsTD`WuqnBD9ZQBUj@8UXvOg2^*CfCXSHKN1Ur3@ z->^(z$(pE#ehgDF=z5$;3jt^Y%0RX!Ky>QAOD$ZV8w`!+UxS1 z0gIuxZam?1oc)Tr{9T?DEJg{KbbM`|c#%xgA{R49%`B9pt5159m%_=Y)r-thZW}Qj zdm8e(VnO-a@GNC#RJVJjj9 z$#@6FvT7;+*If7Ub-}H>-iqP%YRDQYQsF{aMV{`lGZ{jM@;f6IRp$Dn`@=h#WnMVSz|f zX`74hbZKRwZz^yc6G;m9s_6PRZmf!<9Mw<}%702f|Fx+B(wS{vEQF^mT}@RaHI5|L zfqEC%YDBR%a@5V-N<=)^k5qGox}1Q!%n|sc7;XfET=tamexcBL!}obCKmbF zI{t+_3zrQxkP${UTU;wE%pzkT9?Jb3k z=ry_!RqEiA*&IsqszZJ$mwlLM@GiTaX*mtc%s+L|7k+67iAqu=3{EXxI+Z$95I?{~ zZlA$m@}cafvP4Ko;MWKOCHohnmvW?%QVY*|ci!29>+n;H@TOh;U!=HHxl%=ptOOce z7wcXvAvT-T_d824wq8}V!YsD)(h*3~^me^}lw_%dFMGuTQ+)3AzV%{kh0#)^7361h zg4{FW+|m7E18MZm_^hP4a@?qjf>9;nEImK5`mQ=n-^2bms?c*KjPR0*W2M&=dbioP z@-*u?#x-!3F`(6Fkh#Yt-(jyh-TU87DUWcev7yD^mNGSVLuhhqnB(@e;oS-$NEea2iz&^~@;h#U5e_>5%^mOi{6rmIr;W1vH`Em(=H{)eN+!5RAQ~uu2^oMR(|* z&UulR^CcDj|6&N-kZPqYvDTN1s;I)A*NvCk}G6C_}yLq|lQ}KHMsNTx{ zZxhU+Yo%5cI)4ulizb%j_4dEDV23xG5hI<~kI{DwoxgP|0kB8^bM?|nroiPKPi!d0 z*dYz={)MnVGFXMN8&YWbSc<>3>1I^4;Y}kOW)IErt|SBvxKuvzxYX)iOJ66NQu_B= z6~3tl!BL2FT;Cx3CMLojGvbG8Y`uXh*5PE2_325`V)QKdxW}kPs$>G~186k?2g!t+ zyo|f;xQSMy14T?CHcVt_R*|{C%*i#2G_~x>hmX+OLdnN@(1$e0Sn1Xd4eJHS$L4MB zGD8*WyC`V!n6mf!G692@fh878u1TSa&OUpKWF@Jq%|J|gi4%4jO6Tl6q_g#L^Uqu{ z8{rBZ{7)DDn%c6MD2vy&;|sB7r`=X0b_z2!gWZcAuerh&8|_%AAqmNyl|-(cf%Uqh zss#gm{<%%}9nMk*Taibu=fYb41dy66TL zC?Ihz8r~%aFfQSXyBO$$=f$A&Sa8dbcQ&dOvmXY!@J;S_<&q&K0oKgZzJVyA$q_nT z#iIXgoRDEB*|nnoy&t!y83q>1loq6RgU`d=W6e{GyBBE8Ntn}FwS?uSE}}vsG4ET$ zJno|6`&jWr{u!?`i!|dkTBNTzs-FB5)!3HODe%tVS{QBZ<>lpS>e={pi;#TGb695K zeXOUXw-|I)0DnD?{efF$&+6^KTxcVnZUM^R=9SDjUXk9I#GQFyJRN&U3?7gJs{*4% zn`qBU;-1V1SeCNCNJ{ibk#zO+iOh{3U5lJb9!Aa1Ic3p$QQEeoXQw3eDOe{p4%*Pf z%D^L@R*h4a9%mMC=h0>;H2Lptd{M=M8(kKrJf?%6EU6@2U-lh?3Wi%93O(josV!Qc zSrq2>ej(T8^T!%W^pGX*@KWt6t|HhZwyc|Cn{lDACCw_ePh|YRkWP~hVhQ}TS=~gV z`KmimQ=U5OJLzH$ouPv^HEDHRuR6$B6+5PvBQS zsXva%cs`_<4ScMTDjC`bspvpQOCLS78hzQc^ej04-~Iqg)Up0ZgD^{iV5Yl&O1eF<-wuH!&3&o9 zs{5z3cFz8M-$}>&4HN`Kh2FUkU-5?;e+Y5pf8~P>$w&=Z49~d%1Ts$b5$v(p^R{Gh zviDlVJ;8rV?n-Dp|2GZ}bPWT3(nn=#BM%Z)IfdRD`xrOx0>yx@-umgpA@w3)MjbnBxXHGs?z`8?fh5OnhH#}Xk9ek2gdDuHQWhJb?3nY zXBSJpO>OnQwuv)7e}#89piA09B4TSv9mL&^1~xTY-?3k?(}w|&RgwLU%q1*bh6}|g z*IWE+$mp2ANom$FII`mI`cjt8W;?4U_~^oH=kCR*#T)CWB#rG$SknxMD?zAX|lwCu>4D0?#vy+qea=JC9f%)?Qclg(B-0fx*2+5*xlYN z0Q#%z-=i;hzTOS7>5o3Jx_e}4r{Am_&SXhl{e0SIT`* z;zRP$J@w)0xlx!0To;hUP{5Jt;1JCl>kyuU<~W_Kkjo0OqGy5Hz?rPQ6W4rz?$-LR z5L>&A1eL+{N2E9&?hq1FC2^4hIu5k_!D_%^ed9gxF8Imd4LdzoF?jOL{4-$BX6hb~ zWwJY2if`5Z6~73p)A26wt4eMv7oQm~~^JN_OBA~)H-d$%nwm|&ix437z!bn20)hK&Aa(bLmrMFq~R z>3K&Nz&2O)vkK;Wb6Vh3UaV}}q8($%tH3HO|C96kOEUj;SvPlp*a{!tBh#_S6N>On zj-qS5m(^|V0FZzl`b%PGk%|-?Yy0y|C(pzI^N9uRHu>|6JLYj3I6f^K`D06=)S7XC zxLAchg;Ve%WPkdx_nB+>B;g@2qTkec_k_9QzEgHo)%dplD^ht!`5=_{l|#tyG*XGE zj)w+9?why82)B8DBGgbeKH|NnE59mq%dxO(qwsNPw{U1AgYRJ_Tb(&ZRcGxuOjBY{ zTk*@zuCgSh3rW(hAS?wo*S!8-H zgOJJfI~$>Y#ldAfKWD3c+hWN3ve=7UYF z2q~$;OxjE)>4dW3GO}|5LZ3J2zv%oKU~lJvrDcG)H-lYQX_X+mV^_b%qXSX(Qt~_& zZo-e&Fa>q`OGl~HfGA&+%`fF4(v`KBXiMe56h=f-*3J@DO0swNb;C~Kkb%dxqW61K zaN2c0^0;Eh_h)_oicUc&&hf0YsSNjR`H1=JW6_V|6^LJNGE{iKv~%{apYlGlQMn(^ zG4tNSKdy;^{Mp^sn(*T|>*mz{z<9gh)jCLz8$5>wl8xJ0h0?3?kS=uKma{7SV-~avf_eo{KWWK)S3Fo(KPqS_`7ID74ns}|^ zkMVJ#eRZ6vLB#^ZT?*Xf8#h+bn!K^V&K()Sb8oM#qWh|AVSE2X2n)I?!oV(nc_%y4Iq=(J(CPg{v6DX^ zK)luKn)7tQ>Tz#}wLZk75f_kJ`dP5!hfAj}YY2YI+nru>9j^XesxA}^Iz#3f1y?|8CN$2hg&L?yb<&E$;Gc$br$;e#GH(X3&Gbl{+0a? zs2+#7LbZhHyui;{c@xq;1;tegMjJ~23!6V0xZ)id2?4r4o%^ST(7k1tC8x@Bbcn5x z6YW&U5zh{?PrxMaB7AlN#EqI#SRmCGb;(tN(Q{&}P}|n!-Juw%3+0F*1j?!%lsTEn zr#Y4|`uiLCHm}-QXyQ$MBX#@ z?v!j`tD5I zKB@A$rq!`zjW|%&X9$|<+7YcB3R3L9z>)&)n5zO7Yd=z?J3#a-IJ?g)=|Pq=qrXiT z1x-#<;`IDMULFl^_*`He3uq0ff$)*^{u)F14_zYW>9>Y*m1*UOLJ^bZRsUrXaYxdd z)U=))e5%()-~rKCM_2g6!M9W z>_3_b6ZEb6+YzYcP*+#oePw(hHLp6gX#4M1@+qD*Hye-;uzq4s|CCsaZ=M*v;j%`K zi~>&^N|AWX@s(oD6)a*~{o*C`k0UQ~2tNA~xW9B5JaQ@bt?l~6^b;0YBY>kPG~%S` z`zTsQrN{OH7F!Z}nwvr8e6ZSSG{;}f;ft!w61nNgD(1-%bqdPKK!%N7gj!%%1DQO@ z7gR{5`Pk1dZ!QZX-w->n$SU*fd!3Ls&+?blk_5UMRX4jyTPc^+51DRm>REZN0EqbH z?e)nAso{9yA!`dCm$d0bi4nC?B|a`XxLnqhZ}Zw<1h-ghRoG2JRZ+^`+|AjCJKqT7 zf&JTgwn06v0a!k2AN|(+!-q??s-zo2=q^;SE<{~O_%(Ac|IWp|K`<_etzk$-^rQXM zfP=g|l>T5jlYy`MsyL5wchtT*dV)h?&(%rsiF<)hP7f7b zrQD3V-~?Y|b1%_LY8C4EO+#p4nYk|s$+WB45$Rgn_3zQjwAC_+@+FD99!vHg8o${m zn$=VYeDG`PTtl%vmbjYO2W(x+P-_&CL}e^FlN_o=j#t6l_Y?E-2YL|Ag0Cpk z(}CaM-d|CaJO{oS`<Px`}UckLv0~)+MChU7UStZ)Kud`KH{PlkB(MZIL z4!3PTN?`+E!G^@8Yv`#VxbI#?!|-qy;6}G5(ws1i^^5RieNV>w7dYNWpPqv7q=omG zt2jq8k6cny0b$MA?m}og$qy8`Vq5F({fZ5bOo@{lnE$0G4^h3S8p!fYpvR&nbPVF0 z_sRc_f5=pDDkIGd)JmlKqC^Jv?UXtmCahKlX!;N-A^4nEQ{$S;u&8$QfsY0@>`wSH zH8ke4DSI=D@_o!fskRew*BAZ|tweA-qNHu9X*>8ISFK&cZ1dy;XYY!(rlyR~uq{T9 zgZ^!4!B$hKVwtj{5%7yH9x}23uEGxlEk^FH?S)Via&igoXDeJI_-^1&$ z5_tQ=+2-bmC3NRKPaLRZeClunXCK>N@>9S>(RT{VrBS6@}5$Z zotx~H*W6w>YwYvzrCvbd#lHV6cqEaL*-zlHR@c0xMc^oSeYEFsL9a@t!*1+ET?qS! z$5T1I!}E$nne6INMyY>(7_U2uz&z4@rfl99Y$S_Wv9v0|@EW=05fh7d}{sjuGMO1D)B8@=x!##0m|sHb6L53`Z2!@Ix&DYY%k|0kY%wlasN#bqoYPfgYz1P;wCQ;$ ze2~pPs8=fZl3j=x>F(RiR51*{sw(%kH}f(zKwG4(9?@QNQQUzU5d%e5ynaD?x$hGsHTZ&Yh8c2?pQcO;QL5Jmq9@s^qZw*^ehSQz zk(NleW>kpmrY9aZ<=+Bs8BDIFC@{1TYE;LHsqRzO)zFWNC71t>91yLi9ad%^{@PZ_ z?C*F|kWgU~|J1Q7;Xb)}9Pwm1S;BQ?^%>*-m!Y41nNWKYCE_nyOOd1O0k3cM$Uf?D zuQ5s#zUTvq>+$G;*nPbGoIT0Om<8jwxYLoed;WfyOFNQ;omm*}la<)5bpQ-_nlJDm zuJ06d?v>V7{WkSMaKaUPH{@AuruvcVyUo@@452_f7};w{dkpHr@Djop zAJC9(a~(0YB|D}yQHR!4>&_(L&{b&-V=~rAcwC)#@~==l;U07)!~RR)y66*&CQEyi z3q#uqt2~La=R_fKBrmGH*Xxb&^Q5M-SdHT5M5?VuV!}^ceW+^SCms7i)LUrf4Rwfc zp-sqP3sbiqJB_8{=UxUGJNNSrOAF@^P~z3X9vXalbApANO|FtUW17@!G1|J ze5>k!vyk#qV)ZMq=_eWOh%+7H<$YHrDe8EK6OFh=QMa+IgOve_+1!!8Edh3+e+*V~ zYaXI>1A(CT5{iZtcHkIy166G5QrAVf?N0*kohRZ~7wR8-=}F_{xm%F7oph`B!XA$3 zQXsR8Xwhdrjnwmj_;1V|w^;-ANeASK8pBJe3Ey~=Quaq&(e+A`Tq)4Bh5-RRM=EOp zR1c;ZgKDWo#-m4{5jHwqm{mp zam-CIC_Jj=V^$&?FY+2dZH%Muq?fj(?e~=Yx!E4|{wT4c-|zur0cI$o>}6KGSxa)Z zu;H^2zd4h6(#y6u9vta7%6_}~83YEPs9+Yi^bUol`# zHU&rJz3~zqx^%TxIOD7&6A)j-@}X7HbzJa2m|ih|i|UNtrsLRo%Vmwx%(!9G1NR1^oUU&49xPrj_|zI|3(jqIzA2(bGhmj9>SHCgj3PF8+u8$<(y0)SCGX&~-(n@9*ytB+sqNP=Sj4f1!~p&1==XwQ5kwc(+C76$(}qt5 zc1DS4(&um|fqxXi%@Seef=_j!YwkNu2X{^H<|}SGFL! z!iims8>^z{>l7~)2hA23OFid{uw z3Mg9Z@dms-TwR(2ZmDw|I5tD9)~YSUet1NbOSCw?pa-^SEs1nXS#Wj z764cRcdO?P_wyJ6ALoeqd={8Lu&FVySr2vSXvLI6t9+OUaE%@RobW~EV_ge8tcyr| zCwmkE-Se+Ji=gMC`BDR879(jA_Vaw*DRmHh_A@RL?&sio>b{=*iJmj6MF76X%T~EC zjU*Q7lqA5>bPcxv`QK%1xBVFG6SX-0+W$C-)=fN#+vY}^@-t@YZR_?&94d%5u zRm|;zQV}&Os2_@OJQyI>SS6xkp8j-1)$dlCk!bnLqc^!3SIdkD^bC_Fj=m6>)NqB10g~unFg-cDwtrp7}h~sY%`Xi~&I_JV#If$^O+`v5biB zaYuOl*Lsp&M=_fTru&m{u?!>Gr-|!5m))O&yM8~`_LfdN3gfgax}RORyKaL_Hat#2 znFd>*epx^&qY7S*)W~sf-(N>xW`$n37aifpYRRyS`vO`HhT|XK<$tSFd4hu(2JhT= z>G6)^<&PT(a^l=~v;A8&JN`AE+dD#fFeRC4cM75Wc+LbPOY(f{Ut zA~96yE|2kzSG<#c@BVR0&P*)r=Yb_PExU!q^{Vbdj|JU(AM7lbvaYHe(`>@F$&GC9 zqjPd97=J0Lk-$|ZF+;>nk_ceO(h{`JU5IT8(_(_~ z)FzL@M*)6K7pd>5ZF?yK-=$p`7X^j%w6x!;9&vi$at~$q>Dl|XnZ>3aa&_zPehJ0> zcG=>zi~A%>fCOh{hzQd(c#a(o(@S<9$Hky7qfgoJlW`;_Y!0%p_e*Z1PdJX(GgMJ8 zgMW(1u0`0t?qqzS3=?KJD6?uw zowWQoG=RxlD$NCsqWPQEIEfi$s+~#s;gW%zU=u;|hNYJa<~Bz&i@4f@VT+@7xn7tzHBoQ>PSpEXd)OHv2X$%te2ly-(yn*ho{al`(Fqh`gC;Y7$Nbq!(Df-Q zin7EjuNDsI_kI+$es$rF8c#Of5;CNNtEwWv)&!fcPp#nN|16z`3sxTdq=oQ2t88O0 zOL`_wCWh5;LVDT?t|IIAz)KY(bO9}0wMy=bRN|=6eV;}z=j&NlynFA+cwH!OLS=)Q z9rq8ZQqKGo1sl2W!BS)U19RV3eC^4#m4~#s6Jf?#TEtU1hf}c3a2M;!aTI!f{Q1e$ zLA*a5UlsV{;vM$-APLY46~jy|%QQl|-2J_UNMM;ln<7?bzCDMzz`Hs4ubZ{3Ez#?P zpsND{qc5|2)W%?dd0CO_nmiDG|tS{G)lfZe65q*xk}+(@$%;6 zuw^u5V&ViCBuNq=v@=bGe#sZB#~f!gqt~Vdr&_3-;`IEs>DY=95kC;PCrVjM>ARk; zH+zp;a=!^@9+6}7m^b=|3@be{fU9J&(IioUV?t+=Duz@?m%eq7e2>dx z;f}5Lg3FV-UxyMHEykv^cpfm(@IT>ZO zD+4P*vDm^y-7Yoe{{b~D2p20f9NF>hC7fmr^jbG$c^U(p5OgVEaMKnnCo4-C$RC!O zp}e~9E)+ukj43fAkwvQOY9rWYx{HEwt!}zMk?5EzVd>EwG4TI{vTh+sv6CNuo2c0S z6ClxL?)>Alf1c5x%1m6DUwS}%5CNBpN2U;X26I2)36E3Jr_qM^I`WNTW1zxF5!``p zb3|KlktPSDT;al^Nz%fuO&ovYlC9Hh#UW<0r;O*xexnl>ZXW`Rg_h1^a{8fqlL;Gt zRTstb->?raeJ}6kqNs3UEdRr)IVUR3JK5aCQL_I1#hGqwle}_;xIl$B2U~iTx!g zFj*#9h_%bw?=b-*DWr3*pVvM!I~$2|o=boe2C#F7=vT3VT5 z**FPW#eA0|Ydx0MNKS(J35PTp%n<*c%(%`07-&z_{ULe&D77ek%vN7=z1JEXLc@aPK40^j>P4OkdPif+$9V5ksQU=xq_H1 zZ0tg%{SJ(;E%C$_)*+)pDdzZKD-^|>6Qu@QB5G&wjNQv2?e z#i23rcZzMKZP&+H1qJ_xt>>{(CxcIGEb%n#7l?jmcWz9$ND+onYV72^ zUbr3RBw_ZrqmeI2Kz4~rzQXce+a(_NS=!K1LA%~eNz?GailF?ZE$0StE(H!@n2AE> z$jc7~p(Wemc_}oN(0%(}v=`MlreT>`q5rFWIQ6gFUu(^WVUVQT#F(2#v6&Vqgf2@K5en>Sw+TVk>ls|?S`bJ zP)yj$3sRMji5#Q1@-@H|u?v0L5)A=T>>u=)M6dJh{u+OB|K6+$5V!a7X1*2HFWjcV z>wC4R*oeNI`|H!|dU!)`dbJ4Sxd#dDCnNa2?s+rj0vn8<#RJTRAG;v^-{|AIGnYJ_7lE-x%>E!>Sh|Xn4DWGgYSh8q0Rqig z`QI&st)iZkBlLJ}S@-?b&D6yZH9g3G5k*3=?C6d}EPUu(A_qfs707m^3Y-j)P`9Yy zE$WdvPQH7RVPCOQ{!hI^oRsAsLl{M27tcq10OEt!rd*dt>bkU7uLPEdfEXz+Q#ZOFSPj1Q#}dhgaEGS1Q*a~GwfN72u5NaFjq2N%XY1gAZg;Xpmi7b+sOjIDP={`;z@R- zr<@c{ZAR_Ivxt!Cp@dQLB^ce_5oo4K!}!DI(Nh{HC4W%M{NH}NwR~#a5c-Bx78fz_jLd9z)xD)x^L4Q{I!LyKfM@pVilKlRo|Fi96fHVUXPJ|70;IZofzMU#;N$$sWW+-FK+ zaO}9K2xP|@Wk~!1ZTu-^dx+xghgfnq$1#>-1X7`<)-w)%6;UL2@vydluPL6EWrCu+ zbB<^RfzvZ(GVza$Q%4CGgKVNj4B1MF!(is^W8jQ`G!u^XtmHl;BTOB#@sH-+W+&zj z9knDowrgF&Q9c8~0Wl_QOZ2xE>A6cm?b->kWl9+|?Tc%8a$Iy8^!hG@y`ty2`KxyO zY$~m1-fl=<8Ai3lHP~$Yh%V{-k%wwiC3Z!zgZ-Tt9?!S+qzsV-$D2>OfnlU?Q!pM zlH|&UD=nbwQQJE?O0``R@6jI?g0JURXtAWNo`$M}x>zSkDgIYGm11oL4uh--5iVpjBf;oDNPExHc}AIHIt zM5vZSt9;bMUZU&RF|^0nG7!y<<0rTl82w4wjutU$!oW_-DKoV?v7`I$pspb@D&>w6 zOz6cW9~`2+IE2`qQKZ(|_LE!ewSQdCMH-=hBf{rDJWT6K@N#*Xqm#9I2YAWUZQIGR zyrIe!q57&>M!n5jz!|H8=h$23hvCIRSw&VAj{R&B*kV9s~X$0N@{+TSX55(kXncg zDtevMtNAZlkX8vy9T9bs`!enh%~$nE>xf+Odvr^zc#kN3GOnfY-`*yiB_qQ|->!|i zIM7WuFt`;$y)Z^&*Co*VrLesA#Z<6XeTz2bjidE!&;>6QJ-*aLMriP9VCX39=|DB! zqL0;|()=cB|FZC86bmtiOp_RTeY5X3p9;o+Nr4%^&`A^KRZUDh;DzJTM1neENzFT^)md{Q6Gphw#2z+Y9S| zWA2{_prk+EZ#m2Ded6oDO4c3D^2jF!g6f;ZT0#3flc4xsFaE{fO09SG-MBKr7Ugz@ za5y4sL>#zM(S5uwv`?tH-n4h1=iY3?=VFWR)QIvXlF@SWXsoF<48~I|*`lAa;l^PS zC@4kKQe`ayNn~3_NtZLv&&`QGpnRTdulSxOd&jMo;IwV)%JDuNwyjzQ(~2<1GIVED z52>lCwr6JL_g2o>qEX#-uK4m$;`4^7Wqb+zUk^UJN6R66=v1Eq?c#L>q-4=LBFL{v zxf-ToWJ(@PITM94XoWX98PcL#n^*3pw1XIoOa@}__D_X?88$`W(wAn}kbn!L@){Zy zM&oz)3O9=M^Y2-Lh~e~G5?&cusM?m_W-=xI1=n=^a=wBO z>m;vF_FIN_N|vIMpq#q3@5L8hn~LTH;|@FB?_&paj7aq<>8oUDPNZugh$s;uST}Qzh_L83vv8GK3Cd_YI)~q$np$ZyVqVuQ60|k)g~@0|VBLebqt)W1VfALxB-na^*OH)hcFjm3RmN!hyMt z`nCW$y&eLN1sl|!FAuEIiAo}fFcz}<&%l-fB(G3}H=UF|#sAE2FG&Q96}iQjOZ7@% zSxVp~aa=@Y@6m|1?zUs(yk9r zj>@&DqXFzF3oDo9*y#Si<+Q$I{rJSs2PiE3)35qHn8p%}eFP&z`8?Jfo|2A^V;h^_ZRquIyEuk- z5zo7OajSV|jZl3vHJUMYR(u>@n)8)hR|(+I(kM*IC5~bkNB}<_(OdBJJ&tC3Un><| z8k<}`RLYnB79f3Egj4q;Om|$GO(V90b$SLsH(+hx^hB$N+TX8=Z|rvG_&*BXD}{fZ z76eGi=kw2KX9X~|;u@mNtnoILB^`h)<~$H#7n!8dA8O}{cPV3FN(bFq7Y`e)KQftt zDQd;%bo!5QM0TNqkDLQfYWzBwnjw$2Fe6+PxZj}@gl=4jo6ai?jvmPM*FTYWH%=i_ zw13YYU={oz9EVBah}i#F*uUi1mAXbIeyO$lq8Iw=#Hg`}8%pTT*(aWRY-HRM zcfnTe!I+S;KoJ*QrRYTZpGVW@d#pP4V-AW=tH~{&QqCu*ud=-iuUhbG znc%w}|4}(~D;+g74f3P3^LjCD-Hyv|4?c!J2&%<6wBLal$FYuYPR8#`{+Qif`ciVN0-Qm&Kk62Exk=^~Z7|^yl$GMjoT*`hT zE29Uw{(j0&HZc#{-SHR3OiZl~?q4XJb*zI#5&8|YkM3k`c$(}C+@Y3>%;w^7p@WSPQbG;d?;^0zkeuhux3vPHM%d*c1XZbl36?e z%hyP>jyTEUD`W-aK=x1tM9q4;s0$~}TL>r8)!yUP0t?)Bi@lqNW6tsg$Rap;uGWc* z8MWM?Wyom#GElMQ6D4tv@zNHM_yh0J>Lt{*C0Y_QCu|}Xnh^MFr3&P3ETls67P??$ zXt5vaxvQzhCKQ9Cha)Hoy&_4-C)p~Js~`%i!Jm=J7%UFdBRqN1j&Y+c6r-64Bd^HT z2@VxXf|>hc1a1pu0jFScZr@|wvhUP3Nazzt7hmQg-_`3Bho4;T*c;@@ppRdN{Y$Bg z5_HX!K~0KYbJx3NUchbxjUg$L1Pm}Ro~|vl;ZrwLVgv8yyRmCZ)p5q!|79OqW}1qLb6luHv*s6DJ(T znz55mBh2%z&cN~{>rQulqJX*0E8=vUIB}|tlY04L@0y$KW&@(%)Td7K0)=x!H`zF{ zCdEcllUa;_8ot>rK{Qi)Lz@C(Lj3r$)JHF%_Cx(sn9EyI!Z3l}Wi2p0gg3nDk9f_K zPH)%ec)}{M@~Zw^kOU0EhOER>b@SBry{5XgaZ&6#HtMeP@e>V!FVzj@-od4Q$ePe> z*u}SNuVL%d5Esx)81*VHef%+6jl!;O69&IEh|m=gj) zszHIGA*X#%a+ikaI8}~$AYSLgLYA7UR@bMh1JjW`37fNGWE5kcUds) zPNdf0!5Rf3b3?+UqyYCxpSE_#vwYHhuodq^XTVEIjxZu*Ru??ZB&mUI35C+z$5}U= z2gR~0l^5SpfE2m80fby15*6GuiwXthclz*j|=yX0Be)a3+R_TU zZ10P1f6R``3;!8jQS3vHuVm(RQ18Uj0pxY^XkYw7R9??&aP3X*DW#(>eok0^M)v~^ zreS7ogGUu&+jbuS5N(m5L9 z`|VPSqACK8iI?!sx+ks*Ty6|MF09-Dg(14BB#UxrwcpQDt!`M3{s zKGwB*d;vAoOWyJoz=k)QQL!2}QTkPJhM;_uac}yvqDy|(g0G=LEMTCaLq770_n@1RkferbvvZ0E7>G~aH#3VTLg zk~A}4E;Lkl6b<9p2$_`c(W`IC<3y~WP53)es0Hn+)n2!yg;Bg8iA_-Xh+6R#dand@ zyM1UY06Uj%OS>jaVe3Cf;p*{u%1`=i`FNM?LYEo_|}V5rx+))Ef> zl`yDs4-8$HFqh-BHKPz>5iQk*MEuK$P3*)>?5#SgUL8KN!No-@!|TB&lRuJJ9_ur$ zw!AoCZ|os+e8nK?$vW~q22`u`C@L9@CiFhM*S4YvyS#}L>JK`aSFke2 z4_`bbRjbu}RBCaII9I0Gbn-zVXge8u(qmRrY|6Cjoa+T0zciyAxOv0y5EO%Kzi~=c zE6hZ2ldWUT?_1ChzS{0%9+48>MbVcC%tr1IayP0#D14FNz$w5%;MNL*z8)T;*?d5j zrYsA>_eLFl48L@S=7DM_y_&rw2&z!W?|Pn6!#StDc(nGJp;9;DfU^?vYexD$QG{6amSM{u_CReXVIyZ(wDgC&&oHim*QRN zPFffu!X>Rz{jVK{cKx1T8by-Ysj&OmlZgY#@RoF}cdkG}(K9kmIG2Lq&^L{{<;WWy z_uh#}^#Lf|BdRj_hwujg;V)3bK^w3a$ zRkHN_?%pm3GW2u8*0^i??-rrITw^gyeD3n{hV*lBgawK#(|+BNx}VMMN#D~Hsm91c?sH&jZGySTOy!=#^&LPIp8Evu{%C@ElmvfAsv{H+Zk4X+Y_&BP z&8{W|)8qL_n6b!GrlnzHhRGiX*xuZC@oWRe3j+9rPaXTBmyft$b{?v0g%Fzm7E3Jq zTROl9-3~En61lMs#7+#~E20q*o^sWrrk zpWG)@q&16|CCoggEnfD1_kk_C1l4}biB}PxC{{f5+#DOr#rr8H&B)>gmoHKnERDAGA6Azl>guYdC;Lv(~5ZY8rLO5a;Y47Sg&<;B|$*xzS- zpGX)C=`hIF*_LvL|FSE@>|T}T`qJ#(zYZ!A8GD5&Hgx;cAKqW+L8ro*_s_8p2%S={ z!w*Lteu{Cp^;S2ynpfmPu4@25beEa2q1!ELm3s~2;GpqKz*j&mti=DSXX(M&i)od4 zo>vW|rD*=G*p{f*;b#)Jgta>g<}?# zyY@aWd`)s{Edhs5*Y^$JK$wtXLs?v8O`r>uH+3zB*y1(MPe97 z(DGK#K)iF`UOTp|@J?^W1@R_!T%Q!lY*#6PKQ@K~w)h9qE>xJeUYv_YDO)!9yv4HWD_!xBZ2h!9H>97rlo~Xp+(IGablz2JNg)RbxxMPy~=N@N&PZ z`WAXUF^0}td)-YpMyZ82k(=SH@~Y;baOB{uuJu;<&yC!in?H8x*Y@;^y%k-7do!4| zKKF>R&LW+w8tH(STQK;D4=kH@$|2^A8JRm%6D(s7JZVUwVMiSc2C;?;~ z1UTmC`_IC7pa=pP1He~)1B(dN(8}m_bf#sM$@^ql7u&9s|9himGz2y1w^5R;O#by+ znXY>%ku(#IlOFi0fiJwx;^WARS2w4%Ju2~eb)?`Wr?kNW>Fkm(1em{6q;hHC0MUN% zYP+xGl>G9`|MOfI_@`iu7nr?j#~tt%fmibXTNq?qA1n!YCCCuj+~a5~G4KNSfvAIE zi4~Um8l<2=2=aBF;}+anjLWb8*Vi6@x!TaNw43kmn*^VfKy;G2BfV+^y5&KM+D}p} z@iw4wSQ`7fzSkADbzXkuAR-8tEUSzL5zQ zM-btfosW*8h)${th?&?bJlnNC1i4=cTD?oOjkNPcg}WsmQ*cJhN=yNA&Ir?&QL9q{$o+2Q?HDVg8OZ-qSlq1<7dcPwrv#FO1M?(qiKSJqK-6H6Ed&8f* z@o}@cH!EAyf{aU)tOEMX$HG_d5g!}vrP3c%P4 zlR{yYx=cz?iDM{NFnTPPXK?lge$Fn+V$3HtqaxL80Z1Q-E9B?fqmENdTLb5ZIyR(+ zfILyC`ad10m&}|_1nex0F7n@+p$UUa(81Z{&29o=!B47y}z}hqI-Eds|6W|su7r=hs8{g=Y4NYs2bb=Vr7Md-oWC`|r5OXW?b87C%uX}`Cr z1PvEy4TqCGE$c9{_jgPyl8<#8vXzN@1>a#`i!PXq9Zg~NrI}UdK#4t8LGk5=wg*HGW1w(D|BUGKqBDn-vk$|=MQ&?GNcb)}> zBm?p_N_{I=dYV8NFbIx(h5j@lV(n8m_h#e?rc>$S4yCCm^;lXB6^dv{P@O0Bm;+gW zM3h1Sq~AYRWg`t8=1sNzP&sI0QIMt~A1-*Rq^3;?%~GLA*M5BiF)JNq(m-DPej%+> z5VDrx--R^E&ZJ&l)sJ-W*RgfZ$i8U&3cl-hT^^^CZVK&tF5iW{?gFQ5b7ErdK1^xr zNx%t~7@MIk-7DLD{ukqYuHWGhiFW(3Tn@$rK+rhlEPnGI9KzPNxi2Frg%`-!CZR z&ZfT3_j5ZIYj%j|-Sk&+)+BS)6j$aXO%G;Uw0wv3!njuS0i#r0cM)7qvR$0k0#)q} z94)GZ4krqi@nAuB(gr)PV?IRuZ_UjWY-P=a5~#nboqe5&?+>f$4`fUm$|WLt8fmEkMUufoGlS_33SQg2U&r zTBbhw>iR3^?1o9$2^-@(+E_ghzQ))hxc1G6rh@#!=S5fm8Os{?sSEh@vivT_FzpH2 z@_!_0+6lfkrC^LdD~Ay5Xr5v8+yOD)4?3HV6g>Fd*Hd}CdI+lSPH-}YjXUfOzTb7> z_q;9eJ3Lq!$*t&n7r<%wY$A^~B4xL`7E=|R&z0FK1tn*tDJ z`hI>EWFUKAzL@Th^j)d~m$kXz{Xcy4o8o(K-w7Q&G+-9h@MeA0A?a}{_CAj+ecW&- zQ;8ICI;}l>ZpH5y{QAyPVZ0-^wecdvv-uzrxjf8Ww9)`%}&aa`2g#8c{FFX=JcpqSbOy+6Gl&Mz16UGu|e8{pU{ z{U@>gueS!*gv!b)1_|o?+8ht$;X^~lw~IqHE!ZoogFM?9Nmsc9NIV=Fre;W3HR5I( z4kX1XaiDaY5!-f~E#xWiM$-J+`5g!NZFocYaD*Y9Wmysnk}Xn*9l>$d8bRQid01Y4 zB_4;D>i~fN+PCAjhYF{i3+A`g*B?tiMM5uk_O;yJSMj%T(5ZGd-`YW%?V8Vrm7l;G zGiQQ16N>NJ+>@-_E~Zd;k4phWgUm_Tnp12Vxg5yLz}jE8phhN%<&gPJe#wXW7$*I?%eUhJOxl%PJdn@U3PM z| z1m%IY5-3|e0z)i3FMo*+S--)_6LRt<+a>d8xE=jMOFz~L2=~j(5pL;Wx#YZ~DO3uS zwKL2YtN1RnB&)`q+kjas0&&7JRYc$%k%$cxGUC28%Q3aP2q8C}`d?$NgR{Ow3=S>%DRZfRWJHd6jh>yaMIlZ5xV;(t|4P2 zq6E98>WoL!sElzY*UeN1BNgzGjEU>K9l8WtZuXTL5jLIkKGRie|IKviKj@c?fjbL_ zJu{|b{W%2|9=IZ4$aF*1B#??QtrrP*1OvvIhi<0TLJb766ey7_DO4env7TUGo30xi6 zQGB9+)CRY7t&EWVP(P{N)uw@>WDIXUT~{%;7`(4B{G)kD2)%`_kNtmd;7_-9I`-z= z9yN$epb0}q2{hZHeY>D#Hzmv1xg}h8-A_*NMeJF`AgE{B{-3mFEG*z#HB9Rof^GJO z!_`V*-N%^tY(pWvwtP7TRnjpo9nfN_L77rOV>Auhsdtf-Dj7sHmv{7yBEm%1CQ(y} zZ`}2X^4p@r%S_!m}u&6g)H~UKFNdv8$uKsxl;lQI{-GmX&I=^cU3PWf< z(2#)hNuhf1(e*o4X%>SpUT7tSuj%@L@ptK9XM7jCqjEENL;mOm`l+uaw8pjWq zwCoCm(d==XC5otsxa#bZCB~`5ijdO#UaWZE=IgJ*{7TP^a~hQ2%#gfHgr8J1@AJgq zoVJZ1!xX-WSi2WNB)=+oArM*qqih@gQw<)KEQ0eYqDZ{T(7~8~AYWAo(cwz`(`)1Q&2h89-lV;3 zjGR6hurz5xp6jel0WCwLs4j&58RTf#g`z^iDboGMv#5z0@Et$%XlnG(>tuz6fSeJF zJc%89m0>SWz~TU)joYjyL0CX-WcOUi?L|PPN2qz{x{b&{J}wZnL#gIrkFbT%t{bn~ z!FBh}etMeG9hx#E8B~7fsbz>3Aqa`_+itw-_!{n1DH-8`^XHC8WlEy6DvETn@jKgXVk&=l}?^I zh?$(+ppWNrrWoqeU}3)pl-Jc-H?UCe*%kuDwrYC7(?Iq!^bA*J4@cS|osh|Uzdk~a z*2l8_S*Uc}B5C9jlAy1KCbqwq8^-%#csEPq7f|rW3o${cV0zyDwXy4!`^*+*IQquP zb>PRx^KZ;2N-v_Mre%CX1dXi3eWT0j%7v?QY%r~;z8^eQLLaERR{-_nG@2TxeXM7M%hi>xzwwvZ|Dx+1<16c)tm zclUGN^PK;=_r71(hxyxktyyzcjWKGJye>1Fxj@4Q49Et zp|M&15o1;scB>#xrfkFFAv+4UKK}~?u}04Au)SL|WYbDN{JD8Kh|vzogiRl%*zR@8 z61RjWH)Z7-V&RiP(0QqG+a8ZFcBu|eGKX+j#Ua}Fq8_#-8ZmL$L(x*Eu_8UY95;0< z{ug=3M9xKyyiTC!z(XNdBiL75w+m|1OSZW%_9S-w!2g-%w`)+{_vG4ZlF~==!kiyT zW$*KdyGjul?o?@(Q1-#ac`KJ!6U*m=E+V9z`@Mv(SBGB3=Q3nTO`4GJ2I#T<>a z`-i}Mf?QSZA*J19;59!VSqJV6tvv+U1*bUH_5mYQ@3+(^A6bu$Fmi%6P8iRq6P4fk zh-#d}j&QD07E!loww7}GFsNZwV7p24nm&|g z2~5n=d{?0Hl{?xNk8JeP?*My09MU?6@;fC~y`&0Vk8SE3BwCN)7=K`0XKdXlv5vY0 zm4cS+O_%&e>i(|3ZSV0}CVw#MzI*P=`F3TeXdUr*MOx&S0I6+C(d#uyIy+9^uFu?7 zp^xwzYb3r9^|ih>kc5WWrdUe@i8~rWz|2PHyG<{zHJoHe6iY0dQg@n8yCvmqC2VLA zQ}?4}c zpsE&Ss8M2y>aPX#;Vl@a5v$8)en}1m^+FOh_reSh>T#uH^^DjN#3uA{Ke`ODN0Ge) zwUaX>k+b`*QoV3xui9h3^;J1ib~sssV6F?N5h^LHb=}yP2vsZyF{Qn9lv29#AWJBA zg(10!wy6z!EbE==`9E$NAPqmN2jXaqQ8T|4!DuYUr(JO-%NDrhNVd#Ax0}!^HR_&K zZHX|&`+y8gL?S(s^RJ1@znR(1qFouXL54-p9b6!mdF&&+=*r+ zk|5wAJUq8bc1YGT+d*R4y5Pd%SWBaG2ZB=@D40uwZB;#7%@O+*B7*TS5O_k>rv>F7 zbkm4}N4khVs9u8l;9`+9gcPBrl4|Vx^wxS z2-POCDl6SZt#6pu8?TMSUeOf_5Yj6zeak z>5m=btEqX1=-Lmcn#6hrP*ZLyTSxfYUxnWH)1Y>-CqLy!5js_7irQ^-O zm3tn943~nAdV`6S*0A#ceMrTqq*0=M(Nm0aRfWols_gB!2?U!CVJJ+>J*#Zz*33%8=hP04+%e*D=k>gFe+fa4+R z$rO;ZQnrvv$csd)g{q0f2%mJv>E;@jY;Ie}h;k{=wPcsg+aBa9X}5*|W_zyPBLQL#cSq~M`B`y6Kn@ouh;vU z3@}zVDoFFaXlW(UrZ5^IRfb1Uu+}2N;JP$8gUE=-v92T{t6tf z%(YG^u+hWcecdI``MyX6Bw(C%ii93STfcc_0Za;YZGT-@K0Ws+45-+=hVylU#5VAb zK2SHWL~M?BQ2|8&25)7i@cn|tiMnTiINY_MuxX^{2rHPZ@okR2df8( z5o7_a#xO!b+IJ%Bi#E0Uf!aaH5mLb(Flr2TIL8Zb#L&F>;6oSuE&0`(P*aFBhIeP@ zwwq$r;IeLBYWuz^QCA?JNeEm7adf6%?f|8O;$~K=x@d#gI?@%wZ-F#tO3b6 zdwXIR!W50JT&u_uiQ+B_WBlQcsxx)8=mhTMTsJ9Z{#h*_0CW$ zL&B3o^7SE{NB3H%)*r5tC*O_J*GOkt>=O*Eoq{Fn*Dgp+pn2OZqe19;XfRiEk2tVf zX$vmtXg|gGL$+MME~G%!;*a-Qgxh(hEx+xU8O|Y zp@~S6OF_(x&&30U6TULk*FDF?JdtT8%C*8kb#OjQ1z9nR7R9gjq{k06SjI?v*FS)) z|M;}H=;V_AQK%av1j|wEhaO&%iTp2@9ep2UIsTlQPE(%IVZZA>;&DbdeCM)rYZei& zXq1h{8WxJ<6kWH@;VSI!x5+Y~zFEEj4`#@y853;+G40NTALn(Y<+ ze^5C10jA*I`bYo%egFL~O?T^bfb+GEjb<=iIz#zBEjZ1koaige#P5{tmIf+7FQfcEi|};8L~$Q#5K2p_dPqS9SvHC&OmLV zainJfW?PJM7yVnisPWU>X<(PTZ@X=gXN}atI0R8e7lcR&oXTDj8eP^B);>}}rcMAG z$v{z))Q^d@@yMHgC0`CtyL%IN(J>PVk51ujQBs3)J?h=k`X8)L5q->4bejVsHsL6B zg-v3fcw8}0zSZuOJ$4s8)@esZ_%(@^eq=*=O0eAmd&`nJ?sbM;0!0d`9LM6E!F?bd zIdc*lVfL|?SWp4<3TgcU7qnB#e!;M62jphyYOgtfU5Y>l7Y{aSN&Ye4iu zGoN;{C3;TnZoOmEfg2SY9k_Z6mBEU5N&6cgT zy@QHw9u?|HTMH74PQ=xg^~l9jQycwm@D{L9oSsPM!fJgc<{(BR_j6<|$a*RqLfJ)B zuWSDwFuh1v(4ZJFmDu-6hr(F~?9D`=?l2n9TlrR)(YXv8)54SjxM)uLXv7C9RGZN# zu?M}~wil>G?^{~Zp_vae@${b}Ir7&lPs@WcdYYk?3nJGN)4`c|fYS$rphqSZ?Hu+)%Xvm({zO{pnSlt{`nA(%gNhVF zPT%Cc^V?ux^9P<{*P`E3#r-rFMtir;-}7L8Kixm_uxf%P+zh7j)Ic?775xo1;XLBM zb$FMs5dr;+=bcR=v+=-wmY9<%=-S8KxwI|qZ_bg7^0_vweof;v-A_{S$o6cGR*CoJ zQpZxJ5<);w6jp{KRJ-qo;YD5=hZVle1@oCRoiUCFk2XTIyS-5oR|k=Iz@5_G&Tw{z z!ji|V*nn;RuuDCm00Teh>Q5IkQfv5r_IZ<-`p?@=dZvh1FWd>mlm=KSnh8LY#Q8@F z<{4 z$?J2w=d)L`=i`}&>C#cKstkk%L5!HmO#>SG9U|JG)|1GIbiv4prIK( zh&Lc0_wvHC=+e`{k<0%K-;K*BJGuFCeP4K3H1VOsbHTi z%xK9k5sjOZ`p#KcB<~YJVLhiQuXmkPw6S`EGrxL*2i|$mm|2Res;3@ZGjN`R8nSd8 zIM?=* zM4RDv3lO?w@dFg9Y^-MG>x`CNe*%e_U7PVH;%nUd#%UIki-sE9Hhza0{-A0|(l zZMn2;-6&j0GS`VqgqZs4G7KL!&8cl66wW~^{Y{dz{Hje6HrveYK-a$v zvI%83*O#s}6t&G{mgAQRDLR%@2j+E1)Cz8Gx;9ST3H6tFJo}8x!;qd7%Jnd+5pr|8 zsovf7WCv&wM8ctD2}0c$Pe((P*ec7QDbxD&NIvE$5pT9o=q6mhvzrj6i^>p`AhsAo zD$rk&*qu%$m?kw}L(WForo5+7;vdMr;uh!3ei=&n!1?MF^N7gf;|uTH_N^aC$v7Ce zeRFqMSZ%fbohDHQI~*UDSo=_p+ zX96DHEUGS`(mlXGcTXaP`_rAf&BtU<&As7X>W_gBHsU-!$k_WLt1C)d1=1`=%*kww zJDnYxd^O?TcZJd}*VKgo6_QfsKg+pmmeXm<#mIm|i z-*#pQ$-&3zfM8V_%wijGk)lYgm3Kc#Fp|u7Ar+(4)6<{&OKF;c1AU?9paVItj99eJZs*q53OD{3DM*vn(YO=g7!TtHjMh4tb2Z)0dREDfwdleSqzo(b^A-7 z-a)iRBwV%|-^@h03V)}LIi!&t=e1rJ_G9E9gD!eR&}Ih2z~%DLDKNR2y6*UIKo3xz zZq0U1?&nKly;v&;=FVD9gBdCVii}1NZu~e5&mppF4>Z0AO{0L%#FI{-By#D(GJXVw zB8{}NK-~-?NZmaJg?wWeZhmeM znpXikSs92&ISxhEO}aF(%7g9MfQuwNTtsweMy{zxCF?GwEn z4I5p41f2nfc7OCAV`Ya{q%vZd>aIcmN45cw=&`H$5^BzKhYbgQaxSdh8DGPNkOLTgfERW^sP7@N zYU9e*qpSl4W6e z?C?(JS=T3fxu@&3%>I9D+>t9NnbPi7Fo) z+Vh%qzXM!&SBA*=(YKVY^E_&-yCPV(bjTc=K|sUdaI))s^C_52?H0VLbsG>-RUa}k z^(ZxDhqGk#x4WKi?t<`kklJ0x+`L}psNO!IibA_|+#N{63VC^D(pBAw7?}!x<#&`WAq=+@`?edJ`^S?on(J)N0+N+ zJ!SVN?WlW1?uG?c;!!;s-EZW&t;`S%6R&E34PArhKC)B(3ujIt+l9UhwCI_LS&NP| zu(P*E`#rOqm*iN*jb=cdnI^VdAkpe3o$$N%Pi-SYBN@(6lsiDgM&n7=e(mEmfuO!? zu-H=jN^V+#-A<2>n8|i-J`X6 zRJzGSKOeYt0hIRY{znlx5n6X$T8Ed=P0`rNfm1>O#JVZZCeLVsa5T!0`O|R=@p64} zvbVh^L4RSUm%wp4S;}d>lvRqqpUtkbg`?pTXYPEXC38*!N1=_r9o0{;NN4-!DndYB zfNzUO6%^kZgHxYvyPhsT;s3!2|NMZqft<7b6{sDFVvc?@xzaxQn^C^aHru+_tDX-f ztuGFs@Ohww+`Rd*k?cy8^9G!)Kv)`3FAf*73|gv2)BCR&G@Y`w`B07etdwTylYyQPf?eXpFBbV zo3!tp*v!-nHZAU5GrJDY-+Rt=PElx@DD8?)!e6|{fqS4*ELU?A&st}P;!)OJ%C`&+ z6580`5dhDDy0Awmt)rXL)hfu zK6>s*@Jz+d0lK&S0GQ4U6nGudN)t!5>l_Z?d9(?|hq{n5IZMZ5&Q*ww*HlUK1!I1R&Sjp?=|Cjho|JTvV~xOD3|Y zqd>+0|0bEhxf@y_UT4;~rR#88Q4=8WQ^lWhYpcj08Qc1T#=!f#aP{SCw~-6<5f&8S zThglGu)DkW-vRSQVrxUxA4;#4qlSm*+kYH||DeT&7__=}m3(f`Tc0#)V zMJn*A^f?O2C2X~su zro;}^=W0%-2N9S4s{q6gsEQTTwDXtlv_3^5k3|`|I-J>04H!>ttJi`uoGsxWmN9|8 z%Cuvqdm@w|)&RfpC>d>xws|S?JS=hh>8^A#Z+Kn_89fP2;)mS#v>YLPX`vRHL4qIQ zZ*S!Mo;}8_TGUv8o8~P^eJADCYL%q4K8Pi38>7kp ziA`>6iA`8gZIGV?BBTR>!SviiQVY`8wNnx5F}e4-(v>|?ShO0DI|qr<3c0ua)=kUt zJI&po2?})VoH=TeBVuI=wss-C_wc5FWS=^BukF5_R;Wy=FY6cCETX{Mv54Ywpp2^q z1wL%hG=YCv7nl3%D+jRfZ));nod-%vhoJ{ir?ZpTYQ%SFaF`_4u47&59LM8ziD8UE zw*%mSfi~PJc$o9@My;9t*fag{X4CNf|0NL}i~Y31Vsl**{Nyol*bZ&ZZ+kx5o2yoR z#h5gs6S{FVA#zXoJ@JssT;{2KiBI~Kw zz-n)n>JU639QMLR$J0mB zbYqY#w=b$61LouIc*^%Xr;^J^r8I(=QUaTlgW}Y#eNF_y`&M7lLHk&~m68YhIGna4 zo6!DX4KzUrBJF6!Br@$|ETx0WDFzXSji6-gKpN@SpYaTh=cHSE6))z$a>fskg?5;u zN8_g8qV#5_1L{wEu)tMX30=M-G~ky4BsoDZ--tg$6-xRM*q$%7?ov$2k-Trdq|w4} zY2Wp%9idV&AH;T!!iKQuTH#YRuyE-Qm^hA4g>&z)cL`^|!aU4|01J^@w($xKlmKyA z$oFNt1{VX~cixyHN#6)$Fj8rH^llB+_ky?ro;~?~i4O+oi zkPQ6E5NxXlQT~(zQGmwP?X2$ecPODq7*?NgLI*hpBU2&>Z0oAr(F5(wogyA>Rev|% zbls3{dzP7Hxu~aGlh3gq3xT*~k#RHj1~k|7?KnzUn#;Usr)m;9d7yk(!kk83GaLvs zogqeRPa_O1-`J-yo#r&Hb&SD94aeXildGs z#ybFy)l=xOnedUlTxi?u%Mcrr84o*FjGLL;ii(-j@vJ&&Nh9FMTog6#X##v}U$|9P zcIAOYAvG?twIra@luUn(LkK!t0+)w!Jp!7SgB}M&zD+8myd|Qa56$6q!Dun;XkYEO z(ez3wY^UEGz`o=EA~Wqf39E->O)3~(|AAHZB(<=5;VwmB@Vm<@7sIQcFVW#5{Zz8e za*HoVVDzFfEc-mg`Ho`~5Dpf%41 zyd!xBy9RWu0tdV}9546<1R?oEB}-9knBFZSu$!tj)&c470GcD6v8eC;Kt9UWn~w1O>&5GFVp^QMIiwA|YO zOg6i-pENSKRyLjl$MP?BaOYf_&8Aa$opcKr4PGoz8lBqszW zn{{e#w!+feZc^t5iLQ;2b~2{P^=a=#rda;!P@r^IaaucGbNl7Ly#U}?$k$Lic@keK z)EHa!+jgNn!$(O;$Q^<`CX@lR=&N!|jCH($gf{h(2T8O>fUT!oc;)$Dcc_AM5y8TW zm=O+%bKOsbQbf%TdON3MB7`$gc4GZTA?TP6I1l;F1|e!5*N{*A61gM5z^@wla%l4L zkWON8)c16R-Oi)WO=J@|_4?CrZv|bmLQYZL8WdxSJMoJ1dZP8fK9rgi} z+cjrsn?bja`XAd_e%n*3Kn(=kVQ*Z_-LeHqApO<@>y0HUkBDe4RKHdNrG9+_ZzGY5 zq;WWlvn4h@U%3A8BsSu2MO(nL4w_*jg@6z`U0*L#NH{vC znMyhu-&&Xp>*Dg2WLk|D;g25pVj73-)+VGmdk3Sv8MGXbtU7qIR`>0-*v}3o@m7qG zF90xGk4xXCnm#Ua!RZ0M?t4S@tm`E&Bb3iB(K60I@X1g=4Y#MrZ+GU&dgZ8T-sF+s zJKYJ^5+k|R{r0_1)A??`6tyyR|AzaG6>5lh`FoO_`SKe_DbP5o9SC|<1uUS6qIYTB7rX*Z4K zeHl0u;^OD10R5eNJ^1la7NfBQB6KHPa1}2Ki<(z_{~-2?W6wd?e~JfV{F$;7S@6oR zD|GfPBx1NO0i4O6z~dqQh_}=7lo`PGDRrJRJ`;_Jo(s!eyAC@L^MX6XJY9bsc2IOw z_8#tBvx6-ymK5Q$uM;E44gRE~&uzM>CEvQ%Ay4$wDJ*P6+VF?j?pJv0Tu&dUqVSHp z((Vbx&7CEeW+ak@lV)FBk`cU+WfgniRDO6lgFKf|xWIsTMvMnI^(-EP78_*m;*`qd zR;F7&X-NMsb(}mjXY**?bZO$LgwtZ~MVy5w{P1awRO#3;i=yQX${(T%DhARd$}6@4 z%U@nM*GJn#IF%8ZVa?sII8^;*>DuDYDHrGoYgH88t^}%C%9)Rh^3@4 z^jXTZex$*|X&It)u9nZ@IS_>;or(2T5il!K#3hy4T(bc02*X=a;`^+x3(!qFJl(KZ z5WioqD}yuV(SOvxh@NE`l#Rcy(_`2zkLjvJPV`TP1gEZ)8Wn2L%tent-bASEjv?G& zs}!cO=J6*+my1lM6-*%zlFw6lo9zpc3wcr&3>2U`lAwxASS$FDPqWe#Wa{N(Xfvm|Y6DWN$(2CKx3Z=wZo&j-8`?Jr&q(SPWnEr*Dr#G5@a4WA&Rq*NdSJ&eDj z3#$+gynYE+40w{s?03a^_~pdKFOsOCt!Za?U#k&C9%-NYf;Ds~BSz(8A>|#a}9GlYX`a>cpG@*zGV+(js`2S z7~#|m1I0~6qQuvXtx5Fuw@p+7#vP{Plj6bJY7$(k&8xYH;Sg`tfa3ts9q|T<4O{!S zaW!)P;N$^J^7XJZReTKzcqDsT2zrq4|P* z!O`|tjghUf=}W;&93!*Q>|yP^(^>W-L1C73mkgZDP>s(I($n*8r1Oxbe%Be_d`E=i z6gkGF*CObvr1`?6YpbZITz^LEt_81lAZY@<3paNDOQiO56p`4N4r_L2JPzHfwMoV& zAB*kB_}S`ltK9Ulj?BuPr80uC*6dr8iDm-cPzogs~q`y zVH8>F59fvCe=u~NS6^2$R6$7bkE8WI-Exg~Fszo{OB)t!p99>2s* zM4~L`BW^l@vx5e#eXruk4}Fx(XeYD*c?sLmM-|2euCba7p#V%0oNnC5HNImE}A~zzdfRmmpX;@KE*ZdX;BPUj^#3Y@+k) z<`M|z-9X3fB6JHDAQYL6=^Xp1?*H7qM0gRtegIP77c*nA&`lq zBtzs__YwCe&!c2+<(bT-R$Yw-7#m>O<&f3lApbeJd}A{rg4wo$gb^l30q~;(gjweb z{p!p-98x^OEoXyl%#4|Pb?7#mG=>~|N6Os~^`cxcmVvQ)c6{S) z!xIr_=ppr-81&)@-*964L}oy&L+E8o}O=Y%nObAmKH}*DIY8gdOLFY9oiapkZc;DM+r7c%iG$6|4fbG0fwhGEBai#bbvbYN*w-z&al< z4Rnd@8LxhTnlgfYk zg-6c>&p=p?bbR7O6l!zh9$`y@=}9&o z9z%mp8)7`2ZLA!)k@2zvGS~*f${vQm=AWjVi>Hgpfn=uRyCx?tBl)GMD;qvds7Of$ zgAYeWMQFu@o|AVP*Qm%RLz+Q-hVvM`XaLVu6}TqEEU- zVBRh$g))O@>u?vo`DNIh=q~de#abscuP}!9gIY5a2S96{lPuq&1Wnk85l%kgw;j&6 zIqD$BfOh9kR>R(E4$rs#-EqjFS&?wUwokIO;lVFLQ~cCnq=H^cTCPoO&QRz*0{f@K zSsJD31$@XFu-jdlHu&tZU`YopB%>pF&DD3}FJUPH-t@vFP}EHvi$^WYHTs=lz!#0~ ze1U>wz0_VbA-;rQpO-dxAki*wA$ceXiB^Lo&^E6MlrHV}fB|P5T|@a zhc=uh#j)P1`zoQCSo&7y(V*H?bfUDLI~Vhrc(~?%=UG%gI?f4-7vSGOSsZ<|%(r;J z7UI$Ieo|Yg1f_mEAf-H&pVSdZlgzyzf9m~(5>_z~TlnVX_~V;Z(l7Y}4WZR*&m#ej zrUP$gxWYRH=~tPwr5Ma4l;`Kjnof!$*xN2#h;1m5SVBAWp9xITm^X6?`Kh{>`T}3+ zj=S<_h&2>8%^a}D?``lT$6~4W`Qxk<%Js`nMIIG!vL(g3isuf^{soJuC_qWKo0#|- zq+5*a;?(*kxj3ki?Tjo5?dC7T@}lFVSaNE)Ik+)lS;L>{Nn!cO_V&g#04izbfgWCF z>F{AI@wFlYI^`DTPfv=)Q`U!~ju33CZ%ix+{l1t?kb|tm;7A&Z|nE@}4zQD3h#Yz(aBzrKy? z_-jb4>Mm>kO7|i&8OA-4P+#0jI{kn#wDWwtqHmiw#nJ~#x_Ijq3rhJsR+(p^Od)x+ z202Yx6r68=VPFx8~S@B!kaJSTff1(6n7)N zK^N~YP>iDh&IJLa#OC1ShzD_6yrl`lo%?tvB1s_9#E8*@o}WArzO8+m40ieK!?er< zkHH_;@sY*2XC1P%``=89ASfu{>)MFBC~$&f&;(!F3?{)yAhx)Y*^o1*k|2r8%&r{q z_RVLs?r&(!ToDoJxoF;XX==+lLnCfxx(rfga1T@0K}LDTr232w`v1bRAVH`vm8WL8 zCj5#+o#5lsWZRCdE4Q*I&a~=^XYpa@ztXD`*nIyM=076Zwr|)(T%P}!0n;yDZTP`~ znzf#`*hJL1JOUTT&*OK_KV#&}0GHq(lXe8X4n&~^w)C{QZL%`~43 z65kF;5T4W{_iU9bJkM6`Y=GR6hkjmRT5`}$6R&5CvqK^OeURRiMkIIVUm)DAJ#sA` z9Lt;OcL!OnK#sm|Q^0GBjv<5|4-dZ$%3g=G)9SKXD+_3|J|s`Px1;Ma+w>M9K*liq_nMvv_wD%py`9!P)VF2&C;3#UDa~mJelt`HMs--V-m5Y&7+1@@<%L9$u5Fh8;dYG}xr{ z&3C{Iv2&Fv6gt6yj;^GeiDX9Es0Vls|GgaZkkh!AkWv<5Q+`+8nhYC3NU?JzKo+mC zTp3pX>do1EjIk5#tG<7SLTeAdTmTc8n%2+HYm^Y>p5c_7uV}5j!}wm>*&US3%Z^=raGVw za0|hd@#TIX5pS>SLb&|#rz#({iBfP1wvbr18sWP90W-z`Q*6?yEa5{C9o-&}igDMs z)+U@$POz4HFGoxUa1eMjc~ZcZ^aWhwA&U#yc4JibcWg(v0zvR}KAaH!C_XY;Y8p`S zXylc1?R#mJE#Po~UR6Wg)-;=+_ZiUNn!9AM!45*nV%tnf`lLfllLdLd<|O~fl=%!s z&RTXJkyg&2$+@Y6e{thJ>Ne82~K~st7AOVG)D* zqzFkxKdWI!tI8@xqnH1a=dJ$Vnx{Aoto;VkJbdj$H&ja0gkc(>pNG0*BW;Sb?mZyK zU23KuP5DLQerXY{awzrj?TmryYB0~t4`JTr&vIyk_r;gWiD5qXng@HMIT+i})8lmX z+g3o{#6d6aP`$^BJz=!GddrY>yg->9*5%JqAhyvAL6`yy>i1&&m-WG%Re~JOqYrEA zul$W^DniVLvF|#rMc~bo+nd#}N7+!*H8iuP5qCZkd1_dd8S<+_!s-a7b0sp}VE3lp zzW&&er93;CXCw5+mO=Fk8&fA5N|?fUVWPzxZzi_c0GQ&*A8dt+hKOdad9=^yZ9f15 zAV4nE|B4U&b0fVv^2oVYUTRj(oUE1i+Q;LbhxxdIS&4Ev&;egmAw3{RH(*G@jm*dt zln+&yJgM8(lIl9kpcLiNF9IZ7Z0}es2VCoSckr)PqOfQqIj{uy{H08bun`)i%z|5( zLLJ?OBmru4+_^c`DW*EN1!kwHt6Dad>bx}Y&a?zDDgIeFhQP~&E()XxeLRRh^`udb zi$K_Z%N6eOJmZ=x9vKo!%J@6ksdF>SI@US4N^8LyYSabUp9@s^q?>k}puaES4Y8Fd z$czVHH+LP1N!AlSh<7|0?>{m)y`W5`xsoo+%^r*0{pNh69*w$`!&>3~sWhB$B5Ae^ zNeHMr$Y9`_OEpj9#XLsdPH@SG>7p{p`l7<>y`Ay_`*%K+CLU{4sdz9RSxN?MT|z%( zKjWbY_GxY{t+aGNnI+mt$bW(}c9hmfH8FRAMWqiM=&H2_fy)&MOKjbw{68~z`S9>8_m8B}HxCQm!WWY2rvZ8tq;Vb3{ zL<@NT&wpekGW4!;5KkF82PvE^Gm$B#Py3AA4@N7$IK3G0>u>Gq54$1y`<*ZJH|; zLIJbB2lj=r?!q3M6Gs>&^JP6;yii?$yX_R}*enQF+6N96<%E%*E+YMwC8L8~g&_Z= zSA|OHZCN#Oda~5i*f z)C%a85g09=n*M7l_s{n;ye0F`b2hyQ$VawgbGQ8o@g9JB=#uC}V%h?#b#bwY9-NW% z;Y9Ek_VR(=du5QWD)wqFbo(feaeA0Ch>f&4&dR}DF8)1z$B=P(1d2`Qc(H;_md3gL zHMhmZjfQMnT-yj9rS%WbXrJhJ(ltqrFe6H8w~Zc!8h@-&E`*RuHscLW2K)e3Xvx;k z0na3X8AmhhMUj^HDquDR?J@a}>0q`h-`u3w-cx2dtZa3Ny{=B;P4hDwJvO9rAalyxb9xXf_?T_w{=yO42lV>`*p_@(U-a?5*p1R-? zsGApn7Ao*&?J>( z1kzobydVH?LtLlqhNVOoc?m?G9heftJfJ%~r7iRW?Npt&ON6CHmv2WFLmSVXzpFbA zPz$>v4_@RG32>@OFanT6K6MCP{K5JaJ(=H#ffkA1g@{+z0Q0`(fr#RQX1`O*QzzxC z4}E@qg)XIK>M*6Zqt%lCHuhY6i;(N4`(mNd+SGslPvaio3ld{%z*3@m=lg$o2HG~f zoWbRAHD2sqb}YntkfOKjXn@52SnA*Od5`WmSLtqwM2FoJHej69&vTGREYPHC*IAzu z-$}raFzeL3xk@+{i(5MUr(ReEcKM*`*MrA(vl4^3(NQ2;D+QRYmBmbA03Ryu&4VK` zrlaZVrjx~C0X1D%eE(moLTd)0v0T`9d9oropnv2)Zirx@Bmfw`RVK8fY8xvPLzgo%es0VuE=nTZKCCv(^PHX$sqS z5`}p2_PWYsap5kziDzZZyG8$&#{Z?p#0&B-1RS-|1689zVzRJ&ncc}Ju4m2D~0^10!!&@2g?y%BwhF6Tpxk$Cf8*_&WE@)p;+ zv0yv%=Ubqc?Z$6d?>!lbkwL4?cCU1&wrhO(#|xic2?m6KauZv{4K*YdS-Ru@rAd2K zwcL0v>nta$LPiYfZI0_(*H}?(S!5SCWL+y+#ojoYx#?YA(*|)W0u3C!t}9T7Yfe=7 zgk9opZdgVR8)-yVPBHT3W*s5pj}vnL<;ra9cc6}%^SIziJ41J0t-X!$V zo`xyun|}mN6}i#Jw;~8^Px=%0=eqTc$;kuuuY+KBJ8BXx1<;QXRcwD-fhce+MKk2l z0h%af9VG1}BdEFCkE}d(I;Ls^-j#>8hq*p%!TgpvUWI_PA;zyTGFnF-=Ugc;02y8v zJ9J#&0)qQ<{!pQJtOLsT;n2LG>GV;pcQp1q2p~n7`SHS~?)#?Eo?F%q`Lc-<1Sime zu`uZ-VZPW?7yE-`(Tq3|&R_;5YVb@ux2vOW=xjFjA|M5<5xI9_p7H&BwU()^L%d`L zV)=^J#miLT#7Fz6$=UM1C1lza14J{>oQG=;AIqmq0`*di_EgHyi+x9G96BH;}HV1yHpfnO-@%}$_ePeiDUDs{c*tTsnw$<2n z(%8uz+jbkPv28nz&BnGHox6SC=lQ;KUFZDDuiV$(d(AcHSaXayR){cWx`A^QGURc1 zW4>40eqe|Ql+hQ2A>0{OeABK{5%{dNzxxOp^#3JA6RCt4PFd#th(#j!q~ddyB^Y@5 zDr^su8g^*7SG3G4CD1>uq16+K_E zI(CcGWou$1J2(NWTD)5B&&#g(5n>iDmzV#CN*+{^NE?1~P6N5Ar>~wge8&!!bW;`8)6`Ar3 zm~b~-W_^Fn^Ew?Yv!R{wILRNU&~DSdv~^O?en@X&=9E+6|GEmsfAm+(ZHKnjQe4q{ z%Ce3@2>?JQFg`gjcpBQdz$DW`E@xC2QqNH|Fv;pBgY49{n2qJfwtT6Hf9cIbItwo2 zzn+%++ z2&uzG!+&wWdVMXoud-g=xV$h7#>1hRwr#3W8ioMSuS9h{9m^dO64MtRW6^zKihE&Vf{I}$1ETLKtP~riN zZ3*FRUi<*tX#e5uVB{)@X-$M&R?A#(PR5%7n8%s4TLYU@9hU&O&Xd>4o$g!7t)Xd7nB}q%ol^gk!cKf6K733vNO-zkfXsywX)H<6r27 zZq_}qQ3v)(LxVGL(2W!%`hX-T$uLfW5d@_zFWLG?75+<$8ab(oC^nWK&DDwu;lmC# zx>V1%<>BJ5B0CHp+(*jB#7T5QCNJ?yQNt#GqW$2HZJ41tJ@W- zZ-?a;kEInTRLzSNmYH$B9>kY2oi1wu%HTy9ot62nr1Kq3s6R$|}jW6ZlRr zw7~ln^{3`?yhDEk!kaGMQ3o1wjcSl!F_^ceU3ynC<#~&agg?p%ImF1V>De1$UgDYf zehEXcmt*pL!C|IgX2e2V>ceqGQncOm>Hu$!yjRJk=I$_08c^f^5hG4q zT?>CW;ubh zQXSD$7)*1Cp3gH-zFUckbEXXbe0RR%tl!zxY!|IFNO}r&KIvbz+dm2|WGgd=R9abi zmVEjyKQFWuW8{#!dKCv#_k>-Q$T!Z|;Q%+}MIBAv6V~l0l05!n!?zxeXYz48%-HM3 z`6VxR43u93D$mmZM>Bqcn5iZ<>doPHL0(*s0V;)oB7e0Lk4(5P29}zB*E85Wy0~B_ zF{Yd-6+IZQ@hfjV?t|z>!Gps$Voz#%3lz_`l_=+cn+kyLERhqbjhmn@64^#lWPI@a z`*rme(}An+J?G*6#V-N)6s@LuMP0PV=sid&LVx$EJCR}TV+=Z!*9U=mm% zBCKxW*s8ZSg3wEOh~Ywl%EzdDrOY4;!56;eGr+HV`o6gC$23Q)>NgktR=xNlf=ijl z%K$385Gaa!-4*3b^kazuliQ$1QqFa$CGsRY>ux#V-9|mo%wW+yZlWOki+6VWn)V==XWVG<&R z|1{;=qkGvR!o<*GQ`o6}H)mX3G!N=Z#7%57HQ75z%SAMEQxq1c37`2j)V(eDU}WcYhnsR-uwM$U&Hu8!m9O6YhEJU~mVL0VTe1`@}18+nlB#k$g;PfKn$ znxL)OcgIoxNSSAulw?=FX>G^s36(EW-l#v1n8>xwve1iqAW{&YIIbm6UJYibnJrU7 zb(2VTSx0YUF;Mf3XQH$z8&#$y!ZCr1oMft5%#`e0^P$c0LW|q|3-^Yl2#3EZH5^$y z47Ai%h1|4h)Ui) z!A|>K#wF`&@KKCk#Su4vcT4uhalpK;ZHo7OwlS8!P$>6x^4Vks1BT(B7+)g*6()pC zO^DXX8Yz0apU?@lo*^YaFVqz^t1{&zteiQqp zFsW=LpD18;fW>YX2GEF%gYgc$^IXtWLRVL-rX8%pOkOiH|0-cFFmt@As%o=XF$K<~ zz7IV1M5WzyJBQ}dEqX;Hi5t()HZxlNg{QcE4kM*y&x1dR<33z3Qk#2<; zD)@k0$&iRbK2m*p(7%xT##crmz{l2zU-7o94*(Rc=@7+FeW z3W~Eb`vZLLrIF3sdJ>_pk66_F$33B)`_BW4&KA03N@qFs1;t(g6ZgM_=bcb zML*5U1=ucu0W^2sc31WHeECYj5+X`&ERuTr;VpWG+AGGrXgun02+{GzFTEt0BN&=T zOrW@^TXLlywV*E`SzhC2;HR z-M16(fGYVqjesJYDzSk75-9-kb|&SV-aqlTcT13~^vKX?uNHOHco+dyS>UGCe)~}v zZ0<*@i=JhU6lo&dhm(p&e!}oN+7=fLw7jG7zF_6kLT(t|2HukI#;2@H89HCW-?Jpt z8%iMUf{I9&A7}EG&BlU@Z;3}fxHEu6NbMntitya~iuE-wc~0o5u67HrUp>1q*yY^U zf(Ca4<*O>BH@`Q03ZP<%Y044mCrwk!^yW<$c-@cmz+(?o#)P&2@6=XKM$B5lb(8J?z)YP z0o&l$kv>7?#S^fa-QfVV^JGm=#7^b;;EuI6{jN{-S+ng$t-yPKPex~7BGGr!`czQ^ zuw>0&D1{aquT>uN9y7qtuos=+VLDx;SUhWHNO#_wb&SqrsMR|MmI!y_H?C9#0g} zT+3y;(Fvai@!Wb)tLwq(#pAJ5H?BE?Bp1?xG!#MWlWr!HPuh5_tTX-|q&A=og$NEc zXE(Q-2EZ$8=xd58v2_|cHrK9(v6P=<)$htUf71D*QNL{d5$7y@xbjnHZz}Vp79BlY zKI})d$v}|U;NG!tpfz?xlhZasbLKv>PFyK&=hlyq$BfM!ft``+X3~{rq=i)eb%)-5 z5vbV8=xmIss+cA+RY5ODaBRms|E=a|L|Q3tLz3(=+zV7_N zgmO;_gZ%Z>eMn=&c{-%gra;pZi%<<`i{Qn%I>9E?#Ke=y*q?B-F;cZ+;&Dg|+Gq<& z!v<^Z<<(^D`nzun5s2Ru->jLM`#rYc*|U>7X2PQj6;@(JJkE)jAV&LsKv@T4;e@1; z9|Qc5wXfQ^5`e1afHjjqm-1yja-j2w{|()hBz9-b>Q;hHJ*HML7HP_89ubWg#eO6i z(6@IcGH1{nl`x5QTfzr^lK`zSqp}Be)yzRK<#9ZuzB+I;8C>9%M7CMcLyZ)BCIl6c zZy}t}N8OTl3+m$Q=zbQntm=cnqCX0ci^Hj_nN)??%l7Yo0v3dk#E2#tTwnyU*6lB6tvh^Y`kgiAz8&tyZluXgH0r7|o zE<_iHm~0Icf}l1*DN>O z^Z{ynV)>)isq>`77uK0WxtEg9rIaJWtUh;EIndoQWGGr$CCOXeq78Um)88!TqARL_ z-Y3?bs@OO^B@l4jytQ=v=~%q+9y%a7`rrN7e)+PBvL%>@PPZv!q>Se$&>`CmQEW(!9qKyFf3mq(5F>E!E0qAtH&Q zdWm5RZ&T+*=0K}ps*(EdqGr=x0IB4^R$jMs_&Y7vs*N>%re+kR7(C-Pf$aIGxU@hc zuW>pg22hkxc0%92TR06qM&qMdMaLbKRm!h|ampr{Q^d&llPRo9%L~5PrdACO0V~PY%ARtVk}JPCZ7J z<$fn5cKjuZcYid4MjM4~<%HurHmV$(%})VkJ-D5ScPPT_k}t<|l;E#|#?Vqx+_}v& zG|PnJ)&G(fht{iQSK!J!dz-yjrpqJ@F_JWMc^lrMRYgnic_o zjXJyfdVGqOvYcbtw<8}N5}$y4DKj*taL=TkxcUg(v=)eIUEi6PO=(STpQs*2XOS&H zp3X2F)npu@oe}&&PtsYRy3m>0cqBxQ&G@;;A?0Sv?2J9e`09&jtd0}A<`^SN@DA%i zsZM!CGeIHHX$(pep8{KCCF(e!t#>#72$eos$ecJghGG<6uekw}4Ex~vBBS%Wjjr}6 zT5+jUrcA>seYRp1Gij+*DogO*PYp7SX+UDGQlEfEfKzGS~&LnHw)=}3D$u;0@!Hp%^ zb+EvmhF;LPt`K0Y2rcYu{;g}2 z^K=y^r8H65*84DUUk!ET5R);fY%Vw%v|SEW;HEs(Et(fm9hngDp#mGr^Vg&L;jBIREo--m{;5@61js`XJ z8}%y$`lbLeYNV2QDJphsoqh}L%NFq+KRS}#8R#Fs539!B|Aa}hOIC<+8c?#7zF{w5 z-ut8*pVG)jdoy?pHa7UM{ab=J)+|grT zXtOes`Fw+oTG*qm5_kalVf*cz4ZI8xyc3Jq*!3YWeeClJf2Mmt?+4G>h}--sgIe{t z%ACxJB??eUxU$N~aT5KwpE2aUnZL=^_zojommkW9eVU1S=)|I++hREwcax!oZ(hQ$ z{E7ck8X~72UPG>c-cV}RW!$3sw`~pYP4B5*@a6ltpZudky3RDDcq4#$of}5fy%4Lm z&#D;Py+Nl>MV)lhhk2fdQOcxMz&4_WywA450#?E?+I0Wh)*CK5dK%gFN!aDvLUYo2 z=o%10{pU=Pff(Q~Ez?!y>~7z3F%!r*-B##IvcYbc*Y6;JjZX;1-AFpDLm8if=ew=> zH)%OQSl)E)DOOGgg%@nQ7fCTk&>m#D^`m-L;Mj7GZhKBR=`b0vRFL>aN0 z0WD2+B9kxI^K6w{b7;L9Pm-fM_fU$4q4_Y$Ro0J2(P_0E5p4@xKL*%7VCb8?HMO;a zn|)u0wKE*~W1#5`!!>k5P@IwE`*h>jhm9E0Faz6vr#PctU(9LQD3Ak6_EL=|CCJwg zeivUQy#|&9DR?8;JWECI;tzi#@}YAHZ#bjtT>n%MoA>7so1b}=PMhG7*x}sYxfrdV z=`~mBxkbwViBJU+)%mFz5k{obJ|#D5wlja(q^$n|{apsCtp_#H4ebd>I=w~3rOgR> z9Fg>q8sD_UL+*($(hbi$;_zvmn)gnNGBd}vuSApMigBXv&XCSCo>Edd)VTL0TBr=g zaF$^q+-~mOu4^#@LN(!v`1h~wZiPLCaaP=TX2<-fOTNtW*6--7Kqb|a7Zir=*X`AB zM7m1JgS=cVcYIM|dqGJmv=!uCp(LqcH*JOb-JYmrZNzTdhR^=1>$Knmcn8OU;cqmJ?f&w zhC^z-TCKS{-+LAI2IPs?VBXgyMr}IpR=1rA(S|)W@Q#?ZylKT5I>_%8X1+W4a#o@u z!F5+cib@+Ve;$BM!U))+-{+oX5<_B2Qx9o%2G&tSh(xg-?StUo#Yi+dyRx23Q$_A~ zz?O@mQw!!v4j*yfW~-z*2_9DSYP_aH+)t6I@udK%0>}xKG!@H`RjP;Gcl_lt*dEIi zKKJA-`!gjzuSUzX=+5NZI455ZoSr?9vum0dHNsKA z>3Zu?dqy0`-fYISdLXi63wpj_g2;{MxuQf~36dB_28-8-Zxc*VsG&c|D0i6z=NpYF z3|Pl6;tf3U#5yqaWpz#e#Ct#>K@0!P$n%c>aq~}LJqlJ>R&3jVZ*dL^rFbjL8*D&2# z1VJaN2<;%Ch;ObJ+Y87z!A2QohpAwk8Pl*H_l!)WUchiw&!BzS{7fFTd70o|VE6VZiVN%FGiIakGR&>9 zq^7hLqREOd_wm&>TEEt;ZY8^cYym2$g@{6zjlIjINLeu@o)Hv^kJb>ztD|rZ4W~lh zcO>WbT4u0sf&Lc>P_cyvOin*E2RtEAJf7%)GXerclW$Kv@fwSsFd@%$)eDsxDOEDzq)4f zMkqiy+J0DY-_FwTYa{Hx!Tu*bfzX>_2+M9;S)QIF!gS7Oeie73J3If8#|4tUXxdK^ zpTz`dH=0Dul7vO;nvvPSWePppA30Q-Ew5#VABj;<9R@ zkaZgZK~T~_$4J7AL=n2U$v04u=vrqCn-Hw8x+Z86=5?2!o@Zl*qK3D)Ab{iVW@IST z!c0}&@Abn0P2|@6cFQ_oeh-I4fdvX2!umKv&4c)c1|Ltog)a)9@E+$$U9vC37$@>l zX@c=qggx)|a4?NvB1*K8`YIb*K`#94n36d#psA638(?fgFg1bj-6}Yv!h-J=dI@oW z3k{mnNb~y#nL^K`J5;`L>cO^&+g8n~Kk+)|fu6(lPlKU~aVp?8`jg6mCnI7X=xI8x zAJCD=)e8ON0I~9UtfN#);meCL>^_EjOs6>Df+5HDEOkE^jTl_R7TD6p%FfVDL~>_X z0cYez$k)BoMPs0wO@AXTaV`wA9kp`!HgeK#OYHu1i!meLPKD3buCmAUd_n0=AA5(f z_~?Xrnw3PNyJ%K5P`F@ng{I$qbh|P48$z)&HBvek7H$Dx>0%R{U{P0|M*ZUjP|C(5 zqmaBbaYPU!-J+yYd7ls8KNt?OUrtutWHTn-3#A-!E$c>12I z?D75>*NgP=s8&lbgdA$kFYvtXd&CJrT)hhVX#(3II|Y*I?MYkt?c;aMT??Omku~;I zs_`BB`kNxbJRx;Z)^NGM)4bAqW4nc?VTU9RBCEc^H*eq34*L1=hmr{wv$`Fc>B{^j zm~LyW=@n0e-|d$_awRVU|2c9_hx!}jzzwGUY!*?=a2;L1&6o?2^rVMz^N$+MbNK9} zSd;0_tlGwl1)rWI_NA|2xO8Eg6}T?pF+Jo53@=#<>rgij1|Roh-{VfRxjjMgcSS`ET7XjNP~8dc8wgMbg{fsNavPrj|6$Pn@*)Aa2IK3)zo^&SYCN zf5!f{N~ZrJHf6ySM}~v`?SP_#sPevV?fQCA#IUc(h(+%~271rTS7B9K!_Qf(f185y z$}=Hs&F?v^o;lDINMQJ!A`xlcUdK(ki}YB6u=xtqbfdnnZFMHOd=z4huOg3dSP1{@ zRR(rMm@gbK=?w+yK;db)H`zLyV%aKO+xlhA(_1SL|HB;tSsoN<2anN_aR+N5sPr2N z5YS~j3P}13F06i zH2m_m!_0Wn;z0ACrxCJ32Es+u;Rh4~czK#}=Pw|VC+RLK`J@Dcq#JvO*o|(wL;sYp z|5mcUe{y3%4qa4+LuCJFEB$vz877e!jzy9$br@|^a(T3F zw-p^5H}a_?Aq>+BKBsSKA*q-+*Sts( zoC)Y6sY@b8hqSL#3d&8SGDw~peMDsa(s}5GKZr9ig5aP7TS<>CFmi|7%k}!b?s9Xh zfp_02=eGU>{BzCa6XJ4hG3*4UN}nIERmS*s7gB@ai_A4mC8NI=0om7Xgv3V9^T=zE zzcs-W8Z6y0je-C=nG-|UH-v!iR{yA-6@KvkS+TVpyG~AP+O3I+Ymdx;AAZpFx!0t7 z3W@L$6&~2m8q8UTO{J<&GWZ%6c|eMNS@3FPGU}4o`tw@hGT{50*)*V(X!AwzSfQaz ztCn4D-O?-0&zuRH#bAAHtGkX8t`T@O39eX?Bk67vpLSfZYfKF%GIY;+FdmTkMZ3kC zD7(Y&F3BANZ6~Ti+mh}SMp`nk4qI&Y#6UosQJ9HG`rBUuCewg(e}6_eXJ{(04gnBvc!hF^x-4Yol)M-+%hSRWO;8gOh`QVB zSM;NfV;=zxHGeo@SP`2+t8$==8kM49ZV(>zy;_+qgeY!k!md0GA1oGC{o*3>y?~e& zYoWiJ>~8rL(wptbbvxeJIW_a7#w%mkVDM%i%V$p8gv9R(eWF8~dvC>*`Lb}Y>hi4? zD3U}X48bplp_DY=#uDU1o4-w(GT}}X+1~Gk#p$@6mPFd-b>--INP@#D-j5i56b4U} z(9-&pm$B9ejpgSB*LGPUpkS${efp?u?WcW8!FEw^0D#C$zfE|je7X{KqoO^)C*!I? zLXG+fU$1f-;g+EKW_tF;ir8-8&t~eO6es>!ot=T6;;N>j?Zg|i=^&eJR)e8QJZv7= z7PODtW7eAH>&g4o_F!m(c}5T%ZZ6`(fr_uB!%1_Ka=n+*ns|-Ieo5;Mj9m3g>yRs< z>swg4fF><8YY)arP^C${38$$3H-w9q0YZ=c>M4qf>31r(zR6uR!;w_NgHrG;-ylZg zzEx-Nf2$xHGO^QWnjd{6E9eNWr*!5mhCm=h62asC)+z|-yWaQr4ejC}0~-eW6XX@)7# zrBBOP}9Kwyi)*jr=Lo$Jg8*w?&U3%{Hu_>z%XUcO=iRMEoR8 zuSEYzQawXtJ%wvS2H<(ZmyNFei+x3$cA^NL zEVHh;zHCa1R+kbhV%gt$yd~{BXXzX$`Lo|U!-%^FVz;$Vf8BgjS6kpH@2q2SBX^dj zW@qp*9yM?NoNDVG`v)@wR7MJ!3ozKIHGE!meLN>DSyh3hjG9dO%7E5m5$yEeez5EHKnh8Kc)H@04|f8ztl7H>4?p`pE7~ad+6khoa_1hN0Iy=A z1BXk**$kmLYFS3&G&onC|8g(f|CVA2bh)<%V*ReH=3BuHjnf?Q$87DI!27ZJg3HXQ+X-EsW?&<^(@WBM zJH;5Tm`p}zL{3AW#S;A5>efYYp?{(D%j5S7nWAboR95rvJVIx)1otc`Gy~LD$L9$> z@eNfXWTnOzOM<;sXZ6iztX~I%@^>Q%n7DHu$#HgvT~-O;ahuoS)A_pkXZUB`fl%7gm@2M7Q zb}Za2A@)fIvKZmLD_(y>Xriq4)ts@tqc|bo%>+sw<4-2wC380_Q-YYPAG4>;d8d>9 zTt7U;_vN2{DlqktuSz>X-(n_)8LTx5wEULOXyHVw6?H*96r}P*Q@KO=Dwn*rX|*!4t4C))y`H>?*)s;DOMUrW#hVEuolGddfkIAi(uO}8iil1wjo^;k-5|*l#aG*#yHZ|NM92li+^dA$M{}|CUi@LJ zbpK-`T^crasy;R4H~PC!I4qT_d5v4}#vM=#&jAWPzwgZMm@zqwD}Xv!M4v(&r(1ev zHXbCE61oKYFo8h9cQ18~=Y5S8aqbls2QO7*yI5no^^Z~?Lxx0kh*2J^UbBKT3WCO? z;=#?L5VMY|`khtA-5~ECEaaD96d%6Z^2b#5Otek~XXkUnM(zR0A;E8zi;knGQ&HTA z5sFpo8t^IYkw!BVA!$;S9p+StQ(`THXqCSQPs66z{^<^{K>`&g2^JYTH#>@ryip=w z@}Fk$J~5aQYU3h(6ldBUqmHRj@jait#9y=JrL7UJ?|_x=e_J3ypqzfj9H`xj%yyK3 zN_2RVD;O4cTMi8Y<`fPhF!YDm5wy!lEL;?Am$P1P+v@=>Lo`!#6!tu0cC)AsIWZS> z5+hb#>20#&p6Fnhed|OsTv0Vt7LftulrU5WCxZGx^2tVgYk#v$o%8_?%1jkv*66;~ zB3U=0(x4YYYZN0K8W%zoHL)%NFZA1h(DK4gB>&AIf+<*|2( zSgp#fGdAdE?8PJm*3F{q;kQI6TKtWXMZ`JUV1UbvkEx3PhLrNBsJB9G>AcU+Mj4vz`?L2EaU* z`lXf%^O2tYQQ5lxt5~^DE10JZhk1T|_DfY?QBIeE?Z=W0<)!*{ekt81@cWg8y2M3D z%b8??lq41Ls~8d|zo(_1PZ5IlR;qeyBcC>sm%ubgjMNjtIzC!|qQzXJpKVx(mV#o; z+{Y&keIu@()gZI7O^<7byx7IH&D@(7G+AI4pZ&~z8&sY@9``z&l-r+aXW^UMF|~Ky zu#t|3Q-e~q50%`BnMm@j7uWJdEeCJ9}G3#paZcE$N%zw_i z%XZLD4A`{5F<*GX%xGPb)OqGBozZqW|80zy1^MENXerK23)OH79HJ^3X&c-DW-l~v zbOAI`iQf#3Qa#6zn4a`hFs4Zw5V3KE*Qh16*)y2GBpl^qY+;Sw9%r^>T~ zY$?iba&;0}rSN`1v;9+bMGTe!jVh+YBh~@{mC$aiXYv z8of7JkzGpXTapsEwwDjW!2)zV1m1L|yhxkMKAQ3IHr%CYkfR9f9b?ko@aJKUv88s- zOXhElPdhHvRlBY~PJ<@~Um%b!4u$;)!Loi@9`zRNdx7Tv@si%L=BX2gk!>q>6c)Mo zqEOzM=W{FYx45ps0Qor9J*!L45};lp%1Z*am6|Bbj%FfXu0`p2!r=yK+=PyVrZi`z z79iaAt#XV=k0%Y51eIdx8+bB(o0WaU)5x1Lw6L{4P&Bc-F{kKW0R}Td3g4Q*aN{|X zDz^EFuKLWf*Np%Ci&(em8N#K3fINgnYs}*LKk5(zTod+6YSC?`aPJ>5rQiym0}BRV zZ4Y01_!&Brl`P>g|AFVgRri1ZGyfXW=0%&9BF7*=8Qk77@U zFu+G@eOfXVaA(yDP{JwG5a8t8MMSkz#bi26T9>!wb+UJ5xttitB;FV)ry&qQdum0D zx+*ENWdx3D@*#HKuBqQ>Dy@uk0$m>s7@(zYEb|9j&F?BmS&ZIoKhFfp0t4j~8+2(R zaE~B3k6*O2*7S|qh6=zn7L1p&b&8KthzGz3fki16qki`G)zpvh>WHpd{scZGAt4PR z*t(^%oZ1X5u=zO&86FqN>bYNxL%~uW2&3O9Sdz@j81<07Cu9O z+}rJJfRVg_**A)GIgFf*MtWy+#Gf_shGi`$@V6P?<0j$1b;Y`O@>dEHT2Q!d=8Oh6 z?c2muW{xhvs>Zq)Qf{MRxD9f7`=k@%Uh%K?tH0JmN=U8-YCEB(^c% zxTS;`ej3Zy%Z?%>3zgqfZh*BuO+;qfg+?^b41FcX%1Up)K=NhFY5i60M6-6AUIW6KWsbSDm_zT-^ zj!>kz{g;?@!wZRdMI+$K*x~@E(t9=0J0KsoFGUXdVysGS(5S0vqeWs@XffB_s%yXx zWDQ(fO)W#^q6wQf`0if_t|ITMd$i_6JtwVoC*@o97k z8+Y8Viq6aiM2%k#-lINK=9v8He|PdinL*t{=pz#mP+?b9;eP5|)V<%8uO{ z0XSebv+;qTCR&bxBlr$q^y*NG%5d2u=5*G(Zcje`bm96uu~8VBgPVgvj+zj~%9GzS`B{K8r(%;oA#SgWo^O6HReow^EJX zg9#Qam5+_xsOvK-X;UJ_hOUX-o#t&Ma*{X#fO)a?#0-n4VbmP`dFp^Ap-!%424L~+ z?iYqOC&5c;okqFc=&~%Kp_T+V`aG9mzJ?4deOxhyMXN9A+LZ78nxXriN!^wB)5X^N zq1bmyHFvjpikl|{clo|)0-7yhqsBWhw$;iGzr~lf5Zt?oOJ4-o$OP)48s)8*a{I9C z9iM;FvY{*)GBZY=Pm7EJg{f&zG+J4cxp2dAadm~KcM%SXw^(F6#34V~sw6|tmhbl+ zSnOoDelX8x%^Ry}29xDc8{VDZ8Txn+@;J_jU|9vi{gU4|Fn@nr6}g7TDR*D9lWSKz zpG<4k*3C&DSxMasFWXZcXS~O_xL1VO zS&O5BWsU*;KCSbVG@-rrm)Xdi#dncY6mBVfz#s;InJ3pf?T06;ux9Kw6jU1pDtonu ztuwQ>1EoFZnC!B5jl|wFncmSR$v15EN!Rc`^pD4Vg%236Gf3mu-Ali#pXiU-y6&UC zf=9juO|`)nwWo(`gNG|jg7A|fc#71^+3i8`lP{NZQ@&`Cuyli&qk`Ut*0rj8&VLh} z%^y~H4KxOmrFN|kC)}Q!vpFqppi>4N5;gFs&QWB#L{=1rJl!+GPjhWgox1f3}Nor(#TGV%ZPRM5umVU`&lKF zk)jM64@g2ZGNu@y*$sMWfOqctvk;k>eJhI3(EmCUKgmWb)hr}W@pRovVn{1ae3z>e z4X@E;UexlR_T6l_kfRwP-^1ujGTE=KV#wfWcJ2<*SS+SzI`~4UZx?lmbT}+9(&%TdL9vE^1KslBG%<2-hPk*A^KCSaf>R}CLFK>m{1%T0yG5#l#F=dHk$E7B>qEykdM4yJHBw1bMd*xU>aqlNwH@O3RrSbZs zMa7Kre|Z)ia8N;1De|^K6xX1;S$pdq>PpQtI>=W-@{PTMdHV&Ywi)Vlb*}wFy!-N; zPH^8BM)Eb-fv_olxSZk;nCQ_98KN2EnG$dV4RVQ_Y~{=ycOnxg#6nYrkOD^Xh7xitO@IG#(*+Tg@Gj zkO9&nM!Z{IyG=X33A`E)I2^yMnsK_Z8pv7-RJju_!`5#u_6Z$rBL>KoWB9gAXJbU_ zS2Hn{i7t1>%GlN$z1p%tII!Q`0Xmv+gZ+N+t6idc`F@`f~uGd}wS;nJ= zm9ue|ownd>O249V4$`5oH^GHo6e~`h-KrR(YHPKoN9#`ohMt};_iA1H4C3)IEP~sUcum4LV_B4qZ(v(AM!xkYcuA%xw0QEPG30W>Ol5V^f9aV9-B3f#VTV=>_{AzOgi}cchyUJpw&73wo!qbZ+)^- zRmIIJ>6P)tbrml-jgk(WFAWZLVN#pk{*GsZUcbZ0DYclc`Xzlp2tZ-p%Zy-QG(AuG z`7QSn=U$Qnbc(Ff5=kV8k{Rh6a=6^AJs*q4OMaA-f zL~^divcbp7u8>Y*BO&J*LxAAREmH3cRR%FqXKu%l@WXu^kzCt{i^!Uv5BlolojAq1 zDBjDF$C%uZ>`c0i&LO(`{ZWSY ze4XB>=;lRuGYVZGu`B5snzN5e?a{!b-$=Nnb;H@=p>K)`TVp8oaNl|FZU=XFzks(+}F~&nvJWbSoo;kI+9v#s$5s>lE2|dSz=mv z6s>qy2Kb~+v=rh~tku7fE~?LSY`Y_9m^bMMydKk8JOs< z^VR*Kd|=1hWYi__0q^R=SRh3y(AD=Mx}EpayL$N#P~Rw5KgKT`s%Av&CV@pDTF3^X zjLto%Hy+_UOCz`0V2lN;9Wux4@7}#7>-od%<0cNz|I6$X{|~co%m@RXetjG8mU6ZA zevwu9Le;4`k0P~jFLQsdP}r@iZvZ@XwDrlB8H7wQnd!2A;MRuz2hEs6aCMm8l|Sk? zBQlGmh>YEWxTOZOI7Z^GUHbRS+I3q`Vpa=+?FBpx8+byzzqZ@=Fef?yP;MAZ3p~7&5pH!anoO(i5p1=hOVy|*q-g`14(?K5cPwDXr3-2zZ^ELY}sWDfKL&+-W*y0wEa z;D^cB0CSaHI zYQ!Y2|6Nov5AaCX^839gTwVKAoP7`Me=qRgmkt-|F&qK2@O2bxRYmrXsLlJ;+P4E+ zv$rZ#JQrYX_i0L;F%eE(-ofIN^yf@oRg8jwj$iR+a40t}QS=CFJ zK)M~LvDv>C8RL4m0#f4#YO=Or+=B;qCpf{~-Ge)UBxvJKa0%}2 zPViujySux)1b6?N$Vc^x*_AX+wY)CB1jG}csi4-YB7$Lj6oFo%sjis-)>))q|!{9Q^d>ZD-4hJDZ=DPS}ex3uW1=}Eu=ul+fwk4 z(&X<20=#4ee#AYZI0p?5YJE9X5PJ`qh?fBlI398-)m*#MfOK-dFus|0qqjdoHDMY( zVmrz!qQtHVN@qxM))j*chX%K&yt9%=?az^BnjV;iYus@iZ(0-rj#FQM?g#f`oMlNA z0=w-v^(l?kV2fy^TqNSN6<5cS7c=P&I#KC>fM#CZ#XeKTlHsd4@IiSa5dIq<%r zoB9ZY$l(j2AETwPXy>z~FN~WX5lGLBnZTW0_Y=uYJHLm*O;<={rzXmzy8r+1+@VfU zg*q&a-`8F{T9~JKBl3PZgJ6XGD+&~LvgLxlz4ejARqWNO0UVcG8IKy%G;btL%OyN7dOyH3%2uqUC@+qI$>cw4Cp(u)nbUze&0db=;rC#R5Ea zs!5iw$`vRUPDp>LM^NaJ-<8Q5YLc#aM0D*#Yk03(*@Hd&HW}XG0Nr2Z0NQ>tHy9_Q z100=6#jnAKoO*R-&Gvj6Y1)bmE64}aXw7F+v&>PRfqkqB`Q}UQ-xCLpl}9#uQ4Uj+ zR1-Wu$3M;{ZNp1b7#+py*I)HoDPJF~xx-z^{>DMBMP|%2Q?tqdw5Y1daV!#iEko#9RqSmt;@D z1@*23oqG|YPEg4@_sP3zSSBX$`8s^W%kB18osRHAwXpSMv*s8>=gCRlx=oh~_eM7O z`9{o2i{*{7hwEE8k_>9_Ofn$*dA34|Dk68;oo~U-?4HL+K_QmEwKj`?$ywYadI@pA zmRoj1K)oB<4O82EME4I-|B|#mig?TrI}^$6stp$+Gw}c`(v7o3S}y2FKXtVw`q75nyglcc5O~bb z4;Uoq^73ISizz=oZ6734v5vaf>1sZ zEMSLRr5khvtb{)np*ypI4xcTSR0Csh7X15MTAl4Li@$&fAyL1R)AP=vKN(8cMO?5C zu!d)UpqBgwtt`Hi4V9+bXUP)G!O(|ih%22aZE4K<4e`GyNpO6(3#I*L+UeMSpmF30 ze2gR;M*v{BHr42}3(Uh}Uu*uO-et9)`ZGN#9Ru6oj0QHF|u!VY~FUBmGzxo@C2-%#lPpQREd(pmPATS9(^c zHxn-E8HU~88&UM3*`s6ZLW1n|p24fP4OqPMr3#gxs6QngyOQ_VgAEdEdf4d06o5oY zf>2h9!Y?4mmlPOWTUJCD$S<{zp3KX`OxbD=K$1-b9h^{P`ut-4UkqdA0sjiy z8>+h>4nt+IZTVR6T*J3pxUl>Q)u4r;eO7$EHd9v#2b+mA6%D@P-^APoxCD3YboY;7 z+BKK+@B3D}sxW{8|}Qmb;rwO@6ca~ZM| z#xUeY1;pL{21yqJobj*i*L@_o?u25`Hjl)8!~L6Aiz0X_)X)CVbKh%o^AY$P$y&}g zH$fpRwzlcPQM|VnJIk2YXd}q? z+LMljmD!n3ev;=vMn>&;v+m|b;{JEy)mL@? z*^nXkeQ;@!TNpHpEzzmYPu5XLyju0+L;ZZ-akeDmoy zn3p$wW_lS@T<=okN1Um3+?-l);`DVOudbP0@<**4{O>J1tUZuKNmG@vmynq72hLjc zeqi!}?NxcDH#aqQKY2M=%W5EOBl#iKC+`SK<$zuEt})5Wu+YWeKnzcNXs9Y%Xs>n@ zo;5xwq=ro{?;W0Duf8`1EDVga^7MsplRQ_Ll-ychHSjQgY-FS!6!RY6GjvY@{InFY zoQi}sCN~T}$w1A?Zsh4lSn+!t%Co!+!c+HLX-PLCLu>LBG94KTqVrK6@X^j10`FD> z5h8}K{0fFJX#^eIa8OxG-sfHIdW?)aZ6cBD20LMChXwGH%kjX&kPgC2zS*f84a8JeH1uqsr{y{FhQlH&i+V7VX~jNY|$Ag2FT1JLyrWc0QiIzrV!9o%$F z3I>u|$YfQwya(tvL5M;=7tflP6)q;dX)yoM^!{@Z@)3&Yfl+V5xE!NzKQoNnBp{TF zKnX=TPE42+5uNg+VJMNtJ*cb1T(N)m2}(Q$U$yTVRQ}BdotSo zQKe1a(Xlbc5cBPoBC7M>XOH=nxnc>>9_U6AkLDD~+OKxF0jw0+PkPxRprBh1LH`U{ zc26L098q?*@wunNpJ#gd4yr@FrCQ9T0ewL}vkQe?^dH5LX-fYs=d9*m2^+WsnBi0` z;LFbYC<9HX>W@=rxu>tUMRTeaEk%T9f5H8Knw&ouB@!ilwMdLon5(Zk>C#^Rk`3`p#00&I_93WaqI2*U1SQfR5zzRvm@)DwB6 zX+y<4dq!dLJYmbz&@=4FmRfzlrm&M%6A1JuLyQ4vx3x_??AiUDYCdXE9Q+4gYZt_t zZOB$W2hX}0xV~5@si;Swgm~V0z1}VTYW#;p_&>#1okV-G1_hO75Ud-S4Kq#^=0+ZY zYe1A08|@$&9;GJgCL7v>O1#6T%-1l}k_NCfT+DGMZ71*+4|-R+{+;GO5CI7W z+CRjL(nzRSn6>~rgWH(GC}IUu2|uh%38EMrZ>n-R;mN`{wTBos=xeJs(inZhDQwF6I{ zZ6V6a!be_r@N_zq`GR3HkJt`!-nPAVa87YgCmirDoWibHPje)UJ6}EAJDt1U459c{ zk5h?s+$Gv%#8&);6X%H zQkSIcnr48P^7$Q9P6cxCej4KcorP~5qE(=fvUGm`6vt^wM-hgMBIh?x7PeXfw4Kls z*WrT%NDghmMetazn;s~vk2L*9)Pa5wYS}kTuC<>HuC$0z)s~I@VXW| zkJ%TbCJdNcK8Pd?_|-w1gp(qyGKfSOf6vUq3b}118v7Vm$XGEC6Uk=})!$XnTmVPU z;o9L_^%yRYlIrxPpdyn@FU5!sl!rB6UmuXLA#3Rzry_C6%KwDJ`#72Pg<>zk?*PUzMACCK8Ck1D*a7hxzXfi)MR zp2D<^jQxd>%$&T?E61GMzUZC4IUJA9b3>>VeL_If0o=Cw5&GiUzDEV^T+Yu@>k;!<7On4 zW|eQy`LxYsGFYzQd8V0<>k6yJftlM^XNMR5JD)kyvyu^Uf z=ZWeEP9Y1Ozi!O-uVO-T&3pX?Pw&4!4HO!!Ws?h0;PS6O-)OY?+kaaPsfW=%Qtnbg zqPzcs#3Wt9#Ax7#?Rj6FDRI>Y{XaE{5EY5i57+R%zCKpr_#&S9bZEn0QnA(c)v^0K z9Qd_>D(Z+CSdu=R1-x{c^&6q>!H1O{aGEN~Spy5{c1;K$dOCE#<^DNG^X$oN{&Sga znvlMFThMaEd??mRrgcQUq6pIMy%+k z^qc(4Bsys1E7oAVn!XOyo7lPWW0Y+HDvM@IH5Aq^zjB3mFYO4z2D|Latsk86VWb@@ za#qmpl|LO-r*>-_3$G@(R+0hy*!RuU{oh4F_`uPQqi?TTvLDO;zNiHfLTy^LnW?D( z9q!+49(&m-`t+43m-{)&u8ROet&qMpsm=}SoE1+oA)5cQw1A8p(okOusSRB!B|RpE z>!YW&M*PXYTu3H~002nIW6UT}O}L$kq@k3;s?+Nn?ya;r>p63SoB(DXyduIMkyz zcf)^XM`b=*r6x0WP-@rJwox~kZaXn4<}WkD50g_2eMOLA&E39mVGZ^j>l$rA3B$_s zauRRQE*m*Bn*gkV*9k@c(rNSEYD%P{pgT@6vxBjbcm`aBPKFiOZIbL&s_83J+f?xa zR(b#1cM7q>scM|S_>tl-@>U30x5XJVCVSSu`vd!@!u!bM>)U#3g~>Qt)lbrCBXbz)KXbHUy5yM7q`x0Xdz;njG#V~2oafj zJ>^TTkF`C*Ad$lZXScQ@e+N$8vbQ(j->&PAaScZfm;QXkDZZrruiDXv;>~6TKVA?2 z=eGXObDDr-KA_U`x#06or#z&Tdu1w#@&GH!LIb*GQF+6X@>S4Kauo2L}tW^;| zEEO0!d9auQsP?f{zapOI;q4XVQdaJnh@<{$_$lsk9R&32yNH-|vwL>1G+y!2?i+&Q ztvPHYJhTEH{aX1w;|5AK(q&!IFMG&;xRpA3?z{%=H9v&pCf}_&VI{<=-%kvT_=%-U zPo+jxF%bU&wn)fr&Qvkx(;I9m?4cR~DD5DOTuC(ncB^a3=4kSPUgZrT|H2+H?%9Ik zwiNhf#--^UYLOLVP{H$zu&iD+;@K$OoNwR2i3xsn76_bNE*HnyCz7qh@Ap5IoE)T{ zuql~uQu{5niEfASXY^G45d;%g zCq$09ZLGaApF<^c*ki@<BFd@K9rb<)PXLXmb;E8P!UIB!1W=VreCnWg1Lu5vX_c1Y5oP6*tc{ z^8gJS`Abyn(7?+GWn3-a;_&9qu(t*3+lgHJ*eY@OgxzI^4Eree-Lnmr@g^!J-Rj(w z@n!M4DX16H%x9jt%^XB67XMi%>WIoX4T_X&B3c^JFXQZV>Y|)F1_{H8y&`K?nLvq4 z1>W%q$#vZsl1;1Q2&}+}!1!`nA!4otk+%PI16=aqB~A;D6!v*{~#{#p1%k) zUY>&t@h(rFfAd;P;Har2qbPcuP=NT8&d{~*bS^L1kwg%=-1z#B0|ACw`=f;!UP$yD zX62!S{Pkr15BsMC0U*ziNQwC(=N?Xnvf+EjpKA-W*9|c8>1C=s=XV08^Pk|gwDzeY zM7o!H)>eH_c>Utqw*D+pQ3oLS^_^O=Rd-a3 zek8T8O|G_qXC8u+#-b5XVyIJOqmidA?gvD>EIvWWh2Y-Y#EMAB?@}*)ZM<2()Tq>B z;rf3@yPlCzWwUaZdf>P{pdgFrOEV73Gq&4|AqnK+XVr|tJ9XRU29#>*UUZleOFUC}L1nzAD3wl$Q!wFmL; z`&!IyvK5<-*5at!RMBg>&47QC3j>NCFxBk709T@`a*lBZDYTCs0g*x^ON{B*qEJG6 z=`dYa?qC8tO~RXaHi)2iY#s>?wPUl#6~kShQM2^xywA1-n4a}ms|UN;^|u0D5cT!$ z(*CGYQ_HO&A>t+#H( zX;zuY>aGt;$~IoSr^~I(V2Sz%;Rqe))JMMlOQEmV2y#eLOe^`~9l0B$4AgS*|uM>Uk0za3;jc2H6jdR!clls1`Mfk5cWbY~oX5H07^x25x}3 zCv9@=Oc)MQH+Y|#P>tB$yr_6rS+T2j0z_A+ja@i8|c_n3ziSQfcJ=mS#q+Ig+{Hip6rMOfF`VNuyJwy$WZ(#e<+W;ODfEhNGTHb2DiF*5vZ?u|H=aRf1HPXRegR?pV%Nq%oDLB$Hpi# zR05=C6JPguJF>qpNnNO`lCR8u7PUbQ=gotR_9@eF+nB^xkqImGIwkFA`qg#P^~W!S~KuVj=1#1+34$`}V&7KES57r+>=wh<_o;eI4CO7?nsel{TW zfU{3fo|i%p=MK&$Flc3ks3>)*ql8@7cs;&cx7qdiW{dW60uoLnGji07L_ku0esby- zrdlpCthZ42;85j`?|8j`Lj7G_BW#@fK7&gW$?Ns-Lw3>i1G+7+4Mw_$@1sHl=y0mR z)Z4Ec)}AxDIMF}qDl*EkvSqELEbq_39SQ88o*(d5K5`kMksW;}Ch#o9b6PV1=cob~ zjf&yi`rQqY_A1Wn5O9E%^R@RFF#TKz-Nug+*YT`);ve0Ldw1`p)?4s;1&k0b?}B>0 z;5_ZPD!Qt&UyqjII^XG9zutTDfAwbNRK_Mx=~TIcu6o`-@&(D-hk zGn~!@UotN{E=-(=?>A1+)XRCFRK4wubBRN1t_F4fwB5$8|tK%4xL@FT=z{-egzaC!)=V%nnQ&vU6K4bB!AhI*=iZpq$%xHM5@_ zh_*~T^u2=jdmV9o7>^e^Axo}>}-KuO3d=N^jzc0djV6K%}5whK5MQC-)HbnBp| zME7p)`?jeuBA=WKzWwGI6p(Jv|1Y!k0mN*@m*jt0@~FgeA};gOr6}5884iC~Yn~6z z&?>oveX|}4czD@w3t_#0Q-8JvEWZ2eJ{(*_2kD+CSD}$`&BYbj8ez8MrS2d4r;e;=g-lXNpS=EUA9Tu;N%KqJ9Q~H@0yAF*${%-Ie`IPQoM~BbsDw2l6_bHqF9ntZ7m1)Os)hk>)Mo{*<@)Vcu~<^nvK_f4W7Po3Et0~;Lx(ku9I`)W4eaV{OVQlRlSN(OOtTTDlpsAfGh?jfJtNm6^ z!0N4a_>bV-=ov8O3ZUV^pT{EjXzd;gTsPbVdlB; zOR3nQX~*gA0_ixugVKy9*iGlm{H?sCY!(zeb%+lW1|W#2%okR0HH=h?L1;s#4|Wgg z{${-|#c4Z+wS_SrIBM=SgD8(-n+|pHr3-uv_h))kOLIe@XaqNc$ zU!>O&!k|_0SMA>twu0L{>es4eIE80-pB!!OCU}HZu2%@LoyL+linZ zNb#uLMcO_Ak|r3*Fc3eWr#8z%?QtE#DqptLK{AzM(^39sdsU~%$n6NOnH}zgYbEyy`=1_r+Mu_lTPjp;mDj@Z$mjpSOIK=Tip|xP4vR`P%Gkc`MkFP5D zA1`7_`I+GDWG15s5HZJm0V++@=gGH@D8b)Y{4QA+Y2?PlAC!Iz@OBU$Z}&z^MeCfb zA!!BBe&#RAuUjfEfX22cfX+Z|kg{FwwXu>ok(m7PodUk&&Nil~N9*X8oQw}Ihs>Ci z)y~MmU4<9>v8bR;yDv1wRuLd{@F?D0OVN?dMcl_0!a@_gc$%N$DfQ(d`VU6~I=}&f z@x~LvaH&J?u=u2XQl$k1Rr$_ zZG75D0oSf4=p`f@mN=^E1Tx#}AS?qZ-`!+iFa6@-j8*ALxt8}hNVa!^Cb}!@Nn2%{ z2o3FgSC=S5%iCjVQCg*G4sD!Pb1;C5Ls;27EzJ`lX;3@%i->&=Qc5aDEay6e!aVcz zrjrW};VNi~{n;tO>eohHRnc%$blylG^oVfjkff_x7|U4j!9`^S6&6HT+#Md}m9Z%0?ACP191uQI-=YyFL_>fiJEd zE^c%XfZRUH`x3Sdp8U?ZkuEu$f_}H%t9c|Iq42H7W0hP#-cy*b9sgv>p$(=u#x8{C z`NNVFkvSwjpP~a4@NDynYg&GQ2@DR)kq?R)=SR2uguCS%b6sb$ z4pdrpIlsBQ*%Db!dlen?fJ6t_{S=rn3?Gp=SY0P$8cV(8^7}##r`0$h?#3a;!4pEA zR_iH9Fl1mhXZ|3&#?7!L-YGOvpXi`RIOEAQbJe9rnD$3H3Px@y+I}y%_taw5H12FK zl2dP9S`py9>amg_>vXf!MJQF39OWYGdv(VwB|ZnZq8$tIv3@x(CXxN2L|RgWyL?@p zPl8-Wc1{Mb#S(p;3bZ?0fkef_3*-gHeNS`ODc8U6e_j&eY(T1%rbdsCfy$zcEJ<&O z8MWh87}0dvf+h==$=SJA2ZpzoPm0kDh50hAq(EzotNdP%2ghMs5^VF0gG2kC+c0NI zxm;8(u~mOJ-k^)+PEezV?_bNACrZQ!>aC!_TfAfQ(ctx%u(is!6d63#qyW2R^1h|$ zsqxY>fKr=lm&0%>@Q-Ll%6ChmO$dk+Ayt)=n^p0E(T!7Cq}5O8cCa7N01j=y8IA+X zGFSZ@3PW}Xj6yPICC$SsCfdg>HdD7r?blAN3udQ zOQ408IHS#FaQ!JDEPClrCWI0)o6VdY{Rg!38v;%+8fhW%EsPb21&R`rH z&#jg9ZvcnpkvY&lRw;v~32Xt|Cx>qcYj&s-Zmi*rAUPlhJuu^}xf^|}!lKQbrrNb) z_GwNs(C>~o4~P=i7n7?`N{#-a3HZ753OOTgUrpn%KqKvJL5!(p0uK>G|FeHcnnrs+ z%71;=gc7tX5j_)%Ad1GE^`lOFHQvjzVV6GP8PHY=XU|o6g!lUxRF1$Ihe;PcNGCod z6oYZ9k0ohsgNBQJ7Bu@&s_462v=rB}>?VcVIz7|X{7+623NAU#k)f%30=;C$vsAEEyP}Mo|mDSA7Km59 zr0ZQgBm=-boogTm$5(K*8p5;1HO`&{?SE!Pyx4{vd{L~Ix}7E%ORxQXrjpx)$@6_b zrlwpb3WFExI!*Pd;)|D%&ac+x& zmA{~esSbU326ZK#n_RJ>=5O1|y$-UC!ALww3it-{>r`sed~9{KcelSL?FhZh&n;S) zQNHhgU}fRgt`C;$#<3IwaOj=%1V?;%`hwXLERERn2{G=zliGA(hN9;)XnqSH$P`C9 zB8afV_EGnou|Vs-AIEN$G;jba$rB0iTN<~nHCpmfIzYxgG(?Pv8MaCCRz#W^gR z!BGPD`P4lvDK8n+x@j*KUf-M3>V%g!?d^uX z6q{ij&>x*rMiBOigY|hT8@koz>^N@?FELae)agw;BJ^L?wUS#w0cDxtZAi6}c z#!zPE5V?|5vSZS{V0EJbs_)%=rUD#NL;JB#C?OvN!0gz$v2jAr7oBovbU5xJ7j=Hd z9t|uoQ*0Fkk{X^(L%0oVy~zjiNyjJV=}H@EoEFZ!af=ms$LR6|qGcso@(>3Yqzi21 z1I1FBWDeX2V?UyIFNZzQI6F)3px{YP5awEySMThyZXCv(NCUX@o$if)JO7=|$3lo= zZnt@NR@<%B)eVZ8^*!B^BB(Kd0@749pbD>E!A2Wx$R0I(G{9sfG3Lv{nZnyz9=~^N z>(X9zg6_>owL{iZ5!)O7ltIKbG*nV)4NThL%ymR(s6*b^yw&is7CgUF&A8by zR-|Nn66jH1bir3BSMF!uo_NMegkO#0i%5$4qS_;mYqMdP$|+9omJtReyIj2CdW)r< zd5U6S?T^%Lqa#dT+BI()fP;9<;UM^ddWC|FgMU?JF2{LNK0pjliLX+t=Fa^%ac=@T z`wP1LY2uu*9P{llr8By@SXo9&)$+le+Y{}zD4pj!wHCwvAA#&klM_s?Ka!qw1prIZ z)|UA1+nA^*1ifyjZJk$Yo2a9moPw)DHM~5PyZ7k2!=bcH(~}c|OwQkFh2*8ur_L3c zh)eRqcjf+ePFGpxMh{kv)yN7k$?}jH6a6rTF&dMRKpveJV=ZZfA7|g$xCIx6%c`P8 z)9v6qhWme(plfi#Um05K^$E;!3^rW`_ZW#JQ zeCIF)n6$88IQ))Uhd7qjEI(0&f_81sd z6Eo*$b974z_m*ZRgL)V3omkq7@^HfVrC8ZF_=slK=~*u`p~=?)%d%snH1l5x4^0P( zZ`>Q!1MR>;xBkXasYAs9QM9ZfYk;-B3zoj#V2^}MF@wiD96)Oo?M1$Gp%V(}MP{l& zICM7n=#EOpE|G5O#*+v?oNjif)#AbU)isY}X_rHHL2ql1M_P>!jfIlr2Q}bZViVs8 z89SN8v@PfnF)gCHZR4(TH2WxK<}$sW;O}+?Ng3CkTMzlnF`cn`g=n=2<;R9QHt4W8 z->>o+3|@Br1l-*q){b*CGj4VrCtL#w8Azn7-k~Xs$f(<70+Y5#$f$6zV<1?@FYDuN zawX6^))nMLF?`wV3Po?H4_!Y?En~-fdKuf8{?=TA*LxAyw`J^wI9>VkbFjn zgS!`j@u2c>--X^!^_Fh7A?pJ8z9o_Fsrn25YEDOdleOR&h6I7=FGUpQk0t7g9}*)n z9%Oky-HNCe5c=h?5ZI~V>4Es=vcYA_pf=ntU`XaczxbH$py9A$b}c;Rqn@wnkhtuN ze+>=J$w$!<+SL5i*^4}Zdh<*NgP{qH*W20}AIAzssLxwSpM7deS_Y84eO>^j)<3Hs z5=Pby}k6GPZS*)A0la@MASBs5Plz_N{DZ&R(kD{{a_TV@86}wOQ7LAcl z+BA%elJRgkBVK0&F?O=}W7=#XuYbs7=13tEIUG>ai;+1g&#k{DVlq?jiq4SLHSRX# zS|;^@3u%QzCGEq<#`!on&c?(j%LN;ngZo2JcR7thR?=@?QC|H1p()6_AE~OBd@d`3 z)i2dVgob8AhxR4@cha+85^H`+FO?w9;zZOThbEq=o&{et0wp@M7vxB0o9 z$5*Y)$8N!P4Ptkg){A|Vyss69xtv?#@Thp16lUBU76bJZkF~V5YqI$l{Q2KETPwOW z1YVIm?(G%bRd)X7vFmEU)z>)0<_b+G(@h>TIpuY&q^e{QVRsJ1FhFim?-=nh4%*kQ zV38lp*LuzeohM}6NfEJS4FM&>X5L3q=%Q(JD=#xvdD_KM$*tkxBM7?XsqTkuD&!ip zSXbMiJ(zNvEKrtrGu%Kaf|4u#ochluGkM}Cca{w#%Dnh6Mka^E z$R+YiXKM=RB+!87L#-Y)RiWL%7@m6wn>{CemqFTPZmVhaZbTPVd>iz0YW51h?f~~D z@WY!FRVIkNO~RKXA;(m~i!a49v4i=!O)uu(TequX1$ds)22=MhmQ!CE>4!H0>2%dQ zZzr?qiW&8;6Im_pSL)qz@b!ixf?sFifRJAJ1md!;D*DdHu@2Kj*H3K~bqce_P)Gx~ zsCZc51rwyyCAFT$*yECn=fSk7T-ZqR*NHm=jcJMvEO_MDvGq=e6kUi*V`PIE>Q*1W zQmk|uQ5kXG$!FCHF}FUF!|!o^3{(e5WOHJCidfbq(eA#^UK-G4qw7EkSzE@uLrH(X z_w-lm5$`ReB0;cxv#$PFun94~G^Vo*IcosGP`Bq?Ys2l2DXFlB_wXz$O3Wg6i8OH%5 ze$;ESWv;qPLSNOOz%fxds#zKSj%nfCyclL6UZNlT(LL|164umPlHkZ_ZJW(=F`L)b zlG&ncD95s=FxvMc7C5ouYVn;@yH30_aD@^za+?}0?B@c!uS2uLr2DDD$ze?sb=ko_ z%da{*7gzlvJf;sR0@Fc9%FqK*8VQVWx>datoJA2iyY2@`k|XS8yoa?nMFj%0e;k^I z`6O8(4ygphK}AKTMMcX{*rOSBM>@RdQVsPuEou_<@^T}c%DOmSH}zJqM-?bQa!sUqR&V&$ugi3ZO$wWJ6* zIw}QQ-H$UJ^Xz&3qgxZ*hGoxwkL^k=!*dymfb>ol1nz61=SYsvh%t!yG-w;8QEwPbaxoIbHwcY zTzAtY_KT{cmnU(mZvxl`*3$89Z~5{pGi(yBrisF(q$*aDX{XI@cY9E@H}JIUWpdu2 zq&&NW{qi<8#u`2Y+9=)~ov2|!GR3ix)R$tbL|)y5$6FOE;vKh>hmsv-GntGYTK)|c1GvBxcuSt23H5%wbvy)q zd&jV^DN~(EMKfnuv6T~XUn)jFA<1}gyY%T)ZA)SWteK$^P12c0e zX+gq2<~_!b7xJO1`?iR1rM6(pS&`AaE%AcSd{or8D`4@?|G24)iumZy23@&`c1B0L zwtepW)Cx-+SbIbVil0bYK!Vlx!ez{;KJKS*_R2St0&xMgo(_>txD3l-E)JAU2*#wO zAK(TOq`9aJq@3b6c%&m0kb06>f;%f*mukT`9)?rP3-by(_QqQ%jybs94@F(B^Rb(0 zdyn`sGOWca1uX|6eN4l`omyR?QXc7?qNOE_oj>?g#*HC{51kB4u4ZIBYq2RA5% z%zCKjhi}kbEX*f#3m0T?Ebg&>Tyd?uj_@!Q?Ys@};@_$Z$r+I*t0RiGvg3>ce575@ z!_l}u!kAb@a^BXs6*g!Jr`J%LW2Y6MB&eG0Mx2bIx5SdIS^r%wkHX&|t_k(LOB?|f zUgA>Y38*&}+f=!4Du0`{%eC^2g*W$jtmGRT)IfMnRy9eTjg{Bt5AQcFb2FZ2Cg*pa zTBava7#iK40aA{KdKs$aC0i=5YtA!_3b*_a!ND-hc<$c~CJ>5zJ_C;#)iY+N9Upx< zABy&8Qfj!{9Y5%qFmmDULa+oLguyecs`oZ+d@)9clBbI#wGX>^wbEeAmpMV-O~vqyNr$xa?l>3ip;m=red#iYA4D`lV3FmrA{nFSfra|Sg7jv^SyBB@)gCH!u7EjJRo@++M z4|6lNKVMIq%&|d$acD4DK#W9}1KgQ&IXgvEKbOf4X5QF#P+lslR$Q`J~_(tkmTSkw1cd)klZtXeJZ~O~^4`vPW{^1{?|oV_ z>$=r*Z(<)u&BLzyas(m5sx9Pb6YzWBEPGwt#ioCOow;av=6b)LGPQl{WYETgD)B7=qAoRDRDh1NA{`r0-)DgKv65&G9%@@DEO0XE(yoowwe!aEYThh_hlXBRPRrIF=!3AMJ7@n!D$S`l|n$x zx8yyGE=TbPoeUjM?H3dCi)qw0ex0#)pEc z+lSwSY%ssTS*t+7(8e@ryx-AN@bMEAx9TbX^B?VS^}^oEvLB>vyj4CFg0P-;JIO4& zOZEQYLGV~JOi}7-A>;35pJQhZX}|9NSAfFX3h)h-H#LQ;#2A65`4ev0@f5NWoVw1_ z)03H>of3|dYDN8UYTN1G=?HVg5T6)DtX1SVJz9LY!@hUF8O7*eeWtIFXbjrGAs`@( zjz(9`7GJP8o{~Q)5Gs}I#YJQM>yiA+G(}8O`B@t1^`uD}mnW%3nw*jBH*s!Ozs!R) zMqpZ3a0ySI1?@xa>;W5sE>ouU^=qM#gB@l$9#hBI*zuYw19_12yy+_xiq6pieKxhf-Msd6}YdjXxf!T;DeE!-7@X>Z1_(fw?$Nv zwGc%tfYR7`%OXed7m^Y^A|9U+kggoN`p>-MEcvOZ@L!T@fQf(UPj56$6DYD=d$5NcSN4Q$LTipojhq#&v$8R zHAY1gHA;*xd@J-C67zfq7DqJlQc1ZXS*t=x==oGo%^d^;zWUbf;#mlCS~h5*0xlF% zqFhRZ>4yu9Tv;4k|`vpc7Y{CN*wCZ&&*E!JflR+*>!ovUTxJ*J`xGhe}d(9$!lhx z>t;-k$oZCFNbC1e?6Ks=m?KlLd7I`vl%>KN@|QrzkP$c(B-qOut^a&LhW)yweN)YvxBVx7E zSU3sB8Al}|qRQ-_W01^}7LFf8wcdcjyRMr1Tt4~8N!hU)V#1}ogrXH}6qSyHoQ>n! zVr_!{GR7-!)35?%KG@{$2Yym22Y%VjroA4}c{Y!!YliP5e{Y-9V4ZOq_$^Xr`9!I+ zYw1%q884p7rU)rbJMra6JEcSH{Z*>Gh{4O=FD5=@mS48aECR@5e9xly4Dx$xuPT(= z-^9AODHu2taY^{t;2r{dHyVJT<2+!kW~&5jEjWI!B!ElX8li@iy#MO3v9MwtxYnu- zDanXe=H_rQuw=iH!M||U(V);T8;O<4?19w+X?)hTrsr>8>z7r)H+erl(qJfp&OC#P z?DxY<&5GF4Ad&2F>D80`>0*b+VkNV!5R4-pkA$BV!uK3EGNo|+iJhG9x+GLRJs_=F z`4&O70N~San94iFdm(_pTMh8PtAv7shkLJXD`C&{yX}D>?TFh-V@2=&wqwK<*p(cC zLQ2kq$okoigq|7mq3>Z`W6u*tW^z<#D zEA_0i_O)vES?F9;DMJ-}Ao?d)xo$YmqK0kKLR#i4XU1+!r(Ej?M-4wPL$f>;-K zMSvD0Q!Lj=t*0n24>!r6+3{SE*Ch$sK`JG^KYuJnt93IU{QPzR!Jkd$UoKNRh!bFl z8G}{u^~X)o4&t@S!mpOIJg!pR-Q*jypV_(=dcm2I6@}bHa6HVc8BMwu`jX%zeHoDT zR8J(Zp#n5TUE|?6nNZoJ|1S31>X)j zhT&cU8ZaE}%gae2s$xkq?U=HzyG4SOL`90RR74T2Jb_9`2&sIh^`o1F>RbwLwTAm$ z3a{jbiXJgVR_JKo30**lucpOBk12Z+4nEAguuJyDems>?ofieOVQ#E z#T|+j*Wxb49g4fVOL2Gi65Q=efAZ{S@Avx$4vvJCm1M2C@44ohb1sZN18zvSlatV) z4BlO!_6mY@ZjXW(7fXKWG?@xJx-!<^r{xrRpc<10^!NplhoxPSAB=@bu7QqP{id{3 zN2gHVLn8GXi9kg{>js3-AYb!UB`%rnzk*vh<8N5A&P(E-FW3F9UM6;W z>zJb->wcMwog!y7iXaxjOHad23BMw>LW&I6#dOS<^R-!`-d^>I%evz)!F!c(6DjZFfeBateemyA>c2y#pE{(mF@~X;89wjI$yx2w_L$E8 zf=++2%`379=Q7>Vp9`jM(JOo8=!oWzD!hyt1Va{79rhl&Q;ZUj~!1X2RHC z>sP|X%SLNzNOUVQ0?QJbh7x*{=W(I%zpps7-pUqIW`yPXS$QVi4F&bocbw+KH`cgx zG2p?8Gac}|?A@&9*VACW_4dK|v9$4icW~=T$*=`=mp#NYrx^QKs`St-LLOKWC>8dO#4J#OGsVb9mqcKb5T?NkQ*94 zF5o_Id#)nYVF8zuSy6Nr>jx-9EUwF1jRR6Ja`gH{eSzdTz11SkiRIGEv^&na9O^n_ zo?VZ&4<@(gIlgNL#K-4u{7_JE1JxYPDEz*+T4j|k=-9Z>UHsRG8Atrg@wNF*hNh$J z>Yz8DdyV+J%7fU);Z!kaXb$Rq_o!)$udRz^XHw>??Wa}d^3@5qOpuo*0EGsTPYaSqkt&P8~j-z*n0hXzi_CQO` zg>X(SJJ=`xny*<;l7)FK&W_CA!U;gqwiuDOZf0595p=HnL6|!>n4qPb0H2e$Wxn9K z`nu6=98cYAj5MLKYSbv@RpO_&I_)CZyI;IklxE?T5>K#$YydP1vyH1GSDQSOBhqGf*^c!u*{VvW5gA73XUM7fOy~?&uVroidgSK^_veq7+jUc-|HVea@GF~AbL0Wwy zAo=TQ1je?#&}V3z>5oSQB(9=Df_=fmXHX+2+^V0C2sJ~n08bY^3TqdkUkfg7aKXPh=zRnB@Y{~Kz~ts z$*#R{782jj{$MkJvyI=H%Rl1^8$x~Nrfa|20JDREF3~vnr0sqPgJyz47>^>VJ1i7U?K~Mh9`9|)<-_|#S2_%qw-FYZ|&jF@UslG zhwJRDKt4fF64U*?a7FL&&onbpP9Tl1(qHxe#EuW%s7hv;H+0{WWpkIz11%&Z3giKU zR^Rq@tModuTgZs)hPZ7h#c)rpF-_th$0z&4{8Z!BT_BES>k|PSa(q@F%pC7nJlgwP znjQSc%8kxwO!Y9GATs z=aPf38_QlL#o(A^H0nC?u(E%kIC@eEh+@1+EU4)dRL|0tlJl6AZj95ss56vFm7R)YOGrSCy-2tPd4JvexJ1E!Kq7`FAs#*v(EFS9g7Nkar zgVUYw!#Kk$xOjQUT|cUd=5$>xmLjbSx1uxckCQG-vI77J9M0J6PS}&L-FN)RO+*3V zdr?YR?fU&$`47(bN&K)%u>AARwMnZgH1uhTcOPGzVp_Z)p(^OE1&X0PJl7d9TSiv9(Sb$l>m6%s z+wk`iT+JpU0A;Zm#jz`h=+ae#Fd{kj>@BN}yoaM941dCUY!>_-^m-|iQ%s%1UY@er{bY=W zaU|D%s&j!MzG`FdbtAu`_sbp2M8t#BH+oe=6B+WvgMl6?`(coDo@ZigI0Ph+a8y-Q zy#VS|RuG19d6kpbFIIo2jU1fI6C;Spv&`9AnX`*eGEC-}fjVWNcxzq#?zjU6ZURr9D}3*oK_oMoSm$tXFVA`wSMygXSyWhw&a&I$&hXvV*lY1 z&F@i)0X;s4E%0cGKX?Xu_lthaip-7Hg7)-zM;DXs?YnWLF?~QZGjZ13#9)Q zia}{Q45UpF8!u+#TKIRd`%uj6DBVx8K?DtK4AUQt_9{_4Q)sHnkk)BC9ZCs0UqzW* zkRuTmQ`#bo_vv?D>^tu$`ENT&x&fW9iL(Os=vVA{70Y((HjYS~tTv8Xskj)3nAzjp z+;&uJ(ma6mg}hi#&NEu`~o>Pu*Tm@OoHi+ zz*zG|7h(c*n14?RD;6!G;wPbu*7+4koL@4s3QezvMUO_F0>uiD(bmenX%Nj|Z< zs_p1F9K@#K)dYK>Mo05snOwLODc6MG!o9Oa#r$3k%dr*|Dk?7ItSW*t1hA4^!*Sh9 zqE-19?^Q2qB-`m8Iw2uF^Rb|eu-~h`lvACIBXC&f!yoW_vlJ;iJ^YBLuSjdltXkRq z<50Gr{Ts%_&#q^0w}DH6|MLlVGeG_}_tnR$@!~*>n_mDxt()GFYW)aQ5BM445P8h?!MyVJ+pK(y$M@kAT+6_l62ynmqAHPR2Zlu4 zQ8F&h2@`!PDA3vQc2;j!LBeTn8bG|7NJ>YH1{Hia-Da-?HEPZwlEP%kx6+CBh5c9Z z?&n9wBi2vN5rw>M+}u&9BW}u>`1yDDjSt!(BR@HOULMoAEQELC!x;PkGwlf0u_SOB z!qFa0tM{1Bbe?*^QAei*Aq3_bbm1dcY>FCz>)9daLy>B=VWrrj<3{aL7o$c_%4<&X z2^jsQ3tlxNzXt~5Y@+%rVBPBKUzG$*B_7Do*% z;1l2gS-)|K+Sd>Q&AtGl3W`%u;~MSFu?Ha_QhRZ&s)+1DniRE+6_kizKGhq^HxVv% zGDEql6?Eec_CHsb66}^xMd*!Rxk@+7ye4lZOngoP7{sb&T?f`~_@iA@7ElI>xmqQb z1n3&MlC?YyPGeJU{B~1rvrd^4^c1ALGN)WmAc<)t4A8l{>v>94s3!Z$q4c{6LC-vg z{0oJEQA_FV3Y%VKK?T3ur{}AZPdXh%bQqK&G-S)kWQlah8PjVBB%ECcVhN)Wd1t@*V__|Cz4yCqv``7jKQDjkBmb+Q?j!rp8qP>1J%rH8sUV_*O{( zFfA+`hn;Yjd~&+V^o;_7q}4SCsM>2;GG1yCFIrn;uV46+w$OT36Gof67*hy=^B9kW zk%%b5`6x9xuGOsIWgq<4+QFxz!onPz)|Ja}!utUuOR2TbzD-FNe+#t#v$}OdfcsGG zr`s^x5+`b0ot-_hp@y?!sLkK;u+A1Yt zA;i4xKF5YHeAS{ub0{yx;f);qy4g%7(|qE!+xJPJ6h>eyU(>OT0TDG2JF>VmN@>$* zrZCD1emSES^!9qUq*uv4o)CY%VT>^z_*`V;U$RA8a?%23o6lr-+I8L&3R;zAMT(+- zj5}=Irfl!D)Y)DC_t|UmLZY(`#!WA^xgaSiI|q;{XnK#!D;n9<>8EC>`7Ej_C(ukuOziw z6!qxzOjFu*+@siR*f;PhOVnWCYXUyc)MnthO6BGckXzLI56VKA2%LhVZ)$o4eD^3W zzw-_sq))4`NeVSkgmz+=U+?^RM967{a3vCYp5IOC7SJ|n}YrNJ@EWbq5Q?p z37hp>M_*0<2)-}on60Y^5kmLR{OsH8O z%{{$hwQ^Bv^7S7J@ZakGG>Fb%JDsDikM;T{JbPt@+7$ACzZg<*o8v}dFdop96_D!t zKcV&Sw;J&003sKTX8&iw0ez#)u=3-rc41W}tu2*5&Ot&tg#T4IQfypO)Mcia#7q6b zU`W!mgWZ279{zLq>PXNb$E8qAh6FrNtwD^zq3^FTwQgvz@^UBai=KoiV{SJG0>Ra*!}7)dIhUbnD#*Af zFgZdA>6sF&HeYE<+e32`OT~N?Wf_RJ~J=OXGPfrl8~f$Uisd+i_$uz{5p{ z$S$`7#lNl~HZ{wBf~D35Wbq4{lXic9v}Rq}UAGTz3umyC5B;?R2@87@x{&6>eQKPk zP?6Qvnta`{Gd`l!$+5oDALsALeX(kF+TfC>t~g_GJak&oWtEMyn-@7})gy7fsn=k= zX?0uwCZyt{%|Me>oF(X~&hrIYdNeYmW?Dw16=a_l+gPE5?OpE7aA~`C-dCz;!(t|} z4s7yu8<48d@)-cZlJOF4WCE9$dE9|gG`VF)?jlj`*Voo$l#HnQo(F3Iqq)C8RYt?b z4hd8&5_;;)L{NTDvsn^a+DGI9XZh$Dn?``Jt^9Q?-bIzKaxPkR+VXAJ8M2-~=FIJ| z=ZTR+mdD z0RIw~NbzIf(wZ}^GZZq#?N!UA$Fpo=&@=kFT>6(im$XA?La9^Lr}U-~|l5ofxmLHPde z(g^o36ZR`49OYO8K+|lNhssGYc45syudJPZYS+@4sw0_e+~;i~-FYy0(`oq*lrdT2 zXM+$spyT!`MA7G+-9=u&`lfi+Ow;Q|61{&Dz^5`Olfp%oUk?zO%IBCZGrJj9Z9_2i+j-JDOyj9?yCXwO(DEO zwX8UGSs^dW+R?6b+G|YXb$%`OOR~SCvJYt)6i$b)+kB;W*}N*Ko9U6RqFs%8J$a0y zZNj*f=8FWv-s|O;N*C*s0GTFJMixXG8-%0)B|j09w1TE_0w-O+xi+HW+BNP-N(SG{=oJeka5uf{AKq zl&~(VMW)dd*up0qUMR09MAs1RU)`(!D3gLA<^*kOiX)=wUa(Xxaky(jZDC#MpH-<| z%zG6t85L`gd828_jMmd2&4w&YC^1hm#E{O2CXYN>NNw z6t`d?)MI{bkpZa zI-k6+i8+ z2?4EY2z~Z4P6-l={izdWQ25_!W4U5i2XQm1r=ow-W|YJYq|#_fduNR%ZyGewsG{02 zX*_Q!zPm1XTF;&>FE|%sd^}Ul-_>jcco2?loz8~}Uk+mC5LJIP=iR>b?SialxST%! zjhPS=UoqlvE8bM}X^48-PD{w5w$)KL~m!Mnw2D7y4c zd_xe|7>UZHTm_CcpxZsa-}4+)Ax z8tS~@?(ZM$>3`tnzrI1aWlS5J@dG>aEQFg5Mp+TB6d+*<=r)W<()N*vFLG3bs?Xs| z0$Fl%3O&JyAI=Fr)(3t5XSY%*1zA)?om*GYQ+X<3ee@nmf_S%zeS$c0j7wmJ&YUe2 za;}k#WFiL9;ri(1NVd}oMVCSta7@Abt(L+qy^e!pO4Ch7%?ck6J=rD^NXzqRZD@>6 z;P*ZxCTcm0fIv~rk4kzbiKR@A{@8+wz1`!ly^Gu1t@Lkrc zQ)n=k%Lnkib$vw*+q>k}w$$fcftI>o)cHJD`NQib!h$M`h(eT1>7YDb{Pan2{gK(_ zP@7^Dl;(`eHBc8}3w_))n6@N(FYzGW6I375&dA~}v&>fKcHKxvS++(eLk3X5)?S5?G{SoprAPa#!A zy(8y1&f;|?X+0M;p25~|g9J-!0;x47c{VNW*;z~_#8V9gnb5g7{}*g3VVArCDZ#=7 zEpPVD4Eaa}Ex4vp9ggjgn53Mxa0kvYfPamNc&t5O%>Xf&;LME?J(tpT(N>|4=o_16 z2p(+?GpM!H!YKbUGNu<{oFltwnJ;I8Og#24nj` zX0CBkmB%al@4UwFmJAgmo%DM{G}o%Awvq#F>NrKLf$oPS9ee-Vbo-#S0H$ws^`uG-VmDL+8qhIriQvjhlHdvTnhx`b}D3 ziAPGN7`iF^y2XV2B)mr4K^&Z;0>byiY~XY#B|p8UO%UI6B?sO1l7=PnsUne#fECimGitxBnt!GJ7LZd zy!C11GTr9%VJnyIY&7sAt)|kww`r}PFfyzOgFehsn$kDpzJ9AuT?=6*9C5lazDCtO z#f2i@98Q~4#&%v)UB{&0M|@Vi+)k)b1oqErNAcSaWZCFe{ph&_(6^T=>0Sl7$RV=N zsJ5B0FPWg9@{2vRiHe?D&#X*3WZMFwv^xrQF;oMySI(=z#D;{dvO<#^xH}xxX9bxY z_9_+pkN}6m^2XdQT*zU!>KJd6`J1Cjl%Dr}vk#}|>KT)}Lg zWNwIIR0JZt)mBj&CdDeU7JNLP)<3VJ{M1+clikdN1mCz9$jb7&)qAx zfap_7j4M3JtriuWH0EGm*dl(#S(*5lU|Q;wP@B-pRzbt2nz?RmuxY`1(6g`cvhwAR zb0DT^-y6y5t{s!o0Nf)K4H<)|j72d;%PIxg%uHOQb=7Go&f9)ubJzW>b5RHbYFVfw`HR!_)rHhrMcU0&SJ`U#}oVX@aq zC6?J$CkIadEGNk<;6L#^PzlkY#ULc>LzBmPsL8fhU5p_l$dJE!w$p{3xUy2dC|nHEZT?q(xN8 zY8x}0UfWX-$yEG)AxARLE{((XStpZaHA=;1^!zf$bT|kTtUTUk<2DQX^7f5pD$}%c zX;1rW0n$?}WAkav?UdI5to_^QT?g`@yWwne4sCXRn^k8T59>aa(|OH%gA_kXTHh@A z{7;BRkJ_@Uq?rhS*20JAPF)KAf!K*xMKw`%M{w=m`#pT`9ulV45<-b9yQxJ79^40) z^S5Aj7L;L$1TV!mkxB;Srk zn2g2T?L6}4dDYI+Mz(QI#cRZ&Da{AKJlx}bNeX%APnhP@Qng>^e0&RiPQR*M^VgRT zfc70}ca}YQ7AEYSDNp$@HFkVsT-t70GI?%7bCE)|8PpIlpgvGg{}5DdBn1T8mAoW0 z0pgExoLQfJ-MyFt58=wd#Cu>p5#;Si=cVjp*3)3-^K-N zZ7(eqfgQ*Sn(~yw8-_>@0E<^6<4I}af>SudD4;|e{_!hcv16KY<|rFxK!rjBI=Gpl z3`8Kn4z!E^tQ8sIw{$Z@g=SZ9N^i)t?o5SA5GC#ZDWf?~S8(A&y4~1-9_1ZhTLFnh zt!aXyamgq9ldto{9=uQ;)MODnGIr0VKT>U`Kc2ljjW@-}HucAWYsoon2dYOPC?R$; zhOHb@AI~bIWbE%Bd-(i~XMmoa8ylP>bgq;G4rTNV=uMxcG!O~XW2BT=RcDH?T zBhhLD`G)_IyduK>5C+uDe_J-G6A;?eln2yDjL0U6gt zZL7u?8kuh>$>@m4S7H6}>^8Z9WCdh1#HNCL3RXX;;^|$dS9!H{gHrRy$ITdy@)p7@1peB`&_CHsKhKFgY*R8YAPfkg@6=J zCXQcwEGy=?#g50ed`;`+&1) z_4z0J_W^F9VFFP)P#`y4%U<-+qH_68s=E6{^o&rmcel{voav_XeHhRvf{o6L1t?mL zGmoz5y`vW%!&oh_^eC~YAii*COlU(mimoZ_S)kK_X)b#EAN(Pw8(_Tg}!E(`YhEs%~h z`}?deZrvvf@(F6grU==D?p7^msPp-riHyYdr|0%ZE!J}zg+i4#Rr5oh#*3b*0UCF0t<<> z(5z!3qJ7|az0d=34A#wT2nIO8Fyh_1zMV9ixTY-Lume90v%G*bfM9qu%d4$smCk;T zu3>TL87bzQm}nmd>4MfBM?k9n&QI^Xt{>HT4`1V@y-8=SsB)V{0GPe`e;_-?RAF7y@eG zDEM-)EzS$JPQ8*Kxo76&>Iw}AU+NN?kk@%rgfeLd7>vvzG97G>RR#nd*&Ivmk+m#P z?nJ@@&}WBZzkiY1)3))7ulCBnX$~^I%ypKb-O#glBS^4AC-u@*gIv+p@e^c3GOkK7{FPFxN}!zqLw1IVST1c^JM{$N|wArqeQO^jWRHC zdHd)rEli9pjl~<3@D`C-UCds+el4GkS=%W=r4s1K4&C5pDe#tkO)~VnJ;Y%{{KSpV zoU_RKQlT&=hW;ADI9{+SbHgl2@)1;@#GvZM&Eoob<${k=2XLWt|4gNfX0k4A z(w17KtR;n^-5!mtr`I#w6%MoreI1Fbk8hP}V;jEb>%gVjqWmuZu+O$ayG6Ag6OIu0 z3w?DgA#rongtN26uG`(=Ml19^hp^DXIi9qBSYdb8z-#r%<5h?m_A>;KIIUf zBa5(;@x5-K+5UO{3f6gfR_wx%fG`s+?At^&1!!shDP$iupBl~*LU~2R5I_& z)ANz`uUezqIUOX2qsOv5t&iqy{T=Tw#V8fyHWf9Dw3W*zzpiUJP%j{BE;ufHj;NlF5TXPAKFD7v)S4jUBwZjUf z=;@?K^R}NfH$0Ab-aU8h?)%iHt$)|kam7Uv$tJm?{!|NtZu@cQ%3-d$y$DhI=TY=lXV;3M2KX7~T1+L?5dugN zz#I^0J4HAR;^T2rM#DRm7nFgj-;L4x0Nq7p*<#goojOyQ2^4l>gaJNzLAiWHF`61P z`VQ*wKRY7b2}^bDCO$UEo7d<8A-8g58}qiaU^^4gbmel)^fQ#Azi=GwSWW4ZpsnxSV$l9w4Y0-lknk z#!LqeJ#`E5dL66lp`z!Md$;!VQzca-g2G8eCfP|t@HZ;`20y@K*)yY!Ktn$%=ADO$ zPjK!m>#7uaVh_!KrEXn#k_!o9dGijmcQejR#6uGQH5)B%AH-;Wygb8974PMxEIV`s zsy;bfpnTlG4BI5|-4?XAiyn&50CS@Ls{)}G2we z^Uqu?OrpMVhotqYzMfX<{Un=Tv%hedIX7HqJUuYn#_E`%vXv4)4ys4$2vSNjr>Uwg zh1{iGbJJ)5V2Zd8vR@8d5p7w)1934zcgm-Cum%Qlr_hJ0nJZ>o255H>Y?o754n~dQ zL}JxZS=zs32+dhBeVX){(#3(D7lvVx$?{%{Jpc4=T^Xf|Ylz*+ek(33P?3?`~tbUsn>>c{-d%QuE z&4km{kckw?%Fas7=xL!4^c`o28?;l`9Z2_S?gK3@1l>s6rotk7*7I?$XfcTkMHT{W zK(81qW`QC91|@znjfR_P=aCU2W~=AiJCBn2gnO+R=RfJLQ_~&O@sx5!7Jp3Jby8>1 za6x)oaohL%@2q(-x<^v7=vOrDK8o1PK{N>LQM!6c?QAO|IeP+!=xbwC~p*hxY7>?f2Sm?y&FE4J5(2->)DoOW|2vh?(PIp zs3Je1ve?f=Jn?l^g{gmq_#v&P2i2%I$KXLyyN1@r~<3(3I^>1TkA$^aD4^4ZH+ zrMb~;bk2uE2{VMJLxYA9$@d6@Vf$;(@QiU_pjN1f;9Kd#k`K*nH^Ci~Pm1!39jO-g zuag41TikS}&0TSyCMPg=W3)e++-#9#>OE=>C4~aN!h-e!@7(aGPMFOv?27pDS7l#kxZy4t~-_|?KamC5@dj!}&k zBQM*f=O+9WJEv(+WO_WR_Id)Y5^$0bLbV+devVgA6(&f}x{M`VZ}wR@N^Dcpsw;yK z52F6MtC=3fXuKyjd+}MXu?JUU-gaow*nVH6E7Kgk{lC}l;-(+P(AZqNgUg+{a~a9o zhTBW;rUWq_ShSP;<>32Z(^eNShvQ_!6aw`iF5%Aeq;a4tvN{ZEm z>ho)ohST<|I_ar6`DrkpE@gD0G{DVMJ3F-aj{v){0=kX#e2?!1pu5_zo7^orqE0>g z2HBcj>J?s4Vt3mzCOeKp`9M)X$cav?p6xR(BVvB~aTyI?@Hd%oniVa3j)19egwm7b zkc<8@CGVbLpy%F+{gpkp+Fy6Mxt{vLcePnPlg*$0ok5=;H_t3$zRHdQS{`urex7>y z(xK9paBfX3gYg+l{UlmFpTOu>Cg|kvyr?oyR4cdKyCR2ob3oR9R-5#d!-KImhvhPq z5AY5;nm>Zts;P5;3Wh@=lRn*VktVWM~xTk zb`G37(@DSSBZGrVNM9-ydfD)Lc4d7FixaGe+Z)1g$DEJ_nh;^_KW^O6eH6kEi=l-@ zME3hopPUeya#6%TDpnH?!Zbuk$b|Roe!4jcZR2fkX_|9JP~7DqUm|JT8xrOmgyP@i z2OswaE;81#aZ2&D8c_uRy~bc&cJEDjUw{P)J4@O1HXMHQ4&&Xs#7RQ|z$Y77;=b)A>$Y0tbi(AEKG zD3sh97n!z`6S3fun&NNeT9+Qxy?b{~ru4?FKizi!fM6PncgT006>7geZxES>Ib)V# za(kV1VnK3Ce?2g``#@xQZ=ms6$m_nQVkd1hZZoCw*hld;$0B{kn|^YQjXEp6>^YG+ ziDtgag(>j?g@QE(>`b=M?_?~>A^#w$LWczwFndJXemz+B^6MYVUZn}-;55io+2N=R z3kbmL@M*)Ub-4~k&0U&as5XWL7#Mbcsnmtk_XKJ^Y;{05G_=CEw(r)SF%1##FiKWVbb-SKN-= zS}K%Z8w+{u#zpBbDta%_TP?KKd-*mj{Bc^Ys%E7u2FiNd~fQCvGRQfebKY$^mr9h_&l#d zxz^~%M?X=np5&P@B&gl9XCM5(ThX*qeMtA@s1k^mR`r zp+C{CZy|?z170#+%x-4k47s{gRcBP*cMVLctS6XO?E49eD6;Sp7 zkzWtF{?cx%abbf(rTmtSjJ()R^nhPuaguBz4qXO{qH`TTz0(d6P&v3G(jmv4a@G9I zB`z&v&Iw+{iv&gY829yn9wGyE*o(E^rWli!s$j;Z2E3uW3+*WTA)1s4SX#1J)nq^G zPal-NRU+U!LiF7-&z#4*=-OGYYWvb?^u2q#vb2nLCZ(Sbhe#u?tgf>o&f}J(NC<$} zGi;svIzaNq+E8G>`FeRT*0vV8*8E3m1}V;@WZjh?s3TkZd`a~eXnOLPyY&8_Zm zll<$I`7cALTtqkL;8$mf)?jEB+tp^*fB)a`Cn{~#5*VJ=GKh!_fA}do2xR*#w1Qv! zGvEBLQ!3X6F&cClVv_m(;-~!6G4|(|ZZ<3`h`jMKJsbtw5@xA^|1Yn(8@5~!64-kG zVX4}K;oJnbN8?v=q7SIjEt#F;UPM`A9&N7p$hrJquEO$R6- z*eA0FbjURQ>3325$23S>ZLRGh4-N?xx>PtlFsvjb|0$ZU&>0+b@?bB!L+~J{;3)jS z%`d{pXvMz$1ta$Z;ku8RpynkeSpJq>KBYt@t8w-~YvcTce1~~=I3FM2(8A5Udwga( zP3!GK+4FXP4MkZ^#2U?iK29xCLnIbvh3NGL*-8o_w}BdYFPUHqC!iz`THg;3ZVJ*;m@4HL^O+2g20stWmXDR zVgfWsJ~{NQv8FF{49@fvTOU3MRrlZ6kk|!3z2UPe{2-;~#BMbE9WYtpyCw!q^5**w z`=OSEqABYijRT6*kZQf80!ZB|d!IN{Ajq(;Dr@2m_hE1|B#0fG-^T`)&L}sLdS9uv zIC1a^9emV8skJO9Qw9H24wf~Gi!!lh>(WF_8V;e5lP+{dppbJR1yzYSa7K^ncjAnu zfvDl-g}gkc-)^XOTvDRdJsFWk-VI~YOu@^am&2AbC=HEPbp~pE1ldICd^Il!iCoag zS9&S(a_TBROk@i}o-utz#U`eM<@SJbUOEU_p>LbKP|DT~o&*(Cg+KV4EIw_ePcC*J zzIVV!FWw+TfnX8vX<%qQu5yIoywPF6tLC;t%?YQjXvFK^>(WutCPM4`j&74R83Uby z%RZQ$ZZ|p?{r*E+YR`_!-am{ojX8QD`mko#sanT&fmv_+2r} zlKr<2&%zx5{BO3T&D<0-wjXyWzG^%X$7YJgW}gn+{=}PcP$&=1{U*~vNlJ=pW^R^K z1B|Dg;be!TJLVBSb`2OOGmicvO|^q&1DdxQ$%zn(2d{J*+^gYlh0KUce}@m5$^pX_ zd#@eLg>wh?A#=}j+h{Dmf~>*z66_fzXQAc&tizuWrQGU1Oaa*8-VZaWo7e2XKkl!0 z^nkgk7r~yk?WHQ=5~l|+*iux}34NNoKX|lrzjH5c0ERXdi%Ph17W4;;D)|W=r2ESq zQC}Ye(#v^gMobLc35|_+4UN4Bvpk+cRca4*@4M9C9`U9fkY&ckzd*yHAO&>hI=TbT zJeS@@(i_?p*V2%_HGL7Dc{e#1*dmar&dG#;cG3U?;B$#mY`NoID=(_QGFQ_M;k|7g0tZS4>%-jJQ%RU zifalC-xLDEY52$egSD&M*ZHziUmQQ+)8aRlF-S>7_hU(%EU{g?hlx7C_R_$#p&;+W zRA17?MBo0!Q_F`E`U%u@xbuPGAehdZ^$3T`FX;70`TXadRp@5?2ui8eAu|2%Dr306 zZ5dH-1+KMWymoOadRm3vCh(VP*l@zH8Dm54m-e$luK|+V2%GJ=znmFhCY#>S(-7SJ zKQir2+)S4?^}W@8BVA2|IEJS9#q4f4CjdUF`;L}DAV{RXzB{kj>-`y}@5dX4QoJ%W z)ekH~S+?G0bHq*$VD|RY!{@2Im@9tGSKMeLz@FBX(Fz|FV5m|=wFg;wbL@7u@QJCkG5O9{4@O>jQo-mL`;IQ3h=n2*Z%UMm z^Z27D{sh4=Vk}wt#Gz>(3<9B=n|@i1MiGy8;_ES6^}E0$&Uf^J6(=CoxD4gGZl%l= z0ix39HYgR<*_=Exj)H=%y<%%wyVj-C8_#XmcwI$1yA>F%We=mp$3KxTSt^He71lEo z`M{gZI+LE#xHit=l=y4kax@%n=AEcxG~C-mt}N{cd`zK*WB?O_o*J<@PSQsxb=-^_ z(dQ||r73vEA^OM6`Mk*t=Hn4zgNBY>;^D@ko{cA)qh2ny6sGzM5zK9%zb!UA$qQHz_E)V?) z1V+|T0wt})70^Vk81?rGePME9tdT)FTK-6HFBCetd8BK-5sZt{hY)SDIh||B-V_`T zb=K(YOqQ_`AV>wacd~>4-glivKa5jA?>3P{9@4{SxX?x{=+&mGo)71(P4MtU*v%U} za5ObhyVAt!n8C2Mh6j)+;kH!Vl{eK}*(g>e)f!^SYy_S~ty{fYc(~V*qG$)t9S6m^ z!zzToq+kxzIF_Qcs*7(>)y(F5tF6I!saGJwQfz;rc{Chxu5uIG94h2KM-+KyUdL+UZdJD*`NEe+POe&mB2z$056?D^%cq^lCHzO0^_ovliJ z&GtVVmU1xg+k4<)_m@}^z^ zN+rasf~D1v7kGNc)30Jy}^}Vfp6HeAmX+GsFkBN8&JqOqO$fl?pXu z%S@&ekt%?&kxWvx!|Znd+1wtjcBdYk>e2mk(5;S@cB_Ms<=AjQy2fPhgT*jDbvalz zXh-BH+#R`~0n*~9G?PE9mi`WyBQImu(r@Jl-xOGY$*)8;0?jM?8O%%h1=;>r$ax3e zD;@`#3~O`iwm^$(aWC!#f)samDel(d9^BpCp|}(+PJ!TBD6S>A6?b>L z>E7So-#O>r`-eQ?3CYWwwbmSS%rVE@BT}_OO$fI^^ho4ct^TufNJzADbH#k#QN2BY0d9Z z;0X_aE^94c$;wH!K^EV+i66esKhfBG+X+O!f;edmbqOQAUMzG38DmGCuWcN|S+10X zZ{j2LF)h`z+uL1-@XkW(IfI~DQkHdVNq(lH*~b{BR)o&A`oX;VUAM6cy>o(jN`LHp z!^wMH+jYhIboX!@?70n@D2>$V2x&QUT5pzN0BHm`8xmEV@3pZ4;d5K=P439hecpyy zz;C>Ya)0snJ?nzOw5>m4T4aP+S)k{leYYJ^K%uj7KUzg;@q|-WF$nI`@Y*{*Nzpj_ z4;=Z^vZaX_IO{pAS1|Bh_a7|wuX#-~KW6^^xi$;?NTR)0gM=syuFHn&;r#X%Zt!d- z5)R!@{=+bruY^n!EQjg__wtDg7<$CA=E!~?q!^#HJ+{_ zHD6Cnj}Mr#3<`z2KI{pz7O>R9NMXs{!!FVb>>WNCjYaaP^pRG=j;VpDOJ#efh{jiwE5AX>RsYEYmgUF#im_ghAz+2}T(%osH`$MoS%c3@#q7 zzEitrs^&m@`uOWkWHsjvO|Ul_ao7=YI6Zg@49(JUmR%Wi`#-{q7~&7Fj|K$?+JOHa z5dXD*)32blO>REw#e-qqJ8Z|0)Zj zXw?4AWUgwR@73`&aLWVz>F~SV@V8CAPA(^%W|JaqJE{{3kIrYUPus%H_g{fV+f9pHtt2Vqxo@z1l_FKyicQ_{*KRn8tE{%ONy(b<2}+)s%5lGDef zrC)`mQ-+dC@Xr?_%I=4q?SR%(tye5-DsOoSW|-2NJFpTlJq1;K6TK)Wx~}xYA+`|+ zCgq%I79w^9xTLnDYBVd9BdZ6VxUCC5+m#_kz8P;LsYIaFC|&8L-t}APi42@|Js;}u zxH+n;-@1R~Hi_Z7{^FeSY2d4UXnI-a_QTzMO&jUsu#eF`d8^lXL6~o!Zxf`$qhix0IdB zL#9;ksP*#ds|{Vg-X*JvpWWv*ba(%#1p0c`j#rOT#tA=XO!VS+-U+V@`@f*5%wfrv zF$^K%c^g|K^5lL=)5qicFca|md#utpJQDY?vJNo=HdEyW`NBhrh8tQd+lwCm(|-CI zB!3`;xJLBkP=LOs%;l!OZMz}CS&CbEOzGd`Ybv#X>bIauPlgHm9j9l$wNe zSdJep9@g;z!l7Nhmo>(doaFk(Cjh>D$W=Xhc>_fUQ3voiB@8xU{~Kpyn4v|RVh!EW zQF4_$O*fuCU=;{%e(hXTl!}1h;H^3lZ&GvtQV#(c#Iw_KC+ZN^L^VP(!pOp>Ps#$f}S~^ zZWm$C;r04G!GQZnz?j}GgkNbMv}u~}PD`XY$Rt4NFOF(+V*ax&L?kp%zaYr5N-exT zYtvkMWcWuP+)%(_Ftjej8P*aQc1dPX`<-DJ>l?Z`(#}-o@k>s>NHuZ1u`M?iWqm7rwsIU8=zkeWyZ2+Wgb!iM z_z^1+^5$GVCnm8n(2MIttwY38_4UwIuqe)B1T$kO7WOf8)1zi15G#t)qtMTKNIp(K zE%F^&5xBOv0#@jK-B~KgDaGrr6CZ?^Z%Tt;ZQpevZRV=b*Qbi*(ik<5w)1(tFNB+Z z58(VXt%ysc^l#&KQk2Lb1;;my&JbyEp_?K=k+~G|GxicfX1!2Q|AMd%*kUqoQ5rc~ zLKZn2ImTJ2@`d2HE3D_siyi$4p$6DPLiix`g&1P_r-C%vbmg{^w1Imw*k3>MeKg+k z|Mdqz?{m~fv8BYt4t4qD#&QESdA+J9C&7k~1~C=l$v>^d%12thDEv&2vMS&VwYKIc zc5O7mHr16fM@vbW6DwH>+$G(!PygL=KXsgA=n#;-EJn{zg~v?i>LJ9pjBpG%!2X)a zu%i&uZ4eajP%7~2ey%32XYY#GRysZS;|T*+5jf*UHjzSeL3>}Fp42z6|CD@NOXUp! zn7YgUU1)GbA>8|&(?$ouh@G@6UJUuCtK}BaFD@({3Dmzve#A$}c$@kYwr?uK6%`Y$ z&q=qfbC<#gBgbbSg>E>aLsHWKbOBYARGIFaW@-Rp!XuqUnq#y=dd-Ysa;KzZeW&Hu z?R8vW>ux^zPt^D$#^87XO@zlLyl(QO3Sr+Cl1LEHW}|qK29$V$9(h4JG?((o-D(ud zM*Te#*{yr?`ZOphMzxuhzJDp%b?|=M*^{M|@%DT_SuX7Gt6MlQBO?zgoEIG}Z4Ke{ zhqnD#DE}u&hAX|88(QA--fXsKvt>a?A14V-FUuWv=I&p7XAGMZA7C%u7dKgRQ}`ki z4JtOQE=Sxoda%oZY`+vTgTHrQ2*&zaItHH0k2UnC=X_$!KRc5CCrrP?41+0@duc3L z%jv}_d`Gv(6N-o%Ic+F68ZX(gyB0!s#E(T)r^b&6R3L&mMQ~o|`I3S;qlW-{zIjht zvK}?lx(~`F!LA+b&W`zZA;``j^b@Y#uG_hvF{pd>K!Nph3`nb5ky_IK!!@KNV=&)| z8dKobIf7(h!uWdsy4y7m<7(!1x99Ks7I~_*y0RPE!H_8MMdiBnbRlf*)84mB2r`rH zVaa%)*Ie$YYDtKM*iTf)iRry6s4kXC4vhz`B*azILLk*Qn#X$2q;iP=1SkFxv|i?0 z=C?)xhFZ5t*TVO|5RB#3*s^$y5EfV-=Evh1?}bEHL*eWK$`DJpca>9UhJ6I&rKz$2SsGSh-1--ll-WQ=0Dt zEMxH%FH|$zPfLu@1njaxYHR3)Y~8VeTg^bVnooA6%-msMx5E}!2sWt2ftH)DvY7v_ zuG#5^PXU~OK^L|6gCdBf<#9aXv}~c!FjncU`!y28nw$?v5_ z2{BVP@LXz{`S07+!eeMJI!q8*l5_uGQw#{)36z1|TK^^Sg|Lv9n_SF}x93bsIqB`B zV3WR5=U>wcyC1~X2?k|HmFGN za(qQuR}+ezo!Qc+1&PEC@QvPTtW@_4_W!vkh$XZlWxf&hB7JpMrX|hFuVE*m|6+~* zSszJ2goc+koHC+QJ#$O9T5Uui$^wadnsIX2+ClGL;h>^jNps5Ebe0AEh2H*qw;`p2 zPq3rrD9tM;oXfqb4n+MfRE!{;oFm&0>ZM~v!A$ad+3|de*$>s@U>l{px)dl45V?pRzo?ci8Nr*kVGc}IZCcB$1b&$JaG<&K5dxystXlA{WFng> zh9+b1|hpnSE_fhA$^ z8L*g*^4<#mi|aT|h~pLyeFY!@=PK(st4S-6 za|V{`85`-aV+MIKMl!*gwSe(5gTKlq|HhNuY%7>z7O|6eBI$WH^P{3{oCd(vu5_$) zM_j}KwnLbUxif|7jPNKQeRSiU{LxxcEmp+@+N=@GVdt%>h zn&#UcX=9s9rTN-&2no)Mo2vK!d4E}<BJ_>w(?6tUV*#ODY67k^%z5j1vbYW(dClu!KyZBO*=r~6VV=Ci759{mZfV# zsuujd6eFse(c6PT7o5QUOql1K^dKvrKl_j|SVYB_*%aR*z}*~z%lvc=HMml2hl5kD zaGE_U`61mYdGlzVsRRN}Do;Yf9xIou^L+3Q&wEkX*^@$T)G$%pTfLUI)M;e0GSUK} zOuV%7m#gqo4uVR<$xQ3%c8~i)Jhvn7MCQm|N1=eR-s^L(m)gp%vL-@D{{B=7s5~2k zS|1~>1W#=OE~-K&-M--~y&mbZI#42<|EkdNx0l4@89o9oEF$Ob&r^qieITQM!8eYb zjiDj}x9*oP8ZwjV;+brad8I_oeM4kMVdp3NA$+qg`Dk3HWn#YNVry4FP>FqSd~jsb zw6fu1y=@BenWPh}{oCGC{Nn{+Vbq3}uGADdtD~BO5C_da+S)Pc*NBchLaeN*^``u; z!);sLTYEKC=>4cQyqYdvjM7?&)yI#c2Ms&X<>YZF3t*x_R@^|tJO(+yT{|m>D^mMq zK`7o12ZE{YaAFF3kZ2wnpO0n^(6#r60uR_x-FvBCmju^%d=#NWv=H3~#hG=%p9Ei* zr*E-{#>o7W;1}DtS|^wKb=N-2xt6l4#_V;)nt+xDXv95g{i_#VR?q6d9{k>ZlSM?7 z_Zd9`eERfdw-W)5P1u*A10%X8rORA^=i+wVixtIY2^OSOOap|+{qpyg9gYSKzbrrW z+tz`7*l^GOw;TPRGYye4Ab3)N(gbR?KHeSXxcc}J{PnGV-0?8HFn}?I9wlLByBm&GVE=EKl zFNaj?MrXk^j6OnPV)hJ@Lg}}^Gqa^v8BwS`h)c*^2X`-oL>u*EFlC6K&6bdjX9QCd zf{I*UV=>P=5;khPPi{G=)um@kKF>!!EkeLRRhe6IqY)s?XN@}I82qIdbT zq=2`?t#y%;r1pxu-}Q!xj^j^Xae*n zpe=w8SYu1Bh^bMIWtumjDsZR=f$Et+7T!iJ2Z5FRp(8T?=NJrx}@qI9*e(S%p&cj$!E`R#0NAXi46Br7mden zyc>bmZC~iNLEXld1K$ZB%sD+5Gg}V1gElBt>TRCjS!UZ?c&+*qmHLZg>a)QQ2-{rP*!_3V27FqDeJpZwX%ybe`aGbduG@B(B;A zt8TR{zWJ6IZx+jg-p=qFWEUV3g?m-aHMt>o^rn@VQgzIs3L#j!-tAnEJ8(@Ot+fSd zvW*|g#~yKgqERLyp8-vfjd8y|bP9hOa|ZyE!pEYJbDcC6EsqGU+sWMq#g)LvS9U>b@+1 z6p6pf0cwTC2sO>f0U?M(Zseyq!sO>FlA(rA)LGwv?15w}3d2~F#o~*^e&F_%e3a4X ztxy~vx(^Ppc|tykQTpb9lg3+oS*ZaUYvM}pX+_c$U3^Q+F}lO;|3ORqXCZ`88H;eU z`^8ZFn)1@o|Kg}5D(VQQ+{(0R5ZZebB!_2pR`eRKKF`KYW*JKikpD4B zX4C%<#B9QBe(|D9;ldGVt-pq%9t1R{DN*5nmw(sC$NTY78`0jF!anjA<)n{i;^Dy<8-IelwFYn z`bwV&8Oz>9Xo?-c#b?N(+5v)f9Juq&kYcMl&CLxxly1vEmf#8dmDdWhtsJstnfV@f z%csggs;zY<^CP3wN53c_ z#q-O(s0uB`p~%)_zcN2o*|uA``BYPlaH2EkQudA|<+8}|Oq)!GvM@Q1$w?F-ttcE! z{f?}>#=?{ypl!Grc>{7ME?HTrP3RV@k~k>-06tO`O&Tk}CBn4d*F^9$D)e^2$q~A$ ztl=c<4`wG&4QaRZ8LL zXqOxEe|SRtQ^f;5w~X<1u!1Z@r9#qpem*-TC5CI#d6C@h^aAGTX|Z)W)wxVY$z6oG zLz&+{6Esg78pElX54IXRVE`hgB(ph}sF_SvCyAIuTgQ^uHWW{)J^bSUxgtjT} zV*Y)d*B41phHrWwzJxjlZja0^?A@dfUl#+)2sqH$6h2J1*TkJUon`g>bDe3xY+59C zYr$hD5rGp)Bt`!9OA^f%@qi08bVm^zx*XTeMspSnm0#yHV1v3nEls(Slf`cr^*T;m z(zhU@YbWD8XebFy3a*?b*=b}y+jRmeHBax!{$hMQ+PNkiF?cpn!8t=)X8Q`2Nv8np zBhN79F(or$4{1Arkn84Q#Cm`MoEwUb5`1q?PNxhwqbI|+GI{9uHpN5=d(-vm7(S~l z?}3Ha#EE{404wt$uZ7@{cbMjcp15}gkrUNWE{E0Ru?@R@yxu;RbT**nVMv?OPOzs7 z8?PYoYa6sqT%rbHi$GDcHI8&F)3~Lcm5xjzP*xI@^earqghq3}?``_ad!UL9LO=gk zABn+!s{gFA2)_>y{bx;Jd!KkPWLgFMO{MMK9$ju&F0+2i)EbHwOK4Vw^%w}g^@rkr zQ@OwMHZTV?q_D_F8UckY|1AXKi|&<|Nh~=6VysxSueYb_RE#<-L8=xcKaZ9SfbL#SdKS@6lBLyuw;P!CzCa{#dt5qj&h%KK73Ck;;`SA`H=KLa$J zU*_U$N)0oGfdx0f-%`vH*!vDo>y%g`)6}17lk7QESVqoI<X9_D!?Ky3Ggsw@`pv z?v+diM61)^7A+f{)>lO9;fFu@3icEEATH>n6siC?q!V810hvs+Unss>tJc9J1bqO2 zpkMtXw=f?eIK*Tk2c6$&AA88_?U1>mrv1pSyr%a|f+bbb*#3SnWz3LGcfZD#*mPpx z$qzOI#WK_(fg2jk3}8XDoJ&o{Ck7}rFD`qX&v|B5u<`EDRd2kFS9j$kuItTE_oO}q z{P<#FjaV=5s6u!%$GaH0rI#v`j%zuVo*6gM(cB&Ak|aN@PJKZ?7EsMV_mK8-oN}0S zyT7VLJrB=ju8YZ3H19ZqD5N{Pg)jdfhEi+^O6#>fc$*-Zb}Pf?$>y$cc}lSiZHBk8lfrM!^( zD7m`Em3C5y8*y^uj-JWN=FY$9>ObkU4RT<1`{!C+cE{pxWbNPWW6(dtqvY~mMCG@c zc+DS%!4hR~tOmPcOjpsG$TFk*j?j{)?WloQ zlxJoeaz-W;d!>a-q!~%cMv=)lGPZHo@GRRn2^CZg%*1hS&Um9g5dMT&bBuY9W-QC( zenFZRj+BX1@3{~CmY9&fP4)Id>5=w(U|;(ehQZ&bJCT#_ z*t1&U60>q6PS;rbpXz2zo!-cSwxSj7u@w>Zz89JtE1>agGwu1+ODEW;RVp8m-WP&> zoL;tX=;BENU1G4e`Uqs0+~J|Ol+p&>Ov&>1j|tFG0UsSmPvLKiOpzq>>O6i}Qu;RE zA^v1(kNvt(S#Wh9K5TYMBoLXfoR zK09Do4^k>Bs!qzq{%A|Mb3PXscth&EB7x2SMopJ%UO{rtX_}d7&9(%3kHi}#67)kx zu#rnmH@yD zYd39DB1T=8#8ISbU<`0hS@Bj?nU8jM&6^E66yz->XT}lk5in}`l9_Brc2t9 zAHrg$e(UjZaC#YyqHr-K$3?XEMM6|Wz znB=q<|H%hJ`#`0$WCsU!PL7ma1Q&7U)uWRAJ9q0JdPal?8cuTiF3C3FpQ5Tu;B50T z`4)cRQhnUvMuygt0zzFO6~=iQ zw=M*?qKMV@G`+DByZr<>ov~l$!a@wV($qk1m>K75_jCTRxbJSoE(K4+zt_CHk$PNO zpME!i*ju$f>3#kX|Ec*lEIa2=b68)?LMlRwA5!hB=abt zJR78?8(AYRU*i$FY?%a?i$|dqGv~L2IjY;r>8~LJ+CFeqH{F1Sr$#>~O$bd;EeW@f z809x3B8k5a(UelS;&pW5$+u1{;xsCH(cT4U(HypF&++;`Q;3+v4AAQ|XmH~9Q77&1 z`gy_(ZoeOT`n{`WGeP@PKl(wnps5arR;pxUOFsS6%#EC^QOKiim6wB7Cy)^|zZS21 zNmD^q4j*Y+dS|Oi-Kzh+kCkl({yrnN5c#y7uRQIu41P6%!5-EJ!b0f^2Fi!QHdtBm zote|BSt-cK@j=S5?8NXcy{|H@uE8Ca!7_PyseXA4J72{lTHl+Qw`=`~ppplvQ(w1N zvu$rT#}#W^!&7%{t#LLMdpMS>j~&g)Hp61PwloMdxV@8{u0p9==8AfP$E^^j+>OBa zWg@`+wUh*KE~Vl6Gr1Z3Fw$HW57R5Tgsmpv?w@*zhleZPM1@~cO1t5`_8>L7*a%@O z0$Bd<2^8~Y{=@evvqYq2b|ukfOltP=_rSIs0{;QDo1^yHd3(mUgdHaGCp2GeGNrlf zX=J%6N1>aObi%QjA)W?%c(jgvJfgih)U63w;7~G355! z-So5RBSE=%R;p={APgm+ABdG2uwj#9o7Y-x9Gnh*Y)aWBqa&u2DAn5`zXxZ@df{N{ zQTD_xE)tu{C~>|suVf?7ddp4zmiH}iRxhBYv9!ud`&PnQP0}N}wTohu*r}GzC=Heo zWTmdpnCgwySHqG@EaWsYDK$NB z3aE$~Z)X5_)tkvOTbO~858*ylfo*gz`)3^5T2!^&RS2V&xJql4*qOYTWJE7w5t}y3 z<;7gRtl>{!ScC7WXh;kqlDUIC*Q#{%5_3`2*mUO>Bz?HQIoS8a+A||ec9?Px`0A~$ zIG8T&`3${$jxoog{IO$Uz{*JuIFRF9tbKShz?>RE6+GZ0ma!;YKP|z6>1@A$uLF>; zqivg{Q`V!;-MO`Sl zIW09y14b`Ru_ne=&5h3=UJ@YEjL*dp`TIOpwav)7<9Ha@Z(L{>*7qlI70LUfB=pge zoTse~oy28X_FH+6D-1I{k}-GwB%ajRP?X6BY`KI;n10qp?-Ikfs1X=I_>zhCamf5J z49nWI-|dRzyZx85CKL;p;Gi z?-7L0bq2d7nVp@#pVhpc-D@xK_~uZs3LXXNH#8I5z6%eunLh3MI?C+Dwu~u6+8Fa# zu7Xb>|NT?GGmh6H^#xrGtjSOzs+;`8yWggvFCC{t!r}VTkzd507hhl0dmAkq4QDc0 zR>S72_HvA;6!YJ0UNH2>=OWAaG;3RX$VCaK*;VyR8tkuUWGTCn$ySrg;?c)B1SQ!? z;uq~;osTNIPK?HpFM!cccyiyFXmptR@y%8_HSU?_XqlunKR>j(Rvvt+p+G2wrdzoidBObvd0xZQ^6 zx$?;Zrq`OPhKvax2=*Gq5#ABGMP24rXZ7+i6S5wt)Ch+~LqZ(Q*CYbI5RG@3*6{3i zPH2TogKUVC5-3SPK7B_NqASeVECv*RC+z8iU`tyBzbiL!27BuR$ugXi*y1t!i6LneH{aew2{DlNBnG` zdpT{xDmo7T%otwvzfL48JK=5i(p@+tZs8=o@0S}}rSI}K>g{H~(7~CMr$)7FnvgQz z>2}ZCAAizF9FcW;mCWWsU!d&A`s=tY>1<1#RyzkLeSWCnG%AB7Tj@t^=v)ZK`$}83s=+XTD+=M$_l@+U#Uw|X zyWC1(J{*~st!bjUDw>HQVA}sQO3)`~NKI4!I$}dK7@ed?tpiaH_X^?<&NUv*%utI* z=s5g#F4L`=YuK5Ywl^cCY6Yg4iJDRT5)hisv1~V9tnga9K^ozgS{-fS%e~eAB$-e$}aIS(hNR$kVYxydzHMt;#1NVttvx}79oPyD^rrs zo)?Zu!&tFwvvQ_m6U-0?5 z{ls^fa!Jg{U3aPt9vf`HBZO6;zG?YE1&TdXkt4bc zNnIKZL3m*P`65W8m6G9!x7Q_vd=fd2(%HDvrct?^QMUxFXr24)d6{C$*?_l{2I=Cg zDp#IPK*-(a-RmOqJ^~aQ@uJ1-aL`MSaK_u#)JToU9#AxHzGu+PgH&o*n`UJ-l_;NmU#eX$GR zTtT)%o2GzQ~#){2#D%Xhj|z^urYAZsP9X2|MyV<Wz0>`$igadj-WwB*-q>NQF=7Zij=-u+jK~sqP(MWS zMk6uUvNQ*~(PZ5Xl!PdIV!G42&Jed)bRDOJ2zO`oE-1Q~5!{3f(P?Cw#~{T$O#8^a zk5^!f^IvZ5_={@?dh8*3l+UkM-kF~c2Aav2(-=P1t!3LKpRK)Y3d*leyk7CQNecDS zsTvh(JGby-L)8=8@lU0*Zs0`@S9+t_XP@eF_QoF6RID;1a)XwTek#2P)XQd0_*y=1 zUZFC}HYa|ly64a$wvb{O*rnu-cmJ?a5)$$mG!}EqB-^aw2e@ySS!|(0NH8VUq*+e6 zuD&*jT9L8`oWl3Uo`iy5AY2&uv<7@*wO`YdsC6}`i(6gnBWREVJb%(@_PVD;y}9kT z%>?@t<(E{Gs;a6g@4{KOVCL1Ve0jT$^1oqVOgA#QF_&KVv0)w7}O0&C} z@&gP=JMfPH;Ju5iQ$@RYLu@m^`0SFPRotG=-Q+DLE6-6-slPk^;N$7j?z%5P*wGkw0($#Jr$Wv(C$GDQX~boSnnI~L zeWUo@kQQN}Ye09aD@zMn?KbU){{wFs!@6~WEG?gNqSfktcD*UbX(r_^POure{#`A# za5Bqh4w*I*$}#86O(lZ&(f^zdVg0nz4K*wwq;2-{I3C=)0h0>+?L&6e7~5xCbD4Iv zhIAXogqR$9TD3~nc;T{^{9XH1h3#Bv>NfW8M0|cFL-nXi{G>$8-EpTKN_U|L=^eKQ9Kq zf#y^G3f5#VSt5E9nDrm2&i{S@W?@d^%p9N7t-{<2UD2ncq>0B-;Xin_e*ImBYgW?J zsmuRsD>dMR+_ZLtr0dBn4RcbEw*}8Y9|Fr@LlPT5x|tQg!&0AwGw& zGV;<1V{i;H6>6o}^RJ#|RmNYZqX=JVaB0H@KlvJ>9HZDwl6dvh4DgHLCo>%&0u{Jj^?6b; zCxg0o5GwM$wAl94u30(vf)<~Pl|fyoqi$3&t~F1@@QrmRB80Z>AS@ptGM;d3Z;Q$4 zxj}(_usXdBL&&HPGD{)~iKCl8f~`%~IcN_FLoyCOeR# zzzhVU>wOefM|&4#*VDc2=Tl3VlNAUi zD%g#%}4ZS~4lG(v3Nz zF4!9ZY@e$xQVcWbh){ea8PE*MoYGBSIeu%Q%k1%BFwDnafq*5%*8cU=@kkwy!+S1> z0fy05Jjhoil{!I0;vn6>6v{mZgE|*{O;a&NHKCZd&H3A-7owrFSJbLCnWT*kOS7HD2Y_$mLA`SP zU+k*ZGta(p@-x`I_jTF<`TC#~WvQ<38VSPg^O*|=cG_an>rjut$PM+SQ>^aY!O@vR{wPPZ z+@ZyUvf-v3BzmQnN7-^|Ad>w1X2utIlFl7aE&P%Jvrcr|UGr*Tc~VxyMt0NHg-Hva z4cw}rli>7ToqMybhf;8?&XWDI(7650@TT=W6^WbhY=HKrLtL&OZiF*R_b6=Rc5K;2 zTkaxi>QWT>I(oOmOBcwv(1MTQV?B0SAIrjZqEOYQ3(Y}imdil!tD|J(t%t_udnf$SkrYxp$zYwdZM=S zvFY5nj{$GIs|g=;aaiW&BRqeY`dGr#1?hJfBSxiAs9ey9QGbJs$SvjSLbK?0WLqq(3tkIvF!uG zKz{hZayE3VdnKTvHC4Q3+a{>Occ@w`y7Q?Xm34y>15hZLhbNdF{zo1d*cc~b?}r4D z39MjP*>mgOoUEU|y6p zqTf`9c@G8D!9F#4Ar@&DcP<`?fLLL?<`gGATj23kMC}sKWbUW(@8^0x(dT zg4`EDsgRR+40GOT)VP-yI^&G@I(hO*qrs?R$tGCOAePWmLh-xY7byRrM_- zGYy8@MM|k}PUHDPoj2m`DEeZRaNDySNn-2&8D>k%qA%Nmbl|b1UxLjbKyN+MjTdE=|Dod zbco!lNk#FqfW~l?znEzt_n)txD&Wb_CsHFZ6S|@{=wZj9Z9^NSsyb;aXRPI7gQUeB zN3RD2DJjt*7{6k37RC#5_sMd{+mQO5fgB=j9`nki(o=Djm-OH48tsQ|*r&@l2swVC zhv4XFd3;amH)p^e%^?xX?=G-}d|Sg-KvKJ+hG&cQp_xODd^diL5Ck*@jtoJ!qv z-VIy7mmF!5NVxk!CiFJrhUsj4yjQF1qF6%Rl37hT6)N7xC3?`IhfK-|?*5mBTO@&P zO7m_V(Y#j~s^OE;V2GaP%K*EbvVIng{wQRc1R9IaVbqrh=5O_1UtNWX{hKt#8E#6A zQb-5-u;#jlZsXCrr5d^`7#n(*nznm{Ns$`W4xed$+uL};28dTv3D9JYtC@#IF_;cwAy`K9h6MCUX-~jk_P-*jW%A>=#Nd zrfPWyEVPNETI+z;*=uq+-E3qHIfwGQe>Fs8eC+I+hf9NWChu!0*|-_eGm?un`y|6$ zXY~Xy;ttKqPQr0@S|FGt;(cB2B*@SE87$d0GXZai4pAB0)yQDcs| zJK}H!?aNKSo%4}9@N0zTu)NbvDl^Y*k|`TGq(VNmChpGkj%1pkCtWfMU%DFC$~MQF zSD-7+E44M94?NuodY#gwr=JKpEPW`j_ufc)E^cjT_$c4u)Rsj?k3V0OrRIoRedQVb z!<5%ok~8CM{?q}N;r)2YYJM=JG$!tZ3%uIp22M%tguNhN&e#iQb$c$OFH$+oon<&_E4Fmf%KadX|ZkuuU(o%(cMhgu3{_+zT&%%eE0B= zQIG7PO*oR)LR3Z6=-#JzNJKb6hOO>eMJj#^mtc=}TcYgWOnh*gDt=omTKl(dX|-ao z{%9+{rrWagD(-5p^fuCku(G12N&N8q>~`dtY!R8aIAhYYlWdsi{2qIkbr8Aoy2`NG zhx&;`0{s0~r>S#i^RlxQJ)}kp-D0Nyb}mM~F}AvR<9nC8xlj!7>s6Mtc(u@eb`kWN zO2i#GD7(dSKP}M$D(d@Af9MRggt2XFDRLO!K%f5ARHO9Err~+;Wv`al=~LU3hWV!| z@n!7W6jL}EynwlQH_^ka={6mKJ3G%Jcm`JU+^NjCu0}u6B7KiKIC#gpCe?;Ge6x)0 zxV)$JnO?xv-#Vz&92322fcx+3%0g68G*E7WPz^*0g%quFU^BGS9wNg{smo3L4Wn)& zZ1HD?OB*%<+HK^YjDrL^3HyX5(?DMp*&GG_XO0%S5Wm1Su04YAHKMNLc6b|(@;6`p zR+Xp80@cBOgbqJyOs`1`wtm~k$sX1D@Z_w>sM$0qLc)wY<%DLmZ&{yPT1q=aAzrFJ z+St21Y|JS4547$W94eWa_85+fd)bxjWdbBKc=GW4MaIJtoe3!p<9Nc=5^|^wfa5kD z`Nz+*Sw~lzF>I1aCMX@`mK|M7jJ7i1ZE@1p9b1wwfzBk!tbsyj@>4WcMNc%k7$-gR zUN|35D6x>a9}I$gs1Ao^bjBPfz3gEl(O^=*yCIyxh^4l+OH4P?X*&pV8ELaV zFmWPr^^ecvK7-OhebFq+$$jTKq?-0afp)hVA|-vOFg!v_EN}Zz{YsqAww2y*>BcWg znf4GoY@FJWAVdq2l#xj&4JO5#GPD?w>^mbHND%Chi$0!7zr)Nro7Eh-PIs}kGZNq# zv5Re7do|_s+3Pyear)XE8#$=y6It>F;VVyCtVdU*>DYU;JdbRtQCg|x+JH57E|(ek zd&=!Vbcc`!lF*=tlXgDJ8wq=r7Z+#CdNt+1&&{~WPON$X7RRD7=+^xc%}l!Idh%T;PD`E>5Y*|84$VxRb_EZkK5HNN z>la5^*#heO_s#P?G=it!C_dH6O`vilrrU}>$d##6t!naBXW5g|^|-<}=-a?fZo-yV zLEV;HZs5I(7HNf{v%^n_K{4`3x7FAFW8G9q42?5lhi3ws5fjIvZ1}-@l8#O3IapO7 z{2PT~>%_CF;(S<5eW>!+V~6()at#z?f<~ z9_2u10--O&PNGC%F=aosRn`65#ZE&^WlLhT@Z}KzJIfb9MIaR@o)Lh9KN4X_%_tUS z*O)SxW)}=FVGYIe-lF|(ttDG4vzCg_$a7{)J0h4R_(p+fPDMrug^X1 zUV0_-DX!<|(}5?XQ1uz$G;=I^a?Q=zfbdE(4Qy~k8^4gj3 zZ@FKfC9K%TH<)v7|5^i3E%#ixxl3&&C{0jWU9e_~K$;m$E&lYuInG9P4*TDL$stz! zq!OgPWY{o5>Ms}oem_4c-KqOdLAbN6YDy2-s+^w8On5wB?&vb}4;Sg%&lKMyI#nWh;wKSOn{tYZov+Ajg}d<4 z+VFWM<;dV<#6VUfLl@D9z!2(4jdSCg>z5Nrn=WfzYLvK~FLY5iRtqKE zHFldW>R-`N|M+{#(BrujAVM&70f9&&n10;0%W4E>vyz@^2M`{RCg}Te=b)hPO9ZQ~ z9BPCP<#cpfkg(oUwdbpaJ5qf^eGin0Z;}n(^!+e8wN`bAgJw+n#y5ax;Y0e%aeXa$ z(c^Vu*CN@|NrY`yniti`55Bo+p_WRpSL0T6>8cQQsQ<+_dm$mZuW52^C$-H?HRGn! zOj>`&$q>5{Kg)&xk;4tj#bbs)>T3=nLmv#_n5r;kIjiG5It#clE2Q#dkY^qCf%@!L zKogGTSTk(Qf&wg`9`h!D(BB%qETz)$@*$N5pXA)|*#ibhw%-*9$IJP3xQ!)~d4!%xnRS^M1))z0sEsuLQhC7cTs9PHwL^?D3!=XAT zpojV*fTa^o&H8~S78054(f<Kg+pZ@aH&vYTwzRFiF=teI-E zZQHhOyU98yV{%QHY-6%r@0t6#|9Zck59fDbUs`+ZwRA*GMYmui)0>x-_V%nQq!u6d zy*GP#^7evwY#+Kc2^hgVks?_drtw!{(Ee+OIaSL;$#@=rkM*H5 z5aEz^o&J7??xkg|#VKb8Dl z`zlMOg7dNd*x44=!|NeZPW?V}eTkP(^$O;m#VFzNQEG>LB~4^{KUq57WT;Ps(beU_ zcerZ8vVSQ9l%c}ob~ggBC}OTCH9deMbE|+fU3Z1%&~w65$wV8Nh*o|Y3A!lJrtQM& zk7_2bX@1>|!|3EH!(T?j==@ygjC*YRn-C&w3{uO_)c1xf z!?i_q`FK9G6IWm^dD@l>(bKs+V1w_>Q!yXmHO3O+p+o5Z0Re6fz0s?6x?Uf-c4e(h zh2ngurA5$FD082^nit?NHVl?YxgAx-R&863UZ59>NvJAAu3DWnr77ahI|Up1UBbkVbM@~s^eEenXqgIk;Jsoh-Ow}ik%X#u!_9hnFhf{meGDj2o0GKnOVTjw68%BS zz3i=;>@)g+Mvai;`_+97qzxUJk4+*U?u-BnJB1XNlZ1EG(y(E?s^d*ZL&GZW|-Y-#-Iz&xZNvuK4YRUdRnIfAS^0G%MAOXCqAY) zxS5Guf+xa}QyEUi2Ho|4UiR@wP>xrTy^*O_nDzqb|E=5>xLsh5H5n60ENg3zQOD!sT_)FRq~AOz~`3 zFr_haFmOitCU-X}Zsd&M*a(cX?2^@8GHWt}r9`|eRe>abiHhXW#(gm}W%dS6g{%#S ziHW0%apQ0^F;eyJ;&JEi*ITuxEZ^e?HYP9xdXH7~*47&~A7u!&-D{xN#1%x=d`IwO zhNYGftOzf%{CM#w5sy(*5ECP{WfPrqkHRM0^-j=;U7n_j;1X;HvK+xv5G>{D5Lzc= z=^^$f3oCDHgg1gd#dslZw=mIg06e5hP1|NI1~d>q6+f>^Nxt8riL`wqe)bRDy-blproz_`OFuN@C{s1L>#>RRaG&ijA$u*{@EXnW20z*RJTwQ+lQ)%1oNC( zf2dSTq$6OSFozH8sP*fml)#l=Jpw?WP?vA*S1t#PKDPPx!@X(@9aY|VBt7vn+7Cw$ zM-FK~MrJ(XsJdt>uaWy&0P6E@?o5C!Te$fV;2vieg-I9mwC_(kY<{9d&$)cp*@<1V z8QHee9qnsQAUvk3;aQ^?UauHjL?4z{3F(+2CAtd%vY=|Er3Ca;j3~X%&2%L~IjCA8 zmY_vY`>7i3eM2v(zbY@eZ;^vaI$%yElkPyB2UqU=4tkRNiJ-htjI(nFJr_nqS+vd^ zg0I*#U&WC(Xld|itzlFYd-TRf9y_H~*<2eev;k+RyM)qaM`>v*k`xowpey)~WBjHn z8V$`C9IzmwZPs788)xzVFf$G53u7+^=&2Mks-r!iMEsR*b^ zF=PN3U)JV62!YOix8D{WOEp?!Ay8n1PNJeXEpUqu8F2eVG)Nb#cG#IpU)cl~vKwDL zNaIKAX{BK?6Z40xQ0X&Wgm%@E4*9m$Tw(L_0FEXt;&2V)$hP@8Y)d%1V}#5jqjg#O036dll71xA=lsjiHZR zm^|f`+NxCM!3DfCjxH|yi^-?mTCrsgzOunpy>7oN_YIwi{scO8cYJJqmW778j>=Q4 zc8_mYZqOz=&VfK={8KaFM3LA+$)1~{nyKmHDERMnbC>kfbwovL8G-rnnR!^;Yi}M@ z^?GVmsk;;;D*p^IF;BY2d>dPVA5pMoJf<$Goov)JO`_VpAC|y*ZVP(c$RjPc<2#XC@r+ zj%H2D@v%A*@$XWR#9zQ_IN`fVI)>_`ck_D14Tu`lihEFkNH^h7=ANQEd$)4 z-*N_m_nz9d{~i|A49TvO%D2Lo)2WH)@23v9XR&_Gw2zP7-wWLBDNV)Y#Cg?xR9yig2s8y{)1$-y$D89u z|0CufYjQV12(iQc%cm-xOkUn@V9$5ueG}H{=WR#P`o8dD@`A^hG09>NcoQDSAt?t? z)qQe4mTK+QOeBewg`P2mZO1y*dP-|&HL)X|*m`O>4aG>GfQ<~T#C-zmk;IYFVQ!*! zfKqmIpC&lAk3|o2{5+>268IBn1~4zj6&IQ|B~=|U4<^l#{mh0nv`+|*b3SM6h%ccE zDhNW{JQhx(dGxh`xu+`nI!*f7df7%vRyww;S*J6rglKk6v>~eri6y4TS!7YldoKUk zCBSJU4JgAzTgPUfPJssq0Z5o2&-pL{$IXGUEv6XpD2$U`g+%aH#K&_vL;*_zz?c1D zk2V6wz#0({aT=xiz5dGYi7gM>OO?}|h4dMx`!DIymM3R*|8*>{8zyXBIf~`Sm(AIz zQ)U59#JD$GidB9-I7^nzAbUbb(o-pDRCCuD&hHErzSABAW9!-em5A5A9A}PWacH!JY{& z#gNb62VvK6qij&%sWFmmhann}WJBYjHFtWIob56~-g<8P<04eF}5fstzpRufVJvTrBhkXUy$Zh z;#I^(2whEWIe%0mS;iQu}3ZJw|8*EMckUI}^q_7*bueLkB^ClXDaEH91jOvoq z?NLa<*B(h?hw%)F@}7{zoU#%(n09rQ@cR8Jsw0`P{}68nIQ~Ptt#fp;rdx|^uJrR< zga%=0FfVeVKrTp#vk{rN){~sU<*{knuA;8uVo`z`Y5`N|Tb!#rAN$oM3$K1k3PST7 zvS#mNc0b;aWGTxv324WHhZ8s8Hq@Ut340pRlb;25mb&1*)@R@%mI!((^fF>Nu^Nin zw~CnQL%y&Mt`UmU*RE0&P=!7{)U1UxaxqELv-5V(2kIEVV#3W06#thN0Bufs z7lE4X%PTBbBtN5b|HZ^YA4%cxY^d%Ng<6xuADMX%T|9J!YhU1%sSu%igKGI{8@>YX zsLS-96zX^9tU9R?QN0OTsrV)x+`#!p3PA9d(4ua{1a>9lydgcIBn+z1EDJnf? zqik5-PU5xsqf1y;?-ILgOMoj|Tl@pl`41Sde@w6?LK{4P5NguUifGcL=J~mwJCJa+ z&W{0-5m!8_dxj8WcL#EhvW={xnAE5{%og>YR5~NhR;D|g5wVtxCnNIKRw6KQa7>6e zLY)jay5sK;@^ysMVetfLGxDC>p@MXaoe~Mko()zyu`V8lTKn`DFf}FRqomy$K2!9i z`~adS2>t|@!8pe|>#33WY2FAvc_9a467;n2O`r2?z?l^4J>fa)6=0Xe8;-2K7a#+l ze#Kp`GW$lor*jxUr<9-zOVqZKTVd)pBdW9()OQ8Qn`VXZXKXstT$=P^Kh2f2 z;y;0w+tq1B`;fJt-Kxtr2@mz!&OX-1rJ7$?= zRhNQyh2^4JV7+ivh#&^c3}fZU;07j1_K;WmOyc-PNQy1pG5E$E&>ZtYqj|((wS}F; z|7gUa&cw9fHVX}>&*MVdle41S;?wyjwi;R*no3N9+wp^}uvDvq#C2&;>iE*{{of~_ z4?WaRW!$>}zkw;d%4G2GB1;SS&qU87FH?{gTG8Eauav7hg!iZFToWX#JVD zfo?&a_D`A&d_e@hWN}jF+xOCH&hp=ktdaZThkP3r@3TQTV2O3fRV+s!Cq(hF)>7AC z{l)im`ru2QNn8;!aj(*6j`}76>WB|;VvZF*&f9X0@CGvvsQ+XT!ntioGt$z=;wPA( zAce8C;i?wE9@ycN^xf}@%d(kx^MiU{rMy)*ae8y_IpGQ^z$sw*jNRiaT{_=aF3AE@ zGkEsZFeheEIpPN1uwev!k!EadA0H$mWx<9rt!m|}=Q=gw|K&e_i|@gti#Oy?bTQ>; zon=L7qBR+6=ZsV)H?QrOt?9sAs8>kq;28jZ*&qLhS++{{H#fLHMHD@e`VlM~)f3WK z*59@smXwgfE!|B3kFL=nCDR!I=(&%Rt#YJ!)slRUXP@r%&2HLI%BAI$DFfml#m_!1xv%B!(i?(Sq zKF#-4Znh89zE}#3V4r#>xR$jzRk4A6?fP#XIGO^V$kNJjV`hRohbRVOWK~d8*os1i zOeqQ04)rp@hBRD5TN{cfp%t^9erBdVInL?rToj|QHzkZBu-SVsH}NFdJDhC{pT zAAXEo>lmDGwAk9ew^++<$8k<6xPD-k)gh>1O8jyGv;XGr27;W7^Hle|FLPm@I`SE4rB$PM9A$v}V_X0wZc%wetu-y0^H8_OSR^WCeu zR?oX$o!WlQ`@gl%4Phmov+F$U;HyVI8D)0K))J%om8ZBo)U+VUR@lw;knqBNO903kn#cppct%Vzp z8&8*5XvftbaDJz7VF#LdVhjP?iZC{n}7KZJFcUqfgV&gT|%&;41n zhpUoPaG7LYy|cZchS!Ra5A-YDQoxk(BalB_>+kMxlz}3XRmqmG#12=2S8emxHv>H4 zn#KeF7HfPGf@niV=1YBL^u4M;?MW>)z0BWnXx|!k>h=d0Qo~qLxcL!8(Z`!ehd6kD zY7b0GC<4Y&!CIci8_9|{n4qk8K&$E0-_$NRJL;%@&48y6_@(72uI_J3VT6?rLOST#*8LcU? za^brMShJC@*v=8{uDhvxL~920z3lqsfJ$u9d9>GdKU|4zM5t!%b}=ihzc1Kj_Sbp1A5JAUt9&+2J)(Q)g8{Q&Pz`q3Wx-X{ql zjalK-Xgy@LP3f9w>XbB?RARIG%Xo%e`uTOnbmmBIMK5!tcqFaXBI$FIbmp=~_TnY^ zN`kdbYV$Wl+KA__B+`hO4^o?a2ZDkZAAeqbfS{CGHxfJVY|r*Oe;4#WUwaog;O>mF z=FzD7`iM0$(7YO&7+%Zo>tYDHsJxy|L^fJyT%Ovt@o1E!Z=0`FI4*`)!kND()~u?( za^;4|LJRN`>csgAAHPi6e$X(fPKjS>@3X<(LE4y(&~GT@$~6A;2M5$fiIWKMmCu*N zkqnn#k2tjBO{C@Y-tc?qCX_H_h5YpbgbrN+vn)n?nIO5mF%l%}H=nfTZEgFv47p(Z z-ci-eC=QNH#nq-SNuV{DQ%~5pUXKtw<9>FFKjJrDMQ*Xf3!1p$5!S%P;M^7&D`$Pe?&|X%Hu+sb4AYw5~?kOD;=DwIgI#?lcR=%X*@#q6W z2OS6qCH^H3-*jC~{_quA}rs=3zj!b>KM zZA&2*G&Sddvp>y2lQt35BSwN_ST`L$Y-2<)*tOGe`)Rm`D7$$A`ebJye-ohuVt7w# z?C8+D$4+3ktaMnCfcS4#dcoGcJ zx0BVhTP^2Xj@a#ItF^ouNR2ZN;;Vl?U4U z{}~(fNMTlBn%v=sB9*SqTYp3$-jeq&QDj}>N)72j@d{sM?1M8ZuDzx!5h^^0diDH} z#_*MAbB1hgRd~B*q~5O!?Bl4KswN_7#`ZSAvtmo-{EmtbtWh`dg$f^G2UaA~5|cW! z&ex*BBV^x7ea;N-Ll5}FKQJJ&owcYpJsQE`_2J(i|Hcntz#M6hG?(8E_H;AlfQziy zjQk%1bmYD*cLD0Pmud7G?jvj@tlYtW8qW>U`)RXSi&>>bcUiR^wPhXYKXY&?+~Y@J z&d=^h^f!1z#r4gMFp`r~j7}sNwA)`eZ*HCK7V9r!|4!GxpRa5F^pzC!*?Ak3JKx*T^J-s{n0(lBlhst~4LYy-oWMmHOB37x z!O#C|lDDIULj^G!z`R|44wzJ)YlKr!so_+~@lq*ql?is~=TNoe2t9~tTLfXIBqcGf z()CW5;w&x>jE+pvuiQhzTe&E_^gJeks=E>3*%6*0`>K)$yEFh}zpNeY%=X@Ki^b!EYCvJf`gl`Gm+p?77n>1oD@XM~YO__BpR{iN){AcATQ#mAjG znG0KVp+p4uGPY9h>?Ss+aehhsG|c$br~}CLe!5&~pX8NSQ;DXFSJ(^M3iwjar}=At zAqtftm6lK2`wm;~esUn#SOJ9Qx~c_#Lr|GB-X9ri(Zrw=4Xah4PTA3Z)GIq*cN)zo3mgd5SBWthJj8)~!#W z8>{Iw+HmiEjm>8L$*SR!M^#F_45s0Y8o3hGb8eecLV?C+D)nCe=oW7}+_k1!TojJp z&`B?VvzN^1c2Y4bO&0uxKrEOt#u_Qb`C#uI+dIAj?Z~;)+j)PdUYOshjOnPCxy|!N z5zg;6>NE0Cj`pJ;Q5MK|2{;~h(hwwD_cr57aJpXqET7P0JomiU6V}Rr2kNEG!L-^4T>gq}sY>I#~ zoHm*}z*xUD$%xUWj6~n8QY@qj{qX!Bxu|QC3MO;2^Lh3kS>%$82zx zO?Gdl+MHep!f~5oZBf*NMewFo(OePP`m`>+n=GyJ4%7ulr+z2eC*K@XiRw*PM&@H6 zdne47tjM0IE<2{z4u*Xc&CjRI9Nc3+Obk`YTML<^v9j=YRX6PS<~=%iq{=O4<_J(Y z*S9XmEa<}`oxD#ui*fG7ZnV@jVW zYL$&ZGT17S&rlFMWYA2Fica#B*-jDh z4V!&dGBISp!?oB?3KbsBVT8salaP|u9ul`kXC_^0pK4c`_0EICXH=$Ef;b}MbD%%B6^H%wx}c-`(UE?Vybl8&dL(TxJ1o{W=8((1^q~d_599n z!4XEgQB?XV4xK^C#a+mYS+%vFXChX!8O@ImDO#9_6Lw=2nA)G<^lsxmbNaGI`!HbA z>wV)Cr_!_4X1y5F&L1e33{9;LOwl+2X8h)`&kO3uEBj zni3YmXCZ9s*OA~n-gIPT9V3_FfztHyNQ|yep!BiTnlK3ux<0N;XAi zFx1%8sl(T@twvRGRh8R?wz_X>qi|$V6debUpuN7^ykQ*j(Qs?LEHH|Ymx4tdMdrvR zT_|E03y`UqcCnPOvokm=xN!}+m^>G1yUUF!B6)TPw z2_sOOIy4=f2{0lKAZ!A#Z+k~w1B^bm`Z>#E+e0e%wTE$X5JWcI>$jPT^^&{!e&=S4 z8$#~?oyIx)P@MCfw%I&}7vi^hiL?ME~BfQn1(HW z@(u}8wPuK(KF*6@?XBo>Jo4_Lm!dLpMrk*a#t+B6(e?LSIo(iNKmos`%#9@}Wc|cSEJ8 z7e!!mofG7DlJgBeAo{vjA>n!lC&c$d(;z_$ZX66#Snt;%u1(D$q~U2vlXX8os>OIH z`tjerNZWpmMhGZ7{qQ4Bb~ioUFKu8$4#nNPOf>t)WqoBS)JAYq27F} z4BHyL(E4gf6NGLAR$MnXSZ0A10^aEW+16kjZ@y)~R&9jb*AdB?2XGzy%-L3MHBjso zoL@g)W9pwge`~KjMV%SO#P-9JNN?8&CC}VK)?oSN1L#16XO-_w|qG%i=DRfdz$P9yA zbV*r9a>zk5NQBCw_&U@j84uajN|n>sIT>L2#7u9AzHe?S2)%QZIaO)H$_IfVj2Xq{ zhvzjA5kM1B7h1X#vW2=J4b7$LE6ZQ&aq~%Is__PNgS5)OUX)H6F@I7KJ9X#oxG-r> zzaA3_?G9^V=>aeJ(tFZ)yRpUehCAP(yq2dtIaL&-Td@7qF>yaRctBLfhmT0~Rgyq81mMR#-YtJIr$E6DU99J%IpJYP=(C)toB zNIG==156MaNnoJXHFOmQ{X}@W@ebsL&vR71-A{zpsXT9#w!@ckjFp0V3Fe|w&)bKo zw5$x6H8H1)`3V+W$-ZhNlDF=MONnxt3$wHl#~5cp`wt{_V{8WIeK4m!Y=_F~$R1KO zqjPCp#Y6tU+ZgpaABOBjwVzMb7u(rKA)wAuoB)Bo$2e$D4d=h`-?b>J0_6|D^GLhedML z+&(lr4#(>lw`6nHBd8m)^oU2pnfx>=r5GtIGySRz16*UYU==#}=k@;YbLSK0M>=#_ znG}RdONSwYO8hUD_~{%38qLrck*BJf^)V(I41I+Tb&gf?MFVU3#aa*yYnZl#sEoGm zNQYP-jl$e-_%6evN)X4?hiMy^>#v`{{|m+tgzH!L85HapGz!oP25K&GrICONB8;2- zAG_@4fOx6@QjN#qb_E?B^;1E3a{c!%-%KSK^atHc9Mz=vlqm_~23Ya6SMob-hQ8>d ztz_UevdX4=MpKEOQp;GzrHWp+w}^PAqL>cZ=nr0H57Q!*aDfw`x@56tqTep|NhXn&Lc18Vcmb41lO-@?Hs+ z_2IS<`qEv5fdq=zLONN{t*Vwn)X&e-`M0^+of&O1q|v3UAsGR zRqSi}QgHq6)P*v!xhS_b?mPYKD&^n!jSvxB$eMh_0g2f`@lnJ)h6%=awTo^I+9ma9 z7TxRQzeI|k?L6rIc;0gl-njset?WR=u4#Dr6yN19<^%yyg6hRra#m6Vt>U& zQvTPOPQiLIG%s84(I_vpc&SzIEYyjpFUrw`F_YsLqTaIkjm{Bge~T;?NjV>WkLem(v`itqrE+jh2ixMV(ti0-(lywWT7*z;@*O- z;W!`8aWTin1pX-fE?}vR03}<~FGk&`K%6NsJ}>(foqvCbYa!{sdAUOA=;puTC?BZ^ zD=Gnl$$UaO(<=C9`HyLI8-Y<2IO@8fE(m(_H+l4!u44+dP0*d$776hKXY`81mS6TW zg7@viM*V}69Nt@F_aSqmtrcG9iP@4VfCQ+t2mge<5<<@fpEC=>k^$bhpS|4BA@wjd-6ouNrn*D|c#?ymkbK5=t-WPK7o<$``)+jF{w`8Y zNqoogWLzKw7jxcY!Mo2O>m><@Thc2p^68O<7i^&Mqj%y3(`y2JB(Hn;ad;wM^yD;l z)*U49?kBRhsqUqv{uX*%E@YxrufhT6bU_MXklBTT2URB_2rQsi zY+WMM_%v4pUILg4#WWT96&ElchFhR-qMK6-CD0>(5>fCN$T1nH8gD(xF~0GiK|B8j zPMXP=_N#m3;&Ex_!TT)?Hy1e>pd4u1ALA+LHF>a0kT1}4cLPu=?HdU|^Wz-(UT*M5 z5|4m%Q*-&n1ygH@0G7>FpoG8&w!7T&Ob)GS7wR@~j^dO$pua^Xz3cdB`A?vcY12BP zFh%}D97kQ!)_&SHF1m)?Jww9JFO=|exK5eF8`F4OcCz_hUl&GLb^nl{g&BkX^gj6f zKK$j^DSr0a$~mq8G3|~djq?=F8p8+h^|D!7ecR7RCSK2gocIn@h8@YrT$PuQM8Bk& z$BM&nVkFs;un z$re>(bJm8<_c7?%TIlvkddl**z5&=ju3YV`UQ6_A*VX(diZujERadpM%&pEL+07|N z3|#v%ZG^V&StjV~xg8f~Jh5ZJ1pA_w*xo&o9P=9uhcMCvAKRbS>s0Z%3jF9JpGRFN z={CTOWUoI?Te2ip{sdst!IIXgbGlz!mSEFCH%K1Jk>oZ~RayG4>-*&%8&iDN?*>a=(SO!S17_H5=I-t5h|*bjQ)uqfHsTiDmn6CsSxLzEwWKc&&LY>uhCG(#BED*CJr@+Qsl$~4cp&P7_E48>-Dz5>(3Ccww&t% z7x`C!3x$pzzZW`tCcCVk{Y zA!kU``)3XGZvMxk`g=PW5{xj?;TMtO;T_~vb@rlX`0|4}<5yPmg2VJxGtC}{N7XQ) zr5l4!OYuhK1I_k`(do6J%2+PMPI(o8sBe^5*TZ`h_&Dj+oeyhDEIRCYg>cyJ9w)l? zOw0A%y!*6r59E<0yCl*>$<0I`>~P4hZ!E--=pvcQ6zPPy3hgK^Q`31@uG6tD;B)LtekH{+F|Gk+!2@0KkLQMd<Yp-ZDu@S9Fzh|e4nU? zeCh38q4L5ZS?#nQrU%FNZn3~>5Gw{gU9`QSB;&L9g*{8hG$*`}mzA?PSB*|*1GxKBXRuj3~%gHaSS zdedFZ=nfmmEqZWLw0uEs_c4)C(N*pF>hPp@|rW@6(S4vw@D(sl%tVv`KZz&-=I|% zxI{muN)sN1o>3hIxIQ{$HFq|>$K(t>lh}Fkw3I>2&1MPPQg+g2)TMh7Rj@V26M1$jFJq%I*-9FY;8=Lg zIFa3D!!C5I)zHe0h47ZuCt8i$Cq@#Chle+DOHB94k>bcIqcnOBEWu6{5ooS#T|Y!u zb7g0yU;T9V!fa)Pj9@%|;SRO<11=bC^N>W_x!5Ds5W}{`+_3g;NlD-Ue8w&u&WH@bm9lKX4>Ry=QYd;}-n;NKOs?!Tt(DSPg8%W~|uAg;HBgk)Ih9m}T{OXlz z?P;s(tP$nPDyutwpmer@ECx z-}Q$24hKp9cnUm9EPb83*HrfgVN5{R;j9^3*Nz6dZ7A0VIyTbm9bXu@=IT5{G=KnS0^tqpT5474z(^x-1eStPM%5MI;Z4XQBWHg6UNyPHH zqV|?BkhY@d4ClIg8k%{+3#`2&6PmHH&nG$jz404a@pUWj;m10F=wxEgk%?CUyO zFsc3cA~t`$t)R=qs6b09s>80KD`lc@-*#%BPmeY0CTTIwxC7D>=v?)o zRVb^d6MJyK8S*AL6ovzaETs^?snJVDHkN8HZz?(zi)uW7su!)nE(tbhI>k#UCX?;8 zF9Z|?y^T2eihpJ}HTP)AL9;VnGi$kh(3XF~N_IfA?J%wv7iGkV&?m_29I4@`fZ_M- z4Sk4@f0jfiF9dY#J2+*-uF1|k%rL)Y^i#c@8bF)8h&|xXL{7IcCTTo=^8)<&mffe} zt7=}~2pqcUK- zF`*soU{C~+GBD;6oO$&Y(<*3D)mh|v=u=N%)Z@~R+U+!L!I7`KC)8q5w=>XV?l~IXuwOlUZo4YhTJ;@R8`cv^K@=ECD0#UbqUU%m` z!Pj!8(0=iu&Atl_3l>~_!k!RTf~V)TSs{2|qkWwJwX^>W^&e^sCuqjZS4Cv%EW~cs zRHrHNM)$0VZ!2Rp-4p#XpHLd%vg1P8{;t2$jc$4r%2eM}zB7R1SK;pSai2v`0nft3 z_t!sbWFGgUPAc{vmUVo1G|Boz+j)3C%^#rjsF4nEhVD?ar6CDLIw&ij_ASF^aEoG< zMyQdw!zDyz$nw_?hc3t`+@!-8Eu~OZ1f20JeR{zm07qu4-;AT8@BWy6&jbhK0>AgW zU#;(ibY)gvQPhG1U6dC0G6yn6Ye>u~$Rv=i+aZGbOP^)+x$@Bq|J&tc0iQkP;3eKZ z?E8a>g{sPdWA(yrYSM3RG&)K^a>85|q|RA{C}kkfU9lK>#Jk6^EB*}HaZa*OnuVEM z7JnzkB>1tc&zVV6v;xQO&<@m0FK4MrJ_aaokklu6ITg_EW5C=6Q?R#Psk$2 zLSy}G9`aS1vn+R#aF2x8-TkR@I)iiJ;@_M?0mdtJ=YkO`LfXE-OPS-4EIq2kY5z+ZpyO@S=zB4u?%GmYSu7 z03J=lhXR{M(hAu9I8J;xa4p~hiVu2?65p$x%{C_O}cQA^BF+x8^K6FLOGqF*99}xRy#~=GpOsFDX zXxPS5#Tk9RIj}Yp#WN(bl`VSAseRECLI~YPr9=-lj4@7zUv|j-&w-JM^pPCy%%gIo zR?T?Lbw6xDUDIxi*_u!F<4~@3a7BPdI&mf>Q4QJdcjG{hMTi4GN62vYOpz*}+$z1- z?#P;Os@CJ&Qa;tK4SMZh#lX|c)O*ZA{gycBJ)*D=-e&6ZGSA4_~A49NW(RJQMJBiL&H?ZSZ z7Y1^{V%V2)O;7h7D@Lvnh`TH^{N$KXrt&4h8Szbl;h0@`S z4W>iqRBZZ!s6``ZT6~$fhd)58{6%TX#gMi?b5#l*&#=YynLP=b0tBKgjMg?SC0&xh zwxo3R*2NjY&60TS-fl~m`_Fx7~ zV-AW&se&;}XpI=DRnt1(-}gyBsKqme&Tpe_JYs2cMoTx{QaMFrb{->K3I!xGQ9<`4 z6GNfYYvD9-)OIcMy<#z+7o!+q@3$1_U^5-{j&gggobS;K4a=Rs5XT5kSAP`nj}$$# zEnaAO6n~+}H~2}KqM?3cSSL@NZJFbb=T+y^R#^H#7$N1gYmTRtYrmsVxnW3ZR^hTZ z5*38|yBY%JoY9{m270qc$Ifm`td9&Sl0H`PB!YXq$C)KBw&8|>7X7w5n??^s{e+Q5 zSo!6ugvenR!3lF@F74MX#bpa2f6_9_0@Elp+8UblfzVl9`j(X}AZ_qHKF{QYlk_aEZXUuq929E8tWYe9!4-&yFS0m+x` zY`2GPu$fa9P7t2i0p^F@aD)#13^p-E$qQs*!-_dVhn#o;^y%M)&KWcYskV!;j%S?i z7a>zoww8xtqLf)m4Z~z*NL9n{f5~y2WDtGNR>f{|_`ru)>ari&`7awmY3n6vdKDS? z@2q6(Omk%9;etvDclS?re8MS}fujN;U&FIpkHof{+Iu5)odHK6)?k*k(fndE5*fFB zBmOFATx$YYa-`y?a&LCvLmbuRPRdHR`JgQCio&hGX4dGBcRR! zk#hhm9G7)kg_jWJ1q4bwJD7{EA=gwgT2nRthaJY^d?F`jR(=X?cX&=nC=pzRrR<0)KU zuNshv%5$H`O%iFtcMr{PTixO{qVaCevF0wr?c#NdAxsfnCK!q3_TkyA2iKCp2m3H9 zQ;|D-<8_9tyr0N2@4?PanCz{WiB2l)nu}WBoz;Eio--r8>Q~x&q)%&*^ViE+$@=YB zuKfTs5*o&4dC`T7WoWuJJ^N4c6Tdf4HZ6`W3z$#%kO3?h&N2`i{ zMemEEIx9ss3Th%(zHINy1^b=lx%8nvI>-NEtHrBBIXYeIJ35lr#{i~s!5+~x5?PQz z16gH*s>xtEZhr-8AY$XVd{IhPotU3^FE^FDy~TXQ83Tt57R{?Um%rDa&W9_ave3Zt z%Ss1j{IeF7O%$sTW%XHj`p;!@`Z)mIR)tJb7XzR30zhos@jjfjE7aNRjqY&mXy~<2 z`$xzHwKtgB`v+NORRImq(l`ok8`eu}X*n6H4r*2Yx#q>j#4WK{$BN=l_q|QRIETfU z-i4^`0zN#KLsJYhkBSkgki?wN_M4`cTP>R#F}Hn`bhU8n@347d$2?R`%^lDO3U8~m zbdKjieLp&-Y)uS@^IX%NkRFcWb%zY?Bd#wP#@E;)jZ=y z$fF8a6XAalBU}^9tFClKaD@r7X?Ohvk=47VGYCSk5MIoWsd=QZY2!Q)mLP6iI^5?Z|)hMOqWF#Z6 z9RCZNOMv>E#ei>ASLFkFZV|#3`yE%KdWJbI?mlClrH|hxl~p~Svv~XB``SQy0E0e= zjuCn;r5!rBw^STc9sD{hH3oPyLvMP#5`}uFNTJNq+}C}LO;0KXqg@X!kP*Kgj;`NO z4Gl2?@VlA&`OZt5UdQh$dakmXf?1`(_@QGtFr72w`QXa~rkX~xa&M9ai5ecyi(cfZhX+@3Ck z=(56u?u$)GIa5q>E#-}Y9(;wJe*0-v=eTK4MOO(DIsrrJ`viKG^8ivh+=)1BF@D_S zx4b}I*|no>(~6F6Oonv4rJW|+?6**|4m~PA68C@`?LddIe;R`wT{+h2=h|}sBhi1cWVuFn$`-ecz%*oC^2O>!4 zy3VxAEw^Ti&UVo1!4Fk_l)pQ$Q~*T=dYoc4oj|+_@=UHoyk7*zWJxP%D{#_Z`I8(M zt?n79^r*pfErjQvhKz;Z44C^k{uDMu_$EG9RvqipfEgU=74}2I2#8zV z-R?*z4H4nGq|YT#ExIb+S*I>4>*3F{{eL`PkBJ}=_L>w0X$(S?afW2?-Zg15pRw*5 zGPTV1;aVqIHzX%WxVRr(debFo8lCEreN8waoyp5NFwbUk#*VTVL z5dS)I!6>N5?(o5qAhq59_3i(H$A3QY&0o+@>szfHY~&8Mz<-(5|5^}WD8LMLm1Yy( ziyqU_4C8{&7=jj!LIGI`6e*= z^RW$c6#!Wz{u;PI;M<*JTQUd704FkTyi1H^!Yi+~G)F757H0&IK93Nb zyY?utr5jojmt>Mt*B|PVT&it`VYwPIFWOXHe(yPI@Q{mBvaA84nMHB3853bGYIlVXuihQx z4KwPXpW{e}Gi*qMd+KIn5v8{C&)VW5eI}6P{hFvc69-wO2+CQ((Bf@?CV5hqYmo|# zIi$2TTK?9hy7^R^CEwhPq&bBMC>Q8Dm)fkLynNASO`1Oh!`~?Xc))1L#)VGDq^T|8 zMvW+|+nS~2V`9C4QW_;mV=W-QYUzT$^*O>K%5E!OlB#ON1Qrfc z_sCC*@!{z!(gf!#%?<2-tb-lY_ajzfp5{;EN=EuWV7rGi6V<@(I4nI_+73I-zAEU0 zGrnU|*~G@7rV&(I+FDS!eF@I7i}45Wbt+cU!1JadO45(1af+*@Y*PbIb5F?EoPrgw zR`4H8wyr|1t4L@m`$8HzpFIz4JAa+y4&@W_fixg7M3~Ni-XdVaJ;(xnU;?_Q!kvZi zOW$VGy|4)3ZZc5I6r+wQH`d`);0NrQ3lS%~y-3CAar0Lo1ztWC7@O&PSRrJ8%wX#k z3p}zFky4|jUC_q$Q&Mis!C6?-bUcp_6rAqIi@OMaNf4u^rdi-X_BqVJkyEvS3_J>~SDW4j1C zs2h%geKGHybJT16XIBtlLTi>MGgJ{GL+~Y9%)NwFTE=tITj6S2*kQkSg*-t6zp{n_ zDvk1>XJ7l1uqyWvOT#$LKx78XRM!%Uqp!(?YD3hI&l%*;1J5P6Iv!_~Qack24Z69? zG{m%Wh|kja^&Mr)Dlo?$Y(K9cPFrdRi}pFW_L-$&&)CO=dxgeZ7M<#s+6Yc@{nV`N;@h>RszdKSKXHh6TdU zvTc>fRnpbxVo{m+KU zfJxGxU~jYYPJ{0nfyQO1MfGdZ%X<(Vr~I%6QTj?<@1O5X0I36c8S9d@y5c z6qGT$5=^%G$*u8d{ZlxHoETq8ibS(0ABqhOIu*S{e`^s?K^Ig`lUcsa;$T*@2eA6b zPcC5lS7`~`-5OG!2Ah3RRZPaLRoio!I){0G-*jlgKOz+e9LFmO#2XtPYZY+E-;hR! zN)S2Vw^f#cFl1Q-Iy4v-xD$1bP?h6fdPIlQeKEhCT(|UwGd&sd{K@@!`3b^lQ4?Bi zY7Ks+F`8S~o(Y1?@!RkhdT+pp7@=iL?KST|#->ICSz@v{cp~CA&0yn0FUyjB3)Y>6 z=0Q~eU4K}A>y;Oz(`K4sx+?)~5aDY&$$zu}`eNq+>K}Bk2Opgmiz}hsPM<0b*sdaN zb$_=StOeFi{9e-vf&G2713~Ce!Fp?V@9J&$_A5tk{Vg_$mBZy+O`Nz|9kJCcw@A$L z%UA=b?0XA($cpLf=+N%Yx^Gl_?pUX5)NAOs9nSB!j7z;Zm+f2P zkje5pSvKu=Z8O-}VScRk(b z81MW@Q!~_uOnf-8sYX!z6>zWNoIi5OA2(N}?fuqVeC2Z%`p(Ykwbgx*oS&Zh zZ+9G?zf1&>nGLvz!^kaGato=^F!@1_TL>vBdXHe&HVp$x$iSv)5Kmnr-BBIbmMWc8 zm;o|$rXwPBPJtT&;0DdUle|*oj!?4(kvE?{-y_rPZiF`0Hri4+%;6c;cA5Am&(MSc zBGRQ|#n}HK<9kWoj-YB}1#D1PWnBH<<0?+-`O!SVl}0;S3&d#mQe^3geXI12{CLzn z-vm28!oB0vlE8H;1LcEj>xSDVxh_ri2IpB_Uq=UD0>aAhUucQf;|3RS&Xzv3Y+Z9j zWq(#vM~JJn<1UgiK@hml5(z~by6brFBEY%CzKqU<<7w~k>7Gn=SkD~dBx$>+4;}hd z)PNXYhMyl1D1?bOwQL#ewm3XD+2XMkvq7ZJP0-=vvr|Uh$uX0}IyL6xG`tyq8`_$B^FZ-FNNmM_qjVRi)ax3KSi`Z<`HphQ7^4*~5+is^2^W z8Zs?SA57SG^(9GO6T=sR&=Tdz3Q8Z%KFCPdZ=@W(8uz0X)i@&(V>=#h^@oQ+Qpcb_ zexLcq=9yTD4%k!0Pm@!N?dW7CZt(QkA+K8`h}^#Eqkn%DzSW4bv5#KHmY^!1zD>dn z@ub*_KCFJ8PjUQsQrY@XxuOQdKiU+v+YoBx2M~KabCmrly3#R0uT5%?7P*&-OGK&! zizcz9JV(m22RbHrfuME`&(LJBMGf{5NgBiSdnu~q$pbpGHpFW2 z*H9yY=M8QuTlFV9{IV{#tT5^Xelj{JOA>KlC>)Pra2Wexj!KF}z3|O;6%5Yx2lk+$ zcb!cpR;JNIPrzy*td6dW>;srLp6Z9ER0U?)`lKbQM0QyY8_^&Ea>p___G3Wp+2FQ+ ztaa$KcW@L`K^HQyL@gAwc(l#_&Pqh@KpN77HN(Vb_JNCf4D;k%(9>NQ*37M^ zMfn$-J{`td#rLfHQzzpI+37-D{gUcFM!tB=TwObqeO<-vL3lH>fdl3;5p@kchM<>@o)q$Z zp|SySVRDT@^Bj*m|CnTiOcjZ8#jB-MEI}Cg3iz>e1rF0HzUEwlL%*eHP~sV&K_9O* zx*Pk2IWKW^?geAMm_I=Ubz33&`kIOzul2NgP4`TR7V{78u4rswm9kD7`6wQ@v3uNw zEP$pZj~1aK{+1AeB5yfQ7j4)ZFT#qTVB129Jcc$j;ctnk$dQofCKqSMr2B))VNl9A z|4p~(6fS3KI4CM=zH@BMI@PcW`CXMP?c14Zu`Pdvglr_r#Dj1J>V>+tc|exLYl7$M zH8JbUZq&&hAT126O}P;Y5yt=(Ec`KbOKM<}nT2slzCuW+ICC$z~UnsC&{v8PrlArh`! z5_7=Cnd7)I=n5lj`{b~-A<;~I-Yg9& z#HDO6V`|Ooa4I6xO^t&ogEaipP*zpZ925x~JUO zOMTUl@90a5-1zEjJ6}j^;;gLsI0DE_agwaZ{Ab&&S{_#k^wv$t+QP_4T{8q;LYuvB zrLj!+VGC%YpIU93Yq;g!CKSYm`5xrnAAZOYXNy>*UKC#YbD3x?-o+^XY}DLm@OL_I z>*{E)vB12T7IQ!U*f2~<{$BcU-OZ1a(()aB=T46IfCJ}s=j|;SHZao#+LOd)SliPp2ZKZ-P+|EBKmqdLwD>ds{ifPYIvMOSKwVFN>!WMWD& zb0f2qE5pZ*G-ZmJr*`xp! z+@eG(?K`-bCRggQsh_$sxr|-FrcPM2i{T8-G?sTn;Ej!Ag95%gM7z60A|}N8MeU6V z(6);!n*8Ez(CTT@O1@CrowU+UFY*KG!uxY&8uH``pj%7X#E7QFJSeyJ6!i#S9_>vg zlohiOS(Q{3bhKmlP~r@;tZj0}Q3jy`nrTnULoq7BdqwZ!Umf3ZNsg>592L{Bi?1L`-m<#eo)R8;c5 z<_cS7hsW`JjKbGaWym=|KKD-Xf2x=0>Ud0aytbn`?k;gUbjctzSaA&*^9fYXS_D!^dGNAPajzf1A`TRj~<-%fezsVDu zp6J`r29cq)!}k!4T8Jk6u?JH5(7W^tqdJ?@cAgW{WwD^H|HoBnn_sRBl1_+rzPf-r zYb(a0*SukRw5GYGXVA2mX{6$a&m;{93d2``i5s`y0eLG-_0T|}uS*O@Id>?t9t~YN z@T#S9)G+Pu&=3W&VA@gjswsyKCyuNsOX}MGt$4Ej#Me%Tgq?55^74yi7Vh5zgA?l-C$05gt z4&T4js2!yFl{)OT6{AeG2^lxIPWOYbb6hk=_2T9kWTb|h203QYj6}!1=o~xaf66?# znErT5%&X`Z*KX5oeUocqMY{~w+DgcG4^TFx!_U#fMO{_%*8Gte zozv|C|N|4|BhU9NeIpd4p(>A1;%i5y?c!Z3xStz+3~g?*_mc z4dw20eq(zK_t@pqRWL0uDzFzRV?0nA=S6AbC?H9&^M}|`rr6l!^F1b?E}65FMfqT0 z#5XFqRqrC)c0%dZYi~z`p>^0k%8xz*I7YN)CvVKvuK8}S?79DAIrM2sd%iWpv%FC9 zs}JpzDY%YUleeaja)6QT1j1w`k}sgOMU2z4GjYVXVg*Kr#cwP?|12L%XrntA%h&;g z+vk)pK(`8z1u&!mMN=D7dSmu=x*3XVUcz7FAS2cs{O^TyV)I_46$XK6hGbHWXHnY1 z`v9p?=rK#4RFfOy1vX#cj;O zh}L~-u(~f*iD)M&oUo;KvL80dv7|%U=z&~I+Y{H{$iqq(3?^dqhv!I!+LYfs3+S;2 z>6s1pB;D$>=Y`-m4f-~nNs!xLSl^FktWkZ2Z~U`&U?OOGZ0dW~&XfV4P_i-J%sDjY z@+aCgvLt|DZK25@=hH4+oZDiZl&MkI2?}J*BKEuORN*Zt zL`6fVX?h8L3pi#`iX6cOz9zE~%mpdy*aR)z{;h2VyfgI0ON@myJ@}01Lh*r89Ya#~ zcVPv1fG1cq5^A$d#hrlBrGp^&_&hDKS^{fjV&a66$Ze8-$9U}s2mw{>kMIXK(a!Cd z_(9~VDz;c{`h+;}6y>mCGUQ7&bKQ=i)rD4%F#+?B9cKcdebZh=Tdl2NCmbG49=3Tt zNZ@SELgovT7|?%Xu>Z8Ff^_H%C}Onmt; zb?ygkwU(W_o8ffv7+{@A95XrB&0WI3b_b0x)@2=>|7rx=)+RptnCK>vUy-<6G~Nld zc7ow*6Pl8qaH4h11z4`WgsYF?y;CPovYj%17|fCa!IpSJlZzE0gIETC7q)*70KSO= z=3!GYE}!5R7sQ4gNk7YARKd0wf4tt}SB(8=4Zu|_UBw=aVErn<#GjKeMlw0-1PAuo%mT8eaiBd?}P)IoW|iXI-2D^r?uE8G{(iu9mj&!Q@C z42yEoi*H2lJcUe16pM0~*m0?PB?x;%duhRrt@ROrg1yG3!eZDQyqLI4JM$!6o;o-AWa76oxSap4$@bS45k=y-{1qIJV# zao!V&+I4R^XeDg3V|4Ql=NFl%wDcb}eTW|?nblg(FVa_&a_l6`ZPEalSoK_wW@u@N z6bP7jAIHQop9|`rbXkgDXsF7V0d|LVDg^tYa}3G0-7GN4JTi|X!p*53X&H6GFNMZZ z9Cbl?FXS@S*X??6#A|V4fZ!EvTj)?dI`5ZP%r3Ye8p~TwlYN^$=hcP^$SPUK%(Q4K z+pZ56Y)*|(_Czq{L6|(HDn!)De~wvXSw0J_@AL6guCWMmSB~eFZTF4wk487|!FuShG1fbfK*^udiU4T6&`wlnYh;+Rt z{jBu5yM_E*@orK>*C^pj?v8%WtgB=li>vhSm)G%wM3~(Y9s&EPToS78MLTp@gqlwr z>SR!n({Eeyu{8v7#+thIP(`eY>3EqVE73bBHkLG|_U{su>pWyi`R|tabj*_$b`qnbUkOyF!pJyw|0k#H?zFdoWE8lT1}yqc86v zbA&XPz?wetjf2z@&qwpey<={~wbQ@3Jo7)|H3`zj#DhAXI|3X}_aPWC*)PSGM>jJF zN)n^;cr`=sW*m-`;uoN-ECZ?T-4G!~!Zn2wvEp9WFA0 z?VT*s{8b%ATkHgw&HORnp9Uoh?IpOL-M*xa!adedwnP$fMDDaO{ydAu{fxDwLV`(c zgB?z+rfxwz`zK`376A4Y?H(PNeuLVCi9$ONgB0>NUAbH5waCe6=AzAJ&Mn`mNqr zTT_fmw8$xLR>V}jfZ)f|3<<8KY7>US2h4oh0uYK%~wn*{??Y5rS*wg_sgBjlfdF5y5tpjyv;S5 z$$XO;uuusJWbOPV*s5{XBT1pf8OYEX3>>4xH+$$d(QLE@`*~xV{G5f4k77+-TNwU1 z1aWp?(&Uc_H@$)H=UXcSIiA2Y@b9v_?@ZOi-p`T z{NzBrUy`*T14v{6!8`8A$71$#+_ngSy^^bU0UqOEVAZI^g32VtR0I#FegqUa+ID9X z`FO#}3->$evE+ht@IKc#{Ap!#JIX4jIp*g6@{89_M&g`M#U^6D^(Ybo{;P1&mO-kN!`Arn(kC_*K-@{bamku~!uvDY* z&n*}yL#Dcmhgr>PPnv#SKsw`62!UODijvNEvs&jEjF%7!2zI%K7_O`ruE<<%{iLR+ z_r&rs$ck^3I@k0TJYGoDicXfRZttixwuf5yH2x6SApDf~I2sQ9HRcIjjH+A@0Z*GVoJifzDXr~Zy`AOd<42&-B}too*{1w& ze$(>h3~tSSkEh(=KowRMYZF~%I3^HFNRbdkd`|9mH({#bas&S+@I_NAg&0~LSQoXb zzm4)DwUnF!>ain3V=59{z7VZE!G~@}^imoC8W$mnSP@Z-AY^wWf)=`U1_#;htzjN8ZQS2on(O?@w z=5latqidkycx}eJ;bCOkkhQgeqE=v^KOTzo17oyF)GOu91K2+nkGAL^Q=xNhOKFff z?&2fvvUX=LSBSvh9#t>t{1a$UU*t7NKGCs`O}*fAJTn(*p(ib3<`l{h14H-~@!SsC zrKGK5JrCp?-k4o-K|mZ6U=uT!lug$mU&3hJxg>Am0ftiQ-#o zqzfF`{!A(lm8DJ+3x?nts6RC9haX%(-0|&6#y@x@IXC7BrOzUNJ#U$f;@>|Jrdsg01tpE%_C# zEww<$R*kU}obmPK(4p*_~1!oY&g{J@w%N4w0f zmraG(O$~`h)%XS^gy~zD+x*iJ3kxVT2d-wvlkGwtgvKjJ)a@YMR_55XBkC;n4@oUb znYcEjSAsg+Lt~5Wfj>d~z0g*CES^|-jyC7pDebf)5BC(E<;-Ekv(SM@JP?}A#gHDg zfSta#gQ>59PU%*drBYQ@5G82AvjOJ)(Nb;3dKnquza=T#FdE*@_;~LhSbwW+`H5n$ zp_+k+kiojwiSi)E;RkT@5jgS`d!~XQMlNGDTgQ^!asJphN$n9AxDwr~O}4AQ=Y736 zlk593cKZ)~(NiSY^8uVs4rlI&n0I?3q7Il)PWe267K&>8*O;;i518NxO$f0oU&#W!e7<8S zStD1c-gwydIM9vTS+fVw&$x=1z5V9mXcNPaSjFqt(mTp#JY+lD=!4?On1`wEyaPBu z2>bAR4%cLK z9&Pp}Vx2D8L;PJFQ|8?8PN!bGnV8W)kXF0Nag=+fN=bx91zY1~A=ofTvXB8Z` z{Q{w_Z~^O(bI1`$SD3psywLjY6Y2E#b6YyUZnx)8UWelJXPiL{7#utIj@4v{MV4P$ z3s>t5HUpCdFC>5|T%pf{s9J&_(rS8_!P}GlkQ}<@_BSpI1peu59!>&@AlA)Q!b3Wx zxK)jpu(t946t=C{z?|BgYF1k_vh{D9{E~3Rw2c>RX1&(d;6Llm6fA39cmc8zXymRu zfqD2P2e+%wj$k{{J;Mdy@2BFi0dB90hYZ!v&+nAKg{a$X#_7e>K3dvys8qmzL(|UT zR=#6Stw%q^wetVt-M2yoHAWEROBHkTPjT+xtMs(>x@E8b6WJ9|6L+bI;hZTdgU_m{Bh zDH0L1-(&_dN=lP-gnz7C%`p;^QTdTcqa}Y+TfifOd{ZpNWanafU?1)ug&$6k(;z<{ zazq@5p~cesd+R1o?a!cdxi4FH9@Fz}m<^J?vlDR;)5-*!-R8NT@vmG!dBu0G9ln46 z_ODs`7tmq{ir^Nl4yH41X#IVl{4d9rBA&xZ%WIEeVF?++y8W-p;$NidfB7#w{~+R= zGP+&nbrgRapa7%1cMeuksbrd{YXne$G55j@`-r8HX@1H`e*pGYC-xVUb}@u$?|EEv zgrau|SkuoE!H)-mny8ndnx!{0_(>IP>AN(8Ug{R|2sORtbOO>gB>MF%#8UH8{S1d7 zJfD`QC5z2`iCuJ~@&axpqKO>;9ej8FvPqC+oL$beLt#Ta88MT1CR=l{=*@?~HT(U1 z+zh-Z!dwXjz-tn^1MV1+s~mR0Nuxet^o6VSD2@deTl&V|486W3>6SuK;5XCN1fqhR z&#MKZpRo+tOLDSsrzusoyNBXR+UhcMRGPk%#2z=17iS@I%R;f?SBE|iI>>L=*SZ5h zcz&w@Vmei@E{NeNLMH4j$UD+Q-c+XD3NSD*F$^$%PPN*B2@%JY$@&A|{BbEUm+q|Z zr$o6YU{Z1+FZ}A=3q16y+9wZ5eHX%CCv8n|VCb>pM2Mr>{I;MDj)zo2aiPYNEY z1GdAQJD@MIZ2#Q{GH4L$Z?my7i_v+{yu%Faesc!_@0R)cWuqYp_!JVoZtCZzFW$R+ zciUOOIn7WysSw*YjJ7Yc9H%4Ua_quiWv-HAA_cm^JJs?cg;UkCq219n>|UJY)D6WW zOl5x{gUTKDou#3N*vLrKr&X=hNw*}=K*w+u>*>;AYFYb0=kH`uEZv&n7nquV%|!}B zUmfRdc&~!>V1TdoV_x$bej})qZ~Kb67xU0xoZcJs(5cwi5oea=B6wQLaMX#n?kW*f z1_j+wx7#B z&%gIaaF!@%Y82AQ1sTo|$x~rAx;4(4Ce%NM)==@6_0fxSST+=yemm9U=Fbo}pM|?}2&)J)uUQ`l-ZE~+X;}-W zyu3{bj1K=Qjn{D79y0YdS_RI2^aE z$EHoW7UN<6C&9i2W%V71lr?SCQ+8cN4&7hK1+4zWZ5AqH4~_>1sxR72G4`w#T*))p zI+M3Jf9-@HfxZm`KeH#ACvj2FRJ+Ei1q?C>_D|#@vN1Whdzc{{P*}yqEM$p%H`(!m zO#G4+tB=3rXTIX}Wyv%PPR~PdiiSl{%mwGnr-YqiHo5`@ai^nnhQ=PFJKu4aeY&8S z1;hpv(APfx7q0z^G<_0Pv%A$Un5+CO(ZrVZx#_YvSoF)?Mi)|n>JeFW6BzHa$5qj^ z5F-E4(WzjqK4@VhJ{p1nX~<9w=(nQ%U=xK5i-WT2s5Fc*h3b0%R3m<2%M4cl#g|b@ zg9y*LQ3K>58geXj2G$Z222eT%dLQDamNe%cM8sfA9OZ-NcVW2FeHj zU&vYer^!FaS*+<_7nBUo`x*~d zHJWcv9kw=r7tz2TV7b{l5CTQg%*VB_sdozTJdDisymu5{H15%Wz0|G#BJbIfglt2K zuXJ^QSoQpCVN>aX2az}2gdgP8X8x4*qZlYvJ2KSmzzA$HlV4Eosj$rNExJ(0CS4o! zoUl9jY430M?TCNtKfWUa)IU7e#mxOyW65#qvi5Vl^Xi@ihc@5a<+RtOxVk1=e};H> zG_sAPB_@g)=+-<2F|-x<33$=1i1JQPv(e24-PogSZQdN3u|MStzrD0G8fEjM|$>6F$ZQGeW z!MWYbSO_7+^p6?I0QnD*h8y`Wk!EkThcS&$LS#Iq@oGI3iw9jSF8d~u5?*K+k-x>MEE?VWQi+lXmoM$Cr&fp0k;Cj> zKUyEucuGA=>e6azjDelDp$nE<#P!@C`=}}WobktS7i@+Et|BYUsW=H)v-RZ}( zS78FV#<~1C-!&*WGQvB!=A~CN=h5WQ$7@|~2=pi4Cr#}*f&1!IZyT&~#8kmIn}KlqP4ET^k&-ohQ|)DVD!JBaInDsW#s4p{owcl{!#ngHJ~qx7EKwDI2F z#D=NA2mw14lg=5y@CU0MxYnkheiN;6FE{3eqd1wnJ@&QtrSSZ|<}E`}7LV=3ydE8o0?q9W2lkU$@^RGtU5G6~usS`tAz$Qze@h^mQ5;jk5UZ&2` z?3c>oc0!(cpNMSG%29#PXd93Mw%q$k240X+&Wy^bk1Mwf_5@=1=*m=8V@zq;T%)UTo% zN?DUg(Bl451smq@CIq?Gx4T0gBfKela z>rh9ZW-72)$iTxUQjNw+xDHY!NWEVUG-k{J7J((ZgZatt^pZNW9 zMB)xha+=pYH#@sS#Xnv8PI2K0ySLZ|oN!uEpK*uMN0TLBx1lzq>m}qnydMWJBE;N9 z)6P^@0KulT^Okeoi zOBVrc@zz2O0~uj7k((p4eIk^+%SV*VT#rL2{aYhl%g#U4TM246#5FYVOqeO){;E-_7qx^)+?>EeKa7}Rv)%hhD*l*Y|gm(s_)84D(yNg`I<9Ox^)HH zP+cfZOG{alclnGwZSZF;0m8BIA>;*x`(?mN0zB|PXd?R@v>!-ScXlfjm=kQx;cKcp zbrb23gcZD5Bqn9Vp}l9k;;aXsT(iW=6Mhx1w6}M8x>UW&7Fw3s!CD?fbH)K<=Yef% z(pEO-QW38D)O`0a4>H&P$cf=#{Efig+y zDUyLYMx&O{yPVhK#N#^bB6n=)|H?HhdW#R|_l^8*7PPqJ`;gG2=yWh1Y0 zaTTi1^fm!?#b{yk`=Q3i+rs_r7Pj46cehx^;Rp7ud_e#b(jU8_PL=~}3rYCKE3j2j zG*;{@+jiyhSj(uO`wd;^c~>s4>0m1^-V$k@Q#y~bJ{z2K(jL^dI!->}D&%(MvHeq| zZ2!~d!YmAD>@pWa`TkJ22MR3YQ!CliK>%3t0vQLcyUdQ1SlBFv^5#j1HTGup@=pfx ztM%Co-EGX-j#6+hyw2^^RLV-ux+HNThpt@54X58>yDaPvVe?9oTz{?wls|{htAV`S z!q`N}NQDYKx$;Q$%7FuU8*y>UkHTx)%Vs?u@y_Ok?qnqUwGikIP6*+&(GF*@hV5+T z=d9}Lsn=uZ-#%l-Cq*pj*=Za+_aP6&--&Osv%F8+Zft}DAqmZMg=5cDb-g<2YI?Ws zLs+Vw1o_*FyS*~Eyc^3aL-^VNo!1My0WPRq8?bmD$hrYnPJw>LCed^ey&0FJ2dWI$cH^h*_U`<O>sklC5+=^C`X#%&2<)cQ|kC89)Z%q%^ z5YNEj5re;q&@lcSUnu`dIej0GsLqe|Bt6Z;%QL_@XQf@(!RrpryH(BY13(`U&iAYC zHD|dx-Hyho_Fz+!pe{yY&H4UYll#Q(de^jY6FNrf!oia|@}bviz7T^)UB*Z}(M}IZD48k^4uTSTd`C1?1Z209r%x})9J-uKvBg_DGrj3 zQsM_#G1z;rJ_*n=Ci1>kdnmeIs%Gk=p+=J{l!BNh}nqoq~f9evkjlKZE27a0(*K*HA{kp zsQ@WUZ)=@B1SWR226IMVjqtP8=kRD)x=GZ6!$lC-d7}s|2#pXiWWuOSE;-%mDy|yz zb*R4TEYXFg2ML;*m_696s$&Y2TrZbtWn>xeGVbP@G-{i5O01&d@hdf#_Hrd(!eonP z7_V+W3n>Q{V(sw4+fn@*$<+{QnQS*`uC`?5zZ`6B0&qD^advPBTwf9tL>w4ec+^DP zvLI+)5L~z;hBo$Y##hBc4D-dl_=-Y%T+vM&AT=2NIa8mBYdWF6n_$k?3OvC?Bf3l% zy80GDq{b(UKltvHvw0W)G+pe*QLz&Sx5e;fG-e)Qz81$=PxxY`ZBbLw+Hb6n&cKlqG+;hv`e z6B;Fq^^M5@dA5mnaKpL_+PWi1EyLShaMgA-@&vEi{g$%MoHF4f*bk{C6)cViS_md6 zbD0`b=VMsgPM8omfmwkau#;j#+x6JyMo@#Ts;bkkYx7#+KZNyMVc_AF-M0-XWJ|!a zTqLBEN9dt0+o_lK-O5C@h0LSls-@hvQeHP=j!qK?o&H=9kgRS-Q7|-)tq7Di`yFPF4hzl4rOzEOldH3k?9^PA3MG#2i@M^P0L=#?pv$^uRT9re%V%I9J} zyyIs7D#ba~v=>qVh75AE*<8 zifh6I`0(704%26RsBlEzWN`i1=)izc2NH;Dv>!u@O!V(ZFb>A!fYmiHfJW`sf#(ut zsnW(TA&f~Db*o)G*5UI(6RoTROi%a1gZf1^>PSgfKv}tb6hSuF!NV&IEy^u|FgMOz zTiluu{Y)P2;69dbVzBt{*LoiJvwWIR{3(kWS$Jdw19lCoAR^PB_rW;A{G4tuEIiDA ze5HVYZnk~fjX`LkKZ$^L-uS4kaTwDJ=L0TWH~hE|kLK~zug8jK87TYfMzxJ_b#Mdt z_+|tGd)v1=I(R4ZpV)F<7iptL7^QjW4B-TfV2$rF3iEn}1oKpB%Rn@y+mN>{7~qe;71L98|B2vuJSEo|k#d)`*@iMkd>w z$x*1wYU2EOo-$3O^vd|l^zOA4X|a}wkvIY?(CJXxMl7o$Q~OgA8~-ZDvt@5)S3scb zOY1Cc{qAUwWj1*Z5z8SHB!w3#gPp`i1N1U6L~&WEU#*95=G9X*!ot;@GP1Pgb@i58 zd9iDnB!X*LLDS;1WQQ%;rwrJfd*SyZM%``zIyLG;uyQ#oDGoH1vp%HQ?MEit^pQib z$hEr>2iuj0zK#>%A115|QvGeo_C2fctvi}rA`~}4y>{06sHFZ-0v1CQuMhvHtE-M` zt52eZQV7MNKyfQjyf_qhXp0ut7PsI|f#L;=P5WO+uw7T22#PIp7MsOgp_@_}(l#Uk^7qCB1>Cq?CvR*o9sNt~;W^2CD% zK1n$5oT4!h76s(;@$qD=x7J|RBG&ScC{=X>>*c1 zik(R9<45AUlEQ*N(yPjTas*?~;<()2du#t#(drjwf~d*L2v-FQ-l^t2V0#js_U!QU z=1@eqH+(F!?F+tlI$sc)K2;*yBruyexI)}~aZ+*=1*NUf$0}}TFGjl_$Qn7ST%1*B z2^It>`rPvcAEsuzWA37|eE>ikXtg$6O1o)YU82kfJAD=LsgvShS8 zT&>b_LivW&ZZD+>=D(OaLRL8%nETaYQLaxX8_s2#Asw1|3A&uAigSS?L&wZegX2qE! zLUZ$}H6^m8iYmOdG^V4>T54(aXx)C|p1Tl`I6>LCJ3F#Ur4uoy;;fT|I~5g)aa~yi zOE?Wq&}aO0ASh5USnANAbByc_-KS-}-{axuyL9X7cwS`Apw33xC2@N_@bxOdi&Tmf zZR)JxY3pN20M%Ds`D<37I(|{ES>Daqva5T5IE4UG-7ZPNfZH4s3cE6_bLv*Nh8~;P zu-Z`tZ}|&Q5o1hwYQplOWxQ*Znv(89|K&t+kqMOFAM+W{m&3!j{Ut9KS+7hm%neVi zHbIHjLY!V4-{lK-|Gwe12a@bya%4O4wt<8p5YRyDtUZrQ>PNp-I^|W(M{*EtvFYV; zhSd_M79|!gQ&ey%d?>a`j5bPUhFq}!fszYYLP!;eXWFH{tliqCx&PiBUUlFoE=%eQ zT6>;80hZSQdxn$DwEo<95qE}^gwS{nZYv>C;i#s+Tp&s9v&ISoO6>)%W6#0wr_xq- z>#~0-XDcn$zVscoK#1~m6<>lR+=#@&=S^L3wpmj0f{iz3(O~c}Do3d;klyn?m+MONT>V zsZ*uVdoGE^sTP2qc~7f=z4>hB>0wWxKBF7+7PtRUKyB9&-OLJ^>ayxPz`YsQcf!x) z?6bGzpj=EAN4Ie%3a9b3j+Fv&x)I`(=c#igl$U`A2Ck&KQWtDPg)b#Y1E`p{WNZzv z8p%D@JAgr{N;3(MxMJ;N3vIX{OJ-QGe%1Y#$VOhON_d02ox<8kmBT;>H55UI%d8^c z=6RC1*zvvl;*6<14k7uW?WR{_$R*UV4salS#gDLL6iFJdI03&?EFMUEM>~c?_aqSW z^D$ny69pOtb}ZQaT6bsl=i%Oc?%)vcvnBg$bQ7gavU&vDlIBTfVoM4vw9Ps#zS^k^ zmZG6-aRRM;t@aP9fT@wSbmqgx(*#uwPP0^1&6J@A62~~V2<*z<@v4&ulb-t<<)YTX*2ajTi8y(I8Vkrnm-1IvNNqnrVUPxeDF#hNSP9 zd506UHqM}3%=ybWE(gAJ;0)qgfg>`;F|y|6mECRf2v7t~N)oi24fZlIEll@_m8^kh z6e~(YBEQ9gey+_Glv~zs0Z-p={_P(PJifIggzlzgWMm(aoXD7ltWPHtO&^yjWfI~@ z#9ja;O9(G zV1J(=cfiK14Bk4Iq|9&9!YT!|nO=y)@CntY!ZL1aJ$URk7cD&YmwleIP%r&0fHGgV zgF=N;MlEi@b;9J+kdZHKuWm26E0cE8GM5fa82nPA->uEk-hh4?LP{j zeq$4uK<-YGsG?McG8%@`EN5T7ny#y8_Y{>0R*rAT zA}=#tg^*|!0ltTtsTau-{l+HINjy8QY4r!-WTZIq3O#gZ4)bHzDx+WD;7YiF(`Fsn zgAvSQQ&fk)<-Eq|yzSvws)n?IGb3)P&FdBnKR|B|rr*})(s`|sx`@}Q>Po6e$P4&J zquOo!48MsVqRY6v+tBS!Z5uF?_JdHd?#=5;iQkL{n+73LDC`|4pZyXs&(LSycDJ)B`5{w+e1rNz2YpK)_n_ahhC9-?e_%B8MNLl z%8-DCuRC!RXqDxA)SfY_+R)~Q+l7x5yBGl&Bl{@l{;iM_ikh+b}?%MzFK=i6tvay=cYWHuLVI5Loi6L zGQrZy>SdbGt?Zr_zl+kR++ad#{Nj>ZxjJ+?sY7)(3t%T#m@I-GO`h92ypk# z(*MGTzl98qu(7{2%65q@Z?Pi1>^RiR{@{6K9KXfErbb}x4XM2$deyw4-X=cTb}0IU z+#GU$V|4CX-YieU+zE8L?dZFl96(9lIgj_=J0{8xoJhi`X(M|%^zv`&{Uzk_fO&10 zoI+ixlUNShUy=?F?{5Mj-u@iEW{yit!8_JxlIzWpXu*7x)$mI?*iXB93gEx zEjfJ6k@#P8|6GrqB7iUSeJp4G(y9^GOpgl%%!ckhHzN*tx7AJ2xvRNy{&Z4WcZ#Pz)NhT(nT<@6Pd`;l1M|&KJ!( z6s(Mo_Ns!_skTJ(EzT8;yLek`QQg3q05br zPAky+=|)!yJwaEV5@7LWC*vR{JPQBiTS}xX-2Tyl{LVFp zTW$6xh`VaT&!?4CaA;7$DX?M8T|51v?a)xTe?zG@P4E%;oU+T1pzD(jPRis>a{GFK;tOqlx4)yLbykY~+t zFVd4bw~`IAIBoUeMQarglwIR*q<$QEu_%|YUJ>Ei0vl=}b}d=2*SL>6`xA-Ux4t>} z%THWfOoQIq)G|$sBt_#y*UUKJkVHNG|17;ijf+$J=&XlkVr&{4E;R6~wYpyPX-nPC zsBBvssBG3>Ra?Ky1aVN)#RkC{(z?cmcRYB9E6L4P2L$`oE=eC85D*wlwixQur?-H= zzttXE9`Yk$`YK$-q8M#-LzBe~kx=^Ppw%?6&rHKs9@{6+kli*LHlzY?yvanLP>*mh zJv2Piic30F1_aD{9;{AElk|w zC$&U5t2#MG0G4QbVsj(`~r9fVdEUA^dOn-`gHyG&1JenlZ zzicj&(+USXofOgS8L>8**duQBWz9;Pe4HaJ>Zl~WFED~tlb);^qudA6gphpOefSfN z-KtOOwLXQu`f0LliPuWFW%$VK-+y!S=sxCSxr~Mj4mHhMlI~p*3F*N4nBa|VK4>iX?nd}D^+GkdzPc77M0jIV__SHtHf%2A_4pX z8u*=Rti!BDN^#H_zZR%jq%v`g_RYcMZCxR}QEx3wpf})qM;rfa+8y|nm|uplc^`Ba zjFmNb{qa!D1g~Ynqaghf3=!30Rub#Cw|^{8-!&d9(SIzAiY#;YDIN4p?DY9g#Y`PM ze=SlyB|1mu!(XDg8qd-%KeJR<+{e*X8-#>qjf}iwt?dKh)=4o=zhl0i4n(8HB zz?+yxxSsXadHLluZ&$(@XMd8qWTAyG5oLuPs+HYSfm42EMu(@w5_2{+Zq$vHP~yReOS>-4sPQg-VOIHVGwxot6y+;r(L&$^Ji8j}pn; z+dKJr*kEDBwea3?gPhvIWC+cPY+@{1jbICZoCz#2U5~gPJ_;2wh}75kole&B zh}fU83G5cO1ChnhmTX4nYST9fH(#?q&%FDd(CafEm4SveOvd1nycWDe9uZyKP0>YB zVu7ia6qB4K{(`zZQTglClA~!}aqVIRcZF!RXsmAjuYi^WP4xXnVbLkPGmnV?Rw|`s zpBSO93vqyUpMZ%+BgKP{Up#EX3ygY5_1T!_wD@N^V z5OpH+w3AOfm1)IFS$_zR>+0rmnf!tiZ`jVV`%>WulrSW?6CN5 zd|V8FCVa39BNJ?vM^&Kr@oQ8ae8Zoqf`zyI8^t@eXio01%F45=4kgCrR(mQc%GE>U zi4mwSL%p7NJCU*znmYlp?!;mO&^;B+V<07FvwTIq9J=j#mPcSGJHYVBt_9zE`E-lz z2CtsT7^W>CYqux*GfLv|cSS%}4RH(ylO!!-&$^cTMgF}O?h;Ii?+$FphC6F7(LXa% zHA+?empHtM|8ZHh);)_Pn7SL{CU|?^Z?oBxA7%sfkRVE=Qio0%2rEE~ z7H8Cr_QLDP2~(MH*7cOg%>~*01KaNm!`URq^J*DsMa91EA5RBxxV`KUh7r;a3^WKq z+_s_) zHp*(W_`TtshlmL=_u|K^Dh+{YR5gdQUeHQAb#a<^H`(PS2S*u?gpcUD=;(GRpBWV; z$3F_%jIQ&@gR2p>ncP$HdPWLCz=xt*;ECgq2jwV4&pn@=+M4@+_7I=15*7h49lhb_keqqU(Rsa!3;_rA|U3K;O<7biyF!?2VfY((Xj|D9`tH_o@UB(~X^?6E3Zc-yELEh3>Qz1i6Mf_*#al5Gd}rpy znyJoaf|%zGAj4Y$jDu>tf?x|jm{LNPJF;ZO=uV%cc07_DK* zG+)>0p2o2Q!%IeUKym>Prqfu;Y?c0jhro-cYp^IR?q>iyao6&y?$r7jX$1R<;gZr!ShdX5MP|uQGvGYjss5ZhM0!)R0);|_|T1Xdnsgl zQ!TKUSC%#ON%|3pu@dWV3=6mfasyAD?7qom?_Tep!@^HAsrg8jn!q><662aS^kq8k z5Sew{Aupm*GX8(`p;^>dEj#MUT0K=J@6BCIlfBRVeZKQKz`=)y66JrW!fy}zX=!^P zHxO*atsuWbbL8A`7%8-ixem-_tRr!#FD)%Y#?jH4>CDcxZ>^Jjd0N>ao{ncJaP33# zC?WhxKY&R5BV8x9;UxP5UGR_L^R=EXNX3Z>U6e)=BP9y zJ=d3&g<=OULm>9cCeQiaqYP%htJa2}|vE z0j}xTnLRHeGgwaYU$XlHTh?QOML^~j7ioeeS&Ic`#^x1kwxfPZD1~*uef;2DO}F`H zzW-0DhP!j#9*HuKiY=U6Tm|JPngt)GBO8l~v?&2q{?ftsEsNFReibZZGyX>%>JL7w zhhg7M7GIg^axO=jeX}CZ0$}3jIcFVKmv%PU1~n61F!rU4kU?2P)DTmp}2_2tFqVp}&yUh3eNCxraPc{OZKB@PH z*^8q4&*}HYdk=1d-1`SmB+SQ^bk?z6xWVGp@yFA|tQrJicIhktJ&)E_w}$$y1b{P5 zQv6Bh62>)x4%SRzvx7O>95xSomV0?|xctpAiNPJo;Lwai`@=m}TZ^38!rPJFGjH~N zA#ld8!5c&3gW2wVKNWfAnIWAPwu{pW=C-TOy26}#Z6S&Khat%K+@iQYAZu;)yJYfn zR{vO`%FOR#O`dV!N$&|r`k-&Sp(Xw~eCYq!?Jo&Hd$Ii3x(j4g#@xjtrUml+3ZW<# zbR-3yC9hOa46oQpkRS2HoY?3tIQ4tKscQ=mYN(8P$;+wd6!wAv*kXGQburow#7Lsg z50{YJiUkHzynCCvVV_WZc@XCH;9?Jooyh_&)nt6Ky6&rXID=CKVlTwZHmcvKED8V_ zA?D6JJKxx*031CV1G=rNu?T+Ju0h!3c0J{U;R!a-1)0rzj>wtJ1ah&zm9TAdiJ(NJ zR3z*6{UhXb!-X7WuyF?lq^VRYQ76RatW_!Io-Dii*q4rb*LajLVq#tZV1M1ie-5R` zdOd-0J^r=~ef;X%>al>&YoUjQTQ!n})LVry`?+P|g5=Odw9$$By3q8;n?8J_jZ}g4 zAsn*RU5~VREiB;BTv%8j z`|yY1k0WIqme$28h^)=*ILO@7C7{Gi=Mw96_;V>GYQ*0S!twam6aWq@v*Y#e^*HMU z8a>-)92CrgEN!FDJ`7FF;bsm%~*OkRLSMs(@dPS8(%@VTM4 z1v&PH7S%22kBCueR*9l(GXCa%DeRtfYy_&rQxIqU+d?mZB>W*D;STq>731UDXb(;1 z-a#uIIHRk@&p)HGW$#iQ{W?C-nPUhvdf+)M&fDu%x#;u;h&fLAZZp@h!R!_4q>GmH z6fR2f-+^{pxW%1W7Q3HKPmDCr-6(q{&7X97qVovwmnURDjU5cbGK@>2U&@6ExSh%| zqNz7{3&*CWjJ<9YQ!N6{_SOw%flk++Uw}#TU_PEwX-^+}I;F~|y<26{@X{@xk>cWc z@rK%{m$8-Um?nJG3xlh8s#DO*+nvLG_z4_eGKxBY+D+mfJ|=R;oA-u+dp$54Wi=yI z1DLKQzf$p0wixD|b`LClq6D1S`&NB+YKlwd8?EaKxK>5+cd+1_4FU){`>omP4-vNf zn2JJYq=zD3;wWQQ(ZDHf*R*NE7s0>0wON8gH%Zk`Nl5i^tGGrp?!S6pS7ij$&mbME!jwjO~~6ffghNb(TxgCqP{x&rs6QkIwzAySWImL@M?bDWCC z2t=Yx@X+@x;jr21_m+#t-g~SHUKRG1voptOFC+6IoI;3Rrb9K=_g6^Voc@47T~lZ` z4jOj7hHlhjX>G%I0zwc@xz^9b%33u5*Fm8wY@+l%0^6;uSCxZ-bdeRvKvz?q&HHHS zAk{pdX-;8E=lCJ^xPXY;ep(Xona8X_}Su4`z2p!Tr? zBeyg`VxjgPC4Qy$jfi5~;{{vA`+t^k{^KoQ01{;u28NT=3y=~pghmz}%f&WyCFs&Q zb7Y`Xr=U<)t(h~XWGjrAK$~R?xHR}`K~GPPw!TMDwvZA&UK>VwSQQvkX&7TdACk1L zt5z=p8TL`wW@{6GR>Y7ySkfcLE`tS$()ZQ~>t z$w^KcF3U!US0taL>?C+gL5b=?Q2U~9d44^IAMz5;n68?pMwlw~>a_|g8@*N&# zc4&B&s)!)NvlepARcB6P!1boteY{POdUK4W|=-$$(r?wdv=M&T}M pAEl&(f3?>+K^aa9KPjv{K5a`n8J(?6K7Im!$w?_lmWhAz`xkUSJs|)9 diff --git a/examples/hip_bench/diff/1vs2_diffs_3.png b/examples/hip_bench/diff/1vs2_diffs_3.png deleted file mode 100644 index cb62015697de866b61b7ea6f82a5e8d6f12914a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162629 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�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 T)z14G?)5@JUA|h@EcCwsRX;80 diff --git a/examples/hip_bench/diff/1vs3_diffs_2.png b/examples/hip_bench/diff/1vs3_diffs_2.png deleted file mode 100644 index 1ebe1c5ee9957665536bc8d758797d1f65487e55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183293 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

P= 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 qzS_RI(vZuCIc{XXUreQxRyLe& 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 X_5I?$r`9z0fFDUwIguhEJ@5YmTV(U7 diff --git a/examples/hip_bench/diff/2vs4_diffs_1.png b/examples/hip_bench/diff/2vs4_diffs_1.png deleted file mode 100644 index 0c9af856d4cf710cccb0851b6db21f5d2979fa07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428668 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›M*e^o0jRv8Vj)?4k^#UZMs_LSWM4~%( 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

  • ZKdloyE+0%P>D1u5Tv2SA`dS-6Y{?Y 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 z z;X@FKmy<8n5Y;3Go#XwKV4|z*i^Rc47s2VEn*Z=0g~6Z=^&?t* zbYXPsC;;YYGDfCS%(F;diR7AL=~q=ePjsv!Fxn%v*F};ofWafKL(+Zq%=cznI0pqnrQgn; zREJNTHoGgS;kyljBtr_E(I+Ezh=?U>m`tCbF|C>|J01BWSiz$mu>q%Mrr=5vOczQb zXXqxcUOP2I(uhoK-qX(OAfSE+D6yJY91yHtzZA~nfP6QEwoaNDXI`N9i>VF{W?K4GR9o0ssQ*W za_C8~i^tC=zdLtR1D;^dmQu@GT1u8l!?@dvu;_AydA znq7Rh@*DlO@%jykW�CmJUMGx09Brd3U59osN#w7p;Mv^z8HqlH>n)&wywdBsRXW zI*w1RuETnf-c@RUfulc|F&6Bx{F8l;7|8#<01aNxgBzI`g_-Oz1oMXD-`oI1+l1df zyqqR|N&76uX0fLb{uL;B79DIzBx}QVr>#g^q?77`Mg@oH)v^JY{ymm&2trU>ou z`DufjkpoD4Q*?A+8uO&c)a`A-(J5lBluW7F2xs5}bIPopj+eB}(@~PV(gAuv3ywYU zwoyI_$o7|0(E-+RKzpyR@}OFhYmjmypOnn&9)(>?ccmQfx)z@9H3Qz0a2kN(_QAwOsW{b#(1L-QAb=!;Fi1 zD%<-y(L)~2YE#126YKQx&VQP2+Xpf$X#mHQ=n4zT4nJbhq>MVKLF|6(iaFu4s$Vn5 zlM59+PQR(Ss||b807hUxM!)=xlmx-LgO+3q^95lD;o8Y53|dNyf*E z17v4%ZR!e`zR33)LjvEYcWA=o6f*HKHlAu&DboT~B~9w>OX+MClP#Q;vik=D#Ii3H zdjKm~Z4|aeKCTM77UTUgTCC?q(FMk2AV#)GEg`Mo_F_OE3y;Z93{itJB~O{Fbce&j zPfG}MM#x4=e+u$EHvL}_@8AL>V4p<9U2ZGX8L?s>DMe=nP(^4Z(5>CZP^u1TPL$JS z)ybD?h^i?=$ZJop7u~?2ciCh2GVy;+_cLfL4d)dC-u4<1kt2_h@bU@e%ON=etwMDZ z;a=|{x6nsnjMmLv1G_jFM!O%g+hU$1$TUg9WO-Cb->4%+h*?pPEbU&*9!8!?X?h-q zF{3Rhoa7M%PEnv^o$z0*`WD0c3Jt%UP;(Lv>P=ydqOZo^&C~yfA zK8+n6vXE%GYB_5a-YD5PJj7D5(B3K>4x2oUY&3>55x0rC*rELK0)a?$hQeP#O{KYu z&sumB6)wGG0}%V23IXqM{p&y}BShNcq}n60IZ`<%;f#~ax18RMbT~j>j3S{^i-hb1O<6z$bZrcwow`!w>OaefkWFxip@|GLH3sPf7&Z^FfriRPbvM6VvStxR}Orjf&na9i4C>aAbTD5 zr-6*=c?qJ5T{=^tu%%lP+5d1@ehC<=RwJ6J0y$vBe;wCmWNHdYas_U>z2}hnB+l6~ z6y0+BKRuS;k1oUun-GB)Jgeb(uL@QWcgVKRZxadb!&~Ow*y{%oB4Ra zPmu#?3NeCmG{;#~P(b)X)Y<7|r5`Ze>C4Injd9ctD8${Wj$+uBq>}jKjrj z;Cbbg@(%ZaNWQ%X=XPltHxr>2#d4Ws@0sElTk0l`J1E6Cqm{tk1O%Xy4UMF}+9^+R zW?EJtue6g{{0wG13Fi;)8LE8oJ?OZDd>VmxDagx}s#5lv1=E>`+*kjIYONm8RZKsP zIoLkVeKD>Ore-+wmOB!!6T<6%(e>3qaem9T!3TGDLLj)iTYzA}eQh*8R^y3K^%OlPT1ZmmN3h2F-3E2fC2MmHpe63YT)HK;U(y>SA#v7AdrUW z%&YPvhP`HD>PdnO<8pFA}vzxR9?-Em|7ypf5l`c*n<>J<*tzArA-*#zb?y2tOP z2bFb2z6VKpz`}c$Q0fBHe{NlqX<+XT&XEkZs%=uShvoIs*|So|F%db(*NtE(hemrd z@di)(nhvp()z3K)7S!fo3b$DM3(tLn`LMvW-}9tIlTFxRw{v&~TiK1CJOI|sMMV&D z?;?$L;6IqHj2mt^ZW7mL9M@+k4Vynpa2n6Q*TrO-RH#os2<1iymlTuyi@F?u`6WEy ztW&^2_R>OB|3kJMF|>X7HKwJ3yuI)Ds(~?=ji-Cc(luo$hu2LKlpSf4PFZZfmZY0p zn{}8%{Oz?GWq)Ew>v`BVAj^hf8Ek~I=GF?T`s|@rc&zZAQ7^J7Onb70R0b>aH&KFK z05ht5RS7-wPcc9Ou0Ea4GG=R&>-)=}iKjo3n>2%4)gF00Vhh1-=BSxg0=ISWEqgC{ zQqIcgg_`R@HV$ucpVV7VK?%H00jO2q$fEz&s0V>a6HX+y^%AqY`~6pT5@mD6b4w=Ck9Qx2cL|$^Q_9P&(=(RR9b)aE>Clrf7r*>Z z+U$Pb#D9o{^!?(>L4X9Lh19e-X({lu@-b(r|fI~CM#ZU>oHss{y0jQ5H;p2)c`!}0&2eL;_5*?w$7h5smJGVB3s zJ+*x5&rQToX?mw2k}ED8O5()#7?ur?TjBo}uVXzOn!$oLQ*KyLDJ zLZ4uX)j1x6g39U7Ny6g1+?lfPoZT*w8hQm8?JDmL$_F!Q9RIO){uBrv7d7{1W*MpIB8oTTd?F>z+e8v4`3-09HT z&qHoQ8$Z{9O8HEj65p{S47sn>r6I8i^1l+c)T(zc^yQxLAg>IC=q`G077G2I*M?$H z%%iwtFB4htyvs`uN@79#P960lC)3=Sr8{3IoFA zw+?Fqo%@NMwPq{cKe$Ym)Ajs|GiwOTNo8p1V0B+Nz@F`!1GumBQw|=^T9-KLTywkV z^XG@&c-tbZ%}aOw@$?)Qe;$k}0T|IGF=RCkuqedzdkn58oO|mTRk6)?6R+EgI&L4m zNJQU2av|V}zZH2}It&u@KW6IurF*tDRtS}{a2K#{7*y6>PhfDh76URDpALy=bS;1& zp5FKWA}v2ebX9V&5#!F{i^b|YlcvVMOe_c+Md*GMvmkb1CWUp`Pp32pC!b^aNoq3Q zwp68o^UyBJLicv(-XOg{y+xhJSCgz z`0Fb2=jM}ACv!xnxFBuN*U-ON&cE2VU~(w;sf;Yp?hVvx_8e4L4jf8o15>EJtNrN8 zMDV&H>`>j=A<32(PBZ|$ z>@q0qwgU6N_dM(XL&%`Ul+U>uMfpas}Rz5&E23VBuTkMbDh$|Tu zdiPguD99aaQ|8544-l$3d}Eqj@8}E}!@o@gU2gvo#n(|t%c7v-a zI}|?%wu_FMR73VNfs1n?lkbdV;{QyB_n(AhUGl(!D09|KyG^(8?h!CbvRZR=`utfa z;zbps-N$!vZT0}T;2O?;wnuK9d+OMS*c6Ou!fp&LSYO8vvOji*Tc(k0kiyK%J&z&tvCGzDQyToP1%DvvR?)7r2-mh7 znN$0`>AVMB`dJh_9xz^i3FYHkY)x(7o;ihjWOtu$@yYpj0Bi!`)47s%_(B^D^rJB~ zRQ1;2PXV)aTZ2`Z?8fb{*(Ma{z9E2CuJw1zNYT1np)MP7))LJCsW%TwI@f-8?yi~W|93Zt9!{j(no_PnNs;YY= z85`M!BqZYbQsTWz{jQ2BFK5v%24~{cXhjHTWKYtrM8PB%rU}PM1(L$eq#3z476z zdd*UsPo1Arn>VcGWhnWt)A5R_NA$Ub(+&Nbj^$jwt4j|BFWUJT5t{pC8GCT;cYw&e z-SPh z&G7jiGd?Lb{~c`1hkK)Vr1(bMlOHabN2AnN=0Yr4bN2KxGKj_MNnruV8+o|-fSHa2 z+}~=S4a>c+9*APoLUMnNC;0fFal;_kLz0d&0PH`URnmtJ3If_(v|h~8Hgs{C$lqVF z65r|Rzw3oowB2^N(MT@RQWFW-1>=Lbk6aaa z-gM~wor3)?c*|7yZ@q~s-eq3~Ur~ml@p6{Do4f2&)}}yBGF&eG_`=C=EW{kT+i1MGjz{b~0CkjEG|(%ApOLObm+6<5 zjW=rtQ;G-6#QZDp9y~^&irDrKnqbhL+}uNz`C>^b2tUYRT-UvRNi1 zr@3NZ7BK7GeE+ojS~i@;JZZjFiHC3Y#zESw=zx(5%KsvxHT{E833-91NQ=nHtx^Lq zUrv#uZMDWTyeA4JvD^MhF+awtiY4iJIXCTklI}(fwNqz#+*B_kIp3pZF%tVb5`Gy_ zj`#=I7OR4mqfAx%6DqR~xZ+{$%Y52Fx<=?%<0|w5<0_TerV8`+hkKIJkidFKBoa-< zpg`{U)&XaO+`kZkYNnB@kr!lz8z*x}a2!H|Mg!IVen=A< zW)d#_(D}<7S{phi=(|vy@Xy{=u z;NWYejFN~HU6+VIOBH7pnE zVk4IyZKF0$P1DVGJb1L%tf%MVq!jd*CX&WCg5~`d>V$IDZmLTBnLPtw*4#m?T4K$eV+ntSCeK^Zk?z9+T9ME9ImOGO^s02wW4%RYE7Y zTDLvx^vZ8d2b6lX?h)#YyLUN~@vt}#1gVRlA`d7D{xm3$>xCr7vwyg*3ih%K!Kk5f%Ex zYTSM`<6shm&|C*MD4i8PBUP)mu*LO@EBw^m<4a)M{(F0Umn_im(Ej&UGnTBSomt0f zxzVlL!ntk)f_0EQT^TgwE`~~s={Z>vJ#wMlMDdiw&LWGR9_jvqwZj* z7u)Z12e;T&Z(lU?ufEID4dhPQhJ%aswdC=c+j!SmR)fQ^F9MDVTCV-70d zqvG|bb`J=`69u*ZnNz+#Ql*vYP)Y@6OT9=6RqiL`xorIJEEZeWZ**rA~L8fnh|R_NXK~$xwb77>9jNZX?>+k$i+``sB>+f zP(qN0sK2wF9h)no?Yfm7XRCJ0aJy)?5zSA+ycqHhhfk>=IC0d9mtD36QIcN;;kVUs zeha71dNOXQE+E;)7RYs-6l)1m5RA~;YjvXZc&=ykP_Pr`^DpSo&|i;%fbxd{9?1m`phK^{yL#dZF&hWH+ zK^0Q|eimB|g0ZC$MKafg(r`R@uRhknQ3*OY^pP))X+20R4xUQ`F>N6TEVYP!i6o!# z;=AE_4-yDHMPX?D?0}+8Ta+aGaH&qDb&+YK-Mxe?9+H0R7L`jEFjJnTmtdQLEQ zMkjB&ITcDaTopt_cZil4+L8*aCNd~ISs>bD(OA94pYc0#eJhx-A91rTJaij9c~g8i zx@vK_RKZqf0U}DlAG_E$Dc)sGjF#nD3(Xwo-(1;Y){_T;pmqe?gZDjy5X7S-Uu>pn z4AWD8&c09>Jnd#vPymuepfB6j=wVA7P5}Kj&AgggRU(7dwXTH?Er#oUro6 z0-pu6qE5x~LsiO*>saZM2e+DS@)#bTSRg~v1>b6r+*CJ|iaw{;CCE~OPfI|EU8sCH zgbNw_a-9>*{AHnlHD(M%@yLfNqhQGE)Jw%NMT4yuwFXQ^euAdLGU})$1WrS3v;=0z zJ;w?}&U`K)@ue0cX^q%8&52-~alkdT1)ti@bshfNtF1oa&^x!qPIp72*`O%iNZ0Dc zz@BiCQlB=Bx%z~DVjqg*Go6mKF&(SF*AG57~g?AR(WzePvxGtc*Z$s$_ zB_+B`L({E{7qE*R5E(!*+0c`+na)KP#~7u(ObU4B?wR^1GONaC-{nWVY15Tdxj&sZ zb?c4qu-dqv>Az9*ivnTrc!0n7Wkd~qFEa+A_+@guC9F=N4;FvsvRdm#&cZ-mhmv1P zx@(qUQjNs`?h>PktY$_qdgtQ?XYZ6l@$;12!@eh68M%#qrdOYnHJ*pVFR;;rU>;^dC zJ@uj1Qt~YtYtKz`O#-U;j4pGsXMtAc=ehw?3`wTAVcw-1(F=vSGgUXu&rSYa-uKP+8&dfg5tV}AM8;yC5JJ!?(Lr!k}9c$)wyEsqt z6D!AmX#w!B{j!Xqy&dNWLSt^^xN>bNG#d%%`}6FvP%YvwfcgI`Kb5p{l3@cDwCn@?B_I?1NVo4 zIY;a60;erEVrat;oNq$k!aQsZUAVrK3FR^c?04<;wYS=oc_2yGG znNr2h#h&K0-!ZxO8h=6{#c=ukq`}OPscs5Ya}PF813hS|wwWB;`93w1=xpcLEDutT zmo-#I31UYalZUD;ce&DsX2|f-vn`Nyx=j#Z(K!h`FWNn(haGA}q z`Yw=@Q|!HODi5b1nlAT=YU0-uE9s{=hIk?0%C^oNBK~H_mr5?=8>fFfSKl2@nije{ z+(rerb>h?MwVB?g9rUI2RZ{1<|}=iD=hYmH3sQ^ z!RdY`I>6Zb+u;oZ`J3O0Ne;YKFuGsHuPgLk8$RP3Pf{#aH!OB6I*yTr${sH^yWq+T zvam0sfH{~Ja4dGqR%~yk7_6|Rje-L$l@y=)%&*xJW`tL`*iR9PPrrnwZIUnBR&{84 zp9`sNTvq%Re$!nWi z)7_IATWUwqzZNlkzptQ`gv1843P;5-{D{4inue&#MDrlVbI92{K`Dq-vSi@~^wzC( z(%j!~;5uX(>fLRF3`{QeF4r@waBljZbt}TNlZowK+#)*Z`pls560*tB>iuC})_X5@ zFAvJNJgvIz5&mL4+);+r%P7<#`^zVTqPac{bKUMPV_M1!W5OTneK7joGUy4o=~hr+ zL=O6E#ya^)BHE7fjA-p)7EsnjT}U@n2rkO?g-mcD@Yk+!{)!4x%u3gH`b>7gtx#NJ z|HPO&5Fc#41x7G1ng^|N`m&erY;}5*E7AP%D2iylt ztJiGEfCWlcm%t~vBPp?C9MJKs!RobY$u7I0L@8(}xQheTUuUzGhs#yU z>+sOz!aKOsh1(f@5Hiw6721u2FibXl@kCt7W)wRCHF$=ED@ejsTu^xQ#1uU#Bg5jy z2E`#o?b7qcJ>*%RNLOyeBFS{&dVLXM{*&S}vMqyF3AzalKvqW3WL)fD-lQZyG-FIF zea+^XmL8HH(s|g7Ci}?Yk%>G|nq`F-C({0kTjF)u{$K#_M2*FFy2R2T@Ko9<`&uEjz#SaQhFuX&QP zpUA_-^w(yMtiKpl(y{s9JoC$sLr=ryw*=ZgQ@wi5t2dtRe)`GG)h*7~!)ZKS5z2ec zucHkLS0luuFLe&(`?E2-5?Z0&y9o)lo1aP*0sPqT>LG5kCvCWG9JqKxpW`v04J9jpU0TV!ywy;F{|uDtVEF$cqJ0n|oZG@Krk1 z-R;JkA3wOhdM3706|O<_D*)n^#uzep>-7b7rlXJ~M0a`2L>Mh4V-pc?SruIpAHY+| zmP;352#pw9(*DTqcJixHb3+erS^;zzI`EVvOJBhm*ph%DPrtW#IS!hmoV8#sE8mjM zyrM41#L3CGL|0vIaYul&&PpGPW>EUX*uA;)yD&k%XBsxmxEcSZhU)f$og7d*C`mT| zy$*EIzsP|G)PGzdvvQ8ia=_g+0-xqoRF3UvdHmqF^~yHxaS5^GzQ~q%5qsD60x$Ne zxRL${8YRPGuLo)fL%A)=PX5Rmoi{wxy2I#9YUtbVSj6LiB87}EGMRp0?w?1rm=!b0 zA;wDE7{Huz0cqGsU|Ssfw%^xtAh#rs$K&W{O>4Q{VBFr)(c>s#gwJQegtWBrSX z(b0|^WRMZ?C2vbktb_|Ek4v`-PGUOA`<$;!qgu9*KvZAYitLZjEDObB}DeId`i!RZq z%RV6d__m+AUVdgn@ulBR#I4QWts{G6&RbD;=NNC4Jm`Y~AHX2cF~#%CPu!U&h5h4M zr8OWV4gA3bP^mo5;L8_H%6K%HvTK!FLw9aeibIAD63uuYa6_Yo6^IsfnWrzR<0WxI zDI#2nHfY0Laq~y8{VdlbrnkeQ-C}9x$B-|+*5b-Oq5*aJ%8z!U)4{7#13{-RIZa7E zniH(WjN)KAg55ldnq5G;_g=;kAJ;ebFVz5+kj88RnJT(827NgHC&QQ4-B$g?gp_vtm)K^fl2vn$lvovp0v z7^%)z%3oq2Y4n?EJ-ww`C58u0Q=l3WM^;GB$R_b(E{k}=cr6nQY@QB$7@~0V1_jOE zA}m^Wi#KCl4c*T1F|6JdkH}f|)6=yd+>0|FcDAxVt=_B-$VbSBBtsOrv(;!+b-lz^ zAg~1zg{r@=({zB@d-lxdd(~Jt^#3@_ICvFF_zx5TPlYlw(!Rr}tSsSWGuizxSpvk2 z`8n9?{&|$xCW%GyE&6IVU!$vKnip>8O9vLz^gS6|TeRL3G?JnNSG)p#ve=c~XNZ(xf z`b+aLe2B))7Bl~DP6j6wPYU?;v!u!ve$6}9aJjDD`K%hCaQhME7zaVR{4}(?Pbxm? z9%UNBLg;$f#Su(5^qp!YNB9!n5_KLhU@h;mCry`k3_Hn^e*W2q(fNR8s01K27ISe0 zvq1J&P@M(4-8%W@`=r^M&l%jQ`wk1wWW`#^$!?8iLUQs%nD&}dN}p0f~mPE|?f zH!P=XE!s!nN~UVz(Fj$UR=Fi~aHH}BBE)+hs5T=nGI0qd_1iOhi)%4^1bpL!ZYq~n zBSm@oGy0&*_DKcgb01iH_Ey;MxH$TQF4paO8MpTD?8zr-%uQN}F~3ft>J%^llJTHa zs|8hsl9nHX=lMt7CmZz+F*r^3Ks0fRQ#ewDR1$4o})0Cf)0DZRW z!Hx25`Dh74*QLux{uj>>6(rK5Fs>J8St|3Kic%yR*`Ky;%U2kCmJS`usi^eXbVv9Z zpB4Uac7I(ulZCQ zTq|y@>#%I_u+GO`^?yf&VE`VV-wV%ilP1H1WMoP8RQ zk_wIPKKmy9JVmfy)?i#g>a0**2O-<#w<#8T>xgX3L#iLI0M`D#b-tzr>n!rPl~eM0 zVQFZW8o2j4k?FS})s?z41Zx%OJC8-qEkWoNI9o3J^Y_g=nRMb8Q)kWy&8M3$v>r(<(?rZHo4Bcmar`>P^B^HAM^d&f4urj4Wc@x zT1VW6F<5U#IObf+Tf6}k_~m5zTUD+kj-#CdDevfyiP`fV zmD%NQB}~J;xcZK9#TKo4W6wnM+?zZ(h^u7~Q5uU+_8wo%ae@bN{cYiobmqKKR3(sw z*luD-lA{q4Ul*rux(b%(QMiClfz@*{Iy}?-(ZY#Kn$dGgZV!+c)sUCD{;PP;TBxMz z(9LB8VgIt080k!T2M1W=IJr$A+cdwezWy|5(ab>_U6zcS9y- zOg#Nqzzj>~-uizyT)>y4`+7O58u<72%b7m4VQbGARbRIFce;VV@Z2}83zVxk@;X|B z+9w(<>cs$Jo3@;V4Px`JNefwFl*tm=>{v0exQZL7@5I5aVsfrx=y}N_=dah818vW}|WN6jgX|>$s*Cv&Dbn1;vvd-v~ zl7(B>wG#%xrQ(7}&bbQu0vt&**F)+lG(GDF}>mzMDN4m4@qM%aq$C{DB@#d({U2oZci>qr?L2Ru_{MZG5GXXeT z+8Vli`+N9qkMLJ>?icteHo8a<-)XTKT(Y8SF)?Sx$#(ptLDTXruV)9jP$W6;!jPRa90D5X@7X@`#8~;IZyLt-cMTn#TS^omZSY*e zaRX_~^EnU%wm&agO7J2sVm; zo3Ha!hK1T5gSZ=iCV8^aHIkn!Id8(Z1EQ`xRO-U&fA-xPB#)z0~m zz+~S+DzM~hpN{*#iS zg|c7ix2nx|)vB$x+$?jQxOoB-cL;(Zs=yx43k|92ivFy%`Tp@2^Jyi8>ToL|u`zMh z)B~p>qQNIG5~WZZb|w$5YZ%oNNhJu#@HzBdbx9(ftz!W7^ZZk>aE@W&H=ecm3Z<&A zcJO!?t2-VClHZax78=x8G_my)BiD0g$4$yKc_JxW^Oug0(!g^*_Og1r_@h6B18b~ujZ_QF2G_wSh^F|6#0PprW#tz z_FM77sEg5SLr56ZI)y{j-U$2v^bt27Q}giG#zz-V^+Q7YmKpm4{4rheJcD14a{zx>H9Z1PrwFh2R)=6((KB^ofSH_3_*dG;?PfY(3OrsN+4G)FP3(H$9A0U5RMVfZn%x5RD6y4I{kd~ zF1+w_mF$`ACh`MU#TDZv4f%gT8dZ~7exnlPO`5zWhJq1~OagcVFhY?_RZLn7lpFI3 zzj$hyY(PYhpGNXwFjq0?&OUdRn+ol_Kg%u2VaHf(1PLlY2AycExVq7J#|*TUd!sDu z*KiSfM9<|Z=c@V#qV*lNW!y5T3ME_dleHZBYv_Vkrt?kc63!<-j=pGTXtIGMMp#=VM0}YW^mP8WcgRy*yy>$iTTnI7mASxH7LmfWMQ=Wm{ zF_`URM#ZT)Cw0M=WjsvPi+5RvH>_3U*OgACQ3lg0utDnOHa8q6Upr;tac^QHez7K{impNln4t$1BHDv@O z^FgBu{VZMHkdeSHv7*Xe5p69#)Og>q*&?;dWKmDd->l;1ORNwNEFAUrF>qPZPGgdM+-r2xQWc%;#G*OjB*^ZjJmBw z36U+X=*Re~>d6oOGM*h?`000A5|x;^yM+dofM8v`^!s}|qQZ?%Wu%AK75#1zlEBcq zs8c!1-8ABNzR#RI;8!Vho9put|$ zmV^%fSTjECu3Jp(J3Bg9|B_lRI9r9o`_syW%{9D)F^GjM+SwBS);lV!&RjR@$&T-m zCL?3T{Lg$O2Cum&u$hffs}@SHq=qo!NK@bEaJm-dTIq*-(spm`=ln`#NpGp ztkMLewC&o)5S2;0{Z@}ZxcxbCwqLxfml7-lSc(z3HD*L0M47wbpneii=9^VIg7hXC zpi^#QaWZm>rViD1Lu}npH5!Qy)jy3vv%c(=kQclke6;fB|4e$?cs=-b7#scgB0%md zl+!w9f(_DH;A~3z^>yKN2S6~RnjZv~?)Xfpg^#h}P|uNMT|m?0XpS9%ufE0al0BJf zP8Wy!&xS9enfN|gH22~>>Gs1SkH(pLkrxY^)Rl0)zz^r@#H9*Ar=E^I2sNa?d`oY_ zmB;w8na~0${=D+J=SH(+rOZNk9~Ec}33#rpeN4hXG=yxR9jaNo}}ETaAh=K408yq!+}$g$u|y{JL&@4|#LV8|m8w z#^dzR%619ELbn5tYi~6jo6r6iNzWlA?+q)|@^LoOD{$zoQYjMf1C5t8==Z~7P9loE zy%?Bj;Q|=}IQ1eH!$7nuELdvEefrjf&=41`4+?4K0B9+RE>6>Ls}54ZdhBhHn5-Qe z_QnxKhe4vs7zr3TQh}Gn6O!Vt>$7PFM85#A;;8-lJfjK`ik@dLB^#abug4qD+3@KX z4EJ~YxrJZaGpvJfuPAUI*b-@Y~u)a312 z9lU`oX6hIm6r`hu0Smz`|9J$OiGOQsj13FR7LrLV^Zvk;S~#T4z@pFqnHH>`@`1@( z-GUi*qr9_yx&=2R07I1Fz*trtE)X{?;BZ%tFkE9XH09`TlRzObKpW!@7pXsR<-F+Z zMu-ID7d4T?r+`0^GrWwY+EE#~_YJa?f3N7j7DftP-%c`h!&cBOi+-w=^z9E;mA1Y+ zY8n!xcKy5Z|M~G%9KgNK%7UMDW7BmPsmIhhO!IWuxla>oCkOkFO#RK&>#5zab^%rcJa*f)N zeAYOjS?u=BxPbROQPPjk`nF`Y)<+-$Q~2sOpPsSrWm&FyGQfP>`sL(tb?iavMZdh- z^CR#=C}!W8x+W5)spO_cdP^!tYMW&V~KX?`|wa3{ZP*olZtkC&2#NeoJ)MT_5S zTq30tmTL|tK`b$ex_sU_4iPLlU0Z{1Qed)>=KHrpO9I0a_1Z=b3@c5@MsOaPBk`9qfZ*g|MyOg#`V?fhs|#FH~XdI~*vbcUC56wj{QA z@6u2gJIeS1iA$+FfgMZ&xJw94)@-%tX<%QtnHmmB|ktqrY}ySWP2pq<}dfLQG@2GZHq zWn*Bu#e}LE=N+g5LQ8mr7)Lt6K~czH8`-*N@?a0P;H%EUdxPcg{P>8rMd{5Nu>$En z&K!V&-PS0`c?4E%&!)Oi zL4ax!Wku$ugf8vC;NeMGQq(50nx+M($jyuzON#jIf4TdAJAW5!pn~q5vV|sk|Be&? z{jA4VS^L(V*r-)GvdtVTng_)^UdjAJSCdBlk_6vB_Xqdt=%*VAS{h27o-e{t3)f(L z&usd~Upb9*H2m7wBVrIE_-F%LZk<_H*OvQd@jVTBs|BRpT6=LFpcZhy1I2n~qC`T2 zVA4s%1!{M8r!WAw?_=e@BZezke5bYQ#IKw0lv{?@O4zR9Q_D8MHMa0^=u^8p&60g- zQ+P%5M{w2Gjt^X|_;>SPcw2H}kLF?&lB?m`PX$xEmv+<-SD!1;^3;wv0-0=g&73U~ zKY2s&`SSf@rUG4F=tidFvL-L4eiJq%B@`92Z>jXpb80JXfuEj$41zoA$?Ql5rb z@QnB0C-#3G+$R7|?q*exMKgGPbe4d)RV*0Bms5yK5f?XQcEDSqa^t5N52*myw)nBY zf3iOkczpFcFc%hd#l$bLKuGO5U@O>?I}>O>#!SP%q&lMfcLO0e!ZPRS9rk{E`mdK~ z9_@|70<~CY;Yth?${~aT6L4vq@rl>h_|0G*0+f+fSoreH!_`madWT4SWOr(1rmZNY zOW=l>{3+X#={UYd4uuT=mbpoJ2QV?E(kU!?JCo!1CKDkb@3T23;`LY($Y{@QE9Z_3 zs!TNb1$_no;0R4I-{H!=Nqqmc^b0NwF3jSOOVjcqG|%-+h3qPxVdUAi$N1j&OD{zshsyK60xmFU z=0DCtqjQDK2U9Y250D!|qleiJ@ch$H_rESjN(ws;Y0N2j<+gugY~Dd}V4B9YIn75+ zXT(Zx9kP=N4I9Bk>Dra|a)P@=Sahto(uve(gf^^gM3ebxZt}lo%Gy?xi1Y`C!J|rE)>dN|hC4>kKI(vKf+9wOB-f1etZ@5q313lJ zd`D1)#NaI3v+5m3$!L3C>aj4oX1z3L{Lixe!M^8~EN?&g1+p)bN)7nX)jY9*FOZ;I z!tQh*&M#J1T_61=N263DX!4o)c!sb;W5e|2_}%3_~a@=+%fwfL988qWLc`*g0W()>i? zJZXqMm{OMfKPSE+S>XEkPd-=+p&Wr5B)6)KY<&F6{$}&FPv1GXT6re}+u<&U*??rb z(+T0;Ixe7TzP+tmpLTnm5A=LRGmDr}3--gAtCF-f;(Q+=MralfF~UXPc=4SF36noF zSL{bc22fPcWrGQmMRZ z<{MN2>fV843P9c5OQ~;WNPr|b4lN0{qEsE8*RXV0-qb2cu68Bb*+~IY1NS(49ClM3 z3hVr957s{ARJohaYz1H}s`a_A#0r$i67$1}<;T_b{BQOS`(p1>UAF4*L*EeR#%~VY zJKxm?9P}0Gnu*d3tMzhmI~W|lQ|$dv zBS!EAK%=v{o{e}7W{J5WxKdq!;a9}E@t7f@(c4Wt`b{^%^OBJ$os%b2FQ_5!w8ly| zIr(JNDe?z0ofZt`1xtEh4JC%RZxKqnL#RIXq?cw^hdOs+R#29EJZYrqWegC{pU~ju zAnOo(Ed~%ep!B8t!BZuFm-?}l{?{(UT@|si?#kzl2*o}InL=YC%HP1EL&A^LCu8GL zlz0nu`gj?29?ihKk4GKfTw(K&=te^H;C}IJ@*iWAc&=}*+M0#yDE(IOhvEyfAnDoj z#$?alsI9E!m-5KCRV_LGHo;IWEsyqj&p|0%IQU65e4&YEbdyXh!Zmj>@(Vkmv5rXl z%sU=Hgc(DF_0bDGD3%>b_fW(E<$C5|h?R>Q;&#HfPHoPI(E7jTr3d4S^>n8`sdl8q zh0hxNue0(a7xWD((`>CdOl&;rRM(9hAEI!AcSqJ@{kTnN7-5@JEOV~H_yv=?5Xltfye$dAa~76qzD-k)C~rNkE^SO`p&eSNZyURrjWFjUFa zeoDbgqHXhzi_U~7rV>a4IOUi$k`ER`@>fq}7}h?QsYVn#>GjkmZ31)*w}I-2g4}=< zqt?8fA5r3Y@sQ3;VbXAsP`omtq^Oyx={aVkp@~zJ(aE5?e=EBY4b+tBgitre?D8ul z2+1@I!o+o#T2?uw0Y%nQeOfGYj2krEc==Q7S)OYy}s;|EUc$1R(U$-fKb+K6n zni}%F{u%qd8S*z0)*t;@{fl-U`W9uCOYCmleWt#bUpd}syv1??g5qf@IX%uluq1UP zN#JK3tdz#t2+Cj0JXV-RzncAvlV=#lhHZj;=8y4(^$fwB`NFd?Qu_E>mQ;~Ix?=vL zLzR#Bd=ZLE&?I?lWu0oSw*2q=B^&yc%n&xRXv*802iAGRuR$!qn=^M8DsewAMxa~6 z_r)REY59-(l$@9=^BX;7ggnAVmqa~X6_sp%9^@OeCng$qk5LuXp~vEy7@nBopo50 zZ@2Fik(3gVW)*hM~J-=u}$v%^8=0SAn4_QHht-rKC#3t!0-4#Md zo0Xp*XwyF-+-V>khpo9pdTO7Y8z|tND3li*N=wN~VC8{9yRJ$H0=);Hq+P*Ii!aat zk8VaF;_sb6J0NR6)pEFq7km>fXf&F}UG6^=lU4*xEbWvl?)QhCl9;ta{rh%dVhwuQ z4lj%%yMnCB5dGP-@(0`fY(Aa&ZW;-fVVU|X`aa|J@;}}P$Iu{U^0>zE55(!+bvhG& zt37A5u@@-D3U+CVVytimvxCIIg1j$~HMFw&(?b^gN}-o@{8f5ukSQU25erfgqP&<< z7k?;F5*M$1-us(Jc#TeA#$FkokuV_6;b%e3w17bq6NpE0b(pZULpVRtd&BM1%*EyI zbE+WjPfNMaT%baOYM9w6hDy%No*<7~bqNq?Byx$VET+%{I6Jnx3C8rBypkrR;Umms z+sqeUJ~7pJD=!fFR9anemPSs;~ATV zksTnzM{_$~Bznla*A@Ef4ugHQqAR%o=8P?AA7>>PeseySiLs(#NLqY1JtWr}Ho++J zId8_?bK50<yVk-CG37cxyL64!$X$k$?_oRCq8%DEhVQJ-K2?;F#FgHc z$UdZ=^S9YgBA6TJ7U$gYQz5=`X$mguFe? zxBsrs(YaO+IRH=1FH7x={Q5IvB&0M`eq~V_@;A|QRr`mq5u#f!!P!3QtjK0}KKW=c zQ-Ewa%);cc-I=GsQC6MkY9P_J|6GuHg4y1vyl|z?2tu+wZ6{5Cjn=O-aCx)NXTY@P z^lJ1Oa%&L+xN&<2*JE zawn&oA-j0F_^x>9Mo%f*xaBDC-)7(TE2OJXnp6`}&vWj?k^WASkZ!*3)%ldt z9?~b2qo1Q8X~-ZiJa4{NO8F$;g@>;Dr)#Y893wR)rh&J0ilch?Pbn;d2!ffQ8d(Nmxi*J?4Jon5^(QiRtPMEsGz{VAyu49$ig0zII>$Ul^9&DcF>E}EN z+mNX09n;&LN`co&A>>!O3Y=u(KX~O;ryM!LSXz|lCv{-Wtdg5yd}!HF(o;9-y(1D-eHOI(BD;a(+hhTEIb^(@g_#rr9?O#ebWynTn|jPF9=58{IQiB+Q7u9J zRsz(FOomI%VAg9*<=`UEH;h|K6UtI2)6nV4;zk`JUy4g4xe?RTruY*#i_n~dB-Y`9k z4`k@+c(t5)dZyrC9(?Zx9u4-$QR937D2S(oe)?7Yj&wJl($$3>wV7(LUiy(`s8{5< zz7!{VHg#cz?z;r`lV^cl-rRC|L{nvjU>(Bc_n=hSB7SGYs@NBJE*6TtMzMB!_?n@7 ziDS^VAtA>>UP?%B{58IGvR0UC;kF5zES7VKI<)s_9Bm_yU%1((T!o+cA4{ zr(UmNNU-FXfAo22sR;jMws2VYpr85Zy%1o>xh~e*KCuU`T8x;7(l8+JUtmX1+S8}| z>fnSv^428A&8o?~=9#o}F}iKi~@=)%7UOQ|Vh?e#m34)j*yyiNI|An87$ zU32E5#H8yD)*P+5|G}qpIU(71^8?5HR|n2$i4fqMqLNZd#)_~6DeIr`8L=Vh^^wAZ zn%H-;+uaQT>Q-A@Dc^FWrOxTIHr;4VmC0NujX!qY0*;Bir(dD7LYG1m4D$ppCzTMN zARZFhaUnN8U#_tU6LnQz&b(RxePkeU~$Ue0_x((toC*`~cgn?A3$ zoO9#OOy2iNW<@tmez$4WbDr?#FC+cGEQjfcFJgyzj^=K5j9T>f?x(*<%bIxz2HqiT z^n{lsp7BqzQy9wJ8{JwN?2Pl$A_|npLmqMi0QSqwa&6Cu`yU*rtkom*)z%Q zN=yP-9f^Up85KJ3=dnTfqv0ye|# z%!oqwF&|iZ5XIjNdNe^5S$K)p+jv`g?`s&L1Y*;rU!*jpN?wf!}Uf#T=5Q{ z`zQP@8FcKYh zynjB>4C_eAhPVB6u(}mNSZ9Vg&b6(r;uwT>$r(~x(u|m|y^>KUK}QedmZ9APlVYng zjiv(gfO*4{7*Y;OgGu<+J9NSywZ#p8O@3CWYcXvLvHnVWrHQfNj)u2$kt#YnD*vl% zr<3w^$){i7ZxblPjb~??j?B7pTP4S~l>0iRcb)#90?q5gf?5Z=A%7gVAur6Bs@4#X3Yp2DD)x zOEWgSZTUlDfY9G3Dkqt)1S+`B*4ic%e>4VTR4!_)N)NJ)qy#>2l~~V^r!p`o7>x`sHW$;>Z1d~Uv4DY1u9c`8P2+pk;cDN%c{y)XlNTfmr6nb>wmVier6+0n9UG&ZX4rzBBa*~%^*Ip1CA&j6#$ zIBIs{xoxURYBsw90B?xqL96^|bV;kp;}ZVsF2Jk3{FhTJ9|^EUgm`z#-B4!j2{rIk z2za0NP(>^8pH}1(w9*#*%dxSJl&CE=0mCqO&r2K(pJ>v={&1qJWtPR*obyjZb>R+E zAn2QK>GHBvHLC-8)hK_6rETO2&N~zN5Xw8|M z(O0trTlxkE!hBU(P#m6c4_lLG!!HOwo`il0Q>;5rfp6U#)P^j4_4p)}F&hnTS}raG zHz`-KiKFG;l_q5j6zQMMa1znrO%BD&P0W696Tw%WULLtNAR&Gp_u`j-cgA$YEWy)j zrXX;t;^hGA8imK}znt0L%N)`cFV=PQwM))ntHw*ozArfys?xg0!gGTPShB(3E*?6A zWVvR?Mp&9CsnSBlr|WW?fX6=~PP+#)a!#m*ub%Nb9K4@lxm}#vLbrBx4Vt-WQ0k3o z?T}rZss0HnKy_TXdmSy6_ks5cnSp0_F&nYp{=*=C@vW_Emh;lMxd54%wussXDI`4H ze?XH#t84O=956XIr1`=<&GYoqOX8IODyrwulY!i)d3FVGe_~LW z*BB?Z=?xafH{32iQM1GAFnO5>d9NE3faUVElNG8Y?cMxolUj7$y#k$guS-q2zz zaggaY5JR}ut@hV-ZCyEH%GO57Ql#ut)4OsSA=zGIPy!xCp>9FQKHbuG=|aJuKSAfd zAtS$pQ&JNC!$cau2sDYEp~q3w^{FTQoSNOQJmQVT?~1?ZqB&?%5ZZaI2xux43FK|1 zMSrE)nFFnLedkalFgho+DbLF-DhCT#N$)@Mf`Gi$ArC9%%Hy9~Ld>Wbs`z)a^CF1g zyBtSMf)6_xA_ub=>L}tMFjvmRdw|tGa8EFJzH@{xF=GG_WwtL&>x#hp? z^qZO#zl}_ovIya#ITAV(QxIf;AZKec<4LXeHLuoj5QuILKu+MErO{Q+&t-RG0czo! z#Xo10moAfzwUPD1I20II-%PNM%um2z^fyrc8yi)D-g;9Z5yC%iU)O?6e3qc{KocE1?xT~>@#5E;TbnSAqs8++ zd0Ttji4b!c_jMBqYHv3Ik1O7>wp?uBtwJP=gs!n-+Eu-#J-douzJiUJb>7Eerbyqx zN^ovVtHonr%13Eu_Bh;1>EcQlp5YX@G{l$0sL2%=jL+tJXoycX;Bs$(Pldx)O?4XQ zQaV=5y!WrTFtD4hBF~QcXgL7))|bS62V9>07iSPYJB!5S=KKG`3l>q5<5;bDU`j2X zfRh{Zi~DK`RXbNZhc|xrrIgkn9crJHN5Ngh*c7SXCSbmMx~XOTF-?+BJ@_%=ZQV*U zF?y0hpB>Ci%O5RWzQ~Ap8|1VEwVZFrPk&qdw(7a>ffxU{fkaE%2-R_ZK8=_R;PwK{ zJ1Zcyf(Xm*x8$$WnfwZvD?JNor{E@y9x;)`5Kd%MVi?VKP5vgsj(erK6*7C)9U*w^Zk6|^}}*$ zQA^F&bBVGH>a6mI?!kUd$N4m+k2&e}0qz7^S~_C_5BttgswJb9l9UEftcg3001JV& zvNkcIh%ReU-VdsoWO+`lzMU41EHZvV&ULRhrU(w3wpt+i^J^Fz#qQ&Z|PmAb#o zs$FoDWf$p3OLTsg27baZlh&6rHmqi&H2vSnu=#!4>R0zt$Qh?&0p+?)Ah>yYKXL{quN|PLU z38O;CRDjE`erbTm6~BhqMjZ3e!ND|L`HYOn@u%u9tIZF72G%gd(ns~Z4-A(TWrm?; zDjLDq^xtN7viMus)mv$@pG+#&p3>E4BxsZOJ@J{d$dO3k_>M{x#WKwfy*T}+m9Uc1 z9)VNl$P5ALS@8Y$`U@YG0S)<)O{q^V1X#vI3Kvg?OH>=Lz77F}5k_oB&bImDkfSSn zKJD)ps^ixX=Xi{Ar9Dj+%LB`MmL6|oEY1%r<(s$aeI7q~gWBH9noL6drsk$QiKo}y zPYPk59fHDDpusGMCS{(Evo&8O&nyN~h{JZ}9}KtWKExF=>pX71Ky#J02fuBFoXOI zCw4M(^wG)C`Pgl?02AToKh~O>c{pOo>vDz|)Mwwp?z)b6hmANN?yWfJV@R9a?r)1P z)~`9Xl#cVjLOgo8jCmby7yUjl!vss<&}En3amOYcL&^#mxcC+aFN-K3NqO0GFw=UU zQh7h`0QnnXi#Xq%sy&XKO0(%{dH^xCCM(4}tNHNBC9}?^5!Zo<{)|1)u?J!neLc6Y zUe=3xz-2n}`)^RH9@w+(X$w2lMh$*&~dgSz>EI?ZMUaj<6>fPCe!ypr`jeeKG|l>n0v$is8L zt-|2vE6xGBjbT-)^d8EHbMw z>bDbwqX++Pypr$S#`k4rUE$#nNzbktaQ-6Q*Pr&bnaUHnx9TxpS@ylItPs^ZGNBTH z=zL*g3k>)|zgQm_zMl6;%M~KEJ33RQG-j3AkPMZL1p+`DKoar#@7S!t0o3b!Yyl@Y z$Bh?uE%Dbs$~KXh&~c99)vjC%Dw4414Lgb+EQG)^<{ZSWAi-pPn># zKQMq+TRDWXAyxISr3l0bMKXvpm(#xq|0?WDtMFE$X>httC!8x zeY2bXpdF{Go$gQ!;oEh-dEfy>kwd{B^0F1X(Tj1Om~_p{$%o}DyJnlt@7lQ4i>rT4s2FWdraNsnz9Qm7Vy(FdvFyy<2#20u4y}|)EgdK1)i?8MrAsQF=TH9; ziI|WR^+|w-E6fZJnwWJpKU7zbmoPgiEq9+Q{j~29?W`Y z?&d<`$iqvn4q1~6x)2PLcvmq}ZpjURpITgstVkSHdW9>B27^mZ?yN@-pt)~^I&v`k zz-Il1u)|z~mBr$yizHS2al*JaY<35`Y%OIb4wD_1QWfHK&x)@g%VLF`GI>XQY^1k= zH;-TH7tOj6^{%#Kwbynug?*(;b^ktd7}5LO763UV&3I3g^S7R?xqqa0r4dx)Oj(<} z45+`F;^LZ>I-;VvI=r+I_BD-?&(EGpe{*;MsIb~IY)PbtK7bMwlQn1Zuw(%(jyx93 zu-EZ^tHVp~4;=P8&b3n0JL3<|4zK_i|GaDQ76Np1*zl??HRYM#V3=3YTQ3wQeujsD zDwN+3y^34Bc=9>O|6?aQ^t;GRm4L$&;xIajRl+8$Q+HueVRf80yxsLz>7R|Z2{{#%AfP4tdWjI> z`qfJFqu+zahNH)>hGYhmyb$gm#*b%|POF5o(m_+_*zJBV)A~Vdxp_~A;ij=01AcbT zgwFRjj(CO+6o75Rf`LuIJ*5$xwB1dmmLQenn#qmJi9nH+9Hi&bPOa74ow_XQ_WDIc z2B?1Z)YQyL991<>3j6iX8qL7d$JbD8gJGxUb4Ob{SWbp=TK^y*+b@Y@ek9M6fUEsv zwH3c9Ej)NZ$bOTS(t7kv`27Q1TEdW0^#>}(TTl@<;yErpBsv>Taw>R+Try0*ptf8M_E*<$nIj0Evn?-0LWSYCU>)M88^~z zH@|1j7<}Cse^EZZLqDw4(1x05!!t7t_dTeuR}TFn%D$NpOZ_hlHbm*P^l{f zT*kn(Fz$Mh!U*Agdeq@ONCb)uY;xr!f_rLEhttc+=Fb2Q2e@m^KAs!G99!@{qXB@be#1YZe z?@78eFhPg-pJ-Gm6{@%5U`>rSutpuHF}Ik^eB-;gnekbZZ#0PWq+OW+=loZu)d^{^ zxO;yeQ&txybI0}*`nYAsfqOEYpS|r=eAOB%$Yme$0^gY~g->MI1+6Q5{X%T6)2Z%94KtR9Rr7E*yB(han9 zRf5lg6_(naIK*2>q#bQt3AXTzDn(f;SG;Vat`=A1D6eY@30tt}3dIyW-Wlzt3?xiu zA9BrhclqIhFIQkWtvs*Y?@c6DzA|%YPPTBPxX8{Ugy-ciKK!hx@jx57lcxu4s+!*H z9S3YfrbZrQ##4ahXo|FXu%G~lzz7uIZEb2oMW93C+xPHmo>?8YIdEMCvg20 z#Jzg%*9vRhnL)*-dOntf_xN(R-(!x{?@sQ&()sO(+3ns`cV~{{2IY1bOVRO9Em+tN zo$(L7v~^1EeBXNGH#j+vArDKdsgHH_Ko;99d^9Iw&~1K>IyyH34CnY4{1f8%Y`4H; zr<=P+GmSx`8Jmdv+aj9!rO>S*_W95SVpEC-H&=uc+uiV&}mnMjY%q^Y*GXgXX@{PuMs|j-YDg!R^hu9t0sOvlj<{U`!HrptHW)7;+R96VA!~i1alNpUq zpypth4VUR6i29vw2V&wC>!;VQ&K^NQ9oS}DHNK|G$`z6#n3(XN;iq>4xtbqWW`DXZ zb>vhX{%yyQUOj>VIcn>?#u|C@cWZUhZEiL0obE+7zRG;aJc&5U)PE^$;40`3z}Aq3#~SIk238d zwVdKk2`t!py`AQJq~Vb^%PK%r{8G4L>+dgU%DnS5FjxBbTN62uwe245{hY;QonORI z#IV9lUw$YmyhqD^pV!-1h~Rt{Bfd|P399un-==Vhb>+P*Per&L^e`? zwx4@%{1&qlFrc?!7n|GwAZ{3U2_Ay)rU4HrHqT#!LG`?2-^+lh<}q3Ms=B6zxQ!CA z+r~yzzaP#xtajnMQTn4Wk8=bLN#j69Wh|ZppRL`)3>Uz4+~2WSe zmge=<#|9&i--UQfgwX@?Xn(%-q)VvD(?4EP_BD#3W0sdFusJ!mhvTHK-${o3k=08< z_pLii|DJU;8gTu}55dDxNSK_AUU78g-pO>vBrg&hvxmSiWDI0{Q)a-Y`mDmZ9v&52 zq;ea7=F7Ekke9)*vEusux`|B%QS|FnhEnOEUOy867aq_iWWq$3SHRfa->S9=7{_9` z=$@`zYd>f)N~~59sW|*zL{f zsZ{OJGYSuaQ=mbncdxwgsOb$mXW{fv@QOBrLxl=i%TMmDR{%&gmt?@{2a))Z7hz}j z9hxuO6Q{PEZMEOk=AK^K8INv013fn_ZMj>nmebmpI1O0~!S}zTx;(bkw9`dQ1hmGL z8I#pxFJwYHCgWqg#{@ zYo}`q!?8PT;QczP3)Rkx5O1?@o-5VgX9yR&jN}f(bq)GAb$RO9Uorv{P z;)^+q5JiT>jQgssA2t(4Ib3XB!FQSj8}&y}z5(;+cF*~1Ip~XH89zrH1bMdHCV6T+ zbh~V6`TUxBcPJrY%G_`dTO)YqE6eaa5~kB$gahwX;3w*^47x8{<*en%q|E)gQ&Le^ zkh+IBg`B5G9~gXf50%NoclkE$c>J0g?=i&&;ZKD*9+g2ILHbQYU$AhpBvKP!z$a+t zxOmgm%VVY(v{xSBtyrwT@TN6J1?(Q}=<_>_2DvM~58+i2U{_URGk;QECsoGMvP4UO z9B}MNjl~+j?YL&2n3ECMB^7s}bby$%E$ycLe*KVmOl=V5|L8eB-P7?M8e}w>cPPUS zt5kQ;Ts`Zo&Um2|3#GojH?7z#RTS5!7v90#GcZ~5ZfndlF7V24yH}(_FAnj0XlAzd z=hRX68I+!vxtK8BtbV2j|9_4xHR{-Yyy-ueF@B7iXKgx=%FaOrR##6|Pii`98FdegX@WJug<;6-R7gbqs70O#;Q?$dB zxXuezOwEH{ztg>9B~I_%dros@M#DA&BkGUAeH2$0dcCqeOmSqm zSmLEEvIenu#GQ0TNs(gDQy#U=f6AYYd#mY;JROBdJHc1+p~V|~Mf(XjeeECY>BDx- zlgNve$d6F~VQWa;@_Y*Y4gU$;@ai&4m`vea1&7#Yn(sn>_oBlY#(bArw#pSxoc5)j zOYb%(WwuDpjO2Y|98pX^(1ncgIL0dqvN0Tml-V?nO85uz+dFBI!CHzVEmIc3Lpk)) zl$LR%{?38-(+Lr>kH;~|KL<6c1#u7-X!`_r($yLcL1;lQkIl>kyX;Z}<3+rI!L3)m zP3l7z$mERh!b>(63CUILZ+AP4y%?wfn#T3)T%uJL;%-dpuwRfne4f0zjNaI=cs7-7 zCAgRuQ@7F@%74Pw4M4x1>~hvUT0xmM9^hVY>UMzdIQPpSUy+*|J>V*-*I2sKf^1Su z3{#9`!k34Xizg+Gd7u5WC+F*RDV-h;W+wB%)Jk1m1+gtV#$YMRl#iK^H;4P*@2qv6 z81o#3P;8uJ63dtZk5a_>5qRvrhjy*W_ojwsLAM6LHX)<*A6y0iB0br82((?Q>4VRbPtFdtx)`q z2I*r1uKn`mC$Yk}9QE9+Vxcg5?XH3T9n$9sAycC{;JhtINcC4S0L$*~D7UBpZeg-% z>Ik3R-i(keqv#Dj_=ZXhIUK;Hq({Y4PO$Z8IpxnCI0 za*@KIX%tm_;=7U%N9#@pt$R}GwY}BuT14R>J|^$aU>yTcV*HF-NDsYQsDUJaE#{g7 z!Tv;Nu7zC}{%)F?Jy*6A%|v+w593P_-vaId-^b=Uw_FhK$Bi`Ym3ky5TM|E%FP`$0 zt_z0YX-eL!!SOkXYF*Tnk@L*WS0CQum0~$20v?N zwM1?lxz(&NKo(fEpDdWlp6LI=51*}y!h#18rS-qhT>qW(`fFtN1%4^7^*hRU{pIFy zvssyaC?t>Wl!pa6Hx%_sln-U&;Qh=yoS{e>X1Tk0X(PuU{O7dg)_D7}UB!@KJmJSX zBk;5>4ySab6=Te293rqZZ$Tn{FlLGqDY*`Gh_|sgv zzV=$a6P_Py{*jlTw`*sNL>nH?1@$!c7ZV!h-XNsej< z>pOD$I;57lHB1mWsy1Tp^IGHjH6_DM5j>k7h&C=j z^Ci-^9W1BEUXJURH~LIN2f6#s;Ku!m_}<9rW$FD-BO72FP~vk5AOB<{l5t}6s@H_i zpeOosTi5qPMg~F@_{x8COo+LP8te8we*KGYiU56__}nOIqTSW-Boc9eA;dEwBVgO= zV%=@jau_wkJUr>nfWz*|=I?*Rp0Q8=ign-J`mLM${VvO4t;6$wm_q1*(_bXJZLNcAq)-}{h#&Yb4nX?qvGDx_uKQlcZ7$2F z_y74l3mM7Qr-^t#=6@mux?fOZEpTanJVE`_Slqy{6@+-x)|E*A#_36uEz0vJ4&ory zcm0I=xqn&gf8Rx2F|1@?+!BYA$&6#+>D}rlbix8;>{wrB92{~mJ!=^z@m1yb+*FNJ zknGbVVlnnPJ$1B(g8Z_K_*avG0_Uj{VtBmHHbF+n@$~@$sLn(l;^;+Mq~^+=dMa5e zvlh?5s})y!C+2b|y)Q-#3534}H>FF)Y!5*)q#jOobjBe`Wxr^$WFo0RNl!vusU8xa zgh>ywD%^km#ByQ#zA0DIM2pz>;hMuf>&Ot=`?T#>S%kSR}Q+`9>Yq_~?Is>{P zSiWZ&s^ic^>i)#;bvIs;^gnSj<>M;=X+Bj9SMxH5c#;s1r! zO#eRa;4?O=yX@m$`FkW(ByQvNi|8_=4KIFH_l4qOyMjg!Jgtv#W?r$sE!FUN`=@~x zaY#sLO(O2N<$`?=qSRPN<-Cm)>=$L}I9|zu*@|f4dnswE1^wIRi zs)A>+uW3c-kes>u;i}f(0Q${k#ratI@t-5Fl3Z_5sTgE8?o@#PE0nO6EGXFp!g@ZIc;v`Hd;KNq=A;Tg`1Ecg0vgk0&y*=X23sl*> zVaUOvfCF>H^Ybrwpke*5Yn=}wizfFhnN4A-!nRB=BT@73RkFgrrELzD{g12t?rTz$ zasPRCY%#qJI*PI^u?}{IB=2VxDle z#slEtd08hPSA%|kX-U3TNmk{%y!FmfdW3E>(2~A%SHb__rA0*s6}BcSPhr4CdHD
    B>mXcK0;{LW!kvPT>WuWqyIhh_2?pxnR}pw%XtST8>!-(%FuZ%! z%$w`6dX3EDO!m)x>IflzmJoD2TUK}3F2u}p?7#YF#j|mO zrlzVhakbREaF-#(4(mhs3y#clvhotJq2;`%l`jr$yRc6QHw6I5N2j%xMFZF!ol%Yw zZLVMGQp{LquG7c?@Q2hpRqIT^jS8lBHv-h%pfU=U zNvy-0YRsS`=^s81b)s_{K><#;jXW~P^{)8OpRrJ9AX)g&$JQ@6%PB5dk$Cr0hpu(tk3ap-Kz71BY`6PSm{Q*680jz={=)6vOoNKH_d4s5#$*0MDcE00_iB7@ zMR;YRTQKP@s|y7_E3+A5roVagvXL2M&~PHvfhxOuP(x$lL6&Tlq&`#VU_}kvXAvN* z@=vYqpTMnGpGtv%k#w_>Vc;>2t!q_zx%+ogazwgxB_N98PaqOgPTdTlPv4_qYip&U zD3E+jySc@6tt{#@X|KA-@V*+KG<)Vt+IJ*7I?wQ?Cj0#ek+3(xx8Z2a44wPX2^OQE znz=Aq*Xm8SM#!+GEIAgf2!y(Wy@Bi}A=jZ1w~sn2NHYcuw`V$SguBXDSr#sj(N0|^ zYw(Yc+{R!J+lk9>Syc|d1yzG^11@H)vv{4yKL2|`FHy0asQCl1Mo&b*bNRXEwfuIW z6aC|E8_)fno9%N*3Q>CYmC$G^A7JlP(aEAc^>Du*j)7%QAa&kb6ZYs1*6rUGJsXg2 zB^LPu&DGqd@19TBta|Hjpg=!|_PN0?eXEiP=J=Gca3by(HuAj1C=W40{ZZc*pX#Z? z;VHH1L{xta{-fNoud`R~z@ELgc@IPc1tDvYL@hOu^$VA&C2DyFd-b?{A zuS8)vtxf6w#ijPmed~d-Z3QCQ(+Wz3?H3WqJj6B3-hJDNL7`tpngD!A#v*hQ{kS>a zrL#;IUFlAUOYKkVt)KB9CS5V0J=nQ zwW9=$cpCn-S$RUbJ6TXfvnfH2h3-=K#vH7?FqZQZ{!8Q~Elx+C3Ngwfka!YG^(#$O z5>&3`DdxvZEBR|mMliDaF`1g%?n#QbIZs_ z!L~_!Qq^ie(9j$&S=>VSefpE69?-K_{Q}$ww++rtoM?##m+=YvXNgKohEZsX_kht@ zG&A-Hk4o-|`uqz5{XOQHulI!}FU>o?vqA1asU5iktOWg(?!GM-6^-Wg$Mj5_?RLHo zKPDqDtR3`ryYM6=W#RFFP!@XsdM6y}0xc`%yQ;`g#+@a%Lr$ECsXGBJM(+3`1EP?s z7mi_GT)-kF`84j!cTi8u_?&(n(uN-n<=~<9oPuwfzZmD<%yA@~3}K9Ya%;qud-~;+ zv*({pg;}7{GWO;kocC8)k3t}a7YRJcd)Q2gxm6xCq9T*@1jXF_;+CgozYMIyv_2?A z+Zf+IjQ+1qaubT^dh6%1KZ=%PGSYlFD2Mv{*aFp5;*=dudvKjWKX0Ma&x7a*?a*gr zy0?Qdw4=hO*P_~|9r0)cY)RFic|lbr0}!uwd$XHm{V`z4`B$Q*L_?}5$7n=`TyZBq zp^U^Tf`bf$`%~Zr<;lbO#|~H{X)c##tJ`&?4#pGh`fW}A&fIfZv#+6g!O#y9QZzp# zP{jK-wo%`zif5I+bsgAsarKXcp~0roX8B`vEx5odwRuW#;%At_xYH1YS%UWCD=w1m zwJog1NughW2Y3o9pnk@Q*jPPE7S!Y z<|euPhG9s4(7yHmu=bWwaca zPnKl91;oYT=)`^SJDPbk5YOg07FZFOFC4{NW)4-GWGxfen^O_mhET7^c*su4t-dLA zKK=o6pgu~$r~%Xqx81wn#K$;DjUaHnyW9d9v*QNh9DXR-FQ*Xc)Ds~-IZyAHP(yMPHA7#A5Cn?Vw9Pq={xWCY&@D{ zB^RouNcH1P+mA2S&}ZDO ztw<#;524Oum@(pafTmXS@8UktO;*lKbs6;OY z`gr!-isjHvXkpaZl%u~?{SRb0Xh(i`Hm&5<{KVELBkFV+n|v}ilTTlA^a2_$z$JVL zAv>b3XxgBs@LisJSy=w(k7B}5?E#z{~1$k zI3tcgJiPxr)HV-HX*LVnc_5xYQFLCs#n<%ko^(>GG0w*fc6Y;7x++@iVo_v9zc+y* z@5$?#+s@(1l@4m zeedw?TI2XNY1D$n+&|~GO5FKOa!O(L)q`R7?3@y_^#2 z%#RW&o}%>IjqHf)pC3c-e7yvW(8hRV&?O^nidq;cIk@BFA{}zQ)og*~R8x!gZ)5;C zk!zo3q|RH_8pmGLpSE#e(S0XF^G3i^u&e5Yt6+mDtN^%xGy$G`#H54A*)K7jmbX)H zF==O=K9h#$Ql!Y2a0;j)TqcYO2COYDr-mae%q{Z4FQV=gu!H1+^C%O=G~TPEw>U_W zzcO=*jE%ee3E59^CY5(b+mMNiZQ?9VknlYbj&9y-fm*pX#C}slJK#NSxPNo3=f`B@ z-eqz9 zBM*hRHGY2kpxn$rm|_L?5Th4HRT=eQB%nOB_x%|cOdDdA9j40iMQTG*edlJ;Uf9VA zp$wKYn@D{u#a?-EXkVZ?Fx=~84ns!XK;}#`xPbKR?cE;zps?B67N)xqjGve(*6)OW zTFjpaaBB98$aFB2^3llMMmcv>M5x=z`IBxkLogzf%F=Hc%1TSJiT0I>r^O5>m_+on z>z(q-s^G)BUTYabsW)t7_o9WOsKub8f3Z0U5?(_a+w0D*_7YIC_}X(4Jka#zMJu>G zB)i0ic#(Tpp3Q*YqoH0_*b859za+dGb?k(Opn%F0byclr`OpuQBA=}cDZot=@6d(j zU9t(!Ijp|b7w?g*Ywh%-h(e*{Frm0y+<;D}ILjKr0;f2MqzzLWdz@DO*E^gDA&Sp~ z;f!aVj;{c~@G3+s;lKDowp_CN-oNpM7&z>rbF79@5_-z2{!PHxxEFl zS@;pWAor~A)g`*KIxp0T8fndu5Iw9}njQWlDMEmvt8vAU?8iHR#|9^{EQ4F7+YJ2t zss>pkxS#AFFI=%5HI*gonJCG_c0MHw%NE3ksL|*E(vcpTn#));Dqn#sX2~1?AdDUj zs(!5Gz}^e#kXLmkJ-1?GhpPr`58M$2@)tSFg6KjDK(33-NLkWcJ1C*UNNVfYe>cxY zN#x3b`z7+aB#F$^lM7D1-MinUU;_kAc|EBpk_{E#*OHYGx$QmEZ+%KsS2v-ATy^8^ zj?aX#+D1yxK%l?J<>?H2tHG|gZ;reDiN5?-zy^C{ttUTou5wr*j;<2#*JJX+Us#ki zMSwiucVhwf!Xi2!!hj~99it5>*#lxCyLyU`30*dc{JeM)GTB`wK6EqHi6BlzzAO6TWLh(%&t4Ptky?MLjff`?JZg) zhxJt1bhFs@Bex`luZyKeMNLU$do}9^J0TGxJbvEw%E-BZFqSv(21Z4bXkJ3)ICL5Q zITC@Bv5QZNtg{Bw~BYwe7xoFZa+5EkZNV@N}?78P> zNwHn5gW5RdIED9_S~Bmp*F8R-JObk6;YxN?9Ah~l_R9(3v> z*(m^xFr3gi)ouIz?QM@UkW(LT8i?-lk_5V!D{r?Zdz(Pv)WA2T^K#^15VRWTqYNj_ zJDyaJbP{*yLAo+h*+I)Id>g-EH<_Y~?sEP0i(lN=l*VR#HMaAUUhip@M@bfB+vHYUB^R_kj|vG+sjEX2?;vGk-T^3`9Mk-Yg4WI4qF0W z?488YRRk*3+3zA1M_OEXaNY9nU1u5Zy>dT@`DRaPvb)t* zzgyR}xc?$aSHb>F#b^j}Hbx{erMi`4t2Ih2yCfl1s)-s{v&`gdGGF4P%do`C21Pgp zsM?VvnlpDLK3X9mH_hUdI}UGmh;ecF-{yV%_y9M9{`hH2Eb<`l? z)qLmAINm06R_}aF+D_~Q)nwgBQL0bh8cpBcm{J{j7GlA)7I$%Opx;J2)u5XCq-)A? zRRXu1S=d0yNZrO`B*s_V_3F$+Hy9EH9^(vI9NhYXj$~IOSUAHQ!%pOb&}SUq7z~?8 z?l-s^W-KoVWODe2+GL#IXkv6wi9o)cN>i0y}j52)@Ht^)*f6!wp z%uMXku!OiT)Gb-vGA2mr!3Tb7LL`+=3n1R#tOk9Oxt z-vWF_e6HMV1#!N=83rpX=A%%W*uBc_Py~8jNm<1b^hSE`aJo4<2qz`)mx7I5ErErj z=SRFOOn7>VJ$82I(`Wv!Q(;z`J)O9eMd0HCzDNik=qVjjy_{)EEZYD#e3B4v+~oB$ z^>DNT)`J$wYwD8Jfp9rnGAQLYwO!{7jIXcaylZS*#gix9>=&CNa|!yrc@|M|BJ;84 zZigdCQZnJ{d1c-oGZ)5$tR#5Ib{QS z+VrZ^o&Re1ofTcc+$NIj^KR4JfmnYcV%5ie^)20elYpo1-zc`TKLu&}y5PqOs7Cea z5tQZ0=Y#r@P9)z2$}hX`Z1->*48R;ITh@uHtD<<{=oFLXJH>a!t8=R5i0^r+4Q|$*gBMyIJ7fYR&A&PLT&iT6Okw`C^=*a4 zcBiX35+=7@WLcBn{Bh>jj82O=Ci{nM7^9%PSb_c+i;M&)&`4R9Y|>eklBZ0;5y`55 zpoWLNNs8Q!vAGun-(vOf+uVYqNV4iFjyj1ZVLss4TUFc{6VCXe7cs*VkZ=EE+YO#GVsw{=7+KY4 z-)oGxzOMvC{L7WmT^xoh3_pZ~9=Gp>*S6T5z-;_0yMe6E3Gc+ucf{2&^o1y?nqwP$ zEpN5%3J9alKW4&IL+8+ zqx9m?wN~I9!aJ{ge4E_=^>-1VlWqMFHe~tr-rmefmeO1=`mY7^uXXd!%TKr$4UjUM z>X?!ejTZnj60!JmKMUa+xKX<&KUz7AjoMA2pV#08jKy?iRkznQ!wwew2GHM+r$I{TCeL>PXOp87(}DZWKtr9beZAlt#C6t=!gg%`1PG2rm|^fA!FRUTUBK z25JaFB=`?WsX&Kl;j~W6GW&Zs`}^bm)r<1KSqwZPD8F5TN`9t5hj8wp<&=c&sa)q5F*Rb9*bavtzQgoiL5(e)ml%1! zd0@opM;ZkY3QJ+dO-DsC>~1cqq7MVKtE?Q2H=YGt3d|Bz3vF5=#7%&fRKgKxFGSPoVZHHtGspvsPHnr&e+NTxIMN| zA2?A%Kre3*ApOF+5-7fHX%Yt{+G!gxya^Z)MC2Yv5*1O0Nw)jC26^bwbh=IaT`&PX z=ehje*lQG8=qc(N(x+@W2|4chI||-WRzQy5j;&E=TcYl}(8!PTtXxK6zY!_VkHb@y z9*e05s|VqJoO$`IHcp5rE#f^a#_2-be_coTm?kA;$TCifj%j*PZ(zwg4LjgBUlzDo z%VHap+3vY|al5AZd?bcIynmEdR+-Ov*eVs~-I8Ujf-LGxsXDp0gg^Al$M`Jyu}pAU;o0JO{Z(Nhb=P92 zCHltf`Ms8vU(d|k!f}$}5$XyDoD`wHKFyB)d;K@;N_3# zWmje8nqndCxi9b_BV8MdGsC?@G<0*lw#F~6gPpD5cT_?{K?Qtg?^0iLOk=WgqA&Th z)iD|TIUvP^M+5``40!y&IKw`1n;X7b0+w5|zD`eHkvF1aE2sRp-7%Qy2^MdkME1xio%`thGWB5-Ul z1KKJ^S$Z}Yv1|p56TP4jEKBo-I8pXXNh1PP2{<~Uq~xsYCLYr9N<+7AaV<}mcBbdn<_Q1|O zQ~m*~(?QbN-iZ#^yJgpOT|oQ#>&tx12J!Zq|5fR?H@506#f5&M9MegYZjby;`iW&W zbIY*MyhVqZkTPYBgt*;%=`aOD5S&*ZlEWYmE~f_e+znA|t7jrp9qI2i3}#;O-csG1 zC!&tGT`zX!1qX|l%y;0*o7)(zj9&8mYV$%dw@A~lf~7x205&390$?lcY%EUPdHB8t zxNHCMVA_xYj=x!+3I5?$xNOg6$lZc|=^2r=J)HWio%^+4HcRWLQXN{T>I%)udTIEL zH%=Wr>N;iP;DMgo7To*e5BYC|0fF4_O|Mpt*qba>^T2G3i0H)o1a(WSK9bVxDRwX! zu1tmUhg&}b9ki(vh7}<|n4sX6)|ZlW-4hvI>}*4^+X;nypGiW8P!U!o?nDguSSycE z4Nv@~gud#R43Bqy54kB6zKykYMDBP_6xXWMSggHV{9l5Qg4X{(5K z2+1gQ^j49AZPY_Di`hg(f5VhE5niPbi`qM=%))c1ibk6AN}D$%J~py+YS_!N*@Ync zx7Ds?XBh!Z3Ily5OxkqSLZ=3y&NsU2m}CtuBFd%d5FM*6w}6RVhfd|pEu3ToD(oYB zJ6>F!?5{5}NE9X7ke+?BCnr#P;9>$lJj7c7{}b>~yv7_nC5_5o9*PF2TUSS*Z2P?wrHn!w)dGnxbKUIHkj49Gp~WPd84@9Ejf zs#9tv$M0QI8GJi$nI+0dKSampwiff&DWMBI;wqdz>4|8u6EEI!sc64CsW@uYcwvd2 z$S?%HA#O8Z?wCeSi-R43LSU&EeXL%JnltdhA$r21FP4`P4RE_{e~-7Hsr~u)dRXT} zN_F6TA_~b@Lf@O96BYwjNvY+#TjUg)`(Rk=P-2QhO1e^0N(mx?;1+Mup8Y{pb&3f* zVix-vHW4bw{=a%Wya0u;u9+wrbrUB(b0eu~V`)VhcZGnj~K@kGvw2U%Zs;Ulu`m` zivJymBx0xv`^bu!!Drz3UBckq=6PWS#)l{EFE#%RvpOUdHZxJo^($JetU2h$V6`AH z%5|2#{LZ%Z+J+<~JK`5D7BTw&BOW4+r-A}EPe4j9PEq=wID|sylXorht`|*RbuK$3 zHEY}2nPFq8xA^&eZsfN&NHLb|8(H7v413EYdu+u490L7sI7BPLyK=z<({o#oqkg?f z?-Q5C)cagEgMVCevuqHhl6!ua6*S&We8Upz01lB9zAeMy08HA2I{PQc9nlS1^Iv{; z{^XHk*k{YmgTHI(W%!1Pk$5UWn6~R=EW^3Hm>vMv5*!Tm0A+}x8^z|B1(b|v#1IL; zHUKRF7-Iecs!<yaQ2Y^u*}ZmU zs{2RjOBqxS(_)>fpplc`uYFAKe`>n<3mSxN4)Xx^R<$KgB07xy>TADgm>t6toc?RS zHl*JI1}JYyX+wV_CeWOakh+L6gtpo6=!vtSLDDsfG9|7^SuUm6N-Z8!PRzh#uT6fW z+kKzlOX?EyT|BAkb=^H0$1sQ6*+=Gt^2kAk`FuOgsy}vuzZ%kZO5sQ{um6dUkcTuK zw9H_*@u+bD7Gyx^gEUqA8EDhQ@r#G9!PxCR8!(TgXHuAZ6IZ>&E8Tn?jRo%3`=W%E zL-@Tf-S$D|tIi2jcuXQ4Eu2$?NW}my zG2Ddu-{F#?zi^4xzu^)nXE^coIMFL~wrz?2pG1k0rVSub*~U+e@M^Yegw5(2xr7K5 zMpY&TG-m%pj)KB_O}O|H#$ja7SA<;$n;dVeCmFKht1FSTvAIM_CKiajU^bD_L$N1S3g`)FJ&YHS9TS`WV=h7w?Ys6o&-{A{im6l-ca{ z=TLeD>7CB~_STU}O7QYM`mQE6*!3nfhx!MAlMVD4SB52?-|p^Z^V(7bA)T{%9F} z_sKAUyhkLFqSD-6P*3P>O+Jy@7%q$WbPD!dX{QkCZ@&gnJwKXfcLsX2VhF+iJ5s_! zJe_X1_Yn9!CJqI{XVB?fHn*+iwUbj6E}9x$=o>W*ZNR}2*!{$;;w#|8#5Eq6FN-9? zNS7OJg@d$Yk)U?rJ|NfJ3{aIPa=IaZvm_(a5>)kfl*)P<457O&%)TdWpIBErfc{?i z^2M3?@Df@BHt{F*vus1jz_gbyunM}?%@3b~*x>syxIVam(T4_M4=&vV6n#CqN71kA;T1#l+Zy^T z+rXP4hI+U_mgHRacO(^`!=fbADUyIXym2Z~17#PLgNyS++?D=wB-srq%;Zy{NCKTz` z_e;$yQEUJ?9B3}VYTQI+WJS*sz6FrP2mb9(=l9;L>F^z|3MwWJ{^&A{FGkfUoVMgL zv+-f)r~Ybsrkg(js3=1b?_l(w3vjF=U%pHT#R(!oXd_G&n%h^=iu^0~fw>2Om4S#$ zeW%F%FbsAbpKl8}b^5~}F8>3qFyl?Em`a>OUC<|>t6;_E?pqN;%B8;E|GmXTR&rj> zI621!ul~U{-dYjEv)1=6Mm6BQ+EHV-)F*qi!sxc7_sgH9W`=sq9yWhTsHOJM8VG!+ z(Zn42za}duyVEoAk@hg|hNQ^RVL$A|>yG#|N{0QusOjbnJYCut!peEUc(9(`xpzLs zO!l&^R9TJ&7AVa`IwV>cwnLBELyI}k6B3fvi5cL(3nM48HzdFgb4nniIV7+HKD3n4?w?RJS|lx-8^;1Y;mhM443z9tPFDnPR-{Fe6;9znF19wusX{1{0reQFipe$njDF9uCA2(=`9OOfG(A%a{XVs1p zE1*j$%{LsD93N~tLn=#dI;eEtPYx6@-i@D5q^7E%KHY$WEI-_gzrj->mf9%dH!oD2 zw#GuKE@YOAR>&yd1Dd%K@v;C(HI0NiTegs;#3Q3R8oGu8EP{7Kb!Agth*nmzLY}#g$G%$y^(NCj7k*Vx+nT>W9#Icij<&is&L> zC!!Cu#=2Ou71E-O1nccE(0Hj?Q^;;I9v+J>Xx%6@XSqLa|8TApr|LNzsa4ajU=Sl-#&O}W?OYPI zofnKa9A@Z%wx^Vl%`m9w%y~)!2RD7(-!psrvvXO7i6&tKuG7`tIX-CZq#&r!in6>r zEbz&Bt2hj)`W&-XxTR+D_CFEnUc?~$LQn%%WbKo%NEb~d znjpK#)pGTM3RPiPra-eWIqaU8WRqeXG`!Nn*FWJCXyQZ%&6N}Mea12|H}n~)U@652 z3A8f%2S#rQ$I{EY8)|5R4E)}!?^0H=L%A5Ww?`yuzlypVAwz2HI)gb9R0p27LhEGv z4lX4*Ge)+eo0v8K)WwLe*gZxhHa8lWY3%#89Jm!bGRXGG=cwIz;18wRqhMa<2aCusmR|7Bc03#Dhpi;WJ z-FSfzGn#$-_Gf@Ko^2ZkFQ771SWn^cI9_T?7a4+tg_4Z?bad_-;c7yu^HxyVqd7WT z4QYbAg=|!>&?Di27d=IMZbDk7in5YaM=`trVBQl|1E!d z`;gvgB`VPp9BWZ}^vek|QOW8>9fwylrt77mKT!E_n}UR_&?Jr6nhA1|C0ZIio%(in|JT-4nLh# zaOqJ;VIzgU`93;&>G4z9zkDg|YEuY0RrFf97Fw819!Cu1B3>E9b7InHv|il#c^*tB>)uij3aQy zf2a@yd<^$k>1F^c1U+zXW)1?%^1s%=&l0$JC+pm5-1lFWrblHv_;?m&= zJNo{{?xqidFz@64`UkEqQ?TOZKrga~o!AxpTKFuQYxV;M{^H zxWS7j&J#FyG76~KbzWpw*4YVb3W7Jd%gS)OTx#~s^?&xIea2cc9hdAsaT1ha z{3pYbLTNP4Cb|}DD=jVaY9QTa3&rG+9A|FC+F*i>wfQ>1q*BuV z&}Yl2lEuHtgSctnFn(ScD&uVw895Vvc2L6O5?+0Mp!HBx0O}tza1A`#=^nV-+`%?5 z;S_BaApqTie%FUTM~mU1c_}8Q%gH$^C7Kz>xhbV#!gc1Q2Ci!^A!z^5TC@e++K(QKf;BxrW4#@J-f|XiK#SCQ=M^}Wj8utFj)RFm5d1aj>SQu|+){qJK zg z=pPY)@39f~lA6J`Nx(-qs5iDAMDdx+M;toqO3Uif$Ruxt%9(>D*&#w&CI~|Hn*lO2 zDH@v>A|}7@A6XAFVZSaxe#E`YyAr>KpgljZtGPI%msU^;ZQ_YQa*%Jy+xoaT=~-o% z?046SDw3_p7s_lr&VkB7iPGelk2s-!N$z?4!Tc?VdZ0HV=MBrQ=5DN(9*a)Z&ZOJi zh8t+31}7`;*s}EIXliUfg?lmYsy$>bAk}gC`Iq8g^_Y&bONBeaGVs=r_hUuc@tJmk zo^y=yjVPiz#xPpLcDVzDOW)eJ^2k_uHZ}^XLZ^05kGM(AAYW_6CIlGfO>&Sn3|AD-C5J8-Nh)dwue>;=meFRaeaka(tP;i#MTE{E+y z&x3@V^94I@o;xsUHT@?L*_|0z-Mn%)yht~3%tTexQ9!Hp1F6o$0Z!NNsJPqF!5GuV zE-lEP_4jLO7w2>owWXRrC1(aqtep$z#3Qxbh@bI~3(i9RuHF5Vk?vehPKA6jCThF9 z5&Zpl)yH{oO@ezT;Z3HT@cH+*^_Cfys65D5tfcnc`yM$F*NI-Foh3L-sZlc*ptJx@ zi(u1hrb(s?j5N(0nBz?heq3jdj$)v&K~h`pWJ7Bjv4i4cupb%e3TS0O0X2lTIVpY+ zMU|*wN}x_EIi{EbjahdI4az9DFre;?`0`wfI^+`uOe?6kkesE9V$jW}Lw#nXe8aB+ zPpw;qkkr<~*mQFJ6~4!@&7RGqW029XEVNA?ex{%X z!s68pTS&wEGmM+4RS8m;L^giH1Z+V{`Q9`&p3LCGM7*114 zp_ptzBO>HU(#4>V+O9nipABBY?H^MQcz+JjH>MP2{j>>jTBL5m>m`8wZ2Vb$jSY79 z&<<@U@>oPn98&vp4ZzU!Z{(3z<(ROc)E-txy2b9We#LFbkHZL61x-MniB&_#Ni|7s z{x~+t35m7oPWuIQ5~jIzomE!Nk%(9nuTy|{B0Vj zxFJ=y>>>gN5wz}8nPc#~`CiIp7Fz%xD^47DKKlcV4~*_7XQ}J9Z^cOu{S!(sAN!5Q z%D=)n$?iCdMV2GOqwg8;!BowMKm_oD@E%(V&4%d8))kpy{jy2GzrKcqku6m^43quRifm^;m8T6jAef~^Q%}&yIsWUxXEic43&yWi^=sT}ls3X0N)i(F?H zayrh?XO62?4y?S)VFUwb$lU=YL_f!4lh#N3MLT+uqL<8|iHintE6=z`f z)Vw_<`ApEjMSM*eL{2Ti<$-@L1o8$JWH$>~2OZ^7!=}V@OrZp=KHnOFG#{tF=4__b&gO*g;xTCm8)}Y@3 zSrCK~A#8jtc)JAzn9L)J(P3xL_kqBrGiXE`hc@K^i8@`h1vZ7f&C>=<7?dy@{2; z==iic@*|J<`&8#7U+qtWDnlnioe?WKmT&u6Nm0x#g{-j#?dTY%-hC4?-^YOc35!{< zCIc;()j0K+(dqQ;b!*;Z@?Fk$-o#PxC4Um!OqymAmD<}XD{ei%ub6y-dODxIFT`;} zQAPtm-UVWfW%p6Jw(cE+AF<=6EWD-%1=j)@>>GMl6}-vvYW6Anm3?yYj`fJ4A)p3Pf6SYA=(K2ITw+3m@YO78c9;D53pdCu(+w>` zyf7191{&Np+ES<-V&Uhh@V#|cqm)?Js)dZU?3e{-4b=)FUfmYm7`?jPRc?z%k5<5XLj$ot`0kg?TYuKG*QM>(+oJEl2A z?Bypd=;Xsu>_|4RpaH?-;E`$;{?69}1RB04^VOo6@Ehx1zfMO;{S3uouGE9W2e?3> zFnfir?<`!E)#Hx#e^<`|wCH%pcKXubtCiTu!l}5AYFDD%LXgYyZ7ko5VSXQ&SHa9$ zNraV=vtX$CW4g~j;N_4yh%%PF)*Pl>n=4;&h;>G# z$a6>ReM0VOJ7PPdh}L6CEXvIGQc_b-P{mz|>?3|@R03Q>{Zn7II$)bKY}Bd3r3YGV z{Myy?%L8ln9xEyJX`bzXZw{WHU9O%_jVk-+8txFOiU%p_$`ZjC0YB91RBl9aCSY;d zHgl&a)ZOR~s%Bf1C8!d;hF_~H?m^!;*jX{*R#iFW*m!B#QWH$EvHO#3TcnMz6;%+n zC>ldt-34RcD&G}8)cAVS$?Z4?P`c9GxJ-R1yk1bba&dkQzol3j=&2@o>msh~nc$s? zmA4hXnmA@`+ozec9s&;gJw^qD|70o3!FrVx4cU6LDd3<&narM*H+MEtD`op}P*MH-K46j>yZ#={4F z_C3Ntm@}$hHj1OeI^MS9Azl1_Qz5~H(?-fd5-U~RNE}PWV$6sB_;4POUmjPMzcT?p zN5rS)t~{gF@h)bd+5#GrVS%krXJkX{EPSGc5kJ3~m7tf_J${euqG{!)YzY5Joo`|O z1Af_)G&D&LeK>Y9Q0AL>-Z=X?Tctp zOuW${ibA86D`OGG3_Ho6&wIp1qu}RhMe#j0x*%D?3;%Nx6+@{HpT%igu<9?#M5Ba; zE5&^i*@Blqp~3~fBZM<{bEs7iv5p4eUEUTiAaI7sLM3npl3#e$#$nyX!_{fc)80`P z_{PuEvqPaviZ9)Kw5nxEtTsg|lKzZz@);Tz{7wN$KFXObZq9$@0QUgvI6;sk>~3Mo zsr?5rgG7i{DH#T=J#cB{DpGp=G^@99I}hx66Gii~xQi&S28;SqqUBaOu*kvU09uXLd z(pV)=64lgOV?|_+o^~_QJwMl!%@H?tU=3GG5*2u>*G0I3jWXQe)`!zHSg<4=)2prZ z7brFgeN_j=KDG4{05@GA1~lTu>Wi`v}+h(9(@T+pg!A%>^v|$ zpGls#BH1xPi|r;Lzx&y#_0#F84v~GeBkZe~mwBd#$o<{zxNyA;-cWx4OBSw)U@1+f zgLp|R$?c_&(TJv$yW?An?vM#I^OI1}`B7CELlUS2G7>533&9f#?(ZVw&Lu`z-2Km$63}HtHzTpOCm04( z=lk^3T`6iniDF<0bP)-9I$*%Y=iU!C6iuLuyb1hTg?rkQ1l#c+#DQ%+vk4ygAMAwQ zTlmwIsxecfisvSr50opxxP!@Y#O|Wb`zV^l227_Hgqpo8QpIu5QTPs(AhwIBLNFv= zrw!3thYivd=ixYVBC^M`o~?}-C+9>B(o>Nao3-&Jhz*mJ6c6BzgS_E4GN8q>6d3yi zL6q;O%bdFq%Al3cV!ueP_9ub>$tFkA`Uaora+W2aFIlnuZUQ}kn@_x&y*Pgey zak~6W6Y{CxJXyC4Xp*z{I?Cu33&CzF*iQ5uWSz6raAaVHA-4lt7CqlD`Y8;1-Onap zm0zL5e^z53a;3%JC^ggz=&+g6McyW&9DVnbzfSt$ifrD6SPb9y@R<*a!$i?z=VYR{ z*RM?}Ud2f_uD_O*O5&V=a6=kG;^JxI!6N$qVMKQb`p)?w?i zGf*DPDR>He=g!y8BXB9KyDSQESsrqoVOJoi|6OivR z=F`P6p}0ZqTW+CXE)B(gB4;;Xy4g$hgZSwp47lOj*_V?UD1wePzdoEv`=-g-!;;#g ztvyP@Qs;Hrh=Kpa%V}jl48}lwd}6BrU4&!&wAaEkA{}1S3(| zCkQHLWe3~30!mHoyP%IKhWw>|T;bdNij()C*Ta}8`)#3lRZFZ{>F%0)CMY)-a9eRI zz(vf(m)WV(xUIFXBPb(0k`RlV3VlZliG|tCaZ^gv>XQUw~d6qqKUEVlSrzt(S#jCfrE&i=ndT)qo5X`_U!H7)2Kp zjsYq76)rKBEI)9~D*(qKJ;}VWJ08+(3-7 zV-1bWOnq^F)x@&JvvNV{?4W=ffs#gdC&X7o8J!Ko`iqpZND%3Kw(9#PPYjw_ce@5> z3|Tf!u&-SznWf7ODwx`Ovq(?FAhAxGy4Z5%NABn)r1-i$iVPEOSzgSkY(}o2%gqvH0;oc;qXa~IGU_^c8MR3rmr~>Y}oz zDOQ&F=f~sw;!Ux@rm~*Nu)6Q*icbZZT9Ht=^Gb}VFlx@Oo(&_)E17L z-z+ml@$QcG1%u-FHAsR`UHt0F7P8Dca^q54=!!q-zJHl}?TauSu;}}X)FMu=w5q7{ zd#bi=cA$T67@_Ps(*hSxxy2ZBKP(NOd>IMoRV8mx?tr&OQg63s-@7YMp_i_a36Lt& z47QP8(ErnEQ{TDu7Vq=9v6H};Dq0O`% z9=*eMZP`QbDc5C5tHYKTdmYYa%)GVar$B(`Hz{G7AmQ(4nhIFg>y6 z=*;RcCmMh~1nYR+PcuwFSEUsLY$)S&NS)E1m4jdo1Tv<2yqpg@!o|hE)Dq~v)2fkZ zuOH?DBMmO3)Jzn}M>%rRb^mG78$_QZLT5Mez#_LEzURj|I5>iA&u( z&G61a(#k0;r!+~*UOB1~iYjmGbZDoZRF{T--33MZJ}g{vNQ0Nd+|?O8Wy6w+r#-2 zu~H0czi$QeIub`JP3gimlhlpGg%kP4)i418_~=cn2-CNZc_W?{y>$Y2xsf?WkcLitC9KY)E5#0L3W@XizOs1-VG#ZShC zk!l9%1IcY5*<0rJXPcu~JITmEFXlG$VR3wp1v+ zWHz2&vcJ6>80F>ZI}an2+Rg1~1gM%(L>r_XOAx(2))IZ^BtNJc?mk@1k%mVWCVQR7 z#R~goAeXu0h#eHY&x_4pfuSo|V0K3g!Nw-pCBcSL&*Z&Ji>gX@6Wu|z%g4d?`931_ZKdElv30tk=`hpDT!*9nZ2e%;1S@tc30Uv+ z*2w5^?jj~`16S=HM`mGW`naJ3ryEH=+`OMKIT#~Fz#Lv%N2t;Cpwg4fOR0rK3#{zK z3Q@2qhsy_~_Z^Fszp%BGy7ZKjm4@S<@sysb^aEw<9|#CnScTJ^*p6wbv<&8)9g0dMNZfM9n-smjZb+27kHj z77catXE;O37$E4od5sj$zDR3pbH#8@ za^rH?VQd#0@juRJRyR4&dzB_oZ1#rBQnj73OOPlpXe@$og=8t&6?YB;n&|dObUYa| zuc`8717e*&yi{d5ihy(Url{RbG zLog=nKTeo%$7#zZ`jfbO`DXW(v@?FFi3ym*o3p_sM#9mvdznk1k9`XZvUVDHLnnUv zn!l`cHpog{0_atT(lHXJmDhrslT(L;BqC`)Dtc|NXW}E%7Ny!E8b;Er+sxvFKBO}G zUFVX{a0{x*gkZ=!8PI3wC5qiptqZ(gKNNkZlwUc+DskH}kB=e_95#-nLwBo>Rh9!ZjTX=8P8Ho;>>eChNz(W{N)S^IXz%oFQb_F0OE z0?GLGb}=}UTmZie6(=fg7A^8t+G~E8qi^xe$1#i{amPHGJ2o}K?LzAt%c8mnv$@h7 zfw|CA(o&Q%R2ft4H%*g-9%m6=@~gB7G9z4V(yviNRX{>itwDX6RGMC`y&-EP1z#*W zA6#$TpKm*RE}qvGzqkBky~=N{vUEreinN8Pp0l)@lX`+e@%#P3VRybWVitPtUx6b4 zruHRfpVOE)8G*9GlcyB8C`&;hEGpd*N&H2(m~0Q>Bsq<%g<9!a>te6urz+lLuF8Fm zp;euYxw>=Oh`vB7m@3!5dX3N-Xj1U#_^CVHEke4iar%5^+k+&4KeEx6jRri%+2Wc`6eU$UJc?S}1UAiCDhAkn80jl^ zbC>z)r1OZcK!><*@w3nZvi{hpEOO8BEd~Q$$uAWw+8ll9=AhFpt74iOmZ=n>oAzgj z=bbcPIKPK}QgI!1b%SzxSsUIIXJo<%yui58w_o4jNdA9peFr?%|M!0>Aw@(Yqew;} zdtW53J+GY+S=Y+CHc25fTx49E>t1_jS3*YSwO8We+Ix@xyZZF0&-eF#JnrK@E_Jf&tE6DX$KBHW+c~Bsf&%#2!9386oW3;yLp+pw7}i* zk%CNj9;4acT+6ryduHU__U21w4=J|bGQWl#8R~9OttS1@Qz5&$jmP-v>kUZ|kn;w` zZe(z-$-d0x$a!#fl!iyvw#-uRcDMaFaeq$0J82t-+}hkq`Gm*r+3)Smd>Vr*uRV8h zqfh_rL9*rD`wq3{>G0O1kH=`FNU5{=^=xr;WDqCL`<4Fsl~?rBcCschx8G`|a6TI8 zeIADElPKS=<0GSq*sVy#ohJxfh~Yr?T~=wA?LaHtu~qfd0(sIWP+Uy-6N*8Bak7fiy5d-oTy8l>Rm|@T=dNsp>{B3 zICIwB57S)BkIdB>-#w&FrFS;kDZe7+r>G|2y%az{e6pbrfl>yr@lxi1=`suzoT`&6 z(n|A+LAQ8_Io=wlGQ;hozAIIKVugH5Q62nv);*c@0v!EhrvY3G8Qt^Iam%Y6IN}jM zYVf2UyBTmkz^BCL;{`G2>c}Nh+lMVJ@q5%D&hfqXRP>i5iiU?%Ho`1hW~jSI`}>as z>T?I675YaF+Sc)tZyv}Dpz`z44^Vewv;4e`*;HkZd3nCaM`eeIQIlP;V>(v#h|qVh zX-XH^qbix$?ei!|T_lNBZ@N$ck4m-3kA$cp%x00J7>x_0i~>2Pkg*+_)zgCdmL!OE zsEuRniixGUmO%JM1?XtGq8PoCF4348SR)&5%@?D2oizxdDUW(1HneefLg?wqUf+PU-B&iN}V-Hz^Jd+o?s<}Vt$(X#Ej6#-@3nNAadmoQm|^{P6L z1i4?toD(g=jA{V;tB{|}@EK-c7Sx&9bNlDdx%JFDtyx%hodd3PHy(b9)vIm);<|GB z3XM$sq~`NXSB`V8&?Tcg5dwWY?7gU6WxJs~S^dC`1q3^$;VnIj73K|nRWoT7z#(}-`n?~QK={tO)`;=ZHr4Rx z!w)QLnf|L}Gj;9fV>RDNB~)A2oeuCJJZ8`=9fLN8$BYU$?52!m5`Sp>4+^*3A|nKO431|~ zM4pcdskGb|h506TV|i$epcD77>xt8Pm*>npdOj+pMmAXpqzt{(I>yU4&)y`i@@^+W z%0^H(ZcurH`BBHqm-zeI5^93FyZZyTMxQ{x7LGLcJ|*g(oG&5bH5AK0kALG&sB8Y> z+rq2gIrP*T*-+!{Sp&l6Y8Zl|5*nLAvy{byGpTC2Gz+if*K>`;{5@Q1g?p$3>=zR3%E-3Iq@F zM5gbYhsdXmk3>*VZ6quWh?} z_9wNW_d`I=KG!(os zDJMjyD>nlJ6wEUakm_dstienTDb+ostoBoJ_6tO(FC;P79=gfwG)$sjW^^|K>#B;> z*7jHrk8v#>s1TCF<50W1c(?cs-d@IypjyBdIGQcGkBn=YsF+H`F-A!UElvfu(0oeW z__plky%rW+AL@qFhIUYBYm&!oTmV=tR#U6~Xs_u3S8tDdW$aM)X6g+U1}bP0d?AJ1 z-if;V+HyolX&$kb1tR5b@<*=dqtjJL_hXEu=cg6E9{mcf{&R~D1(%M-nK}K915Lq( zrV4=@+%DefmiJosvu6b+59g6vm&*ri=-3ECo$_-dy=EbT%&JCvv^lg2P~~h?7I~x! zGrQe!{#ocQEcrn@89#%8z0hYDqc?Rekj-Z?^L6b#{r$}whw}c9-eZ&GA!Rz%#)%PC ziRyQH-Y9Ksl`M`}gsBr$?7}ZY;ToTmB(|X3yAzJi@DIs39*2$AGvmaeBqFfcMA_64 zR8g0%@|}egjfZC3#u;~K68A-NF$=ud&Qd3}=5fCvsWm??1aIZ-Vj?23ZOl`%#p3yf z-5c4Pa2WLg3gZEsTP8i}=c4#gqm(z5+@1aXU|Cc`&fVw(6u-AZbu7T#CMFZum3y# z{V5C8T8!}rg!h^ODhWZbNQ$@Qf9~*jVT&spkVE zDM+m1JECK60=C9RY?E|fGi&u$^UUA(^Fc*%qD#XNQIFgQMkw!vLmSo-| zDf{XJO%mZ|&Nzf5v|J+%M>vqE4i!fW!9tW-;x>^l==AK4t*<6~ywZ3Qfe3Ww9`NY3 zd_^OxCPVnJbVT=}XAx=C;bX=xxRnf!Mr!(v>ujwf8jCryG&0a~^(^7Bg2+VQ4H3U< z+7XiTSnQeP+w6{_QOo1v%U7wIbXtHb8))W(8`*2bX0;y8l7jHDMdIEq##B!(gY3jI)V8BNPAR{!4VN};UWyE$`X zO!-_68~${f{?$XF)|%Tru#%ulV_@r1T~%gh-}doP3)x&2lQXGGvy5Q?UK#!WHjS<~^Ld_b<~ z-QlHtsS2gSrN#C9WibOR9ld@+IuO`N$o}(p^Kbjt)p;+jMJ`j6-q(HdjPCWtp1_Rt zj5N7l^Z4t1DdL>0T0yO1r6>NR-+};pQ7$9WIXN+@P+ifve-S}ziTC$d{r*gt^kSl+ z&d_ie|HJt|f6XN394$mZ%I@xn52?5k4oA%=F0R}p9pG}jk{LH}pOYgqu>OdZlQYG> zcFX<{*DsOfj8xT!k^$rM)3W~aUc7s8c^A8~IM^V|dj5CEKFBg(i`P-xY!25K#&o1g zI)wzR)~uapXS=`0*4#K6BlS97!$ZvOnar#Bs@H`jR=`)!NIhQ(Tw8~Yt$=Tm#2CgnMklPW3X+ZTwuv8TIVlxY02n`+T6ufpB zGG^iM7b186HW=XZt9!+JJtr*=&%ZOjnRx2oA{&Go#cD2_IEjAUrSpA3i^72tgj;17 zMq_zrog!#9UN^@=^vV#xftzAA8@+d+6bJ6)gCB}DRrT^m3%qi3%R_*B_i)2Y-Ja2( zzP38wzH)7N_Mc`8t3VijH{0Yj;RmUTM<$uVV=eb}+&^O|+rNCt;@BBuC9x!5=TeO8{`?;x{0K1nhgwcto60D&Jii+hHZGOKa`W<<3+0kiffZ5KXP7T2 zGMG}ux34me$C~y5<(~h;-OU^#RHlRxp`#>PUAY0IMaVk zOmCCFBY4cBr~1Y#eF(a37*w;(vE}vY{^a}N9bFNy#AFw)p8U|Mu?cf41zjC=EoFIm zd6$iGYD5^vZ;1Jc%=x$QNWkpXPZ}EChBDU2VDz(W2b*#Q!saQ1s><`ooDIz-9+Yb? z=Creu52X&-+H!`+7|5|j@M$pRL+F{Y{4JrDX!?`oN{(Q4v9bLMKA42lGqt{+veE5?6 zGFLm4(mJguQnaWZqHpxHE&-LZ-qG1!Dt2;x?d+PHFEOeb6*VdD7e@uNufp6R|Bq=) z-sbaXr>AS?B9875RtS$*IiPzuJf*yt`AA)!a=?B}T1IR%w>GmmxVFtkb-;GyYyV94 z1`8r5=iZh1*hDcxZu8f)b!3u z?0GrLvtehk&IFF{8cvGN>d4R$BL9KD4~b-~97UPr^c;Nr!tz6$sX5ivBWdQi)w;GN zH9KBeCF|)gY7z+X4PqljfdH@$^A>!(zWnTq^qsA~)}j^xUGbRc30~1>TXGL~qNIdp z0MrpDL7NiI#f_g z;g$f}EwXg7?GWkuq>|B zV0-hk$7ruL#pKzb73=_%8;T|1b~$3%91< z$hTF77#nI@E&vu7uozRlmH+AU=TR;py7Dx+KPCm(mOnpm!dt3IvM>{GEAk>QZ+}Yz z4Rggq302{0na9=or6yslQ0tmpCOP4JV6QdnebK4lBm^SefI}y@s`hK9o+1-Od?k)U z<6u~v!R2;w6yfkn$Jju6cVm=3!6M#2F4!vt#E*sdBzgKFpE68SK$$N#iN~Gm^Sbi2 z+?VTB`&Lf~lu@`rXHz_iw(sDXIWiNU$oX58CXl(FY zIa|==6A)#@!0HZ5K(g9O<)B7c}}n_o}&jovvF9c+;K&ZnJ=E_pOngLYP0_iHb)0049~Z3h0Q z>BW~W4q^$}o2^}*y($zm$`(H&Rd-Tor%7vK`!g2*Fa|L^FVYEBlr_#r$*bS_GZyPi#rAX%^u7LmP1)DL zXq~VJ{tHCELsqZ=9&i;FX23C~MfMU~99W!^Lg%K+J#27|%jr8+#{t5uml;m_y1MIc zbVLUXVAQQUd$2y>enHB3Elp3^2(l@6>lLI#Bt$%jzzbD`L?q8JiFva7Zzg~RoKcf~ zlJQ;jE3Nosw?YBY;?|O9hQOcUGr3n>NC&Cm5o==jAB;Xn_*ncWO=ZjcO;aCb9exIm zj31@r%a)Zc31DX%nT{#U*#&U!&Po_NTM>VsmN(xkxq&k5VJ&DNAt8Z>7V_qeJZNKh zWcXsw{M7IeRmFwhogS{cIJnc388!WMrX8T54wLtT6M^{ncPP#`_(4KtN03NwBsQ$wJ{!j@TimoX>PHsXTH91 zU?X9`LlTEdXfj?O;46G-&n^$MrJ-5a5Vk0Ai_=gwocmr%gD#wq=N4nmxD3^A0yrz~ znXTZ%A1z&PmKpfd(icSeOJtD6%b=soHD`kCAa*nw*X6~K=0iX-^XY%`AVB}TK3utV zJ6otvuAmGv(fggvL2E*#k}9|2pp-?0#`6{2$yRGQUG8yz{T;IasL`kQp|@MdZ}#Akso{zOG%;OtjSdG zb^3ryXuLtV=q~hM=KKp*itPy@8^LLHFUg&R!5(xd%@n72E!*_%W->KvoSvAg@r~xq zFLx@I?E!|k)cQpjWV#R&O`ETr(U3wyL%o>Up12}g*TFy6=1>rh#W=e>`@ni?;wOlT zyc{C6QYjAk%+#5s*)8`u^{V_2_w&$GXZtg44+-;a01*61`T7^WJoGs-KBJDO_;1uX zcQGSH(%OSAcD>wHGbYAmWz#w_DQO2T%r^3Lc%=Gu7Kn$nRmoVj*0J+=oR*mxd2>l^ z;{9C8cd?YA6#aLpEc5Ti{Fx&SiM^_KFeL1HyQ^JEbtD4N9^Be%Lk4%5?wugg>8jdkBDo$AzY7TBm={id)%wFkclnp!tPZfdjF&$eh{E^R`i2?` zxK#13F!6@jQz_*z|Gz@TuZG!3r=bh|hr&X5b8z?BQFCld=kS{sxq>I+CdGpb<1N1Z zKhwDs{^9ehn0q4ng9ar{>}w0_=TM}d=I#LWVy=2Hm+kjMKFr-K=A?swjs0RVttx6Z zs;;i(w;~>3dmjBq`1}p_!A8K`f!8Xe+Wvsr?dYEji}Nv$^z2`*@yn`um2Pu!r5+v~ zWmE^V8o;kh-U`_ye)awDbSIw}uVg6$&U*KEoBkU-{thHBJ_Oz|5pJG3m9A3vkf9Vt z%!u(%@^`~8cF&%+6rqmqn2`IMEvs0qt|qM)RZjzhgkJIIHbW-X!G8A6(&1C9k_ zJx)v3Ra_1_RpXoA-2bvr|F7~NoI)gCoBoGfDM*UIT+j1L{vX0%Oa7Z+JsEq~OvAMv zM%e^_DO+OlI>Ufgtt%;Itak75u^64#i5_Y850x`-TmisW_~$NE0*>v6g{vOw--<#b z^TD@oXj~Wr{o?&cmVy6O8OAT-iR3~y`P`f!!EfI1SNfk058#W?Z~Q%mKRy>z69P!2 zp#v1KZ&7Cr59_kC7N&)DKGEokSDcSLxUI(Y7Qj^Nr%yk!7_Hc%rc?o!2guHb*ya19 zkFpj~OO#=+2TgAMYDUev;tQrf<_n}Hy#8q<>{kOV_sb}k7j4Zi{Z||Z4AAx=9#wZ8 zPLm01GV1e z#<+Wi(5W**hWOty@dt?LCq2#|TDG+jNY$no8c}_*iX!w_+b&*(fbs6<0!uUDopGxN z85<&_KeBHbGdlHqf1CTl-D^%)(JYf^ciQi>X3gcudhQ+T8TC|6l-`56#t|_6*9rk! z5FqnMk0Qpq+3&o0z(MQ{rsPXSe$Iva>BWY;WjM+`46x|4<8}(R|2FLr1;7 zkU62NBF@X>EI<)zRj>UM0DARR;lzI-%_*v@o)_lBaqvRK-}2bVfT4O2OX-1 z7yehL2j=&Vn!XX3*_{86UZtn{H71%a5P>j|TV#?3SQ2Kazrmgs(orx!o}bhqYjUT^ zjBn)Evmt_T{Qo?g2zd5SZnDG%a1#@qy`Ss^6~9iq^oyP7#>xFl6gvQXV?r3Lk3^GDGKpaGJKlYumt}M};H<%Gv08mHp-tMir{>BsSo9QxHpmU?w zGaOR=vkucUA32v7Uit^*CAY~47t<6}92@Jaim%mugSm2x@xM+?F@1XHo_nAi{$IxO zqaFTN<$iFH@87={g}IRj<6elp{yq!9hdme(eEp|bD4i()ym(Iixgfc}Ed1wy4S%^f>AS-6RA;SoL+3bxdSNLm zvj{Xp#lS%ZKyNij`#~qoa?m}K9}xlB6%6vTT2=cyngSB0i&}Vi_~!9kl~pv=ik&?) zs|=~KPhaugQU^IJ>bAz8v*#QU+26q>W|_e7f1LD}?h^M)cVXu^JihPs_3dBu#r82C z_s&%U>HLS32~dgSeJ@l9@(P5c$hdC%(K8+y&i_UEYxjOtA=ikvSieYpP&{Y%rQ?yo z!j=vB@Sh<&M>xz}3?*T&#eey$cKb^c_|=x^bIHW_<=vcT!v)HP3wfb`R||_vFPiEI zc+LJRlm8#e^mlt2E&mYt4Ct3WeM4BLd*9bsLdlH*Mv9UTDoZSPHy|B<4QPG!l zrBC};-Ae;u6NU;K@+FulkjfDQJJN>~q9$w4<2rFuZ@@FpnZdU%@P<{&B@u)oXfNfc zW1%NgOBNJhSjddMuKXkp;_vG8*09UXC%4NgUc7*b50_k_RV!D1!GI-%ycaq+wCZZW z#>brS#-%mx0s8*)Yf}q+vzvC;8EVU3O_p(`+PjEa+d}QLL;Sr3Z~8NWx#>6?5NKW- zYyYu zV*=MDy2d<*4y$Ub?miQ9kW4iuAK9;**bM^tEmXb$HO7-29vj^#UcN4w>gRkUxm*SR z!YUn+hR!eK?%FP!Psy2aXv7LH3HrK`GJkIF`)WjW(zbU?e527N_pL9klDuYMEu-6~ z`_>v+zF8*J5=05N?D@RUXDB?VY;NG3YoT+V`EGMRE_I3ry4%)RlSE4`j~U`tm^xV` zQniyf(27u1%{YzVKJ3zo^!gqTrGPwBbCm||j5~?8lwQ_YnDKL@3MWzO8IoA5R~g&) z6gy3Y-I_lcjGx*NHFVUvH?YEyrv8-u0iM&28Le5l zuuLwA{yKf+XOB3k+bqKIpo%rN(db&lSgcpvx7YZ->ZTc~r~9!}d$UjC%fc6(D*LvS zRW+;fI<7bBw^;6;-O0WywBQio$83tcvhBrc$|5NXxI_K@~g~vDb26&lxP9~@80Cfk_nWQBhX@0T@n=M$Ic{c zAR{8fv)>QjM02|I7#_n;4V0T?-w3q_50O4*((K%cQM7$>1*K~5D8hz}a=OMhuBBwH z*Jck&u1tKoaq#qmW<;@cUXf2&OArzdn!zs>m7JWAS(q;0E+?NBy-acVg)SSC7^8IN z-23!qfq7)5Q^7o}m?ADIy&<)(F&PFof9nj5)8CiDo1c9Ui_KA!S83OHTQJN$fRBQw zkZ&6Ih9DTIgTUVe-F%`eu`73n!eaD;4BSOkm~rM1xDkz!?EU=0PIS(8R#e0@_Q>QD27)ZZVtlRRN& z8sEf6Tbi%HG*sA~t!kVCJ!{80dxwqj{3Xw3fPoEs18U@tj}4Ydm2iRxN;By8jb7Q2 zNi{Zd9FAfH{H&4mu7+)tstI0Y%4KwyT3Q;dI_X;1o=`4uA+I;o^noz)!aUM-$wO3B z9PCKsSbj9g<2gg13@NL9Vd4Ht^^wMSX8 zlJyp%JR4zN-1U}zWORic>7&j*m~l&oZM9tIR|=840(SE?1&>9GohQ|7b=bv|4+|mG z+9Fdm8GL3g(?foa9rH&AZ6^m(s&p$W!dBBd54pn|y$1G_i%r00AkZ-P$G*;k{6Syk zt{c7qekl#Er^XA2!pxL@kouNyq@B6Yce>fc9lr%=cKFT%XvgfApr$lfI- zWfw*yWyzjv-cEREq zV@y7jJzdU=VLCjH!rCIw?7(K6TE%8BvlF)T3VZ-5u(I2>*R;ZS4TAVqe5G=C^Tjr8%_ND8kwiql(xL;+E z(fgh?9gON(mnJ+RRvD1Sw)gz@_#3z7z^s;V8{0&MrEznv{4ZIjUEJ(I6;^b>$mjxe z&4&^mhv?Mw{=6=iBQLTQsx5K`t&QB>n6gh(uy~hCAH5lz{xs#0qwsVaa#w?1btStg zLB{~M+|l50+xOevt_CRb!}|dt$pNwYr=~oqNgZyB^BgYII|~LuN)?eS=C~FYbJgYh zX@2e~EuF~aN-FH^sAhtcjJG(3A`ZIv!EHe_@>Nf`EU91(}%==ynLtfG+;-g{P}bUveQG!=4{0nbN66M1V-)k?Tm zu(W=WVb8sMk64slnm(%xF=KYSNHH4N2(k7#*EqPdd&tsQ%gXM-*`8sl^a@4?TQLJ$ z>b=e42Mg#r`Q+s=TJPs`xkNz})#li;S4Ka9Rz2#ZUP6gE%%JZ0t@T3N=TPSnG0xkI z*`UMSvB|Y3u5}YftZ;jltfu7^x$aiK~<*o@yWcLN}7L^{NZVL5)LO=XZKBq0g$sI;OgfizbVb(j0}$@ zN-TS1rrcL)>dg=Rwr_RrwRzpgg_jvZG!vhCYrH@8k-olN;b4?jCPqG@;;XQwND7IG zp|fZ{AfcICO9@rJ;BvIe`1(bPZ~g1jgM_8Pf>ZCsHW88c;;9NA<@$_M3^U$-$u`SK zE}xT^V6!1PWx4DPoFl_LTx9p)mPASCcgYRAZPW!nNxim_mfSo+13xK=_lI;0D@|IF z{Q(1!>M(@}?ty`x&*x6+4m>=ocbbb`#!8oP5)8-rj!OEbBF!7uzBl^p`+02cPh;15 zdLsnIju<9))uF7z(yy(XkA1pVQoyebS85-hxzDYM(O6$R62I&EbKT)>il0S|sQ1Zc zHQub619tg~4$coiGjO(iIQK+wu%DT-h~38&q7j zPrHtP#1I5(+<7gVI+fU=&g5_yfV96Vljz@kWR$bu|giGK@y$0XDa0UV6-`@6=qLS{xT-Duq z+&u|C?X7Md+pW~OM_7h#o9f)4vqR0UrDuAt)#n5-^BHu4bM8rdbiqir7hQV+IP(f7?w)y&$V>Fe$iQe}bC@=Zr69HGBy-6MU z>g)zm5aS5Ra%DWzT3*ftQmtDg-3B^G;jmPLXcbbwe1E!%)wK(}O(sVJwNBPk7qs9B z^J#@~WHpW@@yW~QbUYFR5Qpq6`TF-&{4Nb^A8Q;O$qGlg7JHo)4xIFMT)|-CQ+@J7 zDk%=Do*I(Y`?!-vZqKg0+dU=H=qdp3QD~SKdO%X$_jEZL}-0J)us5 zHD1f)nJ_3$r7!d$#UgL?g{R*Wneqvgy%&Vy%N%!Bu^v7Uzq|9xQ)z+f-zunmn?f|> zaV}8(YtX&qS}yQr_=827Hy%St4V!`?zF9CJ3QGPi5DGGaqW-uk#Sj{hMIXcIu}*; zPPam{U(pd#ws>kei2H=Aoa7J4)t;R2yNu0Ll<%D?Kt)#QaccE>FEFezRQq;&yDd*= z?wqzZJP+bd9%Yf9bX=F#a_v%^9#|8giEagz#DEd|A{?EqmBzQS7)~dsBO6kL*ZhiK ziWC|1eg8CV+9ld|B)!ZBxf2csPWY^d9|-A(!3MPlv7GOSqDjhmK$@3W&|EQ zG2ZvhL>lVMGjECLPK)Zg2us^FVSz97GH_ImMEb5iq}&YHhWhG?_e^gmvq!H;TGF8F zSuOK6w`hIlXb^s1#mU#CQzsmR3?u81fkvl;l!(}ZmB9cBsp)Y#pgNv;a5`ND zqv@I`5}OgNQPt@M!t74eq|vu1dB1H573z^wT&r8}g&>8IX-%2=qEz1RDPDQuryJmK zjOeUk>)P7c!o!vPwsf%l{cJzamb3JXfX38@Lx=eVDx_DKSS38W_se%T9iaod8G*C# z`J(=+Mi&Ox(z2z!vpJ!YweAUfq0F$bgYJ5Q5O)mZ0bOm+3a=?UOViTlA$`#?VsXob z^Q~qsx!bT&9q-^n!+H#l3nHa{muV4p5b<8~0El`@#-gX@OiL2AM|qG~EoraId+JB~ z989aHi{Sk;4_Z{OvV@&)OYl+8pmF-1{n0gX-L0F51(1aSa`SlXx-tK@-^qt5%?CwN zJ5{Y`?Zbj+!VsrgZs_8ZJ+@Rb&4f1%T&1tJyuNsoEdS6eUKsw=c!{li>Q|>^7KQk+ z#{a2`zwYc}Pkl>JknsWS4O;@vMb^x1ZPt8bN)A-0_nVt+jmnm;T-`l7ThnW1FIdui zz4e1LFDZuq%uOO>Qm1}}*WP*Hd{e~=U?~@K5a>+V`1Y^?C0>K-B$cYiY@rt$i(vP# zjkSG7ys-kaE}| zYVm-wVZS6I4AR)>Ptre8h+2}n!{aWu>!r!Ic5c9-K^~Xu$3A~y=TDRgNAm>f7<;^l zj?r{4S6kna?ri0-JUbi#(afkTB#518P)V@D!aWhr?8ZCmPr{#QXg1kR_gWh4dV$kW zWEu&{IghlZE~BE@q{U|fofVqHw*u5+-N;qBEJ>iRh7JVlNPFpyuQ_##PgV_l^%Onw z5gW)LiH~rNc2YyB8~5JC5MHB%+|s<0yz7*(N>5xV*k7p1zzf_7XLb@I6Z){+Rvo#%`(Lxa<4SudPiz*YE z7LpLkbbnx!_ zZ^5=J6LH|P6*EyBo~XXDJ2LbV_yhqzd}lJYW^{TMMg}HbhkG~UvLSG7Q}4?8wG6Jt z103)AX5CIb0EMR1CkMvrw=*Wc6%x4?q67FX@Od7vB$k5LjnpH!syR&BNCt zJweBjGK;Q3*m9}aIDe!1E@mo#hh^fo0dB!dMR>y8#Zk_d1DMXAiJ1%Wl(F10Jb=5ZcygoqJKr1mzbX; z^$N5`Lj1MlouZ&DG^lKUU45zLopZ|T04U5NCE^S-R$b6o@O*@X9c$8`zOwi>5pT+A zJ8m!^E8w;9u^4K`{;J=|_hVP?NuA1Y3RYWLPOy6I3e5dz_F z4|CT)Uclcz*C?mdPT@{hrw05>BV5EZ{9j2q1i6?N^SMy0iktJxSXZMQ^BnyitA7dyA z*x#QS*POYb&(aUi@)W#MjM>$?cq=XqFoD~{yIZHK!i_`*WzRN~cXIh%pA zmsvykM6aT}d)~3HO)s|Mri#2f=6hPsuLTUCg!hOaKImA2mKW|Ey@7yoU%?jBu;}iM5VhpV4 zmL=1cA@aJ)%(J5azDwkKYE9 zi8eYuWbV@OIhK|Hmh>!6&yuN59Y-HYr8b7R&%%$+BN9!OF7d}sLGiJK{ry*OK(eao zEJ8^l2iOB9w%{Cv3B2u0#1O)&dheBk8)k;(Om!`t_AnCrY1hy6b8O7n0qy))m~ZTy zI}%ZD&@h1Ecp&1%A;a{HZ1_}%0r#0-kn2P|@KEMUtXj7h{+u{9iX zSuPY1pS0jk4^by|Iq)5LmBKd)8{4)`4t|M*px6`3GnX!1(xu508J9FrWaZGa{-agY zrn4HbR=JPPZOZZ)u+2rf==j0bI#!2Jky?OMW^NI}wCL>njAg&kjZ$Pe9_!VlnW5J}Ju8we)kyM|?jjEc-uK z??;!?Bqk=$q83%Q^vhPyI27K&m+940{;h{*(F%-8Q9fYs7}p>9*iNM)Zhim`JhV>n zXx^kKAyj0!wt6N6psZeIx5HO+W;1|%^vV3#wC`YZ+l+`}`+%9uOW^SMqi}jRLo%rb zlk|t7rKjy>nf2jMI9a;)=nh-YNF&`g#=4v#tu|X<-hS1j&A!{*`)$9xRXDrv{wAJ8 zT}*4z3XH#=PL#pPW3+an&OQjSZhX2lzo2M*(72#_wyX%7&C8%(hV@?Lm7foKhus-D z-#y}Glbi!wD1J|sE%x4^V7qQI-otPHWJ+JCm?{=Yscs49v5m&jfOasJxGm$krH%MA zAC#Uhz1w`8(x_45Qzg=axmYRbGWc#r#6e_?__pO)?_)zT4P|9%k3H=@IE1~QgdT-_ zWZrN#YWVtw=7Nmb5ik3-IR?N0;r7wUb)|1>7x^E_2i1}9)i2ZTGWetT(<>KKL{9sY zwgZX~JhZiK#}j2MZ`Y&|Y96`Ucd;(}J9O~Q%ni;uk5JCK$!WKD6Gua9lDEjBY9uh_ z=sC4dn#ZU#FgmgS!pc~ElxW;`!?Tuq% zdh=RiUFTzsCHWoa+JP=M=G?ip^z2u1^DG_DW7Z-a#QXwIzd5L?5j5_n$4MtOJHINwy74|P~c7+_D7`blwl4rjuyk#6cxQ<@1Qr}$LP8c8kymOEkMb9nSaY^I&D6?E|C8Xibgc`QYK-Kx< zfajARn*l{Z^@n;OLNrjH|~Q>W-P3rfcYnaA2kLV3srk(OD=D7)^xaHfRRl?U zODxtz7-3@_XB$?`qAGM448O{W7`~x!)ySvLXEd;`9+?u^&MFUuY9<3GA&xfO7cP_Tm0DTzAFV(2}Eu_=X$0JRnDT&yqjeP$Smgmy<}N}qc;e*^5ep1Z@Q3o%nk zW$%7mbt??VS?kVGSCUQys5R#+c9Wc+g^cdkJ|d{y@mU{Q3U@+T^Id=MBfibOmisn` zR~+NnhCogn>7-7r3TW)L7LBVbtV!rT{<<8d#-!3Qj52ImLZa5T^Grn~YO$q&Y&3w| zA}P*nc-67nM!=q%(AbSU@S3}tqEHk?$Id=n&*kb14c5HdxVE=3s(iLH1bdsfbox;` zyM?tp-u+OH5<~i7u#g))tFG;LfU9?jS*bVJVvTPUj3Z}60D2h}s3eKb0_XA?$-ayg zFl^ofb5Ah@EI$+FSS78+o_vdl?3*!2$%;$2ph3{2M~CsCyU85fm^%juA3sU+gjkH2d-x@mL)6{+q9y0BE!4-xZ~kBh-(uOp(UKqL71S3@<-N0Bp57 z033F8(~6f$Sff82N2=w6p$I07x?{5EM++?C*sA>DQxXpW_qk9;6l+>Vn!iOf0Bls0 zPBo4xoy-74BEPJZJGnRhAA4^d6xY^mj|LARNN{&|k`Uazad${?3GQye-GVy=cXxMp z_uy{9;cb$0?svW`^?U!kSMOEbYO0#<-h1utwbz<+%(3Q}%kKqV%&dMqp!t;TW0IJg zA}T$a4(JOeZa?I5R?8!14XqpF+g0SgA9Tdg`q6CV744>-xo;%sx+b`!} zseXgW!HLHrP;ARF>~Txavn(8QL`VV-1yoQpA40>~g^M|+YC|HqsKd9QZQO=#`<aCO`@7|-+^N`)i>*$PsBFQ(rO!FZx~BN(i{Dz}LeBgAYE{}|O<*z>29r47OI90J8%#aH z6oyRX$$IB%n`ew1X!UOBFbSAXJ!T4HQuoHZu{jjQJW5M<2(P&>!qKm75eqgA$*Js= zXPeNIxix`_1!fMuMQ_;D<9Pc>fQh}}QqPD2o&pZnfa!+YPW=6_DT#ZzSzi7t+tc_J z%0JV`hRdcP3Ac$p0b5bMf%W|*y3Gtif#tDyiXmz3z~1Ft3R+JC!H0*(>q!>%y&a0? zRVD^Jiyh{?g56)sLbkoB#EEOq0w)@W>vm~x;0;@7gM0RDEI?q3HRqGpb=*pZMc3Ut zeoV6;(YDz0Dp;3A6-j0qZl4F?L@dgq2d;-NK5tE^I)vKE=o>KO(Q;*G8JXBeh1E6- zJ&)gTNhd$$axn~KF2>RxJJ5UhAUi(hlju8)k9aTli0E%5Z(~4dxTQWE?q7n9YCkjO zkY>xM3X`Gb#$k^iWfkMY#M<+26O_z0J4-l(K(2 zqQJ2o#Iv`2tD6n5w~w1=!Y@>7t2z0B6OR0<<=A2YoymE7_yhLQLgT9A*r#>taq&?e z0gREa54Szn3s zI)|lrB6wbWx1bg&MDQFun;(ytjs^_PU)|jMZ%>z9R$IVz*%vWZ-i@?cN*PTEzvrp0 znO=4|rvji(bliP@y^Yhgh&u?(Y;ayGp;uAkbqQ+l8Guodnzeoy`4KT72yfTt)Jq}W*d;HLwpOcbx&=feNt&)!1Kf5k8k@v z-xh0m0oo4V?P+cFuqhiH$i-5xguQO58X;>^0j%x?f0~Ea_X7x62@EPFNdB<&yR++7 z0Rf-K7;P27fx%MxF*%=Pd$W9}_;8m(<2l@F`s>n^LwMEWnnHnWZqs+>n)t+5s^)X` zE~V?q)_)SsYL^Z>xVaTvtfWT$w|Es1ie#jU%HXiNVdl(W>}^e??5_d^Wk|~C34pp^ zfr6>)KfmleRYz-QpCE2AYQp9k1Gi;%xIS9hM+zWBEKPxb#KS*y zv{56yz}dMckqi5vIMNcRwSN%s)lISG#1>C6DWbiEUO~7-6{C6jNsTgrf-9=kpEIH3 zPi|zH(C2iEy~*H3_I7d%q4O6X~T6h7pj?)XC`xf*P;L6lp z=h)GUhXen|0f~o$*IqZs-CC63M0g6+KC@cxR0`apFktGCK!t#kFnbdq0Z%NI8yV2> z1KDra{&7&WNPuYXh6^=R8A|_8bqyfJ{UJOUQs`&K>vU-!`&Zyzuxn4RhoGqlk>DXu zU5w01yy;-37f|61HBG@K4PEkfW+){?=sZA-nsI5R?Rivg=3nE4+srx23f0x9KK07h z@nr6>x7yVtC7Oqh$w0O~XXe^d!u~7A4G6`MiUkP}+!C*5D-LTQ8XK-eK3{=C?sczJ z{Mk|N9x`4N;Xx{e^Y$_4DV0*PqWs&bz}ZEdUZGX)V*`^NSVgbX;Z!~n2K}E>M*q8)ucLWoU}8<(zfbj=dvdcxGg@w%N>{TYhAX6pKZU@Pa|gN*uQFf$jf(@c*kW5gKfv z&8mWkl{U$SZ%*>mBQ^tuLlw+(Bk%jjnpWf^7}p1NU*KI2vIWGOo7y-1f(uWeDuUB9 z3$&=fs>j%a#>cKH7F-QRWoj8;yz(=H{Bp!*9Jrf0wsfv^t~%IsE>VOVcU~7>mk7u) zd{THN^@4Fgj+>yZzZ696GRoUDHf$56`0FMm zf}76{7JCnLORaSt`h~nMD)YaPXj%!g=@`7LfY~8OVg?M0DN%KkY&zzN@7TuTq5u2# z|Eqm6Z2dJMw+dp5ig_Xox|!Z5#oG8tu67@H`y&3j_#C(+>c)!6Q=%@#mtG?{lv>|a z7seW4Mad_i2~PQ3PFvwfQH<|t#@*X`TNQzKe<^1^dWL%xMo45Il?vX25j-mqB~Wtw z(CO7`rFwcm6nOh@-r&Vy@PI32X-^qZUF1=7d7C^=BavwtgBuCZNMhdpM`AT_+*c*= z@}%mGJeL350Pxv={%c!63eZlP+$j3bKBlYza*C1)ugVNxEN8MD3XBH4VL9)kSr)u% zB>#W%Q{=B;6pe)cErtH&Tf71XR#R}{7FJ$O^P?$6dYZEs2^7A@%l&6Hthq8sZ>h7L zfKZC7a-4KTssEUD|8zG0qgRSI+9Vk?=nbnm_gBZ~u+tEetlJ9xFea&0O>l|epQD6c#iU`^4Dc(nMHXp1&3-zga@S&f;3 z&zQ;Ns+IpaLi+!7L;$U{MaeJPLQ~zp+Eu4(<_=#duogTgxj@iUpI)YxBCv=xK&w@A zcEfK}FRW1O-g_vTDB4J$g(SXr``o=iEtR(X=NrD79Te|KgjxuXi$H@bWOe(dn5c+* zndoVUGnKD&`1_Q$$^UZ1lJHos!r@$FI!$IxJ9WW?=0&B+ChVAt3?}rAqsYo_l+}qB z;!U5u*Dp`tu}0?koU4UC&~XjXLZBD?0%%mETx3k4=HX2ghJ;Nm8jdrbMva!`Y7NZU z(`0s-2{1zMEEgk68mH|6eOtj2JHl4)b-6j5N$_9oA%#A-HsxH@T0U<)#TJ7ffgOFJ zTNIFR>uiTwel6gZu52i_t1A3FAbs$2j0 z|0g;y*1S(gIU?QvS#bFe71duSd^UUCwS^YrYGo!BTIub{?8T8RP0%!=mN_TG#7O6&kNA>9%!I zvN*U_sM+UOjYjNr_+mVlWT!_ImHrkepwQ1GH=yBX8=-OXfTX!H;ILpse^E55Xo8;= zy09n1L-M2KEhI=oZDD<6;+9knvy-2n!7Z3q{UX(svrdf5=(fhy9CwOOBnNze9Kdi?+@4kwi+1jNwHaAZt?={RjT6oobb0wa7 zGi;Q1aK77%6LNroae|-D2Iwh(yq~ecRntqp^EnE8xyNnljmXB{T8PE=n{L- z{`y6KvN* z)h~lj?yT>MTkCu(ZaI6kjeh9z)brUNhg*)ADdUVd9ck23q%DX~!{55+p42n*|5iM? zvhG~rLPGo{e9TP#TiPQbK^yv8+M_&%yt5rQ*3sdeLr=#QY<(VNWR&g?2tB>GD;EMY z_7fr##9;%)+`C^y*gy@P)*C>I?&AXz0fweZE9Burk4PF1dnv=+gLvaho@PCe%AyYj z=waJ{a*EVd-{6Hj?{D}zUvpI5E%X|>I#TD+JL-f)a*nY{O-5J7B%GvA4Urb`bd7wk zhjQM-iSr?7@sdw_7~&qFm&hq^2YQUHL#msVx?p5u+=9xznm(_OaYIK}*N7v$<~>K= z@$D)4f}1p3H$|6ISm>8x50#_?tK(^VIRdoQI|9TT44RPm$%{&1?Y!k&YQB9;wMs%_>A$XN%;)*deLgFv8+ztr;=L~}4;NOPnw6)G0tLb;zO zZn6L(_IW}LAq?DW_@%nouvLoepb)qTWYFCltQZwg3E$SMN?F=&q8~#o^d|-PJg+(; zsyv`=5O>OJDnfW;FH!cfut|yJxX)!ip<*}L`RT{TNM5q)d4s@Fch=d?oi@t3di#nv>|@OApgWC* z3kbW*N)Nm6u0^ZtDM#^}!@^^GbSNQs)o+%ii)_6k2Fo}|S zZ1R0s_-30KV7;1W9HENyn>=lXJGOVB*TaHp{_%-|43CInHsUBrSu1u^Fq z)lT@!kBi=ubeUYVW7-cx*Xehk5sYM-4oq>>&+aZ}yWkjFAk{S4ha{wdJo|GJ57ka< z`WPoTahN(}@;1o$S16ys-$|`GcluZ0N1av_KQWS$acIK0q|(yPzxnWUA7S~PjC_2M z<2YNcJLBpJJcwiDzNSCW>Wi^ZF9{J9{thv(_VqbKgsSjeM(#nF<(ImHHYQg$u?o)M zZ?e_|K>Gox;7!{*%siUGpxJZKh401PHnRt-v9+dzC+t^Ja2i&@MNxsRazQw-ATDP8 z6f0E*N$C-`Ygx`SDJxiND+qoTjLZH`N5z&XG~d+m461k$S#MhVKH^>uvO<*O#{Iz# zOhpv_Ik9Q7j`ds`L0Zz2htzv4)qLLL9rW#GgTVwS?DRQ70Zhc;B2Uq;6NdRr!jqr+ z7zYU$Np(E>B-g%k%^R6z`T}A4nO$%)GL1kcfmj|V&&cV?9 zLi`5DmcJ^*>^yfSLu3R`HRfQUacO1k3Vk{M)0+G=Ch9xk%CQ;ie7(+>ew_jcAxiOQ z(lO2%+=19wl4~bYDX3`IVVL^CLXSGp*B&Xg{$J`G_(QHD85Bt<91bCJZoT*7THm`l z6kA>|5RTyks(x*!gR3i}p6+k<)tGR`B8DwF& zDadFjL7bhz%BZN3(T0$lZE|0fUbk=cVEHKN*|~%TNl)8{GzTi_rUue>QMRB{07K>z zf*0@cnbR->usfuw`_75y?8C7KqT}$1LAyF|O9d&s`W&0-+2^fFl>^%jc+6s^4;g-- z1QK%)P(^KBSKI8z8d%+wmnsCtbGMv}_BN=~o-RmZYuwT};8_$Y{#^^eP+)o7b+_3@ zbAY%->?d{6Ocs7c*;`T@)f?~93!Q1@lt&Cg})g9XttgJxWu;vUc&2}rtRy; zw_dXk;%V)anu9dM7~6wdKqi;F)BWSPS-5I8qtoOY2~Y0p1zb%g87*TWoA8d(p*5;T~iLfaC?l?4XNRr^{O{DC}y0_Jq+V^c0W9}&< zRq~R!`wi6TF?U_j*9z=eE0`hw3`ctmjLB8Iap5*bVAh2^o`s)Yp1#6*5H1tF|Y z@aQN_d@?UJ0@KM6oZIP{y2H4fC4Zg6(iu`iZr3VGx7A_;51hGs7h(>-;81tMi~W=! zeDhjC;RrSJt?KKm>pJZzB2&uC0~kC93wn+>%~UW`Ms8b{tYfh!F_vJWN+4+YPqr(S z^y=nZQnV~1PpS50sv_;?X{c6p=fTu`N#<=TYB{tr#l3=7NfLzMu&0Tuw})-_Sm33% zU};W$f8Cy1Y#tb`i;F}L<`SBcXjnlGF!a1kH)s~8XJ5FFh=oZ5TnR*Q3Q?B)Mvdm- zQG*`q_QN>L-35vKagM0!CST_e;7H}zmwswCcYM@2o@PhQ1H)tXk>$l{9 z8N(=K{Ep*9r44MXM)zH@b@I_9H|#6YRJ15U&+>}h%I6RIW0zKlGN0#pQDCW2YfW=v zl-F%LF~iLtxgYsM`?$k5u|%mh;{0=y^&I?6duUc`Tvy zvTRU*n0&O7k$J<A?L+?bc*U8scT4n0^iPyC(Plbt z*fesH)%dzz2|`kEzvPcb&77qBj9Z1i zh1K;~4qvJA&*@R~=v$VFjs{x#89sJLTc^WS*1Fq6E$^}|S8-kKEHeF2h@vgsK?vk* zkt@5pEf~C*JM(BF-}n+cokZvn%(p}u0hL(GE5wwzPe6qvBql-3)Xot($n9KM_)C;t zqx(j7kgW3&Q@JaFJ2eop@-v;`!!QgiAu0ha*)X1I&_a%*c8tNvXz7G&X2dLk^x5b^ zOn_B2GSA8TB&#%?bSx%RRq!WwR;Cv_19)oyyj!1xh;TG7h9#u4I2s4b%GO$7BqXfW z>~jx3cyXuZXJ;w}um>Ay#zw@`c2OheQc6mNbWTluL#ndH>@^s)Q4>@ z+ClJWjqlqhJA|^Nz41hn!DB7Cb_CM*O|ZbMV{6fT*(|)Mb2VVN=yYXT1|jozO~N;H z9?utdG?pn>jlHG0w1YRkX_Q&(zwYe$*mEwI#j4`Q2xp#b*AV_;$$^HIZ5shp@-fXY zZkL=!kp!cabChO%CxIt<(c?BWjxR11>;tCbBh2c(J!>I?i)I3pRJ*0^=l8n}t-mH_ z&xX&wR^i*WA+}suk6l^v{psq@;DthMdLurZw)!mL{6i_*!tqu8%V(i#(0blzSDo<* z!AyzB>9vLMK3#0uMoh(v(*wszcm=0`<7Dsj)tgsKpB>fWLy%c0k*aGn z5aRJs;_P?rui8G(CHH>%duNIl`iBJXx`M2NcYsRd9ifMa>6eg`)=27 z6V9U&1~AtGu9+YeebqY(+4KhRoN97e`#O>1frt%ruA5t|kgM3Y^=RzxT7%z5bz^b4 zX1L2z&l`9rN7MvCajCEuD}Q^E3J>5U0Q%2q#3$>Sr&F5VQF4E#_LpT4IhXZTJ(52dxv>k z-fn2AN=>qKpxyxE7n~mt5ApdWCzRW^FZR3#@j`OQ>dpSqqU2DzSXh>jAaks6Io zTQ|MJId1M`-{{?UT{*2M18|AYHppwtttUp|dni->gw{zAyBWUC5cZKR+~WZkP3a z9hwd}8Ceu3NDR5m3dkK7aB7|>lR^9JN-O=rdCx2<<`_~o{9<(AkaE?(wB`*BMNqw> zLzN6FnQ7VJ$+FK1$EHr&6Xoy@wI_};&#rgKkb-D0;u&e=sC>FyhjfAT0F9e?Z`PiA ze^ccBATH`_8_+Td3DNa~x&z~!*=O|NW9(N^QOU$r%lOU@^rOyBNq?YLJa66Wt_)u! zvd|f(FYMav6U5614e7+6C$)Wrh5Mn092s#RRC$kfw1c_R02W@y*GvH+b) z$_OZx?CiHTZ+=<~BPmJM@>sQ|94zzX+%^rKwOE7aaD*5!$C2tyw$xbdT0}Rp%4tP^ z$i>pUcSF;Bh=fw?><(YQIVgozgW53!|7~m}`P)7-cAS=d*fy#{WW(E(B+Jcf4>LdG zqzli~*C72Axi#DIfZH>S?L9v~cHBH`vV^mTtwv+8gn*)A@jEJP-C^!Cb(h92tQ`9mRX(8m?v4cPTVw-Y|0(VbJz>&cHTP1e|;hQ+i?fxLaW}4gvE<~ZB zPl5U%$PYQU#0H;b=OQ^m*B{Lk%ogdp^2L(iS6uELQIXf_Km6s|UMIKZ=_Bo;6dUVN zGAb{Ovr8Sb0O&1J2=GW5!!V_{0-Lp}AOKQT4t)%dhW#e&2~{w5V`couS_dG3>#pDO{EeSOFj*DxFjU4GC0L;9Fd!bmcy=HpA zFn6oG-T3i6jI%NcmbgQy!f9N>7K8E7?F2__V3ST;&~6TYkPmmlaj#@c{*MndQ@PVAZ+n!=+M4(SWG`&=LBM4Zlg=FvDr`fau%lH zKRZfveal`WlwC^tDqvt}rSb-m<5OSjc@c@gfB5ATpOC1{Z4;B4KNky&$Sn`1er*sa zttG_1)XZMBpQSpy>fbtIQDgsDzGn013nM*3%E`%nF$p?>%JLwewSaVmFD7s?XS;(f z+FtOUeK56g17O${Yw7k$r*2_yir$QSxN*4_f-^T+%j%6Px4jY zxhJaSga|T~KuW`eiCaBFW!{zOKiz8OdOh=wA-`;+~&N0VX1Ix(=033OQ=|Az)W*;KiVga0Ct_2VQ+W<&r zfm_i5muM67graUi{)7sqv3W1KNofRcC+%tWwa0?{nL@W~FH#FAzwl|4S-VOD}$}jU0fEXTI5$TSUUWsr!72*xp$B%E&!W%6a zYMG(sAbOPG%1t1DyAj(^_(-~Sv5gBK*iEVf3jD?P_Y47`aLoxjc>exJ+)P{T%GW3} zOh)xius@E(iyJ@#rtQh{0Ss5HYY#B3HW~dx)SliObnm@-4e)%o_4lpNG_v5yHfbs6 z!Aa$ua%a@xfjwc!5NPsy8#zw^gH&b(#C0BSJKtv?+RuKwZ=Xi%I#iT7T)=HF;9d-6 zHA$~MB$@FNkWn$QN!8`5)1MrPH(Q<^Az0nXYZv>S-_cUenVcrLNruPP(dMf^DbWT ziGl+C52I{PXe%Chw*{0K`R(bOCZT(uvV~P*HQC3*T%$7d)PK}LkG34677=F`x;MVt zZPH|$2AkzMyi%t~)BDT%0Q-B;(hdn|OLIiT%6$Dw8(%RN%N+EPRFGMdivfpP6(M2B zslyp$5AGnE9Hf|^-k60}q}!Q^??VL>uFPjMDRgpZ+EQwp92|^L=OA+I+s4klv0pmj ztO4ctGR!1jOll#^BQVB7>0V5AZw>&%=IUO$tIlSSP4}{ z-kQ8e3tmV)_U>1FFJjvd@e!#0-<2jU_m*8Ok9_c{l143%Q9-py<7n#M2d9(I|~JQtH75<+3Wo zE9!2)Z1^tAm(pYi7Oc-a#rK#4oyb;(Ls`n9t)At0;)m$}zzkCbZ&+BTh~`&YwUJ4U zbE^tFsf(B`$3amm(yFP3uKUDd_VE_dSR1nFr(_Wm+pS=?KiTu|49nguX-|p!qq*HD zB2qh^?#Wfz4)Paf3#!CBypD4wXs);Aj@g!8FVJhi|u{lo#mRC6;!7yA9%~wktnG{YOAr z=xKK4Pee7p$3AzV_oZJco=DkYcZGo|P;14CT+>fhMJhClae92aYK5Ts?VAkoLUof! z(pdFDi|$Pg$lU|2C#d(`S4CTEb##E4CJqDKQ_6wWZwjN@BN>PY%{nxAQ081Al`I2l zZaq%}X477ErzTd6)D^}3px8;ir%ZLst%Hn3!V{HAm&WfYJdZ7+ybM8*Z08I@)+-l4 zXIr6CO|e{6)JE^gOGN6BDxiOdz@tf|L*%q`y)@bfg0kkRWjy($K0-V8s+%0U!%;;K zN>C@7TRfC0v4+oY{?XHGU##mXBB_nerDA+R6i(Mio)Q!SaYaS9ycee}=BB4AbS1-P z&6g)^RitBx{;NIc5rVStLt}%cLY6-sBAWM11i0IEj}QSxFQB%Oq&EbY{uvaeL-H~C zP@}v|k7?SAI3~vf*$CehVQXL@@}3hp*ITS*Tld5;DE(=jnCQW71>bLd1(s<>q(vb# zd8r&RW*hE@Hcjm9X*GKKK}uK4QpH`?Sg4I}+4$cC({ zW!@dLoh+f#+*O{}qffKTmb;ZX;te@f%Vbcuzlo}s2$7N~qQL%%fQw@@tX@!)fx6f) zMgjgZ-8aS|DA=Y2742Z_fSQ~fdYOcwdGw0D75{!P^aFHp-~KOLw6ubwdm_Bzo`;;R z{WE31QNU6nsX~I+_wF#aKD-cADYNfOZzxlEgtPqwAn&&F9_ zU7vK=BPlB`B8gSqwK;ONjM4oG?m=kTN#9#i_Emp0c7vBbX1B+-T04B2!W;Hq;h5#B zgpDjLQwv8I#gfr5>mZ!hZcqCjR~ik)fU7`3j#%Sj;ST)^GzNM5SsQJ3>_=l1!eFiil0C3;7)P#QI7vews1V zTX(Xa`&}A!s~kgDxAaOwtwtnTc=YbB1-EEk790EZ37zFt)gs5MEXwgYQy~e zIjFsXNq~o}&skjZ{;g_>qk@Sfy9{T6D5#}J?9ql5eXN38>XM61D3oFPFZTC7thHW) zEApe#F&uE4o?s!Z!$(csS4WW?hg&bPLME!4CS0FNH`YeZ69MPmuF0km1pD@e-wbd;T9MT*3EATAM>Ryd|6qXA z>v~>`<)3ZvHR;t0-M1juzl!OiV&|FCx6y~o=C+;|;eS_Oo|I&#W;f0PD<=m~H$uV1 zxTt=Yr@J=l8I9B6ETh+hONU}kv95(pk-(&i7G-wO%__*msFjHnk~(Fas}*!Xcf{uy77>d_hCJD461GhmW4r$oRulvh zKH!6jMga+ceQ$QlK;(8mD6!NQ&D;(1ALAl>N~H{2oOx8WydYUc%mM%ESNV5P5nu$4 zrpVzXm@pm*wtHgLnkTQK=KHAiEv!-M+HJ)LsH^DPAIL;VWYT-=@3{nNGPztXBX$~? zUA4q|@3P<j}BNgS%#ICtpwTLC*_>ER{#2Su5g82A44I zLJ_3M>`Q+}Su-_PhKIcp+gRhWmSFu(IcQ*9lDXcTgvB$a&!kJ4xYlMchj*XkOAvDX zk_~M-6@nQDy6mN8jr2X~s|ZIWQSVnh1DT^wqcMDwykA9aV*Hy0ZpTzhJ*&xn`?McC5Abtu&53mwOO6__m0J;w%7O0^$ivd-{^mr z%PT~j$lz5_s1MnvxT1u*-2_#TY>fxNI=)+alA#WVRl;h2}*UN9D!s>mZXoh#@xf=RG(|z3xqZgnXt{Vy8ysXV_ zMh%|L5I(*cGq#-Fh8-jPkEyne6_-UWIY+GzJ%j1uqiwYXx$6Lb{0lTcd*y22CC`Y9 z7yq__K-*>S0JD+=$BrB3VNIO@MiUX^KOnanq{KF7pMbLc1!dQgvH3T#B*mGjJpIps zeR@Mf-I$WFV~f+!C|cz?c@Ly2zIKY%)^B=>ty?h33T^T1U+81{f6>QOQ1aml-&=ok zn=P+TU#vbT72Z*c1L*zicMqRRZ+#4V$r9Rx$=krEg;O>0lL#Y}6A-!=Lv+-2MbTIF zQvOF0`KM0k(ob310$$`mZW6ao>2)CKraE|GXEWZCqp60i;@pR6g5$fq;@-4UbZ=Gd zMNEm11+ND}Q`yg%IHe^9!L7$PoDNUJjWP=QU3Fq=Hyx{oUM()0NNIVnk1$ywQw_q#fC%BiqNwi83SaqY@MGGDVhpY!Jeg zzsr4`VN^I7^<55+ef^Feh`r}`r7Yad!AjPc3CVJ9vmY+G=Jb8f*+01ME#805TcloM zOMMDGe^MkE5>^ftmOb|IFtt~70}?>gWEA=F)RZFi=dIE0OTb$`MWkIwGSs?=XwP>z zN%S{8?hp`ot>e>#AkGuP?ht>_rdi@#kfCjQ%8*Zo`ytJ=3m&*cNJn3??C7&c5%=W} zyEZJIURH&zK#lfB9teNY0ujemRN{SR)I%{{^0i$#Vf8VGkZR*!9XTXv_``u}-duag zQ_6Hxkb-ZuFDhXkMmMI|qp55HqNpTbW)N}NFOxBvN=LC; z6GyQ8?cy(LapF0U9kg896i&Wc{;^QF9~Jp`bSNS!-W~7;k}4hAVw{}@CWDz|1>efN zBI0?fS%g@&r^-Uh%XvD=p`1V!e%mNlzi34yGTjnkSBDj?JA)HZo*+kTu9(>*O>jjp zH6*9RadC^qY+H%|=VT8h1Cd*9*J?!-%1A}I<#B%57|68$6Nzj+Txv)Zex%tOM5u%Y zF*|Ax78ogK;#ewv%80T5E!}xTnI%X5-D9!dO5Y<{_u>GR9is2Ir3;JY_RqCms1OT3PkNpWqJ3@7L_ zJgpBSs_BlrSlbG=qbwnrp^J~|jJBYIkOx#+8@aK2^P$! z{dH&ONPN~fr(OlC+@?QmMBh0zcJxYo==FdYCW9?P53K+r2hKwCwHnhLEo#>VVyGe@c>k z6$vF<_w9qU66robZX7vL>eTe}_fLY1>%*vqYc-s>Ti$#97kc?-0B;TV??^c_`Bit; zd6*cQnE*D{o1s|ys?hNJLCAPsJ%GRUFuLe4eHyzl`##aMy-NFGcvBBN10Zv$Ke}rq z{`tAY-(IOoU0vCBF3%Xmr-p^qmXbi?Is6U({|?{&!~%jSK$C*fhz?<}kdgpRojz{W z9x9w(ZS@M8z4&ulM6dRO(dN%HMz2uNnr2PnLZ1BKCP2silO`s5X`=6SJvgu(A|wF% zOK$3|$jeLsK1GeWO2ew^UEQUWNR?f}%TM^Xi~se4k`O?rP!X&z;loSAUd-f3jXg(J zfAP2fVv_$wi~rm8laf6LJ`X${lN+{mhBJcSr_uT)3a}x?VZwDTf68-VMYQLPLBw`L zzN`-QpITfXsV_TFA)@t$pmmccn(p?Eqlm~1^dI0-{oE(p8RCX-@MAk}^l&GHo$DRQ z0h6foJ>CYg0mJN=jncXT7@m*#%EIQ>cUCzM_T{@vBpe^4YuhbHApt2gk3C-8 zr;0b#G7VfP!gpWCoSj73amTLz;-fY6(a~`k&60e8n!Y!kqe&XQESu27gXIj$!MF0= zZ15j<3^CI8ToIG+>?+^(>uTqF4=m5GS<-e`JRgH!)~f37@Z4kAMQBDLP{%HgMQ`7C z5FB@eR=Slm+3H?m)+ER$A~2ORZQKyQQHZ(5SY_WC*r|UPcFyFjDf~j30Hc zbp_-tH=dU~TN;l|`HUM|0N(cRp(aQTrs)Se@zL=F83nE;kg4o#xn6)lki*xleK4Y2G3+^&O$HCSc7;fDJ0G>@bvB@uP&pi1 z<)$yv84_Zzau?TnZz9jF#{MNpNY)rmP2CAjp?@E;DlY+Su#ME(&XY-*WPkozFhL^S zd3PQ}q%$Hh+|C<^WF5*=4PlA?>Sw?~@)*%yfdRrzy;0-o@S0 zeF8C&R46e7a&9IORZ1=0{ZQG(IB}Idgpmby$EpnSh!r;HU5?4kv;$9&Uxqco-|N

    PgB72zu46Kz|kHk?vx|FE)vL20oWG<{mT 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�liD`JqaY zyI`odA{c$9)R=Ys=(X*PXK#$uagTrWeFHD}?j*#cOxes<%gwT211bQ{rq8#P6leYI zhet3rd}H;YJhxeuagKUap3|s2qnlL7!xX;d2+hx2dm*zr3d~Z>Y`DSW8s% zB&#_!(`R(-yCR(O5^*;|Pf68n@%wsqbKh3f125el1f)FJn*#&DAYtp-ga~vUn-}2h zz~q@}V&0pyxTj<{?2{78aepikK^uv1o`PUA0nc3;p{J zW|uKN4L7fX#z188^(?gDbr$7bH8p4+bE;#2L6B(F;1KNv>JDrn3K05s8m!h!shoyc z!Q(gvfk_bDfF!0&W6~cPv-5D8w<82ks^wa$)GW zB}dn{U`*;FsQw_07-$bhzSE}?e={wz1uM~pmFxL&V!wjleGw50TVU>^_p;b~PRDhU zuAq_TdHi;g6GagBnbH>k<_Ffe8$cv5<|_npTNsXl3<5_+u!2vo{Y_wvR5Dj2xAUe1)aTCncLb;f00)V#zH=>r$5<_luJiroa;I>-g0#iIP1}ja+$?#ad`f>Lq6J2;U z|13O;nP_o$9t3j;6%)X;xp@oUE(dFC>!zFe^k)HN@I04GTXm=V;OrIth-u3t%wRlr z%pYF3T~@jP^8)h3_V|P!_A-R;x1)IR{3V&=G_>Q=b(1N2I5sM2uSH#ZV0l`*0a6Ii z=8!7m7(Dgy2DNp*O^d@%Ay0AyX>Sc(@zKrr{e~MMr@>Gj`uJrx8h< zqES?w=QT2W%EP}anRD2wbUI!Va@>#idi!mqIi*n5d)Wh(s@%$|vLP}t9BW7`c~mSp zqlY~%v7{=)gR!wPeK6|hE{x5|#^%0ARncfx@bMVXl%H=d&1(yptAf-xia@$RI<>Cg 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

    `) - - win := core.NewMainWindow("hip_bench", "Hippocampus AB-AC", width, height) - ss.Win = win - - vp := win.WinViewport2D() - updt := vp.UpdateStart() - - mfr := win.SetMainFrame() - - tbar := core.AddNewToolBar(mfr, "tbar") - tbar.SetStretchMaxWidth() - ss.ToolBar = tbar - - split := core.AddNewSplitView(mfr, "split") - split.Dim = math32.X - split.SetStretchMax() - - sv := core.NewForm(split, "sv") - sv.SetStruct(ss) - - tv := core.AddNewTabView(split, "tv") - - nv := tv.AddNewTab(netview.KiT_NetView, "NetView").(*netview.NetView) - nv.Var = "Act" - // nv.Options.ColorMap = "Jet" // default is ColdHot - // which fares pretty well in terms of discussion here: - // https://matplotlib.org/tutorials/colors/colormaps.html - nv.SetNet(ss.Net) - ss.NetView = nv - nv.ViewDefaults() - - plt := tv.AddNewTab(plot.KiT_Plot2D, "TrnTrlPlot").(*plot.Plot2D) - ss.TrnTrlPlot = ss.ConfigTrnTrlPlot(plt, ss.TrnTrlLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "TrnEpcPlot").(*plot.Plot2D) - ss.TrnEpcPlot = ss.ConfigTrnEpcPlot(plt, ss.TrnEpcLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "TstTrlPlot").(*plot.Plot2D) - ss.TstTrlPlot = ss.ConfigTstTrlPlot(plt, ss.TstTrlLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "TstEpcPlot").(*plot.Plot2D) - ss.TstEpcPlot = ss.ConfigTstEpcPlot(plt, ss.TstEpcLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "TstCycPlot").(*plot.Plot2D) - ss.TstCycPlot = ss.ConfigTstCycPlot(plt, ss.TstCycLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "RunPlot").(*plot.Plot2D) - ss.RunPlot = ss.ConfigRunPlot(plt, ss.RunLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "RunStatsPlot1").(*plot.Plot2D) - ss.RunStatsPlot1 = plt - - plt = tv.AddNewTab(plot.KiT_Plot2D, "RunStatsPlot2").(*plot.Plot2D) - ss.RunStatsPlot2 = plt - - split.SetSplits(.2, .8) - - tbar.AddAction(core.ActOpts{Label: "Init", Icon: "update", Tooltip: "Initialize everything including network weights, and start over. Also applies current params.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - ss.Init() - vp.SetNeedsFullRender() - }) - - tbar.AddAction(core.ActOpts{Label: "Train", Icon: "run", Tooltip: "Starts the network training, picking up from wherever it may have left off. If not stopped, training will complete the specified number of Runs through the full number of Epochs of training, with testing automatically occuring at the specified interval.", - UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - // ss.Train() - go ss.Train() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Stop", Icon: "stop", Tooltip: "Interrupts running. Hitting Train again will pick back up where it left off.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - ss.Stop() - }) - - tbar.AddAction(core.ActOpts{Label: "Step Trial", Icon: "step-fwd", Tooltip: "Advances one training trial at a time.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - ss.TrainTrial() - ss.IsRunning = false - vp.SetNeedsFullRender() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Step Epoch", Icon: "fast-fwd", Tooltip: "Advances one epoch (complete set of training patterns) at a time.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - go ss.TrainEpoch() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Step Run", Icon: "fast-fwd", Tooltip: "Advances one full training Run at a time.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - go ss.TrainRun() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Pre Train", Icon: "fast-fwd", Tooltip: "Does full pretraining.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - go ss.PreTrain() - } - }) - - tbar.AddAction(core.ActOpts{Label: "New Run", Icon: "reset", Tooltip: "After PreTrain, init things and reload the pretrain weights"}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.NewRun() - }) - - tbar.AddSeparator("test") - - tbar.AddAction(core.ActOpts{Label: "Test Trial", Icon: "step-fwd", Tooltip: "Runs the next testing trial.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - ss.TestTrial(false) // don't return on trial -- wrap - ss.IsRunning = false - vp.SetNeedsFullRender() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Test Item", Icon: "step-fwd", Tooltip: "Prompts for a specific input pattern name to run, and runs it in testing mode.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - core.StringPromptDialog(vp, "", "Test Item", - core.DlgOpts{Title: "Test Item", Prompt: "Enter the Name of a given input pattern to test (case insensitive, contains given string."}, - win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - dlg := send.(*core.Dialog) - if sig == int64(core.DialogAccepted) { - val := core.StringPromptDialogValue(dlg) - idxs := ss.TestEnv.Table.RowsByString("Name", val, table.Contains, table.IgnoreCase) - if len(idxs) == 0 { - core.PromptDialog(nil, core.DlgOpts{Title: "Name Not Found", Prompt: "No patterns found containing: " + val}, core.AddOk, core.NoCancel, nil, nil) - } else { - if !ss.IsRunning { - ss.IsRunning = true - fmt.Printf("testing index: %v\n", idxs[0]) - ss.TestItem(idxs[0]) - ss.IsRunning = false - vp.SetNeedsFullRender() - } - } - } - }) - }) - - tbar.AddAction(core.ActOpts{Label: "Test All", Icon: "fast-fwd", Tooltip: "Tests all of the testing trials.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - go ss.RunTestAll() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Env", Icon: "gear", Tooltip: "select training input patterns: AB or AC."}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - views.CallMethod(ss, "SetEnv", vp) - }) - - tbar.AddSeparator("log") - - tbar.AddAction(core.ActOpts{Label: "Reset RunLog", Icon: "reset", Tooltip: "Reset the accumulated log of all Runs, which are tagged with the ParamSet used"}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.RunLog.SetNumRows(0) - ss.RunPlot.Update() - }) - - tbar.AddAction(core.ActOpts{Label: "Rebuild Net", Icon: "reset", Tooltip: "Rebuild network with current params"}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.ReConfigNet() - }) - - tbar.AddAction(core.ActOpts{Label: "Run Stats", Icon: "file-data", Tooltip: "compute stats from run log -- avail in plot"}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.LogRunStats() - }) - - tbar.AddSeparator("misc") - - tbar.AddAction(core.ActOpts{Label: "New Seed", Icon: "new", Tooltip: "Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time."}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.NewRndSeed() - }) - - tbar.AddAction(core.ActOpts{Label: "README", Icon: icons.FileMarkdown, Tooltip: "Opens your browser on the README file that contains instructions for how to run this model."}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - core.OpenURL("https://github.com/emer/leabra/blob/main/examples/hip_bench/README.md") - }) - - vp.UpdateEndNoSig(updt) - - // main menu - appnm := core.AppName() - mmen := win.MainMenu - mmen.ConfigMenus([]string{appnm, "File", "Edit", "Window"}) - - amen := win.MainMenu.ChildByName(appnm, 0).(*core.Action) - amen.Menu.AddAppMenu(win) - - emen := win.MainMenu.ChildByName("Edit", 1).(*core.Action) - emen.Menu.AddCopyCutPaste(win) - - // note: Command in shortcuts is automatically translated into Control for - // Linux, Windows or Meta for MacOS - // fmen := win.MainMenu.ChildByName("File", 0).(*core.Action) - // fmen.Menu.AddAction(core.ActOpts{Label: "Open", Shortcut: "Command+O"}, - // win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - // FileViewOpenSVG(vp) - // }) - // fmen.Menu.AddSeparator("csep") - // fmen.Menu.AddAction(core.ActOpts{Label: "Close Window", Shortcut: "Command+W"}, - // win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - // win.Close() - // }) - - inQuitPrompt := false - core.SetQuitReqFunc(func() { - if inQuitPrompt { - return - } - inQuitPrompt = true - core.PromptDialog(vp, core.DlgOpts{Title: "Really Quit?", - Prompt: "Are you sure you want to quit and lose any unsaved params, weights, logs, etc?"}, core.AddOk, core.AddCancel, - win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if sig == int64(core.DialogAccepted) { - core.Quit() - } else { - inQuitPrompt = false - } - }) - }) - - // core.SetQuitCleanFunc(func() { - // fmt.Printf("Doing final Quit cleanup here..\n") - // }) - - inClosePrompt := false - win.SetCloseReqFunc(func(w *core.Window) { - if inClosePrompt { - return - } - inClosePrompt = true - core.PromptDialog(vp, core.DlgOpts{Title: "Really Close Window?", - Prompt: "Are you sure you want to close the window? This will Quit the App as well, losing all unsaved params, weights, logs, etc"}, core.AddOk, core.AddCancel, - win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if sig == int64(core.DialogAccepted) { - core.Quit() - } else { - inClosePrompt = false - } - }) - }) - - win.SetCloseCleanFunc(func(w *core.Window) { - go core.Quit() // once main window is closed, quit - }) - - win.MainMenuUpdated() - return win -} - -// These props register Save methods so they can be used -var SimProps = tree.Props{ - "CallMethods": tree.PropSlice{ - {"SaveWeights", tree.Props{ - "desc": "save network weights to file", - "icon": "file-save", - "Args": tree.PropSlice{ - {"File Name", tree.Props{ - "ext": ".wts,.wts.gz", - }}, - }, - }}, - {"SetEnv", tree.Props{ - "desc": "select which set of patterns to train on: AB or AC", - "icon": "gear", - "Args": tree.PropSlice{ - {"Train on AC", tree.Props{}}, - }, - }}, - }, -} - -// zycyc -// OuterLoopParams are the parameters to run for outer crossed factor testing -//var OuterLoopParams = []string{"SmallHip"} - -var OuterLoopParams = []string{"BigHip"} - -//var OuterLoopParams = []string{"SmallHip", "MedHip", "BigHip"} - -// InnerLoopParams are the parameters to run for inner crossed factor testing -//var InnerLoopParams = []string{"List020", "List040"} - -//var InnerLoopParams = []string{"List150", "List175", "List200"} - -var InnerLoopParams = []string{"List100", "List125", "List150", "List175", "List200"} - -//var InnerLoopParams = []string{"List020", "List040", "List060", "List080", "List100"} - -// TwoFactorRun runs outer-loop crossed with inner-loop params -func (ss *Sim) TwoFactorRun() { - tag := ss.Tag - usetag := tag - if usetag != "" { - usetag += "_" - } - for _, otf := range OuterLoopParams { - for _, inf := range InnerLoopParams { - ss.Tag = usetag + otf + "_" + inf - rand.Seed(ss.RndSeed + int64(ss.BatchRun)) // TODO: non-parallel running should resemble parallel running results, now not - ss.SetParamsSet(otf, "", ss.LogSetParams) - ss.SetParamsSet(inf, "", ss.LogSetParams) - ss.ReConfigNet() // note: this applies Base params to Network - ss.ConfigEnv() - ss.StopNow = false - ss.PretrainDone = false - ss.PreTrain() // zycyc, NoPretrain key - ss.PretrainDone = true - ss.NewRun() - ss.Train() - } - } - ss.Tag = tag -} - -func (ss *Sim) CmdArgs() { - ss.NoGui = true - var nogui bool - var saveCycPatSimLog bool - var saveEpcLog bool - var saveRunLog bool - var note string - flag.StringVar(&ss.ParamSet, "params", "", "ParamSet name to use -- must be valid name as listed in compiled-in params or loaded params") - flag.StringVar(&ss.Tag, "tag", "", "extra tag to add to file names saved from this run") - flag.StringVar(¬e, "note", "", "user note -- describe the run params etc") - flag.IntVar(&ss.BatchRun, "run", 0, "current batch run") - flag.IntVar(&ss.MaxRuns, "runs", 1, "number of runs to do, i.e., subjects") - flag.IntVar(&ss.MaxEpcs, "epcs", 30, "maximum number of epochs to run (split between AB / AC)") - flag.BoolVar(&ss.LogSetParams, "setparams", false, "if true, print a record of each parameter that is set") - flag.BoolVar(&ss.SaveWeights, "wts", false, "if true, save final weights after each run") - flag.BoolVar(&saveCycPatSimLog, "cycpatsimlog", false, "if true, save train cycle similarity log to file") // zycyc, pat sim key - flag.BoolVar(&saveEpcLog, "epclog", true, "if true, save test epoch log to file") - flag.BoolVar(&saveRunLog, "runlog", true, "if true, save run epoch log to file") - flag.BoolVar(&nogui, "nogui", true, "if not passing any other args and want to run nogui, use nogui") - flag.Parse() - ss.Init() - - if note != "" { - fmt.Printf("note: %s\n", note) - } - if ss.ParamSet != "" { - fmt.Printf("Using ParamSet: %s\n", ss.ParamSet) - } - - if saveEpcLog { - var err error - fnm := ss.LogFileName(strconv.Itoa(ss.BatchRun) + "tstepc") - ss.TstEpcFile, err = os.Create(fnm) - if err != nil { - log.Println(err) - ss.TstEpcFile = nil - } else { - fmt.Printf("Saving test epoch log to: %v\n", fnm) - defer ss.TstEpcFile.Close() - } - } - if saveCycPatSimLog { - var err error - fnm := ss.LogFileName(strconv.Itoa(ss.BatchRun) + "trncycpatsim") - ss.TrnCycPatSimFile, err = os.Create(fnm) - if err != nil { - log.Println(err) - ss.TrnCycPatSimFile = nil - } else { - fmt.Printf("Saving train cycle pattern similarity log to: %v\n", fnm) - defer ss.TrnCycPatSimFile.Close() - } - } - if saveRunLog { - var err error - fnm := ss.LogFileName(strconv.Itoa(ss.BatchRun) + "run") - ss.RunFile, err = os.Create(fnm) - if err != nil { - log.Println(err) - ss.RunFile = nil - } else { - fmt.Printf("Saving run log to: %v\n", fnm) - defer ss.RunFile.Close() - } - } - if ss.SaveWeights { - fmt.Printf("Saving final weights per run\n") - } - fmt.Printf("Batch No. %d\n", ss.BatchRun) - fmt.Printf("Running %d Runs\n", ss.MaxRuns-ss.BatchRun) - // ss.Train() - ss.TwoFactorRun() - //fnm := ss.LogFileName("runs") - //ss.RunStats.SaveCSV(core.Filename(fnm), table.Tab, table.Headers) // not usable for batch runs -} diff --git a/examples/hip_bench/hip_bench.py b/examples/hip_bench/hip_bench.py deleted file mode 100755 index 08d6e2d..0000000 --- a/examples/hip_bench/hip_bench.py +++ /dev/null @@ -1,2642 +0,0 @@ -#!/usr/local/bin/pyleabra -i - -# Copyright (c) 2019, The Emergent Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -# hip project - -from leabra import ( - go, - leabra, - emer, - relpos, - eplot, - env, - agg, - patgen, - prjn, - etable, - efile, - split, - etensor, - params, - netview, - rand, - erand, - gi, - giv, - pygiv, - pyparams, - math32, - hip, - evec, - simat, - metric, -) - -import importlib as il # il.reload(ra25) -- doesn't seem to work for reasons unknown -import io, sys, getopt -from datetime import datetime, timezone - -# OuterLoopParams are the parameters to run for outer crossed factor testing -# var OuterLoopParams = []string{"SmallHip", "MedHip"} //, "BigHip"} -OuterLoopParams = go.Slice_string(["MedHip"]) # , "BigHip"} - -# InnerLoopParams are the parameters to run for inner crossed factor testing -# var InnerLoopParams = []string{"List020", "List040", "List050", "List060", "List070", "List080"} // , "List100"} -InnerLoopParams = go.Slice_string( - ["List040", "List080", "List120", "List160", "List200"] -) # , "List100"} - -# import numpy as np -# import matplotlib -# matplotlib.use('SVG') -# import matplotlib.pyplot as plt -# plt.rcParams['svg.fonttype'] = 'none' # essential for not rendering fonts as paths - -# this will become Sim later.. -TheSim = 1 - -# LogPrec is precision for saving float values in logs -LogPrec = 4 - -# note: we cannot use methods for callbacks from Go -- must be separate functions -# so below are all the callbacks from the GUI toolbar actions - - -def InitCB(recv, send, sig, data): - TheSim.Init() - TheSim.UpdateClassView() - TheSim.vp.SetNeedsFullRender() - - -def TrainCB(recv, send, sig, data): - if not TheSim.IsRunning: - TheSim.IsRunning = True - TheSim.ToolBar.UpdateActions() - TheSim.Train() - - -def StopCB(recv, send, sig, data): - TheSim.Stop() - - -def StepTrialCB(recv, send, sig, data): - if not TheSim.IsRunning: - TheSim.IsRunning = True - TheSim.TrainTrial() - TheSim.IsRunning = False - TheSim.UpdateClassView() - TheSim.vp.SetNeedsFullRender() - - -def StepEpochCB(recv, send, sig, data): - if not TheSim.IsRunning: - TheSim.IsRunning = True - TheSim.ToolBar.UpdateActions() - TheSim.TrainEpoch() - - -def StepRunCB(recv, send, sig, data): - if not TheSim.IsRunning: - TheSim.IsRunning = True - TheSim.ToolBar.UpdateActions() - TheSim.TrainRun() - - -def TestTrialCB(recv, send, sig, data): - if not TheSim.IsRunning: - TheSim.IsRunning = True - TheSim.TestTrial(False) - TheSim.IsRunning = False - TheSim.UpdateClassView() - TheSim.vp.SetNeedsFullRender() - - -def TestItemCB2(recv, send, sig, data): - win = core.Window(handle=recv) - vp = win.WinViewport2D() - dlg = core.Dialog(handle=send) - if sig != core.DialogAccepted: - return - val = core.StringPromptDialogValue(dlg) - idxs = TheSim.TestEnv.Table.RowsByString( - "Name", val, True, True - ) # contains, ignoreCase - if len(idxs) == 0: - core.PromptDialog( - vp, - core.DlgOpts( - Title="Name Not Found", Prompt="No patterns found containing: " + val - ), - True, - False, - go.nil, - go.nil, - ) - else: - if not TheSim.IsRunning: - TheSim.IsRunning = True - print("testing index: %s" % idxs[0]) - TheSim.TestItem(idxs[0]) - TheSim.IsRunning = False - vp.SetNeedsFullRender() - - -def TestItemCB(recv, send, sig, data): - win = core.Window(handle=recv) - core.StringPromptDialog( - win.WinViewport2D(), - "", - "Test Item", - core.DlgOpts( - Title="Test Item", - Prompt="Enter the Name of a given input pattern to test (case insensitive, contains given string.", - ), - win, - TestItemCB2, - ) - - -def TestAllCB(recv, send, sig, data): - if not TheSim.IsRunning: - TheSim.IsRunning = True - TheSim.ToolBar.UpdateActions() - TheSim.RunTestAll() - - -def ResetRunLogCB(recv, send, sig, data): - TheSim.RunLog.SetNumRows(0) - TheSim.RunPlot.Update() - - -def NewRndSeedCB(recv, send, sig, data): - TheSim.NewRndSeed() - - -def ReadmeCB(recv, send, sig, data): - core.OpenURL("https://github.com/emer/leabra/blob/main/examples/hip/README.md") - - -def FilterSSE(et, row): - return etable.Table(handle=et).CellFloat("SSE", row) > 0 # include error trials - - -def AggIfGt0(idx, val): - return val > 0 - - -def AggIfEq0(idx, val): - return val == 0 - - -def UpdateFuncNotRunning(act): - act.SetActiveStateUpdate(not TheSim.IsRunning) - - -def UpdateFuncRunning(act): - act.SetActiveStateUpdate(TheSim.IsRunning) - - -##################################################### -# Sim - - -class HipParams(pyviews.ClassViewObj): - """ - see def_params.go for the default params, and params.go for user-saved versions - from the gui. - """ - - def __init__(self): - super(HipParams, self).__init__() - self.ECSize = evec.Vector2i() - self.SetTags( - "ECSize", 'desc:"size of EC in terms of overall pools (outer dimension)"' - ) - self.ECPool = evec.Vector2i() - self.SetTags("ECPool", 'desc:"size of one EC pool"') - self.CA1Pool = evec.Vector2i() - self.SetTags("CA1Pool", 'desc:"size of one CA1 pool"') - self.CA3Size = evec.Vector2i() - self.SetTags("CA3Size", 'desc:"size of CA3"') - self.DGRatio = float() - self.SetTags("DGRatio", 'desc:"size of DG / CA3"') - self.DGSize = evec.Vector2i() - self.SetTags("DGSize", 'inactive:"+" desc:"size of DG"') - self.DGPCon = float() - self.SetTags("DGPCon", 'desc:"percent connectivity into DG"') - self.CA3PCon = float() - self.SetTags("CA3PCon", 'desc:"percent connectivity into CA3"') - self.MossyPCon = float() - self.SetTags("MossyPCon", 'desc:"percent connectivity into CA3 from DG"') - self.ECPctAct = float() - self.SetTags("ECPctAct", 'desc:"percent activation in EC pool"') - self.MossyDel = float() - self.SetTags( - "MossyDel", - 'desc:"delta in mossy effective strength between minus and plus phase"', - ) - self.MossyDelTest = float() - self.SetTags( - "MossyDelTest", - 'desc:"delta in mossy strength for testing (relative to base param)"', - ) - - def Update(hp): - hp.DGSize.X = int(float(hp.CA3Size.X) * hp.DGRatio) - hp.DGSize.Y = int(float(hp.CA3Size.Y) * hp.DGRatio) - - def Defaults(hp): - hp.ECSize.Set(2, 3) - hp.ECPool.Set(7, 7) - hp.CA1Pool.Set(10, 10) - hp.CA3Size.Set(20, 20) - hp.DGRatio = 1.5 - - # ratio - hp.DGPCon = 0.25 # .35 is sig worse, .2 learns faster but AB recall is worse - hp.CA3PCon = 0.25 - hp.MossyPCon = 0.02 # .02 > .05 > .01 (for small net) - hp.ECPctAct = 0.2 - - hp.MossyDel = 4 # 4 > 2 -- best is 4 del on 4 rel baseline - hp.MossyDelTest = ( - 3 # for rel = 4: 3 > 2 > 0 > 4 -- 4 is very bad -- need a small amount.. - ) - - -class PatParams(pyviews.ClassViewObj): - """ - PatParams have the pattern parameters - """ - - def __init__(self): - super(PatParams, self).__init__() - self.ListSize = int() - self.SetTags("ListSize", 'desc:"number of A-B, A-C patterns each"') - self.MinDiffPct = float() - self.SetTags( - "MinDiffPct", - 'desc:"minimum difference between item random patterns, as a proportion (0-1) of total active"', - ) - self.DriftCtxt = bool() - self.SetTags( - "DriftCtxt", - 'desc:"use drifting context representations -- otherwise does bit flips from prototype"', - ) - self.CtxtFlipPct = float() - self.SetTags( - "CtxtFlipPct", - 'desc:"proportion (0-1) of active bits to flip for each context pattern, relative to a prototype, for non-drifting"', - ) - self.DriftPct = float() - self.SetTags( - "DriftPct", - 'desc:"percentage of active bits that drift, per step, for drifting context"', - ) - - def Defaults(pp): - pp.ListSize = 20 # 10 is too small to see issues.. - pp.MinDiffPct = 0.5 - pp.CtxtFlipPct = 0.25 - pp.DriftPct = 0.2 - - -class Sim(pyviews.ClassViewObj): - """ - Sim encapsulates the entire simulation model, and we define all the - functionality as methods on this struct. This structure keeps all relevant - state information organized and available without having to pass everything around - as arguments to methods, and provides the core GUI interface (note the view tags - for the fields which provide hints to how things should be displayed). - """ - - def __init__(self): - super(Sim, self).__init__() - self.Net = leabra.Network() - self.SetTags("Net", 'view:"no-inline"') - self.Hip = HipParams() - self.SetTags("Hip", 'desc:"hippocampus sizing parameters"') - self.Pat = PatParams() - self.SetTags("Pat", 'desc:"parameters for the input patterns"') - self.PoolVocab = patgen.Vocab() - self.SetTags("PoolVocab", 'view:"no-inline" desc:"pool patterns vocabulary"') - self.TrainAB = etable.Table() - self.SetTags("TrainAB", 'view:"no-inline" desc:"AB training patterns to use"') - self.TrainAC = etable.Table() - self.SetTags("TrainAC", 'view:"no-inline" desc:"AC training patterns to use"') - self.TestAB = etable.Table() - self.SetTags("TestAB", 'view:"no-inline" desc:"AB testing patterns to use"') - self.TestAC = etable.Table() - self.SetTags("TestAC", 'view:"no-inline" desc:"AC testing patterns to use"') - self.TestLure = etable.Table() - self.SetTags("TestLure", 'view:"no-inline" desc:"Lure testing patterns to use"') - self.TrainAll = etable.Table() - self.SetTags( - "TrainAll", 'view:"no-inline" desc:"all training patterns -- for pretrain"' - ) - self.TrnTrlLog = etable.Table() - self.SetTags( - "TrnTrlLog", 'view:"no-inline" desc:"training trial-level log data"' - ) - self.TrnEpcLog = etable.Table() - self.SetTags( - "TrnEpcLog", 'view:"no-inline" desc:"training epoch-level log data"' - ) - self.TstEpcLog = etable.Table() - self.SetTags( - "TstEpcLog", 'view:"no-inline" desc:"testing epoch-level log data"' - ) - self.TstTrlLog = etable.Table() - self.SetTags( - "TstTrlLog", 'view:"no-inline" desc:"testing trial-level log data"' - ) - self.TstCycLog = etable.Table() - self.SetTags( - "TstCycLog", 'view:"no-inline" desc:"testing cycle-level log data"' - ) - self.RunLog = etable.Table() - self.SetTags("RunLog", 'view:"no-inline" desc:"summary log of each run"') - self.RunStats = etable.Table() - self.SetTags("RunStats", 'view:"no-inline" desc:"aggregate stats on all runs"') - self.TstStats = etable.Table() - self.SetTags("TstStats", 'view:"no-inline" desc:"testing stats"') - self.SimMats = {} - self.SetTags( - "SimMats", 'view:"no-inline" desc:"similarity matrix results for layers"' - ) - self.Params = params.Sets() - self.SetTags("Params", 'view:"no-inline" desc:"full collection of param sets"') - self.ParamSet = str() - self.SetTags( - "ParamSet", - 'desc:"which set of *additional* parameters to use -- always applies Base and optionaly this next if set"', - ) - self.Tag = str() - self.SetTags( - "Tag", - 'desc:"extra tag string to add to any file names output from sim (e.g., weights files, log files, params)"', - ) - self.MaxRuns = int(10) - self.SetTags("MaxRuns", 'desc:"maximum number of model runs to perform"') - self.MaxEpcs = int(30) - self.SetTags("MaxEpcs", 'desc:"maximum number of epochs to run per model run"') - self.PreTrainEpcs = int(5) - self.SetTags("PreTrainEpcs", 'desc:"number of epochs to run for pretraining"') - self.NZeroStop = int(1) - self.SetTags( - "NZeroStop", - 'desc:"if a positive number, training will stop after this many epochs with zero mem errors"', - ) - self.TrainEnv = env.FixedTable() - self.SetTags( - "TrainEnv", - 'desc:"Training environment -- contains everything about iterating over input / output patterns over training"', - ) - self.TestEnv = env.FixedTable() - self.SetTags( - "TestEnv", 'desc:"Testing environment -- manages iterating over testing"' - ) - self.Time = leabra.Time() - self.SetTags("Time", 'desc:"leabra timing parameters and state"') - self.ViewOn = True - self.SetTags( - "ViewOn", 'desc:"whether to update the network view while running"' - ) - self.TrainUpdate = leabra.TimeScales.AlphaCycle - self.SetTags( - "TrainUpdate", - 'desc:"at what time scale to update the display during training? Anything longer than Epoch updates at Epoch in this model"', - ) - self.TestUpdate = leabra.TimeScales.AlphaCycle - self.SetTags( - "TestUpdate", - 'desc:"at what time scale to update the display during testing? Anything longer than Epoch updates at Epoch in this model"', - ) - self.TestInterval = int(1) - self.SetTags( - "TestInterval", - 'desc:"how often to run through all the test patterns, in terms of training epochs -- can use 0 or -1 for no testing"', - ) - self.MemThr = float(0.34) - self.SetTags( - "MemThr", - 'desc:"threshold to use for memory test -- if error proportion is below this number, it is scored as a correct trial"', - ) - - # statistics: note use float64 as that is best for etable.Table - self.TestNm = str() - self.SetTags( - "TestNm", - 'inactive:"+" desc:"what set of patterns are we currently testing"', - ) - self.Mem = float() - self.SetTags( - "Mem", - 'inactive:"+" desc:"whether current trial\'s ECout met memory criterion"', - ) - self.TrgOnWasOffAll = float() - self.SetTags( - "TrgOnWasOffAll", - 'inactive:"+" desc:"current trial\'s proportion of bits where target = on but ECout was off ( < 0.5), for all bits"', - ) - self.TrgOnWasOffCmp = float() - self.SetTags( - "TrgOnWasOffCmp", - 'inactive:"+" desc:"current trial\'s proportion of bits where target = on but ECout was off ( < 0.5), for only completion bits that were not active in ECin"', - ) - self.TrgOffWasOn = float() - self.SetTags( - "TrgOffWasOn", - 'inactive:"+" desc:"current trial\'s proportion of bits where target = off but ECout was on ( > 0.5)"', - ) - self.TrlSSE = float() - self.SetTags("TrlSSE", 'inactive:"+" desc:"current trial\'s sum squared error"') - self.TrlAvgSSE = float() - self.SetTags( - "TrlAvgSSE", - 'inactive:"+" desc:"current trial\'s average sum squared error"', - ) - self.TrlCosDiff = float() - self.SetTags( - "TrlCosDiff", 'inactive:"+" desc:"current trial\'s cosine difference"' - ) - - self.EpcSSE = float() - self.SetTags( - "EpcSSE", 'inactive:"+" desc:"last epoch\'s total sum squared error"' - ) - self.EpcAvgSSE = float() - self.SetTags( - "EpcAvgSSE", - 'inactive:"+" desc:"last epoch\'s average sum squared error (average over trials, and over units within layer)"', - ) - self.EpcPctErr = float() - self.SetTags( - "EpcPctErr", - 'inactive:"+" desc:"last epoch\'s percent of trials that had SSE > 0 (subject to .5 unit-wise tolerance)"', - ) - self.EpcPctCor = float() - self.SetTags( - "EpcPctCor", - 'inactive:"+" desc:"last epoch\'s percent of trials that had SSE == 0 (subject to .5 unit-wise tolerance)"', - ) - self.EpcCosDiff = float() - self.SetTags( - "EpcCosDiff", - 'inactive:"+" desc:"last epoch\'s average cosine difference for output layer (a normalized error measure, maximum of 1 when the minus phase exactly matches the plus)"', - ) - self.EpcPerTrlMSec = float() - self.SetTags( - "EpcPerTrlMSec", - 'inactive:"+" desc:"how long did the epoch take per trial in wall-clock milliseconds"', - ) - self.FirstZero = int() - self.SetTags( - "FirstZero", 'inactive:"+" desc:"epoch at when Mem err first went to zero"' - ) - self.NZero = int() - self.SetTags( - "NZero", 'inactive:"+" desc:"number of epochs in a row with zero Mem err"' - ) - - # internal state - view:"-" - self.SumSSE = float() - self.SetTags( - "SumSSE", - 'view:"-" inactive:"+" desc:"sum to increment as we go through epoch"', - ) - self.SumAvgSSE = float() - self.SetTags( - "SumAvgSSE", - 'view:"-" inactive:"+" desc:"sum to increment as we go through epoch"', - ) - self.SumCosDiff = float() - self.SetTags( - "SumCosDiff", - 'view:"-" inactive:"+" desc:"sum to increment as we go through epoch"', - ) - self.CntErr = int() - self.SetTags( - "CntErr", - 'view:"-" inactive:"+" desc:"sum of errs to increment as we go through epoch"', - ) - self.Win = 0 - self.SetTags("Win", 'view:"-" desc:"main GUI window"') - self.NetView = 0 - self.SetTags("NetView", 'view:"-" desc:"the network viewer"') - self.ToolBar = 0 - self.SetTags("ToolBar", 'view:"-" desc:"the master toolbar"') - self.TrnTrlPlot = 0 - self.SetTags("TrnTrlPlot", 'view:"-" desc:"the training trial plot"') - self.TrnEpcPlot = 0 - self.SetTags("TrnEpcPlot", 'view:"-" desc:"the training epoch plot"') - self.TstEpcPlot = 0 - self.SetTags("TstEpcPlot", 'view:"-" desc:"the testing epoch plot"') - self.TstTrlPlot = 0 - self.SetTags("TstTrlPlot", 'view:"-" desc:"the test-trial plot"') - self.TstCycPlot = 0 - self.SetTags("TstCycPlot", 'view:"-" desc:"the test-cycle plot"') - self.RunPlot = 0 - self.SetTags("RunPlot", 'view:"-" desc:"the run plot"') - self.RunStatsPlot = 0 - self.SetTags("RunStatsPlot", 'view:"-" desc:"the run stats plot"') - self.TrnEpcFile = 0 - self.SetTags("TrnEpcFile", 'view:"-" desc:"log file"') - self.TrnEpcHdrs = False - self.SetTags("TrnEpcHdrs", 'view:"-" desc:"headers written"') - self.TstEpcFile = 0 - self.SetTags("TstEpcFile", 'view:"-" desc:"log file"') - self.TstEpcHdrs = False - self.SetTags("TstEpcHdrs", 'view:"-" desc:"headers written"') - self.RunFile = 0 - self.SetTags("RunFile", 'view:"-" desc:"log file"') - self.TmpValues = go.Slice_float32() - self.SetTags( - "TmpValues", - 'view:"-" desc:"temp slice for holding values -- prevent mem allocs"', - ) - self.LayStatNms = go.Slice_string(["ECin", "ECout", "DG", "CA3", "CA1"]) - self.SetTags( - "LayStatNms", - 'view:"-" desc:"names of layers to collect more detailed stats on (avg act, etc)"', - ) - self.TstNms = go.Slice_string(["AB", "AC", "Lure"]) - self.SetTags("TstNms", 'view:"-" desc:"names of test tables"') - self.SimMatStats = go.Slice_string(["Within", "Between"]) - self.SetTags("SimMatStats", 'view:"-" desc:"names of sim mat stats"') - self.TstStatNms = go.Slice_string(["Mem", "TrgOnWasOff", "TrgOffWasOn"]) - self.SetTags("TstStatNms", 'view:"-" desc:"names of test stats"') - self.ValuesTsrs = {} - self.SetTags("ValuesTsrs", 'view:"-" desc:"for holding layer values"') - self.SaveWts = False - self.SetTags( - "SaveWts", - 'view:"-" desc:"for command-line run only, auto-save final weights after each run"', - ) - self.PreTrainWts = "" - self.SetTags("PreTrainWts", 'view:"-" desc:"name of pretrained wts file"') - self.NoGui = False - self.SetTags("NoGui", 'view:"-" desc:"if true, runing in no GUI mode"') - self.LogSetParams = False - self.SetTags( - "LogSetParams", - 'view:"-" desc:"if true, print message for all params that are set"', - ) - self.IsRunning = False - self.SetTags("IsRunning", 'view:"-" desc:"true if sim is running"') - self.StopNow = False - self.SetTags("StopNow", 'view:"-" desc:"flag to stop running"') - self.NeedsNewRun = False - self.SetTags( - "NeedsNewRun", - 'view:"-" desc:"flag to initialize NewRun if last one finished"', - ) - self.RndSeed = int(2) - self.SetTags("RndSeed", 'view:"-" desc:"the current random seed"') - self.LastEpcTime = 0 - self.SetTags("LastEpcTime", 'view:"-" desc:"timer for last epoch"') - self.vp = 0 - self.SetTags("vp", 'view:"-" desc:"viewport"') - - def InitParams(ss): - """ - Sets the default set of parameters -- Base is always applied, and others can be optionally - selected to apply on top of that - """ - ss.Params.OpenJSON("def.params") - ss.Defaults() - - def Defaults(ss): - ss.Hip.Defaults() - ss.Pat.Defaults() - ss.Time.CycPerQtr = 25 # note: key param - 25 seems like it is actually fine? - ss.Update() - - def Update(ss): - ss.Hip.Update() - - def Config(ss): - """ - Config configures all the elements using the standard functions - """ - ss.InitParams() - ss.ConfigPats() - ss.ConfigEnv() - ss.ConfigNet(ss.Net) - ss.ConfigTrnTrlLog(ss.TrnTrlLog) - ss.ConfigTrnEpcLog(ss.TrnEpcLog) - ss.ConfigTstEpcLog(ss.TstEpcLog) - ss.ConfigTstTrlLog(ss.TstTrlLog) - ss.ConfigTstCycLog(ss.TstCycLog) - ss.ConfigRunLog(ss.RunLog) - - def ConfigEnv(ss): - if ss.MaxRuns == 0: # allow user override - ss.MaxRuns = 10 - if ss.MaxEpcs == 0: # allow user override - ss.MaxEpcs = 30 - ss.NZeroStop = 1 - ss.PreTrainEpcs = 5 # seems sufficient? - - ss.TrainEnv.Nm = "TrainEnv" - ss.TrainEnv.Dsc = "training params and state" - ss.TrainEnv.Table = etable.NewIndexView(ss.TrainAB) - ss.TrainEnv.Validate() - ss.TrainEnv.Run.Max = ( - ss.MaxRuns - ) # note: we are not setting epoch max -- do that manually - - ss.TestEnv.Nm = "TestEnv" - ss.TestEnv.Dsc = "testing params and state" - ss.TestEnv.Table = etable.NewIndexView(ss.TestAB) - ss.TestEnv.Sequential = True - ss.TestEnv.Validate() - - ss.TrainEnv.Init(0) - ss.TestEnv.Init(0) - - def SetEnv(ss, trainAC): - """ - SetEnv select which set of patterns to train on: AB or AC - """ - if trainAC: - ss.TrainEnv.Table = etable.NewIndexView(ss.TrainAC) - else: - ss.TrainEnv.Table = etable.NewIndexView(ss.TrainAB) - ss.TrainEnv.Init(0) - - def ConfigNet(ss, net): - net.InitName(net, "Hip_bench") - hp = ss.Hip - inl = net.AddLayer4D( - "Input", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, emer.Input - ) - ecin = net.AddLayer4D( - "ECin", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, emer.Hidden - ) - ecout = net.AddLayer4D( - "ECout", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, emer.Target - ) - ca1 = net.AddLayer4D( - "CA1", hp.ECSize.Y, hp.ECSize.X, hp.CA1Pool.Y, hp.CA1Pool.X, emer.Hidden - ) - dg = net.AddLayer2D("DG", hp.DGSize.Y, hp.DGSize.X, emer.Hidden) - ca3 = net.AddLayer2D("CA3", hp.CA3Size.Y, hp.CA3Size.X, emer.Hidden) - - ecin.SetClass("EC") - ecout.SetClass("EC") - - ecin.SetRelPos( - relpos.Rel(Rel=relpos.RightOf, Other="Input", YAlign=relpos.Front, Space=2) - ) - ecout.SetRelPos( - relpos.Rel(Rel=relpos.RightOf, Other="ECin", YAlign=relpos.Front, Space=2) - ) - dg.SetRelPos( - relpos.Rel( - Rel=relpos.Above, - Other="Input", - YAlign=relpos.Front, - XAlign=relpos.Left, - Space=0, - ) - ) - ca3.SetRelPos( - relpos.Rel( - Rel=relpos.Above, - Other="DG", - YAlign=relpos.Front, - XAlign=relpos.Left, - Space=0, - ) - ) - ca1.SetRelPos( - relpos.Rel(Rel=relpos.RightOf, Other="CA3", YAlign=relpos.Front, Space=2) - ) - - onetoone = prjn.NewOneToOne() - pool1to1 = prjn.NewPoolOneToOne() - full = prjn.NewFull() - - net.ConnectLayers(inl, ecin, onetoone, emer.Forward) - net.ConnectLayers(ecout, ecin, onetoone, emer.Back) - - # EC <-> CA1 encoder pathways - pj = net.ConnectLayersPrjn(ecin, ca1, pool1to1, emer.Forward, hip.EcCa1Prjn()) - pj.SetClass("EcCa1Prjn") - pj = net.ConnectLayersPrjn(ca1, ecout, pool1to1, emer.Forward, hip.EcCa1Prjn()) - pj.SetClass("EcCa1Prjn") - pj = net.ConnectLayersPrjn(ecout, ca1, pool1to1, emer.Back, hip.EcCa1Prjn()) - pj.SetClass("EcCa1Prjn") - - # Perforant pathway - ppathDG = prjn.NewUnifRnd() - ppathDG.PCon = hp.DGPCon - ppathCA3 = prjn.NewUnifRnd() - ppathCA3.PCon = hp.CA3PCon - - pj = net.ConnectLayersPrjn(ecin, dg, ppathDG, emer.Forward, hip.CHLPrjn()) - pj.SetClass("HippoCHL") - - if True: # toggle for bcm vs. ppath - pj = net.ConnectLayersPrjn( - ecin, ca3, ppathCA3, emer.Forward, hip.EcCa1Prjn() - ) - pj.SetClass("PPath") - pj = net.ConnectLayersPrjn(ca3, ca3, full, emer.Lateral, hip.EcCa1Prjn()) - pj.SetClass("PPath") - else: - # so far, this is sig worse, even with error-driven MinusQ1 case (which is better than off) - pj = net.ConnectLayersPrjn(ecin, ca3, ppathCA3, emer.Forward, hip.CHLPrjn()) - pj.SetClass("PPath") - pj = net.ConnectLayersPrjn(ca3, ca3, full, emer.Lateral, hip.CHLPrjn()) - pj.SetClass("PPath") - - # always use this for now: - if True: - pj = net.ConnectLayersPrjn(ca3, ca1, full, emer.Forward, hip.CHLPrjn()) - pj.SetClass("HippoCHL") - else: - # note: this requires lrate = 1.0 or maybe 1.2, doesn't work *nearly* as well - pj = net.ConnectLayers(ca3, ca1, full, emer.Forward) # default con - # pj.SetClass("HippoCHL") - - # Mossy fibers - mossy = prjn.NewUnifRnd() - mossy.PCon = hp.MossyPCon - pj = net.ConnectLayersPrjn( - dg, ca3, mossy, emer.Forward, hip.CHLPrjn() - ) # no learning - pj.SetClass("HippoCHL") - - # using 4 threads total (rest on 0) - dg.SetThread(1) - ca3.SetThread(2) - ca1.SetThread(3) # this has the most - - # note: if you wanted to change a layer type from e.g., Target to Compare, do this: - # outLay.SetType(emer.Compare) - # that would mean that the output layer doesn't reflect target values in plus phase - # and thus removes error-driven learning -- but stats are still computed. - - net.Defaults() - ss.SetParams("Network", ss.LogSetParams) # only set Network params - net.Build() - net.InitWts() - - def ReConfigNet(ss): - ss.ConfigPats() - ss.Net = leabra.Network() # start over with new network - ss.ConfigNet(ss.Net) - if ss.NetView != 0: - ss.NetView.SetNet(ss.Net) - ss.NetView.Update() # issue #41 closed - - def Init(ss): - """ - Init restarts the run, and initializes everything, including network weights - and resets the epoch log table - """ - rand.Seed(ss.RndSeed) - ss.SetParams("", ss.LogSetParams) - ss.ReConfigNet() - ss.ConfigEnv() - # selected or patterns have been modified etc - ss.StopNow = False - ss.NewRun() - ss.UpdateView(True) - - def NewRndSeed(ss): - """ - NewRndSeed gets a new random seed based on current time -- otherwise uses - the same random seed for every run - """ - ss.RndSeed = int(datetime.now(timezone.utc).timestamp()) - - def Counters(ss, train): - """ - Counters returns a string of the current counter state - use tabs to achieve a reasonable formatting overall - and add a few tabs at the end to allow for expansion.. - """ - if train: - return "Run:\t%d\tEpoch:\t%d\tTrial:\t%d\tCycle:\t%d\tName:\t%s\t\t\t" % ( - ss.TrainEnv.Run.Cur, - ss.TrainEnv.Epoch.Cur, - ss.TrainEnv.Trial.Cur, - ss.Time.Cycle, - ss.TrainEnv.TrialName.Cur, - ) - else: - return "Run:\t%d\tEpoch:\t%d\tTrial:\t%d\tCycle:\t%d\tName:\t%s\t\t\t" % ( - ss.TrainEnv.Run.Cur, - ss.TrainEnv.Epoch.Cur, - ss.TestEnv.Trial.Cur, - ss.Time.Cycle, - ss.TestEnv.TrialName.Cur, - ) - - def UpdateView(ss, train): - if ss.NetView != 0 and ss.NetView.IsVisible(): - ss.NetView.Record(ss.Counters(train)) - ss.NetView.GoUpdate() - - def AlphaCyc(ss, train): - """ - AlphaCyc runs one alpha-cycle (100 msec, 4 quarters) of processing. - External inputs must have already been applied prior to calling, - using ApplyExt method on relevant layers (see TrainTrial, TestTrial). - - If train is true, then learning DWt or WtFmDWt calls are made. - Handles netview updating within scope of AlphaCycle - """ - - if ss.Win != 0: - ss.Win.PollEvents() # this is essential for GUI responsiveness while running - viewUpdate = ss.TrainUpdate.value - if not train: - viewUpdate = ss.TestUpdate.value - - if train: - ss.Net.WtFmDWt() - - ca1 = leabra.Layer(ss.Net.LayerByName("CA1")) - ca3 = leabra.Layer(ss.Net.LayerByName("CA3")) - ecin = leabra.Layer(ss.Net.LayerByName("ECin")) - ecout = leabra.Layer(ss.Net.LayerByName("ECout")) - ca1FmECin = hip.EcCa1Prjn(ca1.RcvPrjns.SendName("ECin")) - ca1FmCa3 = hip.CHLPrjn(ca1.RcvPrjns.SendName("CA3")) - ca3FmDg = leabra.Prjn(ca3.RcvPrjns.SendName("DG")) - - # First Quarter: CA1 is driven by ECin, not by CA3 recall - # (which is not really active yet anyway) - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = 0 - - dgwtscale = ca3FmDg.WtScale.Rel - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDel - - if train: - ecout.SetType(emer.Target) # clamp a plus phase during testing - else: - ecout.SetType(emer.Compare) # don't clamp - - ecout.UpdateExtFlags() # call this after updating type - - ss.Net.AlphaCycInit(train) - ss.Time.AlphaCycStart() - for qtr in range(4): - for cyc in range(ss.Time.CycPerQtr): - ss.Net.Cycle(ss.Time) - if not train: - ss.LogTstCyc(ss.TstCycLog, ss.Time.Cycle) - ss.Time.CycleInc() - if ss.ViewOn: - if viewUpdate == leabra.Cycle: - if cyc != ss.Time.CycPerQtr - 1: # will be updated by quarter - ss.UpdateView(train) - if viewUpdate == leabra.FastSpike: - if (cyc + 1) % 10 == 0: - ss.UpdateView(train) - if qtr == 1: # Second, Third Quarters: CA1 is driven by CA3 recall - ca1FmECin.WtScale.Abs = 0 - ca1FmCa3.WtScale.Abs = 1 - if train: - ca3FmDg.WtScale.Rel = dgwtscale - else: - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDelTest # testing - - ss.Net.GScaleFmAvgAct() # update computed scaling factors - ss.Net.InitGInc() # scaling params change, so need to recompute all netins - if qtr == 3: # Fourth Quarter: CA1 back to ECin drive only - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = 0 - ss.Net.GScaleFmAvgAct() # update computed scaling factors - ss.Net.InitGInc() # scaling params change, so need to recompute all netins - if train: # clamp ECout from ECin - ecin.UnitValues( - ss.TmpValues, "Act" - ) # note: could use input instead -- not much diff - ecout.ApplyExt1D32(ss.TmpValues) - ss.Net.QuarterFinal(ss.Time) - if qtr + 1 == 3: - ss.MemStats(train) # must come after QuarterFinal - - ss.Time.QuarterInc() - if ss.ViewOn: - if viewUpdate <= leabra.Quarter: - ss.UpdateView(train) - if viewUpdate == leabra.Phase: - if qtr >= 2: - ss.UpdateView(train) - - ca3FmDg.WtScale.Rel = dgwtscale # restore - ca1FmCa3.WtScale.Abs = 1 - - if train: - ss.Net.DWt() - if ss.ViewOn and viewUpdate == leabra.AlphaCycle: - ss.UpdateView(train) - if not train: - if ss.TstCycPlot != 0: - ss.TstCycPlot.GoUpdate() # make sure up-to-date at end - - def ApplyInputs(ss, en): - """ - ApplyInputs applies input patterns from given envirbonment. - It is good practice to have this be a separate method with appropriate - args so that it can be used for various different contexts - (training, testing, etc). - """ - ss.Net.InitExt() - - lays = go.Slice_string(["Input", "ECout"]) - for lnm in lays: - ly = leabra.Layer(ss.Net.LayerByName(lnm)) - pats = en.State(ly.Nm) - if pats != 0: - ly.ApplyExt(pats) - - def TrainTrial(ss): - """ - TrainTrial runs one trial of training using TrainEnv - """ - if ss.NeedsNewRun: - ss.NewRun() - - ss.TrainEnv.Step() - - # Key to query counters FIRST because current state is in NEXT epoch - # if epoch counter has changed - epc = env.CounterCur(ss.TrainEnv, env.Epoch) - chg = env.CounterChg(ss.TrainEnv, env.Epoch) - if chg: - ss.LogTrnEpc(ss.TrnEpcLog) - if ss.ViewOn and ss.TrainUpdate.value > leabra.AlphaCycle: - ss.UpdateView(True) - if ( - ss.TestInterval > 0 and epc % ss.TestInterval == 0 - ): # note: epc is *next* so won't trigger first time - ss.TestAll() - learned = ss.NZeroStop > 0 and ss.NZero >= ss.NZeroStop - if ss.TrainEnv.Table.Table.MetaData["name"] == "TrainAB" and ( - learned or epc == ss.MaxEpcs / 2 - ): - ss.TrainEnv.Table = etable.NewIndexView(ss.TrainAC) - learned = False - if learned or epc >= ss.MaxEpcs: # done with training.. - ss.RunEnd() - if ss.TrainEnv.Run.Incr(): # we are done! - ss.StopNow = True - return - else: - ss.NeedsNewRun = True - return - - ss.ApplyInputs(ss.TrainEnv) - ss.AlphaCyc(True) # train - ss.TrialStats(True) # accumulate - ss.LogTrnTrl(ss.TrnTrlLog) - - def PreTrainTrial(ss): - """ - PreTrainTrial runs one trial of pretraining using TrainEnv - """ - if ss.NeedsNewRun: - ss.NewRun() - - ss.TrainEnv.Step() - - # Key to query counters FIRST because current state is in NEXT epoch - # if epoch counter has changed - epc = env.CounterCur(ss.TrainEnv, env.Epoch) - chg = env.CounterChg(ss.TrainEnv, env.Epoch) - if chg: - ss.LogTrnEpc(ss.TrnEpcLog) - if ss.ViewOn and ss.TrainUpdate.value > leabra.AlphaCycle: - ss.UpdateView(True) - if epc >= ss.PreTrainEpcs: # done with training.. - ss.StopNow = True - return - - ss.ApplyInputs(ss.TrainEnv) - ss.AlphaCyc(True) # train - ss.TrialStats(True) # accumulate - ss.LogTrnTrl(ss.TrnTrlLog) - - def RunEnd(ss): - """ - RunEnd is called at the end of a run -- save weights, record final log, etc here - """ - ss.LogRun(ss.RunLog) - if ss.SaveWts: - fnm = ss.WeightsFileName() - print("Saving Weights to: %s\n" % fnm) - ss.Net.SaveWtsJSON(core.Filename(fnm)) - - def NewRun(ss): - """ - NewRun intializes a new run of the model, using the TrainEnv.Run counter - for the new run value - """ - run = ss.TrainEnv.Run.Cur - ss.TrainEnv.Table = etable.NewIndexView(ss.TrainAB) - ss.TrainEnv.Init(run) - ss.TestEnv.Init(run) - ss.Time.Reset() - ss.Net.InitWts() - ss.LoadPretrainedWts() - ss.InitStats() - ss.TrnTrlLog.SetNumRows(0) - ss.TrnEpcLog.SetNumRows(0) - ss.TstEpcLog.SetNumRows(0) - ss.NeedsNewRun = False - - def LoadPretrainedWts(ss): - if ss.PreTrainWts == "": - return False - ss.Net.OpenWtsJSON(ss.PreTrainWts) - return True - - def InitStats(ss): - """ - InitStats initializes all the statistics, especially important for the - cumulative epoch stats -- called at start of new run - """ - - ss.SumSSE = 0 - ss.SumAvgSSE = 0 - ss.SumCosDiff = 0 - ss.CntErr = 0 - ss.FirstZero = -1 - ss.NZero = 0 - - ss.Mem = 0 - ss.TrgOnWasOffAll = 0 - ss.TrgOnWasOffCmp = 0 - ss.TrgOffWasOn = 0 - ss.TrlSSE = 0 - ss.TrlAvgSSE = 0 - ss.EpcSSE = 0 - ss.EpcAvgSSE = 0 - ss.EpcPctErr = 0 - ss.EpcCosDiff = 0 - - def MemStats(ss, train): - """ - MemStats computes ActM vs. Target on ECout with binary counts - must be called at end of 3rd quarter so that Targ values are - for the entire full pattern as opposed to the plus-phase target - values clamped from ECin activations - """ - ecout = leabra.Layer(ss.Net.LayerByName("ECout")) - ecin = leabra.Layer(ss.Net.LayerByName("ECin")) - nn = ecout.Shape().Len() - trgOnWasOffAll = 0.0 - trgOnWasOffCmp = 0.0 - trgOffWasOn = 0.0 # should have been off - cmpN = 0.0 # completion target - trgOnN = 0.0 - trgOffN = 0.0 - actMi = ecout.UnitVarIndex("ActM") - targi = ecout.UnitVarIndex("Targ") - actQ1i = ecout.UnitVarIndex("ActQ1") - for ni in range(nn): - actm = ecout.UnitVal1D(actMi, ni) - trg = ecout.UnitVal1D(targi, ni) # full pattern target - inact = ecin.UnitVal1D(actQ1i, ni) - if trg < 0.5: # trgOff - trgOffN += 1 - if actm > 0.5: - trgOffWasOn += 1 - else: # trgOn - trgOnN += 1 - if inact < 0.5: # missing in ECin -- completion target - cmpN += 1 - if actm < 0.5: - trgOnWasOffAll += 1 - trgOnWasOffCmp += 1 - else: - if actm < 0.5: - trgOnWasOffAll += 1 - trgOnWasOffAll /= trgOnN - trgOffWasOn /= trgOffN - if train: # no cmp - if trgOnWasOffAll < ss.MemThr and trgOffWasOn < ss.MemThr: - ss.Mem = 1 - else: - ss.Mem = 0 - else: # test - if cmpN > 0: # should be - trgOnWasOffCmp /= cmpN - if trgOnWasOffCmp < ss.MemThr and trgOffWasOn < ss.MemThr: - ss.Mem = 1 - else: - ss.Mem = 0 - ss.TrgOnWasOffAll = trgOnWasOffAll - ss.TrgOnWasOffCmp = trgOnWasOffCmp - ss.TrgOffWasOn = trgOffWasOn - - def TrialStats(ss, accum): - """ - TrialStats computes the trial-level statistics and adds them to the epoch accumulators if - accum is true. Note that we're accumulating stats here on the Sim side so the - core algorithm side remains as simple as possible, and doesn't need to worry about - different time-scales over which stats could be accumulated etc. - You can also aggregate directly from log data, as is done for testing stats - """ - outLay = leabra.Layer(ss.Net.LayerByName("ECout")) - ss.TrlCosDiff = float(outLay.CosDiff.Cos) - ss.TrlSSE = outLay.SSE(0.5) # 0.5 = per-unit tolerance -- right side of .5 - ss.TrlAvgSSE = ss.TrlSSE / len(outLay.Neurons) - if accum: - ss.SumSSE += ss.TrlSSE - ss.SumAvgSSE += ss.TrlAvgSSE - ss.SumCosDiff += ss.TrlCosDiff - if ss.TrlSSE != 0: - ss.CntErr += 1 - return - - def TrainEpoch(ss): - """ - TrainEpoch runs training trials for remainder of this epoch - """ - ss.StopNow = False - curEpc = ss.TrainEnv.Epoch.Cur - while True: - ss.TrainTrial() - if ss.StopNow or ss.TrainEnv.Epoch.Cur != curEpc: - break - ss.Stopped() - - def TrainRun(ss): - """ - TrainRun runs training trials for remainder of run - """ - ss.StopNow = False - curRun = ss.TrainEnv.Run.Cur - while True: - ss.TrainTrial() - if ss.StopNow or ss.TrainEnv.Run.Cur != curRun: - break - ss.Stopped() - - def Train(ss): - """ - Train runs the full training from this point onward - """ - ss.StopNow = False - while True: - ss.TrainTrial() - if ss.StopNow: - break - ss.Stopped() - - def Stop(ss): - """ - Stop tells the sim to stop running - """ - ss.StopNow = True - - def Stopped(ss): - """ - Stopped is called when a run method stops running -- updates the IsRunning flag and toolbar - """ - ss.IsRunning = False - if ss.Win != 0: - vp = ss.Win.WinViewport2D() - if ss.ToolBar != 0: - ss.ToolBar.UpdateActions() - vp.SetNeedsFullRender() - ss.UpdateClassView() - - def SaveWeights(ss, filename): - """ - SaveWeights saves the network weights -- when called with views.CallMethod - it will auto-prompt for filename - """ - ss.Net.SaveWtsJSON(filename) - - def SetDgCa3Off(ss, net, off): - """ - SetDgCa3Off sets the DG and CA3 layers off (or on) - """ - ca3 = leabra.Layer(net.LayerByName("CA3")) - dg = leabra.Layer(net.LayerByName("DG")) - ca3.Off = off - dg.Off = off - - def PreTrain(ss): - """ - PreTrain runs pre-training, saves weights to PreTrainWts - """ - ss.SetDgCa3Off(ss.Net, True) - ss.TrainEnv.Table = etable.NewIndexView(ss.TrainAll) - - ss.StopNow = False - curRun = ss.TrainEnv.Run.Cur - while True: - ss.PreTrainTrial() - if ss.StopNow or ss.TrainEnv.Run.Cur != curRun: - break - ss.PreTrainWts = "tmp_pretrained_wts.wts" - ss.Net.SaveWtsJSON(ss.PreTrainWts) - ss.TrainEnv.Table = etable.NewIndexView(ss.TrainAB) - ss.SetDgCa3Off(ss.Net, False) - ss.Stopped() - - def TestTrial(ss, returnOnChg): - """ - TestTrial runs one trial of testing -- always sequentially presented inputs - """ - ss.TestEnv.Step() - - chg = env.CounterChg(ss.TestEnv, env.Epoch) - if chg: - if ss.ViewOn and ss.TestUpdate.value > leabra.AlphaCycle: - ss.UpdateView(False) - if returnOnChg: - return - - ss.ApplyInputs(ss.TestEnv) - ss.AlphaCyc(False) - ss.TrialStats(False) - ss.LogTstTrl(ss.TstTrlLog) - - def TestItem(ss, idx): - """ - TestItem tests given item which is at given index in test item list - """ - cur = ss.TestEnv.Trial.Cur - ss.TestEnv.Trial.Cur = idx - ss.TestEnv.SetTrialName() - ss.ApplyInputs(ss.TestEnv) - ss.AlphaCyc(False) - ss.TrialStats(False) - ss.TestEnv.Trial.Cur = cur - - def TestAll(ss): - """ - TestAll runs through the full set of testing items - """ - ss.TestNm = "AB" - ss.TestEnv.Table = etable.NewIndexView(ss.TestAB) - ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - while True: - ss.TestTrial(True) - chg = env.CounterChg(ss.TestEnv, env.Epoch) - if chg or ss.StopNow: - break - if not ss.StopNow: - ss.TestNm = "AC" - ss.TestEnv.Table = etable.NewIndexView(ss.TestAC) - ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - while True: - ss.TestTrial(True) - chg = env.CounterChg(ss.TestEnv, env.Epoch) - if chg or ss.StopNow: - break - if not ss.StopNow: - ss.TestNm = "Lure" - ss.TestEnv.Table = etable.NewIndexView(ss.TestLure) - ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - while True: - ss.TestTrial(True) - chg = env.CounterChg(ss.TestEnv, env.Epoch) - if chg or ss.StopNow: - break - - ss.LogTstEpc(ss.TstEpcLog) - - def RunTestAll(ss): - """ - RunTestAll runs through the full set of testing items, has stop running = false at end -- for gui - """ - ss.StopNow = False - ss.TestAll() - ss.Stopped() - - def ParamsName(ss): - """ - ParamsName returns name of current set of parameters - """ - if ss.ParamSet == "": - return "Base" - return ss.ParamSet - - def SetParams(ss, sheet, setMsg): - """ - SetParams sets the params for "Base" and then current ParamSet. - If sheet is empty, then it applies all avail sheets (e.g., Network, Sim) - otherwise just the named sheet - if setMsg = true then we output a message for each param that was set. - """ - if sheet == "": - - ss.Params.ValidateSheets(go.Slice_string(["Network", "Sim", "Hip", "Pat"])) - ss.SetParamsSet("Base", sheet, setMsg) - if ss.ParamSet != "" and ss.ParamSet != "Base": - sps = ss.ParamSet.split() - for ps in sps: - ss.SetParamsSet(ps, sheet, setMsg) - - def SetParamsSet(ss, setNm, sheet, setMsg): - """ - SetParamsSet sets the params for given params.Set name. - If sheet is empty, then it applies all avail sheets (e.g., Network, Sim) - otherwise just the named sheet - if setMsg = true then we output a message for each param that was set. - """ - pset = ss.Params.SetByNameTry(setNm) - if sheet == "" or sheet == "Network": - if "Network" in pset.Sheets: - netp = pset.SheetByNameTry("Network") - ss.Net.ApplyParams(netp, setMsg) - - if sheet == "" or sheet == "Sim": - if "Sim" in pset.Sheets: - simp = pset.SheetByNameTry("Sim") - pyparams.ApplyParams(ss, simp, setMsg) - - if sheet == "" or sheet == "Hip": - if "Hip" in pset.Sheets: - simp = pset.SheetByNameTry("Hip") - pyparams.ApplyParams(ss.Hip, simp, setMsg) - - if sheet == "" or sheet == "Pat": - if "Pat" in pset.Sheets: - simp = pset.SheetByNameTry("Pat") - pyparams.ApplyParams(ss.Pat, simp, setMsg) - - def OpenPat(ss, dt, fname, name, desc): - err = dt.OpenCSV(core.Filename(fname), etable.Tab) - if err != 0: - log.Println(err) - return - dt.SetMetaData("name", name) - dt.SetMetaData("desc", desc) - - def ConfigPats(ss): - hp = ss.Hip - plY = hp.ECPool.Y - plX = hp.ECPool.X - npats = ss.Pat.ListSize - pctAct = hp.ECPctAct - minDiff = ss.Pat.MinDiffPct - nOn = patgen.NFmPct(pctAct, plY * plX) - ctxtflip = patgen.NFmPct(ss.Pat.CtxtFlipPct, nOn) - patgen.AddVocabEmpty(ss.PoolVocab, "empty", npats, plY, plX) - patgen.AddVocabPermutedBinary( - ss.PoolVocab, "A", npats, plY, plX, pctAct, minDiff - ) - patgen.AddVocabPermutedBinary( - ss.PoolVocab, "B", npats, plY, plX, pctAct, minDiff - ) - patgen.AddVocabPermutedBinary( - ss.PoolVocab, "C", npats, plY, plX, pctAct, minDiff - ) - patgen.AddVocabPermutedBinary( - ss.PoolVocab, "lA", npats, plY, plX, pctAct, minDiff - ) - patgen.AddVocabPermutedBinary( - ss.PoolVocab, "lB", npats, plY, plX, pctAct, minDiff - ) - patgen.AddVocabPermutedBinary( - ss.PoolVocab, "ctxt", 3, plY, plX, pctAct, minDiff - ) - - for i in range(12): - lst = int(i / 4) - ctxtNm = "ctxt%d" % (i + 1) - tsr = patgen.AddVocabRepeat(ss.PoolVocab, ctxtNm, npats, "ctxt", lst) - patgen.FlipBitsRows(tsr, ctxtflip, ctxtflip, 1, 0) - # todo: also support drifting - # solution 2: drift based on last trial (will require sequential learning) - # patgen.VocabDrift(ss.PoolVocab, ss.NFlipBits, "ctxt"+str(i+1)) - - ecY = hp.ECSize.Y - ecX = hp.ECSize.X - - patgen.InitPats( - ss.TrainAB, - "TrainAB", - "TrainAB Pats", - "Input", - "ECout", - npats, - ecY, - ecX, - plY, - plX, - ) - patgen.MixPats( - ss.TrainAB, - ss.PoolVocab, - "Input", - go.Slice_string(["A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"]), - ) - patgen.MixPats( - ss.TrainAB, - ss.PoolVocab, - "ECout", - go.Slice_string(["A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"]), - ) - - patgen.InitPats( - ss.TestAB, - "TestAB", - "TestAB Pats", - "Input", - "ECout", - npats, - ecY, - ecX, - plY, - plX, - ) - patgen.MixPats( - ss.TestAB, - ss.PoolVocab, - "Input", - go.Slice_string(["A", "empty", "ctxt1", "ctxt2", "ctxt3", "ctxt4"]), - ) - patgen.MixPats( - ss.TestAB, - ss.PoolVocab, - "ECout", - go.Slice_string(["A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"]), - ) - - patgen.InitPats( - ss.TrainAC, - "TrainAC", - "TrainAC Pats", - "Input", - "ECout", - npats, - ecY, - ecX, - plY, - plX, - ) - patgen.MixPats( - ss.TrainAC, - ss.PoolVocab, - "Input", - go.Slice_string(["A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"]), - ) - patgen.MixPats( - ss.TrainAC, - ss.PoolVocab, - "ECout", - go.Slice_string(["A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"]), - ) - - patgen.InitPats( - ss.TestAC, - "TestAC", - "TestAC Pats", - "Input", - "ECout", - npats, - ecY, - ecX, - plY, - plX, - ) - patgen.MixPats( - ss.TestAC, - ss.PoolVocab, - "Input", - go.Slice_string(["A", "empty", "ctxt5", "ctxt6", "ctxt7", "ctxt8"]), - ) - patgen.MixPats( - ss.TestAC, - ss.PoolVocab, - "ECout", - go.Slice_string(["A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"]), - ) - - patgen.InitPats( - ss.TestLure, - "TestLure", - "TestLure Pats", - "Input", - "ECout", - npats, - ecY, - ecX, - plY, - plX, - ) - patgen.MixPats( - ss.TestLure, - ss.PoolVocab, - "Input", - go.Slice_string(["lA", "empty", "ctxt9", "ctxt10", "ctxt11", "ctxt12"]), - ) # arbitrary ctxt here - patgen.MixPats( - ss.TestLure, - ss.PoolVocab, - "ECout", - go.Slice_string(["lA", "lB", "ctxt9", "ctxt10", "ctxt11", "ctxt12"]), - ) # arbitrary ctxt here - - ss.TrainAll = ss.TrainAB.Clone() - ss.TrainAll.AppendRows(ss.TrainAC) - ss.TrainAll.AppendRows(ss.TestLure) - - def ValuesTsr(ss, name): - """ - ValuesTsr gets value tensor of given name, creating if not yet made - """ - if name in ss.ValuesTsrs: - return ss.ValuesTsrs[name] - tsr = etensor.Float32() - ss.ValuesTsrs[name] = tsr - return tsr - - def RunName(ss): - """ - RunName returns a name for this run that combines Tag and Params -- add this to - any file names that are saved. - """ - if ss.Tag != "": - pnm = ss.ParamsName() - if pnm == "Base": - return ss.Tag - else: - return ss.Tag + "_" + pnm - else: - return ss.ParamsName() - - def RunEpochName(ss, run, epc): - """ - RunEpochName returns a string with the run and epoch numbers with leading zeros, suitable - for using in weights file names. Uses 3, 5 digits for each. - """ - return "%03d_%05d" % (run, epc) - - def WeightsFileName(ss): - """ - WeightsFileName returns default current weights file name - """ - return ( - ss.Net.Nm - + "_" - + ss.RunName() - + "_" - + ss.RunEpochName(ss.TrainEnv.Run.Cur, ss.TrainEnv.Epoch.Cur) - + ".wts" - ) - - def LogFileName(ss, lognm): - """ - LogFileName returns default log file name - """ - return ss.Net.Nm + "_" + ss.RunName() + "_" + lognm + ".tsv" - - def LogTrnTrl(ss, dt): - """ - LogTrnTrl adds data from current trial to the TrnTrlLog table. - log always contains number of testing items - """ - epc = ss.TrainEnv.Epoch.Cur - trl = ss.TrainEnv.Trial.Cur - - row = dt.Rows - if trl == 0: - row = 0 - dt.SetNumRows(row + 1) - - dt.SetCellFloat("Run", row, float(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float(epc)) - dt.SetCellFloat("Trial", row, float(trl)) - dt.SetCellString("TrialName", row, ss.TestEnv.TrialName.Cur) - dt.SetCellFloat("SSE", row, ss.TrlSSE) - dt.SetCellFloat("AvgSSE", row, ss.TrlAvgSSE) - dt.SetCellFloat("CosDiff", row, ss.TrlCosDiff) - - dt.SetCellFloat("Mem", row, ss.Mem) - dt.SetCellFloat("TrgOnWasOff", row, ss.TrgOnWasOffAll) - dt.SetCellFloat("TrgOffWasOn", row, ss.TrgOffWasOn) - - if ss.TrnTrlPlot != 0: - ss.TrnTrlPlot.GoUpdate() - - def ConfigTrnTrlLog(ss, dt): - - dt.SetMetaData("name", "TrnTrlLog") - dt.SetMetaData("desc", "Record of training per input pattern") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", str(LogPrec)) - - nt = ss.TestEnv.Table.Len() - sch = etable.Schema( - [ - etable.Column("Run", etensor.INT64, go.nil, go.nil), - etable.Column("Epoch", etensor.INT64, go.nil, go.nil), - etable.Column("Trial", etensor.INT64, go.nil, go.nil), - etable.Column("TrialName", etensor.STRING, go.nil, go.nil), - etable.Column("SSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("AvgSSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("CosDiff", etensor.FLOAT64, go.nil, go.nil), - etable.Column("Mem", etensor.FLOAT64, go.nil, go.nil), - etable.Column("TrgOnWasOff", etensor.FLOAT64, go.nil, go.nil), - etable.Column("TrgOffWasOn", etensor.FLOAT64, go.nil, go.nil), - ] - ) - dt.SetFromSchema(sch, nt) - - def ConfigTrnTrlPlot(ss, plt, dt): - plt.Params.Title = "Hippocampus Train Trial Plot" - plt.Params.XAxisCol = "Trial" - plt.SetTable(dt) - # order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("Epoch", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("Trial", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("TrialName", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("SSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("AvgSSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("CosDiff", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - - plt.SetColParams("Mem", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("TrgOnWasOff", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("TrgOffWasOn", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1) - - return plt - - def LogTrnEpc(ss, dt): - """ - LogTrnEpc adds data from current epoch to the TrnEpcLog table. - computes epoch averages prior to logging. - - # this is triggered by increment so use previous value - """ - row = dt.Rows - dt.SetNumRows(row + 1) - - epc = ss.TrainEnv.Epoch.Prv - nt = float(ss.TrainEnv.Table.Len()) # number of trials in view - - ss.EpcSSE = ss.SumSSE / nt - ss.SumSSE = 0 - ss.EpcAvgSSE = ss.SumAvgSSE / nt - ss.SumAvgSSE = 0 - ss.EpcPctErr = float(ss.CntErr) / nt - ss.CntErr = 0 - ss.EpcPctCor = 1 - ss.EpcPctErr - ss.EpcCosDiff = ss.SumCosDiff / nt - ss.SumCosDiff = 0 - - trlog = ss.TrnTrlLog - tix = etable.NewIndexView(trlog) - - dt.SetCellFloat("Run", row, float(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float(epc)) - dt.SetCellFloat("SSE", row, ss.EpcSSE) - dt.SetCellFloat("AvgSSE", row, ss.EpcAvgSSE) - dt.SetCellFloat("PctErr", row, ss.EpcPctErr) - dt.SetCellFloat("PctCor", row, ss.EpcPctCor) - dt.SetCellFloat("CosDiff", row, ss.EpcCosDiff) - - mem = agg.Mean(tix, "Mem")[0] - dt.SetCellFloat("Mem", row, mem) - dt.SetCellFloat("TrgOnWasOff", row, agg.Mean(tix, "TrgOnWasOff")[0]) - dt.SetCellFloat("TrgOffWasOn", row, agg.Mean(tix, "TrgOffWasOn")[0]) - - for lnm in ss.LayStatNms: - ly = leabra.Layer(ss.Net.LayerByName(lnm)) - dt.SetCellFloat( - ly.Nm + " ActAvg", row, float(ly.Pools[0].ActAvg.ActPAvgEff) - ) - - # note: essential to use Go version of update when called from another goroutine - if ss.TrnEpcPlot != 0: - ss.TrnEpcPlot.GoUpdate() - if ss.TrnEpcFile != 0: - if not ss.TrnEpcHdrs: - dt.WriteCSVHeaders(ss.TrnEpcFile, etable.Tab) - ss.TrnEpcHdrs = True - dt.WriteCSVRow(ss.TrnEpcFile, row, etable.Tab) - - def ConfigTrnEpcLog(ss, dt): - dt.SetMetaData("name", "TrnEpcLog") - dt.SetMetaData("desc", "Record of performance over epochs of training") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", str(LogPrec)) - - sch = etable.Schema( - [ - etable.Column("Run", etensor.INT64, go.nil, go.nil), - etable.Column("Epoch", etensor.INT64, go.nil, go.nil), - etable.Column("SSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("AvgSSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("PctErr", etensor.FLOAT64, go.nil, go.nil), - etable.Column("PctCor", etensor.FLOAT64, go.nil, go.nil), - etable.Column("CosDiff", etensor.FLOAT64, go.nil, go.nil), - etable.Column("Mem", etensor.FLOAT64, go.nil, go.nil), - etable.Column("TrgOnWasOff", etensor.FLOAT64, go.nil, go.nil), - etable.Column("TrgOffWasOn", etensor.FLOAT64, go.nil, go.nil), - ] - ) - for lnm in ss.LayStatNms: - sch.append(etable.Column(lnm + " ActAvg", etensor.FLOAT64, go.nil, go.nil)) - dt.SetFromSchema(sch, 0) - - def ConfigTrnEpcPlot(ss, plt, dt): - plt.Params.Title = "Hippocampus Epoch Plot" - plt.Params.XAxisCol = "Epoch" - plt.SetTable(dt) - # order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("Epoch", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("SSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("AvgSSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("PctErr", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("PctCor", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("CosDiff", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - - plt.SetColParams( - "Mem", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1 - ) # default plot - plt.SetColParams( - "TrgOnWasOff", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1 - ) # default plot - plt.SetColParams( - "TrgOffWasOn", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1 - ) # default plot - - for lnm in ss.LayStatNms: - plt.SetColParams( - lnm + " ActAvg", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 0.5 - ) - return plt - - def LogTstTrl(ss, dt): - """ - LogTstTrl adds data from current trial to the TstTrlLog table. - # this is triggered by increment so use previous value - log always contains number of testing items - """ - epc = ss.TrainEnv.Epoch.Prv - trl = ss.TestEnv.Trial.Cur - - row = dt.Rows - if ss.TestNm == "AB" and trl == 0: # reset at start - row = 0 - dt.SetNumRows(row + 1) - - dt.SetCellFloat("Run", row, float(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float(epc)) - dt.SetCellString("TestNm", row, ss.TestNm) - dt.SetCellFloat("Trial", row, float(row)) - dt.SetCellString("TrialName", row, ss.TestEnv.TrialName.Cur) - dt.SetCellFloat("SSE", row, ss.TrlSSE) - dt.SetCellFloat("AvgSSE", row, ss.TrlAvgSSE) - dt.SetCellFloat("CosDiff", row, ss.TrlCosDiff) - - dt.SetCellFloat("Mem", row, ss.Mem) - dt.SetCellFloat("TrgOnWasOff", row, ss.TrgOnWasOffCmp) - dt.SetCellFloat("TrgOffWasOn", row, ss.TrgOffWasOn) - - for lnm in ss.LayStatNms: - ly = leabra.Layer(ss.Net.LayerByName(lnm)) - dt.SetCellFloat(ly.Nm + " ActM.Avg", row, float(ly.Pools[0].ActM.Avg)) - - for lnm in ss.LayStatNms: - ly = leabra.Layer(ss.Net.LayerByName(lnm)) - tsr = ss.ValuesTsr(lnm) - ly.UnitValuesTensor(tsr, "Act") - dt.SetCellTensor(lnm + "Act", row, tsr) - - # note: essential to use Go version of update when called from another goroutine - if ss.TstTrlPlot != 0: - ss.TstTrlPlot.GoUpdate() - - def ConfigTstTrlLog(ss, dt): - # inLay := ss.Net.LayerByName("Input").(leabra.LeabraLayer) - # outLay := ss.Net.LayerByName("Output").(leabra.LeabraLayer) - - dt.SetMetaData("name", "TstTrlLog") - dt.SetMetaData("desc", "Record of testing per input pattern") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", str(LogPrec)) - - nt = ss.TestEnv.Table.Len() # number in view - sch = etable.Schema( - [ - etable.Column("Run", etensor.INT64, go.nil, go.nil), - etable.Column("Epoch", etensor.INT64, go.nil, go.nil), - etable.Column("TestNm", etensor.STRING, go.nil, go.nil), - etable.Column("Trial", etensor.INT64, go.nil, go.nil), - etable.Column("TrialName", etensor.STRING, go.nil, go.nil), - etable.Column("SSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("AvgSSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("CosDiff", etensor.FLOAT64, go.nil, go.nil), - etable.Column("Mem", etensor.FLOAT64, go.nil, go.nil), - etable.Column("TrgOnWasOff", etensor.FLOAT64, go.nil, go.nil), - etable.Column("TrgOffWasOn", etensor.FLOAT64, go.nil, go.nil), - ] - ) - for lnm in ss.LayStatNms: - sch.append( - etable.Column(lnm + " ActM.Avg", etensor.FLOAT64, go.nil, go.nil) - ) - for lnm in ss.LayStatNms: - ly = leabra.Layer(ss.Net.LayerByName(lnm)) - sch.append(etable.Column(lnm + "Act", etensor.FLOAT64, ly.Shp.Shp, go.nil)) - - dt.SetFromSchema(sch, nt) - - def ConfigTstTrlPlot(ss, plt, dt): - plt.Params.Title = "Hippocampus Test Trial Plot" - plt.Params.XAxisCol = "TrialName" - plt.Params.Type = eplot.Bar - plt.SetTable(dt) # this sets defaults so set params after - plt.Params.XAxisRot = 45 - # order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("Epoch", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("TestNm", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("Trial", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("TrialName", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("SSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("AvgSSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("CosDiff", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - - plt.SetColParams("Mem", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("TrgOnWasOff", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("TrgOffWasOn", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1) - - for lnm in ss.LayStatNms: - plt.SetColParams( - lnm + " ActM.Avg", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 0.5 - ) - for lnm in ss.LayStatNms: - plt.SetColParams(lnm + " Act", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - - return plt - - def RepsAnalysis(ss): - """ - RepsAnalysis analyzes representations - """ - acts = etable.NewIndexView(ss.TstTrlLog) - for lnm in ss.LayStatNms: - sm = 0 - if not lnm in ss.SimMats: - sm = simat.SimMat() - ss.SimMats[lnm] = sm - else: - sm = ss.SimMats[lnm] - sm.TableColStd(acts, lnm + "Act", "TrialName", True, metric.Correlation) - - def SimMatStat(ss, lnm): - """ - SimMatStat returns within, between for sim mat statistics - """ - sm = ss.SimMats[lnm] - smat = sm.Mat - nitm = smat.Dim(0) - ncat = int(nitm / len(ss.TstNms)) - win_sum = float(0) - win_n = 0 - btn_sum = float(0) - btn_n = 0 - for y in range(nitm): - for x in range(y): - val = smat.FloatValue(go.Slice_int([y, x])) - same = int((y / ncat)) == int((x / ncat)) - if same: - win_sum += val - win_n += 1 - else: - btn_sum += val - btn_n += 1 - if win_n > 0: - win_sum /= float(win_n) - if btn_n > 0: - btn_sum /= float(btn_n) - return win_sum, btn_sum - - def LogTstEpc(ss, dt): - row = dt.Rows - dt.SetNumRows(row + 1) - - ss.RepsAnalysis() - - trl = ss.TstTrlLog - tix = etable.NewIndexView(trl) - epc = ss.TrainEnv.Epoch.Prv - - # if ss.LastEpcTime.IsZero(): - # ss.EpcPerTrlMSec = 0 - # else: - # iv = time.Now().Sub(ss.LastEpcTime) - # nt = ss.TrainAB.Rows * 4 # 1 train and 3 tests - # ss.EpcPerTrlMSec = float(iv) / (float(nt) * float(time.Millisecond)) - # ss.LastEpcTime = time.Now() - - # note: this shows how to use agg methods to compute summary data from another - # data table, instead of incrementing on the Sim - dt.SetCellFloat("Run", row, float(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float(epc)) - dt.SetCellFloat("PerTrlMSec", row, ss.EpcPerTrlMSec) - dt.SetCellFloat("SSE", row, agg.Sum(tix, "SSE")[0]) - dt.SetCellFloat("AvgSSE", row, agg.Mean(tix, "AvgSSE")[0]) - dt.SetCellFloat("PctErr", row, agg.PropIf(tix, "SSE", AggIfGt0)[0]) - dt.SetCellFloat("PctCor", row, agg.PropIf(tix, "SSE", AggIfEq0)[0]) - dt.SetCellFloat("CosDiff", row, agg.Mean(tix, "CosDiff")[0]) - - trix = etable.NewIndexView(trl) - spl = split.GroupBy(trix, go.Slice_string(["TestNm"])) - for ts in ss.TstStatNms: - split.Agg(spl, ts, agg.AggMean) - ss.TstStats = spl.AggsToTable(etable.ColNameOnly) - - for ri in range(ss.TstStats.Rows): - tst = ss.TstStats.CellString("TestNm", ri) - for ts in ss.TstStatNms: - dt.SetCellFloat(tst + " " + ts, row, ss.TstStats.CellFloat(ts, ri)) - - for lnm in ss.LayStatNms: - # win, btn = ss.SimMatStat(lnm) - win = 0 - btn = 0 - for ts in ss.SimMatStats: - if ts == "Within": - dt.SetCellFloat(lnm + " " + ts, row, win) - else: - dt.SetCellFloat(lnm + " " + ts, row, btn) - - # base zero on testing performance! - curAB = ss.TrainEnv.Table.Table.MetaData["name"] == "TrainAB" - mem = float() - if curAB: - mem = dt.CellFloat("AB Mem", row) - else: - mem = dt.CellFloat("AC Mem", row) - if ss.FirstZero < 0 and mem == 1: - ss.FirstZero = epc - if mem == 1: - ss.NZero += 1 - else: - ss.NZero = 0 - - # note: essential to use Go version of update when called from another goroutine - if ss.TstEpcPlot != 0: - ss.TstEpcPlot.GoUpdate() - if ss.TstEpcFile != 0: - if not ss.TstEpcHdrs: - dt.WriteCSVHeaders(ss.TstEpcFile, etable.Tab) - ss.TstEpcHdrs = True - dt.WriteCSVRow(ss.TstEpcFile, row, etable.Tab) - - def ConfigTstEpcLog(ss, dt): - dt.SetMetaData("name", "TstEpcLog") - dt.SetMetaData("desc", "Summary stats for testing trials") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", str(LogPrec)) - - sch = etable.Schema( - [ - etable.Column("Run", etensor.INT64, go.nil, go.nil), - etable.Column("Epoch", etensor.INT64, go.nil, go.nil), - etable.Column("PerTrlMSec", etensor.FLOAT64, go.nil, go.nil), - etable.Column("SSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("AvgSSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("PctErr", etensor.FLOAT64, go.nil, go.nil), - etable.Column("PctCor", etensor.FLOAT64, go.nil, go.nil), - etable.Column("CosDiff", etensor.FLOAT64, go.nil, go.nil), - ] - ) - for tn in ss.TstNms: - for ts in ss.TstStatNms: - sch.append( - etable.Column(tn + " " + ts, etensor.FLOAT64, go.nil, go.nil) - ) - for lnm in ss.LayStatNms: - for ts in ss.SimMatStats: - sch.append( - etable.Column(lnm + " " + ts, etensor.FLOAT64, go.nil, go.nil) - ) - dt.SetFromSchema(sch, 0) - - def ConfigTstEpcPlot(ss, plt, dt): - plt.Params.Title = "Hippocampus Testing Epoch Plot" - plt.Params.XAxisCol = "Epoch" - plt.SetTable(dt) # this sets defaults so set params after - # order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("Epoch", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("PerTrlMSec", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("SSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("AvgSSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("PctErr", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("PctCor", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("CosDiff", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - - for tn in ss.TstNms: - for ts in ss.TstStatNms: - if ts == "Mem": - plt.SetColParams( - tn + " " + ts, eplot.On, eplot.FixMin, 0, eplot.FixMax, 1 - ) - else: - plt.SetColParams( - tn + " " + ts, eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1 - ) - for lnm in ss.LayStatNms: - for ts in ss.SimMatStats: - plt.SetColParams( - lnm + " " + ts, eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 1 - ) - return plt - - def LogTstCyc(ss, dt, cyc): - """ - LogTstCyc adds data from current trial to the TstCycLog table. - log just has 100 cycles, is overwritten - """ - if dt.Rows <= cyc: - dt.SetNumRows(cyc + 1) - - dt.SetCellFloat("Cycle", cyc, float(cyc)) - for lnm in ss.LayStatNms: - ly = leabra.Layer(ss.Net.LayerByName(lnm)) - dt.SetCellFloat(ly.Nm + " Ge.Avg", cyc, float(ly.Pools[0].Inhib.Ge.Avg)) - dt.SetCellFloat(ly.Nm + " Act.Avg", cyc, float(ly.Pools[0].Inhib.Act.Avg)) - - if cyc % 10 == 0: # too slow to do every cyc - # note: essential to use Go version of update when called from another goroutine - if ss.TstCycPlot != 0: - ss.TstCycPlot.GoUpdate() - - def ConfigTstCycLog(ss, dt): - dt.SetMetaData("name", "TstCycLog") - dt.SetMetaData("desc", "Record of activity etc over one trial by cycle") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", str(LogPrec)) - - np = 100 # max cycles - sch = etable.Schema([etable.Column("Cycle", etensor.INT64, go.nil, go.nil)]) - for lnm in ss.LayStatNms: - sch.append(etable.Column(lnm + " Ge.Avg", etensor.FLOAT64, go.nil, go.nil)) - sch.append(etable.Column(lnm + " Act.Avg", etensor.FLOAT64, go.nil, go.nil)) - dt.SetFromSchema(sch, np) - - def ConfigTstCycPlot(ss, plt, dt): - plt.Params.Title = "Hippocampus Test Cycle Plot" - plt.Params.XAxisCol = "Cycle" - plt.SetTable(dt) - # order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Cycle", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - for lnm in ss.LayStatNms: - plt.SetColParams( - lnm + " Ge.Avg", eplot.On, eplot.FixMin, 0, eplot.FixMax, 0.5 - ) - plt.SetColParams( - lnm + " Act.Avg", eplot.On, eplot.FixMin, 0, eplot.FixMax, 0.5 - ) - return plt - - def LogRun(ss, dt): - """ - LogRun adds data from current run to the RunLog table. - """ - epclog = ss.TstEpcLog - epcix = etable.NewIndexView(epclog) - if epcix.Len() == 0: - return - - run = ss.TrainEnv.Run.Cur # this is NOT triggered by increment yet -- use Cur - row = dt.Rows - dt.SetNumRows(row + 1) - - # compute mean over last N epochs for run level - nlast = 1 - if nlast > epcix.Len() - 1: - nlast = epcix.Len() - 1 - epcix.Indexes = epcix.Indexes[epcix.Len() - nlast :] - - params = ss.RunName() # includes tag - - fzero = ss.FirstZero - if fzero < 0: - fzero = ss.MaxEpcs - - dt.SetCellFloat("Run", row, float(run)) - dt.SetCellString("Params", row, params) - dt.SetCellFloat("NEpochs", row, float(ss.TstEpcLog.Rows)) - dt.SetCellFloat("FirstZero", row, float(fzero)) - dt.SetCellFloat("SSE", row, agg.Mean(epcix, "SSE")[0]) - dt.SetCellFloat("AvgSSE", row, agg.Mean(epcix, "AvgSSE")[0]) - dt.SetCellFloat("PctErr", row, agg.Mean(epcix, "PctErr")[0]) - dt.SetCellFloat("PctCor", row, agg.Mean(epcix, "PctCor")[0]) - dt.SetCellFloat("CosDiff", row, agg.Mean(epcix, "CosDiff")[0]) - - for tn in ss.TstNms: - for ts in ss.TstStatNms: - nm = tn + " " + ts - dt.SetCellFloat(nm, row, agg.Mean(epcix, nm)[0]) - for lnm in ss.LayStatNms: - for ts in ss.SimMatStats: - nm = lnm + " " + ts - dt.SetCellFloat(nm, row, agg.Mean(epcix, nm)[0]) - - ss.LogRunStats() - - # note: essential to use Go version of update when called from another goroutine - if ss.RunPlot != 0: - ss.RunPlot.GoUpdate() - if ss.RunFile != 0: - if row == 0: - dt.WriteCSVHeaders(ss.RunFile, etable.Tab) - dt.WriteCSVRow(ss.RunFile, row, etable.Tab) - - def ConfigRunLog(ss, dt): - dt.SetMetaData("name", "RunLog") - dt.SetMetaData("desc", "Record of performance at end of training") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", str(LogPrec)) - - sch = etable.Schema( - [ - etable.Column("Run", etensor.INT64, go.nil, go.nil), - etable.Column("Params", etensor.STRING, go.nil, go.nil), - etable.Column("NEpochs", etensor.FLOAT64, go.nil, go.nil), - etable.Column("FirstZero", etensor.FLOAT64, go.nil, go.nil), - etable.Column("SSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("AvgSSE", etensor.FLOAT64, go.nil, go.nil), - etable.Column("PctErr", etensor.FLOAT64, go.nil, go.nil), - etable.Column("PctCor", etensor.FLOAT64, go.nil, go.nil), - etable.Column("CosDiff", etensor.FLOAT64, go.nil, go.nil), - ] - ) - for tn in ss.TstNms: - for ts in ss.TstStatNms: - sch.append( - etable.Column(tn + " " + ts, etensor.FLOAT64, go.nil, go.nil) - ) - for lnm in ss.LayStatNms: - for ts in ss.SimMatStats: - sch.append( - etable.Column(lnm + " " + ts, etensor.FLOAT64, go.nil, go.nil) - ) - dt.SetFromSchema(sch, 0) - - def ConfigRunPlot(ss, plt, dt): - plt.Params.Title = "Hippocampus Run Plot" - plt.Params.XAxisCol = "Run" - plt.SetTable(dt) - # order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("NEpochs", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("FirstZero", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("SSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("AvgSSE", eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 0) - plt.SetColParams("PctErr", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("PctCor", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - plt.SetColParams("CosDiff", eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1) - - for tn in ss.TstNms: - for ts in ss.TstStatNms: - if ts == "Mem": - plt.SetColParams( - tn + " " + ts, eplot.On, eplot.FixMin, 0, eplot.FixMax, 1 - ) # default plot - else: - plt.SetColParams( - tn + " " + ts, eplot.Off, eplot.FixMin, 0, eplot.FixMax, 1 - ) - for lnm in ss.LayStatNms: - for ts in ss.SimMatStats: - plt.SetColParams( - lnm + " " + ts, eplot.Off, eplot.FixMin, 0, eplot.FloatMax, 1 - ) - return plt - - def LogRunStats(ss): - """ - LogRunStats computes RunStats from RunLog data -- can be used for looking at prelim results - """ - dt = ss.RunLog - runix = etable.NewIndexView(dt) - spl = split.GroupBy(runix, go.Slice_string(["Params"])) - for tn in ss.TstNms: - nm = tn + " " + "Mem" - split.Desc(spl, nm) - split.Desc(spl, "FirstZero") - split.Desc(spl, "NEpochs") - for lnm in ss.LayStatNms: - for ts in ss.SimMatStats: - split.Desc(spl, lnm + " " + ts) - ss.RunStats = spl.AggsToTable(etable.AddAggName) - if ss.RunStatsPlot != 0: - ss.ConfigRunStatsPlot(ss.RunStatsPlot, ss.RunStats) - - def ConfigRunStatsPlot(ss, plt, dt): - plt.Params.Title = "Hippocampus Run Stats Plot" - plt.Params.XAxisCol = "Params" - plt.SetTable(dt) - plt.Params.BarWidth = 10 - plt.Params.Type = eplot.Bar - plt.Params.XAxisRot = 45 - - cp = plt.SetColParams("AB Mem:Mean", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1) - cp.ErrCol = "AB Mem:Sem" - cp = plt.SetColParams("AC Mem:Mean", eplot.On, eplot.FixMin, 0, eplot.FixMax, 1) - cp.ErrCol = "AC Mem:Sem" - cp = plt.SetColParams( - "FirstZero:Mean", eplot.On, eplot.FixMin, 0, eplot.FixMax, 30 - ) - cp.ErrCol = "FirstZero:Sem" - cp = plt.SetColParams( - "NEpochs:Mean", eplot.On, eplot.FixMin, 0, eplot.FixMax, 30 - ) - cp.ErrCol = "NEpochs:Sem" - return plt - - def ConfigGUI(ss): - """ - ConfigGUI configures the GoGi gui interface for this simulation, - """ - width = 1600 - height = 1200 - - core.SetAppName("hip_bench") - core.SetAppAbout( - 'This demonstrates a basic Hippocampus model in Leabra. See emergent on GitHub.

    ' - ) - - win = core.NewMainWindow("hip_bench", "Hippocampus AB-AC", width, height) - ss.Win = win - - vp = win.WinViewport2D() - ss.vp = vp - updt = vp.UpdateStart() - - mfr = win.SetMainFrame() - - tbar = core.AddNewToolBar(mfr, "tbar") - tbar.SetStretchMaxWidth() - ss.ToolBar = tbar - - split = core.AddNewSplitView(mfr, "split") - split.Dim = math32.X - split.SetStretchMax() - - cv = ss.NewClassView("sv") - cv.AddFrame(split) - cv.Config() - - tv = core.AddNewTabView(split, "tv") - - nv = netview.NetView() - tv.AddTab(nv, "NetView") - nv.Var = "Act" - nv.SetNet(ss.Net) - ss.NetView = nv - nv.ViewDefaults() - - plt = eplot.Plot2D() - tv.AddTab(plt, "TrnTrlPlot") - ss.TrnTrlPlot = ss.ConfigTrnTrlPlot(plt, ss.TrnTrlLog) - - plt = eplot.Plot2D() - tv.AddTab(plt, "TrnEpcPlot") - ss.TrnEpcPlot = ss.ConfigTrnEpcPlot(plt, ss.TrnEpcLog) - - plt = eplot.Plot2D() - tv.AddTab(plt, "TstTrlPlot") - ss.TstTrlPlot = ss.ConfigTstTrlPlot(plt, ss.TstTrlLog) - - plt = eplot.Plot2D() - tv.AddTab(plt, "TstEpcPlot") - ss.TstEpcPlot = ss.ConfigTstEpcPlot(plt, ss.TstEpcLog) - - plt = eplot.Plot2D() - tv.AddTab(plt, "TstCycPlot") - ss.TstCycPlot = ss.ConfigTstCycPlot(plt, ss.TstCycLog) - - plt = eplot.Plot2D() - tv.AddTab(plt, "RunPlot") - ss.RunPlot = ss.ConfigRunPlot(plt, ss.RunLog) - - split.SetSplitsList(go.Slice_float32([0.2, 0.8])) - recv = win.This() - - tbar.AddAction( - core.ActOpts( - Label="Init", - Icon="update", - Tooltip="Initialize everything including network weights, and start over. Also applies current params.", - UpdateFunc=UpdateFuncNotRunning, - ), - recv, - InitCB, - ) - - tbar.AddAction( - core.ActOpts( - Label="Train", - Icon="run", - Tooltip="Starts the network training, picking up from wherever it may have left off. If not stopped, training will complete the specified number of Runs through the full number of Epochs of training, with testing automatically occuring at the specified interval.", - UpdateFunc=UpdateFuncNotRunning, - ), - recv, - TrainCB, - ) - - tbar.AddAction( - core.ActOpts( - Label="Stop", - Icon="stop", - Tooltip="Interrupts running. Hitting Train again will pick back up where it left off.", - UpdateFunc=UpdateFuncRunning, - ), - recv, - StopCB, - ) - - tbar.AddAction( - core.ActOpts( - Label="Step Trial", - Icon="step-fwd", - Tooltip="Advances one training trial at a time.", - UpdateFunc=UpdateFuncNotRunning, - ), - recv, - StepTrialCB, - ) - - tbar.AddAction( - core.ActOpts( - Label="Step Epoch", - Icon="fast-fwd", - Tooltip="Advances one epoch (complete set of training patterns) at a time.", - UpdateFunc=UpdateFuncNotRunning, - ), - recv, - StepEpochCB, - ) - - tbar.AddAction( - core.ActOpts( - Label="Step Run", - Icon="fast-fwd", - Tooltip="Advances one full training Run at a time.", - UpdateFunc=UpdateFuncNotRunning, - ), - recv, - StepRunCB, - ) - - tbar.AddSeparator("test") - - tbar.AddAction( - core.ActOpts( - Label="Test Trial", - Icon="step-fwd", - Tooltip="Runs the next testing trial.", - UpdateFunc=UpdateFuncNotRunning, - ), - recv, - TestTrialCB, - ) - - tbar.AddAction( - core.ActOpts( - Label="Test Item", - Icon="step-fwd", - Tooltip="Prompts for a specific input pattern name to run, and runs it in testing mode.", - UpdateFunc=UpdateFuncNotRunning, - ), - recv, - TestItemCB, - ) - - tbar.AddAction( - core.ActOpts( - Label="Test All", - Icon="fast-fwd", - Tooltip="Tests all of the testing trials.", - UpdateFunc=UpdateFuncNotRunning, - ), - recv, - TestAllCB, - ) - - tbar.AddSeparator("log") - - # tbar.AddAction(core.ActOpts(Label= "Env", Icon= "gear", Tooltip= "select training input patterns: AB or AC."), win.This(), - # funcrecv, send, sig, data: - # views.CallMethod(ss, "SetEnv", vp)) - - tbar.AddAction( - core.ActOpts( - Label="Reset RunLog", - Icon="reset", - Tooltip="Resets the accumulated log of all Runs, which are tagged with the ParamSet used", - ), - recv, - ResetRunLogCB, - ) - - tbar.AddSeparator("misc") - - tbar.AddAction( - core.ActOpts( - Label="New Seed", - Icon="new", - Tooltip="Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time.", - ), - recv, - NewRndSeedCB, - ) - - tbar.AddAction( - core.ActOpts( - Label="README", - Icon=icons.FileMarkdown, - Tooltip="Opens your browser on the README file that contains instructions for how to run this model.", - ), - recv, - ReadmeCB, - ) - - # main menu - appnm = core.AppName() - mmen = win.MainMenu - mmen.ConfigMenus(go.Slice_string([appnm, "File", "Edit", "Window"])) - - amen = core.Action(win.MainMenu.ChildByName(appnm, 0)) - amen.Menu.AddAppMenu(win) - - emen = core.Action(win.MainMenu.ChildByName("Edit", 1)) - emen.Menu.AddCopyCutPaste(win) - - # note: Command in shortcuts is automatically translated into Control for - # Linux, Windows or Meta for MacOS - # fmen := win.MainMenu.ChildByName("File", 0).(*core.Action) - # fmen.Menu.AddAction(core.ActOpts{Label: "Open", Shortcut: "Command+O"}, - # win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - # FileViewOpenSVG(vp) - # }) - # fmen.Menu.AddSeparator("csep") - # fmen.Menu.AddAction(core.ActOpts{Label: "Close Window", Shortcut: "Command+W"}, - # win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - # win.Close() - # }) - - win.MainMenuUpdated() - vp.UpdateEndNoSig(updt) - win.GoStartEventLoop() - - def TwoFactorRun(ss): - """ - TwoFactorRun runs outer-loop crossed with inner-loop params - """ - tag = ss.Tag - usetag = tag - if usetag != "": - usetag += "_" - for otf in OuterLoopParams: - for inf in InnerLoopParams: - ss.Tag = usetag + otf + "_" + inf - print("running: " + ss.Tag) - rand.Seed(ss.RndSeed) # each run starts at same seed.. - ss.SetParamsSet(otf, "", ss.LogSetParams) - ss.SetParamsSet(inf, "", ss.LogSetParams) - ss.ReConfigNet() # note: this applies Base params to Network - ss.ConfigEnv() - ss.StopNow = False - ss.PreTrain() - ss.NewRun() - ss.Train() - ss.Tag = tag - - -# TheSim is the overall state for this simulation -TheSim = Sim() - - -def usage(): - print( - sys.argv[0] - + " --params= --tag= --setparams --wts --epclog=0 --runlog=0 --nogui" - ) - print("\t pyleabra -i %s to run in interactive, gui mode" % sys.argv[0]) - print( - "\t --params= additional params to apply on top of Base (name must be in loaded Params" - ) - print( - "\t --tag= tag is appended to file names to uniquely identify this run" - ) - print("\t --note= user note -- describe the run params etc") - print("\t --runs= number of runs to do") - print("\t --epcs= number of epochs per run") - print("\t --setparams show the parameter values that are set") - print("\t --wts save final trained weights after every run") - print( - "\t --epclog=0/False turn off save training epoch log data to file named by param set, tag" - ) - print( - "\t --runlog=0/False turn off save run log data to file named by param set, tag" - ) - print( - "\t --nogui if no other args needed, this prevents running under the gui" - ) - - -def main(argv): - TheSim.Config() - - # print("n args: %d" % len(argv)) - TheSim.NoGui = len(argv) > 1 - saveEpcLog = True - saveRunLog = True - - try: - opts, args = getopt.getopt( - argv, - "h:", - [ - "params=", - "tag=", - "note=", - "runs=", - "epcs=", - "setparams", - "wts", - "epclog=", - "runlog=", - "nogui", - ], - ) - except getopt.GetoptError: - usage() - sys.exit(2) - for opt, arg in opts: - # print("opt: %s arg: %s" % (opt, arg)) - if opt == "-h": - usage() - sys.exit() - elif opt == "--tag": - TheSim.Tag = arg - elif opt == "--runs": - TheSim.MaxRuns = int(arg) - print("Running %d runs" % TheSim.MaxRuns) - elif opt == "--epcs": - TheSim.MaxEpcs = int(arg) - print("Running %d epochs" % TheSim.MaxEpcs) - elif opt == "--setparams": - TheSim.LogSetParams = True - elif opt == "--wts": - TheSim.SaveWts = True - print("Saving final weights per run") - elif opt == "--epclog": - if arg.lower() == "false" or arg == "0": - saveEpcLog = False - elif opt == "--runlog": - if arg.lower() == "false" or arg == "0": - saveRunLog = False - elif opt == "--nogui": - TheSim.NoGui = True - - TheSim.Init() - - if TheSim.NoGui: - if saveEpcLog: - fnm = TheSim.LogFileName("epc") - print("Saving test epoch log to: %s" % fnm) - TheSim.TstEpcFile = efile.Create(fnm) - - if saveRunLog: - fnm = TheSim.LogFileName("run") - print("Saving run log to: %s" % fnm) - TheSim.RunFile = efile.Create(fnm) - - # TheSim.Train() - TheSim.TwoFactorRun() - fnm = TheSim.LogFileName("runs") - TheSim.RunStats.SaveCSV(fnm, etable.Tab, etable.Headers) - - else: - TheSim.ConfigGUI() - print( - "Note: run pyleabra -i hip_bench.py to run in interactive mode, or just pyleabra, then 'import ra25'" - ) - print("for non-gui background running, here are the args:") - usage() - import code - - code.interact(local=locals()) - - -main(sys.argv[1:]) diff --git a/examples/hip_bench/orig_learning.png b/examples/hip_bench/orig_learning.png deleted file mode 100644 index 7f037cee9fca3a2d61323b357e35c458d13d484b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73360 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 NF?EjBCDF=V{|`WQ;%)!{ diff --git a/examples/hip_bench/orig_memory.png b/examples/hip_bench/orig_memory.png deleted file mode 100644 index f968cc826a00103702b6ae1addcc2aefd59b7dd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72489 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 >F?T4C0V9rnsIuHJtEg$`nuH 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 diff --git a/examples/hip_bench/orig_params.go b/examples/hip_bench/orig_params.go deleted file mode 100644 index 2eb8609..0000000 --- a/examples/hip_bench/orig_params.go +++ /dev/null @@ -1,257 +0,0 @@ -// Copyright (c) 2020, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build not - -package main - -import "github.com/emer/emergent/v2/params" - -// OrigParamSets is the original hip model params, prior to optimization in 2/2020 -var OrigParamSets = params.Sets{ - {Name: "Base", Desc: "these are the best params", Sheets: params.Sheets{ - "Network": ¶ms.Sheet{ - {Sel: "Path", Desc: "keeping default params for generic paths", - Params: params.Params{ - "Path.Learn.Momentum.On": "true", - "Path.Learn.Norm.On": "true", - "Path.Learn.WtBal.On": "false", - }}, - {Sel: ".Back", Desc: "top-down back-pathways MUST have lower relative weight scale, otherwise network hallucinates", - Params: params.Params{ - "Path.WtScale.Rel": "0.3", - }}, - {Sel: ".EcCa1Path", Desc: "encoder pathways -- no norm, moment", - Params: params.Params{ - "Path.Learn.Lrate": "0.04", - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", // counteracting hogging - //"Path.Learn.XCal.SetLLrn": "true", // bcm now avail, comment out = default LLrn - //"Path.Learn.XCal.LLrn": "0", // 0 = turn off BCM, must with SetLLrn = true - }}, - {Sel: ".HippoCHL", Desc: "hippo CHL pathways -- no norm, moment, but YES wtbal = sig better", - Params: params.Params{ - "Path.CHL.Hebb": "0.05", - "Path.Learn.Lrate": "0.2", // note: 0.2 can sometimes take a really long time to learn - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: "#CA1ToECout", Desc: "extra strong from CA1 to ECout", - Params: params.Params{ - "Path.WtScale.Abs": "4.0", - }}, - {Sel: "#InputToECin", Desc: "one-to-one input to EC", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.8", - "Path.WtInit.Var": "0.0", - }}, - {Sel: "#ECoutToECin", Desc: "one-to-one out to in", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "0.5", - }}, - {Sel: "#DGToCA3", Desc: "Mossy fibers: strong, non-learning", - Params: params.Params{ - "Path.CHL.Hebb": "0.001", - "Path.CHL.SAvgCor": "1", - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "8", - }}, - {Sel: "#CA3ToCA3", Desc: "CA3 recurrent cons", - Params: params.Params{ - "Path.CHL.Hebb": "0.01", - "Path.CHL.SAvgCor": "1", - "Path.WtScale.Rel": "2", - }}, - {Sel: "#CA3ToCA1", Desc: "Schaffer collaterals -- slower, less hebb", - Params: params.Params{ - "Path.CHL.Hebb": "0.005", - "Path.CHL.SAvgCor": "0.4", - "Path.Learn.Lrate": "0.1", - }}, - {Sel: ".EC", Desc: "all EC layers: only pools, no layer-level", - Params: params.Params{ - "Layer.Act.Gbar.L": "0.1", - "Layer.Inhib.ActAvg.Init": "0.2", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.0", - "Layer.Inhib.Pool.On": "true", - }}, - {Sel: "#DG", Desc: "very sparse = high inhibition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.01", - "Layer.Inhib.Layer.Gi": "3.6", // 3.8 > 3.6 > 4.0 (too far -- tanks); - }}, - {Sel: "#CA3", Desc: "sparse = high inhibition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.02", - "Layer.Inhib.Layer.Gi": "2.8", // 2.8 = 3.0 really -- some better, some worse - "Layer.Learn.AvgL.Gain": "2.5", // stick with 2.5 - }}, - {Sel: "#CA1", Desc: "CA1 only Pools", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.1", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.On": "true", - "Layer.Inhib.Pool.Gi": "2.2", // 2.4 > 2.2 > 2.6 > 2.8 -- 2.4 better *for small net* but not for larger!; - "Layer.Learn.AvgL.Gain": "2.5", // 2.5 > 2 > 3 - }}, - }, - // NOTE: it is essential not to put Pat / Hip params here, as we have to use Base - // to initialize the network every time, even if it is a different size.. - }}, - {Name: "List010", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "10", - }}, - }, - }}, - {Name: "List020", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "20", - }}, - }, - }}, - {Name: "List030", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "30", - }}, - }, - }}, - {Name: "List040", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "40", - }}, - }, - }}, - {Name: "List050", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "50", - }}, - }, - }}, - {Name: "List060", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "60", - }}, - }, - }}, - {Name: "List070", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "70", - }}, - }, - }}, - {Name: "List080", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "80", - }}, - }, - }}, - {Name: "List090", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "90", - }}, - }, - }}, - {Name: "List100", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "100", - }}, - }, - }}, - {Name: "List120", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "120", - }}, - }, - }}, - {Name: "List160", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "160", - }}, - }, - }}, - {Name: "List200", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "200", - }}, - }, - }}, - {Name: "SmallHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "10", - "HipParams.CA1Pool.X": "10", - "HipParams.CA3Size.Y": "20", - "HipParams.CA3Size.X": "20", - "HipParams.DGRatio": "2.236", // 1.5 before, sqrt(5) aligns with Ketz et al. 2013 - }}, - }, - }}, - {Name: "MedHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "15", - "HipParams.CA1Pool.X": "15", - "HipParams.CA3Size.Y": "30", - "HipParams.CA3Size.X": "30", - "HipParams.DGRatio": "2.236", // 1.5 before - }}, - }, - }}, - {Name: "BigHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "20", - "HipParams.CA1Pool.X": "20", - "HipParams.CA3Size.Y": "40", - "HipParams.CA3Size.X": "40", - "HipParams.DGRatio": "2.236", // 1.5 before - }}, - }, - }}, -} diff --git a/examples/hip_bench/params.go b/examples/hip_bench/params.go deleted file mode 100644 index 53c3d52..0000000 --- a/examples/hip_bench/params.go +++ /dev/null @@ -1,148 +0,0 @@ -// File generated by params.SaveGoCode - -//go:build not - -package main - -import "github.com/emer/emergent/v2/params" - -var SavedParamsSets = params.Sets{ - {Name: "Base", Desc: "these are the best params", Sheets: params.Sheets{ - "Network": ¶ms.Sheet{ - {Sel: "Path", Desc: "keeping default params for generic paths", - Params: params.Params{ - "Path.Learn.Momentum.On": "true", - "Path.Learn.Norm.On": "true", - "Path.Learn.WtBal.On": "false", - }}, - {Sel: ".EcCa1Path", Desc: "encoder pathways -- no norm, moment", - Params: params.Params{ - "Path.Learn.Lrate": "0.04", - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "false", - }}, - {Sel: ".HippoCHL", Desc: "hippo CHL pathways -- no norm, moment, but YES wtbal = sig better", - Params: params.Params{ - "Path.CHL.Hebb": "0.05", - "Path.Learn.Lrate": "0.4", - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: "#CA1ToECout", Desc: "extra strong from CA1 to ECout", - Params: params.Params{ - "Path.WtScale.Abs": "4.0", - }}, - {Sel: "#InputToECin", Desc: "one-to-one input to EC", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.8", - "Path.WtInit.Var": "0.0", - }}, - {Sel: "#ECoutToECin", Desc: "one-to-one out to in", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "0.5", - }}, - {Sel: "#DGToCA3", Desc: "Mossy fibers: strong, non-learning", - Params: params.Params{ - "Path.CHL.Hebb": "0.001", - "Path.CHL.SAvgCor": "1", - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "8", - }}, - {Sel: "#CA3ToCA3", Desc: "CA3 recurrent cons", - Params: params.Params{ - "Path.CHL.Hebb": "0.01", - "Path.CHL.SAvgCor": "1", - "Path.WtScale.Rel": "2", - }}, - {Sel: "#CA3ToCA1", Desc: "Schaffer collaterals -- slower, less hebb", - Params: params.Params{ - "Path.CHL.Hebb": "0.005", - "Path.CHL.SAvgCor": "0.4", - "Path.Learn.Lrate": "0.1", - }}, - {Sel: ".EC", Desc: "all EC layers: only pools, no layer-level", - Params: params.Params{ - "Layer.Act.Gbar.L": ".1", - "Layer.Inhib.ActAvg.Init": "0.2", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.0", - "Layer.Inhib.Pool.On": "true", - }}, - {Sel: "#DG", Desc: "very sparse = high inibhition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.01", - "Layer.Inhib.Layer.Gi": "3.6", - }}, - {Sel: "#CA3", Desc: "sparse = high inibhition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.02", - "Layer.Inhib.Layer.Gi": "2.8", - }}, - {Sel: "#CA1", Desc: "CA1 only Pools", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.1", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.2", - "Layer.Inhib.Pool.On": "true", - }}, - }, - }}, - {Name: "NoCHL", Desc: "no learning in CHL main hip pathways -- for debugging auto-encoder", Sheets: params.Sheets{ - "Network": ¶ms.Sheet{ - {Sel: ".HippoCHL", Desc: "no learning", - Params: params.Params{ - "Path.Learn.Lrate": "0", - }}, - }, - "Sim": ¶ms.Sheet{}, - }}, - {Name: "CHLWtBal", Desc: "CHL uses weight balance -- much better -- now in base", Sheets: params.Sheets{ - "Network": ¶ms.Sheet{ - {Sel: ".HippoCHL", Desc: "wtbal on", - Params: params.Params{ - "Path.Learn.WtBal.On": "true", - }}, - }, - "Sim": ¶ms.Sheet{}, - }}, - {Name: "EncWtBal", Desc: "encoder uses weight balance -- worse", Sheets: params.Sheets{ - "Network": ¶ms.Sheet{ - {Sel: ".EcCa1Path", Desc: "wtbal on", - Params: params.Params{ - "Path.Learn.WtBal.On": "true", - }}, - }, - "Sim": ¶ms.Sheet{}, - }}, - {Name: "EncMom", Desc: "encoder uses momentum -- worse", Sheets: params.Sheets{ - "Network": ¶ms.Sheet{ - {Sel: ".EcCa1Path", Desc: "moment on", - Params: params.Params{ - "Path.Learn.Momentum.On": "true", - "Path.Learn.Norm.On": "true", - }}, - }, - "Sim": ¶ms.Sheet{}, - }}, - {Name: "AllWtBal", Desc: "All use weight balance", Sheets: params.Sheets{ - "Network": ¶ms.Sheet{ - {Sel: ".HippoCHL", Desc: "wtbal on", - Params: params.Params{ - "Path.Learn.WtBal.On": "true", - }}, - {Sel: ".EcCa1Path", Desc: "wtbal on", - Params: params.Params{ - "Path.Learn.WtBal.On": "true", - }}, - }, - "Sim": ¶ms.Sheet{}, - }}, -} diff --git a/examples/hip_bench/testing_effect/def_params.go b/examples/hip_bench/testing_effect/def_params.go deleted file mode 100644 index a7434f1..0000000 --- a/examples/hip_bench/testing_effect/def_params.go +++ /dev/null @@ -1,326 +0,0 @@ -// Copyright (c) 2020, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build not - -package main - -import "github.com/emer/emergent/v2/params" - -// ParamSets is the default set of parameters -- Base is always applied, and others can be optionally -// selected to apply on top of that -var ParamSets = params.Sets{ - {Name: "Base", Desc: "these are the best params", Sheets: params.Sheets{ - "Network": ¶ms.Sheet{ - {Sel: "Path", Desc: "keeping default params for generic paths", - Params: params.Params{ - "Path.Learn.Momentum.On": "true", - "Path.Learn.Norm.On": "true", - "Path.Learn.WtBal.On": "false", - }}, - {Sel: ".Back", Desc: "top-down back-pathways MUST have lower relative weight scale, otherwise network hallucinates", - Params: params.Params{ - "Path.WtScale.Rel": "0.3", - }}, - {Sel: ".EcCa1Path", Desc: "encoder pathways -- no norm, moment", - Params: params.Params{ - "Path.Learn.Lrate": "0.04", - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", // counteracting hogging - //"Path.Learn.XCal.SetLLrn": "true", // bcm now avail, comment out = default LLrn - //"Path.Learn.XCal.LLrn": "0", // 0 = turn off BCM, must with SetLLrn = true - }}, - {Sel: ".HippoCHL", Desc: "hippo CHL pathways -- no norm, moment, but YES wtbal = sig better", - Params: params.Params{ - "Path.CHL.Hebb": "0.01", // .01 > .05? > .1? - "Path.Learn.Lrate": "0.2", // .2 probably better? .4 was prev default - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: ".PPath", Desc: "performant path, new Dg error-driven EcCa1Path paths", - Params: params.Params{ - "Path.Learn.Lrate": "0.15", // err driven: .15 > .2 > .25 > .1 - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - //"Path.Learn.XCal.SetLLrn": "true", // bcm now avail, comment out = default LLrn - //"Path.Learn.XCal.LLrn": "0", // 0 = turn off BCM, must with SetLLrn = true - }}, - {Sel: "#CA1ToECout", Desc: "extra strong from CA1 to ECout", - Params: params.Params{ - "Path.WtScale.Abs": "4.0", // 4 > 6 > 2 (fails) - }}, - {Sel: "#InputToECin", Desc: "one-to-one input to EC", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.8", - "Path.WtInit.Var": "0.0", - }}, - {Sel: "#ECoutToECin", Desc: "one-to-one out to in", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "0.5", // .5 = .3? > .8 (fails); zycyc test this - }}, - {Sel: "#DGToCA3", Desc: "Mossy fibers: strong, non-learning", - Params: params.Params{ - "Path.Learn.Learn": "false", // learning here definitely does NOT work! - "Path.WtInit.Mean": "0.9", - "Path.WtInit.Var": "0.01", - "Path.WtScale.Rel": "4", // err del 4: 4 > 6 > 8 - //"Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - }}, - //{Sel: "#ECinToCA3", Desc: "ECin Perforant Path", - // Params: params.Params{ - // "Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - // }}, - {Sel: "#CA3ToCA3", Desc: "CA3 recurrent cons: rel=2 still the best", - Params: params.Params{ - "Path.WtScale.Rel": "2", // 2 > 1 > .5 = .1 - "Path.Learn.Lrate": "0.1", // .1 > .08 (close) > .15 > .2 > .04; - //"Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - }}, - {Sel: "#ECinToDG", Desc: "DG learning is surprisingly critical: maxed out fast, hebbian works best", - Params: params.Params{ - "Path.Learn.Learn": "true", // absolutely essential to have on! learning slow if off. - "Path.CHL.Hebb": "0.2", // .2 seems good - "Path.CHL.SAvgCor": "0.1", // 0.01 = 0.05 = .1 > .2 > .3 > .4 (listlize 20-100) - "Path.CHL.MinusQ1": "true", // dg self err slightly better - "Path.Learn.Lrate": "0.05", // .05 > .1 > .2 > .4; .01 less interference more learning time - key tradeoff param, .05 best for list20-100 - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - }}, - {Sel: "#CA3ToCA1", Desc: "Schaffer collaterals -- slower, less hebb", - Params: params.Params{ - "Path.CHL.Hebb": "0.01", // .01 > .005 > .02 > .002 > .001 > .05 (crazy) - "Path.CHL.SAvgCor": "0.4", - "Path.Learn.Lrate": "0.1", // CHL: .1 =~ .08 > .15 > .2, .05 (sig worse) - "Path.Learn.Momentum.On": "false", - "Path.Learn.Norm.On": "false", - "Path.Learn.WtBal.On": "true", - //"Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - }}, - //{Sel: "#ECinToCA1", Desc: "ECin Perforant Path", - // Params: params.Params{ - // "Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - // }}, - //{Sel: "#ECoutToCA1", Desc: "ECout Perforant Path", - // Params: params.Params{ - // "Path.WtScale.Abs": "1.5", // zycyc, test if abs activation was not enough - // }}, - {Sel: ".EC", Desc: "all EC layers: only pools, no layer-level", - Params: params.Params{ - "Layer.Act.Gbar.L": "0.1", - "Layer.Inhib.ActAvg.Init": "0.2", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.Gi": "2.0", - "Layer.Inhib.Pool.On": "true", - }}, - {Sel: "#DG", Desc: "very sparse = high inhibition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.01", - "Layer.Inhib.Layer.Gi": "3.8", // 3.8 > 3.6 > 4.0 (too far -- tanks) - }}, - {Sel: "#CA3", Desc: "sparse = high inhibition", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.02", - "Layer.Inhib.Layer.Gi": "2.8", // 2.8 = 3.0 really -- some better, some worse - "Layer.Learn.AvgL.Gain": "2.5", // stick with 2.5 - }}, - {Sel: "#CA1", Desc: "CA1 only Pools", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.1", - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.On": "true", - "Layer.Inhib.Pool.Gi": "2.4", // 2.4 > 2.2 > 2.6 > 2.8 -- 2.4 better *for small net* but not for larger! - "Layer.Learn.AvgL.Gain": "2.5", // 2.5 > 2 > 3 - //"Layer.Inhib.ActAvg.UseFirst": "false", // first activity is too low, throws off scaling, from Randy, zycyc: do we need this? - }}, - }, - // NOTE: it is essential not to put Pat / Hip params here, as we have to use Base - // to initialize the network every time, even if it is a different size.. - }}, - {Name: "List010", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "10", - }}, - }, - }}, - {Name: "List020", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "20", - }}, - }, - }}, - {Name: "List030", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "30", - }}, - }, - }}, - {Name: "List040", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "40", - }}, - }, - }}, - {Name: "List050", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "50", - }}, - }, - }}, - {Name: "List060", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "60", - }}, - }, - }}, - {Name: "List070", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "70", - }}, - }, - }}, - {Name: "List080", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "80", - }}, - }, - }}, - {Name: "List090", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "90", - }}, - }, - }}, - {Name: "List100", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "100", - }}, - }, - }}, - {Name: "List125", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "125", - }}, - }, - }}, - {Name: "List150", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "150", - }}, - }, - }}, - {Name: "List200", Desc: "list size", Sheets: params.Sheets{ - "Pat": ¶ms.Sheet{ - {Sel: "PatParams", Desc: "pattern params", - Params: params.Params{ - "PatParams.ListSize": "200", - }}, - }, - }}, - {Name: "SmallHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "10", - "HipParams.CA1Pool.X": "10", - "HipParams.CA3Size.Y": "20", - "HipParams.CA3Size.X": "20", - "HipParams.DGRatio": "2.236", // 1.5 before, sqrt(5) aligns with Ketz et al. 2013 - }}, - }, - }}, - {Name: "MedHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "15", - "HipParams.CA1Pool.X": "15", - "HipParams.CA3Size.Y": "30", - "HipParams.CA3Size.X": "30", - "HipParams.DGRatio": "2.236", // 1.5 before - }}, - }, - }}, - {Name: "BigHip", Desc: "hippo size", Sheets: params.Sheets{ - "Hip": ¶ms.Sheet{ - {Sel: "HipParams", Desc: "hip sizes", - Params: params.Params{ - "HipParams.ECPool.Y": "7", - "HipParams.ECPool.X": "7", - "HipParams.CA1Pool.Y": "20", - "HipParams.CA1Pool.X": "20", - "HipParams.CA3Size.Y": "40", - "HipParams.CA3Size.X": "40", - "HipParams.DGRatio": "2.236", // 1.5 before - }}, - }, - }}, - {Name: "EDL", Desc: "EDL or NoEDL in testing effect", Sheets: params.Sheets{ - "TE": ¶ms.Sheet{ - {Sel: "TEParams", Desc: "EDL or NoEDL for testing effect", - Params: params.Params{ - "TEParams.EDL": "true", - }}, - }, - }}, - {Name: "NoEDL", Desc: "EDL or NoEDL in testing effect", Sheets: params.Sheets{ - "TE": ¶ms.Sheet{ - {Sel: "TEParams", Desc: "EDL or NoEDL for testing effect", - Params: params.Params{ - "TEParams.EDL": "false", - }}, - }, - }}, - {Name: "RP", Desc: "Retrieval Practice or Restudy in testing effect", Sheets: params.Sheets{ - "TE": ¶ms.Sheet{ - {Sel: "TEParams", Desc: "Retrieval Practice or Restudy in testing effect", - Params: params.Params{ - "TEParams.IsRP": "true", - }}, - }, - }}, - {Name: "RS", Desc: "Retrieval Practice or Restudy in testing effect", Sheets: params.Sheets{ - "TE": ¶ms.Sheet{ - {Sel: "TEParams", Desc: "Retrieval Practice or Restudy in testing effect", - Params: params.Params{ - "TEParams.IsRP": "false", - }}, - }, - }}, -} diff --git a/examples/hip_bench/testing_effect/hip_bench_te.go b/examples/hip_bench/testing_effect/hip_bench_te.go deleted file mode 100644 index 875b285..0000000 --- a/examples/hip_bench/testing_effect/hip_bench_te.go +++ /dev/null @@ -1,3222 +0,0 @@ -// Copyright (c) 2020, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build not - -// hip_bench runs a hippocampus model for testing parameters and new learning ideas -package main - -import ( - "bytes" - "flag" - "fmt" - "log" - "math/rand" - "os" - "strconv" - "strings" - "time" - - "cogentcore.org/core/icons" - "cogentcore.org/core/math32" - "cogentcore.org/core/math32/vecint" - "github.com/emer/emergent/v2/emer" - "github.com/emer/emergent/v2/env" - "github.com/emer/emergent/v2/etime" - "github.com/emer/emergent/v2/netview" - "github.com/emer/emergent/v2/params" - "github.com/emer/emergent/v2/patgen" - "github.com/emer/emergent/v2/relpos" - "github.com/emer/etensor/plot" - "github.com/emer/etensor/tensor" - "github.com/emer/etensor/tensor/stats/metric" - "github.com/emer/etensor/tensor/stats/simat" - "github.com/emer/etensor/tensor/stats/split" - "github.com/emer/etensor/tensor/table" - "github.com/emer/leabra/v2/leabra" -) - -func main() { - sim := &Sim{} - sim.New() - sim.ConfigAll() - if sim.Config.GUI { - sim.RunGUI() - } else { - sim.RunNoGUI() - } -} - -// LogPrec is precision for saving float values in logs -const LogPrec = 4 - -// see def_params.go for the default params, and params.go for user-saved versions -// from the gui. - -// see bottom of file for multi-factor testing params - -// HipParams have the hippocampus size and connectivity parameters -type HipParams struct { - - // size of EC in terms of overall pools (outer dimension) - ECSize vecint.Vector2i - - // size of one EC pool - ECPool vecint.Vector2i - - // size of one CA1 pool - CA1Pool vecint.Vector2i - - // size of CA3 - CA3Size vecint.Vector2i - - // size of DG / CA3 - DGRatio float32 - - // size of DG - DGSize vecint.Vector2i `edit:"-"` - - // percent connectivity into DG - DGPCon float32 - - // percent connectivity into CA3 - CA3PCon float32 - - // percent connectivity into CA3 from DG - MossyPCon float32 - - // percent activation in EC pool - ECPctAct float32 - - // delta in mossy effective strength between minus and plus phase - MossyDel float32 - - // delta in mossy strength for testing (relative to base param) - MossyDelTest float32 -} - -func (hp *HipParams) Update() { - hp.DGSize.X = int(float32(hp.CA3Size.X) * hp.DGRatio) - hp.DGSize.Y = int(float32(hp.CA3Size.Y) * hp.DGRatio) -} - -// PatParams have the pattern parameters -type PatParams struct { - - // number of A-B, A-C patterns each - ListSize int - - // minimum difference between item random patterns, as a proportion (0-1) of total active - MinDiffPct float32 - - // use drifting context representations -- otherwise does bit flips from prototype - DriftCtxt bool - - // proportion (0-1) of active bits to flip for each context pattern, relative to a prototype, for non-drifting - CtxtFlipPct float32 -} - -// TEParams = testing effect params -type TEParams struct { - - // whether RP is EDL - EDL bool - - // whether RP or RS - IsRP bool -} - -// Sim encapsulates the entire simulation model, and we define all the -// functionality as methods on this struct. This structure keeps all relevant -// state information organized and available without having to pass everything around -// as arguments to methods, and provides the core GUI interface (note the view tags -// for the fields which provide hints to how things should be displayed). -type Sim struct { - - // - Net *leabra.Network `new-window:"+" display:"no-inline"` - - // hippocampus sizing parameters - Hip HipParams - - // parameters for the input patterns - Pat PatParams - - // parameters for the testing effect - TE TEParams - - // pool patterns vocabulary - PoolVocab patgen.Vocab `display:"no-inline"` - - // AB training patterns to use - TrainAB *table.Table `display:"no-inline"` - - // AC training patterns to use - TrainRP *table.Table `display:"no-inline"` - - // AC training patterns to use - TrainRestudy *table.Table `display:"no-inline"` - - // AB testing patterns to use - TestAB *table.Table `display:"no-inline"` - - // AB testing patterns to use - TestLong *table.Table `display:"no-inline"` - - // AC testing patterns to use - TestAC *table.Table `display:"no-inline"` - - // all training patterns -- for pretrain - TrainAll *table.Table `display:"no-inline"` - - // training trial-level log data for pattern similarity - TrnCycPatSimLog *table.Table `display:"no-inline"` - - // training trial-level log data - TrnTrlLog *table.Table `display:"no-inline"` - - // training epoch-level log data - TrnEpcLog *table.Table `display:"no-inline"` - - // testing epoch-level log data - TstEpcLog *table.Table `display:"no-inline"` - - // testing trial-level log data - TstTrlLog *table.Table `display:"no-inline"` - - // testing cycle-level log data - TstCycLog *table.Table `display:"no-inline"` - - // summary log of each run - RunLog *table.Table `display:"no-inline"` - - // aggregate stats on all runs - RunStats *table.Table `display:"no-inline"` - - // testing stats - TstStats *table.Table `display:"no-inline"` - - // similarity matrix results for layers - SimMats map[string]*simat.SimMat `display:"no-inline"` - - // full collection of param sets - Params params.Sets `display:"no-inline"` - - // which set of *additional* parameters to use -- always applies Base and optionaly this next if set - ParamSet string - - // extra tag string to add to any file names output from sim (e.g., weights files, log files, params) - Tag string - - // current batch run number, for generating different seed - BatchRun int - - // maximum number of model runs to perform - MaxRuns int - - // maximum number of epochs to run per model run - MaxEpcs int - - // number of epochs to run for pretraining - PreTrainEpcs int - - // if a positive number, training will stop after this many epochs with zero mem errors - NZeroStop int - - // Training environment -- contains everything about iterating over input / output patterns over training - TrainEnv env.FixedTable - - // Testing environment -- manages iterating over testing - TestEnv env.FixedTable - - // leabra timing parameters and state - Time leabra.Context - - // whether to update the network view while running - ViewOn bool - - // at what time scale to update the display during training? Anything longer than Epoch updates at Epoch in this model - TrainUpdate etime.Times - - // at what time scale to update the display during testing? Anything longer than Epoch updates at Epoch in this model - TestUpdate etime.Times - - // how often to run through all the test patterns, in terms of training epochs -- can use 0 or -1 for no testing - TestInterval int - - // threshold to use for memory test -- if error proportion is below this number, it is scored as a correct trial - MemThr float64 - - // slice of slice for logging DG patterns every trial - dgCycPats [100][]float32 - - // slice of slice for logging CA3 patterns every trial - ca3CycPats [100][]float32 - - // slice of slice for logging CA1 patterns every trial - ca1CycPats [100][]float32 - - // what set of patterns are we currently testing - TestNm string `edit:"-"` - - // whether current trial's ECout met memory criterion - Mem float64 `edit:"-"` - - // current trial's proportion of bits where target = on but ECout was off ( < 0.5), for all bits - TrgOnWasOffAll float64 `edit:"-"` - - // current trial's proportion of bits where target = on but ECout was off ( < 0.5), for only completion bits that were not active in ECin - TrgOnWasOffCmp float64 `edit:"-"` - - // current trial's proportion of bits where target = off but ECout was on ( > 0.5) - TrgOffWasOn float64 `edit:"-"` - - // current trial's sum squared error - TrlSSE float64 `edit:"-"` - - // current trial's average sum squared error - TrlAvgSSE float64 `edit:"-"` - - // current trial's cosine difference - TrlCosDiff float64 `edit:"-"` - - // last epoch's total sum squared error - EpcSSE float64 `edit:"-"` - - // last epoch's average sum squared error (average over trials, and over units within layer) - EpcAvgSSE float64 `edit:"-"` - - // last epoch's percent of trials that had SSE > 0 (subject to .5 unit-wise tolerance) - EpcPctErr float64 `edit:"-"` - - // last epoch's percent of trials that had SSE == 0 (subject to .5 unit-wise tolerance) - EpcPctCor float64 `edit:"-"` - - // last epoch's average cosine difference for output layer (a normalized error measure, maximum of 1 when the minus phase exactly matches the plus) - EpcCosDiff float64 `edit:"-"` - - // how long did the epoch take per trial in wall-clock milliseconds - EpcPerTrlMSec float64 `edit:"-"` - - // epoch at when Mem err first went to zero - FirstZero int `edit:"-"` - - // number of epochs in a row with zero Mem err - NZero int `edit:"-"` - - // sum to increment as we go through epoch - SumSSE float64 `display:"-" edit:"-"` - - // sum to increment as we go through epoch - SumAvgSSE float64 `display:"-" edit:"-"` - - // sum to increment as we go through epoch - SumCosDiff float64 `display:"-" edit:"-"` - - // sum of errs to increment as we go through epoch - CntErr int `display:"-" edit:"-"` - - // main GUI window - Win *core.Window `display:"-"` - - // the network viewer - NetView *netview.NetView `display:"-"` - - // the master toolbar - ToolBar *core.ToolBar `display:"-"` - - // the training trial plot - TrnTrlPlot *plot.Plot2D `display:"-"` - - // the training epoch plot - TrnEpcPlot *plot.Plot2D `display:"-"` - - // the testing epoch plot - TstEpcPlot *plot.Plot2D `display:"-"` - - // the test-trial plot - TstTrlPlot *plot.Plot2D `display:"-"` - - // the test-cycle plot - TstCycPlot *plot.Plot2D `display:"-"` - - // the run plot - RunPlot *plot.Plot2D `display:"-"` - - // the run stats plot - ABmem - RunStatsPlot1 *plot.Plot2D `display:"-"` - - // the run stats plot - learning time - RunStatsPlot2 *plot.Plot2D `display:"-"` - - // log file - TrnCycPatSimFile *os.File `display:"-"` - - // headers written - TrnCycPatSimHdrs bool `display:"-"` - - // log file - TstEpcFile *os.File `display:"-"` - - // log file - TstTrialFile *os.File `display:"-"` - - // headers written - TstEpcHdrs bool `display:"-"` - - // log file - RunFile *os.File `display:"-"` - - // headers written - RunHdrs bool `display:"-"` - - // temp slice for holding values -- prevent mem allocs - TmpValues []float32 `display:"-"` - - // names of layers to collect more detailed stats on (avg act, etc) - LayStatNms []string `display:"-"` - - // names of test tables - TstNms []string `display:"-"` - - // names of sim mat stats - SimMatStats []string `display:"-"` - - // names of test stats - TstStatNms []string `display:"-"` - - // for holding layer values - ValuesTsrs map[string]*tensor.Float32 `display:"-"` - - // for command-line run only, auto-save final weights after each run - SaveWeights bool `display:"-"` - - // pretrained weights file - PreTrainWts []byte `display:"-"` - - // if true, pretraining is done - PretrainDone bool `display:"-"` - - // if true, runing in no GUI mode - NoGui bool `display:"-"` - - // if true, print message for all params that are set - LogSetParams bool `display:"-"` - - // true if sim is running - IsRunning bool `display:"-"` - - // flag to stop running - StopNow bool `display:"-"` - - // flag to initialize NewRun if last one finished - NeedsNewRun bool `display:"-"` - - // the current random seed - RndSeed int64 `display:"-"` - - // timer for last epoch - LastEpcTime time.Time `display:"-"` -} - -// TheSim is the overall state for this simulation -var TheSim Sim - -// New creates new blank elements and initializes defaults -func (ss *Sim) New() { - ss.Net = &leabra.Network{} - ss.PoolVocab = patgen.Vocab{} - ss.TrainAB = &table.Table{} - ss.TrainRP = &table.Table{} - ss.TrainRestudy = &table.Table{} - ss.TestAB = &table.Table{} - ss.TestAC = &table.Table{} - ss.TrainAll = &table.Table{} - ss.TrnCycPatSimLog = &table.Table{} - ss.TrnTrlLog = &table.Table{} - ss.TrnEpcLog = &table.Table{} - ss.TstEpcLog = &table.Table{} - ss.TstTrlLog = &table.Table{} - ss.TstCycLog = &table.Table{} - ss.RunLog = &table.Table{} - ss.RunStats = &table.Table{} - ss.SimMats = make(map[string]*simat.SimMat) - ss.Params = ParamSets // in def_params -- current best params, zycyc test - //ss.Params = OrigParamSets // original, previous model - //ss.Params = SavedParamsSets // current user-saved gui params - ss.RndSeed = 2 - ss.ViewOn = true - ss.TrainUpdate = leabra.AlphaCycle - ss.TestUpdate = leabra.Cycle - ss.TestInterval = 1 - ss.LogSetParams = false - ss.MemThr = 0.34 - ss.LayStatNms = []string{"ECin", "DG", "CA3", "CA1"} - ss.TstNms = []string{"AB"} - ss.TstStatNms = []string{"Mem", "TrgOnWasOff", "TrgOffWasOn"} - ss.SimMatStats = []string{"Within"} // zycyc bug source - - ss.Defaults() -} -func (te *TEParams) Defaults() { - te.EDL = true - te.IsRP = true -} - -func (pp *PatParams) Defaults() { - pp.ListSize = 100 // 10 is too small to see issues.. - pp.MinDiffPct = 0.5 - pp.CtxtFlipPct = .25 -} - -func (hp *HipParams) Defaults() { - // size - hp.ECSize.Set(2, 3) - hp.ECPool.Set(7, 7) - hp.CA1Pool.Set(15, 15) // using MedHip now - hp.CA3Size.Set(30, 30) // using MedHip now - hp.DGRatio = 2.236 // c.f. Ketz et al., 2013 - - // ratio - hp.DGPCon = 0.25 // .35 is sig worse, .2 learns faster but AB recall is worse - hp.CA3PCon = 0.25 - hp.MossyPCon = 0.02 // .02 > .05 > .01 (for small net) - hp.ECPctAct = 0.2 - - hp.MossyDel = 4 // 4 > 2 -- best is 4 del on 4 rel baseline - hp.MossyDelTest = 3 // for rel = 4: 3 > 2 > 0 > 4 -- 4 is very bad -- need a small amount.. -} - -func (ss *Sim) Defaults() { - ss.TE.Defaults() - ss.Hip.Defaults() - ss.Pat.Defaults() - ss.BatchRun = 0 // for initializing envs if using Gui - ss.Time.CycPerQtr = 25 // note: key param - 25 seems like it is actually fine? - ss.Update() -} - -func (ss *Sim) Update() { - ss.Hip.Update() -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Configs - -// Config configures all the elements using the standard functions -func (ss *Sim) Config() { - ss.ConfigPats() - ss.ConfigEnv() - ss.ConfigNet(ss.Net) - ss.ConfigTrnCycPatSimLog(ss.TrnCycPatSimLog) - ss.ConfigTrnTrlLog(ss.TrnTrlLog) - ss.ConfigTrnEpcLog(ss.TrnEpcLog) - ss.ConfigTstEpcLog(ss.TstEpcLog) - ss.ConfigTstTrlLog(ss.TstTrlLog) - ss.ConfigTstCycLog(ss.TstCycLog) - ss.ConfigRunLog(ss.RunLog) -} - -func (ss *Sim) ConfigEnv() { - if ss.MaxRuns == 0 { // allow user override - ss.MaxRuns = 30 - } - if ss.MaxEpcs == 0 { // allow user override - ss.MaxEpcs = 1 - ss.NZeroStop = 1 - ss.PreTrainEpcs = 5 // seems sufficient? increase? - } - - ss.TrainEnv.Name = "TrainEnv" - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - ss.TrainEnv.Validate() - ss.TrainEnv.Run.Max = ss.MaxRuns // note: we are not setting epoch max -- do that manually - - ss.TestEnv.Name = "TestEnv" - ss.TestEnv.Table = table.NewIndexView(ss.TestAB) - ss.TestEnv.Sequential = true - ss.TestEnv.Validate() - - ss.TrainEnv.Init(ss.BatchRun) - ss.TestEnv.Init(ss.BatchRun) -} - -// SetEnv select which set of patterns to train on: AB or AC -func (ss *Sim) SetEnv(trainRP bool) { - if trainRP { - ss.TrainEnv.Table = table.NewIndexView(ss.TrainRP) - } else { - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - } - ss.TrainEnv.Init(ss.BatchRun) -} - -func (ss *Sim) ConfigNet(net *leabra.Network) { - net.InitName(net, "Hip_bench") - hp := &ss.Hip - in := net.AddLayer4D("Input", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, leabra.InputLayer) - ecin := net.AddLayer4D("ECin", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, leabra.SuperLayer) - ecout := net.AddLayer4D("ECout", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, leabra.TargetLayer) // clamped in plus phase - ca1 := net.AddLayer4D("CA1", hp.ECSize.Y, hp.ECSize.X, hp.CA1Pool.Y, hp.CA1Pool.X, leabra.SuperLayer) - dg := net.AddLayer2D("DG", hp.DGSize.Y, hp.DGSize.X, leabra.SuperLayer) - ca3 := net.AddLayer2D("CA3", hp.CA3Size.Y, hp.CA3Size.X, leabra.SuperLayer) - - ecin.SetClass("EC") - ecout.SetClass("EC") - - ecin.SetRelPos(relpos.Rel{Rel: relpos.Above, Other: "Input", YAlign: relpos.Front, XAlign: relpos.Right, Space: 4}) - ecout.SetRelPos(relpos.Rel{Rel: relpos.RightOf, Other: "ECin", YAlign: relpos.Front, Space: 2}) - dg.SetRelPos(relpos.Rel{Rel: relpos.Above, Other: "ECin", YAlign: relpos.Front, XAlign: relpos.Left, Space: 2}) - ca3.SetRelPos(relpos.Rel{Rel: relpos.Above, Other: "DG", YAlign: relpos.Front, XAlign: relpos.Left, Space: 0}) - ca1.SetRelPos(relpos.Rel{Rel: relpos.RightOf, Other: "CA3", YAlign: relpos.Front, Space: 2}) - - onetoone := paths.NewOneToOne() - pool1to1 := paths.NewPoolOneToOne() - full := paths.NewFull() - - net.ConnectLayers(in, ecin, onetoone, leabra.ForwardPath) - net.ConnectLayers(ecout, ecin, onetoone, BackPath) - - // EC <-> CA1 encoder pathways - pj := net.ConnectLayersPath(ecin, ca1, pool1to1, leabra.ForwardPath, &leabra.EcCa1Path{}) - pj.SetClass("EcCa1Path") - pj = net.ConnectLayersPath(ca1, ecout, pool1to1, leabra.ForwardPath, &leabra.EcCa1Path{}) - pj.SetClass("EcCa1Path") - pj = net.ConnectLayersPath(ecout, ca1, pool1to1, BackPath, &leabra.EcCa1Path{}) - pj.SetClass("EcCa1Path") - - // Perforant pathway - ppathDG := paths.NewUnifRnd() - ppathDG.PCon = hp.DGPCon - ppathCA3 := paths.NewUnifRnd() - ppathCA3.PCon = hp.CA3PCon - - pj = net.ConnectLayersPath(ecin, dg, ppathDG, leabra.ForwardPath, &leabra.CHLPath{}) - pj.SetClass("HippoCHL") - - if true { // toggle for bcm vs. ppath, zycyc: must use false for orig_param, true for def_param - pj = net.ConnectLayersPath(ecin, ca3, ppathCA3, leabra.ForwardPath, &leabra.EcCa1Path{}) - pj.SetClass("PPath") - pj = net.ConnectLayersPath(ca3, ca3, full, emer.Lateral, &leabra.EcCa1Path{}) - pj.SetClass("PPath") - } else { - // so far, this is sig worse, even with error-driven MinusQ1 case (which is better than off) - pj = net.ConnectLayersPath(ecin, ca3, ppathCA3, leabra.ForwardPath, &leabra.CHLPath{}) - pj.SetClass("HippoCHL") - pj = net.ConnectLayersPath(ca3, ca3, full, emer.Lateral, &leabra.CHLPath{}) - pj.SetClass("HippoCHL") - } - - // always use this for now: - if true { - pj = net.ConnectLayersPath(ca3, ca1, full, leabra.ForwardPath, &leabra.CHLPath{}) - pj.SetClass("HippoCHL") - } else { - // note: this requires lrate = 1.0 or maybe 1.2, doesn't work *nearly* as well - pj = net.ConnectLayers(ca3, ca1, full, leabra.ForwardPath) // default con - // pj.SetClass("HippoCHL") - } - - // Mossy fibers - mossy := paths.NewUnifRnd() - mossy.PCon = hp.MossyPCon - pj = net.ConnectLayersPath(dg, ca3, mossy, leabra.ForwardPath, &leabra.CHLPath{}) // no learning - pj.SetClass("HippoCHL") - - // using 4 threads total (rest on 0) - dg.(leabra.LeabraLayer).SetThread(1) - ca3.(leabra.LeabraLayer).SetThread(2) - ca1.(leabra.LeabraLayer).SetThread(3) // this has the most - - // note: if you wanted to change a layer type from e.g., Target to Compare, do this: - // outLay.SetType(emer.Compare) - // that would mean that the output layer doesn't reflect target values in plus phase - // and thus removes error-driven learning -- but stats are still computed. - - net.Defaults() - ss.SetParams("Network", ss.LogSetParams) // only set Network params - err := net.Build() - if err != nil { - log.Println(err) - return - } - net.InitWeights() -} - -func (ss *Sim) ReConfigNet() { - ss.Update() - ss.ConfigPats() - ss.Net = &leabra.Network{} // start over with new network - ss.ConfigNet(ss.Net) - if ss.NetView != nil { - ss.NetView.SetNet(ss.Net) - ss.NetView.Update() // issue #41 closed - } -} - -//////////////////////////////////////////////////////////////////////////////// -// Init, utils - -// Init restarts the run, and initializes everything, including network weights -// and resets the epoch log table -func (ss *Sim) Init() { - rand.Seed(ss.RndSeed) - ss.SetParams("", ss.LogSetParams) // all sheets - ss.ReConfigNet() - ss.ConfigEnv() // re-config env just in case a different set of patterns was - // selected or patterns have been modified etc - ss.StopNow = false - ss.NewRun() - ss.UpdateView(true) -} - -// NewRndSeed gets a new random seed based on current time -- otherwise uses -// the same random seed for every run -func (ss *Sim) NewRndSeed() { - ss.RndSeed = time.Now().UnixNano() -} - -// Counters returns a string of the current counter state -// use tabs to achieve a reasonable formatting overall -// and add a few tabs at the end to allow for expansion.. -func (ss *Sim) Counters(train bool) string { - if train { - return fmt.Sprintf("Run:\t%d\tEpoch:\t%d\tTrial:\t%d\tCycle:\t%d\tName:\t%v\t\t\t", ss.TrainEnv.Run.Cur, ss.TrainEnv.Epoch.Cur, ss.TrainEnv.Trial.Cur, ss.Time.Cycle, ss.TrainEnv.TrialName.Cur) - } else { - return fmt.Sprintf("Run:\t%d\tEpoch:\t%d\tTrial:\t%d\tCycle:\t%d\tName:\t%v\t\t\t", ss.TrainEnv.Run.Cur, ss.TrainEnv.Epoch.Cur, ss.TestEnv.Trial.Cur, ss.Time.Cycle, ss.TestEnv.TrialName.Cur) - } -} - -func (ss *Sim) UpdateView(train bool) { - if ss.NetView != nil && ss.NetView.IsVisible() { - ss.NetView.Record(ss.Counters(train), -1) - // note: essential to use Go version of update when called from another goroutine - ss.NetView.GoUpdate() // note: using counters is significantly slower.. - } -} - -//////////////////////////////////////////////////////////////////////////////// -// Running the Network, starting bottom-up.. - -// AlphaCyc runs one alpha-cycle (100 msec, 4 quarters) of processing. -// External inputs must have already been applied prior to calling, -// using ApplyExt method on relevant layers (see TrainTrial, TestTrial). -// If train is true, then learning DWt or WtFromDWt calls are made. -// Handles netview updating within scope of AlphaCycle -func (ss *Sim) AlphaCyc(train bool) { - // ss.Win.PollEvents() // this can be used instead of running in a separate goroutine - viewUpdate := ss.TrainUpdate - if !train { - viewUpdate = ss.TestUpdate - } - - // update prior weight changes at start, so any DWt values remain visible at end - // you might want to do this less frequently to achieve a mini-batch update - // in which case, move it out to the TrainTrial method where the relevant - // counters are being dealt with. - - dg := ss.Net.LayerByName("DG").(leabra.LeabraLayer).AsLeabra() - ca1 := ss.Net.LayerByName("CA1").(leabra.LeabraLayer).AsLeabra() - ca3 := ss.Net.LayerByName("CA3").(leabra.LeabraLayer).AsLeabra() - input := ss.Net.LayerByName("Input").(leabra.LeabraLayer).AsLeabra() - ecin := ss.Net.LayerByName("ECin").(leabra.LeabraLayer).AsLeabra() - ecout := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ca1FmECin := ca1.SendName("ECin").(leabra.LeabraPath).AsLeabra() - ca1FmCa3 := ca1.SendName("CA3").(leabra.LeabraPath).AsLeabra() - ca3FmDg := ca3.SendName("DG").(leabra.LeabraPath).AsLeabra() - _ = ecin - _ = input - - // First Quarter: CA1 is driven by ECin, not by CA3 recall - // (which is not really active yet anyway) - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = 0 - - dgwtscale := ca3FmDg.WtScale.Rel - - // train same edl, test separates - if train { // zycyc: assuming same day1 learning, all with EDL ?? - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDel - } else { // not important but keep it consistent with RP - if ss.TE.EDL == true { - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDel - } else { - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDelTest - } - } - - if train { - ecout.SetType(leabra.TargetLayer) // clamp a plus phase during testing - } else { - ecout.SetType(emer.Compare) // don't clamp - } - ecout.UpdateExtFlags() // call this after updating type - - ss.Net.AlphaCycInit(true) - ss.Time.AlphaCycStart() - for qtr := 0; qtr < 4; qtr++ { - for cyc := 0; cyc < ss.Time.CycPerQtr; cyc++ { - ss.Net.Cycle(&ss.Time) - if !train { - ss.LogTstCyc(ss.TstCycLog, ss.Time.Cycle) - } else if ss.PretrainDone { // zycyc Pat Sim log - var dgCycPat []float32 - var ca3CycPat []float32 - var ca1CycPat []float32 - dg.UnitValues(&dgCycPat, "Act") - ca3.UnitValues(&ca3CycPat, "Act") - ca1.UnitValues(&ca1CycPat, "Act") - ss.dgCycPats[cyc+qtr*25] = dgCycPat - ss.ca3CycPats[cyc+qtr*25] = ca3CycPat - ss.ca1CycPats[cyc+qtr*25] = ca1CycPat - } - ss.Time.CycleInc() - if ss.ViewOn { - switch viewUpdate { - case leabra.Cycle: - if cyc != ss.Time.CycPerQtr-1 { // will be updated by quarter - ss.UpdateView(train) - } - case leabra.FastSpike: - if (cyc+1)%10 == 0 { - ss.UpdateView(train) - } - } - } - } - switch qtr + 1 { - case 1: // Second, Third Quarters: CA1 is driven by CA3 recall - ca1FmECin.WtScale.Abs = 0 - ca1FmCa3.WtScale.Abs = 1 - if train { - ca3FmDg.WtScale.Rel = dgwtscale - } else { - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDelTest // testing - } - ss.Net.GScaleFromAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins - case 3: // Fourth Quarter: CA1 back to ECin drive only - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = 0 - ss.Net.GScaleFromAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins - if train { // clamp ECout from ECin - ecin.UnitValues(&ss.TmpValues, "Act") // note: could use input instead -- not much diff - ecout.ApplyExt1D32(ss.TmpValues) - } - } - ss.Net.QuarterFinal(&ss.Time) - if qtr+1 == 3 { - ss.MemStats(train) // must come after QuarterFinal - } - ss.Time.QuarterInc() - if ss.ViewOn { - switch { - case viewUpdate <= leabra.Quarter: - ss.UpdateView(train) - case viewUpdate == leabra.Phase: - if qtr >= 2 { - ss.UpdateView(train) - } - } - } - } - - ca3FmDg.WtScale.Rel = dgwtscale // restore - ca1FmCa3.WtScale.Abs = 1 - - if train { - ss.Net.DWt() - if len(os.Args) <= 1 { - ss.NetView.RecordSyns() - } - ss.Net.WtFromDWt() // so testing is based on updated weights - } - if ss.ViewOn && viewUpdate == leabra.AlphaCycle { - ss.UpdateView(train) - } - if !train { - if ss.TstCycPlot != nil { - ss.TstCycPlot.GoUpdate() - } // make sure up-to-date at end - } -} - -func (ss *Sim) AlphaCycRestudy(train bool) { - // ss.Win.PollEvents() // this can be used instead of running in a separate goroutine - viewUpdate := ss.TrainUpdate - if !train { - viewUpdate = ss.TestUpdate - } - // update prior weight changes at start, so any DWt values remain visible at end - // you might want to do this less frequently to achieve a mini-batch update - // in which case, move it out to the TrainTrial method where the relevant - // counters are being dealt with. - if train { - ss.Net.WtFromDWt() - } - dg := ss.Net.LayerByName("DG").(leabra.LeabraLayer).AsLeabra() - ca1 := ss.Net.LayerByName("CA1").(leabra.LeabraLayer).AsLeabra() - ca3 := ss.Net.LayerByName("CA3").(leabra.LeabraLayer).AsLeabra() - input := ss.Net.LayerByName("Input").(leabra.LeabraLayer).AsLeabra() - ecin := ss.Net.LayerByName("ECin").(leabra.LeabraLayer).AsLeabra() - ecout := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ca1FmECin := ca1.SendName("ECin").(leabra.LeabraPath).AsLeabra() - ca1FmCa3 := ca1.SendName("CA3").(leabra.LeabraPath).AsLeabra() - ca3FmDg := ca3.SendName("DG").(leabra.LeabraPath).AsLeabra() - _ = ecin - _ = input - - // First Quarter: CA1 is driven by ECin, not by CA3 recall - // (which is not really active yet anyway) - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = 0 - - dgwtscale := ca3FmDg.WtScale.Rel - - if ss.TE.EDL == true { - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDel - } else { - ca3FmDg.WtScale.Rel = dgwtscale - } - - if train { - ecout.SetType(leabra.TargetLayer) // clamp a plus phase during testing - } else { - ecout.SetType(emer.Compare) // don't clamp - } - ecout.UpdateExtFlags() // call this after updating type - - ss.Net.AlphaCycInit(true) - ss.Time.AlphaCycStart() - for qtr := 0; qtr < 4; qtr++ { - for cyc := 0; cyc < ss.Time.CycPerQtr; cyc++ { - ss.Net.Cycle(&ss.Time) - if !train { - ss.LogTstCyc(ss.TstCycLog, ss.Time.Cycle) - } else if ss.PretrainDone { // zycyc Pat Sim log - var dgCycPat []float32 - var ca3CycPat []float32 - var ca1CycPat []float32 - dg.UnitValues(&dgCycPat, "Act") - ca3.UnitValues(&ca3CycPat, "Act") - ca1.UnitValues(&ca1CycPat, "Act") - ss.dgCycPats[cyc+qtr*25] = dgCycPat - ss.ca3CycPats[cyc+qtr*25] = ca3CycPat - ss.ca1CycPats[cyc+qtr*25] = ca1CycPat - } - ss.Time.CycleInc() - if ss.ViewOn { - switch viewUpdate { - case leabra.Cycle: - if cyc != ss.Time.CycPerQtr-1 { // will be updated by quarter - ss.UpdateView(train) - } - case leabra.FastSpike: - if (cyc+1)%10 == 0 { - ss.UpdateView(train) - } - } - } - } - switch qtr + 1 { - case 1: // Second, Third Quarters: CA1 is driven by CA3 recall - ca1FmECin.WtScale.Abs = 0 - ca1FmCa3.WtScale.Abs = 1 - if train { - ca3FmDg.WtScale.Rel = dgwtscale - } else { - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDelTest // testing - } - ss.Net.GScaleFromAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins - case 3: // Fourth Quarter: CA1 back to ECin drive only - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = 0 - ss.Net.GScaleFromAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins - if train { // clamp ECout from input - input.UnitValues(&ss.TmpValues, "Act") // note: could use input instead -- not much diff - ecout.ApplyExt1D32(ss.TmpValues) - } - } - ss.Net.QuarterFinal(&ss.Time) - if qtr+1 == 3 { - ss.MemStats(train) // must come after QuarterFinal - } - ss.Time.QuarterInc() - if ss.ViewOn { - switch { - case viewUpdate <= leabra.Quarter: - ss.UpdateView(train) - case viewUpdate == leabra.Phase: - if qtr >= 2 { - ss.UpdateView(train) - } - } - } - } - - ca3FmDg.WtScale.Rel = dgwtscale // restore - ca1FmCa3.WtScale.Abs = 1 - - if train { - ss.Net.DWt() - } - if ss.ViewOn && viewUpdate == leabra.AlphaCycle { - ss.UpdateView(train) - } - if !train { - if ss.TstCycPlot != nil { - ss.TstCycPlot.GoUpdate() - } // make sure up-to-date at end - } -} - -func (ss *Sim) AlphaCycRP(train bool) { - // ss.Win.PollEvents() // this can be used instead of running in a separate goroutine - viewUpdate := ss.TrainUpdate - if !train { - viewUpdate = ss.TestUpdate - } - //ss.ParamSet = "RP" - //ss.SetParams("", false) - // update prior weight changes at start, so any DWt values remain visible at end - // you might want to do this less frequently to achieve a mini-batch update - // in which case, move it out to the TrainTrial method where the relevant - // counters are being dealt with. - if train { - ss.Net.WtFromDWt() - } - - dg := ss.Net.LayerByName("DG").(leabra.LeabraLayer).AsLeabra() - ca1 := ss.Net.LayerByName("CA1").(leabra.LeabraLayer).AsLeabra() - ca3 := ss.Net.LayerByName("CA3").(leabra.LeabraLayer).AsLeabra() - input := ss.Net.LayerByName("Input").(leabra.LeabraLayer).AsLeabra() - ecin := ss.Net.LayerByName("ECin").(leabra.LeabraLayer).AsLeabra() - ecout := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ca1FmECin := ca1.SendName("ECin").(leabra.LeabraPath).AsLeabra() - ca1FmCa3 := ca1.SendName("CA3").(leabra.LeabraPath).AsLeabra() - ca3FmDg := ca3.SendName("DG").(leabra.LeabraPath).AsLeabra() - _ = ecin - _ = input - - // mono off in RP?? - ecoutFmCa1 := ecout.SendName("CA1").(leabra.LeabraPath).AsLeabra() - ca1FmECout := ca1.SendName("ECout").(leabra.LeabraPath).AsLeabra() - ecoutFmCa1.Learn.Learn = false - ca1FmECin.Learn.Learn = false - ca1FmECout.Learn.Learn = false - - // First Quarter: CA1 is driven by ECin, not by CA3 recall - // (which is not really active yet anyway) - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = 0 - - dgwtscale := ca3FmDg.WtScale.Rel - - // because this is testing, we don't want EDL in NoEDL version, so keep it at 1 - if ss.TE.EDL == true { - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDel // EDL starts with 0 - } else { // NoEDL - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDelTest // 1 -> 1 - //ca3FmDg.WtScale.Rel = dgwtscale // 4 -> 4 - } - - if train { - ecout.SetType(leabra.TargetLayer) // clamp a plus phase during testing - } else { - ecout.SetType(emer.Compare) // don't clamp - } - ecout.UpdateExtFlags() // call this after updating type - - CycPerQtr := ss.Time.CycPerQtr - ss.Net.AlphaCycInit(true) - ss.Time.AlphaCycStart() - for qtr := 0; qtr < 4; qtr++ { - for cyc := 0; cyc < CycPerQtr; cyc++ { //for cyc := 0; cyc < ss.Time.CycPerQtr; cyc++ { - ss.Net.Cycle(&ss.Time) - if !train { - ss.LogTstCyc(ss.TstCycLog, ss.Time.Cycle) - } else if ss.PretrainDone { // zycyc Pat Sim log - var dgCycPat []float32 - var ca3CycPat []float32 - var ca1CycPat []float32 - dg.UnitValues(&dgCycPat, "Act") - ca3.UnitValues(&ca3CycPat, "Act") - ca1.UnitValues(&ca1CycPat, "Act") - ss.dgCycPats[cyc+qtr*25] = dgCycPat - ss.ca3CycPats[cyc+qtr*25] = ca3CycPat - ss.ca1CycPats[cyc+qtr*25] = ca1CycPat - } - ss.Time.CycleInc() - if ss.ViewOn { - switch viewUpdate { - case leabra.Cycle: - if cyc != ss.Time.CycPerQtr-1 { // will be updated by quarter - ss.UpdateView(train) - } - case leabra.FastSpike: - if (cyc+1)%10 == 0 { - ss.UpdateView(train) - } - } - } - } - switch qtr + 1 { - case 1: // Second, Third Quarters: CA1 is driven by CA3 recall - ca1FmECin.WtScale.Abs = 0 - ca1FmCa3.WtScale.Abs = 1 - //ca3FmDg.WtScale.Rel = dgwtscale // RP: 4 - if !train { // zycyc: ???? RP IS testing - ca3FmDg.WtScale.Rel = dgwtscale // 4 - } else { - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDelTest // RP: 1 - } - ss.Net.GScaleFromAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins aaa - - case 3: // Fourth Quarter: CA1 back to ECin drive only - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = 0 - ss.Net.GScaleFromAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins - } - ss.Net.QuarterFinal(&ss.Time) - if qtr+1 == 3 { - ss.MemStats(train) // must come after QuarterFinal - } - ss.Time.QuarterInc() - if ss.ViewOn { - switch { - case viewUpdate <= leabra.Quarter: - ss.UpdateView(train) - case viewUpdate == leabra.Phase: - if qtr >= 2 { - ss.UpdateView(train) - } - } - } - } - - ca3FmDg.WtScale.Rel = dgwtscale // restore - ca1FmCa3.WtScale.Abs = 1 - - if train { - ss.Net.DWt() - } - if ss.ViewOn && viewUpdate == leabra.AlphaCycle { - ss.UpdateView(train) - } - if !train { - if ss.TstCycPlot != nil { - ss.TstCycPlot.GoUpdate() - } // make sure up-to-date at end - } -} - -// ApplyInputs applies input patterns from given environment. -// It is good practice to have this be a separate method with appropriate -// args so that it can be used for various different contexts -// (training, testing, etc). -func (ss *Sim) ApplyInputs(en env.Env) { - ss.Net.InitExt() // clear any existing inputs -- not strictly necessary if always - // going to the same layers, but good practice and cheap anyway - - lays := []string{"Input", "ECout"} - for _, lnm := range lays { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - pats := en.State(ly.Name) - if pats != nil { - ly.ApplyExt(pats) - } - } -} - -// TrainTrial runs one trial of training using TrainEnv -func (ss *Sim) TrainTrial() { - if ss.NeedsNewRun { - ss.NewRun() - } - - ss.TrainEnv.Step() // the Env encapsulates and manages all counter state - - // Key to query counters FIRST because current state is in NEXT epoch - // if epoch counter has changed - epc, _, chg := ss.TrainEnv.Counter(env.Epoch) - if chg { - ss.LogTrnEpc(ss.TrnEpcLog) - if ss.ViewOn && ss.TrainUpdate > leabra.AlphaCycle { - ss.UpdateView(true) - } - //if ss.TestInterval > 0 && epc%ss.TestInterval == 0 { // note: epc is *next* so won't trigger first time - // ss.TestAll() - //} - //learned := (ss.NZeroStop > 0 && ss.NZero >= ss.NZeroStop) - //if learned || epc >= ss.MaxEpcs { // done with training.. - if epc >= ss.MaxEpcs { // done with training.. - ss.RunEnd() - if ss.TrainEnv.Run.Incr() { // we are done! - ss.StopNow = true - return - } else { - ss.NeedsNewRun = true - return - } - } - } - - ss.ApplyInputs(&ss.TrainEnv) - ss.AlphaCyc(true) // train - ss.TrialStats(true) // accumulate - ss.LogTrnTrl(ss.TrnTrlLog) -} - -func (ss *Sim) RestudyTrial() { - if ss.NeedsNewRun { - ss.NewRun() - } - - ss.TrainEnv.Step() // the Env encapsulates and manages all counter state - - // Key to query counters FIRST because current state is in NEXT epoch - // if epoch counter has changed - epc, _, chg := ss.TrainEnv.Counter(env.Epoch) - if chg { - ss.LogTrnEpc(ss.TrnEpcLog) - if ss.ViewOn && ss.TrainUpdate > leabra.AlphaCycle { - ss.UpdateView(true) - } - if ss.TestInterval > 0 && epc%ss.TestInterval == 0 { // note: epc is *next* so won't trigger first time - ss.TestAll() - } - //learned := (ss.NZeroStop > 0 && ss.NZero >= ss.NZeroStop) - //if learned || epc >= ss.MaxEpcs { // done with training.. - if epc >= ss.MaxEpcs { // done with training.. - ss.RunEnd() - if ss.TrainEnv.Run.Incr() { // we are done! - ss.StopNow = true - return - } else { - ss.NeedsNewRun = true - return - } - } - } - - ss.ApplyInputs(&ss.TrainEnv) - ss.AlphaCycRestudy(true) // train - ss.TrialStats(true) // accumulate - ss.LogTrnTrl(ss.TrnTrlLog) -} - -func (ss *Sim) RetrievalPracticeTrial() { - if ss.NeedsNewRun { - ss.NewRun() - } - - ss.TrainEnv.Step() - - // Query counters FIRST - epc, _, chg := ss.TrainEnv.Counter(env.Epoch) - if chg { - ss.LogTrnEpc(ss.TrnEpcLog) - if ss.ViewOn && ss.TrainUpdate > leabra.AlphaCycle { - ss.UpdateView(true) - } - if ss.TestInterval > 0 && epc%ss.TestInterval == 0 { // note: epc is *next* so won't trigger first time - ss.TestAll() - } - //learned := (ss.NZeroStop > 0 && ss.NZero >= ss.NZeroStop) - //if learned || epc >= ss.MaxEpcs { // done with training.. - if epc >= ss.MaxEpcs { // done with training.. - ss.RunEnd() - if ss.TrainEnv.Run.Incr() { // we are done! - ss.StopNow = true - return - } else { - ss.NeedsNewRun = true - return - } - } - } - - ss.ApplyInputs(&ss.TrainEnv) - ss.AlphaCycRP(true) // !train - ss.TrialStats(true) // !accumulate - ss.LogTstTrl(ss.TrnTrlLog) -} - -// PreTrainTrial runs one trial of pretraining using TrainEnv -func (ss *Sim) PreTrainTrial() { - //if ss.NeedsNewRun { - // ss.NewRun() - //} - - ss.TrainEnv.Step() // the Env encapsulates and manages all counter state - - // Key to query counters FIRST because current state is in NEXT epoch - // if epoch counter has changed - epc, _, chg := ss.TrainEnv.Counter(env.Epoch) - if chg { - //ss.LogTrnEpc(ss.TrnEpcLog) // zycyc, don't log pretraining - if ss.ViewOn && ss.TrainUpdate > leabra.AlphaCycle { - ss.UpdateView(true) - } - if epc >= ss.PreTrainEpcs { // done with training.. - ss.StopNow = true - return - } - } - - ss.ApplyInputs(&ss.TrainEnv) - ss.AlphaCyc(true) // train - ss.TrialStats(true) // accumulate - ss.LogTrnTrl(ss.TrnTrlLog) -} - -// RunEnd is called at the end of a run -- save weights, record final log, etc here -func (ss *Sim) RunEnd() { - ss.LogRun(ss.RunLog) - if ss.SaveWeights { - fnm := ss.WeightsFileName() - fmt.Printf("Saving Weights to: %v\n", fnm) - ss.Net.SaveWeightsJSON(core.Filename(fnm)) - } -} - -// NewRun intializes a new run of the model, using the TrainEnv.Run counter -// for the new run value -func (ss *Sim) NewRun() { - run := ss.TrainEnv.Run.Cur - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - ss.TrainEnv.Init(run) - ss.TestEnv.Init(run) - ss.Time.Reset() - ss.Net.InitWeights() - ss.LoadPretrainedWts() - ss.InitStats() - ss.TrnCycPatSimLog.SetNumRows(0) - ss.TrnTrlLog.SetNumRows(0) - ss.TrnEpcLog.SetNumRows(0) - ss.TstEpcLog.SetNumRows(0) - ss.NeedsNewRun = false -} - -func (ss *Sim) LoadPretrainedWts() bool { - if ss.PreTrainWts == nil { - return false - } - b := bytes.NewReader(ss.PreTrainWts) - err := ss.Net.ReadWtsJSON(b) - if err != nil { - log.Println(err) - // } else { - // fmt.Printf("loaded pretrained wts\n") - } - return true -} - -// InitStats initializes all the statistics, especially important for the -// cumulative epoch stats -- called at start of new run -func (ss *Sim) InitStats() { - // accumulators - ss.SumSSE = 0 - ss.SumAvgSSE = 0 - ss.SumCosDiff = 0 - ss.CntErr = 0 - ss.FirstZero = -1 - ss.NZero = 0 - // clear rest just to make Sim look initialized - ss.Mem = 0 - ss.TrgOnWasOffAll = 0 - ss.TrgOnWasOffCmp = 0 - ss.TrgOffWasOn = 0 - ss.TrlSSE = 0 - ss.TrlAvgSSE = 0 - ss.EpcSSE = 0 - ss.EpcAvgSSE = 0 - ss.EpcPctErr = 0 - ss.EpcCosDiff = 0 -} - -// MemStats computes ActM vs. Target on ECout with binary counts -// must be called at end of 3rd quarter so that Targ values are -// for the entire full pattern as opposed to the plus-phase target -// values clamped from ECin activations -func (ss *Sim) MemStats(train bool) { - ecout := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ecin := ss.Net.LayerByName("ECin").(leabra.LeabraLayer).AsLeabra() - nn := ecout.Shape.Len() - trgOnWasOffAll := 0.0 // all units - trgOnWasOffCmp := 0.0 // only those that required completion, missing in ECin - trgOffWasOn := 0.0 // should have been off - cmpN := 0.0 // completion target - trgOnN := 0.0 - trgOffN := 0.0 - actMi, _ := ecout.UnitVarIndex("ActM") - targi, _ := ecout.UnitVarIndex("Targ") - actQ1i, _ := ecout.UnitVarIndex("ActQ1") - for ni := 0; ni < nn; ni++ { - actm := ecout.UnitValue1D(actMi, ni) - trg := ecout.UnitValue1D(targi, ni) // full pattern target - inact := ecin.UnitValue1D(actQ1i, ni) - if trg < 0.5 { // trgOff - trgOffN += 1 - if actm > 0.5 { - trgOffWasOn += 1 - } - } else { // trgOn - trgOnN += 1 - if inact < 0.5 { // missing in ECin -- completion target - cmpN += 1 - if actm < 0.5 { - trgOnWasOffAll += 1 - trgOnWasOffCmp += 1 - } - } else { - if actm < 0.5 { - trgOnWasOffAll += 1 - } - } - } - } - trgOnWasOffAll /= trgOnN - trgOffWasOn /= trgOffN - if train { // no cmp - if trgOnWasOffAll < ss.MemThr && trgOffWasOn < ss.MemThr { - ss.Mem = 1 - } else { - ss.Mem = 0 - } - } else { // test - if cmpN > 0 { // should be - trgOnWasOffCmp /= cmpN - if trgOnWasOffCmp < ss.MemThr && trgOffWasOn < ss.MemThr { - ss.Mem = 1 - } else { - ss.Mem = 0 - } - } - } - ss.TrgOnWasOffAll = trgOnWasOffAll - ss.TrgOnWasOffCmp = trgOnWasOffCmp - ss.TrgOffWasOn = trgOffWasOn -} - -// TrialStats computes the trial-level statistics and adds them to the epoch accumulators if -// accum is true. Note that we're accumulating stats here on the Sim side so the -// core algorithm side remains as simple as possible, and doesn't need to worry about -// different time-scales over which stats could be accumulated etc. -// You can also aggregate directly from log data, as is done for testing stats -func (ss *Sim) TrialStats(accum bool) (sse, avgsse, cosdiff float64) { - outLay := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ss.TrlCosDiff = float64(outLay.CosDiff.Cos) - ss.TrlSSE, ss.TrlAvgSSE = outLay.MSE(0.5) // 0.5 = per-unit tolerance -- right side of .5 - if accum { - ss.SumSSE += ss.TrlSSE - ss.SumAvgSSE += ss.TrlAvgSSE - ss.SumCosDiff += ss.TrlCosDiff - if ss.TrlSSE != 0 { - ss.CntErr++ - } - } - return -} - -// TrainEpoch runs training trials for remainder of this epoch -func (ss *Sim) TrainEpoch() { - ss.StopNow = false - curEpc := ss.TrainEnv.Epoch.Cur - for { - ss.TrainTrial() - if ss.StopNow || ss.TrainEnv.Epoch.Cur != curEpc { - break - } - } - ss.Stopped() -} - -// TrainRun runs training trials for remainder of run -func (ss *Sim) TrainRun() { - ss.SetEnv(false) - ss.StopNow = false - curRun := ss.TrainEnv.Run.Cur - for { - ss.TrainTrial() - if ss.StopNow || ss.TrainEnv.Run.Cur != curRun { - break - } - } - ss.Stopped() -} - -// Train runs the full training from this point onward -func (ss *Sim) Train() { - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - ss.TrainEnv.Init(ss.TrainEnv.Run.Cur) - ss.TrainEnv.Trial.Cur = -1 - ss.StopNow = false - for { - ss.TrainTrial() - if ss.StopNow { - break - } - } - ss.Stopped() -} - -func (ss *Sim) RPRun() { - ss.TrainEnv.Table = table.NewIndexView(ss.TrainRP) - ss.TrainEnv.Init(ss.TrainEnv.Run.Cur) - ss.TrainEnv.Trial.Cur = -1 - ss.StopNow = false - for { - ss.RetrievalPracticeTrial() - if ss.StopNow { - break - } - } - ss.Stopped() -} - -func (ss *Sim) RestudyRun() { - ss.TrainEnv.Table = table.NewIndexView(ss.TrainRestudy) - ss.TrainEnv.Init(ss.TrainEnv.Run.Cur) - ss.TrainEnv.Trial.Cur = -1 - ss.StopNow = false - for { - ss.RestudyTrial() - if ss.StopNow { - break - } - } - ss.Stopped() -} - -// Stop tells the sim to stop running -func (ss *Sim) Stop() { - ss.StopNow = true -} - -// Stopped is called when a run method stops running -- updates the IsRunning flag and toolbar -func (ss *Sim) Stopped() { - ss.IsRunning = false - if ss.Win != nil { - vp := ss.Win.WinViewport2D() - if ss.ToolBar != nil { - ss.ToolBar.UpdateActions() - } - vp.SetNeedsFullRender() - } -} - -// SaveWeights saves the network weights -- when called with views.CallMethod -// it will auto-prompt for filename -func (ss *Sim) SaveWeights(filename core.Filename) { - ss.Net.SaveWeightsJSON(filename) -} - -// SetDgCa3Off sets the DG and CA3 layers off (or on) -func (ss *Sim) SetDgCa3Off(net *leabra.Network, off bool) { - ca3 := net.LayerByName("CA3").(leabra.LeabraLayer).AsLeabra() - dg := net.LayerByName("DG").(leabra.LeabraLayer).AsLeabra() - ca3.Off = off - dg.Off = off -} - -// PreTrain runs pre-training, saves weights to PreTrainWts -func (ss *Sim) PreTrain() { - ss.SetDgCa3Off(ss.Net, true) - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAll) - ss.StopNow = false - curRun := ss.TrainEnv.Run.Cur - ss.TrainEnv.Init(curRun) // need this after changing num of rows in tables - for { - ss.PreTrainTrial() - if ss.StopNow || ss.TrainEnv.Run.Cur != curRun { - break - } - } - b := &bytes.Buffer{} - ss.Net.WriteWtsJSON(b) - ss.PreTrainWts = b.Bytes() - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - ss.SetDgCa3Off(ss.Net, false) - ss.Stopped() -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Testing - -// TestTrial runs one trial of testing -- always sequentially presented inputs -func (ss *Sim) TestTrial(returnOnChg bool) { - ss.TestEnv.Step() - - // Query counters FIRST - _, _, chg := ss.TestEnv.Counter(env.Epoch) - if chg { - if ss.ViewOn && ss.TestUpdate > leabra.AlphaCycle { - ss.UpdateView(false) - } - if returnOnChg { - return - } - } - - ss.ApplyInputs(&ss.TestEnv) - ss.AlphaCyc(false) // !train - ss.TrialStats(false) // !accumulate - ss.LogTstTrl(ss.TstTrlLog) -} - -// TestItem tests given item which is at given index in test item list -func (ss *Sim) TestItem(idx int) { - cur := ss.TestEnv.Trial.Cur - ss.TestEnv.Trial.Cur = idx - ss.TestEnv.SetTrialName() - ss.ApplyInputs(&ss.TestEnv) - ss.AlphaCyc(false) // !train - ss.TrialStats(false) // !accumulate - ss.TestEnv.Trial.Cur = cur -} - -// TestAll runs through the full set of testing items -func (ss *Sim) TestAll() { - ss.TestNm = "AB" - ss.TestEnv.Table = table.NewIndexView(ss.TestAB) - ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - for { - ss.TestTrial(true) // return on chg - _, _, chg := ss.TestEnv.Counter(env.Epoch) - if chg || ss.StopNow { - break - } - } - //if !ss.StopNow { - // ss.TestNm = "AC" - // ss.TestEnv.Table = table.NewIndexView(ss.TestAC) - // ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - // for { - // ss.TestTrial(true) - // _, _, chg := ss.TestEnv.Counter(env.Epoch) - // if chg || ss.StopNow { - // break - // } - // } - // if !ss.StopNow { - // ss.TestNm = "Lure" - // ss.TestEnv.Table = table.NewIndexView(ss.TestLure) - // ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - // for { - // ss.TestTrial(true) - // _, _, chg := ss.TestEnv.Counter(env.Epoch) - // if chg || ss.StopNow { - // break - // } - // } - // } - //} - // log only at very end - ss.LogTstEpc(ss.TstEpcLog) -} - -// RunTestAll runs through the full set of testing items, has stop running = false at end -- for gui -func (ss *Sim) RunTestAll() { - ss.StopNow = false - ss.TestAll() - ss.Stopped() -} - -///////////////////////////////////////////////////////////////////////// -// Params setting - -// ParamsName returns name of current set of parameters -func (ss *Sim) ParamsName() string { - if ss.ParamSet == "" { - return "Base" - } - return ss.ParamSet -} - -// SetParams sets the params for "Base" and then current ParamSet. -// If sheet is empty, then it applies all avail sheets (e.g., Network, Sim) -// otherwise just the named sheet -// if setMsg = true then we output a message for each param that was set. -func (ss *Sim) SetParams(sheet string, setMsg bool) error { - if sheet == "" { - // this is important for catching typos and ensuring that all sheets can be used - ss.Params.ValidateSheets([]string{"Network", "Sim", "Hip", "Pat", "TE"}) - } - err := ss.SetParamsSet("Base", sheet, setMsg) - if ss.ParamSet != "" && ss.ParamSet != "Base" { - err = ss.SetParamsSet(ss.ParamSet, sheet, setMsg) - } - return err -} - -// SetParamsSet sets the params for given params.Set name. -// If sheet is empty, then it applies all avail sheets (e.g., Network, Sim) -// otherwise just the named sheet -// if setMsg = true then we output a message for each param that was set. -func (ss *Sim) SetParamsSet(setNm string, sheet string, setMsg bool) error { - pset, err := ss.Params.SetByName(setNm) - if err != nil { - return err - } - if sheet == "" || sheet == "Network" { - netp, ok := pset.Sheets["Network"] - if ok { - ss.Net.ApplyParams(netp, setMsg) - } - } - - if sheet == "" || sheet == "Sim" { - simp, ok := pset.Sheets["Sim"] - if ok { - simp.Apply(ss, setMsg) - } - } - - if sheet == "" || sheet == "Hip" { - simp, ok := pset.Sheets["Hip"] - if ok { - simp.Apply(&ss.Hip, setMsg) - } - } - - if sheet == "" || sheet == "Pat" { - simp, ok := pset.Sheets["Pat"] - if ok { - simp.Apply(&ss.Pat, setMsg) - } - } - - if sheet == "" || sheet == "TE" { - simp, ok := pset.Sheets["TE"] - if ok { - simp.Apply(&ss.TE, setMsg) - } - } - - // note: if you have more complex environments with parameters, definitely add - // sheets for them, e.g., "TrainEnv", "TestEnv" etc - return err -} - -func (ss *Sim) OpenPat(dt *table.Table, fname, name, desc string) { - err := dt.OpenCSV(core.Filename(fname), table.Tab) - if err != nil { - log.Println(err) - return - } - dt.SetMetaData("name", name) - dt.SetMetaData("desc", desc) -} - -func (ss *Sim) ConfigPats() { - drate := float32(0.1) - hp := &ss.Hip - ecY := hp.ECSize.Y - ecX := hp.ECSize.X - plY := hp.ECPool.Y // good idea to get shorter vars when used frequently - plX := hp.ECPool.X // makes much more readable - npats := ss.Pat.ListSize - pctAct := hp.ECPctAct - minDiff := ss.Pat.MinDiffPct - nOn := patgen.NFromPct(pctAct, plY*plX) - ctxtflip := patgen.NFromPct(ss.Pat.CtxtFlipPct, nOn) - drift := patgen.NFromPct(drate, nOn) - patgen.AddVocabEmpty(ss.PoolVocab, "empty", npats, plY, plX) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "A", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "B", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "C", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "lA", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "lB", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "ctxt", 3, plY, plX, pctAct, minDiff) // totally diff - - for i := 0; i < (ecY-1)*ecX*3; i++ { // 12 contexts! 1: 1 row of stimuli pats; 3: 3 diff ctxt bases - list := i / ((ecY - 1) * ecX) - ctxtNm := fmt.Sprintf("ctxt%d", i+1) - tsr, _ := patgen.AddVocabRepeat(ss.PoolVocab, ctxtNm, npats, "ctxt", list) - patgen.FlipBitsRows(tsr, ctxtflip, ctxtflip, 1, 0) - //todo: also support drifting - //solution 2: drift based on last trial (will require sequential learning) - //patgen.VocabDrift(ss.PoolVocab, ss.NFlipBits, "ctxt"+strconv.Itoa(i+1)) - } - - // day2 context changes - patgen.AddVocabClone(ss.PoolVocab, "ctxt1s", "ctxt1") - patgen.AddVocabClone(ss.PoolVocab, "ctxt2s", "ctxt2") - patgen.AddVocabClone(ss.PoolVocab, "ctxt3s", "ctxt3") - patgen.AddVocabClone(ss.PoolVocab, "ctxt4s", "ctxt4") - - patgen.FlipBitsRows(ss.PoolVocab["ctxt1s"], drift, drift, 1, 0) - patgen.FlipBitsRows(ss.PoolVocab["ctxt2s"], drift, drift, 1, 0) - patgen.FlipBitsRows(ss.PoolVocab["ctxt3s"], drift, drift, 1, 0) - patgen.FlipBitsRows(ss.PoolVocab["ctxt4s"], drift, drift, 1, 0) - - // day 3 context changes - patgen.AddVocabClone(ss.PoolVocab, "ctxt1t", "ctxt1s") - patgen.AddVocabClone(ss.PoolVocab, "ctxt2t", "ctxt2s") - patgen.AddVocabClone(ss.PoolVocab, "ctxt3t", "ctxt3s") - patgen.AddVocabClone(ss.PoolVocab, "ctxt4t", "ctxt4s") - - patgen.FlipBitsRows(ss.PoolVocab["ctxt1t"], drift, drift, 1, 0) - patgen.FlipBitsRows(ss.PoolVocab["ctxt2t"], drift, drift, 1, 0) - patgen.FlipBitsRows(ss.PoolVocab["ctxt3t"], drift, drift, 1, 0) - patgen.FlipBitsRows(ss.PoolVocab["ctxt4t"], drift, drift, 1, 0) - - patgen.InitPats(ss.TrainAB, "TrainAB", "TrainAB Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TrainAB, ss.PoolVocab, "Input", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - patgen.MixPats(ss.TrainAB, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - - // RP/RS day2 - patgen.InitPats(ss.TrainRP, "TrainRP", "RP Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TrainRP, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt1s", "ctxt2s", "ctxt3s", "ctxt4s"}) - patgen.MixPats(ss.TrainRP, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1s", "ctxt2s", "ctxt3s", "ctxt4s"}) - - patgen.InitPats(ss.TrainRestudy, "TrainRestudy", "RS Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TrainRestudy, ss.PoolVocab, "Input", []string{"A", "B", "ctxt1s", "ctxt2s", "ctxt3s", "ctxt4s"}) - patgen.MixPats(ss.TrainRestudy, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1s", "ctxt2s", "ctxt3s", "ctxt4s"}) - - // RP/RS day1 - //patgen.InitPats(ss.TrainRP, "TrainRP", "RP Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - //patgen.MixPats(ss.TrainRP, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - //patgen.MixPats(ss.TrainRP, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - // - //patgen.InitPats(ss.TrainRestudy, "TrainRestudy", "RS Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - //patgen.MixPats(ss.TrainRestudy, ss.PoolVocab, "Input", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - //patgen.MixPats(ss.TrainRestudy, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - - // final test day 3 - patgen.InitPats(ss.TestAB, "TestAB", "TestAB Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TestAB, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt1t", "ctxt2t", "ctxt3t", "ctxt4t"}) - patgen.MixPats(ss.TestAB, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1t", "ctxt2t", "ctxt3t", "ctxt4t"}) - - // final test day 2 - //patgen.InitPats(ss.TestAB, "TestAB", "TestAB Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - //patgen.MixPats(ss.TestAB, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt1s", "ctxt2s", "ctxt3s", "ctxt4s"}) - //patgen.MixPats(ss.TestAB, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1s", "ctxt2s", "ctxt3s", "ctxt4s"}) - - // final test day 1 - //patgen.InitPats(ss.TestAB, "TestAB", "TestAB Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - //patgen.MixPats(ss.TestAB, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - //patgen.MixPats(ss.TestAB, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - - ss.TrainAll = ss.TrainAB.Clone() - //ss.TrainAll.AppendRows(ss.TrainAC) - //ss.TrainAll.AppendRows(ss.TestLure) -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Logging - -// ValuesTsr gets value tensor of given name, creating if not yet made -func (ss *Sim) ValuesTsr(name string) *tensor.Float32 { - if ss.ValuesTsrs == nil { - ss.ValuesTsrs = make(map[string]*tensor.Float32) - } - tsr, ok := ss.ValuesTsrs[name] - if !ok { - tsr = &tensor.Float32{} - ss.ValuesTsrs[name] = tsr - } - return tsr -} - -// RunName returns a name for this run that combines Tag and Params -- add this to -// any file names that are saved. -func (ss *Sim) RunName() string { - if ss.Tag != "" { - pnm := ss.ParamsName() - if pnm == "Base" { - return ss.Tag - } else { - return ss.Tag + "_" + pnm - } - } else { - return ss.ParamsName() - } -} - -// RunEpochName returns a string with the run and epoch numbers with leading zeros, suitable -// for using in weights file names. Uses 3, 5 digits for each. -func (ss *Sim) RunEpochName(run, epc int) string { - return fmt.Sprintf("%03d_%05d", run, epc) -} - -// WeightsFileName returns default current weights file name -func (ss *Sim) WeightsFileName() string { - return ss.Net.Nm + "_" + ss.RunName() + "_" + ss.RunEpochName(ss.TrainEnv.Run.Cur, ss.TrainEnv.Epoch.Cur) + ".wts" -} - -// LogFileName returns default log file name -func (ss *Sim) LogFileName(lognm string) string { - return ss.Net.Nm + "_" + ss.RunName() + "_" + lognm + ".csv" -} - -////////////////////////////////////////////// -// TrnCycPatSimLog - -// LogTrnCycPatSim adds data from current trial to the TrnCycPatSimLog table. -// log always contains number of testing items -func (ss *Sim) LogTrnCycPatSim(dt *table.Table) { - epc := ss.TrainEnv.Epoch.Cur - trl := ss.TrainEnv.Trial.Cur - params := ss.RunName() // includes tag - spltparams := strings.Split(params, "_") - - row := dt.Rows - if trl == 0 { // reset at start - row = 0 - } - - if ss.TrnCycPatSimFile != nil { - if !ss.TrnCycPatSimHdrs { - dt.WriteCSVHeaders(ss.TrnCycPatSimFile, table.Tab) - ss.TrnCycPatSimHdrs = true - } - for iCyc := 0; iCyc < 100; iCyc += 1 { // zycyc: step control - row += 1 - dt.SetNumRows(row + 1) - //dt.SetCellString("Params", row, params) - dt.SetCellString("NetSize", row, spltparams[0]) - dt.SetCellString("ListSize", row, spltparams[1]) - dt.SetCellString("EDL", row, spltparams[2]) - dt.SetCellString("Condition", row, spltparams[3]) - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellFloat("Trial", row, float64(trl)) - dt.SetCellString("TrialName", row, ss.TrainEnv.TrialName.Cur) - dt.SetCellFloat("Cycle", row, float64(iCyc)) - dt.SetCellFloat("DG", row, float64(metric.Correlation32(ss.dgCycPats[iCyc], ss.dgCycPats[99]))) - dt.SetCellFloat("CA3", row, float64(metric.Correlation32(ss.ca3CycPats[iCyc], ss.ca3CycPats[99]))) - dt.SetCellFloat("CA1", row, float64(metric.Correlation32(ss.ca1CycPats[iCyc], ss.ca1CycPats[99]))) - dt.WriteCSVRow(ss.TrnCycPatSimFile, row, table.Tab) - } - } -} - -func (ss *Sim) ConfigTrnCycPatSimLog(dt *table.Table) { - dt.SetMetaData("name", "TrnCycLog") - dt.SetMetaData("desc", "Record of training per input pattern") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - nt := ss.TestEnv.Table.Len() // number in view - sch := table.Schema{ - //{"Params", tensor.STRING, nil, nil}, - {"NetSize", tensor.STRING, nil, nil}, - {"ListSize", tensor.STRING, nil, nil}, - {"EDL", tensor.STRING, nil, nil}, - {"Condition", tensor.STRING, nil, nil}, - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"Trial", tensor.INT64, nil, nil}, - {"TrialName", tensor.STRING, nil, nil}, - {"Cycle", tensor.INT64, nil, nil}, - {"DG", tensor.FLOAT64, nil, nil}, - {"CA3", tensor.FLOAT64, nil, nil}, - {"CA1", tensor.FLOAT64, nil, nil}, - } - //for iCyc := 0; iCyc < 100; iCyc++ { - // sch = append(sch, table.Column{"CA3Cyc"+strconv.Itoa(iCyc), tensor.FLOAT64, nil, nil}) - //} - dt.SetFromSchema(sch, nt) -} - -////////////////////////////////////////////// -// TrnTrlLog - -// LogTrnTrl adds data from current trial to the TrnTrlLog table. -// log always contains number of testing items -func (ss *Sim) LogTrnTrl(dt *table.Table) { - epc := ss.TrainEnv.Epoch.Cur - trl := ss.TrainEnv.Trial.Cur - - row := dt.Rows - if trl == 0 { // reset at start - row = 0 - } - dt.SetNumRows(row + 1) - - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellFloat("Trial", row, float64(trl)) - dt.SetCellString("TrialName", row, ss.TrainEnv.TrialName.Cur) - dt.SetCellFloat("SSE", row, ss.TrlSSE) - dt.SetCellFloat("AvgSSE", row, ss.TrlAvgSSE) - dt.SetCellFloat("CosDiff", row, ss.TrlCosDiff) - - dt.SetCellFloat("Mem", row, ss.Mem) - dt.SetCellFloat("TrgOnWasOff", row, ss.TrgOnWasOffAll) - dt.SetCellFloat("TrgOffWasOn", row, ss.TrgOffWasOn) - - // note: essential to use Go version of update when called from another goroutine - if ss.TrnTrlPlot != nil { - ss.TrnTrlPlot.GoUpdate() - } -} - -func (ss *Sim) ConfigTrnTrlLog(dt *table.Table) { - // inLay := ss.Net.LayerByName("Input").(leabra.LeabraLayer).AsLeabra() - // outLay := ss.Net.LayerByName("Output").(leabra.LeabraLayer).AsLeabra() - - dt.SetMetaData("name", "TrnTrlLog") - dt.SetMetaData("desc", "Record of training per input pattern") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - nt := ss.TestEnv.Table.Len() // number in view - sch := table.Schema{ - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"Trial", tensor.INT64, nil, nil}, - {"TrialName", tensor.STRING, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - {"Mem", tensor.FLOAT64, nil, nil}, - {"TrgOnWasOff", tensor.FLOAT64, nil, nil}, - {"TrgOffWasOn", tensor.FLOAT64, nil, nil}, - } - dt.SetFromSchema(sch, nt) -} - -func (ss *Sim) ConfigTrnTrlPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Train Trial Plot" - plt.Params.XAxisCol = "Trial" - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Epoch", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Trial", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("TrialName", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - plt.SetColParams("Mem", plot.On, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("TrgOnWasOff", plot.On, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("TrgOffWasOn", plot.On, plot.FixMin, 0, plot.FixMax, 1) - - return plt -} - -////////////////////////////////////////////// -// TrnEpcLog - -// LogTrnEpc adds data from current epoch to the TrnEpcLog table. -// computes epoch averages prior to logging. -func (ss *Sim) LogTrnEpc(dt *table.Table) { - row := dt.Rows - dt.SetNumRows(row + 1) - - epc := ss.TrainEnv.Epoch.Prv // this is triggered by increment so use previous value - nt := float64(ss.TrainEnv.Table.Len()) // number of trials in view - params := ss.RunName() // includes tag - spltparams := strings.Split(params, "_") - - ss.EpcSSE = ss.SumSSE / nt - ss.SumSSE = 0 - ss.EpcAvgSSE = ss.SumAvgSSE / nt - ss.SumAvgSSE = 0 - ss.EpcPctErr = float64(ss.CntErr) / nt - ss.CntErr = 0 - ss.EpcPctCor = 1 - ss.EpcPctErr - ss.EpcCosDiff = ss.SumCosDiff / nt - ss.SumCosDiff = 0 - - trlog := ss.TrnTrlLog - tix := table.NewIndexView(trlog) - - //dt.SetCellString("Params", row, params) - dt.SetCellString("NetSize", row, spltparams[0]) - dt.SetCellString("ListSize", row, spltparams[1]) - dt.SetCellString("EDL", row, spltparams[2]) - dt.SetCellString("Condition", row, spltparams[3]) - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellFloat("SSE", row, ss.EpcSSE) - dt.SetCellFloat("AvgSSE", row, ss.EpcAvgSSE) - dt.SetCellFloat("PctErr", row, ss.EpcPctErr) - dt.SetCellFloat("PctCor", row, ss.EpcPctCor) - dt.SetCellFloat("CosDiff", row, ss.EpcCosDiff) - - mem := stats.Mean(tix, "Mem")[0] - dt.SetCellFloat("Mem", row, mem) - dt.SetCellFloat("TrgOnWasOff", row, stats.Mean(tix, "TrgOnWasOff")[0]) - dt.SetCellFloat("TrgOffWasOn", row, stats.Mean(tix, "TrgOffWasOn")[0]) - - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - dt.SetCellFloat(ly.Name+" ActAvg", row, float64(ly.Pools[0].ActAvg.ActPAvgEff)) - } - - // note: essential to use Go version of update when called from another goroutine - if ss.TrnEpcPlot != nil { - ss.TrnEpcPlot.GoUpdate() - } -} - -func (ss *Sim) ConfigTrnEpcLog(dt *table.Table) { - dt.SetMetaData("name", "TrnEpcLog") - dt.SetMetaData("desc", "Record of performance over epochs of training") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - sch := table.Schema{ - //{"Params", tensor.STRING, nil, nil}, - {"NetSize", tensor.STRING, nil, nil}, - {"ListSize", tensor.STRING, nil, nil}, - {"EDL", tensor.STRING, nil, nil}, - {"Condition", tensor.STRING, nil, nil}, - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"PctErr", tensor.FLOAT64, nil, nil}, - {"PctCor", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - {"Mem", tensor.FLOAT64, nil, nil}, - {"TrgOnWasOff", tensor.FLOAT64, nil, nil}, - {"TrgOffWasOn", tensor.FLOAT64, nil, nil}, - } - for _, lnm := range ss.LayStatNms { - sch = append(sch, table.Column{lnm + " ActAvg", tensor.FLOAT64, nil, nil}) - } - dt.SetFromSchema(sch, 0) -} - -func (ss *Sim) ConfigTrnEpcPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Epoch Plot" - plt.Params.XAxisCol = "Epoch" - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("NetSize", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("ListSize", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("EDL", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Condition", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Epoch", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("PctErr", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("PctCor", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - plt.SetColParams("Mem", plot.On, plot.FixMin, 0, plot.FixMax, 1) // default plot - plt.SetColParams("TrgOnWasOff", plot.On, plot.FixMin, 0, plot.FixMax, 1) // default plot - plt.SetColParams("TrgOffWasOn", plot.On, plot.FixMin, 0, plot.FixMax, 1) // default plot - - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+" ActAvg", plot.Off, plot.FixMin, 0, plot.FixMax, 0.5) - } - return plt -} - -////////////////////////////////////////////// -// TstTrlLog - -// LogTstTrl adds data from current trial to the TstTrlLog table. -// log always contains number of testing items -func (ss *Sim) LogTstTrl(dt *table.Table) { - epc := ss.TrainEnv.Epoch.Prv // this is triggered by increment so use previous value - trl := ss.TestEnv.Trial.Cur - - row := dt.Rows - if ss.TestNm == "AB" && trl == 0 { // reset at start - row = 0 - } - dt.SetNumRows(row + 1) - - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellString("TestNm", row, ss.TestNm) - dt.SetCellFloat("Trial", row, float64(row)) - dt.SetCellString("TrialName", row, ss.TestEnv.TrialName.Cur) - dt.SetCellFloat("SSE", row, ss.TrlSSE) - dt.SetCellFloat("AvgSSE", row, ss.TrlAvgSSE) - dt.SetCellFloat("CosDiff", row, ss.TrlCosDiff) - - dt.SetCellFloat("Mem", row, ss.Mem) - dt.SetCellFloat("TrgOnWasOff", row, ss.TrgOnWasOffCmp) - dt.SetCellFloat("TrgOffWasOn", row, ss.TrgOffWasOn) - - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - dt.SetCellFloat(ly.Name+" ActM.Avg", row, float64(ly.Pools[0].ActM.Avg)) - } - - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - tsr := ss.ValuesTsr(lnm) - ly.UnitValuesTensor(tsr, "Act") - dt.SetCellTensor(lnm+"Act", row, tsr) - } - - // note: essential to use Go version of update when called from another goroutine - if ss.TstTrlPlot != nil { - ss.TstTrlPlot.GoUpdate() - } -} - -func (ss *Sim) ConfigTstTrlLog(dt *table.Table) { - // inLay := ss.Net.LayerByName("Input").(leabra.LeabraLayer).AsLeabra() - // outLay := ss.Net.LayerByName("Output").(leabra.LeabraLayer).AsLeabra() - - dt.SetMetaData("name", "TstTrlLog") - dt.SetMetaData("desc", "Record of testing per input pattern") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - nt := ss.TestEnv.Table.Len() // number in view - sch := table.Schema{ - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"TestNm", tensor.STRING, nil, nil}, - {"Trial", tensor.INT64, nil, nil}, - {"TrialName", tensor.STRING, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - {"Mem", tensor.FLOAT64, nil, nil}, - {"TrgOnWasOff", tensor.FLOAT64, nil, nil}, - {"TrgOffWasOn", tensor.FLOAT64, nil, nil}, - } - for _, lnm := range ss.LayStatNms { - sch = append(sch, table.Column{lnm + " ActM.Avg", tensor.FLOAT64, nil, nil}) - } - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - sch = append(sch, table.Column{lnm + "Act", tensor.FLOAT64, ly.Shape.Sizes, nil}) - } - - dt.SetFromSchema(sch, nt) -} - -func (ss *Sim) ConfigTstTrlPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Test Trial Plot" - plt.Params.XAxisCol = "TrialName" - plt.Params.Type = plot.Bar - plt.SetTable(dt) // this sets defaults so set params after - plt.Params.XAxisRot = 45 - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Epoch", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("TestNm", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Trial", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("TrialName", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - plt.SetColParams("Mem", plot.On, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("TrgOnWasOff", plot.On, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("TrgOffWasOn", plot.On, plot.FixMin, 0, plot.FixMax, 1) - - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+" ActM.Avg", plot.Off, plot.FixMin, 0, plot.FixMax, 0.5) - } - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+"Act", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - } - - return plt -} - -////////////////////////////////////////////// -// TstEpcLog - -// RepsAnalysis analyzes representations -func (ss *Sim) RepsAnalysis() { - acts := table.NewIndexView(ss.TstTrlLog) - for _, lnm := range ss.LayStatNms { - sm, ok := ss.SimMats[lnm] - if !ok { - sm = &simat.SimMat{} - ss.SimMats[lnm] = sm - } - sm.TableCol(acts, lnm+"Act", "TrialName", true, metric.Correlation64) - } -} - -// SimMatStat returns within, between for sim mat statistics -func (ss *Sim) SimMatStat(lnm string) float64 { - sm := ss.SimMats[lnm] - smat := sm.Mat - nitm := smat.DimSize(0) - //ncat := nitm / len(ss.TstNms) // i.e., list size - win_sum := float64(0) - win_n := 0 - - for y := 0; y < nitm; y++ { // all items - for x := 0; x < y; x++ { - val := smat.Float([]int{y, x}) - win_sum += val - win_n++ - } - } - if win_n > 0 { - win_sum /= float64(win_n) - } - return win_sum -} - -// SimMatStatFull returns full triangular matrix for sim mat statistics -func (ss *Sim) SimMatStatFull(lnm string) *tensor.Float64 { - sm := ss.SimMats[lnm] - smat := sm.Mat - ncat := ss.Pat.ListSize // len of matrix - newTsr := tensor.NewFloat64([]int{ncat, ncat}, nil, []string{"Y", "X"}) - - for y := 0; y < ncat; y++ { // only taking Old and Lure, not Foil - newTsr.SubSpace([]int{y}).CopyFrom(smat.SubSpace([]int{y})) - } - return newTsr -} - -func (ss *Sim) LogTstEpc(dt *table.Table) { - row := dt.Rows - dt.SetNumRows(row + 1) - - ss.RepsAnalysis() - - trl := ss.TstTrlLog - tix := table.NewIndexView(trl) - epc := ss.TrainEnv.Epoch.Prv // ? - params := ss.RunName() // includes tag - spltparams := strings.Split(params, "_") - - if ss.LastEpcTime.IsZero() { - ss.EpcPerTrlMSec = 0 - } else { - iv := time.Now().Sub(ss.LastEpcTime) - nt := ss.TrainAB.Rows * 4 // 1 train and 3 tests - ss.EpcPerTrlMSec = float64(iv) / (float64(nt) * float64(time.Millisecond)) - } - ss.LastEpcTime = time.Now() - - // note: this shows how to use agg methods to compute summary data from another - // data table, instead of incrementing on the Sim - //dt.SetCellString("Params", row, params) - dt.SetCellString("NetSize", row, spltparams[0]) - dt.SetCellString("ListSize", row, spltparams[1]) - dt.SetCellString("EDL", row, spltparams[2]) - dt.SetCellString("Condition", row, spltparams[3]) - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellFloat("PerTrlMSec", row, ss.EpcPerTrlMSec) - dt.SetCellFloat("SSE", row, stats.Sum(tix, "SSE")[0]) - dt.SetCellFloat("AvgSSE", row, stats.Mean(tix, "AvgSSE")[0]) - dt.SetCellFloat("PctErr", row, stats.PropIf(tix, "SSE", func(idx int, val float64) bool { - return val > 0 - })[0]) - dt.SetCellFloat("PctCor", row, stats.PropIf(tix, "SSE", func(idx int, val float64) bool { - return val == 0 - })[0]) - dt.SetCellFloat("CosDiff", row, stats.Mean(tix, "CosDiff")[0]) - - trix := table.NewIndexView(trl) - spl := split.GroupBy(trix, []string{"TestNm"}) - for _, ts := range ss.TstStatNms { - split.Agg(spl, ts, stats.AggMean) - } - ss.TstStats = spl.AggsToTable(table.ColNameOnly) - - for ri := 0; ri < ss.TstStats.Rows; ri++ { - tst := ss.TstStats.CellString("TestNm", ri) - for _, ts := range ss.TstStatNms { - dt.SetCellFloat(tst+" "+ts, row, ss.TstStats.CellFloat(ts, ri)) - } - } - - for _, lnm := range ss.LayStatNms { - win := ss.SimMatStat(lnm) - for _, ts := range ss.SimMatStats { - if ts == "Within" { - dt.SetCellFloat(lnm+" "+ts, row, win) - } - } - } - - // RS Matrix - for _, lnm := range ss.LayStatNms { - rsm := ss.SimMatStatFull(lnm) - dt.SetCellTensor(lnm+" RSM", row, rsm) - } - - // base zero on testing performance! - curAB := ss.TrainEnv.Table.Table == ss.TrainAB - var mem float64 - if curAB { - mem = dt.CellFloat("AB Mem", row) - } else { - mem = dt.CellFloat("AC Mem", row) - } - if ss.FirstZero < 0 && mem == 1 { - ss.FirstZero = epc - } - if mem == 1 { - ss.NZero++ - } else { - ss.NZero = 0 - } - - // note: essential to use Go version of update when called from another goroutine - if ss.TstEpcPlot != nil { - ss.TstEpcPlot.GoUpdate() - } - if ss.TstEpcFile != nil { - if !ss.TstEpcHdrs { - dt.WriteCSVHeaders(ss.TstEpcFile, table.Tab) - ss.TstEpcHdrs = true - } - dt.WriteCSVRow(ss.TstEpcFile, row, table.Tab) - } -} - -func (ss *Sim) ConfigTstEpcLog(dt *table.Table) { - dt.SetMetaData("name", "TstEpcLog") - dt.SetMetaData("desc", "Summary stats for testing trials") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - sch := table.Schema{ - //{"Params", tensor.STRING, nil, nil}, - {"NetSize", tensor.STRING, nil, nil}, - {"ListSize", tensor.STRING, nil, nil}, - {"EDL", tensor.STRING, nil, nil}, - {"Condition", tensor.STRING, nil, nil}, - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"PerTrlMSec", tensor.FLOAT64, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"PctErr", tensor.FLOAT64, nil, nil}, - {"PctCor", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - } - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - sch = append(sch, table.Column{tn + " " + ts, tensor.FLOAT64, nil, nil}) - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - sch = append(sch, table.Column{lnm + " " + ts, tensor.FLOAT64, nil, nil}) - } - } - - // RS Matrix - for _, lnm := range ss.LayStatNms { - ncat := ss.Pat.ListSize - sch = append(sch, table.Column{lnm + " RSM", tensor.FLOAT64, []int{ncat, ncat}, nil}) - } - - dt.SetFromSchema(sch, 0) -} - -func (ss *Sim) ConfigTstEpcPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Testing Epoch Plot" - plt.Params.XAxisCol = "Epoch" - plt.SetTable(dt) // this sets defaults so set params after - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("NetSize", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("ListSize", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("EDL", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Condition", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Epoch", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("PerTrlMSec", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("PctErr", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("PctCor", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - if ts == "Mem" { - plt.SetColParams(tn+" "+ts, plot.On, plot.FixMin, 0, plot.FixMax, 1) - } else { - plt.SetColParams(tn+" "+ts, plot.Off, plot.FixMin, 0, plot.FixMax, 1) - } - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - plt.SetColParams(lnm+" "+ts, plot.Off, plot.FixMin, 0, plot.FloatMax, 1) - } - } - - // RS Matrix - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+" RSM", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - } - - return plt -} - -////////////////////////////////////////////// -// TstCycLog - -// LogTstCyc adds data from current trial to the TstCycLog table. -// log just has 100 cycles, is overwritten -func (ss *Sim) LogTstCyc(dt *table.Table, cyc int) { - if dt.Rows <= cyc { - dt.SetNumRows(cyc + 1) - } - - dt.SetCellFloat("Cycle", cyc, float64(cyc)) - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - dt.SetCellFloat(ly.Name+" Ge.Avg", cyc, float64(ly.Pools[0].Inhib.Ge.Avg)) - dt.SetCellFloat(ly.Name+" Act.Avg", cyc, float64(ly.Pools[0].Inhib.Act.Avg)) - } - - if cyc%10 == 0 { // too slow to do every cyc - // note: essential to use Go version of update when called from another goroutine - if ss.TstCycPlot != nil { - ss.TstCycPlot.GoUpdate() - } - } -} - -func (ss *Sim) ConfigTstCycLog(dt *table.Table) { - dt.SetMetaData("name", "TstCycLog") - dt.SetMetaData("desc", "Record of activity etc over one trial by cycle") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - np := 100 // max cycles - sch := table.Schema{ - {"Cycle", tensor.INT64, nil, nil}, - } - for _, lnm := range ss.LayStatNms { - sch = append(sch, table.Column{lnm + " Ge.Avg", tensor.FLOAT64, nil, nil}) - sch = append(sch, table.Column{lnm + " Act.Avg", tensor.FLOAT64, nil, nil}) - } - dt.SetFromSchema(sch, np) -} - -func (ss *Sim) ConfigTstCycPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Test Cycle Plot" - plt.Params.XAxisCol = "Cycle" - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Cycle", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+" Ge.Avg", plot.On, plot.FixMin, 0, plot.FixMax, .5) - plt.SetColParams(lnm+" Act.Avg", plot.On, plot.FixMin, 0, plot.FixMax, .5) - } - return plt -} - -////////////////////////////////////////////// -// RunLog - -// LogRun adds data from current run to the RunLog table. -func (ss *Sim) LogRun(dt *table.Table) { - epclog := ss.TstEpcLog - epcix := table.NewIndexView(epclog) - if epcix.Len() == 0 { - return - } - - run := ss.TrainEnv.Run.Cur // this is NOT triggered by increment yet -- use Cur - row := dt.Rows - dt.SetNumRows(row + 1) - - // compute mean over last N epochs for run level - nlast := 1 - if nlast > epcix.Len()-1 { - nlast = epcix.Len() - 1 - } - epcix.Indexes = epcix.Indexes[epcix.Len()-nlast:] - - params := ss.RunName() // includes tag - spltparams := strings.Split(params, "_") - - fzero := ss.FirstZero - if fzero < 0 { - fzero = ss.MaxEpcs - } - - //dt.SetCellString("Params", row, params) - dt.SetCellString("NetSize", row, spltparams[0]) - dt.SetCellString("ListSize", row, spltparams[1]) - dt.SetCellString("EDL", row, spltparams[2]) - dt.SetCellString("Condition", row, spltparams[3]) - dt.SetCellFloat("Run", row, float64(run)) - dt.SetCellFloat("NEpochs", row, float64(ss.TstEpcLog.Rows)) - dt.SetCellFloat("FirstZero", row, float64(fzero)) - dt.SetCellFloat("SSE", row, stats.Mean(epcix, "SSE")[0]) - dt.SetCellFloat("AvgSSE", row, stats.Mean(epcix, "AvgSSE")[0]) - dt.SetCellFloat("PctErr", row, stats.Mean(epcix, "PctErr")[0]) - dt.SetCellFloat("PctCor", row, stats.Mean(epcix, "PctCor")[0]) - dt.SetCellFloat("CosDiff", row, stats.Mean(epcix, "CosDiff")[0]) - - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - nm := tn + " " + ts - dt.SetCellFloat(nm, row, stats.Mean(epcix, nm)[0]) - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - nm := lnm + " " + ts - dt.SetCellFloat(nm, row, stats.Mean(epcix, nm)[0]) - } - } - ss.LogRunStats() - - // note: essential to use Go version of update when called from another goroutine - if ss.RunPlot != nil { - ss.RunPlot.GoUpdate() - } - if ss.RunFile != nil { - if !ss.RunHdrs { - dt.WriteCSVHeaders(ss.RunFile, table.Tab) - ss.RunHdrs = true - } - dt.WriteCSVRow(ss.RunFile, row, table.Tab) - } -} - -func (ss *Sim) ConfigRunLog(dt *table.Table) { - dt.SetMetaData("name", "RunLog") - dt.SetMetaData("desc", "Record of performance at end of training") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - sch := table.Schema{ - //{"Params", tensor.STRING, nil, nil}, - {"NetSize", tensor.STRING, nil, nil}, - {"ListSize", tensor.STRING, nil, nil}, - {"EDL", tensor.STRING, nil, nil}, - {"Condition", tensor.STRING, nil, nil}, - {"Run", tensor.INT64, nil, nil}, - {"NEpochs", tensor.FLOAT64, nil, nil}, - {"FirstZero", tensor.FLOAT64, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"PctErr", tensor.FLOAT64, nil, nil}, - {"PctCor", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - } - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - sch = append(sch, table.Column{tn + " " + ts, tensor.FLOAT64, nil, nil}) - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - sch = append(sch, table.Column{lnm + " " + ts, tensor.FLOAT64, nil, nil}) - } - } - dt.SetFromSchema(sch, 0) -} - -func (ss *Sim) ConfigRunPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Run Plot" - plt.Params.XAxisCol = "Run" - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("NetSize", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("ListSize", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("EDL", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Condition", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("NEpochs", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("FirstZero", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("PctErr", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("PctCor", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - if ts == "Mem" { - plt.SetColParams(tn+" "+ts, plot.On, plot.FixMin, 0, plot.FixMax, 1) // default plot - } else { - plt.SetColParams(tn+" "+ts, plot.Off, plot.FixMin, 0, plot.FixMax, 1) - } - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - plt.SetColParams(lnm+" "+ts, plot.Off, plot.FixMin, 0, plot.FloatMax, 1) - } - } - return plt -} - -////////////////////////////////////////////// -// RunStats - -// LogRunStats computes RunStats from RunLog data -- can be used for looking at prelim results -func (ss *Sim) LogRunStats() { - dt := ss.RunLog - runix := table.NewIndexView(dt) - //spl := split.GroupBy(runix, []string{"Params"}) - spl := split.GroupBy(runix, []string{"NetSize", "ListSize"}) - //spl := split.GroupBy(runix, []string{"NetSize", "ListSize", "Condition"}) - for _, tn := range ss.TstNms { - nm := tn + " " + "Mem" - split.Desc(spl, nm) - } - split.Desc(spl, "FirstZero") - split.Desc(spl, "NEpochs") - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - split.Desc(spl, lnm+" "+ts) - } - } - ss.RunStats = spl.AggsToTable(table.AddAggName) - if ss.RunStatsPlot1 != nil { - ss.ConfigRunStatsPlot(ss.RunStatsPlot1, ss.RunStats, 1) - } - if ss.RunStatsPlot2 != nil { - ss.ConfigRunStatsPlot(ss.RunStatsPlot2, ss.RunStats, 2) - } -} - -func (ss *Sim) ConfigRunStatsPlot(plt *plot.Plot2D, dt *table.Table, plotidx int) *plot.Plot2D { - plt.Params.Title = "Comparison between Hippocampus Models" - //plt.Params.XAxisCol = "Params" - plt.Params.XAxisCol = "ListSize" - plt.Params.LegendCol = "NetSize" - //plt.Params.LegendCol = "Condition" - plt.SetTable(dt) - - //plt.Params.BarWidth = 10 - //plt.Params.Type = plot.Bar - plt.Params.LineWidth = 1 - plt.Params.Scale = 2 - plt.Params.Type = plot.XY - plt.Params.XAxisRot = 45 - - if plotidx == 1 { - cp := plt.SetColParams("AB Mem:Mean", plot.On, plot.FixMin, 0, plot.FixMax, 1) // interference - cp.ErrCol = "AB Mem:Sem" - plt.Params.YAxisLabel = "AB Memory" - } else if plotidx == 2 { - cp := plt.SetColParams("NEpochs:Mean", plot.On, plot.FixMin, 0, plot.FixMax, 30) // total learning time - cp.ErrCol = "NEpochs:Sem" - plt.Params.YAxisLabel = "Learning Time" - } - - //cp = plt.SetColParams("AC Mem:Mean", plot.On, plot.FixMin, 0, plot.FixMax, 1) - //cp.ErrCol = "AC Mem:Sem" - //cp = plt.SetColParams("FirstZero:Mean", plot.On, plot.FixMin, 0, plot.FixMax, 30) - //cp.ErrCol = "FirstZero:Sem" - - return plt -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Gui - -// ConfigGUI configures the Cogent Core GUI interface for this simulation. -func (ss *Sim) ConfigGUI() *core.Window { - width := 1600 - height := 1200 - - core.SetAppName("hip_bench") - core.SetAppAbout(`This demonstrates a basic Hippocampus model in Leabra. See emergent on GitHub.

    `) - - win := core.NewMainWindow("hip_bench", "Hippocampus AB-AC", width, height) - ss.Win = win - - vp := win.WinViewport2D() - updt := vp.UpdateStart() - - mfr := win.SetMainFrame() - - tbar := core.AddNewToolBar(mfr, "tbar") - tbar.SetStretchMaxWidth() - ss.ToolBar = tbar - - split := core.AddNewSplitView(mfr, "split") - split.Dim = math32.X - split.SetStretchMax() - - sv := core.NewForm(split, "sv") - sv.SetStruct(ss) - - tv := core.AddNewTabView(split, "tv") - - nv := tv.AddNewTab(netview.KiT_NetView, "NetView").(*netview.NetView) - nv.Var = "Act" - // nv.Options.ColorMap = "Jet" // default is ColdHot - // which fares pretty well in terms of discussion here: - // https://matplotlib.org/tutorials/colors/colormaps.html - nv.SetNet(ss.Net) - ss.NetView = nv - nv.ViewDefaults() - - plt := tv.AddNewTab(plot.KiT_Plot2D, "TrnTrlPlot").(*plot.Plot2D) - ss.TrnTrlPlot = ss.ConfigTrnTrlPlot(plt, ss.TrnTrlLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "TrnEpcPlot").(*plot.Plot2D) - ss.TrnEpcPlot = ss.ConfigTrnEpcPlot(plt, ss.TrnEpcLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "TstTrlPlot").(*plot.Plot2D) - ss.TstTrlPlot = ss.ConfigTstTrlPlot(plt, ss.TstTrlLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "TstEpcPlot").(*plot.Plot2D) - ss.TstEpcPlot = ss.ConfigTstEpcPlot(plt, ss.TstEpcLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "TstCycPlot").(*plot.Plot2D) - ss.TstCycPlot = ss.ConfigTstCycPlot(plt, ss.TstCycLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "RunPlot").(*plot.Plot2D) - ss.RunPlot = ss.ConfigRunPlot(plt, ss.RunLog) - - plt = tv.AddNewTab(plot.KiT_Plot2D, "RunStatsPlot1").(*plot.Plot2D) - ss.RunStatsPlot1 = plt - - plt = tv.AddNewTab(plot.KiT_Plot2D, "RunStatsPlot2").(*plot.Plot2D) - ss.RunStatsPlot2 = plt - - split.SetSplits(.2, .8) - - tbar.AddAction(core.ActOpts{Label: "Init", Icon: "update", Tooltip: "Initialize everything including network weights, and start over. Also applies current params.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - ss.Init() - vp.SetNeedsFullRender() - }) - - tbar.AddAction(core.ActOpts{Label: "Train", Icon: "run", Tooltip: "Starts the network training, picking up from wherever it may have left off. If not stopped, training will complete the specified number of Runs through the full number of Epochs of training, with testing automatically occuring at the specified interval.", - UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - // ss.Train() - go ss.Train() - } - }) - - tbar.AddAction(core.ActOpts{Label: "RP", Icon: "run", Tooltip: "Starts the network training, picking up from wherever it may have left off. If not stopped, training will complete the specified number of Runs through the full number of Epochs of training, with testing automatically occuring at the specified interval.", - UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - // ss.Train() - go ss.RPRun() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Restudy", Icon: "run", Tooltip: "Starts the network training, picking up from wherever it may have left off. If not stopped, training will complete the specified number of Runs through the full number of Epochs of training, with testing automatically occuring at the specified interval.", - UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - // ss.Train() - go ss.RestudyRun() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Stop", Icon: "stop", Tooltip: "Interrupts running. Hitting Train again will pick back up where it left off.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - ss.Stop() - }) - - tbar.AddAction(core.ActOpts{Label: "Step Trial", Icon: "step-fwd", Tooltip: "Advances one training trial at a time.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - ss.TrainTrial() - ss.IsRunning = false - vp.SetNeedsFullRender() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Step Epoch", Icon: "fast-fwd", Tooltip: "Advances one epoch (complete set of training patterns) at a time.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - go ss.TrainEpoch() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Step Run", Icon: "fast-fwd", Tooltip: "Advances one full training Run at a time.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - go ss.TrainRun() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Pre Train", Icon: "fast-fwd", Tooltip: "Does full pretraining.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - go ss.PreTrain() - //go ss.AERun() - } - }) - - tbar.AddSeparator("test") - - tbar.AddAction(core.ActOpts{Label: "Test Trial", Icon: "step-fwd", Tooltip: "Runs the next testing trial.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - ss.TestTrial(false) // don't return on trial -- wrap - ss.IsRunning = false - vp.SetNeedsFullRender() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Test Item", Icon: "step-fwd", Tooltip: "Prompts for a specific input pattern name to run, and runs it in testing mode.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - core.StringPromptDialog(vp, "", "Test Item", - core.DlgOpts{Title: "Test Item", Prompt: "Enter the Name of a given input pattern to test (case insensitive, contains given string."}, - win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - dlg := send.(*core.Dialog) - if sig == int64(core.DialogAccepted) { - val := core.StringPromptDialogValue(dlg) - idxs := ss.TestEnv.Table.RowsByString("Name", val, table.Contains, table.IgnoreCase) - if len(idxs) == 0 { - core.PromptDialog(nil, core.DlgOpts{Title: "Name Not Found", Prompt: "No patterns found containing: " + val}, core.AddOk, core.NoCancel, nil, nil) - } else { - if !ss.IsRunning { - ss.IsRunning = true - fmt.Printf("testing index: %v\n", idxs[0]) - ss.TestItem(idxs[0]) - ss.IsRunning = false - vp.SetNeedsFullRender() - } - } - } - }) - }) - - tbar.AddAction(core.ActOpts{Label: "Test All", Icon: "fast-fwd", Tooltip: "Tests all of the testing trials.", UpdateFunc: func(act *core.Action) { - act.SetActiveStateUpdate(!ss.IsRunning) - }}, win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if !ss.IsRunning { - ss.IsRunning = true - tbar.UpdateActions() - go ss.RunTestAll() - } - }) - - tbar.AddAction(core.ActOpts{Label: "Env", Icon: "gear", Tooltip: "select training input patterns: AB or AC."}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - views.CallMethod(ss, "SetEnv", vp) - }) - - tbar.AddSeparator("log") - - tbar.AddAction(core.ActOpts{Label: "Reset RunLog", Icon: "reset", Tooltip: "Reset the accumulated log of all Runs, which are tagged with the ParamSet used"}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.RunLog.SetNumRows(0) - ss.RunPlot.Update() - }) - - tbar.AddAction(core.ActOpts{Label: "Rebuild Net", Icon: "reset", Tooltip: "Rebuild network with current params"}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.ReConfigNet() - }) - - tbar.AddAction(core.ActOpts{Label: "Run Stats", Icon: "file-data", Tooltip: "compute stats from run log -- avail in plot"}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.LogRunStats() - }) - - tbar.AddSeparator("misc") - - tbar.AddAction(core.ActOpts{Label: "New Seed", Icon: "new", Tooltip: "Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time."}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - ss.NewRndSeed() - }) - - tbar.AddAction(core.ActOpts{Label: "README", Icon: icons.FileMarkdown, Tooltip: "Opens your browser on the README file that contains instructions for how to run this model."}, win.This(), - func(recv, send tree.Node, sig int64, data interface{}) { - core.OpenURL("https://github.com/emer/leabra/blob/main/examples/hip_bench/testing_effect/README.md") - }) - - vp.UpdateEndNoSig(updt) - - // main menu - appnm := core.AppName() - mmen := win.MainMenu - mmen.ConfigMenus([]string{appnm, "File", "Edit", "Window"}) - - amen := win.MainMenu.ChildByName(appnm, 0).(*core.Action) - amen.Menu.AddAppMenu(win) - - emen := win.MainMenu.ChildByName("Edit", 1).(*core.Action) - emen.Menu.AddCopyCutPaste(win) - - // note: Command in shortcuts is automatically translated into Control for - // Linux, Windows or Meta for MacOS - // fmen := win.MainMenu.ChildByName("File", 0).(*core.Action) - // fmen.Menu.AddAction(core.ActOpts{Label: "Open", Shortcut: "Command+O"}, - // win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - // FileViewOpenSVG(vp) - // }) - // fmen.Menu.AddSeparator("csep") - // fmen.Menu.AddAction(core.ActOpts{Label: "Close Window", Shortcut: "Command+W"}, - // win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - // win.Close() - // }) - - inQuitPrompt := false - core.SetQuitReqFunc(func() { - if inQuitPrompt { - return - } - inQuitPrompt = true - core.PromptDialog(vp, core.DlgOpts{Title: "Really Quit?", - Prompt: "Are you sure you want to quit and lose any unsaved params, weights, logs, etc?"}, core.AddOk, core.AddCancel, - win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if sig == int64(core.DialogAccepted) { - core.Quit() - } else { - inQuitPrompt = false - } - }) - }) - - // core.SetQuitCleanFunc(func() { - // fmt.Printf("Doing final Quit cleanup here..\n") - // }) - - inClosePrompt := false - win.SetCloseReqFunc(func(w *core.Window) { - if inClosePrompt { - return - } - inClosePrompt = true - core.PromptDialog(vp, core.DlgOpts{Title: "Really Close Window?", - Prompt: "Are you sure you want to close the window? This will Quit the App as well, losing all unsaved params, weights, logs, etc"}, core.AddOk, core.AddCancel, - win.This(), func(recv, send tree.Node, sig int64, data interface{}) { - if sig == int64(core.DialogAccepted) { - core.Quit() - } else { - inClosePrompt = false - } - }) - }) - - win.SetCloseCleanFunc(func(w *core.Window) { - go core.Quit() // once main window is closed, quit - }) - - win.MainMenuUpdated() - return win -} - -// These props register Save methods so they can be used -var SimProps = tree.Props{ - "CallMethods": tree.PropSlice{ - {"SaveWeights", tree.Props{ - "desc": "save network weights to file", - "icon": "file-save", - "Args": tree.PropSlice{ - {"File Name", tree.Props{ - "ext": ".wts,.wts.gz", - }}, - }, - }}, - {"SetEnv", tree.Props{ - "desc": "select which set of patterns to train on: AB or AC", - "icon": "gear", - "Args": tree.PropSlice{ - {"Train on AC", tree.Props{}}, - }, - }}, - }, -} - -// zycyc -// OuterLoopParams are the parameters to run for outer crossed factor testing -var OuterLoopParams = []string{"SmallHip"} - -//var OuterLoopParams = []string{"SmallHip", "MedHip", "BigHip"} - -// InnerLoopParams are the parameters to run for inner crossed factor testing -var InnerLoopParams = []string{"List100"} - -//var InnerLoopParams = []string{"List020", "List040", "List060", "List080", "List100"} - -var EDLLoopParams = []string{"EDL", "NoEDL"} - -var IsRPLoopParams = []string{"RP", "RS"} - -// FourFactorRun runs outer-loop crossed with inner-loop params -func (ss *Sim) FourFactorRun() { - tag := ss.Tag - usetag := tag - if usetag != "" { - usetag += "_" - } - for _, otf := range OuterLoopParams { - for _, inf := range InnerLoopParams { - for _, edl := range EDLLoopParams { - for _, rprs := range IsRPLoopParams { - ss.Tag = usetag + otf + "_" + inf + "_" + edl + "_" + rprs - rand.Seed(ss.RndSeed + int64(ss.BatchRun)) // TODO: non-parallel running should resemble parallel running results, now not - ss.SetParamsSet(otf, "", ss.LogSetParams) - ss.SetParamsSet(inf, "", ss.LogSetParams) - ss.SetParamsSet(edl, "", ss.LogSetParams) - ss.SetParamsSet(rprs, "", ss.LogSetParams) - ss.ReConfigNet() // note: this applies Base params to Network - ss.ConfigEnv() - ss.StopNow = false - ss.PretrainDone = false - ss.PreTrain() // zycyc, NoPretrain key - ss.PretrainDone = true - ss.NewRun() - ss.Train() - ss.ConfigEnv() - ss.StopNow = false - if ss.TE.IsRP { - ss.RPRun() - } else { - ss.RestudyRun() - } - } - } - } - } - ss.Tag = tag -} - -func (ss *Sim) SaveTstTrial(Filename string) { - var err error - var fnm string - if ss.TE.EDL { - fnm = ss.Tag + "_EDL_" + Filename + ".tsv" - } else { - fnm = ss.Tag + "_Hebb_" + Filename + ".tsv" - } - ss.TstTrialFile, err = os.Create(fnm) - if err != nil { - log.Println(err) - ss.TstTrialFile = nil - } else { - fmt.Printf("Saving trial log to: %v\n", fnm) - defer ss.TstTrialFile.Close() - ss.RunTestAll() - } -} - -func (ss *Sim) SaveTstEpoch(Filename string) { - var err error - var fnm string - if ss.TE.EDL { - fnm = ss.Tag + "Epc_EDL_" + Filename + ".tsv" - } else { - fnm = ss.Tag + "Epc_Hebb_" + Filename + ".tsv" - } - ss.TstEpcFile, err = os.Create(fnm) - if err != nil { - log.Println(err) - ss.TstEpcFile = nil - } else { - fmt.Printf("Saving epoch log to: %v\n", fnm) - defer ss.TstEpcFile.Close() - ss.RunTestAll() - } -} - -func (ss *Sim) CmdArgs() { - ss.NoGui = true - var nogui bool - var saveCycPatSimLog bool - var saveEpcLog bool - var saveRunLog bool - var note string - flag.StringVar(&ss.ParamSet, "params", "", "ParamSet name to use -- must be valid name as listed in compiled-in params or loaded params") - flag.StringVar(&ss.Tag, "tag", "", "extra tag to add to file names saved from this run") - flag.StringVar(¬e, "note", "", "user note -- describe the run params etc") - flag.IntVar(&ss.BatchRun, "run", 0, "current batch run") // use this to manipulate subject ID - flag.IntVar(&ss.MaxRuns, "runs", 1, "number of runs to do, i.e., subjects") // must be 1 in testing effect settings - flag.IntVar(&ss.MaxEpcs, "epcs", 2, "maximum number of epochs to run (split between AB / AC)") - flag.BoolVar(&ss.LogSetParams, "setparams", false, "if true, print a record of each parameter that is set") - flag.BoolVar(&ss.SaveWeights, "wts", false, "if true, save final weights after each run") - flag.BoolVar(&saveCycPatSimLog, "cycpatsimlog", false, "if true, save train cycle similarity log to file") // zycyc, pat sim key - flag.BoolVar(&saveEpcLog, "epclog", true, "if true, save train epoch log to file") - flag.BoolVar(&saveRunLog, "runlog", false, "if true, save run epoch log to file") - flag.BoolVar(&nogui, "nogui", true, "if not passing any other args and want to run nogui, use nogui") - flag.Parse() - ss.Init() - - if note != "" { - fmt.Printf("note: %s\n", note) - } - if ss.ParamSet != "" { - fmt.Printf("Using ParamSet: %s\n", ss.ParamSet) - } - - if saveEpcLog { - var err error - fnm := ss.LogFileName(strconv.Itoa(ss.BatchRun) + "tstepc") - ss.TstEpcFile, err = os.Create(fnm) - if err != nil { - log.Println(err) - ss.TstEpcFile = nil - } else { - fmt.Printf("Saving test epoch log to: %v\n", fnm) - defer ss.TstEpcFile.Close() - } - } - if saveCycPatSimLog { - var err error - fnm := ss.LogFileName(strconv.Itoa(ss.BatchRun) + "trncycpatsim") - ss.TrnCycPatSimFile, err = os.Create(fnm) - if err != nil { - log.Println(err) - ss.TrnCycPatSimFile = nil - } else { - fmt.Printf("Saving train cycle pattern similarity log to: %v\n", fnm) - defer ss.TrnCycPatSimFile.Close() - } - } - if saveRunLog { - var err error - fnm := ss.LogFileName(strconv.Itoa(ss.BatchRun) + "run") - ss.RunFile, err = os.Create(fnm) - if err != nil { - log.Println(err) - ss.RunFile = nil - } else { - fmt.Printf("Saving run log to: %v\n", fnm) - defer ss.RunFile.Close() - } - } - if ss.SaveWeights { - fmt.Printf("Saving final weights per run\n") - } - fmt.Printf("Batch No. %d\n", ss.BatchRun) - fmt.Printf("Running %d Runs\n", ss.MaxRuns-ss.BatchRun) - // ss.Train() - ss.FourFactorRun() - //fnm := ss.LogFileName("runs") - //ss.RunStats.SaveCSV(core.Filename(fnm), table.Tab, table.Headers) // not usable for batch runs -} diff --git a/examples/ra25/README.md b/examples/ra25/README.md deleted file mode 100644 index c19f935..0000000 --- a/examples/ra25/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Leabra Random Associator 25 Example - -This example project serves as a demo and basic template for Leabra models -- you can use this as a starting point for creating your own models. It has been constructed to illustrate the most common types of functionality needed across models, to facilitate copy-paste programming. - -# Running the model - -Leabra and emergent use the [Cogent Core](https://cogentcore.org/core) GUI framework. See [install](https://www.cogentcore.org/core/setup/install) instructions there. Once those prerequisites are in place, then the simplest way to run a simulation is: - -```sh -$ core run [platform] -``` - -where `[platform]` is optional (defaults to your local system), and can include `android`, `ios` and `web`! - -## Basic running and graphing - -The basic interface has a toolbar across the top, a set of `Sim` fields on the left, and a tab bar with the network view and various log graphs on the right. The toolbar actions all have tooltips so just hover over those to see what they do. To speed up processing, you'll want to either turn off the `ViewOn` flag or switch to a graph tab instead of the `NetVew` tab. - -## Testing - -The Test* buttons allow you to test items, including a specifically chosen item, without having any effect on the ongoing training. This is one advantage of the [Env](https://github.com/emer/emergent/wiki/Env) interface, which keeps all the counters associated with training and testing separate. - -The NetView will show cycle-by-cycle updates during testing, and you can see the temporal evolution of the activities in the `TstCycPlot`. If you do `TestAll` and look at the `TstTrlPlot` you can see the current performance on every item. Meanwhile, if you click on the `TstTrlLog` button at the left, you can see the input / output activations for each item in a TableView, and the `TstErrLog` button likewise shows the same thing but filtered to only show those trials that have an error. `TstErrStats` computes some stats on those error trials -- not super meaningful here but could be in other more structured environments, and the code that does all this shows how to do all of this kind of data analysis using the [etable.Table](https://github.com/emer/etable) system, which is similar to the widely used pandas DataFrame structure in Python, and is the updated version of the `DataTable` from C++ emergent. - -## Parameter searching - -Clicking on the `Params` button will pull up a set of parameters, the design and use of which are explained in detail on the wiki page: [Params](https://github.com/emer/emergent/wiki/Params). When you hit `Init`, the `Base` ParamSet is always applied, and then if you enter the name of another ParamSet in the `ParamSet` field, that will then be applied after the Base, thereby overwriting those base default params with other ones to explore. - -To see any non-default parameter settings, the `Non Def Params` button in the NetView toolbar will show you those, and the `All Params` button will show you *all* of the parameters for every layer and projection in the network. This is a good way to see all the parameters that are available. - -To determine the real performance impact of any of the params, you typically need to collect stats over multiple runs. To see how this works, try the following: - -* Click on the `RunPlot` tab and hit `ResetRunLog` for good measure. -* Init with `ParamSet` = empty, and do `Train` and let it run all 10 runs. By default, it plots the epoch at which the network first hit 0 errors (`FirstZero`), which is as good a measure as any of overall learning speed. -* When it finishes, you can click on the `RunStats` Table to see the summary stats for FirstZero and the average over the last 10 epochs of `PctCor`, and it labels this as using the Base params. -* Now enter `NoMomentum` in the `ParamSet`, `Init` and `Train` again. Then click on the `RunStats` table button again (it generates a new one after every complete set of runs, so you can just close the old one -- it won't Update to show new results). You can now directly compare e.g., the Mean FirstZero Epoch, and see that the `Base` params are slightly faster than `NoMomentum`. -* Now you can go back to the params, duplicate one of the sets, and start entering your own custom set of params to explore, and see if you can beat the Base settings! Just click on the `*params.Sel` button after `Network` to get the actual parameters being set, which are contained in that named `Sheet`. -* Click on the `Net` button on the left and then on one of the layers, and so-on into the parameters at the layer level (`Act`, `Inhib`, `Learn`), and if you click on one of the `Prjn`s, you can see parameters at the projection level in `Learn`. You should be able to see the path for specifying any of these params in the Params sets. -* We are planning to add a function that will show you the path to any parameter via a context-menu action on its label.. - -## Running from command line - -Type this at the command line: -```bash -./ra25 -help -``` - -To see a list of args that you can pass -- passing any arg will cause the model to run without the gui, and save log files and, optionally, final weights files for each run. - -# Code organization and notes - -Most of the code is commented and should be read directly for how to do things. Here are just a few general organizational notes about code structure overall. - -* Good idea to keep all the code in one file so it is easy to share with others, although fine to split up too if it gets too big -- e.g., logging takes a lot of space and could be put in a separate file. - -* In Go, you can organize things however you want -- there are no constraints on order in Go code. - -* The GUI config and elements are all optional and the -nogui startup arg, along with other args, allows the model to be run without the gui. - -* If there is a more complex environment associated with the model, always put it in a separate file, so it can more easily be re-used across other models. - -* The params editor can easily save to a file, default named "params.go" with name `SavedParamsSets` -- you can switch your project to using that as its default set of params to then easily always be using whatever params were saved last. - - diff --git a/examples/ra25/config.go b/examples/ra25/config.go deleted file mode 100644 index aefd53b..0000000 --- a/examples/ra25/config.go +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright (c) 2024, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ra25 - -import ( - "cogentcore.org/core/base/errors" - "cogentcore.org/core/base/reflectx" - "cogentcore.org/core/math32/vecint" -) - -// ParamConfig has config parameters related to sim params. -type ParamConfig struct { - - // Hidden1Size is the size of hidden 1 layer. - Hidden1Size vecint.Vector2i `default:"{'X':10,'Y':10}" nest:"+"` - - // Hidden2Size is the size of hidden 2 layer. - Hidden2Size vecint.Vector2i `default:"{'X':10,'Y':10}" nest:"+"` - - // Script is an interpreted script that is run to set parameters in Layer and Path - // sheets, by default using the "Script" set name. - Script string `new-window:"+" width:"100"` - - // Sheet is the extra params sheet name(s) to use (space separated - // if multiple). Must be valid name as listed in compiled-in params - // or loaded params. - Sheet string - - // Tag is an extra tag to add to file names and logs saved from this run. - Tag string - - // Note is additional info to describe the run params etc, - // like a git commit message for the run. - Note string - - // SaveAll will save a snapshot of all current param and config settings - // in a directory named params_ (or _good if Good is true), - // then quit. Useful for comparing to later changes and seeing multiple - // views of current params. - SaveAll bool `nest:"+"` - - // Good is for SaveAll, save to params_good for a known good params state. - // This can be done prior to making a new release after all tests are passing. - // Add results to git to provide a full diff record of all params over level. - Good bool `nest:"+"` -} - -// RunConfig has config parameters related to running the sim. -type RunConfig struct { - - // NThreads is the number of parallel threads for CPU computation; - // 0 = use default. - NThreads int `default:"0"` - - // Run is the _starting_ run number, which determines the random seed. - // Runs counts up from there. Can do all runs in parallel by launching - // separate jobs with each starting Run, Runs = 1. - Run int `default:"0" flag:"run"` - - // Runs is the total number of runs to do when running Train, starting from Run. - Runs int `default:"5" min:"1"` - - // Epochs is the total number of epochs per run. - Epochs int `default:"100"` - - // Trials is the total number of trials per epoch. - // Should be an even multiple of NData. - Trials int `default:"32"` - - // Cycles is the total number of cycles per trial: at least 200. - Cycles int `default:"200"` - - // PlusCycles is the total number of plus-phase cycles per trial. For Cycles=300, use 100. - PlusCycles int `default:"50"` - - // NZero is how many perfect, zero-error epochs before stopping a Run. - NZero int `default:"2"` - - // TestInterval is how often (in epochs) to run through all the test patterns, - // in terms of training epochs. Can use 0 or -1 for no testing. - TestInterval int `default:"5"` - - // PCAInterval is how often (in epochs) to compute PCA on hidden - // representations to measure variance. - PCAInterval int `default:"10"` - - // StartWeights is the name of weights file to load at start of first run. - StartWeights string -} - -// LogConfig has config parameters related to logging data. -type LogConfig struct { - - // SaveWeights will save final weights after each run. - SaveWeights bool - - // Train has the list of Train mode levels to save log files for. - Train []string `default:"['Expt', 'Run', 'Epoch']" nest:"+"` - - // Test has the list of Test mode levels to save log files for. - Test []string `nest:"+"` -} - -// Config has the overall Sim configuration options. -type Config struct { - - // Name is the short name of the sim. - Name string `display:"-" default:"RA25"` - - // Title is the longer title of the sim. - Title string `display:"-" default:"Leabra random associator"` - - // URL is a link to the online README or other documentation for this sim. - URL string `display:"-" default:"https://github.com/emer/leabra/blob/main/sims/ra25/README.md"` - - // Doc is brief documentation of the sim. - Doc string `display:"-" default:"This demonstrates a basic Leabra model and provides a template for creating new models. It has a random-associator four-layer leabra network that uses the standard supervised learning paradigm to learn mappings between 25 random input / output patterns defined over 5x5 input / output layers."` - - // Includes has a list of additional config files to include. - // After configuration, it contains list of include files added. - Includes []string - - // GUI means open the GUI. Otherwise it runs automatically and quits, - // saving results to log files. - GUI bool `default:"true"` - - // Debug reports debugging information. - Debug bool - - // Params has parameter related configuration options. - Params ParamConfig `display:"add-fields"` - - // Run has sim running related configuration options. - Run RunConfig `display:"add-fields"` - - // Log has data logging related configuration options. - Log LogConfig `display:"add-fields"` -} - -func (cfg *Config) IncludesPtr() *[]string { return &cfg.Includes } - -func (cfg *Config) Defaults() { - errors.Log(reflectx.SetFromDefaultTags(cfg)) -} - -func NewConfig() *Config { - cfg := &Config{} - cfg.Defaults() - return cfg -} diff --git a/examples/ra25/ra25.go b/examples/ra25/ra25.go deleted file mode 100644 index 2e4d6f0..0000000 --- a/examples/ra25/ra25.go +++ /dev/null @@ -1,777 +0,0 @@ -// Copyright (c) 2024, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// ra25 runs a simple random-associator four-layer leabra network -// that uses the standard supervised learning paradigm to learn -// mappings between 25 random input / output patterns -// defined over 5x5 input / output layers (i.e., 25 units) -package ra25 - -//go:generate core generate -add-types -add-funcs -gosl - -import ( - "embed" - "fmt" - "io/fs" - "os" - "reflect" - - "cogentcore.org/core/base/errors" - "cogentcore.org/core/base/metadata" - "cogentcore.org/core/core" - "cogentcore.org/core/enums" - "cogentcore.org/core/icons" - "cogentcore.org/core/math32" - "cogentcore.org/core/tree" - "cogentcore.org/lab/base/mpi" - "cogentcore.org/lab/base/randx" - "cogentcore.org/lab/patterns" - "cogentcore.org/lab/plot" - "cogentcore.org/lab/stats/stats" - "cogentcore.org/lab/table" - "cogentcore.org/lab/tensor" - "cogentcore.org/lab/tensorfs" - "github.com/emer/emergent/v2/egui" - "github.com/emer/emergent/v2/env" - "github.com/emer/emergent/v2/looper" - "github.com/emer/emergent/v2/paths" - "github.com/emer/leabra/v2/leabra" -) - -//go:embed random_5x5_25.tsv -var content embed.FS - -// Modes are the looping modes (Stacks) for running and statistics. -type Modes int32 //enums:enum -const ( - Train Modes = iota - Test -) - -// Levels are the looping levels for running and statistics. -type Levels int32 //enums:enum -const ( - Cycle Levels = iota - Trial - Epoch - Run - Expt -) - -// StatsPhase is the phase of stats processing for given mode, level. -// Accumulated values are reset at Start, added each Step. -type StatsPhase int32 //enums:enum -const ( - Start StatsPhase = iota - Step -) - -// see params.go for params, config.go for config - -// Sim encapsulates the entire simulation model, and we define all the -// functionality as methods on this struct. This structure keeps all relevant -// state information organized and available without having to pass everything around -// as arguments to methods, and provides the core GUI interface (note the view tags -// for the fields which provide hints to how things should be displayed). -type Sim struct { - - // simulation configuration parameters -- set by .toml config file and / or args - Config *Config `new-window:"+"` - - // Net is the network: click to view / edit parameters for layers, paths, etc. - Net *leabra.Network `new-window:"+" display:"no-inline"` - - // Params manages network parameter setting. - Params leabra.Params `display:"inline"` - - // Loops are the control loops for running the sim, in different Modes - // across stacks of Levels. - Loops *looper.Stacks `new-window:"+" display:"no-inline"` - - // Envs provides mode-string based storage of environments. - Envs env.Envs `new-window:"+" display:"no-inline"` - - // TrainUpdate has Train mode netview update parameters. - TrainUpdate leabra.NetViewUpdate `display:"inline"` - - // TestUpdate has Test mode netview update parameters. - TestUpdate leabra.NetViewUpdate `display:"inline"` - - // Root is the root tensorfs directory, where all stats and other misc sim data goes. - Root *tensorfs.Node `display:"-"` - - // Stats has the stats directory within Root. - Stats *tensorfs.Node `display:"-"` - - // Current has the current stats values within Stats. - Current *tensorfs.Node `display:"-"` - - // StatFuncs are statistics functions called at given mode and level, - // to perform all stats computations. phase = Start does init at start of given level, - // and all intialization / configuration (called during Init too). - StatFuncs []func(mode Modes, level Levels, phase StatsPhase) `display:"-"` - - // GUI manages all the GUI elements - GUI egui.GUI `display:"-"` - - // RandSeeds is a list of random seeds to use for each run. - RandSeeds randx.Seeds `display:"-"` -} - -// RunSim runs the simulation as a standalone app -// with given configuration. -func RunSim(cfg *Config) error { - ss := &Sim{Config: cfg} - ss.ConfigSim() - if ss.Config.GUI { - ss.RunGUI() - } else { - ss.RunNoGUI() - } - return nil -} - -// EmbedSim runs the simulation with default configuration -// embedded within given body element. -func EmbedSim(b tree.Node) *Sim { - cfg := NewConfig() - cfg.GUI = true - ss := &Sim{Config: cfg} - ss.ConfigSim() - ss.Init() - ss.ConfigGUI(b) - return ss -} - -func (ss *Sim) ConfigSim() { - ss.Root, _ = tensorfs.NewDir("Root") - tensorfs.CurRoot = ss.Root - ss.Net = leabra.NewNetwork(ss.Config.Name) - ss.Params.Config(LayerParams, PathParams, ss.Config.Params.Sheet, ss.Config.Params.Tag, reflect.ValueOf(ss)) - ss.RandSeeds.Init(100) // max 100 runs - ss.InitRandSeed(0) - // ss.ConfigInputs() - ss.OpenInputs() - ss.ConfigEnv() - ss.ConfigNet(ss.Net) - ss.ConfigLoops() - ss.ConfigStats() - // if ss.Config.Run.GPU { - // fmt.Println(leabra.GPUSystem.Vars().StringDoc()) - // } - if ss.Config.Params.SaveAll { - ss.Config.Params.SaveAll = false - ss.Net.SaveParamsSnapshot(&ss.Config, ss.Config.Params.Good) - os.Exit(0) - } -} - -func (ss *Sim) ConfigEnv() { - // Can be called multiple times -- don't re-create - var trn, tst *env.FixedTable - if len(ss.Envs) == 0 { - trn = &env.FixedTable{} - tst = &env.FixedTable{} - } else { - trn = ss.Envs.ByMode(Train).(*env.FixedTable) - tst = ss.Envs.ByMode(Test).(*env.FixedTable) - } - - inputs := tensorfs.DirTable(ss.Root.Dir("Inputs/Train"), nil) - - // this logic can be used to create train-test splits of a set of patterns: - // n := inputs.NumRows() - // order := rand.Perm(n) - // ntrn := int(0.85 * float64(n)) - // trnEnv := table.NewView(inputs) - // tstEnv := table.NewView(inputs) - // trnEnv.Indexes = order[:ntrn] - // tstEnv.Indexes = order[ntrn:] - - // note: names must be standard here! - trn.Name = Train.String() - trn.Config(table.NewView(inputs)) - trn.Validate() - - tst.Name = Test.String() - tst.Config(table.NewView(inputs)) - tst.Sequential = true - tst.Validate() - - trn.Init(0) - tst.Init(0) - - // note: names must be in place when adding - ss.Envs.Add(trn, tst) -} - -func (ss *Sim) ConfigNet(net *leabra.Network) { - // net.Context.SetThetaCycles(int32(ss.Config.Run.Cycles)). - // SetPlusCycles(int32(ss.Config.Run.PlusCycles)) - net.SetRandSeed(ss.RandSeeds[0]) // init new separate random seed, using run = 0 - - inp := net.AddLayer2D("Input", leabra.InputLayer, 5, 5) - hid1 := net.AddLayer2D("Hidden1", leabra.SuperLayer, ss.Config.Params.Hidden1Size.Y, ss.Config.Params.Hidden1Size.X) - hid2 := net.AddLayer2D("Hidden2", leabra.SuperLayer, ss.Config.Params.Hidden2Size.Y, ss.Config.Params.Hidden2Size.X) - out := net.AddLayer2D("Output", leabra.TargetLayer, 5, 5) - - // use this to position layers relative to each other - // hid2.PlaceRightOf(hid1, 2) - - // note: see emergent/path module for all the options on how to connect - // NewFull returns a new paths.Full connectivity pattern - full := paths.NewFull() - - net.ConnectLayers(inp, hid1, full, leabra.ForwardPath) - net.BidirConnectLayers(hid1, hid2, full) - net.BidirConnectLayers(hid2, out, full) - - // net.LateralConnectLayerPath(hid1, full, &leabra.HebbPath{}).SetType(InhibPath) - - // note: if you wanted to change a layer type from e.g., Target to Compare, do this: - // out.Type = leabra.CompareLayer - // that would mean that the output layer doesn't reflect target values in plus phase - // and thus removes error-driven learning -- but stats are still computed. - - net.Build() - net.Defaults() - net.SetNThreads(ss.Config.Run.NThreads) - ss.ApplyParams() - net.InitWeights() -} - -func (ss *Sim) ApplyParams() { - ss.Params.Script = ss.Config.Params.Script - ss.Params.ApplyAll(ss.Net) -} - -//////// Init, utils - -// Init restarts the run, and initializes everything, including network weights -// and resets the epoch log table -func (ss *Sim) Init() { - ss.Loops.ResetCounters() - ss.SetRunName() - ss.InitRandSeed(0) - // ss.ConfigEnv() // re-config env just in case a different set of patterns was - // selected or patterns have been modified etc - ss.ApplyParams() - ss.StatsInit() - ss.NewRun() - ss.TrainUpdate.RecordSyns() - ss.TrainUpdate.Update(Train, Trial) -} - -// InitRandSeed initializes the random seed based on current training run number -func (ss *Sim) InitRandSeed(run int) { - ss.RandSeeds.Set(run) - ss.RandSeeds.Set(run, &ss.Net.Rand) -} - -// CurrentMode returns the current Train / Test mode from Context. -func (ss *Sim) CurrentMode() Modes { - ctx := ss.Net.Context() - var md Modes - md.SetInt64(int64(ctx.Mode)) - return md -} - -// NetViewUpdater returns the NetViewUpdate for given mode. -func (ss *Sim) NetViewUpdater(mode enums.Enum) *leabra.NetViewUpdate { - if mode.Int64() == Train.Int64() { - return &ss.TrainUpdate - } - return &ss.TestUpdate -} - -// ConfigLoops configures the control loops: Training, Testing -func (ss *Sim) ConfigLoops() { - ls := looper.NewStacks() - - trials := int(math32.IntMultipleGE(float32(ss.Config.Run.Trials), float32(ss.Config.Run.NData))) - cycles := ss.Config.Run.Cycles - plusPhase := ss.Config.Run.PlusCycles - - ls.AddStack(Train, Trial). - AddLevel(Expt, 1). - AddLevel(Run, ss.Config.Run.Runs). - AddLevel(Epoch, ss.Config.Run.Epochs). - AddLevelIncr(Trial, trials, ss.Config.Run.NData). - AddLevel(Cycle, cycles) - - ls.AddStack(Test, Trial). - AddLevel(Epoch, 1). - AddLevelIncr(Trial, trials, ss.Config.Run.NData). - AddLevel(Cycle, cycles) - - leabra.LooperStandard(ls, ss.Net, ss.NetViewUpdater, cycles-plusPhase, cycles-1, Cycle, Trial, Train) - - ls.Stacks[Train].OnInit.Add("Init", func() { ss.Init() }) - - ls.AddOnStartToLoop(Trial, "ApplyInputs", func(mode enums.Enum) { - ss.ApplyInputs(mode.(Modes)) - }) - - ls.Loop(Train, Run).OnStart.Add("NewRun", ss.NewRun) - - trainEpoch := ls.Loop(Train, Epoch) - trainEpoch.IsDone.AddBool("NZeroStop", func() bool { - stopNz := ss.Config.Run.NZero - if stopNz <= 0 { - return false - } - curModeDir := ss.Current.Dir(Train.String()) - curNZero := int(curModeDir.Value("NZero").Float1D(-1)) - stop := curNZero >= stopNz - return stop - return false - }) - - trainEpoch.OnStart.Add("TestAtInterval", func() { - if (ss.Config.Run.TestInterval > 0) && ((trainEpoch.Counter.Cur+1)%ss.Config.Run.TestInterval == 0) { - ss.TestAll() - } - }) - - ls.AddOnStartToAll("StatsStart", ss.StatsStart) - ls.AddOnEndToAll("StatsStep", ss.StatsStep) - - ls.Loop(Train, Run).OnEnd.Add("SaveWeights", func() { - ctrString := fmt.Sprintf("%03d_%05d", ls.Loop(Train, Run).Counter.Cur, ls.Loop(Train, Epoch).Counter.Cur) - leabra.SaveWeightsIfConfigSet(ss.Net, ss.Config.Log.SaveWeights, ctrString, ss.RunName()) - }) - - if ss.Config.GUI { - leabra.LooperUpdateNetView(ls, Cycle, Trial, ss.NetViewUpdater) - - ls.Stacks[Train].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - ls.Stacks[Test].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - } - - if ss.Config.Debug { - mpi.Println(ls.DocString()) - } - ss.Loops = ls -} - -// ApplyInputs applies input patterns from given environment for given mode. -// Any other start-of-trial logic can also be put here. -func (ss *Sim) ApplyInputs(mode Modes) { - net := ss.Net - ndata := int(net.Context().NData) - curModeDir := ss.Current.Dir(mode.String()) - ev := ss.Envs.ByMode(mode) - lays := net.LayersByType(leabra.InputLayer, leabra.TargetLayer) - net.InitExt() - for di := range ndata { - ev.Step() - curModeDir.StringValue("TrialName", ndata).SetString1D(ev.String(), di) - for _, lnm := range lays { - ly := ss.Net.LayerByName(lnm) - st := ev.State(ly.Name) - if st != nil { - ly.ApplyExt(uint32(di), st) - } - } - } - net.ApplyExts() -} - -// NewRun intializes a new Run level of the model. -func (ss *Sim) NewRun() { - ctx := ss.Net.Context() - ss.InitRandSeed(ss.Loops.Loop(Train, Run).Counter.Cur) - ss.Envs.ByMode(Train).Init(0) - ss.Envs.ByMode(Test).Init(0) - ctx.Reset() - ss.Net.InitWeights() - if ss.Config.Run.StartWeights != "" { - ss.Net.OpenWeightsJSON(core.Filename(ss.Config.Run.StartWeights)) - mpi.Printf("Starting with initial weights from: %s\n", ss.Config.Run.StartWeights) - } -} - -// TestAll runs through the full set of testing items -func (ss *Sim) TestAll() { - ss.Envs.ByMode(Test).Init(0) - ss.Loops.ResetAndRun(Test) - ss.Loops.Mode = Train // important because this is called from Train Run: go back. -} - -//////// Inputs - -func (ss *Sim) ConfigInputs() { - dt := table.New() - metadata.SetName(dt, "Train") - metadata.SetDoc(dt, "Training inputs") - dt.AddStringColumn("Name") - dt.AddFloat32Column("Input", 5, 5) - dt.AddFloat32Column("Output", 5, 5) - dt.SetNumRows(25) - - patterns.PermutedBinaryMinDiff(dt.Columns.Values[1], 6, 1, 0, 3) - patterns.PermutedBinaryMinDiff(dt.Columns.Values[2], 6, 1, 0, 3) - dt.SaveCSV("random_5x5_25_gen.tsv", tensor.Tab, table.Headers) - - tensorfs.DirFromTable(ss.Root.Dir("Inputs/Train"), dt) -} - -// OpenTable opens a [table.Table] from embedded content, storing -// the data in the given tensorfs directory. -func (ss *Sim) OpenTable(dir *tensorfs.Node, fsys fs.FS, fnm, name, docs string) (*table.Table, error) { - dt := table.New() - metadata.SetName(dt, name) - metadata.SetDoc(dt, docs) - err := dt.OpenFS(content, fnm, tensor.Tab) - if errors.Log(err) != nil { - return dt, err - } - tensorfs.DirFromTable(dir.Dir(name), dt) - return dt, err -} - -func (ss *Sim) OpenInputs() { - dir := ss.Root.Dir("Inputs") - ss.OpenTable(dir, content, "random_5x5_25.tsv", "Train", "Training inputs") -} - -//////// Stats - -// AddStat adds a stat compute function. -func (ss *Sim) AddStat(f func(mode Modes, level Levels, phase StatsPhase)) { - ss.StatFuncs = append(ss.StatFuncs, f) -} - -// StatsStart is called by Looper at the start of given level, for each iteration. -// It needs to call RunStats Start at the next level down. -// e.g., each Epoch is the start of the full set of Trial Steps. -func (ss *Sim) StatsStart(lmd, ltm enums.Enum) { - mode := lmd.(Modes) - level := ltm.(Levels) - if level <= Trial { - return - } - ss.RunStats(mode, level-1, Start) -} - -// StatsStep is called by Looper at each step of iteration, -// where it accumulates the stat results. -func (ss *Sim) StatsStep(lmd, ltm enums.Enum) { - mode := lmd.(Modes) - level := ltm.(Levels) - if level == Cycle { - return - } - ss.RunStats(mode, level, Step) - tensorfs.DirTable(leabra.StatsNode(ss.Stats, mode, level), nil).WriteToLog() -} - -// RunStats runs the StatFuncs for given mode, level and phase. -func (ss *Sim) RunStats(mode Modes, level Levels, phase StatsPhase) { - for _, sf := range ss.StatFuncs { - sf(mode, level, phase) - } - if phase == Step && ss.GUI.Tabs != nil { - nm := mode.String() + " " + level.String() + " Plot" - ss.GUI.Tabs.AsLab().GoUpdatePlot(nm) - if level == Run { - ss.GUI.Tabs.AsLab().GoUpdatePlot("Train RunAll Plot") - } - } -} - -// SetRunName sets the overall run name, used for naming output logs and weight files -// based on params extra sheets and tag, and starting run number (for distributed runs). -func (ss *Sim) SetRunName() string { - runName := ss.Params.RunName(ss.Config.Run.Run) - ss.Current.StringValue("RunName", 1).SetString1D(runName, 0) - return runName -} - -// RunName returns the overall run name, used for naming output logs and weight files -// based on params extra sheets and tag, and starting run number (for distributed runs). -func (ss *Sim) RunName() string { - return ss.Current.StringValue("RunName", 1).String1D(0) -} - -// StatsInit initializes all the stats by calling Start across all modes and levels. -func (ss *Sim) StatsInit() { - for md, st := range ss.Loops.Stacks { - mode := md.(Modes) - for _, lev := range st.Order { - level := lev.(Levels) - if level == Cycle { - continue - } - ss.RunStats(mode, level, Start) - } - } - if ss.GUI.Tabs != nil { - tbs := ss.GUI.Tabs.AsLab() - _, idx := tbs.CurrentTab() - tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Train, Epoch)) - tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Train, Run)) - tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Test, Trial)) - tbs.PlotTensorFS(ss.Stats.Dir("Train/RunAll")) - tbs.SelectTabIndex(idx) - } -} - -// ConfigStats handles configures functions to do all stats computation -// in the tensorfs system. -func (ss *Sim) ConfigStats() { - net := ss.Net - ss.Stats = ss.Root.Dir("Stats") - ss.Current = ss.Stats.Dir("Current") - - ss.SetRunName() - - // last arg(s) are levels to exclude - counterFunc := leabra.StatLoopCounters(ss.Stats, ss.Current, ss.Loops, net, Trial, Cycle) - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - counterFunc(mode, level, phase == Start) - }) - runNameFunc := leabra.StatRunName(ss.Stats, ss.Current, ss.Loops, net, Trial, Cycle) - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - runNameFunc(mode, level, phase == Start) - }) - trialNameFunc := leabra.StatTrialName(ss.Stats, ss.Current, ss.Loops, net, Trial) - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - trialNameFunc(mode, level, phase == Start) - }) - - // up to a point, it is good to use loops over stats in one function, - // to reduce repetition of boilerplate. - statNames := []string{"CorSim", "UnitErr", "Err", "NZero", "FirstZero", "LastZero"} - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - for _, name := range statNames { - if name == "NZero" && (mode != Train || level == Trial) { - return - } - modeDir := ss.Stats.Dir(mode.String()) - curModeDir := ss.Current.Dir(mode.String()) - levelDir := modeDir.Dir(level.String()) - subDir := modeDir.Dir((level - 1).String()) // note: will fail for Cycle - tsr := levelDir.Float64(name) - ndata := int(ss.Net.Context().NData) - var stat float64 - if phase == Start { - tsr.SetNumRows(0) - plot.SetFirstStyler(tsr, func(s *plot.Style) { - s.Range.SetMin(0).SetMax(1) - s.On = true - switch name { - case "NZero": - s.On = false - case "FirstZero", "LastZero": - if level < Run { - s.On = false - } - } - }) - switch name { - case "NZero": - if level == Epoch { - curModeDir.Float64(name, 1).SetFloat1D(0, 0) - } - case "FirstZero", "LastZero": - if level == Epoch { - curModeDir.Float64(name, 1).SetFloat1D(-1, 0) - } - } - continue - } - switch level { - case Trial: - out := ss.Net.LayerByName("Output") - for di := range ndata { - var stat float64 - switch name { - case "CorSim": - stat = 1.0 - float64(leabra.LayerStates.Value(int(out.Index), int(di), int(leabra.LayerPhaseDiff))) - case "UnitErr": - stat = out.PctUnitErr(ss.Net.Context())[di] - case "Err": - uniterr := curModeDir.Float64("UnitErr", ndata).Float1D(di) - stat = 1.0 - if uniterr == 0 { - stat = 0 - } - } - curModeDir.Float64(name, ndata).SetFloat1D(stat, di) - tsr.AppendRowFloat(stat) - } - case Epoch: - nz := curModeDir.Float64("NZero", 1).Float1D(0) - switch name { - case "NZero": - err := stats.StatSum.Call(subDir.Value("Err")).Float1D(0) - stat = curModeDir.Float64(name, 1).Float1D(0) - if err == 0 { - stat++ - } else { - stat = 0 - } - curModeDir.Float64(name, 1).SetFloat1D(stat, 0) - case "FirstZero": - stat = curModeDir.Float64(name, 1).Float1D(0) - if stat < 0 && nz == 1 { - stat = curModeDir.Int("Epoch", 1).Float1D(0) - } - curModeDir.Float64(name, 1).SetFloat1D(stat, 0) - case "LastZero": - stat = curModeDir.Float64(name, 1).Float1D(0) - if stat < 0 && nz >= float64(ss.Config.Run.NZero) { - stat = curModeDir.Int("Epoch", 1).Float1D(0) - } - curModeDir.Float64(name, 1).SetFloat1D(stat, 0) - default: - stat = stats.StatMean.Call(subDir.Value(name)).Float1D(0) - } - tsr.AppendRowFloat(stat) - case Run: - stat = stats.StatFinal.Call(subDir.Value(name)).Float1D(0) - tsr.AppendRowFloat(stat) - default: // Expt - stat = stats.StatMean.Call(subDir.Value(name)).Float1D(0) - tsr.AppendRowFloat(stat) - } - } - }) - - perTrlFunc := leabra.StatPerTrialMSec(ss.Stats, Train, Trial) - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - perTrlFunc(mode, level, phase == Start) - }) - - lays := net.LayersByType(leabra.SuperLayer, leabra.CTLayer, leabra.TargetLayer) - actGeFunc := leabra.StatLayerActGe(ss.Stats, net, Train, Trial, Run, lays...) - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - actGeFunc(mode, level, phase == Start) - }) - - pcaFunc := leabra.StatPCA(ss.Stats, ss.Current, net, ss.Config.Run.PCAInterval, Train, Trial, Run, lays...) - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - trnEpc := ss.Loops.Loop(Train, Epoch).Counter.Cur - pcaFunc(mode, level, phase == Start, trnEpc) - }) - - stateFunc := leabra.StatLayerState(ss.Stats, net, Test, Trial, true, "ActM", "Input", "Output") - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - stateFunc(mode, level, phase == Start) - }) - - runAllFunc := leabra.StatLevelAll(ss.Stats, Train, Run, func(s *plot.Style, cl tensor.Values) { - name := metadata.Name(cl) - switch name { - case "FirstZero", "LastZero": - s.On = true - s.Range.SetMin(0) - } - }) - ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { - runAllFunc(mode, level, phase == Start) - }) -} - -// StatCounters returns counters string to show at bottom of netview. -func (ss *Sim) StatCounters(mode, level enums.Enum) string { - counters := ss.Loops.Stacks[mode].CountersString() - vu := ss.NetViewUpdater(mode) - if vu == nil || vu.View == nil { - return counters - } - di := vu.View.Di - counters += fmt.Sprintf(" Di: %d", di) - curModeDir := ss.Current.Dir(mode.String()) - if curModeDir.Node("TrialName") == nil { - return counters - } - counters += fmt.Sprintf(" TrialName: %s", curModeDir.StringValue("TrialName").String1D(di)) - statNames := []string{"CorSim", "UnitErr", "Err"} - if level == Cycle || curModeDir.Node(statNames[0]) == nil { - return counters - } - for _, name := range statNames { - counters += fmt.Sprintf(" %s: %.4g", name, curModeDir.Float64(name).Float1D(di)) - } - return counters -} - -//////// GUI - -// ConfigGUI configures the Cogent Core GUI interface for this simulation. -func (ss *Sim) ConfigGUI(b tree.Node) { - ss.GUI.MakeBody(b, ss, ss.Root, ss.Config.Name, ss.Config.Title, ss.Config.Doc) - ss.GUI.StopLevel = Trial - nv := ss.GUI.AddNetView("Network") - nv.Options.MaxRecs = 2 * ss.Config.Run.Cycles - nv.Options.Raster.Max = ss.Config.Run.Cycles - nv.SetNet(ss.Net) - ss.TrainUpdate.Config(nv, leabra.Theta, ss.StatCounters) - ss.TestUpdate.Config(nv, leabra.Theta, ss.StatCounters) - ss.GUI.OnStop = func(mode, level enums.Enum) { - vu := ss.NetViewUpdater(mode) - vu.UpdateWhenStopped(mode, level) - } - - nv.SceneXYZ().Camera.Pose.Pos.Set(0, 1, 2.75) - nv.SceneXYZ().Camera.LookAt(math32.Vec3(0, 0, 0), math32.Vec3(0, 1, 0)) - - ss.StatsInit() - ss.GUI.FinalizeGUI(false) -} - -func (ss *Sim) MakeToolbar(p *tree.Plan) { - ss.GUI.AddLooperCtrl(p, ss.Loops) - - tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{ - Label: "New Seed", - Icon: icons.Add, - Tooltip: "Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time.", - Active: egui.ActiveAlways, - Func: func() { - ss.RandSeeds.NewSeeds() - }, - }) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{ - Label: "README", - Icon: icons.FileMarkdown, - Tooltip: "Opens your browser on the README file that contains instructions for how to run this model.", - Active: egui.ActiveAlways, - Func: func() { - core.TheApp.OpenURL(ss.Config.URL) - }, - }) -} - -func (ss *Sim) RunGUI() { - ss.Init() - ss.ConfigGUI(nil) - ss.GUI.Body.RunMainWindow() -} - -func (ss *Sim) RunNoGUI() { - ss.Init() - - if ss.Config.Params.Note != "" { - mpi.Printf("Note: %s\n", ss.Config.Params.Note) - } - if ss.Config.Log.SaveWeights { - mpi.Printf("Saving final weights per run\n") - } - - runName := ss.SetRunName() - netName := ss.Net.Name - cfg := &ss.Config.Log - leabra.OpenLogFiles(ss.Loops, ss.Stats, netName, runName, [][]string{cfg.Train, cfg.Test}) - - mpi.Printf("Running %d Runs starting at %d\n", ss.Config.Run.Runs, ss.Config.Run.Run) - ss.Loops.Loop(Train, Run).Counter.SetCurMaxPlusN(ss.Config.Run.Run, ss.Config.Run.Runs) - - ss.Loops.Run(Train) - - leabra.CloseLogFiles(ss.Loops, ss.Stats, Cycle) -} diff --git a/examples/ra25/random_5x5_25.tsv b/examples/ra25/random_5x5_25.tsv deleted file mode 100644 index 95a6852..0000000 --- a/examples/ra25/random_5x5_25.tsv +++ /dev/null @@ -1,26 +0,0 @@ -_H: $Name %Input[2:0,0]<2:5,5> %Input[2:1,0] %Input[2:2,0] %Input[2:3,0] %Input[2:4,0] %Input[2:0,1] %Input[2:1,1] %Input[2:2,1] %Input[2:3,1] %Input[2:4,1] %Input[2:0,2] %Input[2:1,2] %Input[2:2,2] %Input[2:3,2] %Input[2:4,2] %Input[2:0,3] %Input[2:1,3] %Input[2:2,3] %Input[2:3,3] %Input[2:4,3] %Input[2:0,4] %Input[2:1,4] %Input[2:2,4] %Input[2:3,4] %Input[2:4,4] %Output[2:0,0]<2:5,5> %Output[2:1,0] %Output[2:2,0] %Output[2:3,0] %Output[2:4,0] %Output[2:0,1] %Output[2:1,1] %Output[2:2,1] %Output[2:3,1] %Output[2:4,1] %Output[2:0,2] %Output[2:1,2] %Output[2:2,2] %Output[2:3,2] %Output[2:4,2] %Output[2:0,3] %Output[2:1,3] %Output[2:2,3] %Output[2:3,3] %Output[2:4,3] %Output[2:0,4] %Output[2:1,4] %Output[2:2,4] %Output[2:3,4] %Output[2:4,4] -_D: "evt_0" 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 -_D: "evt_1" 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 -_D: "evt_2" 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 -_D: "evt_3" 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 -_D: "evt_4" 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -_D: "evt_5" 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 -_D: "evt_6" 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 -_D: "evt_7" 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -_D: "evt_8" 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 -_D: "evt_9" 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 -_D: "evt_10" 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 -_D: "evt_11" 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 -_D: "evt_12" 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 -_D: "evt_13" 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 -_D: "evt_14" 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 -_D: "evt_15" 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 -_D: "evt_16" 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 -_D: "evt_17" 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 -_D: "evt_18" 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 -_D: "evt_19" 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 -_D: "evt_20" 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 -_D: "evt_21" 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 -_D: "evt_22" 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 -_D: "evt_23" 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 -_D: "evt_24" 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 diff --git a/examples/ra25/random_5x5_25_gen.csv b/examples/ra25/random_5x5_25_gen.csv deleted file mode 100644 index 2a2a8a6..0000000 --- a/examples/ra25/random_5x5_25_gen.csv +++ /dev/null @@ -1,26 +0,0 @@ -_H: $Name %Input[2:0,0]<2:5,5> %Input[2:0,1] %Input[2:0,2] %Input[2:0,3] %Input[2:0,4] %Input[2:1,0] %Input[2:1,1] %Input[2:1,2] %Input[2:1,3] %Input[2:1,4] %Input[2:2,0] %Input[2:2,1] %Input[2:2,2] %Input[2:2,3] %Input[2:2,4] %Input[2:3,0] %Input[2:3,1] %Input[2:3,2] %Input[2:3,3] %Input[2:3,4] %Input[2:4,0] %Input[2:4,1] %Input[2:4,2] %Input[2:4,3] %Input[2:4,4] %Output[2:0,0]<2:5,5> %Output[2:0,1] %Output[2:0,2] %Output[2:0,3] %Output[2:0,4] %Output[2:1,0] %Output[2:1,1] %Output[2:1,2] %Output[2:1,3] %Output[2:1,4] %Output[2:2,0] %Output[2:2,1] %Output[2:2,2] %Output[2:2,3] %Output[2:2,4] %Output[2:3,0] %Output[2:3,1] %Output[2:3,2] %Output[2:3,3] %Output[2:3,4] %Output[2:4,0] %Output[2:4,1] %Output[2:4,2] %Output[2:4,3] %Output[2:4,4] -_D: 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 -_D: 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 -_D: 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 -_D: 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 -_D: 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 -_D: 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 -_D: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 -_D: 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 -_D: 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 -_D: 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -_D: 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 -_D: 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 -_D: 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 -_D: 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 -_D: 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 -_D: 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 -_D: 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 -_D: 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 -_D: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 -_D: 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 -_D: 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 -_D: 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 -_D: 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 -_D: 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 -_D: 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 diff --git a/examples/ra25/typegen.go b/examples/ra25/typegen.go deleted file mode 100644 index 2310e29..0000000 --- a/examples/ra25/typegen.go +++ /dev/null @@ -1,29 +0,0 @@ -// Code generated by "core generate -add-types -add-funcs -gosl"; DO NOT EDIT. - -package ra25 - -import ( - "cogentcore.org/core/types" -) - -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.ParamConfig", IDName: "param-config", Doc: "ParamConfig has config parameters related to sim params.", Fields: []types.Field{{Name: "Hidden1Size", Doc: "Hidden1Size is the size of hidden 1 layer."}, {Name: "Hidden2Size", Doc: "Hidden2Size is the size of hidden 2 layer."}, {Name: "Script", Doc: "Script is an interpreted script that is run to set parameters in Layer and Path\nsheets, by default using the \"Script\" set name."}, {Name: "Sheet", Doc: "Sheet is the extra params sheet name(s) to use (space separated\nif multiple). Must be valid name as listed in compiled-in params\nor loaded params."}, {Name: "Tag", Doc: "Tag is an extra tag to add to file names and logs saved from this run."}, {Name: "Note", Doc: "Note is additional info to describe the run params etc,\nlike a git commit message for the run."}, {Name: "SaveAll", Doc: "SaveAll will save a snapshot of all current param and config settings\nin a directory named params_ (or _good if Good is true),\nthen quit. Useful for comparing to later changes and seeing multiple\nviews of current params."}, {Name: "Good", Doc: "Good is for SaveAll, save to params_good for a known good params state.\nThis can be done prior to making a new release after all tests are passing.\nAdd results to git to provide a full diff record of all params over level."}}}) - -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.RunConfig", IDName: "run-config", Doc: "RunConfig has config parameters related to running the sim.", Fields: []types.Field{{Name: "NData", Doc: "NData is the number of data-parallel items to process in parallel per trial.\nIs significantly faster for both CPU and GPU. Results in an effective\nmini-batch of learning."}, {Name: "NThreads", Doc: "NThreads is the number of parallel threads for CPU computation;\n0 = use default."}, {Name: "Run", Doc: "Run is the _starting_ run number, which determines the random seed.\nRuns counts up from there. Can do all runs in parallel by launching\nseparate jobs with each starting Run, Runs = 1."}, {Name: "Runs", Doc: "Runs is the total number of runs to do when running Train, starting from Run."}, {Name: "Epochs", Doc: "Epochs is the total number of epochs per run."}, {Name: "Trials", Doc: "Trials is the total number of trials per epoch.\nShould be an even multiple of NData."}, {Name: "Cycles", Doc: "Cycles is the total number of cycles per trial: at least 200."}, {Name: "PlusCycles", Doc: "PlusCycles is the total number of plus-phase cycles per trial. For Cycles=300, use 100."}, {Name: "NZero", Doc: "NZero is how many perfect, zero-error epochs before stopping a Run."}, {Name: "TestInterval", Doc: "TestInterval is how often (in epochs) to run through all the test patterns,\nin terms of training epochs. Can use 0 or -1 for no testing."}, {Name: "PCAInterval", Doc: "PCAInterval is how often (in epochs) to compute PCA on hidden\nrepresentations to measure variance."}, {Name: "StartWeights", Doc: "StartWeights is the name of weights file to load at start of first run."}}}) - -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.LogConfig", IDName: "log-config", Doc: "LogConfig has config parameters related to logging data.", Fields: []types.Field{{Name: "SaveWeights", Doc: "SaveWeights will save final weights after each run."}, {Name: "Train", Doc: "Train has the list of Train mode levels to save log files for."}, {Name: "Test", Doc: "Test has the list of Test mode levels to save log files for."}}}) - -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.Config", IDName: "config", Doc: "Config has the overall Sim configuration options.", Fields: []types.Field{{Name: "Name", Doc: "Name is the short name of the sim."}, {Name: "Title", Doc: "Title is the longer title of the sim."}, {Name: "URL", Doc: "URL is a link to the online README or other documentation for this sim."}, {Name: "Doc", Doc: "Doc is brief documentation of the sim."}, {Name: "Includes", Doc: "Includes has a list of additional config files to include.\nAfter configuration, it contains list of include files added."}, {Name: "GUI", Doc: "GUI means open the GUI. Otherwise it runs automatically and quits,\nsaving results to log files."}, {Name: "Debug", Doc: "Debug reports debugging information."}, {Name: "Params", Doc: "Params has parameter related configuration options."}, {Name: "Run", Doc: "Run has sim running related configuration options."}, {Name: "Log", Doc: "Log has data logging related configuration options."}}}) - -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.Modes", IDName: "modes", Doc: "Modes are the looping modes (Stacks) for running and statistics."}) - -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.Levels", IDName: "levels", Doc: "Levels are the looping levels for running and statistics."}) - -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.StatsPhase", IDName: "stats-phase", Doc: "StatsPhase is the phase of stats processing for given mode, level.\nAccumulated values are reset at Start, added each Step."}) - -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/examples/ra25.Sim", IDName: "sim", Doc: "Sim encapsulates the entire simulation model, and we define all the\nfunctionality as methods on this struct. This structure keeps all relevant\nstate information organized and available without having to pass everything around\nas arguments to methods, and provides the core GUI interface (note the view tags\nfor the fields which provide hints to how things should be displayed).", Fields: []types.Field{{Name: "Config", Doc: "simulation configuration parameters -- set by .toml config file and / or args"}, {Name: "Net", Doc: "Net is the network: click to view / edit parameters for layers, paths, etc."}, {Name: "Params", Doc: "Params manages network parameter setting."}, {Name: "Loops", Doc: "Loops are the control loops for running the sim, in different Modes\nacross stacks of Levels."}, {Name: "Envs", Doc: "Envs provides mode-string based storage of environments."}, {Name: "TrainUpdate", Doc: "TrainUpdate has Train mode netview update parameters."}, {Name: "TestUpdate", Doc: "TestUpdate has Test mode netview update parameters."}, {Name: "Root", Doc: "Root is the root tensorfs directory, where all stats and other misc sim data goes."}, {Name: "Stats", Doc: "Stats has the stats directory within Root."}, {Name: "Current", Doc: "Current has the current stats values within Stats."}, {Name: "StatFuncs", Doc: "StatFuncs are statistics functions called at given mode and level,\nto perform all stats computations. phase = Start does init at start of given level,\nand all intialization / configuration (called during Init too)."}, {Name: "GUI", Doc: "GUI manages all the GUI elements"}, {Name: "RandSeeds", Doc: "RandSeeds is a list of random seeds to use for each run."}}}) - -var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/examples/ra25.NewConfig", Returns: []string{"Config"}}) - -var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/examples/ra25.RunSim", Doc: "RunSim runs the simulation as a standalone app\nwith given configuration.", Args: []string{"cfg"}, Returns: []string{"error"}}) - -var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/examples/ra25.EmbedSim", Doc: "EmbedSim runs the simulation with default configuration\nembedded within given body element.", Args: []string{"b"}, Returns: []string{"Sim"}}) diff --git a/examples/sir2/README.md b/examples/sir2/README.md deleted file mode 100644 index 482d013..0000000 --- a/examples/sir2/README.md +++ /dev/null @@ -1,91 +0,0 @@ -Back to [All Sims](https://github.com/CompCogNeuro/sims) (also for general info and executable downloads) - -# Introduction - -This simulation illustrates the dynamic gating of information into PFC active maintenance, by the basal ganglia (BG). It uses a simple Store-Ignore-Recall (SIR) task, where the BG system learns via phasic dopamine signals and trial-and-error exploration, discovering what needs to be stored, ignored, and recalled as a function of reinforcement of correct behavior, and learned reinforcement of useful working memory representations. The model is the current incarnation the our original PBWM framework [O'Reilly & Frank, 2006](#references). - -The SIR task requires the network to Recall (when the R unit is active) the letter (A-D) that was present when a Store (S) input was active earlier. Ignore (I) trials also have a letter input, but, as you might guess, these are to be ignored. Trials are randomly generated, and there can be a random number of Ignore trials between a Store and Recall trial, so the model must learn to maintain the stored information in robust working memory representations in the PFC, until the next Recall trial, with variable numbers of intervening and unpredictable distractors between task-relevant events. - -# Network Organization - -You will notice that the network is configured with the input and output information at the top of the network instead of the usual convention of having the input at the bottom -- this is because all of the basal ganglia mechanisms associated with the gating system are located in an anatomically appropriate "subcortical" location below the cortical layers associated with the rest of the model. - -The main processing of information in the model follows the usual path from Input to Hidden to Output. However, to make appropriate responses based on the information that came on earlier trials, the Hidden layer needs access to the information maintained in the PFC (prefrontal cortex) layer. The PFC will maintain information in an active state until it receives a gating signal from the basal ganglia gating system, at which point it will update to encode (and subsequently maintain) information from the current trial. In this simple model, the PFC acts just like a copy of the sensory input information, by virtue of having direct one-to-one projections from the Input layer. This makes it easy to see directly what the PFC is maintaining -- the model also functions well if the PFC representations are distributed and learned, as is required for more complex tasks. Although only one PFC "stripe" is theoretically needed for this specific task (but see the end of this documentation for link to more challenging tasks), the system works much better by having a competition between multiple stripes, each of which attempts to learn a different gating strategy, searching the space of possible solutions in parallel instead of only serially -- hence, this model has four PFC maintenance stripes that each can encode the full set of inputs. Each such stripe corresponds to a hypercolumn in the PFC biology. - -Within each hypercolumn/stripe, we simulate the differential contributions of the superficial cortical layers (2 and 3) versus the deep layers (5 and 6) -- the superficial are labeled as `PFCmnt` and the deep as `PFCmntD` in the model. The superficial layers receive broad cortical inputs from sensory areas (i.e., Input in the model) and from the deep layers within their own hypercolumn, while the deep layers have more localized connectivity (just receiving from the corresponding superficial layers in the model). Furthermore, the deep layers participate in thalamocortical loops, and have other properties that enable them to more robustly maintain information through active firing over time. Therefore, these deep layers are the primary locus of robust active maintenance in the model, while the superficial layers reflect more of a balance between other (e.g., sensory) cortical inputs and the robust maintenance activation from the deep layers. The deep layers also ultimately project to subcortical outputs, and other cortical areas, so we drive the output of the model through these deep layers into the Hidden layer. - -As discussed in the Executive Chapter, electrophysiological recordings of PFC neurons typically show three broad categories of neural responses (see Figure 10.3 in chapter 10, from [Sommer & Wurtz, 2000](#references)): phasic responders to sensory inputs; sustained active maintenance; and phasic activity for motor responses or other kind of cognitive action. The `PFCmnt` neurons can capture the first two categories -- it is possible to configure the PFCmnt units to have different temporal patterns of responses to inputs, including phasic, ramping, and sustained. However, the third category of neurons require a separate BG-gating action to drive an appropriate (and appropriately timed) motor action, and thus we have a separate population of **output gating** stripes in the model, called `PFCout` (superficial) and `PFCoutD` (deep). It is these PFCoutD neurons that project to the posterior cortical `Hidden` and `Output` layers of the model, and drive overt responding. For simplicity, we have configured a topographic one-to-one mapping between corresponding PFCmnt and PFCout stripes -- so the model must learn to gate the appropriate PFCout stripe that corresponds to the PFCmnt stripe containing the information relevant to driving the correct response. - -In summary, correct performance of the task in this model requires BG gating of *Store* information into one of the PFCmnt stripes, and then *not* gating any further *Ignore* information into that same stripe, and finally appropriate gating of the corresponding PFCout stripe on the *Recall* trial. This sequence of gating actions must be learned strictly through trial-and-error exploration, shaped by a simple *Rescorla-Wagner* (RW) style dopamine-based reinforcement learning system located on the left-bottom area of the model (see Chapter 7 for details). The key point is that this system can learn the predicted reward value of cortical states and use errors in predictions to trigger dopamine bursts and dips that train striatal gating policies. - -To review the functions of the other layers in the PBWM framework (see [deep](https://github.com/emer/leabra/blob/main/deep) and [pbwm](https://github.com/emer/leabra/blob/main/pbwm) repositories for more complete info): - -* **Matrix**: this is the dynamic gating system representing the matrix units within the dorsal striatum of the basal ganglia. The bottom layer contains the "Go" (direct pathway) units, while top layer contains "NoGo" (indirect pathway). As in the earlier BG model, the Go units, expressing more D1 receptors, increase their weights from dopamine bursts, and decrease weights from dopamine dips, and vice-versa for the NoGo units with more D2 receptors. As is more consistent with the BG biology than earlier versions of this model, most of the competition to select the final gating action happens in the GPe and GPi (with the hyperdirect pathway to the subthalamic nucleus also playing a critical role, but not included in this more abstracted model), with only a relatively weak level of competition within the Matrix layers. Note that we have combined the maintenance and output gating stripes all in the same Matrix layer -- this allows these stripes to all compete with each other here, and more importantly in the subsequent GPi and GPe stripes -- this competitive interaction is critical for allowing the system to learn to properly coordinate maintenance when it is appropriate to update/store new information for maintenance vs. when it is important to select from currently stored representations via output gating. - -* **GPeNoGo:** provides a first round of competition between all the NoGo stripes, which critically prevents the model from driving NoGo to *all* of the stripes at once. Indeed, there is physiological and anatomical evidence for NoGo unit collateral inhibition onto other NoGo units. Without this NoGo-level competition, models frequently ended up in a state where all stripes were inhibited by NoGo, and when *nothing* happens, *nothing* can be learned, so the model essentially fails at that point! - -* **GpiThal:** Has a strong competition for selecting which stripe gets to gate, based on projections from the MatrixGo units, and the NoGo influence from GPeNoGo, which can effectively *veto* a few of the possible stripes to prevent gating. As discussed in the BG model, here we have combined the functions of the GPi (or SNr) and the Thalamus into a single abstracted layer, which has the excitatory kinds of outputs that we would expect from the thalamus, but also implements the stripe-level competition mediated by the GPi/SNr. If there is more overall Go than NoGo activity, then the GPiThal unit gets activated, which then effectively establishes an excitatory loop through the corresponding deep layers of the PFC, with which the thalamus neurons are bidirectionally interconnected. - -* **Rew, RWPred, SNc:** The `Rew` layer represents the reward activation driven on the Recall trials based on whether the model gets the problem correct or not, with either a 0 (error, no reward) or 1 (correct, reward) activation. `RWPred` is the prediction layer that learns based on dopamine signals to predict how much reward will be obtained on this trial. The **SNc** is the final dopamine unit activation, reflecting reward prediction errors. When outcomes are better (worse) than expected or states are predictive of reward (no reward), this unit will increase (decrease) activity. For convenience, tonic (baseline) states are represented here with zero values, so that phasic deviations above and below this value are observable as positive or negative activations. (In the real system negative activations are not possible, but negative prediction errors are observed as a pause in dopamine unit activity, such that firing rate drops from baseline tonic levels). Biologically the SNc actually projects dopamine to the dorsal striatum, while the VTA projects to the ventral striatum, but there is no functional difference in this level of model. - -* In this model, Matrix learning is driven exclusively by dopamine firing at the time of rewards (i.e., on Recall trials), and it uses a synaptic-tag-based trace mechanism to reinforce/punish all prior gating actions that led up to this dopaminergic outcome. Specifically, when a given Matrix unit fires for a gated action (we assume it receives the final gating output from the GPi / Thalamus either via thalamic or PFC projections -- this is critical for proper credit assignment in learning), we hypothesize that structural changes in the synapses that received concurrent excitatory input from cortex establish a *synaptic tag.* Extensive research has shown that these synaptic tags, based on actin fiber networks in the synapse, can persist for up to 90 minutes, and when a subsequent strong learning event occurs, the tagged synapses are also strongly potentiated ([Redondo & Morris, 2011, Rudy, 2015, Bosch & Hayashi, 2012](#references)). This form of trace-based learning is very effective computationally, because it does not require any other mechanisms to enable learning about the reward implications of earlier gating events. (In earlier versions of the PBWM model, we relied on CS (conditioned stimulus) based phasic dopamine to reinforce gating, but this scheme requires that the PFC maintained activations function as a kind of internal CS signal, and that the amygdala learn to decode these PFC activation states to determine if a useful item had been gated into memory. Compared to the trace-based mechanism, this CS-dopamine approach is much more complex and error-prone. Nevertheless, there is nothing in the current model that prevents it from *also* contributing to learning. However, in the present version of the model, we have not focused on getting this CS-based dopamine signal working properly -- there are a couple of critical issues that we are addressing in newer versions of the PVLV model that should allow it to function better.) - -* To explore the model's connectivity, click on `r.Wt` and on various units within the layers of the network. - -# SIR Task Learning - -Now, let's step through some trials to see how the task works. - -* Switch back to viewing activations (`Act`). Do `Init`, `Step Trial` in the toolbar. - -The task commands (Store, Ignore, Recall) are chosen completely at random (subject to the constraint that you can't store until after a recall, and you can't recall until after a store) so you could get either an ignore or a store input. You should see either the S or I task control input, plus one of the stimuli (A-D) chosen at random. The target output response should also be active, as we're looking at the plus phase information (stepping by trials). - -Notice that if the corresponding `GPiThal` unit is active, the PFC stripe will have just been updated to maintain this current input information. - -* Hit `Step Trial` again. - -You should now see a new input pattern. The GPiThal gating signal triggers the associated PFC stripe to update its representations to reflect this new input. But if the GPiThal unit is not active (due to more overall NoGo activity), PFC will maintain its previously stored information. Often one stripe will update while the other one doesn't; the model has to learn how to manage its updating so that it can translate the PFC representations into appropriate responses during recall trials. - -* Keep hitting `Step Trial` and noticing the pattern of updating and maintenance of information in `PFCmnt`, and output gating in `PFCout`, and how this is driven by the activation of the `GPiThal` unit (which in turn is driven by the `Matrix` Go vs. NoGo units, which in turn are being modulated by dopamine from the SNc to learn how to better control maintenance in the PFC!). - -When you see a R (recall) trial, look at the SNc (dopamine) unit at the bottom layer. If the network is somehow able to correctly recall (or guess!), then this unit will have a positive (yellow) activation, indicating a better-than expected performance. Most likely, it instead will be teal blue and inverted, indicating a negative dopamine signal from worse-than expected performance (producing the wrong response). This is the reinforcement training signal that controls the learning of the Matrix units, so that they can learn when information in PFC is predictive of reward (in which case that information should be updated in future trials), or whether having some information in PFC is not rewarding (in which case that information should not be updated and stored in future trials). It is the same learning mechanism that has been extensively investigated (and validated empirically) as a fundamental rule for learning to select actions in corticostriatal circuits, applied here to working memory. - -* You can continue to `Step Trial` and observe the dynamics of the network. When your mind is sufficiently boggled by the complexity of this model, then go ahead and hit `Step Run`, and switch to the `TrnEpcPlot` tab. - -You will see three different values being plotted as the network learns: - -* **PctErr** (dark green line): shows the overall percent of errors per epoch (one epoch is 100 trials in this case), which quickly drops as the network learns. - -* **AbsDA** (lighter green line): shows dopamine for Recall trials (when the network's recall performance is directly rewarded or punished). As you can see, this value starts high and decreases as the network learns, because DA reflects the *difference from expectation*, and the system quickly adapts its expectations based on how it is actually doing. The main signals to notice here are when the network suddenly starts doing better than on the previous epoch (PctErr drops) -- this should be associated with a peak in DA, whereas a sudden increase in errors (worse performance) results in a dip in DA. As noted above, these DA signals are training up the Matrix gating actions since the last Recall trial. - -* **RewPred** (blue line): plots the RWPred Rescorla-Wagner reward prediction activity, which cancels out the rewards in the `Rew` layer, causing DA to decrease. As the model does better, this line goes up reflecting increased expectations of reward. - -The network can take roughly 5-50 epochs or so to train (it will stop when `PctErr` gets to 0 errors 5 times in a row). - -* Once it has trained to this criterion, you can switch back to viewing the network, and `Step Trial` through trials to see that it is indeed performing correctly. You can also do a `Test All` and look at the `TstTrlPlot` and click on the `TstTrlLog` to see a record of a set of test trials. Pay particular attention to the `GPiThal` activation and what the PFC is maintaining and outputting as a result -- you should see Go firing on Store trials for one of the stripes, and NoGo on Ignore trials for that same stripe. The other PFCmnt stripe may gate for Ignore trials -- it can afford to do so given the capacity of this network relative to the number of items that needs to be stored -- but typically the model will not do output gating in PFCout for these. - -> **Question 10.7:** Report the patterns of DA dopamine firing in relation to the `PctErr` performance of the model, and explain how this makes sense in terms of how the network learns. - -Now we will explore how the Matrix gating is driven in terms of learned synaptic weights. Note that we have split out the SIR control inputs into a separate CtrlInput layer that projects to the Matrix layers -- this control information is all that the Matrix layer requires. It can also learn with the irrelevant A-D inputs, but just takes a bit longer. - -* Click on `s.Wt` in the NetView tab, and then click on the individual SIR units in the `CtrlInput` layer to show the learned sending weights from these units to the `Matrix`. - -> **Question 10.8:** Explain how these weights from S,I,R inputs to the various Matrix stripes makes sense in terms of how the network actually solved the task, including where the Store information was maintained, and where it was output, and why the Ignore trials did not disturb the stored information. - -Note that for this simple task, the number of items that needs to be maintained at any one time is just one, which is why the network still gates Ignore trials (it just learns not to output gate them). If you're feeling curious you can use the Wizard in the software to change the number of PBWM stripes to 1, and there you should see that the model can still learn this task but is now pressured to do so by ignoring I trials at the level of input gating. However, by taking away the parallel learning abilities of the model, it can take longer to learn. - -If you want to experience the full power of the PBWM learning framework, you can check out the `sir52_v50` model, which takes the SIR task to the next level with two independent streams of maintained information. Here, the network has to store and maintain multiple items and selectively recall each of them depending on other cues, which is very demanding task that networks without selective gating capabilities cannot achieve. This version more strongly stresses the selective maintenance gating aspect of the model (and indeed this problem motivated the need for a BG in the first place). - -# References - -Bosch, M., & Hayashi, Y. (2012). Structural plasticity of dendritic spines. Current Opinion in Neurobiology, 22(3), 383–388. https://doi.org/10.1016/j.conb.2011.09.002 - -O'Reilly, R.C. & Frank, M.J. (2006), Making Working Memory Work: A Computational Model of Learning in the Frontal Cortex and Basal Ganglia. Neural Computation, 18, 283-328. - -Redondo, R. L., & Morris, R. G. M. (2011). Making memories last: The synaptic tagging and capture hypothesis. Nature Reviews Neuroscience, 12(1), 17–30. https://doi.org/10.1038/nrn2963 - -Rudy, J. W. (2015). Variation in the persistence of memory: An interplay between actin dynamics and AMPA receptors. Brain Research, 1621, 29–37. https://doi.org/10.1016/j.brainres.2014.12.009 - -Sommer, M. A., & Wurtz, R. H. (2000). Composition and topographic organization of signals sent from the frontal eye field to the superior colliculus. Journal of Neurophysiology, 83(4), 1979–2001. - - diff --git a/examples/sir2/enumgen.go b/examples/sir2/enumgen.go deleted file mode 100644 index eda5c54..0000000 --- a/examples/sir2/enumgen.go +++ /dev/null @@ -1,48 +0,0 @@ -// Code generated by "core generate -add-types"; DO NOT EDIT. - -package main - -import ( - "cogentcore.org/core/enums" -) - -var _ActionsValues = []Actions{0, 1, 2, 3, 4} - -// ActionsN is the highest valid value for type Actions, plus one. -const ActionsN Actions = 5 - -var _ActionsValueMap = map[string]Actions{`Store1`: 0, `Store2`: 1, `Ignore`: 2, `Recall1`: 3, `Recall2`: 4} - -var _ActionsDescMap = map[Actions]string{0: ``, 1: ``, 2: ``, 3: ``, 4: ``} - -var _ActionsMap = map[Actions]string{0: `Store1`, 1: `Store2`, 2: `Ignore`, 3: `Recall1`, 4: `Recall2`} - -// String returns the string representation of this Actions value. -func (i Actions) String() string { return enums.String(i, _ActionsMap) } - -// SetString sets the Actions value from its string representation, -// and returns an error if the string is invalid. -func (i *Actions) SetString(s string) error { - return enums.SetString(i, s, _ActionsValueMap, "Actions") -} - -// Int64 returns the Actions value as an int64. -func (i Actions) Int64() int64 { return int64(i) } - -// SetInt64 sets the Actions value from an int64. -func (i *Actions) SetInt64(in int64) { *i = Actions(in) } - -// Desc returns the description of the Actions value. -func (i Actions) Desc() string { return enums.Desc(i, _ActionsDescMap) } - -// ActionsValues returns all possible values for the type Actions. -func ActionsValues() []Actions { return _ActionsValues } - -// Values returns all possible values for the type Actions. -func (i Actions) Values() []enums.Enum { return enums.Values(_ActionsValues) } - -// MarshalText implements the [encoding.TextMarshaler] interface. -func (i Actions) MarshalText() ([]byte, error) { return []byte(i.String()), nil } - -// UnmarshalText implements the [encoding.TextUnmarshaler] interface. -func (i *Actions) UnmarshalText(text []byte) error { return enums.UnmarshalText(i, text, "Actions") } diff --git a/examples/sir2/sir2.go b/examples/sir2/sir2.go deleted file mode 100644 index ac1ba3c..0000000 --- a/examples/sir2/sir2.go +++ /dev/null @@ -1,765 +0,0 @@ -// Copyright (c) 2024, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// sir illustrates the dynamic gating of information into PFC active -// maintenance, by the basal ganglia (BG). It uses a simple Store-Ignore-Recall -// (SIR) task, where the BG system learns via phasic dopamine signals -// and trial-and-error exploration, discovering what needs to be stored, -// ignored, and recalled as a function of reinforcement of correct behavior, -// and learned reinforcement of useful working memory representations. -package main - -//go:generate core generate -add-types - -import ( - "fmt" - - "cogentcore.org/core/core" - "cogentcore.org/core/enums" - "cogentcore.org/core/icons" - "cogentcore.org/core/math32" - "cogentcore.org/core/tree" - "cogentcore.org/lab/base/randx" - "github.com/emer/emergent/v2/econfig" - "github.com/emer/emergent/v2/egui" - "github.com/emer/emergent/v2/elog" - "github.com/emer/emergent/v2/emer" - "github.com/emer/emergent/v2/env" - "github.com/emer/emergent/v2/estats" - "github.com/emer/emergent/v2/etime" - "github.com/emer/emergent/v2/looper" - "github.com/emer/emergent/v2/netview" - "github.com/emer/emergent/v2/params" - "github.com/emer/emergent/v2/paths" - "github.com/emer/leabra/v2/leabra" -) - -func main() { - sim := &Sim{} - sim.New() - sim.ConfigAll() - sim.RunGUI() -} - -// ParamSets is the default set of parameters. -// Base is always applied, and others can be optionally -// selected to apply on top of that. -var ParamSets = params.Sets{ - "Base": { - {Sel: "Path", Desc: "no extra learning factors", - Params: params.Params{ - "Path.Learn.Lrate": "0.01", // slower overall is key - "Path.Learn.Norm.On": "false", - "Path.Learn.Momentum.On": "false", - "Path.Learn.WtBal.On": "false", - }}, - {Sel: "Layer", Desc: "no decay", - Params: params.Params{ - "Layer.Act.Init.Decay": "0", // key for all layers not otherwise done automatically - }}, - {Sel: ".BackPath", Desc: "top-down back-projections MUST have lower relative weight scale, otherwise network hallucinates", - Params: params.Params{ - "Path.WtScale.Rel": "0.2", - }}, - {Sel: ".BgFixed", Desc: "BG Matrix -> GP wiring", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.8", - "Path.WtInit.Var": "0", - "Path.WtInit.Sym": "false", - }}, - {Sel: ".RWPath", Desc: "Reward prediction -- into PVi", - Params: params.Params{ - "Path.Learn.Lrate": "0.02", - "Path.WtInit.Mean": "0", - "Path.WtInit.Var": "0", - "Path.WtInit.Sym": "false", - }}, - {Sel: "#Rew", Desc: "Reward layer -- no clamp limits", - Params: params.Params{ - "Layer.Act.Clamp.Range.Min": "-1", - "Layer.Act.Clamp.Range.Max": "1", - }}, - {Sel: ".PFCMntDToOut", Desc: "PFC MntD -> PFC Out fixed", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.8", - "Path.WtInit.Var": "0", - "Path.WtInit.Sym": "false", - }}, - {Sel: ".FmPFCOutD", Desc: "PFC OutD needs to be strong b/c avg act says weak", - Params: params.Params{ - "Path.WtScale.Abs": "4", - }}, - {Sel: ".PFCFixed", Desc: "Input -> PFC", - Params: params.Params{ - "Path.Learn.Learn": "false", - "Path.WtInit.Mean": "0.8", - "Path.WtInit.Var": "0", - "Path.WtInit.Sym": "false", - }}, - {Sel: ".MatrixPath", Desc: "Matrix learning", - Params: params.Params{ - "Path.Learn.Lrate": "0.04", // .04 > .1 > .02 - "Path.WtInit.Var": "0.1", - "Path.Trace.GateNoGoPosLR": "1", // 0.1 default - "Path.Trace.NotGatedLR": "0.7", // 0.7 default - "Path.Trace.Decay": "1.0", // 1.0 default - "Path.Trace.AChDecay": "0.0", // not useful even at .1, surprising.. - "Path.Trace.Deriv": "true", // true default, better than false - }}, - {Sel: ".MatrixLayer", Desc: "exploring these options", - Params: params.Params{ - "Layer.Act.XX1.Gain": "100", - "Layer.Inhib.Layer.Gi": "2.2", // 2.2 > 1.8 > 2.4 - "Layer.Inhib.Layer.FB": "1", // 1 > .5 - "Layer.Inhib.Pool.On": "true", - "Layer.Inhib.Pool.Gi": "2.1", // def 1.9 - "Layer.Inhib.Pool.FB": "0", - "Layer.Inhib.Self.On": "true", - "Layer.Inhib.Self.Gi": "0.4", // def 0.3 - "Layer.Inhib.ActAvg.Init": "0.05", - "Layer.Inhib.ActAvg.Fixed": "true", - }}, - {Sel: "#GPiThal", Desc: "defaults also set automatically by layer but included here just to be sure", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "1.8", // 1.8 > 2.0 - "Layer.Inhib.Layer.FB": "1", // 1.0 > 0.5 - "Layer.Inhib.Pool.On": "false", - "Layer.Inhib.ActAvg.Init": ".2", - "Layer.Inhib.ActAvg.Fixed": "true", - "Layer.Act.Dt.GTau": "3", - "Layer.GPiGate.GeGain": "3", - "Layer.GPiGate.NoGo": "1.25", // was 1 default - "Layer.GPiGate.Thr": "0.25", // .2 default - }}, - {Sel: "#GPeNoGo", Desc: "GPe is a regular layer -- needs special params", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "2.4", // 2.4 > 2.2 > 1.8 > 2.6 - "Layer.Inhib.Layer.FB": "0.5", - "Layer.Inhib.Layer.FBTau": "3", // otherwise a bit jumpy - "Layer.Inhib.Pool.On": "false", - "Layer.Inhib.ActAvg.Init": ".2", - "Layer.Inhib.ActAvg.Fixed": "true", - }}, - {Sel: ".PFC", Desc: "pfc defaults", - Params: params.Params{ - "Layer.Inhib.Layer.On": "false", - "Layer.Inhib.Pool.On": "true", - "Layer.Inhib.Pool.Gi": "1.8", - "Layer.Inhib.Pool.FB": "1", - "Layer.Inhib.ActAvg.Init": "0.2", - "Layer.Inhib.ActAvg.Fixed": "true", - }}, - {Sel: "#Input", Desc: "Basic params", - Params: params.Params{ - "Layer.Inhib.ActAvg.Init": "0.25", - "Layer.Inhib.ActAvg.Fixed": "true", - }}, - {Sel: "#Output", Desc: "Basic params", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "2", - "Layer.Inhib.Layer.FB": "0.5", - "Layer.Inhib.ActAvg.Init": "0.25", - "Layer.Inhib.ActAvg.Fixed": "true", - }}, - {Sel: "#InputToOutput", Desc: "weaker", - Params: params.Params{ - "Path.WtScale.Rel": "0.5", - }}, - {Sel: "#Hidden", Desc: "Basic params", - Params: params.Params{ - "Layer.Inhib.Layer.Gi": "2", - "Layer.Inhib.Layer.FB": "0.5", - }}, - {Sel: "#SNc", Desc: "allow negative", - Params: params.Params{ - "Layer.Act.Clamp.Range.Min": "-1", - "Layer.Act.Clamp.Range.Max": "1", - }}, - {Sel: "#RWPred", Desc: "keep it guessing", - Params: params.Params{ - "Layer.RW.PredRange.Min": "0.02", // single most important param! was .01 -- need penalty.. - "Layer.RW.PredRange.Max": "0.95", - }}, - }, -} - -// Config has config parameters related to running the sim -type Config struct { - // total number of runs to do when running Train - NRuns int `default:"10" min:"1"` - - // total number of epochs per run - NEpochs int `default:"200"` - - // total number of trials per epochs per run - NTrials int `default:"100"` - - // stop run after this number of perfect, zero-error epochs. - NZero int `default:"5"` - - // how often to run through all the test patterns, in terms of training epochs. - // can use 0 or -1 for no testing. - TestInterval int `default:"-1"` -} - -// Sim encapsulates the entire simulation model, and we define all the -// functionality as methods on this struct. This structure keeps all relevant -// state information organized and available without having to pass everything around -// as arguments to methods, and provides the core GUI interface (note the view tags -// for the fields which provide hints to how things should be displayed). -type Sim struct { - - // BurstDaGain is the strength of dopamine bursts: 1 default -- reduce for PD OFF, increase for PD ON - BurstDaGain float32 - - // DipDaGain is the strength of dopamine dips: 1 default -- reduce to siulate D2 agonists - DipDaGain float32 - - // Config contains misc configuration parameters for running the sim - Config Config `new-window:"+" display:"no-inline"` - - // the network -- click to view / edit parameters for layers, paths, etc - Net *leabra.Network `new-window:"+" display:"no-inline"` - - // network parameter management - Params emer.NetParams `display:"add-fields"` - - // contains looper control loops for running sim - Loops *looper.Stacks `new-window:"+" display:"no-inline"` - - // contains computed statistic values - Stats estats.Stats `new-window:"+"` - - // Contains all the logs and information about the logs.' - Logs elog.Logs `new-window:"+"` - - // Environments - Envs env.Envs `new-window:"+" display:"no-inline"` - - // leabra timing parameters and state - Context leabra.Context `new-window:"+"` - - // netview update parameters - ViewUpdate netview.ViewUpdate `display:"add-fields"` - - // manages all the gui elements - GUI egui.GUI `display:"-"` - - // a list of random seeds to use for each run - RandSeeds randx.Seeds `display:"-"` -} - -// New creates new blank elements and initializes defaults -func (ss *Sim) New() { - ss.Defaults() - econfig.Config(&ss.Config, "config.toml") - ss.Net = leabra.NewNetwork("SIR") - ss.Params.Config(ParamSets, "", "", ss.Net) - ss.Stats.Init() - ss.Stats.SetInt("Expt", 0) - ss.RandSeeds.Init(100) // max 100 runs - ss.InitRandSeed(0) - ss.Context.Defaults() -} - -func (ss *Sim) Defaults() { - ss.BurstDaGain = 1 - ss.DipDaGain = 1 -} - -////////////////////////////////////////////////////////////////////////////// -// Configs - -// ConfigAll configures all the elements using the standard functions -func (ss *Sim) ConfigAll() { - ss.ConfigEnv() - ss.ConfigNet(ss.Net) - ss.ConfigLogs() - ss.ConfigLoops() -} - -func (ss *Sim) ConfigEnv() { - // Can be called multiple times -- don't re-create - var trn, tst *SIREnv - if len(ss.Envs) == 0 { - trn = &SIREnv{} - tst = &SIREnv{} - } else { - trn = ss.Envs.ByMode(etime.Train).(*SIREnv) - tst = ss.Envs.ByMode(etime.Test).(*SIREnv) - } - - // note: names must be standard here! - trn.Name = etime.Train.String() - trn.SetNStim(4) - trn.RewVal = 1 - trn.NoRewVal = 0 - trn.Trial.Max = ss.Config.NTrials - - tst.Name = etime.Test.String() - tst.SetNStim(4) - tst.RewVal = 1 - tst.NoRewVal = 0 - tst.Trial.Max = ss.Config.NTrials - - trn.Init(0) - tst.Init(0) - - // note: names must be in place when adding - ss.Envs.Add(trn, tst) -} - -func (ss *Sim) ConfigNet(net *leabra.Network) { - net.SetRandSeed(ss.RandSeeds[0]) // init new separate random seed, using run = 0 - - rew, rp, da := net.AddRWLayers("", 2) - da.Name = "SNc" - - inp := net.AddLayer2D("Input", 1, 4, leabra.InputLayer) - ctrl := net.AddLayer2D("CtrlInput", 1, 5, leabra.InputLayer) - out := net.AddLayer2D("Output", 1, 4, leabra.TargetLayer) - hid := net.AddLayer2D("Hidden", 7, 7, leabra.SuperLayer) - - // args: nY, nMaint, nOut, nNeurBgY, nNeurBgX, nNeurPfcY, nNeurPfcX - mtxGo, mtxNoGo, gpe, gpi, cin, pfcMnt, pfcMntD, pfcOut, pfcOutD := net.AddPBWM("", 4, 2, 2, 1, 5, 1, 4) - _ = gpe - _ = gpi - _ = pfcMnt - _ = pfcMntD - _ = pfcOut - _ = cin - - cin.CIN.RewLays.Add(rew.Name, rp.Name) - - full := paths.NewFull() - fmin := paths.NewRect() - fmin.Size.Set(1, 1) - fmin.Scale.Set(1, 1) - fmin.Wrap = true - - net.ConnectLayers(ctrl, rp, full, leabra.RWPath) - net.ConnectLayers(pfcMntD, rp, full, leabra.RWPath) - net.ConnectLayers(pfcOutD, rp, full, leabra.RWPath) - - net.ConnectLayers(ctrl, mtxGo, fmin, leabra.MatrixPath) - net.ConnectLayers(ctrl, mtxNoGo, fmin, leabra.MatrixPath) - pt := net.ConnectLayers(inp, pfcMnt, fmin, leabra.ForwardPath) - pt.AddClass("PFCFixed") - - net.ConnectLayers(inp, hid, full, leabra.ForwardPath) - net.ConnectLayers(ctrl, hid, full, leabra.ForwardPath) - net.BidirConnectLayers(hid, out, full) - pt = net.ConnectLayers(pfcOutD, hid, full, leabra.ForwardPath) - pt.AddClass("FmPFCOutD") - pt = net.ConnectLayers(pfcOutD, out, full, leabra.ForwardPath) - pt.AddClass("FmPFCOutD") - net.ConnectLayers(inp, out, full, leabra.ForwardPath) - - inp.PlaceAbove(rew) - out.PlaceRightOf(inp, 2) - ctrl.PlaceBehind(inp, 2) - hid.PlaceBehind(ctrl, 2) - mtxGo.PlaceRightOf(rew, 2) - pfcMnt.PlaceRightOf(out, 2) - - net.Build() - net.Defaults() - - da.AddAllSendToBut() // send dopamine to all layers.. - gpi.SendPBWMParams() - - ss.ApplyParams() - net.InitWeights() -} - -func (ss *Sim) ApplyParams() { - if ss.Loops != nil { - trn := ss.Loops.Stacks[etime.Train] - trn.Loops[etime.Run].Counter.Max = ss.Config.NRuns - trn.Loops[etime.Epoch].Counter.Max = ss.Config.NEpochs - } - ss.Params.SetAll() - - matg := ss.Net.LayerByName("MatrixGo") - matn := ss.Net.LayerByName("MatrixNoGo") - - matg.Matrix.BurstGain = ss.BurstDaGain - matg.Matrix.DipGain = ss.DipDaGain - matn.Matrix.BurstGain = ss.BurstDaGain - matn.Matrix.DipGain = ss.DipDaGain -} - -//////////////////////////////////////////////////////////////////////////////// -// Init, utils - -// Init restarts the run, and initializes everything, including network weights -// and resets the epoch log table -func (ss *Sim) Init() { - ss.Stats.SetString("RunName", ss.Params.RunName(0)) // in case user interactively changes tag - ss.Loops.ResetCounters() - ss.InitRandSeed(0) - ss.ConfigEnv() // re-config env just in case a different set of patterns was - ss.ApplyParams() - ss.NewRun() - ss.ViewUpdate.RecordSyns() - ss.ViewUpdate.Update() -} - -// InitRandSeed initializes the random seed based on current training run number -func (ss *Sim) InitRandSeed(run int) { - ss.RandSeeds.Set(run) - ss.RandSeeds.Set(run, &ss.Net.Rand) -} - -// ConfigLoops configures the control loops: Training, Testing -func (ss *Sim) ConfigLoops() { - ls := looper.NewStacks() - - trls := ss.Config.NTrials - - ls.AddStack(etime.Train). - AddTime(etime.Run, ss.Config.NRuns). - AddTime(etime.Epoch, ss.Config.NEpochs). - AddTime(etime.Trial, trls). - AddTime(etime.Cycle, 100) - - ls.AddStack(etime.Test). - AddTime(etime.Epoch, 1). - AddTime(etime.Trial, trls). - AddTime(etime.Cycle, 100) - - leabra.LooperStdPhases(ls, &ss.Context, ss.Net, 75, 99) // plus phase timing - leabra.LooperSimCycleAndLearn(ls, ss.Net, &ss.Context, &ss.ViewUpdate) // std algo code - - ls.Stacks[etime.Train].OnInit.Add("Init", func() { ss.Init() }) - - for m, _ := range ls.Stacks { - stack := ls.Stacks[m] - stack.Loops[etime.Trial].OnStart.Add("ApplyInputs", func() { - ss.ApplyInputs() - }) - } - - ls.Loop(etime.Train, etime.Run).OnStart.Add("NewRun", ss.NewRun) - - ls.Loop(etime.Train, etime.Run).OnEnd.Add("RunDone", func() { - if ss.Stats.Int("Run") >= ss.Config.NRuns-1 { - expt := ss.Stats.Int("Expt") - ss.Stats.SetInt("Expt", expt+1) - } - }) - - stack := ls.Stacks[etime.Train] - cyc, _ := stack.Loops[etime.Cycle] - plus := cyc.EventByName("MinusPhase:End") - plus.OnEvent.InsertBefore("MinusPhase:End", "ApplyReward", func() bool { - ss.ApplyReward(true) - return true - }) - - // Train stop early condition - ls.Loop(etime.Train, etime.Epoch).IsDone.AddBool("NZeroStop", func() bool { - // This is calculated in TrialStats - stopNz := ss.Config.NZero - if stopNz <= 0 { - stopNz = 2 - } - curNZero := ss.Stats.Int("NZero") - stop := curNZero >= stopNz - return stop - }) - - // Add Testing - trainEpoch := ls.Loop(etime.Train, etime.Epoch) - trainEpoch.OnStart.Add("TestAtInterval", func() { - if (ss.Config.TestInterval > 0) && ((trainEpoch.Counter.Cur+1)%ss.Config.TestInterval == 0) { - // Note the +1 so that it doesn't occur at the 0th timestep. - ss.TestAll() - } - }) - - ///////////////////////////////////////////// - // Logging - - ls.Loop(etime.Test, etime.Epoch).OnEnd.Add("LogTestErrors", func() { - leabra.LogTestErrors(&ss.Logs) - }) - ls.AddOnEndToAll("Log", func(mode, time enums.Enum) { - ss.Log(mode.(etime.Modes), time.(etime.Times)) - }) - leabra.LooperResetLogBelow(ls, &ss.Logs) - ls.Loop(etime.Train, etime.Run).OnEnd.Add("RunStats", func() { - ss.Logs.RunStats("PctCor", "FirstZero", "LastZero") - }) - - //////////////////////////////////////////// - // GUI - - leabra.LooperUpdateNetView(ls, &ss.ViewUpdate, ss.Net, ss.NetViewCounters) - leabra.LooperUpdatePlots(ls, &ss.GUI) - ls.Stacks[etime.Train].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - ls.Stacks[etime.Test].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - - ss.Loops = ls -} - -// ApplyInputs applies input patterns from given environment. -// It is good practice to have this be a separate method with appropriate -// args so that it can be used for various different contexts -// (training, testing, etc). -func (ss *Sim) ApplyInputs() { - ctx := &ss.Context - net := ss.Net - ev := ss.Envs.ByMode(ctx.Mode).(*SIREnv) - ev.Step() - - lays := net.LayersByType(leabra.InputLayer, leabra.TargetLayer) - net.InitExt() - ss.Stats.SetString("TrialName", ev.String()) - for _, lnm := range lays { - if lnm == "Rew" { - continue - } - ly := ss.Net.LayerByName(lnm) - pats := ev.State(ly.Name) - if pats != nil { - ly.ApplyExt(pats) - } - } -} - -// ApplyReward computes reward based on network output and applies it. -// Call at start of 3rd quarter (plus phase). -func (ss *Sim) ApplyReward(train bool) { - var en *SIREnv - if train { - en = ss.Envs.ByMode(etime.Train).(*SIREnv) - } else { - en = ss.Envs.ByMode(etime.Test).(*SIREnv) - } - if en.Act != Recall1 && en.Act != Recall2 { // only reward on recall trials! - return - } - out := ss.Net.LayerByName("Output") - mxi := out.Pools[0].Inhib.Act.MaxIndex - en.SetReward(int(mxi)) - pats := en.State("Rew") - ly := ss.Net.LayerByName("Rew") - ly.ApplyExt1DTsr(pats) -} - -// NewRun intializes a new run of the model, using the TrainEnv.Run counter -// for the new run value -func (ss *Sim) NewRun() { - ctx := &ss.Context - ss.InitRandSeed(ss.Loops.Loop(etime.Train, etime.Run).Counter.Cur) - ss.Envs.ByMode(etime.Train).Init(0) - ss.Envs.ByMode(etime.Test).Init(0) - ctx.Reset() - ctx.Mode = etime.Train - ss.Net.InitWeights() - ss.StatsInit() - ss.StatCounters() - ss.Logs.ResetLog(etime.Train, etime.Epoch) - ss.Logs.ResetLog(etime.Test, etime.Epoch) -} - -// TestAll runs through the full set of testing items -func (ss *Sim) TestAll() { - ss.Envs.ByMode(etime.Test).Init(0) - ss.Loops.ResetAndRun(etime.Test) - ss.Loops.Mode = etime.Train // Important to reset Mode back to Train because this is called from within the Train Run. -} - -//////////////////////////////////////////////////////////////////////// -// Stats - -// StatsInit initializes all the statistics. -// called at start of new run -func (ss *Sim) StatsInit() { - ss.Stats.SetFloat("SSE", 0.0) - ss.Stats.SetFloat("DA", 0.0) - ss.Stats.SetFloat("AbsDA", 0.0) - ss.Stats.SetFloat("RewPred", 0.0) - ss.Stats.SetString("TrialName", "") - ss.Logs.InitErrStats() // inits TrlErr, FirstZero, LastZero, NZero -} - -// StatCounters saves current counters to Stats, so they are available for logging etc -// Also saves a string rep of them for ViewUpdate.Text -func (ss *Sim) StatCounters() { - ctx := &ss.Context - mode := ctx.Mode - ss.Loops.Stacks[mode].CountersToStats(&ss.Stats) - // always use training epoch.. - trnEpc := ss.Loops.Stacks[etime.Train].Loops[etime.Epoch].Counter.Cur - ss.Stats.SetInt("Epoch", trnEpc) - trl := ss.Stats.Int("Trial") - ss.Stats.SetInt("Trial", trl) - ss.Stats.SetInt("Cycle", int(ctx.Cycle)) -} - -func (ss *Sim) NetViewCounters(tm etime.Times) { - if ss.ViewUpdate.View == nil { - return - } - if tm == etime.Trial { - ss.TrialStats() // get trial stats for current di - } - ss.StatCounters() - ss.ViewUpdate.Text = ss.Stats.Print([]string{"Run", "Epoch", "Trial", "TrialName", "Cycle", "SSE", "TrlErr"}) -} - -// TrialStats computes the trial-level statistics. -// Aggregation is done directly from log data. -func (ss *Sim) TrialStats() { - params := fmt.Sprintf("burst: %g, dip: %g", ss.BurstDaGain, ss.DipDaGain) - ss.Stats.SetString("RunName", params) - - out := ss.Net.LayerByName("Output") - - sse, avgsse := out.MSE(0.5) // 0.5 = per-unit tolerance -- right side of .5 - ss.Stats.SetFloat("SSE", sse) - ss.Stats.SetFloat("AvgSSE", avgsse) - if sse > 0 { - ss.Stats.SetFloat("TrlErr", 1) - } else { - ss.Stats.SetFloat("TrlErr", 0) - } - - snc := ss.Net.LayerByName("SNc") - ss.Stats.SetFloat32("DA", snc.Neurons[0].Act) - ss.Stats.SetFloat32("AbsDA", math32.Abs(snc.Neurons[0].Act)) - rp := ss.Net.LayerByName("RWPred") - ss.Stats.SetFloat32("RewPred", rp.Neurons[0].Act) -} - -////////////////////////////////////////////////////////////////////// -// Logging - -func (ss *Sim) ConfigLogs() { - ss.Stats.SetString("RunName", ss.Params.RunName(0)) // used for naming logs, stats, etc - - ss.Logs.AddCounterItems(etime.Run, etime.Epoch, etime.Trial, etime.Cycle) - ss.Logs.AddStatIntNoAggItem(etime.AllModes, etime.AllTimes, "Expt") - ss.Logs.AddStatStringItem(etime.AllModes, etime.AllTimes, "RunName") - ss.Logs.AddStatStringItem(etime.AllModes, etime.Trial, "TrialName") - - ss.Logs.AddPerTrlMSec("PerTrlMSec", etime.Run, etime.Epoch, etime.Trial) - - ss.Logs.AddStatAggItem("SSE", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("AvgSSE", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddErrStatAggItems("TrlErr", etime.Run, etime.Epoch, etime.Trial) - - ss.Logs.AddStatAggItem("DA", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("AbsDA", etime.Run, etime.Epoch, etime.Trial) - ss.Logs.AddStatAggItem("RewPred", etime.Run, etime.Epoch, etime.Trial) - - ss.Logs.PlotItems("PctErr", "AbsDA", "RewPred") - - ss.Logs.CreateTables() - ss.Logs.SetContext(&ss.Stats, ss.Net) - // don't plot certain combinations we don't use - ss.Logs.NoPlot(etime.Train, etime.Cycle) - ss.Logs.NoPlot(etime.Test, etime.Cycle) - ss.Logs.NoPlot(etime.Test, etime.Trial) - ss.Logs.NoPlot(etime.Test, etime.Run) - ss.Logs.SetMeta(etime.Train, etime.Run, "LegendCol", "RunName") -} - -// Log is the main logging function, handles special things for different scopes -func (ss *Sim) Log(mode etime.Modes, time etime.Times) { - ctx := &ss.Context - if mode != etime.Analyze { - ctx.Mode = mode // Also set specifically in a Loop callback. - } - dt := ss.Logs.Table(mode, time) - if dt == nil { - return - } - row := dt.Rows - - switch { - case time == etime.Cycle: - return - case time == etime.Trial: - ss.TrialStats() - ss.StatCounters() - } - - ss.Logs.LogRow(mode, time, row) // also logs to file, etc - - if mode == etime.Test { - ss.GUI.UpdateTableView(etime.Test, etime.Trial) - } -} - -////////////////////////////////////////////////////////////////////// -// GUI - -// ConfigGUI configures the Cogent Core GUI interface for this simulation. -func (ss *Sim) ConfigGUI() { - title := "SIR" - ss.GUI.MakeBody(ss, "sir", title, `sir illustrates the dynamic gating of information into PFC active maintenance, by the basal ganglia (BG). It uses a simple Store-Ignore-Recall (SIR) task, where the BG system learns via phasic dopamine signals and trial-and-error exploration, discovering what needs to be stored, ignored, and recalled as a function of reinforcement of correct behavior, and learned reinforcement of useful working memory representations. See README.md on GitHub.

    `) - ss.GUI.CycleUpdateInterval = 10 - - nv := ss.GUI.AddNetView("Network") - nv.Options.MaxRecs = 300 - nv.Options.Raster.Max = 100 - nv.SetNet(ss.Net) - nv.Options.PathWidth = 0.003 - ss.ViewUpdate.Config(nv, etime.GammaCycle, etime.GammaCycle) - ss.GUI.ViewUpdate = &ss.ViewUpdate - nv.Current() - - // nv.SceneXYZ().Camera.Pose.Pos.Set(0, 1.15, 2.25) - // nv.SceneXYZ().Camera.LookAt(math32.Vector3{0, -0.15, 0}, math32.Vector3{0, 1, 0}) - - ss.GUI.AddPlots(title, &ss.Logs) - - ss.GUI.AddTableView(&ss.Logs, etime.Test, etime.Trial) - - ss.GUI.FinalizeGUI(false) -} - -func (ss *Sim) MakeToolbar(p *tree.Plan) { - ss.GUI.AddLooperCtrl(p, ss.Loops) - - tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "Reset RunLog", - Icon: icons.Reset, - Tooltip: "Reset the accumulated log of all Runs, which are tagged with the ParamSet used", - Active: egui.ActiveAlways, - Func: func() { - ss.Logs.ResetLog(etime.Train, etime.Run) - ss.GUI.UpdatePlot(etime.Train, etime.Run) - }, - }) - //////////////////////////////////////////////// - tree.Add(p, func(w *core.Separator) {}) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "New Seed", - Icon: icons.Add, - Tooltip: "Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time.", - Active: egui.ActiveAlways, - Func: func() { - ss.RandSeeds.NewSeeds() - }, - }) - ss.GUI.AddToolbarItem(p, egui.ToolbarItem{Label: "README", - Icon: icons.FileMarkdown, - Tooltip: "Opens your browser on the README file that contains instructions for how to run this model.", - Active: egui.ActiveAlways, - Func: func() { - core.TheApp.OpenURL("https://github.com/CompCogNeuro/sims/blob/main/ch9/sir/README.md") - }, - }) -} - -func (ss *Sim) RunGUI() { - ss.Init() - ss.ConfigGUI() - ss.GUI.Body.RunMainWindow() -} diff --git a/examples/sir2/sir2_env.go b/examples/sir2/sir2_env.go deleted file mode 100644 index 75a7d83..0000000 --- a/examples/sir2/sir2_env.go +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright (c) 2019, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "fmt" - "math/rand" - - "github.com/emer/emergent/v2/env" - "github.com/emer/emergent/v2/etime" - "github.com/emer/etensor/tensor" -) - -// Actions are SIR actions -type Actions int32 //enums:enum - -const ( - Store1 Actions = iota - Store2 - Ignore - Recall1 - Recall2 -) - -// SIREnv implements the store-ignore-recall task -type SIREnv struct { - // name of this environment - Name string - - // number of different stimuli that can be maintained - NStim int - - // value for reward, based on whether model output = target - RewVal float32 - - // value for non-reward - NoRewVal float32 - - // current action - Act Actions - - // current stimulus - Stim int - - // current stimulus being maintained - Maint1 int - - // current stimulus being maintained - Maint2 int - - // stimulus input pattern - Input tensor.Float64 - - // input pattern with action - CtrlInput tensor.Float64 - - // output pattern of what to respond - Output tensor.Float64 - - // reward value - Reward tensor.Float64 - - // trial is the step counter within epoch - Trial env.Counter `display:"inline"` -} - -func (ev *SIREnv) Label() string { return ev.Name } - -// SetNStim initializes env for given number of stimuli, init states -func (ev *SIREnv) SetNStim(n int) { - ev.NStim = n - ev.Input.SetShape([]int{n}) - ev.CtrlInput.SetShape([]int{int(ActionsN)}) - ev.Output.SetShape([]int{n}) - ev.Reward.SetShape([]int{1}) - if ev.RewVal == 0 { - ev.RewVal = 1 - } -} - -func (ev *SIREnv) State(element string) tensor.Tensor { - switch element { - case "Input": - return &ev.Input - case "CtrlInput": - return &ev.CtrlInput - case "Output": - return &ev.Output - case "Rew": - return &ev.Reward - } - return nil -} - -func (ev *SIREnv) Actions() env.Elements { - return nil -} - -// StimStr returns a letter string rep of stim (A, B...) -func (ev *SIREnv) StimStr(stim int) string { - return string([]byte{byte('A' + stim)}) -} - -// String returns the current state as a string -func (ev *SIREnv) String() string { - return fmt.Sprintf("%s_%s_mnt1_%s_mnt2_%s_rew_%g", ev.Act, ev.StimStr(ev.Stim), ev.StimStr(ev.Maint1), ev.StimStr(ev.Maint2), ev.Reward.Values[0]) -} - -func (ev *SIREnv) Init(run int) { - ev.Trial.Scale = etime.Trial - ev.Trial.Init() - ev.Trial.Cur = -1 // init state -- key so that first Step() = 0 - ev.Maint1 = -1 - ev.Maint2 = -1 -} - -// SetState sets the input, output states -func (ev *SIREnv) SetState() { - ev.CtrlInput.SetZeros() - ev.CtrlInput.Values[ev.Act] = 1 - ev.Input.SetZeros() - if ev.Act != Recall1 && ev.Act != Recall2 { - ev.Input.Values[ev.Stim] = 1 - } - ev.Output.SetZeros() - ev.Output.Values[ev.Stim] = 1 -} - -// SetReward sets reward based on network's output -func (ev *SIREnv) SetReward(netout int) bool { - cor := ev.Stim // already correct - rw := netout == cor - if rw { - ev.Reward.Values[0] = float64(ev.RewVal) - } else { - ev.Reward.Values[0] = float64(ev.NoRewVal) - } - return rw -} - -// Step the SIR task -func (ev *SIREnv) StepSIR() { - for { - ev.Act = Actions(rand.Intn(int(ActionsN))) - if ev.Act == Store1 && ev.Maint1 >= 0 { // already full - continue - } - if ev.Act == Recall1 && ev.Maint1 < 0 { // nothing - continue - } - if ev.Act == Store2 && ev.Maint2 >= 0 { // already full - continue - } - if ev.Act == Recall2 && ev.Maint2 < 0 { // nothing - continue - } - break - } - ev.Stim = rand.Intn(ev.NStim) - switch ev.Act { - case Store1: - ev.Maint1 = ev.Stim - case Store2: - ev.Maint2 = ev.Stim - case Ignore: - case Recall1: - ev.Stim = ev.Maint1 - ev.Maint1 = -1 - case Recall2: - ev.Stim = ev.Maint2 - ev.Maint2 = -1 - } - ev.SetState() -} - -func (ev *SIREnv) Step() bool { - ev.StepSIR() - ev.Trial.Incr() - return true -} - -func (ev *SIREnv) Action(element string, input tensor.Tensor) { - // nop -} - -// Compile-time check that implements Env interface -var _ env.Env = (*SIREnv)(nil) diff --git a/examples/sir2/typegen.go b/examples/sir2/typegen.go deleted file mode 100644 index 0723111..0000000 --- a/examples/sir2/typegen.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by "core generate -add-types"; DO NOT EDIT. - -package main - -import ( - "cogentcore.org/core/types" -) - -var _ = types.AddType(&types.Type{Name: "main.Config", IDName: "config", Doc: "Config has config parameters related to running the sim", Fields: []types.Field{{Name: "NRuns", Doc: "total number of runs to do when running Train"}, {Name: "NEpochs", Doc: "total number of epochs per run"}, {Name: "NTrials", Doc: "total number of trials per epochs per run"}, {Name: "NZero", Doc: "stop run after this number of perfect, zero-error epochs."}, {Name: "TestInterval", Doc: "how often to run through all the test patterns, in terms of training epochs.\ncan use 0 or -1 for no testing."}}}) - -var _ = types.AddType(&types.Type{Name: "main.Sim", IDName: "sim", Doc: "Sim encapsulates the entire simulation model, and we define all the\nfunctionality as methods on this struct. This structure keeps all relevant\nstate information organized and available without having to pass everything around\nas arguments to methods, and provides the core GUI interface (note the view tags\nfor the fields which provide hints to how things should be displayed).", Fields: []types.Field{{Name: "BurstDaGain", Doc: "BurstDaGain is the strength of dopamine bursts: 1 default -- reduce for PD OFF, increase for PD ON"}, {Name: "DipDaGain", Doc: "DipDaGain is the strength of dopamine dips: 1 default -- reduce to siulate D2 agonists"}, {Name: "Config", Doc: "Config contains misc configuration parameters for running the sim"}, {Name: "Net", Doc: "the network -- click to view / edit parameters for layers, paths, etc"}, {Name: "Params", Doc: "network parameter management"}, {Name: "Loops", Doc: "contains looper control loops for running sim"}, {Name: "Stats", Doc: "contains computed statistic values"}, {Name: "Logs", Doc: "Contains all the logs and information about the logs.'"}, {Name: "Envs", Doc: "Environments"}, {Name: "Context", Doc: "leabra timing parameters and state"}, {Name: "ViewUpdate", Doc: "netview update parameters"}, {Name: "GUI", Doc: "manages all the gui elements"}, {Name: "RandSeeds", Doc: "a list of random seeds to use for each run"}}}) - -var _ = types.AddType(&types.Type{Name: "main.Actions", IDName: "actions", Doc: "Actions are SIR actions"}) - -var _ = types.AddType(&types.Type{Name: "main.SIREnv", IDName: "sir-env", Doc: "SIREnv implements the store-ignore-recall task", Fields: []types.Field{{Name: "Name", Doc: "name of this environment"}, {Name: "NStim", Doc: "number of different stimuli that can be maintained"}, {Name: "RewVal", Doc: "value for reward, based on whether model output = target"}, {Name: "NoRewVal", Doc: "value for non-reward"}, {Name: "Act", Doc: "current action"}, {Name: "Stim", Doc: "current stimulus"}, {Name: "Maint1", Doc: "current stimulus being maintained"}, {Name: "Maint2", Doc: "current stimulus being maintained"}, {Name: "Input", Doc: "stimulus input pattern"}, {Name: "CtrlInput", Doc: "input pattern with action"}, {Name: "Output", Doc: "output pattern of what to respond"}, {Name: "Reward", Doc: "reward value"}, {Name: "Trial", Doc: "trial is the step counter within epoch"}}}) diff --git a/go.mod b/go.mod index a7cd6be..5da942c 100644 --- a/go.mod +++ b/go.mod @@ -1,41 +1,57 @@ module github.com/emer/leabra/v2 -go 1.22.0 +go 1.23.4 require ( - cogentcore.org/core v0.3.12-0.20250708071531-c93d8bc12968 - cogentcore.org/lab v0.1.2-0.20250708073836-e69d5b7332a1 + cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3 + cogentcore.org/lab v0.1.2-0.20250709195455-46e9671330e5 + github.com/cogentcore/yaegi v0.0.0-20250622201820-b7838bdd95eb github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f + github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80 ) require ( - github.com/Bios-Marcel/wastebasket v0.0.4-0.20240213135800-f26f1ae0a7c4 // indirect - github.com/BurntSushi/toml v1.3.2 // indirect + github.com/Bios-Marcel/wastebasket/v2 v2.0.3 // indirect github.com/Masterminds/vcs v1.13.3 // indirect + github.com/adrg/strutil v0.3.1 // indirect github.com/alecthomas/chroma/v2 v2.13.0 // indirect github.com/anthonynsimon/bild v0.13.0 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect + github.com/bramvdbogaerde/go-scp v1.4.0 // indirect github.com/chewxy/math32 v1.10.1 // indirect - github.com/cogentcore/webgpu v0.0.0-20250118183535-3dd1436165cf // indirect + github.com/cogentcore/readline v0.1.3 // indirect + github.com/cogentcore/webgpu v0.23.0 // indirect github.com/dlclark/regexp2 v1.11.0 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/ericchiang/css v1.3.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect - github.com/goki/freetype v1.0.5 // indirect + github.com/go-text/typesetting v0.3.1-0.20250402122313-7a0f05577ff5 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/gomarkdown/markdown v0.0.0-20250311123330-531bef5e742b // indirect github.com/gorilla/css v1.0.1 // indirect github.com/h2non/filetype v1.1.3 // indirect github.com/hack-pad/go-indexeddb v0.3.2 // indirect github.com/hack-pad/hackpadfs v0.2.1 // indirect github.com/hack-pad/safejs v0.1.1 // indirect github.com/jinzhu/copier v0.4.0 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mattn/go-shellwords v1.0.12 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/muesli/termenv v0.15.2 // indirect github.com/pelletier/go-toml/v2 v2.1.2-0.20240227203013-2b69615b5d55 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/tdewolff/parse/v2 v2.7.19 // indirect + golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c // indirect - golang.org/x/image v0.18.0 // indirect - golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.29.0 // indirect + golang.org/x/image v0.25.0 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/net v0.41.0 // indirect + golang.org/x/sync v0.15.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.26.0 // indirect + golang.org/x/tools v0.33.0 // indirect gonum.org/v1/gonum v0.15.1 // indirect ) diff --git a/go.sum b/go.sum index 2db1e25..3dcbe46 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,14 @@ -cogentcore.org/core v0.3.9-0.20250127075122-ddf64b82d707 h1:iuSRxC52LhHwAiNKfKx0UslAmZV2Io7QkkQYOgOyM6M= -cogentcore.org/core v0.3.9-0.20250127075122-ddf64b82d707/go.mod h1:o9vCyA2Sdsc6W0qYvxzzQQlozfemP0TiAGEHDDR+xLU= -cogentcore.org/lab v0.0.0-20250116065728-014d19175d12 h1:Y11ebOAN9EMCEmSg2M/O5wToGOOvQN08CWi2iou8jGU= -cogentcore.org/lab v0.0.0-20250116065728-014d19175d12/go.mod h1:QlbVp7wdCDo59f6d0UIoPFLtIsCcG7DueOqd/8OohUs= -github.com/Bios-Marcel/wastebasket v0.0.4-0.20240213135800-f26f1ae0a7c4 h1:6lx9xzJAhdjq0LvVfbITeC3IH9Fzvo1aBahyPu2FuG8= -github.com/Bios-Marcel/wastebasket v0.0.4-0.20240213135800-f26f1ae0a7c4/go.mod h1:FChzXi1izqzdPb6BiNZmcZLGyTYiT61iGx9Rxx9GNeI= +cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3 h1:5rnkjHt+D9iQKjEhpgkc2FH5E/biP88BOS0mq2Jb0hw= +cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3/go.mod h1:1C0LnfjobosaRX6VqVz6O+ZJ6k85su3Ixx1FQPHSHIk= +cogentcore.org/lab v0.1.2-0.20250709195455-46e9671330e5 h1:2m7Foi7QBw2MQDFg083UdpgG50RuxnvJyCVgd2E1wyo= +cogentcore.org/lab v0.1.2-0.20250709195455-46e9671330e5/go.mod h1:9syt/RnqZ1KhL66XHCAZNXfnXIgzkUHhmA85aqEL7I4= +github.com/Bios-Marcel/wastebasket/v2 v2.0.3 h1:TkoDPcSqluhLGE+EssHu7UGmLgUEkWg7kNyHyyJ3Q9g= +github.com/Bios-Marcel/wastebasket/v2 v2.0.3/go.mod h1:769oPCv6eH7ugl90DYIsWwjZh4hgNmMS3Zuhe1bH6KU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Masterminds/vcs v1.13.3 h1:IIA2aBdXvfbIM+yl/eTnL4hb1XwdpvuQLglAix1gweE= github.com/Masterminds/vcs v1.13.3/go.mod h1:TiE7xuEjl1N4j016moRd6vezp6e6Lz23gypeXfzXeW8= +github.com/adrg/strutil v0.3.1 h1:OLvSS7CSJO8lBii4YmBt8jiK9QOtB9CzCzwl4Ic/Fz4= +github.com/adrg/strutil v0.3.1/go.mod h1:8h90y18QLrs11IBffcGX3NW/GFBXCMcNg4M7H6MspPA= github.com/alecthomas/assert/v2 v2.6.0 h1:o3WJwILtexrEUk3cUVal3oiQY2tfgr/FHWiz/v2n4FU= github.com/alecthomas/assert/v2 v2.6.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.13.0 h1:VP72+99Fb2zEcYM0MeaWJmV+xQvz5v5cxRHd+ooU1lI= @@ -18,12 +18,20 @@ github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW5 github.com/anthonynsimon/bild v0.13.0 h1:mN3tMaNds1wBWi1BrJq0ipDBhpkooYfu7ZFSMhXt1C8= github.com/anthonynsimon/bild v0.13.0/go.mod h1:tpzzp0aYkAsMi1zmfhimaDyX1xjn2OUc1AJZK/TF0AE= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/bramvdbogaerde/go-scp v1.4.0 h1:jKMwpwCbcX1KyvDbm/PDJuXcMuNVlLGi0Q0reuzjyKY= +github.com/bramvdbogaerde/go-scp v1.4.0/go.mod h1:on2aH5AxaFb2G0N5Vsdy6B0Ml7k9HuHSwfo1y0QzAbQ= github.com/chewxy/math32 v1.10.1 h1:LFpeY0SLJXeaiej/eIp2L40VYfscTvKh/FSEZ68uMkU= github.com/chewxy/math32 v1.10.1/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= -github.com/cogentcore/webgpu v0.0.0-20250118183535-3dd1436165cf h1:efac1kg29kwhSLyMd9EjwHbNX8jJpiRG5Dm2QIb56YQ= -github.com/cogentcore/webgpu v0.0.0-20250118183535-3dd1436165cf/go.mod h1:ciqaxChrmRRMU1SnI5OE12Cn3QWvOKO+e5nSy+N9S1o= +github.com/cogentcore/readline v0.1.3 h1:tYmjP3XHvsGwhsDLkAp+vBhkERmLFENZfftyPOR/PBE= +github.com/cogentcore/readline v0.1.3/go.mod h1:IHVtJHSKXspK7CMg3OC/bbPEXxO++dFlug/vsPktvas= +github.com/cogentcore/webgpu v0.23.0 h1:hrjnnuDZAPSRsqBjQAsJOyg2COGztIkBbxL87r0Q9KE= +github.com/cogentcore/webgpu v0.23.0/go.mod h1:ciqaxChrmRRMU1SnI5OE12Cn3QWvOKO+e5nSy+N9S1o= +github.com/cogentcore/yaegi v0.0.0-20250622201820-b7838bdd95eb h1:vXYqPLO36pRyyk1cVILVlk+slDI+Q7N4bgeWlh1sjA0= +github.com/cogentcore/yaegi v0.0.0-20250622201820-b7838bdd95eb/go.mod h1:+MGpZ0srBmeJ7aaOLTdVss8WLolt0/y/plVHLpxgd3A= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -34,17 +42,28 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250128232110-1e71a5c7249b h1:9JietOCAVjGy9U14dbTJT2APMywpKT+sGH25eYQtK1g= -github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250128232110-1e71a5c7249b/go.mod h1:5tbTQvSxq8CDPvZffN1Rni/mLYG3jLxYicyWed1t4yo= -github.com/emer/etensor v0.0.0-20250128230539-a9366874f7c3 h1:9yia9XH5z88JjDJwi1trDlVQTIEJ9TTUwdxo6bzr94U= -github.com/emer/etensor v0.0.0-20250128230539-a9366874f7c3/go.mod h1:pH4lH+TChvqJG4Lh2Qi1bS5e3pnGK1QDkCSfUX4J+lQ= +github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f h1:w1KvRnwE8kBesPlEzGDZhPNFoT+4RAVdjVt3nP0l550= +github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f/go.mod h1:frNe9pJ4gUCjeuDQoz/qtHQeKviDZTmrpuKetfT54qg= +github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80 h1:wi1b32KLdolICuwNcv3RP3z+Z4JwHOrBtygDmjck7Kk= +github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80/go.mod h1:0+Uicv4Sa6RguJ1QPuRzdFK39pJvHlBY0goIBwvuaUo= +github.com/ericchiang/css v1.3.0 h1:e0vS+vpujMjtT3/SYu7qTHn1LVzXWcLCCDjlfq3YlLY= +github.com/ericchiang/css v1.3.0/go.mod h1:sVSdL+MFR9Q4cKJMQzpIkHIDOLiK+7Wmjjhq7D+MubA= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/go-fonts/latin-modern v0.3.3 h1:g2xNgI8yzdNzIVm+qvbMryB6yGPe0pSMss8QT3QwlJ0= +github.com/go-fonts/latin-modern v0.3.3/go.mod h1:tHaiWDGze4EPB0Go4cLT5M3QzRY3peya09Z/8KSCrpY= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/goki/freetype v1.0.5 h1:yi2lQeUhXnBgSMqYd0vVmPw6RnnfIeTP3N4uvaJXd7A= -github.com/goki/freetype v1.0.5/go.mod h1:wKmKxddbzKmeci9K96Wknn5kjTWLyfC8tKOqAFbEX8E= +github.com/go-text/typesetting v0.3.1-0.20250402122313-7a0f05577ff5 h1:ChaHVT66Mk9SwP0bdWEKwikYd709GSFjGxWKPeZsE14= +github.com/go-text/typesetting v0.3.1-0.20250402122313-7a0f05577ff5/go.mod h1:qjZLkhRgOEYMhU9eHBr3AR4sfnGJvOXNLt8yRAySFuY= +github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066 h1:qCuYC+94v2xrb1PoS4NIDe7DGYtLnU2wWiQe9a1B1c0= +github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gomarkdown/markdown v0.0.0-20250311123330-531bef5e742b h1:EY/KpStFl60qA17CptGXhwfZ+k1sFNJIUNR8DdbcuUk= +github.com/gomarkdown/markdown v0.0.0-20250311123330-531bef5e742b/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= @@ -63,16 +82,29 @@ github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSo github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.1.2-0.20240227203013-2b69615b5d55 h1:CJwoX/v1ZWNj0Ofn62jvQDRuH3/hIHMqCQxbkzq2m5Y= github.com/pelletier/go-toml/v2 v2.1.2-0.20240227203013-2b69615b5d55/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= @@ -89,28 +121,45 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tdewolff/parse/v2 v2.7.19 h1:7Ljh26yj+gdLFEq/7q9LT4SYyKtwQX4ocNrj45UCePg= +github.com/tdewolff/parse/v2 v2.7.19/go.mod h1:3FbJWZp3XT9OWVN3Hmfp0p/a08v4h8J9W1aghka0soA= +github.com/tdewolff/test v1.0.11-0.20231101010635-f1265d231d52/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739 h1:IkjBCtQOOjIn03u/dMQK9g+Iw9ewps4mCl1nB8Sscbo= +github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c h1:KL/ZBHXgKGVmuZBZ01Lt57yE5ws8ZPSkkihmEyq7FXc= golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/image v0.0.0-20190703141733-d6a02ce849c9/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= -golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= +golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.15.1 h1:FNy7N6OUZVUaWG9pTiD+jlhdQ3lMP+/LcTpJ6+a8sQ0= gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -118,3 +167,9 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +modernc.org/knuth v0.5.4 h1:F8mDs7ME3oN9eyx01n6/xVmJ4F5U/qEhSYPnPXaZrps= +modernc.org/knuth v0.5.4/go.mod h1:e5SBb35HQBj2aFwbBO3ClPcViLY3Wi0LzaOd7c/3qMk= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +star-tex.org/x/tex v0.6.0 h1:ZD/4082kR5+2gFzFNgRvZBMCGuXrQWp3hNo5W5LmCeI= +star-tex.org/x/tex v0.6.0/go.mod h1:wJWeUmM2d4qH/mCtMOcioNl2sluKx85mLi+Yv9Nq4Ms= diff --git a/leabra/deep_layers.go b/leabra/deep_layers.go index a4e94bc..cb82d9d 100644 --- a/leabra/deep_layers.go +++ b/leabra/deep_layers.go @@ -39,7 +39,8 @@ func (db *BurstParams) Update() { // BurstPrv records Burst activity just prior to burst func (ly *Layer) BurstPrv(ctx *Context) { - if !ly.Burst.BurstQtr.HasNext(ctx.Quarter) { + lp := &ly.Params + if !lp.Burst.BurstQtr.HasNext(ctx.Quarter) { return } // if will be updating next quarter, save just prior @@ -54,14 +55,15 @@ func (ly *Layer) BurstPrv(ctx *Context) { // BurstFromAct updates Burst layer 5IB bursting value from current Act // (superficial activation), subject to thresholding. func (ly *Layer) BurstFromAct(ctx *Context) { - if !ly.Burst.BurstQtr.HasFlag(ctx.Quarter) { + lp := &ly.Params + if !lp.Burst.BurstQtr.HasFlag(ctx.Quarter) { return } lpl := &ly.Pools[0] actMax := lpl.Inhib.Act.Max actAvg := lpl.Inhib.Act.Avg - thr := actAvg + ly.Burst.ThrRel*(actMax-actAvg) - thr = math32.Max(thr, ly.Burst.ThrAbs) + thr := actAvg + lp.Burst.ThrRel*(actMax-actAvg) + thr = math32.Max(thr, lp.Burst.ThrAbs) for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { @@ -90,7 +92,8 @@ func (ly *Layer) BurstAsAct(ctx *Context) { // This must be called at the end of the Burst quarter for this layer. // Satisfies the CtxtSender interface. func (ly *Layer) SendCtxtGe(ctx *Context) { - if !ly.Burst.BurstQtr.HasFlag(ctx.Quarter) { + lp := &ly.Params + if !lp.Burst.BurstQtr.HasFlag(ctx.Quarter) { return } for ni := range ly.Neurons { @@ -98,12 +101,12 @@ func (ly *Layer) SendCtxtGe(ctx *Context) { if nrn.IsOff() { continue } - if nrn.Burst > ly.Act.OptThresh.Send { + if nrn.Burst > lp.Act.OptThresh.Send { for _, sp := range ly.SendPaths { if sp.Off { continue } - if sp.Type != CTCtxtPath { + if sp.Params.Type != CTCtxtPath { continue } sp.SendCtxtGe(ni, nrn.Burst) @@ -115,14 +118,15 @@ func (ly *Layer) SendCtxtGe(ctx *Context) { // CTGFromInc integrates new synaptic conductances from increments // sent during last SendGDelta. func (ly *Layer) CTGFromInc(ctx *Context) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } geRaw := nrn.GeRaw + ly.Neurons[ni].CtxtGe - ly.Act.GeFromRaw(nrn, geRaw) - ly.Act.GiFromRaw(nrn, nrn.GiRaw) + lp.Act.GeFromRaw(nrn, geRaw) + lp.Act.GiFromRaw(nrn, nrn.GiRaw) } } @@ -131,10 +135,11 @@ func (ly *Layer) CTGFromInc(ctx *Context) { // This must be called at the end of the DeepBurst quarter for this layer, // after SendCtxtGe. func (ly *Layer) CtxtFromGe(ctx *Context) { - if ly.Type != CTLayer { + lp := &ly.Params + if lp.Type != CTLayer { return } - if !ly.Burst.BurstQtr.HasFlag(ctx.Quarter) { + if !lp.Burst.BurstQtr.HasFlag(ctx.Quarter) { return } for ni := range ly.Neurons { @@ -144,7 +149,7 @@ func (ly *Layer) CtxtFromGe(ctx *Context) { if pt.Off { continue } - if pt.Type != CTCtxtPath { + if pt.Params.Type != CTCtxtPath { continue } pt.RecvCtxtGeInc() @@ -278,14 +283,15 @@ func (ly *Layer) DriverLayer(drv *Driver) (*Layer, error) { // SetDriverOffs sets the driver offsets. func (ly *Layer) SetDriverOffs() error { - if ly.Type != PulvinarLayer { + lp := &ly.Params + if lp.Type != PulvinarLayer { return nil } mx, my := UnitsSize(ly) mn := my * mx off := 0 var err error - for _, drv := range ly.Drivers { + for _, drv := range lp.Drivers { dl, err := ly.DriverLayer(drv) if err != nil { continue @@ -318,6 +324,7 @@ func DriveAct(dni int, dly *Layer, issuper bool) float32 { // SetDriverNeuron sets the driver activation for given Neuron, // based on given Ge driving value (use DriveFromMaxAvg) from driver layer (Burst or Act) func (ly *Layer) SetDriverNeuron(tni int, drvGe, drvInhib float32) { + lp := &ly.Params if tni >= len(ly.Neurons) { return } @@ -326,31 +333,32 @@ func (ly *Layer) SetDriverNeuron(tni int, drvGe, drvInhib float32) { return } geRaw := (1-drvInhib)*nrn.GeRaw + drvGe - ly.Act.GeFromRaw(nrn, geRaw) - ly.Act.GiFromRaw(nrn, nrn.GiRaw) + lp.Act.GeFromRaw(nrn, geRaw) + lp.Act.GiFromRaw(nrn, nrn.GiRaw) } // SetDriverActs sets the driver activations, integrating across all the driver layers func (ly *Layer) SetDriverActs() { + lp := &ly.Params nux, nuy := UnitsSize(ly) nun := nux * nuy pyn := ly.Shape.DimSize(0) pxn := ly.Shape.DimSize(1) - for _, drv := range ly.Drivers { + for _, drv := range lp.Drivers { dly, err := ly.DriverLayer(drv) if err != nil { continue } - issuper := dly.Type == SuperLayer + issuper := dly.Params.Type == SuperLayer drvMax := dly.Pools[0].Inhib.Act.Max - drvInhib := math32.Min(1, drvMax/ly.Pulvinar.MaxInhib) + drvInhib := math32.Min(1, drvMax/lp.Pulvinar.MaxInhib) if dly.Is2D() { if ly.Is2D() { for dni := range dly.Neurons { tni := drv.Off + dni drvAct := DriveAct(dni, dly, issuper) - ly.SetDriverNeuron(tni, ly.Pulvinar.GeFromMaxAvg(drvAct, drvAct), drvInhib) + ly.SetDriverNeuron(tni, lp.Pulvinar.GeFromMaxAvg(drvAct, drvAct), drvInhib) } } else { // copy flat to all pools -- not typical for dni := range dly.Neurons { @@ -359,7 +367,7 @@ func (ly *Layer) SetDriverActs() { for py := 0; py < pyn; py++ { for px := 0; px < pxn; px++ { pni := (py*pxn+px)*nun + tni - ly.SetDriverNeuron(pni, ly.Pulvinar.GeFromMaxAvg(drvAct, drvAct), drvInhib) + ly.SetDriverNeuron(pni, lp.Pulvinar.GeFromMaxAvg(drvAct, drvAct), drvInhib) } } } @@ -391,9 +399,9 @@ func (ly *Layer) SetDriverActs() { avg /= float32(avgn) } tni := drv.Off + dni - ly.SetDriverNeuron(tni, ly.Pulvinar.GeFromMaxAvg(max, avg), drvInhib) + ly.SetDriverNeuron(tni, lp.Pulvinar.GeFromMaxAvg(max, avg), drvInhib) } - } else if ly.Pulvinar.NoTopo { // ly is 4D + } else if lp.Pulvinar.NoTopo { // ly is 4D for dni := 0; dni < dnun; dni++ { max := float32(0) avg := float32(0) @@ -414,7 +422,7 @@ func (ly *Layer) SetDriverActs() { if avgn > 0 { avg /= float32(avgn) } - drvGe := ly.Pulvinar.GeFromMaxAvg(max, avg) + drvGe := lp.Pulvinar.GeFromMaxAvg(max, avg) tni := drv.Off + dni for py := 0; py < pyn; py++ { for px := 0; px < pxn; px++ { @@ -454,7 +462,7 @@ func (ly *Layer) SetDriverActs() { avg /= float32(avgn) } tni := pni + drv.Off + dni - ly.SetDriverNeuron(tni, ly.Pulvinar.GeFromMaxAvg(max, avg), drvInhib) + ly.SetDriverNeuron(tni, lp.Pulvinar.GeFromMaxAvg(max, avg), drvInhib) } } } diff --git a/leabra/deep_paths.go b/leabra/deep_paths.go index 6e98491..8e3bcee 100644 --- a/leabra/deep_paths.go +++ b/leabra/deep_paths.go @@ -9,10 +9,11 @@ import ( ) func (pt *Path) CTCtxtDefaults() { + pp := &pt.Params if pt.FromSuper { - pt.Learn.Learn = false - pt.WtInit.Mean = 0.5 // .5 better than .8 in several cases.. - pt.WtInit.Var = 0 + pp.Learn.Learn = false + pp.WtInit.Mean = 0.5 // .5 better than .8 in several cases.. + pp.WtInit.Var = 0 } } @@ -41,8 +42,9 @@ func (pt *Path) RecvCtxtGeInc() { // DWt computes the weight change (learning) for CTCtxt pathways. func (pt *Path) DWtCTCtxt() { + pp := &pt.Params slay := pt.Send - issuper := pt.Send.Type == SuperLayer + issuper := pt.Send.Params.Type == SuperLayer rlay := pt.Recv for si := range slay.Neurons { sact := float32(0) @@ -61,24 +63,24 @@ func (pt *Path) DWtCTCtxt() { rn := &rlay.Neurons[ri] // following line should be ONLY diff: sact for *both* short and medium *sender* // activations, which are first two args: - err, bcm := pt.Learn.CHLdWt(sact, sact, rn.AvgSLrn, rn.AvgM, rn.AvgL) + err, bcm := pp.Learn.CHLdWt(sact, sact, rn.AvgSLrn, rn.AvgM, rn.AvgL) - bcm *= pt.Learn.XCal.LongLrate(rn.AvgLLrn) - err *= pt.Learn.XCal.MLrn + bcm *= pp.Learn.XCal.LongLrate(rn.AvgLLrn) + err *= pp.Learn.XCal.MLrn dwt := bcm + err norm := float32(1) - if pt.Learn.Norm.On { - norm = pt.Learn.Norm.NormFromAbsDWt(&sy.Norm, math32.Abs(dwt)) + if pp.Learn.Norm.On { + norm = pp.Learn.Norm.NormFromAbsDWt(&sy.Norm, math32.Abs(dwt)) } - if pt.Learn.Momentum.On { - dwt = norm * pt.Learn.Momentum.MomentFromDWt(&sy.Moment, dwt) + if pp.Learn.Momentum.On { + dwt = norm * pp.Learn.Momentum.MomentFromDWt(&sy.Moment, dwt) } else { dwt *= norm } - sy.DWt += pt.Learn.Lrate * dwt + sy.DWt += pp.Learn.Lrate * dwt } // aggregate max DWtNorm over sending synapses - if pt.Learn.Norm.On { + if pp.Learn.Norm.On { maxNorm := float32(0) for ci := range syns { sy := &syns[ci] diff --git a/leabra/enumgen.go b/leabra/enumgen.go index ed27bfc..81c6f64 100644 --- a/leabra/enumgen.go +++ b/leabra/enumgen.go @@ -149,6 +149,49 @@ func (i *LayerTypes) UnmarshalText(text []byte) error { return enums.UnmarshalText(i, text, "LayerTypes") } +var _ViewTimesValues = []ViewTimes{0, 1, 2, 3, 4} + +// ViewTimesN is the highest valid value for type ViewTimes, plus one. +const ViewTimesN ViewTimes = 5 + +var _ViewTimesValueMap = map[string]ViewTimes{`Cycle`: 0, `FastSpike`: 1, `Gamma`: 2, `Phase`: 3, `Alpha`: 4} + +var _ViewTimesDescMap = map[ViewTimes]string{0: `Cycle is an update of neuron state, equivalent to 1 msec of real time.`, 1: `FastSpike is 10 cycles (msec) or 100hz. This is the fastest spiking time generally observed in the neocortex.`, 2: `Gamma is 25 cycles (msec) or 40hz. Neocortical activity often exhibits synchrony peaks in this range.`, 3: `Phase is the Minus or Plus phase, where plus phase is bursting / outcome that drives positive learning relative to prediction in minus phase. Minus phase is at 150 cycles (msec).`, 4: `Alpha is 100 cycle (msec) or 10 hz (four Gammas). Posterior neocortex exhibits synchrony peaks in this range, corresponding to the intrinsic bursting frequency of layer 5 IB neurons, and corticothalamic loop resonance.`} + +var _ViewTimesMap = map[ViewTimes]string{0: `Cycle`, 1: `FastSpike`, 2: `Gamma`, 3: `Phase`, 4: `Alpha`} + +// String returns the string representation of this ViewTimes value. +func (i ViewTimes) String() string { return enums.String(i, _ViewTimesMap) } + +// SetString sets the ViewTimes value from its string representation, +// and returns an error if the string is invalid. +func (i *ViewTimes) SetString(s string) error { + return enums.SetString(i, s, _ViewTimesValueMap, "ViewTimes") +} + +// Int64 returns the ViewTimes value as an int64. +func (i ViewTimes) Int64() int64 { return int64(i) } + +// SetInt64 sets the ViewTimes value from an int64. +func (i *ViewTimes) SetInt64(in int64) { *i = ViewTimes(in) } + +// Desc returns the description of the ViewTimes value. +func (i ViewTimes) Desc() string { return enums.Desc(i, _ViewTimesDescMap) } + +// ViewTimesValues returns all possible values for the type ViewTimes. +func ViewTimesValues() []ViewTimes { return _ViewTimesValues } + +// Values returns all possible values for the type ViewTimes. +func (i ViewTimes) Values() []enums.Enum { return enums.Values(_ViewTimesValues) } + +// MarshalText implements the [encoding.TextMarshaler] interface. +func (i ViewTimes) MarshalText() ([]byte, error) { return []byte(i.String()), nil } + +// UnmarshalText implements the [encoding.TextUnmarshaler] interface. +func (i *ViewTimes) UnmarshalText(text []byte) error { + return enums.UnmarshalText(i, text, "ViewTimes") +} + var _DaReceptorsValues = []DaReceptors{0, 1} // DaReceptorsN is the highest valid value for type DaReceptors, plus one. diff --git a/leabra/hip.go b/leabra/hip.go index cf36b5c..2a5293f 100644 --- a/leabra/hip.go +++ b/leabra/hip.go @@ -77,7 +77,7 @@ func (ch *CHLParams) DWt(hebb, err float32) float32 { return ch.Hebb*hebb + ch.Err*err } -func (pt *Path) CHLDefaults() { +func (pt *PathParams) CHLDefaults() { pt.Learn.Norm.On = false // off by default pt.Learn.Momentum.On = false // off by default pt.Learn.WtBal.On = false // todo: experiment @@ -86,16 +86,18 @@ func (pt *Path) CHLDefaults() { // SAvgCor computes the sending average activation, corrected according to the SAvgCor // correction factor (typically makes layer appear more sparse than it is) func (pt *Path) SAvgCor(slay *Layer) float32 { - savg := .5 + pt.CHL.SAvgCor*(slay.Pools[0].ActAvg.ActPAvgEff-0.5) - savg = math32.Max(pt.CHL.SAvgThr, savg) // keep this computed value within bounds + pp := &pt.Params + savg := .5 + pp.CHL.SAvgCor*(slay.Pools[0].ActAvg.ActPAvgEff-0.5) + savg = math32.Max(pp.CHL.SAvgThr, savg) // keep this computed value within bounds return 0.5 / savg } // DWtCHL computes the weight change (learning) for CHL func (pt *Path) DWtCHL() { + pp := &pt.Params slay := pt.Send rlay := pt.Recv - if slay.Pools[0].ActP.Avg < pt.CHL.SAvgThr { // inactive, no learn + if slay.Pools[0].ActP.Avg < pp.CHL.SAvgThr { // inactive, no learn return } for si := range slay.Neurons { @@ -104,7 +106,7 @@ func (pt *Path) DWtCHL() { st := int(pt.SConIndexSt[si]) syns := pt.Syns[st : st+nc] scons := pt.SConIndex[st : st+nc] - snActM := pt.CHL.MinusAct(sn.ActM, sn.ActQ1) + snActM := pp.CHL.MinusAct(sn.ActM, sn.ActQ1) savgCor := pt.SAvgCor(slay) @@ -112,25 +114,25 @@ func (pt *Path) DWtCHL() { sy := &syns[ci] ri := scons[ci] rn := &rlay.Neurons[ri] - rnActM := pt.CHL.MinusAct(rn.ActM, rn.ActQ1) + rnActM := pp.CHL.MinusAct(rn.ActM, rn.ActQ1) - hebb := pt.CHL.HebbDWt(sn.ActP, rn.ActP, savgCor, sy.LWt) - err := pt.CHL.ErrDWt(sn.ActP, snActM, rn.ActP, rnActM, sy.LWt) + hebb := pp.CHL.HebbDWt(sn.ActP, rn.ActP, savgCor, sy.LWt) + err := pp.CHL.ErrDWt(sn.ActP, snActM, rn.ActP, rnActM, sy.LWt) - dwt := pt.CHL.DWt(hebb, err) + dwt := pp.CHL.DWt(hebb, err) norm := float32(1) - if pt.Learn.Norm.On { - norm = pt.Learn.Norm.NormFromAbsDWt(&sy.Norm, math32.Abs(dwt)) + if pp.Learn.Norm.On { + norm = pp.Learn.Norm.NormFromAbsDWt(&sy.Norm, math32.Abs(dwt)) } - if pt.Learn.Momentum.On { - dwt = norm * pt.Learn.Momentum.MomentFromDWt(&sy.Moment, dwt) + if pp.Learn.Momentum.On { + dwt = norm * pp.Learn.Momentum.MomentFromDWt(&sy.Moment, dwt) } else { dwt *= norm } - sy.DWt += pt.Learn.Lrate * dwt + sy.DWt += pp.Learn.Lrate * dwt } // aggregate max DWtNorm over sending synapses - if pt.Learn.Norm.On { + if pp.Learn.Norm.On { maxNorm := float32(0) for ci := range syns { sy := &syns[ci] @@ -146,15 +148,16 @@ func (pt *Path) DWtCHL() { } } -func (pt *Path) EcCa1Defaults() { - pt.Learn.Norm.On = false // off by default - pt.Learn.Momentum.On = false // off by default - pt.Learn.WtBal.On = false // todo: experiment +func (pp *PathParams) EcCa1Defaults() { + pp.Learn.Norm.On = false // off by default + pp.Learn.Momentum.On = false // off by default + pp.Learn.WtBal.On = false // todo: experiment } // DWt computes the weight change (learning) -- on sending pathways // Delta version func (pt *Path) DWtEcCa1() { + pp := &pt.Params slay := pt.Send rlay := pt.Recv for si := range slay.Neurons { @@ -170,24 +173,24 @@ func (pt *Path) DWtEcCa1() { rn := &rlay.Neurons[ri] err := (sn.ActP * rn.ActP) - (sn.ActQ1 * rn.ActQ1) - bcm := pt.Learn.BCMdWt(sn.AvgSLrn, rn.AvgSLrn, rn.AvgL) - bcm *= pt.Learn.XCal.LongLrate(rn.AvgLLrn) - err *= pt.Learn.XCal.MLrn + bcm := pp.Learn.BCMdWt(sn.AvgSLrn, rn.AvgSLrn, rn.AvgL) + bcm *= pp.Learn.XCal.LongLrate(rn.AvgLLrn) + err *= pp.Learn.XCal.MLrn dwt := bcm + err norm := float32(1) - if pt.Learn.Norm.On { - norm = pt.Learn.Norm.NormFromAbsDWt(&sy.Norm, math32.Abs(dwt)) + if pp.Learn.Norm.On { + norm = pp.Learn.Norm.NormFromAbsDWt(&sy.Norm, math32.Abs(dwt)) } - if pt.Learn.Momentum.On { - dwt = norm * pt.Learn.Momentum.MomentFromDWt(&sy.Moment, dwt) + if pp.Learn.Momentum.On { + dwt = norm * pp.Learn.Momentum.MomentFromDWt(&sy.Moment, dwt) } else { dwt *= norm } - sy.DWt += pt.Learn.Lrate * dwt + sy.DWt += pp.Learn.Lrate * dwt } // aggregate max DWtNorm over sending synapses - if pt.Learn.Norm.On { + if pp.Learn.Norm.On { maxNorm := float32(0) for ci := range syns { sy := &syns[ci] @@ -216,22 +219,22 @@ func (net *Network) ConfigLoopsHip(ctx *Context, ls *looper.Stacks) { ca1FromCa3 := errors.Log1(ca1.RecvPathBySendName("CA3")).(*Path) ca3FromDg := errors.Log1(ca3.RecvPathBySendName("DG")).(*Path) - dgPjScale := ca3FromDg.WtScale.Rel + dgPjScale := ca3FromDg.Params.WtScale.Rel ls.AddEventAllModes(etime.Cycle, "HipMinusPhase:Start", 0, func() { - ca1FromECin.WtScale.Abs = 1 - ca1FromCa3.WtScale.Abs = 0 - ca3FromDg.WtScale.Rel = 0 + ca1FromECin.Params.WtScale.Abs = 1 + ca1FromCa3.Params.WtScale.Abs = 0 + ca3FromDg.Params.WtScale.Rel = 0 net.GScaleFromAvgAct() net.InitGInc() }) ls.AddEventAllModes(etime.Cycle, "Hip:Quarter1", 25, func() { - ca1FromECin.WtScale.Abs = 0 - ca1FromCa3.WtScale.Abs = 1 + ca1FromECin.Params.WtScale.Abs = 0 + ca1FromCa3.Params.WtScale.Abs = 1 if ctx.Mode == etime.Test { - ca3FromDg.WtScale.Rel = 1 // weaker + ca3FromDg.Params.WtScale.Rel = 1 // weaker } else { - ca3FromDg.WtScale.Rel = dgPjScale + ca3FromDg.Params.WtScale.Rel = dgPjScale } net.GScaleFromAvgAct() net.InitGInc() @@ -239,8 +242,8 @@ func (net *Network) ConfigLoopsHip(ctx *Context, ls *looper.Stacks) { for _, st := range ls.Stacks { ev := st.Loops[etime.Cycle].EventByCounter(75) ev.OnEvent.Prepend("HipPlusPhase:Start", func() bool { - ca1FromECin.WtScale.Abs = 1 - ca1FromCa3.WtScale.Abs = 0 + ca1FromECin.Params.WtScale.Abs = 1 + ca1FromCa3.Params.WtScale.Abs = 0 if ctx.Mode == etime.Train { ecin.UnitValues(&tmpValues, "Act", 0) ecout.ApplyExt1D32(tmpValues) diff --git a/leabra/layer.go b/leabra/layer.go index 1db3520..f11bc9a 100644 --- a/leabra/layer.go +++ b/leabra/layer.go @@ -14,12 +14,12 @@ import ( "cogentcore.org/lab/tensor" ) -////////////////////////////////////////////////////////////////////////////////////// -// Init methods +//////// Init methods // InitWeights initializes the weight values in the network, // i.e., resetting learning Also calls InitActs. func (ly *Layer) InitWeights() { + lp := &ly.Params ly.UpdateParams() for _, pt := range ly.SendPaths { if pt.Off { @@ -29,9 +29,9 @@ func (ly *Layer) InitWeights() { } for pi := range ly.Pools { pl := &ly.Pools[pi] - pl.ActAvg.ActMAvg = ly.Inhib.ActAvg.Init - pl.ActAvg.ActPAvg = ly.Inhib.ActAvg.Init - pl.ActAvg.ActPAvgEff = ly.Inhib.ActAvg.EffInit() + pl.ActAvg.ActMAvg = lp.Inhib.ActAvg.Init + pl.ActAvg.ActPAvg = lp.Inhib.ActAvg.Init + pl.ActAvg.ActPAvgEff = lp.Inhib.ActAvg.EffInit() } ly.InitActAvg() ly.InitActs() @@ -42,18 +42,20 @@ func (ly *Layer) InitWeights() { // InitActAvg initializes the running-average activation // values that drive learning. func (ly *Layer) InitActAvg() { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] - ly.Learn.InitActAvg(nrn) + lp.Learn.InitActAvg(nrn) } } // InitActs fully initializes activation state. // only called automatically during InitWeights. func (ly *Layer) InitActs() { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] - ly.Act.InitActs(nrn) + lp.Act.InitActs(nrn) } for pi := range ly.Pools { pl := &ly.Pools[pi] @@ -67,9 +69,10 @@ func (ly *Layer) InitActs() { // UpdateActAvgEff updates the effective ActAvg.ActPAvgEff value used in netinput // scaling, from the current ActAvg.ActPAvg and fixed Init values. func (ly *Layer) UpdateActAvgEff() { + lp := &ly.Params for pi := range ly.Pools { pl := &ly.Pools[pi] - ly.Inhib.ActAvg.EffFromAvg(&pl.ActAvg.ActPAvgEff, pl.ActAvg.ActPAvg) + lp.Inhib.ActAvg.EffFromAvg(&pl.ActAvg.ActPAvgEff, pl.ActAvg.ActPAvg) } } @@ -80,7 +83,7 @@ func (ly *Layer) InitWtSym() { if pt.Off { continue } - if !(pt.WtInit.Sym) { + if !(pt.Params.WtInit.Sym) { continue } // key ordering constraint on which way weights are copied @@ -91,7 +94,7 @@ func (ly *Layer) InitWtSym() { if !has { continue } - if !(rpt.WtInit.Sym) { + if !(rpt.Params.WtInit.Sym) { continue } pt.InitWtSym(rpt) @@ -111,12 +114,13 @@ func (ly *Layer) InitExt() { // ApplyExtFlags gets the flags that should cleared and set for updating neuron flags // based on layer type, and whether input should be applied to Targ (else Ext) func (ly *Layer) ApplyExtFlags() (clear, set []enums.BitFlag, toTarg bool) { + lp := &ly.Params clear = []enums.BitFlag{NeurHasExt, NeurHasTarg, NeurHasCmpr} toTarg = false - if ly.Type == TargetLayer { + if lp.Type == TargetLayer { set = []enums.BitFlag{NeurHasTarg} toTarg = true - } else if ly.Type == CompareLayer { + } else if lp.Type == CompareLayer { set = []enums.BitFlag{NeurHasCmpr} toTarg = true } else { @@ -274,11 +278,12 @@ func (ly *Layer) UpdateExtFlags() { // if these are not set to Fixed, so calling this will change the scaling of // pathways in the network! func (ly *Layer) ActAvgFromAct() { + lp := &ly.Params for pi := range ly.Pools { pl := &ly.Pools[pi] - ly.Inhib.ActAvg.AvgFromAct(&pl.ActAvg.ActMAvg, pl.ActM.Avg) - ly.Inhib.ActAvg.AvgFromAct(&pl.ActAvg.ActPAvg, pl.ActP.Avg) - ly.Inhib.ActAvg.EffFromAvg(&pl.ActAvg.ActPAvgEff, pl.ActAvg.ActPAvg) + lp.Inhib.ActAvg.AvgFromAct(&pl.ActAvg.ActMAvg, pl.ActM.Avg) + lp.Inhib.ActAvg.AvgFromAct(&pl.ActAvg.ActPAvg, pl.ActP.Avg) + lp.Inhib.ActAvg.EffFromAvg(&pl.ActAvg.ActPAvgEff, pl.ActAvg.ActPAvg) } } @@ -305,31 +310,33 @@ func (ly *Layer) ActQ0FromActP() { // only update during training). This flag also affects the AvgL learning // threshold func (ly *Layer) AlphaCycInit(updtActAvg bool) { + lp := &ly.Params ly.ActQ0FromActP() if updtActAvg { ly.AvgLFromAvgM() ly.ActAvgFromAct() } ly.GScaleFromAvgAct() // need to do this always, in case hasn't been done at all yet - if ly.Act.Noise.Type != NoNoise && ly.Act.Noise.Fixed && ly.Act.Noise.Dist != randx.Mean { + if lp.Act.Noise.Type != NoNoise && lp.Act.Noise.Fixed && lp.Act.Noise.Dist != randx.Mean { ly.GenNoise() } - ly.DecayState(ly.Act.Init.Decay) + ly.DecayState(lp.Act.Init.Decay) ly.InitGInc() - if ly.Act.Clamp.Hard && ly.Type == InputLayer { + if lp.Act.Clamp.Hard && lp.Type == InputLayer { ly.HardClamp() } } // AvgLFromAvgM updates AvgL long-term running average activation that drives BCM Hebbian learning func (ly *Layer) AvgLFromAvgM() { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } - ly.Learn.AvgLFromAvgM(nrn) - if ly.Learn.AvgL.ErrMod { + lp.Learn.AvgLFromAvgM(nrn) + if lp.Learn.AvgL.ErrMod { nrn.AvgLLrn *= ly.CosDiff.ModAvgLLrn } } @@ -347,22 +354,23 @@ func (ly *Layer) GScaleFromAvgAct() { if pt.Off { continue } + pp := &pt.Params slay := pt.Send slpl := &slay.Pools[0] savg := slpl.ActAvg.ActPAvgEff snu := len(slay.Neurons) ncon := pt.RConNAvgMax.Avg - pt.GScale = pt.WtScale.FullScale(savg, float32(snu), ncon) + pt.GScale = pp.WtScale.FullScale(savg, float32(snu), ncon) // reverting this change: if you want to eliminate a path, set the Off flag // if you want to negate it but keep the relative factor in the denominator // then set the scale to 0. // if pj.GScale == 0 { // continue // } - if pt.Type == InhibPath { - totGiRel += pt.WtScale.Rel + if pp.Type == InhibPath { + totGiRel += pp.WtScale.Rel } else { - totGeRel += pt.WtScale.Rel + totGeRel += pp.WtScale.Rel } } @@ -370,7 +378,7 @@ func (ly *Layer) GScaleFromAvgAct() { if pt.Off { continue } - if pt.Type == InhibPath { + if pt.Params.Type == InhibPath { if totGiRel > 0 { pt.GScale /= totGiRel } @@ -384,21 +392,23 @@ func (ly *Layer) GScaleFromAvgAct() { // GenNoise generates random noise for all neurons func (ly *Layer) GenNoise() { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] - nrn.Noise = float32(ly.Act.Noise.Gen()) + nrn.Noise = float32(lp.Act.Noise.Gen()) } } -// DecayState decays activation state by given proportion (default is on ly.Act.Init.Decay). +// DecayState decays activation state by given proportion (default is on lp.Act.Init.Decay). // This does *not* call InitGInc -- must call that separately at start of AlphaCyc func (ly *Layer) DecayState(decay float32) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } - ly.Act.DecayState(nrn, decay) + lp.Act.DecayState(nrn, decay) } for pi := range ly.Pools { // decaying average act is essential for inhib pl := &ly.Pools[pi] @@ -409,13 +419,14 @@ func (ly *Layer) DecayState(decay float32) { // DecayStatePool decays activation state by given proportion // in given pool index (sub pools start at 1). func (ly *Layer) DecayStatePool(pool int, decay float32) { + lp := &ly.Params pl := &ly.Pools[pool] for ni := pl.StIndex; ni < pl.EdIndex; ni++ { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } - ly.Act.DecayState(nrn, decay) + lp.Act.DecayState(nrn, decay) } pl.Inhib.Decay(decay) } @@ -423,17 +434,17 @@ func (ly *Layer) DecayStatePool(pool int, decay float32) { // HardClamp hard-clamps the activations in the layer. // called during AlphaCycInit for hard-clamped Input layers. func (ly *Layer) HardClamp() { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } - ly.Act.HardClamp(nrn) + lp.Act.HardClamp(nrn) } } -////////////////////////////////////////////////////////////////////////////////////// -// Cycle +//////// Cycle // InitGinc initializes the Ge excitatory and Gi inhibitory conductance accumulation states // including ActSent and G*Raw values. @@ -441,12 +452,13 @@ func (ly *Layer) HardClamp() { // when delta-based Ge computation needs to be updated (e.g., weights // might have changed strength) func (ly *Layer) InitGInc() { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } - ly.Act.InitGInc(nrn) + lp.Act.InitGInc(nrn) } for _, pt := range ly.RecvPaths { if pt.Off { @@ -459,14 +471,15 @@ func (ly *Layer) InitGInc() { // SendGDelta sends change in activation since last sent, to increment recv // synaptic conductances G, if above thresholds func (ly *Layer) SendGDelta(ctx *Context) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } - if nrn.Act > ly.Act.OptThresh.Send { + if nrn.Act > lp.Act.OptThresh.Send { delta := nrn.Act - nrn.ActSent - if math32.Abs(delta) > ly.Act.OptThresh.Delta { + if math32.Abs(delta) > lp.Act.OptThresh.Delta { for _, sp := range ly.SendPaths { if sp.Off { continue @@ -475,7 +488,7 @@ func (ly *Layer) SendGDelta(ctx *Context) { } nrn.ActSent = nrn.Act } - } else if nrn.ActSent > ly.Act.OptThresh.Send { + } else if nrn.ActSent > lp.Act.OptThresh.Send { delta := -nrn.ActSent // un-send the last above-threshold activation to get back to 0 for _, sp := range ly.SendPaths { if sp.Off { @@ -490,12 +503,13 @@ func (ly *Layer) SendGDelta(ctx *Context) { // GFromInc integrates new synaptic conductances from increments sent during last SendGDelta. func (ly *Layer) GFromInc(ctx *Context) { + lp := &ly.Params ly.RecvGInc(ctx) - switch ly.Type { + switch lp.Type { case CTLayer: ly.CTGFromInc(ctx) case PulvinarLayer: - if ly.Pulvinar.DriversOff || !ly.Pulvinar.BurstQtr.HasFlag(ctx.Quarter) { + if lp.Pulvinar.DriversOff || !lp.Pulvinar.BurstQtr.HasFlag(ctx.Quarter) { ly.GFromIncNeur(ctx) } else { ly.SetDriverActs() @@ -524,14 +538,15 @@ func (ly *Layer) RecvGInc(ctx *Context) { // GFromIncNeur is the neuron-level code for GFromInc that integrates overall Ge, Gi values // from their G*Raw accumulators. func (ly *Layer) GFromIncNeur(ctx *Context) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } // note: each step broken out here so other variants can add extra terms to Raw - ly.Act.GeFromRaw(nrn, nrn.GeRaw) - ly.Act.GiFromRaw(nrn, nrn.GiRaw) + lp.Act.GeFromRaw(nrn, nrn.GeRaw) + lp.Act.GiFromRaw(nrn, nrn.GiRaw) } } @@ -553,26 +568,28 @@ func (ly *Layer) AvgMaxGe(ctx *Context) { // InhibFromGeAct computes inhibition Gi from Ge and Act averages within relevant Pools func (ly *Layer) InhibFromGeAct(ctx *Context) { + lp := &ly.Params lpl := &ly.Pools[0] - ly.Inhib.Layer.Inhib(&lpl.Inhib) + lp.Inhib.Layer.Inhib(&lpl.Inhib) ly.PoolInhibFromGeAct(ctx) ly.InhibFromPool(ctx) - if ly.Type == MatrixLayer { + if lp.Type == MatrixLayer { ly.MatrixOutAChInhib(ctx) } } // PoolInhibFromGeAct computes inhibition Gi from Ge and Act averages within relevant Pools func (ly *Layer) PoolInhibFromGeAct(ctx *Context) { + lp := &ly.Params np := len(ly.Pools) if np == 1 { return } lpl := &ly.Pools[0] - lyInhib := ly.Inhib.Layer.On + lyInhib := lp.Inhib.Layer.On for pi := 1; pi < np; pi++ { pl := &ly.Pools[pi] - ly.Inhib.Pool.Inhib(&pl.Inhib) + lp.Inhib.Pool.Inhib(&pl.Inhib) if lyInhib { pl.Inhib.LayGi = lpl.Inhib.Gi pl.Inhib.Gi = math32.Max(pl.Inhib.Gi, lpl.Inhib.Gi) // pool is max of layer @@ -587,13 +604,14 @@ func (ly *Layer) PoolInhibFromGeAct(ctx *Context) { // InhibFromPool computes inhibition Gi from Pool-level aggregated inhibition, including self and syn func (ly *Layer) InhibFromPool(ctx *Context) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } pl := &ly.Pools[nrn.SubPool] - ly.Inhib.Self.Inhib(&nrn.GiSelf, nrn.Act) + lp.Inhib.Self.Inhib(&nrn.GiSelf, nrn.Act) nrn.Gi = pl.Inhib.Gi + nrn.GiSelf + nrn.GiSyn } } @@ -601,7 +619,8 @@ func (ly *Layer) InhibFromPool(ctx *Context) { // ActFromG computes rate-code activation from Ge, Gi, Gl conductances // and updates learning running-average activations from that Act func (ly *Layer) ActFromG(ctx *Context) { - switch ly.Type { + lp := &ly.Params + switch lp.Type { case RWDaLayer: ly.ActFromGRWDa(ctx) return @@ -626,11 +645,11 @@ func (ly *Layer) ActFromG(ctx *Context) { if nrn.IsOff() { continue } - ly.Act.VmFromG(nrn) - ly.Act.ActFromG(nrn) - ly.Learn.AvgsFromAct(nrn) + lp.Act.VmFromG(nrn) + lp.Act.ActFromG(nrn) + lp.Learn.AvgsFromAct(nrn) } - switch ly.Type { + switch lp.Type { case MatrixLayer: ly.DaAChFromLay(ctx) case PFCDeepLayer: @@ -660,7 +679,8 @@ func (ly *Layer) AvgMaxAct(ctx *Context) { // GateLayer (GPiThal) computes gating, sends to other layers. // DA, ACh neuromodulation is sent. func (ly *Layer) CyclePost(ctx *Context) { - switch ly.Type { + lp := &ly.Params + switch lp.Type { case SuperLayer: ly.BurstFromAct(ctx) case CTLayer: @@ -674,12 +694,12 @@ func (ly *Layer) CyclePost(ctx *Context) { } } -////////////////////////////////////////////////////////////////////////////////////// -// Quarter +//////// Quarter // QuarterFinal does updating after end of quarter. // Calls MinusPhase and PlusPhase for quarter = 2, 3. func (ly *Layer) QuarterFinal(ctx *Context) { + lp := &ly.Params switch ctx.Quarter { case 2: ly.MinusPhase(ctx) @@ -688,7 +708,7 @@ func (ly *Layer) QuarterFinal(ctx *Context) { default: ly.SaveQuarterState(ctx) } - switch ly.Type { + switch lp.Type { case SuperLayer: ly.BurstPrv(ctx) ly.SendCtxtGe(ctx) @@ -740,6 +760,7 @@ func (ly *Layer) MinusPhase(ctx *Context) { // PlusPhase is called at the end of the plus phase (quarter 4), to record state. func (ly *Layer) PlusPhase(ctx *Context) { + lp := &ly.Params for pi := range ly.Pools { pl := &ly.Pools[pi] pl.ActP = pl.Inhib.Act @@ -751,7 +772,7 @@ func (ly *Layer) PlusPhase(ctx *Context) { } nrn.ActP = nrn.Act nrn.ActDif = nrn.ActP - nrn.ActM - nrn.ActAvg += ly.Act.Dt.AvgDt * (nrn.Act - nrn.ActAvg) + nrn.ActAvg += lp.Act.Dt.AvgDt * (nrn.Act - nrn.ActAvg) } ly.CosDiffFromActs() } @@ -759,6 +780,7 @@ func (ly *Layer) PlusPhase(ctx *Context) { // CosDiffFromActs computes the cosine difference in activation state between minus and plus phases. // this is also used for modulating the amount of BCM hebbian learning func (ly *Layer) CosDiffFromActs() { + lp := &ly.Params lpl := &ly.Pools[0] avgM := lpl.ActM.Avg avgP := lpl.ActP.Avg @@ -783,14 +805,14 @@ func (ly *Layer) CosDiffFromActs() { } ly.CosDiff.Cos = cosv - ly.Learn.CosDiff.AvgVarFromCos(&ly.CosDiff.Avg, &ly.CosDiff.Var, ly.CosDiff.Cos) + lp.Learn.CosDiff.AvgVarFromCos(&ly.CosDiff.Avg, &ly.CosDiff.Var, ly.CosDiff.Cos) if ly.IsTarget() { ly.CosDiff.AvgLrn = 0 // no BCM for non-hidden layers ly.CosDiff.ModAvgLLrn = 0 } else { ly.CosDiff.AvgLrn = 1 - ly.CosDiff.Avg - ly.CosDiff.ModAvgLLrn = ly.Learn.AvgL.ErrModFromLayErr(ly.CosDiff.AvgLrn) + ly.CosDiff.ModAvgLLrn = lp.Learn.AvgL.ErrModFromLayErr(ly.CosDiff.AvgLrn) } } @@ -803,7 +825,8 @@ func (ly *Layer) CosDiffFromActs() { // It is also used in WtBal to not apply it to target layers. // In both cases, Target layers are purely error-driven. func (ly *Layer) IsTarget() bool { - return ly.Type == TargetLayer || ly.Type == PulvinarLayer + lp := &ly.Params + return lp.Type == TargetLayer || lp.Type == PulvinarLayer } ////////////////////////////////////////////////////////////////////////////////////// @@ -833,11 +856,12 @@ func (ly *Layer) Quarter2DWt() { } func (ly *Layer) DoQuarter2DWt() bool { - switch ly.Type { + lp := &ly.Params + switch lp.Type { case MatrixLayer: - return ly.Matrix.LearnQtr.HasFlag(Q2) + return lp.Matrix.LearnQtr.HasFlag(Q2) case PFCDeepLayer: - return ly.PFCGate.GateQtr.HasFlag(Q2) + return lp.PFCGate.GateQtr.HasFlag(Q2) } return false } @@ -873,8 +897,7 @@ func (ly *Layer) LrateMult(mult float32) { } } -////////////////////////////////////////////////////////////////////////////////////// -// Threading / Reports +//////// Threading / Reports // CostEst returns the estimated computational cost associated with this layer, // separated by neuron-level and synapse-level, in arbitrary units where @@ -894,8 +917,7 @@ func (ly *Layer) CostEst() (neur, syn, tot int) { return } -////////////////////////////////////////////////////////////////////////////////////// -// Stats +//////// Stats // note: use float64 for stats as that is best for logging @@ -904,6 +926,7 @@ func (ly *Layer) CostEst() (neur, syn, tot int) { // Uses the given tolerance per-unit to count an error at all // (e.g., .5 = activity just has to be on the right side of .5). func (ly *Layer) MSE(tol float32) (sse, mse float64) { + lp := &ly.Params nn := len(ly.Neurons) if nn == 0 { return 0, 0 @@ -915,7 +938,7 @@ func (ly *Layer) MSE(tol float32) (sse, mse float64) { continue } var d float32 - if ly.Type == CompareLayer { + if lp.Type == CompareLayer { d = nrn.Targ - nrn.ActM } else { d = nrn.ActP - nrn.ActM diff --git a/leabra/layerbase.go b/leabra/layerbase.go index e4b706d..7095024 100644 --- a/leabra/layerbase.go +++ b/leabra/layerbase.go @@ -7,16 +7,13 @@ package leabra import ( "fmt" "io" - "reflect" "strconv" "strings" "cogentcore.org/core/base/errors" "cogentcore.org/core/base/num" - "cogentcore.org/core/base/reflectx" "cogentcore.org/core/math32" "github.com/emer/emergent/v2/emer" - "github.com/emer/emergent/v2/params" "github.com/emer/emergent/v2/weights" ) @@ -29,63 +26,14 @@ type Layer struct { // find other layers etc; set when added by network. Network *Network `copier:"-" json:"-" xml:"-" display:"-"` - // type of layer. - Type LayerTypes - // list of receiving pathways into this layer from other layers. RecvPaths []*Path // list of sending pathways from this layer to other layers. SendPaths []*Path - // Activation parameters and methods for computing activations. - Act ActParams `display:"add-fields"` - - // Inhibition parameters and methods for computing layer-level inhibition. - Inhib InhibParams `display:"add-fields"` - - // Learning parameters and methods that operate at the neuron level. - Learn LearnNeurParams `display:"add-fields"` - - // Burst has parameters for computing Burst from act, in Superficial layers - // (but also needed in Deep layers for deep self connections). - Burst BurstParams `display:"inline"` - - // Pulvinar has parameters for computing Pulvinar plus-phase (outcome) - // activations based on Burst activation from corresponding driver neuron. - Pulvinar PulvinarParams `display:"inline"` - - // Drivers are names of SuperLayer(s) that sends 5IB Burst driver - // inputs to this layer. - Drivers Drivers - - // RW are Rescorla-Wagner RL learning parameters. - RW RWParams `display:"inline"` - - // TD are Temporal Differences RL learning parameters. - TD TDParams `display:"inline"` - - // Matrix BG gating parameters - Matrix MatrixParams `display:"inline"` - - // PBWM has general PBWM parameters, including the shape - // of overall Maint + Out gating system that this layer is part of. - PBWM PBWMParams `display:"inline"` - - // GPiGate are gating parameters determining threshold for gating etc. - GPiGate GPiGateParams `display:"inline"` - - // CIN cholinergic interneuron parameters. - CIN CINParams `display:"inline"` - - // PFC Gating parameters - PFCGate PFCGateParams `display:"inline"` - - // PFC Maintenance parameters - PFCMaint PFCMaintParams `display:"inline"` - - // PFCDyns dynamic behavior parameters -- provides deterministic control over PFC maintenance dynamics -- the rows of PFC units (along Y axis) behave according to corresponding index of Dyns (inner loop is Super Y axis, outer is Dyn types) -- ensure Y dim has even multiple of len(Dyns) - PFCDyns PFCDyns + // Params contains all of the layer parameters. + Params LayerParams // slice of neurons for this layer, as a flat list of len = Shape.Len(). // Must iterate over index and use pointer to modify values. @@ -108,104 +56,30 @@ type Layer struct { SendTo LayerNames } -// emer.Layer interface methods - -func (ly *Layer) StyleObject() any { return ly } -func (ly *Layer) TypeName() string { return ly.Type.String() } -func (ly *Layer) TypeNumber() int { return int(ly.Type) } -func (ly *Layer) NumRecvPaths() int { return len(ly.RecvPaths) } -func (ly *Layer) RecvPath(idx int) emer.Path { return ly.RecvPaths[idx] } -func (ly *Layer) NumSendPaths() int { return len(ly.SendPaths) } -func (ly *Layer) SendPath(idx int) emer.Path { return ly.SendPaths[idx] } - func (ly *Layer) Defaults() { - ly.Act.Defaults() - ly.Inhib.Defaults() - ly.Learn.Defaults() - ly.Burst.Defaults() - ly.Pulvinar.Defaults() - ly.RW.Defaults() - ly.TD.Defaults() - ly.Matrix.Defaults() - ly.PBWM.Defaults() - ly.GPiGate.Defaults() - ly.CIN.Defaults() - ly.PFCGate.Defaults() - ly.PFCMaint.Defaults() - ly.Inhib.Layer.On = true + ly.Params.Layer = ly + ly.Params.Defaults() for _, pt := range ly.RecvPaths { pt.Defaults() } - ly.DefaultsForType() -} - -// DefaultsForType sets the default parameter values for a given layer type. -func (ly *Layer) DefaultsForType() { - switch ly.Type { - case ClampDaLayer: - ly.ClampDaDefaults() - case MatrixLayer: - ly.MatrixDefaults() - case GPiThalLayer: - ly.GPiThalDefaults() - case CINLayer: - case PFCLayer: - case PFCDeepLayer: - ly.PFCDeepDefaults() - } } -// UpdateParams updates all params given any changes that might have been made to individual values -// including those in the receiving pathways of this layer func (ly *Layer) UpdateParams() { - ly.Act.Update() - ly.Inhib.Update() - ly.Learn.Update() - ly.Burst.Update() - ly.Pulvinar.Update() - ly.RW.Update() - ly.TD.Update() - ly.Matrix.Update() - ly.PBWM.Update() - ly.GPiGate.Update() - ly.CIN.Update() - ly.PFCGate.Update() - ly.PFCMaint.Update() + ly.Params.UpdateParams() for _, pt := range ly.RecvPaths { pt.UpdateParams() } } -func (ly *Layer) ShouldDisplay(field string) bool { - isPBWM := ly.Type == MatrixLayer || ly.Type == GPiThalLayer || ly.Type == CINLayer || ly.Type == PFCLayer || ly.Type == PFCDeepLayer - switch field { - case "Burst": - return ly.Type == SuperLayer || ly.Type == CTLayer - case "Pulvinar", "Drivers": - return ly.Type == PulvinarLayer - case "RW": - return ly.Type == RWPredLayer || ly.Type == RWDaLayer - case "TD": - return ly.Type == TDPredLayer || ly.Type == TDIntegLayer || ly.Type == TDDaLayer - case "PBWM": - return isPBWM - case "SendTo": - return ly.Type == GPiThalLayer || ly.Type == ClampDaLayer || ly.Type == RWDaLayer || ly.Type == TDDaLayer || ly.Type == CINLayer - case "Matrix": - return ly.Type == MatrixLayer - case "GPiGate": - return ly.Type == GPiThalLayer - case "CIN": - return ly.Type == CINLayer - case "PFCGate", "PFCMaint": - return ly.Type == PFCLayer || ly.Type == PFCDeepLayer - case "PFCDyns": - return ly.Type == PFCDeepLayer - default: - return true - } - return true -} +// emer.Layer interface methods + +func (ly *Layer) StyleObject() any { return ly } +func (ly *Layer) TypeName() string { return ly.Params.Type.String() } +func (ly *Layer) TypeNumber() int { return int(ly.Params.Type) } +func (ly *Layer) NumRecvPaths() int { return len(ly.RecvPaths) } +func (ly *Layer) RecvPath(idx int) emer.Path { return ly.RecvPaths[idx] } +func (ly *Layer) NumSendPaths() int { return len(ly.SendPaths) } +func (ly *Layer) SendPath(idx int) emer.Path { return ly.SendPaths[idx] } // ParamsString returns a listing of all parameters in the Layer and // pathways within the layer. If nonDefault is true, only report those @@ -213,60 +87,7 @@ func (ly *Layer) ShouldDisplay(field string) bool { func (ly *Layer) ParamsString(nonDefault bool) string { var b strings.Builder b.WriteString("//////// Layer: " + ly.Name + "\n") - - b.WriteString(params.PrintStruct(ly, 1, func(path string, ft reflect.StructField, fv any) bool { - if ft.Tag.Get("display") == "-" { - return false - } - if nonDefault { - if def := ft.Tag.Get("default"); def != "" { - if reflectx.ValueIsDefault(reflect.ValueOf(fv), def) { - return false - } - } else { - if reflectx.NonPointerType(ft.Type).Kind() != reflect.Struct { - return false - } - } - } - isPBWM := ly.Type == MatrixLayer || ly.Type == GPiThalLayer || ly.Type == CINLayer || ly.Type == PFCLayer || ly.Type == PFCDeepLayer - switch path { - case "Act", "Inhib", "Learn": - return true - case "Burst": - return ly.Type == SuperLayer || ly.Type == CTLayer - case "Pulvinar", "Drivers": - return ly.Type == PulvinarLayer - case "RW": - return ly.Type == RWPredLayer || ly.Type == RWDaLayer - case "TD": - return ly.Type == TDPredLayer || ly.Type == TDIntegLayer || ly.Type == TDDaLayer - case "PBWM": - return isPBWM - case "SendTo": - return ly.Type == GPiThalLayer || ly.Type == ClampDaLayer || ly.Type == RWDaLayer || ly.Type == TDDaLayer || ly.Type == CINLayer - case "Matrix": - return ly.Type == MatrixLayer - case "GPiGate": - return ly.Type == GPiThalLayer - case "CIN": - return ly.Type == CINLayer - case "PFCGate", "PFCMaint": - return ly.Type == PFCLayer || ly.Type == PFCDeepLayer - case "PFCDyns": - return ly.Type == PFCDeepLayer - } - return false - }, - func(path string, ft reflect.StructField, fv any) string { - if nonDefault { - if def := ft.Tag.Get("default"); def != "" { - return reflectx.ToString(fv) + " [" + def + "]" - } - } - return "" - })) - + b.WriteString(ly.Params.ParamsString(nonDefault)) for _, pt := range ly.RecvPaths { b.WriteString(pt.ParamsString(nonDefault)) } @@ -555,6 +376,7 @@ func (ly *Layer) BuildPaths() error { // Build constructs the layer state, including calling Build on the pathways func (ly *Layer) Build() error { + lp := &ly.Params nu := ly.Shape.Len() if nu == 0 { return fmt.Errorf("Build Layer %v: no units specified in Shape", ly.Name) @@ -572,7 +394,7 @@ func (ly *Layer) Build() error { if err != nil { return errors.Log(err) } - err = ly.CIN.RewLays.Validate(ly.Network) + err = lp.CIN.RewLays.Validate(ly.Network) if err != nil { return errors.Log(err) } @@ -603,7 +425,7 @@ func (ly *Layer) SetWeights(lw *weights.Layer) error { pv, _ := strconv.ParseFloat(ap, 32) pl := &ly.Pools[0] pl.ActAvg.ActPAvg = float32(pv) - ly.Inhib.ActAvg.EffFromAvg(&pl.ActAvg.ActPAvgEff, pl.ActAvg.ActPAvg) + ly.Params.Inhib.ActAvg.EffFromAvg(&pl.ActAvg.ActPAvgEff, pl.ActAvg.ActPAvg) } } var err error diff --git a/leabra/layerparams.go b/leabra/layerparams.go new file mode 100644 index 0000000..bcba0b6 --- /dev/null +++ b/leabra/layerparams.go @@ -0,0 +1,230 @@ +// Copyright (c) 2025, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package leabra + +import ( + "reflect" + + "cogentcore.org/core/base/reflectx" + "github.com/emer/emergent/v2/params" +) + +// LayerParams contains all of the layer parameters, which +// implement the Leabra algorithm at the layer level. +type LayerParams struct { + // type of layer. + Type LayerTypes + + // Activation parameters and methods for computing activations. + Act ActParams `display:"add-fields"` + + // Inhibition parameters and methods for computing layer-level inhibition. + Inhib InhibParams `display:"add-fields"` + + // Learning parameters and methods that operate at the neuron level. + Learn LearnNeurParams `display:"add-fields"` + + // Burst has parameters for computing Burst from act, in Superficial layers + // (but also needed in Deep layers for deep self connections). + Burst BurstParams `display:"inline"` + + // Pulvinar has parameters for computing Pulvinar plus-phase (outcome) + // activations based on Burst activation from corresponding driver neuron. + Pulvinar PulvinarParams `display:"inline"` + + // Drivers are names of SuperLayer(s) that sends 5IB Burst driver + // inputs to this layer. + Drivers Drivers + + // RW are Rescorla-Wagner RL learning parameters. + RW RWParams `display:"inline"` + + // TD are Temporal Differences RL learning parameters. + TD TDParams `display:"inline"` + + // Matrix BG gating parameters + Matrix MatrixParams `display:"inline"` + + // PBWM has general PBWM parameters, including the shape + // of overall Maint + Out gating system that this layer is part of. + PBWM PBWMParams `display:"inline"` + + // GPiGate are gating parameters determining threshold for gating etc. + GPiGate GPiGateParams `display:"inline"` + + // CIN cholinergic interneuron parameters. + CIN CINParams `display:"inline"` + + // PFC Gating parameters + PFCGate PFCGateParams `display:"inline"` + + // PFC Maintenance parameters + PFCMaint PFCMaintParams `display:"inline"` + + // PFCDyns dynamic behavior parameters, which provide deterministic + // control over PFC maintenance dynamics. The rows of PFC units + // (along Y axis) behave according to corresponding index of Dyns + // (inner loop is Super Y axis, outer is Dyn types). + // Ensure Y dim has even multiple of len(Dyns). + PFCDyns PFCDyns + + // pointer back to our layer + Layer *Layer +} + +func (ly *LayerParams) Defaults() { + ly.Act.Defaults() + ly.Inhib.Defaults() + ly.Learn.Defaults() + ly.Burst.Defaults() + ly.Pulvinar.Defaults() + ly.RW.Defaults() + ly.TD.Defaults() + ly.Matrix.Defaults() + ly.PBWM.Defaults() + ly.GPiGate.Defaults() + ly.CIN.Defaults() + ly.PFCGate.Defaults() + ly.PFCMaint.Defaults() + ly.Inhib.Layer.On = true + ly.DefaultsForType() +} + +// DefaultsForType sets the default parameter values for a given layer type. +func (ly *LayerParams) DefaultsForType() { + switch ly.Type { + case ClampDaLayer: + ly.ClampDaDefaults() + case MatrixLayer: + ly.MatrixDefaults() + case GPiThalLayer: + ly.GPiThalDefaults() + case CINLayer: + case PFCLayer: + case PFCDeepLayer: + ly.PFCDeepDefaults() + } +} + +// UpdateParams updates all params given any changes that might have been made to individual values +// including those in the receiving pathways of this layer +func (ly *LayerParams) UpdateParams() { + ly.Act.Update() + ly.Inhib.Update() + ly.Learn.Update() + ly.Burst.Update() + ly.Pulvinar.Update() + ly.RW.Update() + ly.TD.Update() + ly.Matrix.Update() + ly.PBWM.Update() + ly.GPiGate.Update() + ly.CIN.Update() + ly.PFCGate.Update() + ly.PFCMaint.Update() +} + +func (ly *LayerParams) ShouldDisplay(field string) bool { + isPBWM := ly.Type == MatrixLayer || ly.Type == GPiThalLayer || ly.Type == CINLayer || ly.Type == PFCLayer || ly.Type == PFCDeepLayer + switch field { + case "Burst": + return ly.Type == SuperLayer || ly.Type == CTLayer + case "Pulvinar", "Drivers": + return ly.Type == PulvinarLayer + case "RW": + return ly.Type == RWPredLayer || ly.Type == RWDaLayer + case "TD": + return ly.Type == TDPredLayer || ly.Type == TDIntegLayer || ly.Type == TDDaLayer + case "PBWM": + return isPBWM + case "SendTo": + return ly.Type == GPiThalLayer || ly.Type == ClampDaLayer || ly.Type == RWDaLayer || ly.Type == TDDaLayer || ly.Type == CINLayer + case "Matrix": + return ly.Type == MatrixLayer + case "GPiGate": + return ly.Type == GPiThalLayer + case "CIN": + return ly.Type == CINLayer + case "PFCGate", "PFCMaint": + return ly.Type == PFCLayer || ly.Type == PFCDeepLayer + case "PFCDyns": + return ly.Type == PFCDeepLayer + default: + return true + } + return true +} + +// ParamsString returns a listing of all parameters in the Layer and +// pathways within the layer. If nonDefault is true, only report those +// not at their default values. +func (ly *LayerParams) ParamsString(nonDefault bool) string { + return params.PrintStruct(ly, 1, func(path string, ft reflect.StructField, fv any) bool { + if ft.Tag.Get("display") == "-" { + return false + } + if nonDefault { + if def := ft.Tag.Get("default"); def != "" { + if reflectx.ValueIsDefault(reflect.ValueOf(fv), def) { + return false + } + } else { + if reflectx.NonPointerType(ft.Type).Kind() != reflect.Struct { + return false + } + } + } + isPBWM := ly.Type == MatrixLayer || ly.Type == GPiThalLayer || ly.Type == CINLayer || ly.Type == PFCLayer || ly.Type == PFCDeepLayer + switch path { + case "Act", "Inhib", "Learn": + return true + case "Burst": + return ly.Type == SuperLayer || ly.Type == CTLayer + case "Pulvinar", "Drivers": + return ly.Type == PulvinarLayer + case "RW": + return ly.Type == RWPredLayer || ly.Type == RWDaLayer + case "TD": + return ly.Type == TDPredLayer || ly.Type == TDIntegLayer || ly.Type == TDDaLayer + case "PBWM": + return isPBWM + case "SendTo": + return ly.Type == GPiThalLayer || ly.Type == ClampDaLayer || ly.Type == RWDaLayer || ly.Type == TDDaLayer || ly.Type == CINLayer + case "Matrix": + return ly.Type == MatrixLayer + case "GPiGate": + return ly.Type == GPiThalLayer + case "CIN": + return ly.Type == CINLayer + case "PFCGate", "PFCMaint": + return ly.Type == PFCLayer || ly.Type == PFCDeepLayer + case "PFCDyns": + return ly.Type == PFCDeepLayer + } + return false + }, + func(path string, ft reflect.StructField, fv any) string { + if nonDefault { + if def := ft.Tag.Get("default"); def != "" { + return reflectx.ToString(fv) + " [" + def + "]" + } + } + return "" + }) +} + +// StyleClass implements the [params.Styler] interface for parameter setting, +// and must only be called after the network has been built, and is current, +// because it uses the global CurrentNetwork variable. +func (ly *LayerParams) StyleClass() string { + return ly.Type.String() + " " + ly.Layer.Class +} + +// StyleName implements the [params.Styler] interface for parameter setting, +// and must only be called after the network has been built, and is current, +// because it uses the global CurrentNetwork variable. +func (ly *LayerParams) StyleName() string { + return ly.Layer.Name +} diff --git a/leabra/looper.go b/leabra/looper.go index 1d283f5..222cbe7 100644 --- a/leabra/looper.go +++ b/leabra/looper.go @@ -21,7 +21,7 @@ import ( // - netview update calls at appropriate levels (no-op if no GUI) func LooperStandard(ls *looper.Stacks, net *Network, viewFunc func(mode enums.Enum) *NetViewUpdate, plusStart, plusEnd int, cycle, trial, trainMode enums.Enum) { ls.AddEventAllModes(cycle, "MinusPhase:Start", 0, func() { - net.Context.PlusPhase = false + net.Context().PlusPhase = false }) ls.AddEventAllModes(cycle, "Quarter1", 25, func() { net.QuarterFinal() @@ -33,7 +33,7 @@ func LooperStandard(ls *looper.Stacks, net *Network, viewFunc func(mode enums.En net.QuarterFinal() }) ls.AddEventAllModes(cycle, "PlusPhase:Start", plusStart, func() { - net.Context.PlusPhase = true + net.Context().PlusPhase = true }) for mode, st := range ls.Stacks { @@ -96,33 +96,22 @@ const ( // synchrony peaks in this range. Gamma - // Beta is 50 cycles (msec) or 20 hz (two Gammas). - // Gating in the basal ganglia and associated updating in prefrontal - // cortex occurs at this frequency. - Beta - - // Alpha is 100 cycle (msec) or 10 hz (two Betas). - // Posterior neocortex exhibits synchrony peaks in this range, - // corresponding to the intrinsic bursting frequency of layer 5 - // IB neurons, and corticothalamic loop resonance. - Alpha - // Phase is the Minus or Plus phase, where plus phase is bursting / outcome // that drives positive learning relative to prediction in minus phase. // Minus phase is at 150 cycles (msec). Phase - // Theta is 200 cycles (msec) or 5 hz (two Alphas), i.e., a Trial. - // This is the modal duration of a saccade, the update frequency of - // medial temporal lobe episodic memory, and the minimal predictive learning cycle - // (perceive on Alpha 1, predict on 2). - Theta + // Alpha is 100 cycle (msec) or 10 hz (four Gammas). + // Posterior neocortex exhibits synchrony peaks in this range, + // corresponding to the intrinsic bursting frequency of layer 5 + // IB neurons, and corticothalamic loop resonance. + Alpha ) //gosl:end // ViewTimeCycles are the cycle intervals associated with each ViewTimes level. -var ViewTimeCycles = []int{1, 10, 25, 50, 100, 150, 200} +var ViewTimeCycles = []int{1, 10, 25, 75, 100} // Cycles returns the number of cycles associated with a given view time. func (vt ViewTimes) Cycles() int { @@ -241,7 +230,7 @@ func (vu *NetViewUpdate) UpdateCycle(cyc int, mode, level enums.Enum) { vu.updateCycleRaster(cyc, counters) return } - if vu.Time == Theta { // only trial + if vu.Time == Alpha { // only trial return } vtc := vu.Time.Cycles() diff --git a/leabra/network.go b/leabra/network.go index e947a47..fba7350 100644 --- a/leabra/network.go +++ b/leabra/network.go @@ -38,7 +38,7 @@ func (nt *Network) AlphaCycInit(updtActAvg bool) { } ly.AlphaCycInit(updtActAvg) } - nt.Context.AlphaCycStart() + nt.Context().AlphaCycStart() } // Cycle runs one cycle of activation updating: @@ -55,9 +55,9 @@ func (nt *Network) Cycle() { nt.InhibFromGeAct() nt.ActFromG() nt.AvgMaxAct() - nt.CyclePost() // general post cycle actions. - nt.RecGateAct() // Record activation state at time of gating (in ActG neuron var) - nt.Context.CycleInc() // keep synced + nt.CyclePost() // general post cycle actions. + nt.RecGateAct() // Record activation state at time of gating (in ActG neuron var) + nt.Context().CycleInc() // keep synced } ////////////////////////////////////////////////////////////////////////////////////// @@ -66,7 +66,7 @@ func (nt *Network) Cycle() { // SendGeDelta sends change in activation since last sent, if above thresholds // and integrates sent deltas into GeRaw and time-integrated Ge values func (nt *Network) SendGDelta() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -83,7 +83,7 @@ func (nt *Network) SendGDelta() { // AvgMaxGe computes the average and max Ge stats, used in inhibition func (nt *Network) AvgMaxGe() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -94,7 +94,7 @@ func (nt *Network) AvgMaxGe() { // InhibiFromGeAct computes inhibition Gi from Ge and Act stats within relevant Pools func (nt *Network) InhibFromGeAct() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -105,7 +105,7 @@ func (nt *Network) InhibFromGeAct() { // ActFromG computes rate-code activation from Ge, Gi, Gl conductances func (nt *Network) ActFromG() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -116,7 +116,7 @@ func (nt *Network) ActFromG() { // AvgMaxGe computes the average and max Ge stats, used in inhibition func (nt *Network) AvgMaxAct() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -130,7 +130,7 @@ func (nt *Network) AvgMaxAct() { // SuperLayer computes Burst activity. // GateLayer (GPiThal) computes gating, sends to other layers. func (nt *Network) CyclePost() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -141,7 +141,7 @@ func (nt *Network) CyclePost() { // QuarterFinal does updating after end of a quarter, for first 2 func (nt *Network) QuarterFinal() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -159,7 +159,7 @@ func (nt *Network) QuarterFinal() { // MinusPhase is called at the end of the minus phase (quarter 3), to record state. func (nt *Network) MinusPhase() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -170,7 +170,7 @@ func (nt *Network) MinusPhase() { // PlusPhase is called at the end of the plus phase (quarter 4), to record state. func (nt *Network) PlusPhase() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -323,6 +323,10 @@ func (nt *Network) InitExt() { } } +// ApplyExts does network-level final apply external inputs updates. +func (nt *Network) ApplyExts() { +} + // UpdateExtFlags updates the neuron flags for external input // based on current layer Type field. // call this if the Type has changed since the last diff --git a/leabra/networkbase.go b/leabra/networkbase.go index d56c84c..6bbf4d8 100644 --- a/leabra/networkbase.go +++ b/leabra/networkbase.go @@ -25,9 +25,9 @@ import ( type Network struct { emer.NetworkBase - // Context is the context state. Other copies of Context can be maintained + // Ctx is the context state. Other copies of Context can be maintained // and [SetContext] to update this one, but this instance is the canonical one. - Context Context + Ctx Context // list of layers Layers []*Layer @@ -46,6 +46,7 @@ type Network struct { WtBalCtr int `edit:"-"` } +func (nt *Network) Context() *Context { return &nt.Ctx } func (nt *Network) NumLayers() int { return len(nt.Layers) } func (nt *Network) EmerLayer(idx int) emer.Layer { return nt.Layers[idx] } func (nt *Network) MaxParallelData() int { return 1 } @@ -56,7 +57,7 @@ func NewNetwork(name string) *Network { net := &Network{} emer.InitNetwork(net, name) net.NThreads = 1 - net.Context.Defaults() + net.Context().Defaults() return net } @@ -81,7 +82,7 @@ func (nt *Network) UpdateLayerMaps() { nt.UpdateLayerNameMap() nt.LayerClassMap = make(map[string][]string) for _, ly := range nt.Layers { - cs := ly.Type.String() + " " + ly.Class + cs := ly.Params.Type.String() + " " + ly.Class cls := strings.Split(cs, " ") for _, cl := range cls { if cl == "" { @@ -199,12 +200,13 @@ func (nt *Network) AllLayerInhibs() string { if ly.Off { continue } - str += fmt.Sprintf("%15s\t\tNominal:\t%6.2f\n", ly.Name, ly.Inhib.ActAvg.Init) - if ly.Inhib.Layer.On { - str += fmt.Sprintf("\t\t\t\t\t\tLayer.Gi:\t%6.2f\n", ly.Inhib.Layer.Gi) + lp := &ly.Params + str += fmt.Sprintf("%15s\t\tNominal:\t%6.2f\n", ly.Name, lp.Inhib.ActAvg.Init) + if lp.Inhib.Layer.On { + str += fmt.Sprintf("\t\t\t\t\t\tLayer.Gi:\t%6.2f\n", lp.Inhib.Layer.Gi) } - if ly.Inhib.Pool.On { - str += fmt.Sprintf("\t\t\t\t\t\tPool.Gi: \t%6.2f\n", ly.Inhib.Pool.Gi) + if lp.Inhib.Pool.On { + str += fmt.Sprintf("\t\t\t\t\t\tPool.Gi: \t%6.2f\n", lp.Inhib.Pool.Gi) } str += fmt.Sprintf("\n") } @@ -226,7 +228,7 @@ func (nt *Network) AllPathScales() string { if pt.Off { continue } - str += fmt.Sprintf("\t%23s\t\tAbs:\t%g\tRel:\t%g\n", pt.Name, pt.WtScale.Abs, pt.WtScale.Rel) + str += fmt.Sprintf("\t%23s\t\tAbs:\t%g\tRel:\t%g\n", pt.Name, pt.Params.WtScale.Abs, pt.Params.WtScale.Rel) } } return str @@ -234,7 +236,7 @@ func (nt *Network) AllPathScales() string { // Defaults sets all the default parameters for all layers and pathways func (nt *Network) Defaults() { - nt.Context.Defaults() + nt.Context().Defaults() nt.WtBalInterval = 10 nt.WtBalCtr = 0 for li, ly := range nt.Layers { @@ -290,7 +292,7 @@ func (nt *Network) AddLayerInit(ly *Layer, name string, typ LayerTypes, shape .. } emer.InitLayer(ly, name) ly.Shape.SetShapeSizes(shape...) - ly.Type = typ + ly.Params.Type = typ nt.Layers = append(nt.Layers, ly) nt.UpdateLayerMaps() } diff --git a/leabra/neuromod.go b/leabra/neuromod.go index 7d87eee..6f2d7d3 100644 --- a/leabra/neuromod.go +++ b/leabra/neuromod.go @@ -76,7 +76,7 @@ func (nt *Network) AddClampDaLayer(name string) *Layer { return nt.AddLayer2D(name, ClampDaLayer, 1, 1) } -func (ly *Layer) ClampDaDefaults() { +func (ly *LayerParams) ClampDaDefaults() { ly.Act.Clamp.Range.Set(-1, 1) } diff --git a/leabra/params.go b/leabra/params.go index 1992b58..b51bc51 100644 --- a/leabra/params.go +++ b/leabra/params.go @@ -191,7 +191,7 @@ func ApplyParamSheets(net *Network, layer *params.Sheet[*LayerParams], path *par func ApplyLayerSheet(net *Network, sheet *params.Sheet[*LayerParams]) bool { applied := false for _, ly := range net.Layers { - app := sheet.Apply(ly.Params) + app := sheet.Apply(&ly.Params) ly.UpdateParams() if app { applied = true @@ -205,7 +205,7 @@ func ApplyPathSheet(net *Network, sheet *params.Sheet[*PathParams]) bool { applied := false for _, ly := range net.Layers { for _, pt := range ly.RecvPaths { - app := sheet.Apply(pt.Params) + app := sheet.Apply(&pt.Params) pt.UpdateParams() if app { applied = true diff --git a/leabra/path.go b/leabra/path.go index c739c26..86798c2 100644 --- a/leabra/path.go +++ b/leabra/path.go @@ -11,8 +11,7 @@ import ( // note: path.go contains algorithm methods; pathbase.go has infrastructure. -////////////////////////////////////////////////////////////////////////////////////// -// Init methods +//////// Init methods // SetScalesRPool initializes synaptic Scale values using given tensor // of values which has unique values for each recv neuron within a given pool. @@ -61,6 +60,7 @@ func (pt *Path) SetScalesRPool(scales tensor.Tensor) { // SetWtsFunc initializes synaptic Wt value using given function // based on receiving and sending unit indexes. func (pt *Path) SetWtsFunc(wtFun func(si, ri int, send, recv *tensor.Shape) float32) { + pp := &pt.Params rsh := &pt.Recv.Shape rn := rsh.Len() ssh := &pt.Send.Shape @@ -74,7 +74,7 @@ func (pt *Path) SetWtsFunc(wtFun func(si, ri int, send, recv *tensor.Shape) floa rsi := pt.RSynIndex[st+ci] sy := &pt.Syns[rsi] sy.Wt = wt * sy.Scale - pt.Learn.LWtFromWt(sy) + pp.Learn.LWtFromWt(sy) } } } @@ -103,10 +103,11 @@ func (pt *Path) SetScalesFunc(scaleFun func(si, ri int, send, recv *tensor.Shape // for an individual synapse. // It also updates the linear weight value based on the sigmoidal weight value. func (pt *Path) InitWeightsSyn(syn *Synapse) { + pp := &pt.Params if syn.Scale == 0 { syn.Scale = 1 } - syn.Wt = float32(pt.WtInit.Gen()) + syn.Wt = float32(pp.WtInit.Gen()) // enforce normalized weight range -- required for most uses and if not // then a new type of path should be used: if syn.Wt < 0 { @@ -115,7 +116,7 @@ func (pt *Path) InitWeightsSyn(syn *Synapse) { if syn.Wt > 1 { syn.Wt = 1 } - syn.LWt = pt.Learn.WtSig.LinFromSigWt(syn.Wt) + syn.LWt = pp.Learn.WtSig.LinFromSigWt(syn.Wt) syn.Wt *= syn.Scale // note: scale comes after so LWt is always "pure" non-scaled value syn.DWt = 0 syn.Norm = 0 @@ -218,13 +219,13 @@ func (pt *Path) InitGInc() { } } -////////////////////////////////////////////////////////////////////////////////////// -// Act methods +//////// Act methods // SendGDelta sends the delta-activation from sending neuron index si, // to integrate synaptic conductances on receivers func (pt *Path) SendGDelta(si int, delta float32) { - if pt.Type == CTCtxtPath { + pp := &pt.Params + if pp.Type == CTCtxtPath { return } scdel := delta * pt.GScale @@ -240,8 +241,9 @@ func (pt *Path) SendGDelta(si int, delta float32) { // RecvGInc increments the receiver's GeRaw or GiRaw from that of all the pathways. func (pt *Path) RecvGInc() { + pp := &pt.Params rlay := pt.Recv - switch pt.Type { + switch pp.Type { case CTCtxtPath: // nop case InhibPath: @@ -267,28 +269,28 @@ func (pt *Path) RecvGInc() { } } -////////////////////////////////////////////////////////////////////////////////////// -// Learn methods +//////// Learn methods // DWt computes the weight change (learning) -- on sending pathways func (pt *Path) DWt() { - if !pt.Learn.Learn { + pp := &pt.Params + if !pp.Learn.Learn { return } switch { - case pt.Type == CHLPath && pt.CHL.On: + case pp.Type == CHLPath && pp.CHL.On: pt.DWtCHL() - case pt.Type == CTCtxtPath: + case pp.Type == CTCtxtPath: pt.DWtCTCtxt() - case pt.Type == EcCa1Path: + case pp.Type == EcCa1Path: pt.DWtEcCa1() - case pt.Type == MatrixPath: + case pp.Type == MatrixPath: pt.DWtMatrix() - case pt.Type == RWPath: + case pp.Type == RWPath: pt.DWtRW() - case pt.Type == TDPredPath: + case pp.Type == TDPredPath: pt.DWtTDPred() - case pt.Type == DaHebbPath: + case pp.Type == DaHebbPath: pt.DWtDaHebb() default: pt.DWtStd() @@ -297,11 +299,12 @@ func (pt *Path) DWt() { // DWt computes the weight change (learning) -- on sending pathways func (pt *Path) DWtStd() { + pp := &pt.Params slay := pt.Send rlay := pt.Recv for si := range slay.Neurons { sn := &slay.Neurons[si] - if sn.AvgS < pt.Learn.XCal.LrnThr && sn.AvgM < pt.Learn.XCal.LrnThr { + if sn.AvgS < pp.Learn.XCal.LrnThr && sn.AvgM < pp.Learn.XCal.LrnThr { continue } nc := int(pt.SConN[si]) @@ -312,24 +315,24 @@ func (pt *Path) DWtStd() { sy := &syns[ci] ri := scons[ci] rn := &rlay.Neurons[ri] - err, bcm := pt.Learn.CHLdWt(sn.AvgSLrn, sn.AvgM, rn.AvgSLrn, rn.AvgM, rn.AvgL) + err, bcm := pp.Learn.CHLdWt(sn.AvgSLrn, sn.AvgM, rn.AvgSLrn, rn.AvgM, rn.AvgL) - bcm *= pt.Learn.XCal.LongLrate(rn.AvgLLrn) - err *= pt.Learn.XCal.MLrn + bcm *= pp.Learn.XCal.LongLrate(rn.AvgLLrn) + err *= pp.Learn.XCal.MLrn dwt := bcm + err norm := float32(1) - if pt.Learn.Norm.On { - norm = pt.Learn.Norm.NormFromAbsDWt(&sy.Norm, math32.Abs(dwt)) + if pp.Learn.Norm.On { + norm = pp.Learn.Norm.NormFromAbsDWt(&sy.Norm, math32.Abs(dwt)) } - if pt.Learn.Momentum.On { - dwt = norm * pt.Learn.Momentum.MomentFromDWt(&sy.Moment, dwt) + if pp.Learn.Momentum.On { + dwt = norm * pp.Learn.Momentum.MomentFromDWt(&sy.Moment, dwt) } else { dwt *= norm } - sy.DWt += pt.Learn.Lrate * dwt + sy.DWt += pp.Learn.Lrate * dwt } // aggregate max DWtNorm over sending synapses - if pt.Learn.Norm.On { + if pp.Learn.Norm.On { maxNorm := float32(0) for ci := range syns { sy := &syns[ci] @@ -347,25 +350,26 @@ func (pt *Path) DWtStd() { // WtFromDWt updates the synaptic weight values from delta-weight changes -- on sending pathways func (pt *Path) WtFromDWt() { - if !pt.Learn.Learn { + pp := &pt.Params + if !pp.Learn.Learn { return } - switch pt.Type { + switch pp.Type { case RWPath, TDPredPath: pt.WtFromDWtLinear() return } - if pt.Learn.WtBal.On { + if pp.Learn.WtBal.On { for si := range pt.Syns { sy := &pt.Syns[si] ri := pt.SConIndex[si] wb := &pt.WbRecv[ri] - pt.Learn.WtFromDWt(wb.Inc, wb.Dec, &sy.DWt, &sy.Wt, &sy.LWt, sy.Scale) + pp.Learn.WtFromDWt(wb.Inc, wb.Dec, &sy.DWt, &sy.Wt, &sy.LWt, sy.Scale) } } else { for si := range pt.Syns { sy := &pt.Syns[si] - pt.Learn.WtFromDWt(1, 1, &sy.DWt, &sy.Wt, &sy.LWt, sy.Scale) + pp.Learn.WtFromDWt(1, 1, &sy.DWt, &sy.Wt, &sy.LWt, sy.Scale) } } } @@ -385,12 +389,13 @@ func (pt *Path) WtFromDWtLinear() { // WtBalFromWt computes the Weight Balance factors based on average recv weights func (pt *Path) WtBalFromWt() { - if !pt.Learn.Learn || !pt.Learn.WtBal.On { + pp := &pt.Params + if !pp.Learn.Learn || !pp.Learn.WtBal.On { return } rlay := pt.Recv - if !pt.Learn.WtBal.Targs && rlay.IsTarget() { + if !pp.Learn.WtBal.Targs && rlay.IsTarget() { return } for ri := range rlay.Neurons { @@ -406,7 +411,7 @@ func (pt *Path) WtBalFromWt() { for ci := range rsidxs { rsi := rsidxs[ci] sy := &pt.Syns[rsi] - if sy.Wt >= pt.Learn.WtBal.AvgThr { + if sy.Wt >= pp.Learn.WtBal.AvgThr { sumWt += sy.Wt sumN++ } @@ -417,18 +422,18 @@ func (pt *Path) WtBalFromWt() { sumWt = 0 } wb.Avg = sumWt - wb.Fact, wb.Inc, wb.Dec = pt.Learn.WtBal.WtBal(sumWt) + wb.Fact, wb.Inc, wb.Dec = pp.Learn.WtBal.WtBal(sumWt) } } // LrateMult sets the new Lrate parameter for Paths to LrateInit * mult. // Useful for implementing learning rate schedules. func (pt *Path) LrateMult(mult float32) { - pt.Learn.Lrate = pt.Learn.LrateInit * mult + pp := &pt.Params + pp.Learn.Lrate = pp.Learn.LrateInit * mult } -/////////////////////////////////////////////////////////////////////// -// WtBalRecvPath +//////// WtBalRecvPath // WtBalRecvPath are state variables used in computing the WtBal weight balance function // There is one of these for each Recv Neuron participating in the pathway. diff --git a/leabra/pathbase.go b/leabra/pathbase.go index b5a29a6..8e03cbd 100644 --- a/leabra/pathbase.go +++ b/leabra/pathbase.go @@ -9,17 +9,14 @@ import ( "fmt" "io" "log" - "reflect" "strconv" "strings" "cogentcore.org/core/base/indent" - "cogentcore.org/core/base/reflectx" "cogentcore.org/core/math32" "cogentcore.org/core/math32/minmax" "cogentcore.org/lab/tensor" "github.com/emer/emergent/v2/emer" - "github.com/emer/emergent/v2/params" "github.com/emer/emergent/v2/paths" "github.com/emer/emergent/v2/weights" ) @@ -31,36 +28,19 @@ import ( type Path struct { emer.PathBase - // sending layer for this pathway. - Send *Layer - - // receiving layer for this pathway. - Recv *Layer - - // type of pathway. - Type PathTypes - - // initial random weight distribution - WtInit WtInitParams `display:"inline"` - - // weight scaling parameters: modulates overall strength of pathway, - // using both absolute and relative factors. - WtScale WtScaleParams `display:"inline"` - - // synaptic-level learning parameters - Learn LearnSynParams `display:"add-fields"` + // Params contains all of the path parameters, which implement the algorithm. + Params PathParams // For CTCtxtPath if true, this is the pathway from corresponding - // Superficial layer. Should be OneToOne path, with Learn.Learn = false, + // Superficial layer. Should be OneToOne path, with Learn.Learn = false, // WtInit.Var = 0, Mean = 0.8. These defaults are set if FromSuper = true. FromSuper bool - // CHL are the parameters for CHL learning. if CHL is On then - // WtSig.SoftBound is automatically turned off, as it is incompatible. - CHL CHLParams `display:"inline"` + // sending layer for this pathway. + Send *Layer - // special parameters for matrix trace learning - Trace TraceParams `display:"inline"` + // receiving layer for this pathway. + Recv *Layer // synaptic state values, ordered by the sending layer // units which owns them -- one-to-one with SConIndex array. @@ -131,58 +111,18 @@ type Path struct { func (pt *Path) StyleObject() any { return pt } func (pt *Path) RecvLayer() emer.Layer { return pt.Recv } func (pt *Path) SendLayer() emer.Layer { return pt.Send } -func (pt *Path) TypeName() string { return pt.Type.String() } -func (pt *Path) TypeNumber() int { return int(pt.Type) } +func (pt *Path) TypeName() string { return pt.Params.Type.String() } +func (pt *Path) TypeNumber() int { return int(pt.Params.Type) } func (pt *Path) Defaults() { - pt.WtInit.Defaults() - pt.WtScale.Defaults() - pt.Learn.Defaults() - pt.CHL.Defaults() - pt.Trace.Defaults() + pt.Params.Path = pt + pt.Params.Defaults() pt.GScale = 1 - pt.DefaultsForType() -} - -func (pt *Path) DefaultsForType() { - switch pt.Type { - case CHLPath: - pt.CHLDefaults() - case EcCa1Path: - pt.EcCa1Defaults() - case TDPredPath: - pt.TDPredDefaults() - case RWPath: - pt.RWDefaults() - case MatrixPath: - pt.MatrixDefaults() - case DaHebbPath: - pt.DaHebbDefaults() - } } // UpdateParams updates all params given any changes that might have been made to individual values func (pt *Path) UpdateParams() { - pt.WtScale.Update() - pt.Learn.Update() - pt.Learn.LrateInit = pt.Learn.Lrate - if pt.Type == CHLPath && pt.CHL.On { - pt.Learn.WtSig.SoftBound = false - } - pt.CHL.Update() - pt.Trace.Update() -} - -func (pt *Path) ShouldDisplay(field string) bool { - switch field { - case "CHL": - return pt.Type == CHLPath - case "Trace": - return pt.Type == MatrixPath - default: - return true - } - return true + pt.Params.UpdateParams() } // ParamsString returns a listing of all parameters in the Layer and @@ -191,39 +131,7 @@ func (pt *Path) ShouldDisplay(field string) bool { func (pt *Path) ParamsString(nonDefault bool) string { var b strings.Builder b.WriteString(" //////// Path: " + pt.Name + "\n") - b.WriteString(params.PrintStruct(pt, 1, func(path string, ft reflect.StructField, fv any) bool { - if ft.Tag.Get("display") == "-" { - return false - } - if nonDefault { - if def := ft.Tag.Get("default"); def != "" { - if reflectx.ValueIsDefault(reflect.ValueOf(fv), def) { - return false - } - } else { - if reflectx.NonPointerType(ft.Type).Kind() != reflect.Struct { - return false - } - } - } - switch path { - case "WtInit", "WtScale", "Learn": - return true - case "CHL": - return pt.Type == CHLPath - case "Trace": - return pt.Type == MatrixPath - } - return false - }, - func(path string, ft reflect.StructField, fv any) string { - if nonDefault { - if def := ft.Tag.Get("default"); def != "" { - return reflectx.ToString(fv) + " [" + def + "]" - } - } - return "" - })) + b.WriteString(pt.Params.ParamsString(nonDefault)) return b.String() } @@ -324,6 +232,7 @@ func (pt *Path) SynValue(varNm string, sidx, ridx int) float32 { // between given send, recv unit indexes (1D, flat indexes) // returns error for access errors. func (pt *Path) SetSynValue(varNm string, sidx, ridx int, val float32) error { + pp := &pt.Params vidx, err := pt.SynVarIndex(varNm) if err != nil { return err @@ -335,7 +244,7 @@ func (pt *Path) SetSynValue(varNm string, sidx, ridx int, val float32) error { sy := &pt.Syns[synIndex] sy.SetVarByIndex(vidx, val) if varNm == "Wt" { - pt.Learn.LWtFromWt(sy) + pp.Learn.LWtFromWt(sy) } return nil } @@ -443,7 +352,7 @@ func (pt *Path) Connect(slay, rlay *Layer, pat paths.Pattern, typ PathTypes) { pt.Send = slay pt.Recv = rlay pt.Pattern = pat - pt.Type = typ + pt.Params.Type = typ pt.Name = pt.Send.Name + "To" + pt.Recv.Name } diff --git a/leabra/pathparams.go b/leabra/pathparams.go new file mode 100644 index 0000000..343c226 --- /dev/null +++ b/leabra/pathparams.go @@ -0,0 +1,142 @@ +// Copyright (c) 2025, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package leabra + +import ( + "reflect" + + "cogentcore.org/core/base/reflectx" + "github.com/emer/emergent/v2/params" +) + +// PathParams contains all of the path parameters, which +// implement the Leabra algorithm at the path level. +type PathParams struct { + // type of pathway. + Type PathTypes + + // initial random weight distribution + WtInit WtInitParams `display:"inline"` + + // weight scaling parameters: modulates overall strength of pathway, + // using both absolute and relative factors. + WtScale WtScaleParams `display:"inline"` + + // synaptic-level learning parameters + Learn LearnSynParams `display:"add-fields"` + + // CHL are the parameters for CHL learning. if CHL is On then + // WtSig.SoftBound is automatically turned off, as it is incompatible. + CHL CHLParams `display:"inline"` + + // special parameters for matrix trace learning + Trace TraceParams `display:"inline"` + + // Path points back to our path. + Path *Path +} + +func (pt *PathParams) Defaults() { + pt.WtInit.Defaults() + pt.WtScale.Defaults() + pt.Learn.Defaults() + pt.CHL.Defaults() + pt.Trace.Defaults() + pt.DefaultsForType() +} + +func (pt *PathParams) DefaultsForType() { + switch pt.Type { + case CHLPath: + pt.CHLDefaults() + case EcCa1Path: + pt.EcCa1Defaults() + case TDPredPath: + pt.TDPredDefaults() + case RWPath: + pt.RWDefaults() + case MatrixPath: + pt.MatrixDefaults() + case DaHebbPath: + pt.DaHebbDefaults() + } +} + +// UpdateParams updates all params given any changes that might have been made to individual values +func (pt *PathParams) UpdateParams() { + pt.WtScale.Update() + pt.Learn.Update() + pt.Learn.LrateInit = pt.Learn.Lrate + if pt.Type == CHLPath && pt.CHL.On { + pt.Learn.WtSig.SoftBound = false + } + pt.CHL.Update() + pt.Trace.Update() +} + +func (pt *PathParams) ShouldDisplay(field string) bool { + switch field { + case "CHL": + return pt.Type == CHLPath + case "Trace": + return pt.Type == MatrixPath + default: + return true + } + return true +} + +// ParamsString returns a listing of all parameters in the Layer and +// pathways within the layer. If nonDefault is true, only report those +// not at their default values. +func (pt *PathParams) ParamsString(nonDefault bool) string { + return params.PrintStruct(pt, 1, func(path string, ft reflect.StructField, fv any) bool { + if ft.Tag.Get("display") == "-" { + return false + } + if nonDefault { + if def := ft.Tag.Get("default"); def != "" { + if reflectx.ValueIsDefault(reflect.ValueOf(fv), def) { + return false + } + } else { + if reflectx.NonPointerType(ft.Type).Kind() != reflect.Struct { + return false + } + } + } + switch path { + case "WtInit", "WtScale", "Learn": + return true + case "CHL": + return pt.Type == CHLPath + case "Trace": + return pt.Type == MatrixPath + } + return false + }, + func(path string, ft reflect.StructField, fv any) string { + if nonDefault { + if def := ft.Tag.Get("default"); def != "" { + return reflectx.ToString(fv) + " [" + def + "]" + } + } + return "" + }) +} + +// StyleClass implements the [params.Styler] interface for parameter setting, +// and must only be called after the network has been built, and is current, +// because it uses the global CurrentNetwork variable. +func (pt *PathParams) StyleClass() string { + return pt.Type.String() + " " + pt.Path.Class +} + +// StyleName implements the [params.Styler] interface for parameter setting, +// and must only be called after the network has been built, and is current, +// because it uses the global CurrentNetwork variable. +func (pt *PathParams) StyleName() string { + return pt.Path.Name +} diff --git a/leabra/pbwm_layers.go b/leabra/pbwm_layers.go index beb315f..b43fc5c 100644 --- a/leabra/pbwm_layers.go +++ b/leabra/pbwm_layers.go @@ -46,7 +46,7 @@ func (mp *MatrixParams) Defaults() { func (mp *MatrixParams) Update() { } -func (ly *Layer) MatrixDefaults() { +func (ly *LayerParams) MatrixDefaults() { // special inhib params ly.PBWM.Type = MaintOut ly.Inhib.Layer.Gi = 1.9 @@ -63,12 +63,13 @@ func (ly *Layer) MatrixDefaults() { // DALrnFromDA returns effective learning dopamine value from given raw DA value // applying Burst and Dip Gain factors, and then reversing sign for D2R. func (ly *Layer) DALrnFromDA(da float32) float32 { + lp := &ly.Params if da > 0 { - da *= ly.Matrix.BurstGain + da *= lp.Matrix.BurstGain } else { - da *= ly.Matrix.DipGain + da *= lp.Matrix.DipGain } - if ly.PBWM.DaR == D2R { + if lp.PBWM.DaR == D2R { da *= -1 } return da @@ -76,7 +77,8 @@ func (ly *Layer) DALrnFromDA(da float32) float32 { // MatrixOutAChInhib applies OutAChInhib to bias output gating on reward trials. func (ly *Layer) MatrixOutAChInhib(ctx *Context) { - if ly.Matrix.OutAChInhib == 0 { + lp := &ly.Params + if lp.Matrix.OutAChInhib == 0 { return } @@ -84,7 +86,7 @@ func (ly *Layer) MatrixOutAChInhib(ctx *Context) { xpN := ly.Shape.DimSize(1) ynN := ly.Shape.DimSize(2) xnN := ly.Shape.DimSize(3) - maintN := ly.PBWM.MaintN + maintN := lp.PBWM.MaintN layAch := ly.NeuroMod.ACh // ACh comes from CIN neurons, represents reward time for yp := 0; yp < ypN; yp++ { for xp := maintN; xp < xpN; xp++ { @@ -96,10 +98,10 @@ func (ly *Layer) MatrixOutAChInhib(ctx *Context) { continue } ach := layAch - if ly.Matrix.ShuntACh && nrn.Shunt > 0 { - ach *= ly.Matrix.PatchShunt + if lp.Matrix.ShuntACh && nrn.Shunt > 0 { + ach *= lp.Matrix.PatchShunt } - achI := ly.Matrix.OutAChInhib * (1 - ach) + achI := lp.Matrix.OutAChInhib * (1 - ach) nrn.Gi += achI } } @@ -109,6 +111,7 @@ func (ly *Layer) MatrixOutAChInhib(ctx *Context) { // DaAChFromLay computes Da and ACh from layer and Shunt received from PatchLayer units func (ly *Layer) DaAChFromLay(ctx *Context) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { @@ -116,7 +119,7 @@ func (ly *Layer) DaAChFromLay(ctx *Context) { } da := ly.NeuroMod.DA if nrn.Shunt > 0 { // note: treating Shunt as binary variable -- could multiply - da *= ly.Matrix.PatchShunt + da *= lp.Matrix.PatchShunt } nrn.DALrn = ly.DALrnFromDA(da) } @@ -160,6 +163,7 @@ const ( // SendToMatrixPFC adds standard SendTo layers for PBWM: MatrixGo, NoGo, PFCmntD, PFCoutD // with optional prefix -- excludes mnt, out cases if corresp shape = 0 func (ly *Layer) SendToMatrixPFC(prefix string) { + lp := &ly.Params pfcprefix := "PFC" if prefix != "" { pfcprefix = prefix @@ -172,11 +176,11 @@ func (ly *Layer) SendToMatrixPFC(prefix string) { case i < 2: ly.SendTo[i] = nm case i == 2: - if ly.PBWM.MaintX > 0 { + if lp.PBWM.MaintX > 0 { ly.SendTo = append(ly.SendTo, nm) } case i == 3: - if ly.PBWM.OutX > 0 { + if lp.PBWM.OutX > 0 { ly.SendTo = append(ly.SendTo, nm) } } @@ -186,10 +190,11 @@ func (ly *Layer) SendToMatrixPFC(prefix string) { // SendPBWMParams send PBWMParams info to all SendTo layers -- convenient config-time // way to ensure all are consistent -- also checks validity of SendTo's func (ly *Layer) SendPBWMParams() error { + lp := &ly.Params var lasterr error for _, lnm := range ly.SendTo { tly := ly.Network.LayerByName(lnm) - tly.PBWM.CopyGeomFrom(&ly.PBWM) + tly.Params.PBWM.CopyGeomFrom(&lp.PBWM) } return lasterr } @@ -197,13 +202,14 @@ func (ly *Layer) SendPBWMParams() error { // MatrixPaths returns the recv paths from Go and NoGo MatrixLayer pathways -- error if not // found or if paths are not of the GPiThalPath type func (ly *Layer) MatrixPaths() (goPath, nogoPath *Path, err error) { + lp := &ly.Params for _, p := range ly.RecvPaths { if p.Off { continue } slay := p.Send - if slay.Type == MatrixLayer { - if ly.PBWM.DaR == D1R { + if slay.Params.Type == MatrixLayer { + if lp.PBWM.DaR == D1R { goPath = p } else { nogoPath = p @@ -352,11 +358,12 @@ func (gs *GateState) CopyFrom(fm *GateState) { // GateType returns type of gating for this layer func (ly *Layer) GateType() GateTypes { - switch ly.Type { + lp := &ly.Params + switch lp.Type { case GPiThalLayer, MatrixLayer: return MaintOut case PFCDeepLayer: - if ly.PFCGate.OutGate { + if lp.PFCGate.OutGate { return Out } return Maint @@ -366,6 +373,7 @@ func (ly *Layer) GateType() GateTypes { // SetGateStates sets the GateStates from given source states, of given gating type func (ly *Layer) SetGateStates(src *Layer, typ GateTypes) { + lp := &ly.Params myt := ly.GateType() if myt < MaintOut && typ < MaintOut && myt != typ { // mismatch return @@ -380,7 +388,7 @@ func (ly *Layer) SetGateStates(src *Layer, typ GateTypes) { mx := len(ly.Pools) for i := 1; i < mx; i++ { gs := &ly.Pool(i).Gate - si := 1 + ly.PBWM.FullIndex1D(i-1, myt) + si := 1 + lp.PBWM.FullIndex1D(i-1, myt) sgs := &src.Pool(si).Gate gs.CopyFrom(sgs) } @@ -432,7 +440,7 @@ func (gp *GPiGateParams) GeRaw(goRaw, nogoRaw float32) float32 { return (gp.GeGain + gp.NoGo) * (goRaw - gp.NoGo*nogoRaw) } -func (ly *Layer) GPiThalDefaults() { +func (ly *LayerParams) GPiThalDefaults() { ly.PBWM.Type = MaintOut ly.Inhib.Layer.Gi = 1.8 ly.Inhib.Layer.FB = 0.2 @@ -444,6 +452,7 @@ func (ly *Layer) GPiThalDefaults() { // GPiGFromInc integrates new synaptic conductances from increments // sent during last SendGDelta. func (ly *Layer) GPiGFromInc(ctx *Context) { + lp := &ly.Params goPath, nogoPath, _ := ly.MatrixPaths() for ni := range ly.Neurons { nrn := &ly.Neurons[ni] @@ -452,9 +461,9 @@ func (ly *Layer) GPiGFromInc(ctx *Context) { } goRaw := goPath.GeRaw[ni] nogoRaw := nogoPath.GeRaw[ni] - nrn.GeRaw = ly.GPiGate.GeRaw(goRaw, nogoRaw) - ly.Act.GeFromRaw(nrn, nrn.GeRaw) - ly.Act.GiFromRaw(nrn, nrn.GiRaw) + nrn.GeRaw = lp.GPiGate.GeRaw(goRaw, nogoRaw) + lp.Act.GeFromRaw(nrn, nrn.GeRaw) + lp.Act.GiFromRaw(nrn, nrn.GiRaw) } } @@ -466,7 +475,8 @@ func (ly *Layer) GPiGateSend(ctx *Context) { // GPiGateFromAct updates GateState from current activations, at time of gating func (ly *Layer) GPiGateFromAct(ctx *Context) { - gateQtr := ly.GPiGate.GateQtr.HasFlag(ctx.Quarter) + lp := &ly.Params + gateQtr := lp.GPiGate.GateQtr.HasFlag(ctx.Quarter) qtrCyc := ctx.QuarterCycle() for ni := range ly.Neurons { nrn := &ly.Neurons[ni] @@ -477,11 +487,11 @@ func (ly *Layer) GPiGateFromAct(ctx *Context) { if ctx.Quarter == 0 && qtrCyc == 0 { gs.Act = 0 // reset at start } - if gateQtr && qtrCyc == ly.GPiGate.Cycle { // gating + if gateQtr && qtrCyc == lp.GPiGate.Cycle { // gating gs.Now = true - if nrn.Act < ly.GPiGate.Thr { // didn't gate + if nrn.Act < lp.GPiGate.Thr { // didn't gate gs.Act = 0 // not over thr - if ly.GPiGate.ThrAct { + if lp.GPiGate.ThrAct { gs.Act = 0 } if gs.Cnt >= 0 { @@ -535,8 +545,9 @@ func (ly *CINParams) Update() { // CINMaxAbsRew returns the maximum absolute value of reward layer activations. func (ly *Layer) CINMaxAbsRew() float32 { + lp := &ly.Params mx := float32(0) - for _, nm := range ly.CIN.RewLays { + for _, nm := range lp.CIN.RewLays { ly := ly.Network.LayerByName(nm) if ly == nil { continue @@ -548,9 +559,10 @@ func (ly *Layer) CINMaxAbsRew() float32 { } func (ly *Layer) ActFromGCIN(ctx *Context) { + lp := &ly.Params ract := ly.CINMaxAbsRew() - if ly.CIN.RewThr > 0 { - if ract > ly.CIN.RewThr { + if lp.CIN.RewThr > 0 { + if ract > lp.CIN.RewThr { ract = 1 } } @@ -560,7 +572,7 @@ func (ly *Layer) ActFromGCIN(ctx *Context) { continue } nrn.Act = ract - ly.Learn.AvgsFromAct(nrn) + lp.Learn.AvgsFromAct(nrn) } } @@ -724,7 +736,7 @@ func (pd *PFCDyns) Value(dyn int, time float32) float32 { return dy.Value(time) } -func (ly *Layer) PFCDeepDefaults() { +func (ly *LayerParams) PFCDeepDefaults() { if ly.PFCGate.OutGate && ly.PFCGate.OutQ1Only { ly.PFCMaint.MaxMaint = 1 ly.PFCGate.GateQtr = 0 @@ -756,20 +768,22 @@ func (ly *Layer) SuperPFC() *Layer { // MaintGInc increments Ge from MaintGe, for PFCDeepLayer. func (ly *Layer) MaintGInc(ctx *Context) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } geRaw := nrn.GeRaw + nrn.MaintGe - ly.Act.GeFromRaw(nrn, geRaw) - ly.Act.GiFromRaw(nrn, nrn.GiRaw) + lp.Act.GeFromRaw(nrn, geRaw) + lp.Act.GiFromRaw(nrn, nrn.GiRaw) } } // PFCDeepGating updates PFC Gating state. func (ly *Layer) PFCDeepGating(ctx *Context) { - if ly.PFCGate.OutGate && ly.PFCGate.OutQ1Only { + lp := &ly.Params + if lp.PFCGate.OutGate && lp.PFCGate.OutQ1Only { if ctx.Quarter > 1 { return } @@ -785,18 +799,18 @@ func (ly *Layer) PFCDeepGating(ctx *Context) { } if gs.Act > 0 { // use GPiThal threshold, so anything > 0 gs.Cnt = 0 // this is the "just gated" signal - if ly.PFCGate.OutGate { // time to clear out maint - if ly.PFCMaint.OutClearMaint { + if lp.PFCGate.OutGate { // time to clear out maint + if lp.PFCMaint.OutClearMaint { fmt.Println("clear maint") ly.ClearMaint(pi) } } else { pfcs := ly.SuperPFC() - pfcs.DecayStatePool(pi, ly.PFCMaint.Clear) + pfcs.DecayStatePool(pi, lp.PFCMaint.Clear) } } // test for over-duration maintenance -- allow for active gating to override - if gs.Cnt >= ly.PFCMaint.MaxMaint { + if gs.Cnt >= lp.PFCMaint.MaxMaint { gs.Cnt = -1 } } @@ -812,13 +826,14 @@ func (ly *Layer) ClearMaint(pool int) { if gs.Cnt >= 1 { // important: only for established maint, not just gated.. gs.Cnt = -1 // reset pfcs := pfcm.SuperPFC() - pfcs.DecayStatePool(pool, pfcm.PFCMaint.Clear) + pfcs.DecayStatePool(pool, pfcm.Params.PFCMaint.Clear) } } // DeepMaint updates deep maintenance activations func (ly *Layer) DeepMaint(ctx *Context) { - if !ly.PFCGate.GateQtr.HasFlag(ctx.Quarter) { + lp := &ly.Params + if !lp.PFCGate.GateQtr.HasFlag(ctx.Quarter) { return } sly := ly.SuperPFC() @@ -855,10 +870,10 @@ func (ly *Layer) DeepMaint(ctx *Context) { sy := uy % syN // inner loop is s si := pi*snn + sy*sxN + ux snr := &sly.Neurons[si] - nrn.Maint = ly.PFCMaint.MaintGain * snr.Act + nrn.Maint = lp.PFCMaint.MaintGain * snr.Act } - if ly.PFCMaint.UseDyn { - nrn.MaintGe = nrn.Maint * ly.PFCDyns.Value(dtyp, float32(gs.Cnt-1)) + if lp.PFCMaint.UseDyn { + nrn.MaintGe = nrn.Maint * lp.PFCDyns.Value(dtyp, float32(gs.Cnt-1)) } else { nrn.MaintGe = nrn.Maint } @@ -867,7 +882,8 @@ func (ly *Layer) DeepMaint(ctx *Context) { // UpdateGateCnt updates the gate counter func (ly *Layer) UpdateGateCnt(ctx *Context) { - if !ly.PFCGate.GateQtr.HasFlag(ctx.Quarter) { + lp := &ly.Params + if !lp.PFCGate.GateQtr.HasFlag(ctx.Quarter) { return } for pi := range ly.Pools { diff --git a/leabra/pbwm_net.go b/leabra/pbwm_net.go index 46893f8..d8ac129 100644 --- a/leabra/pbwm_net.go +++ b/leabra/pbwm_net.go @@ -10,7 +10,7 @@ import ( // RecGateAct is called after GateSend, to record gating activations at time of gating func (nt *Network) RecGateAct() { - ctx := &nt.Context + ctx := nt.Context() for _, ly := range nt.Layers { if ly.Off { continue @@ -25,8 +25,8 @@ func (nt *Network) RecGateAct() { func (nt *Network) AddMatrixLayer(name string, nY, nMaint, nOut, nNeurY, nNeurX int, da DaReceptors) *Layer { tX := nMaint + nOut mtx := nt.AddLayer4D(name, MatrixLayer, nY, tX, nNeurY, nNeurX) - mtx.PBWM.DaR = da - mtx.PBWM.Set(nY, nMaint, nOut) + mtx.Params.PBWM.DaR = da + mtx.Params.PBWM.Set(nY, nMaint, nOut) return mtx } @@ -45,7 +45,7 @@ func (nt *Network) AddGPeLayer(name string, nY, nMaint, nOut int) *Layer { func (nt *Network) AddGPiThalLayer(name string, nY, nMaint, nOut int) *Layer { tX := nMaint + nOut gpi := nt.AddLayer4D(name, GPiThalLayer, nY, tX, 1, 1) - gpi.PBWM.Set(nY, nMaint, nOut) + gpi.Params.PBWM.Set(nY, nMaint, nOut) return gpi } @@ -103,11 +103,11 @@ func (nt *Network) AddPFCLayer(name string, nY, nX, nNeurY, nNeurX int, out, dyn dp = nt.AddLayer4D(name+"D", PFCDeepLayer, nY, nX, dym*nNeurY, nNeurX) sp.AddClass("PFC") dp.AddClass("PFC") - dp.PFCGate.OutGate = out + dp.Params.PFCGate.OutGate = out if dynMaint { - dp.PFCDyns.MaintOnly() + dp.Params.PFCDyns.MaintOnly() } else { - dp.PFCDyns.FullDyn(10) + dp.Params.PFCDyns.FullDyn(10) } dp.PlaceBehind(sp, 2) return diff --git a/leabra/pbwm_paths.go b/leabra/pbwm_paths.go index ce4270d..49093ce 100644 --- a/leabra/pbwm_paths.go +++ b/leabra/pbwm_paths.go @@ -59,7 +59,7 @@ func (tp *TraceParams) LrateMod(gated, d2r, posDa bool) float32 { return 1 } -func (pt *Path) MatrixDefaults() { +func (pt *PathParams) MatrixDefaults() { pt.Learn.WtSig.Gain = 1 pt.Learn.Norm.On = false pt.Learn.Momentum.On = false @@ -76,9 +76,10 @@ func (pt *Path) ClearTrace() { // DWtMatrix computes the weight change (learning) for MatrixPath. func (pt *Path) DWtMatrix() { + pp := &pt.Params slay := pt.Send rlay := pt.Recv - d2r := (rlay.PBWM.DaR == D2R) + d2r := (rlay.Params.PBWM.DaR == D2R) da := rlay.NeuroMod.DA ach := rlay.NeuroMod.ACh gateActIdx, _ := NeuronVarIndexByName("GateAct") @@ -97,28 +98,28 @@ func (pt *Path) DWtMatrix() { // da := rlay.UnitValueByIndex(DA, int(ri)) // note: more efficient to just assume same for all units // ach := rlay.UnitValueByIndex(ACh, int(ri)) gateAct := rlay.UnitValue1D(gateActIdx, int(ri), 0) - achDk := math32.Min(1, ach*pt.Trace.AChDecay) + achDk := math32.Min(1, ach*pp.Trace.AChDecay) tr := sy.Tr dwt := float32(0) if da != 0 { dwt = daLrn * tr if d2r && da > 0 && tr < 0 { - dwt *= pt.Trace.GateNoGoPosLR + dwt *= pp.Trace.GateNoGoPosLR } } tr -= achDk * tr - newNTr := pt.Trace.LrnFactor(rn.Act) * sn.Act + newNTr := pp.Trace.LrnFactor(rn.Act) * sn.Act ntr := float32(0) if gateAct > 0 { // gated ntr = newNTr } else { // not-gated - ntr = -pt.Trace.NotGatedLR * newNTr // opposite sign for non-gated + ntr = -pp.Trace.NotGatedLR * newNTr // opposite sign for non-gated } - decay := pt.Trace.Decay * math32.Abs(ntr) // decay is function of new trace + decay := pp.Trace.Decay * math32.Abs(ntr) // decay is function of new trace if decay > 1 { decay = 1 } @@ -126,14 +127,14 @@ func (pt *Path) DWtMatrix() { sy.Tr = tr sy.NTr = ntr - sy.DWt += pt.Learn.Lrate * dwt + sy.DWt += pp.Learn.Lrate * dwt } } } //////// DaHebbPath -func (pt *Path) DaHebbDefaults() { +func (pt *PathParams) DaHebbDefaults() { pt.Learn.WtSig.Gain = 1 pt.Learn.Norm.On = false pt.Learn.Momentum.On = false @@ -142,6 +143,7 @@ func (pt *Path) DaHebbDefaults() { // DWtDaHebb computes the weight change (learning), for [DaHebbPath]. func (pt *Path) DWtDaHebb() { + pp := &pt.Params slay := pt.Send rlay := pt.Recv for si := range slay.Neurons { @@ -157,7 +159,7 @@ func (pt *Path) DWtDaHebb() { rn := &rlay.Neurons[ri] da := rn.DALrn dwt := da * rn.Act * sn.Act - sy.DWt += pt.Learn.Lrate * dwt + sy.DWt += pp.Learn.Lrate * dwt } } } diff --git a/leabra/rl.go b/leabra/rl.go index 35f6193..35f2c51 100644 --- a/leabra/rl.go +++ b/leabra/rl.go @@ -40,32 +40,35 @@ func (rp *RWParams) Update() { // ActFromGRWPred computes linear activation for [RWPredLayer]. func (ly *Layer) ActFromGRWPred(ctx *Context) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { continue } - nrn.Act = ly.RW.PredRange.ClampValue(nrn.Ge) // clipped linear - ly.Learn.AvgsFromAct(nrn) + nrn.Act = lp.RW.PredRange.ClampValue(nrn.Ge) // clipped linear + lp.Learn.AvgsFromAct(nrn) } } // RWLayers returns the reward and RWPredLayer layers based on names. func (ly *Layer) RWLayers() (*Layer, *Layer, error) { - tly := ly.Network.LayerByName(ly.RW.RewLay) + lp := &ly.Params + tly := ly.Network.LayerByName(lp.RW.RewLay) if tly == nil { - err := fmt.Errorf("RWDaLayer %s, RewLay: %q not found", ly.Name, ly.RW.RewLay) + err := fmt.Errorf("RWDaLayer %s, RewLay: %q not found", ly.Name, lp.RW.RewLay) return nil, nil, errors.Log(err) } - ply := ly.Network.LayerByName(ly.RW.PredLay) + ply := ly.Network.LayerByName(lp.RW.PredLay) if ply == nil { - err := fmt.Errorf("RWDaLayer %s, RWPredLay: %q not found", ly.Name, ly.RW.PredLay) + err := fmt.Errorf("RWDaLayer %s, RWPredLay: %q not found", ly.Name, lp.RW.PredLay) return nil, nil, errors.Log(err) } return tly, ply, nil } func (ly *Layer) ActFromGRWDa(ctx *Context) { + lp := &ly.Params rly, ply, _ := ly.RWLayers() if rly == nil || ply == nil { return @@ -88,7 +91,7 @@ func (ly *Layer) ActFromGRWDa(ctx *Context) { } else { nrn.Act = 0 // nothing } - ly.Learn.AvgsFromAct(nrn) + lp.Learn.AvgsFromAct(nrn) } } @@ -99,7 +102,7 @@ func (nt *Network) AddRWLayers(prefix string, space float32) (rew, rp, da *Layer rew = nt.AddLayer2D(prefix+"Rew", InputLayer, 1, 1) rp = nt.AddLayer2D(prefix+"RWPred", RWPredLayer, 1, 1) da = nt.AddLayer2D(prefix+"DA", RWDaLayer, 1, 1) - da.RW.RewLay = rew.Name + da.Params.RW.RewLay = rew.Name rp.PlaceBehind(rew, space) da.PlaceBehind(rp, space) @@ -110,7 +113,7 @@ func (nt *Network) AddRWLayers(prefix string, space float32) (rew, rp, da *Layer return } -func (pt *Path) RWDefaults() { +func (pt *PathParams) RWDefaults() { pt.Learn.WtSig.Gain = 1 pt.Learn.Norm.On = false pt.Learn.Momentum.On = false @@ -119,6 +122,7 @@ func (pt *Path) RWDefaults() { // DWtRW computes the weight change (learning) for [RWPath]. func (pt *Path) DWtRW() { + pp := &pt.Params slay := pt.Send rlay := pt.Recv lda := rlay.NeuroMod.DA @@ -143,7 +147,7 @@ func (pt *Path) DWtRW() { } dwt := da * sn.Act // no recv unit activation - sy.DWt += pt.Learn.Lrate * dwt + sy.DWt += pp.Learn.Lrate * dwt } } } @@ -174,6 +178,7 @@ func (tp *TDParams) Update() { // ActFromGTDPred computes linear activation for [TDPredLayer]. func (ly *Layer) ActFromGTDPred(ctx *Context) { + lp := &ly.Params for ni := range ly.Neurons { nrn := &ly.Neurons[ni] if nrn.IsOff() { @@ -184,20 +189,22 @@ func (ly *Layer) ActFromGTDPred(ctx *Context) { } else { nrn.Act = nrn.ActP // previous actP } - ly.Learn.AvgsFromAct(nrn) + lp.Learn.AvgsFromAct(nrn) } } func (ly *Layer) TDPredLayer() (*Layer, error) { - tly := ly.Network.LayerByName(ly.TD.PredLay) + lp := &ly.Params + tly := ly.Network.LayerByName(lp.TD.PredLay) if tly == nil { - err := fmt.Errorf("TDIntegLayer %s RewPredLayer: %q not found", ly.Name, ly.TD.PredLay) + err := fmt.Errorf("TDIntegLayer %s RewPredLayer: %q not found", ly.Name, lp.TD.PredLay) return nil, errors.Log(err) } return tly, nil } func (ly *Layer) ActFromGTDInteg(ctx *Context) { + lp := &ly.Params rply, _ := ly.TDPredLayer() if rply == nil { return @@ -210,25 +217,26 @@ func (ly *Layer) ActFromGTDInteg(ctx *Context) { continue } if ctx.Quarter == 3 { // plus phase - nrn.Act = nrn.Ge + ly.TD.Discount*rpAct + nrn.Act = nrn.Ge + lp.TD.Discount*rpAct } else { nrn.Act = rpActP // previous actP } - ly.Learn.AvgsFromAct(nrn) + lp.Learn.AvgsFromAct(nrn) } } func (ly *Layer) TDIntegLayer() (*Layer, error) { - tly := ly.Network.LayerByName(ly.TD.IntegLay) + lp := &ly.Params + tly := ly.Network.LayerByName(lp.TD.IntegLay) if tly == nil { - err := fmt.Errorf("TDIntegLayer %s RewIntegLayer: %q not found", ly.Name, ly.TD.IntegLay) + err := fmt.Errorf("TDIntegLayer %s RewIntegLayer: %q not found", ly.Name, lp.TD.IntegLay) return nil, errors.Log(err) } return tly, nil } func (ly *Layer) TDDaDefaults() { - ly.Act.Clamp.Range.Set(-100, 100) + ly.Params.Act.Clamp.Range.Set(-100, 100) } func (ly *Layer) ActFromGTDDa(ctx *Context) { @@ -252,7 +260,7 @@ func (ly *Layer) ActFromGTDDa(ctx *Context) { } } -func (pt *Path) TDPredDefaults() { +func (pt *PathParams) TDPredDefaults() { pt.Learn.WtSig.Gain = 1 pt.Learn.Norm.On = false pt.Learn.Momentum.On = false @@ -261,6 +269,7 @@ func (pt *Path) TDPredDefaults() { // DWtTDPred computes the weight change (learning) for [TDPredPath]. func (pt *Path) DWtTDPred() { + pp := &pt.Params slay := pt.Send rlay := pt.Recv da := rlay.NeuroMod.DA @@ -275,7 +284,7 @@ func (pt *Path) DWtTDPred() { sy := &syns[ci] // ri := scons[ci] dwt := da * sn.ActQ0 // no recv unit activation, prior trial act - sy.DWt += pt.Learn.Lrate * dwt + sy.DWt += pp.Learn.Lrate * dwt } } } @@ -288,19 +297,20 @@ func (nt *Network) AddTDLayers(prefix string, space float32) (rew, rp, ri, td *L rp = nt.AddLayer2D(prefix+"Pred", TDPredLayer, 1, 1) ri = nt.AddLayer2D(prefix+"Integ", TDIntegLayer, 1, 1) td = nt.AddLayer2D(prefix+"TD", TDDaLayer, 1, 1) - ri.TD.PredLay = rp.Name - td.TD.IntegLay = ri.Name + ri.Params.TD.PredLay = rp.Name + td.Params.TD.IntegLay = ri.Name rp.PlaceBehind(rew, space) ri.PlaceBehind(rp, space) td.PlaceBehind(ri, space) pt := nt.ConnectLayers(rew, ri, paths.NewFull(), ForwardPath) + pp := &pt.Params pt.AddClass("TDToInteg") - pt.Learn.Learn = false - pt.WtInit.Mean = 1 - pt.WtInit.Var = 0 - pt.WtInit.Sym = false + pp.Learn.Learn = false + pp.WtInit.Mean = 1 + pp.WtInit.Var = 0 + pp.WtInit.Sym = false rew.Doc = "Reward input, activated by external rewards, e.g., the US = unconditioned stimulus" rp.Doc = "Reward Prediction, representing estimated value V(t) in the minus phase, and in plus phase computes estimated V(t+1) based on learned weights" diff --git a/leabra/simstats.go b/leabra/simstats.go new file mode 100644 index 0000000..954b37c --- /dev/null +++ b/leabra/simstats.go @@ -0,0 +1,682 @@ +// Copyright (c) 2024, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package leabra + +import ( + "reflect" + "strings" + "time" + + "cogentcore.org/core/base/errors" + "cogentcore.org/core/base/timer" + "cogentcore.org/core/enums" + "cogentcore.org/lab/matrix" + "cogentcore.org/lab/plot" + "cogentcore.org/lab/stats/metric" + "cogentcore.org/lab/stats/stats" + "cogentcore.org/lab/table" + "cogentcore.org/lab/tensor" + "cogentcore.org/lab/tensorfs" + "github.com/emer/emergent/v2/looper" +) + +// StatsNode returns tensorfs Dir Node for given mode, level. +func StatsNode(statsDir *tensorfs.Node, mode, level enums.Enum) *tensorfs.Node { + modeDir := statsDir.Dir(mode.String()) + return modeDir.Dir(level.String()) +} + +func StatsLayerValues(net *Network, curDir *tensorfs.Node, mode enums.Enum, di int, layName, varName string) *tensor.Float64 { + curModeDir := curDir.Dir(mode.String()) + ly := net.LayerByName(layName) + tsr := curModeDir.Float64(layName+"_"+varName, ly.Shape.Sizes...) + ly.UnitValuesTensor(tsr, varName, di) + return tsr +} + +// LogFilename returns a standard log file name as netName_runName_logName.tsv +func LogFilename(netName, runName, logName string) string { + return netName + "_" + runName + "_" + logName + ".tsv" +} + +// OpenLogFile, if on == true, sets the log file for given table using given +// netName, runName, and logName in order. +func OpenLogFile(on bool, dt *table.Table, netName, runName, logName string) { + if !on { + return + } + fnm := LogFilename(netName, runName, logName) + tensor.SetPrecision(dt, 4) + dt.OpenLog(fnm, tensor.Tab) +} + +// OpenLogFiles opens the log files for modes and levels of the looper, +// based on the lists of level names, ordered by modes in numerical order. +// The netName and runName are used for naming the file, along with +// the mode_level in lower case. +func OpenLogFiles(ls *looper.Stacks, statsDir *tensorfs.Node, netName, runName string, modeLevels [][]string) { + modes := ls.Modes() + for i, mode := range modes { + if i >= len(modeLevels) { + return + } + levels := modeLevels[i] + st := ls.Stacks[mode] + for _, level := range st.Order { + on := false + for _, lev := range levels { + if lev == level.String() { + on = true + break + } + } + if !on { + continue + } + logName := strings.ToLower(mode.String() + "_" + level.String()) + dt := tensorfs.DirTable(StatsNode(statsDir, mode, level), nil) + fnm := LogFilename(netName, runName, logName) + tensor.SetPrecision(dt, 4) + dt.OpenLog(fnm, tensor.Tab) + } + } +} + +// CloseLogFiles closes all the log files for each mode and level of the looper, +// Excluding given level(s). +func CloseLogFiles(ls *looper.Stacks, statsDir *tensorfs.Node, exclude ...enums.Enum) { + modes := ls.Modes() // mode enum order + for _, mode := range modes { + st := ls.Stacks[mode] + for _, level := range st.Order { + if StatExcludeLevel(level, exclude...) { + continue + } + dt := tensorfs.DirTable(StatsNode(statsDir, mode, level), nil) + dt.CloseLog() + } + } +} + +// StatExcludeLevel returns true if given level is among the list of levels to exclude. +func StatExcludeLevel(level enums.Enum, exclude ...enums.Enum) bool { + bail := false + for _, ex := range exclude { + if level == ex { + bail = true + break + } + } + return bail +} + +// StatLoopCounters adds the counters from each stack, loop level for given +// looper Stacks to the given tensorfs stats. This is typically the first +// Stat to add, so these counters will be used for X axis values. +// The stat is run with start = true before returning, so that the stats +// are already initialized first before anything else. +// The first mode's counters (typically Train) are automatically added to all +// subsequent modes so they automatically track training levels. +// - currentDir is a tensorfs directory to store the current values of each counter. +// - trialLevel is the Trial level enum, which automatically handles the +// iteration over ndata parallel trials. +// - exclude is a list of loop levels to exclude (e.g., Cycle). +func StatLoopCounters(statsDir, currentDir *tensorfs.Node, ls *looper.Stacks, net *Network, trialLevel enums.Enum, exclude ...enums.Enum) func(mode, level enums.Enum, start bool) { + modes := ls.Modes() // mode enum order + fun := func(mode, level enums.Enum, start bool) { + for mi := range 2 { + st := ls.Stacks[mode] + prefix := "" + if mi == 0 { + if modes[mi].Int64() == mode.Int64() { // skip train in train.. + continue + } + ctrMode := modes[mi] + st = ls.Stacks[ctrMode] + prefix = ctrMode.String() + } + for _, lev := range st.Order { + // don't record counter for levels above it + if level.Int64() > lev.Int64() { + continue + } + if StatExcludeLevel(lev, exclude...) { + continue + } + name := prefix + lev.String() // name of stat = level + ndata := 1 + modeDir := statsDir.Dir(mode.String()) + curModeDir := currentDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + tsr := levelDir.Int(name) + if start { + tsr.SetNumRows(0) + plot.SetFirstStyler(tsr, func(s *plot.Style) { + s.Range.SetMin(0) + }) + if level.Int64() == trialLevel.Int64() { + for di := range ndata { + curModeDir.Int(name, ndata).SetInt1D(0, di) + } + } + continue + } + ctr := st.Loops[lev].Counter.Cur + if level.Int64() == trialLevel.Int64() { + for di := range ndata { + curModeDir.Int(name, ndata).SetInt1D(ctr, di) + tsr.AppendRowInt(ctr) + if lev.Int64() == trialLevel.Int64() { + ctr++ + } + } + } else { + curModeDir.Int(name, 1).SetInt1D(ctr, 0) + tsr.AppendRowInt(ctr) + } + } + } + } + for _, md := range modes { + st := ls.Stacks[md] + for _, lev := range st.Order { + if StatExcludeLevel(lev, exclude...) { + continue + } + fun(md, lev, true) + } + } + return fun +} + +// StatRunName adds a "RunName" stat to every mode and level of looper, +// subject to exclusion list, which records the current value of the +// "RunName" string in ss.Current, which identifies the parameters and tag +// for this run. +func StatRunName(statsDir, currentDir *tensorfs.Node, ls *looper.Stacks, net *Network, trialLevel enums.Enum, exclude ...enums.Enum) func(mode, level enums.Enum, start bool) { + return func(mode, level enums.Enum, start bool) { + name := "RunName" + modeDir := statsDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + tsr := levelDir.StringValue(name) + ndata := 1 + runNm := currentDir.StringValue(name, 1).String1D(0) + + if start { + tsr.SetNumRows(0) + return + } + if level.Int64() == trialLevel.Int64() { + for range ndata { + tsr.AppendRowString(runNm) + } + } else { + tsr.AppendRowString(runNm) + } + } +} + +// StatTrialName adds a "TrialName" stat to the given Trial level in every mode of looper, +// which records the current value of the "TrialName" string in ss.Current, which +// contains a string description of the current trial. +func StatTrialName(statsDir, currentDir *tensorfs.Node, ls *looper.Stacks, net *Network, trialLevel enums.Enum) func(mode, level enums.Enum, start bool) { + return func(mode, level enums.Enum, start bool) { + if level.Int64() != trialLevel.Int64() { + return + } + name := "TrialName" + modeDir := statsDir.Dir(mode.String()) + curModeDir := currentDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + tsr := levelDir.StringValue(name) + ndata := 1 + if start { + tsr.SetNumRows(0) + return + } + for di := range ndata { + trlNm := curModeDir.StringValue(name, ndata).String1D(di) + tsr.AppendRowString(trlNm) + } + } +} + +// StatPerTrialMSec returns a Stats function that reports the number of milliseconds +// per trial, for the given levels and training mode enum values. +// Stats will be recorded a levels above the given trial level. +func StatPerTrialMSec(statsDir *tensorfs.Node, trainMode enums.Enum, trialLevel enums.Enum) func(mode, level enums.Enum, start bool) { + var epcTimer timer.Time + levels := make([]enums.Enum, 10) // should be enough + levels[0] = trialLevel + return func(mode, level enums.Enum, start bool) { + levi := int(level.Int64() - trialLevel.Int64()) + if mode.Int64() != trainMode.Int64() || levi <= 0 { + return + } + levels[levi] = level + name := "PerTrialMSec" + modeDir := statsDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + tsr := levelDir.Float64(name) + if start { + tsr.SetNumRows(0) + plot.SetFirstStyler(tsr, func(s *plot.Style) { + s.Range.SetMin(0) + }) + return + } + switch levi { + case 1: + epcTimer.Stop() + subDir := modeDir.Dir(levels[0].String()) + trls := errors.Ignore1(subDir.Values())[0] // must be a stat + epcTimer.N = trls.Len() + pertrl := float64(epcTimer.Avg()) / float64(time.Millisecond) + tsr.AppendRowFloat(pertrl) + epcTimer.ResetStart() + default: + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatMean.Call(subDir.Value(name))) + } + } +} + +// StatLayerActGe returns a Stats function that computes layer activity +// and Ge (excitatory conductdance; net input) stats, which are important targets +// of parameter tuning to ensure everything is in an appropriate dynamic range. +// It only runs for given trainMode at given trialLevel and above, +// with higher levels computing the Mean of lower levels. +func StatLayerActGe(statsDir *tensorfs.Node, net *Network, trainMode, trialLevel, runLevel enums.Enum, layerNames ...string) func(mode, level enums.Enum, start bool) { + statNames := []string{"ActMAvg", "ActMMax"} //, "MaxGeM"} + levels := make([]enums.Enum, 10) // should be enough + return func(mode, level enums.Enum, start bool) { + levi := int(level.Int64() - trialLevel.Int64()) + if mode.Int64() != trainMode.Int64() || levi < 0 { + return + } + levels[levi] = level + modeDir := statsDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + // ndata := 1 + for _, lnm := range layerNames { + for si, statName := range statNames { + ly := net.LayerByName(lnm) + name := lnm + "_" + statName + tsr := levelDir.Float64(name) + if start { + tsr.SetNumRows(0) + plot.SetFirstStyler(tsr, func(s *plot.Style) { + s.Range.SetMin(0) + }) + continue + } + switch levi { + case 0: + var stat float32 + switch si { + case 0: + stat = ly.Pools[0].ActAvg.ActMAvg + case 1: + stat = ly.Pools[0].ActM.Max + // case 2: + // stat = PoolAvgMax(AMGeInt, AMMinus, Max, lpi, di) + } + tsr.AppendRowFloat(float64(stat)) + case int(runLevel.Int64() - trialLevel.Int64()): + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatFinal.Call(subDir.Value(name))) + default: + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatMean.Call(subDir.Value(name))) + } + } + } + } +} + +// StatLayerState returns a Stats function that records layer state +// It runs for given mode and level, recording given variable +// for given layer names. if isTrialLevel is true, the level is a +// trial level that needs iterating over NData. +func StatLayerState(statsDir *tensorfs.Node, net *Network, smode, slevel enums.Enum, isTrialLevel bool, variable string, layerNames ...string) func(mode, level enums.Enum, start bool) { + return func(mode, level enums.Enum, start bool) { + if mode.Int64() != smode.Int64() || level.Int64() != slevel.Int64() { + return + } + modeDir := statsDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + ndata := 1 + // if !isTrialLevel { + // ndata = 1 + // } + for _, lnm := range layerNames { + ly := net.LayerByName(lnm) + name := lnm + "_" + variable + sizes := []int{ndata} + sizes = append(sizes, ly.GetSampleShape().Sizes...) + tsr := levelDir.Float64(name, sizes...) + if start { + tsr.SetNumRows(0) + continue + } + for di := range ndata { + row := tsr.DimSize(0) + tsr.SetNumRows(row + 1) + rtsr := tsr.RowTensor(row) + ly.UnitValuesSampleTensor(rtsr, variable, di) + } + } + } +} + +// PCAStrongThr is the threshold for counting PCA eigenvalues as "strong". +var PCAStrongThr = 0.01 + +// StatPCA returns a Stats function that computes PCA NStrong, Top5, Next5, and Rest +// stats, which are important for tracking hogging dynamics where the representational +// space is not efficiently distributed. Uses Sample units for layers, and SVD computation +// is reasonably efficient. +// It only runs for given trainMode, from given Trial level upward, +// with higher levels computing the Mean of lower levels. +// Trial level just records ActM values for layers in a separate PCA subdir, +// which are input to next level computation where PCA is computed. +func StatPCA(statsDir, currentDir *tensorfs.Node, net *Network, interval int, trainMode, trialLevel, runLevel enums.Enum, layerNames ...string) func(mode, level enums.Enum, start bool, epc int) { + statNames := []string{"PCA_NStrong", "PCA_Top5", "PCA_Next", "PCA_Rest"} + levels := make([]enums.Enum, 10) // should be enough + return func(mode, level enums.Enum, start bool, epc int) { + levi := int(level.Int64() - trialLevel.Int64()) + if mode.Int64() != trainMode.Int64() || levi < 0 { + return + } + levels[levi] = level + modeDir := statsDir.Dir(mode.String()) + curModeDir := currentDir.Dir(mode.String()) + curPCADir := curModeDir.Dir("PCA") + pcaDir := statsDir.Dir("PCA") + levelDir := modeDir.Dir(level.String()) + ndata := 1 + for _, lnm := range layerNames { + ly := net.LayerByName(lnm) + sizes := []int{ndata} + sizes = append(sizes, ly.GetSampleShape().Sizes...) + vtsr := pcaDir.Float64(lnm, sizes...) + if levi == 0 { + ltsr := curPCADir.Float64(lnm+"_ActM", ly.GetSampleShape().Sizes...) + if start { + vtsr.SetNumRows(0) + } else { + for di := range ndata { + ly.UnitValuesSampleTensor(ltsr, "ActM", di) + vtsr.AppendRow(ltsr) + } + } + continue + } + var svals [4]float64 // in statNames order + hasNew := false + if !start && levi == 1 { + if interval > 0 && epc%interval == 0 { + hasNew = true + vals := curPCADir.Float64("Vals_" + lnm) + covar := curPCADir.Float64("Covar_" + lnm) + metric.CovarianceMatrixOut(metric.Covariance, vtsr, covar) + matrix.SVDValuesOut(covar, vals) + ln := vals.Len() + for i := range ln { + v := vals.Float1D(i) + if v < PCAStrongThr { + svals[0] = float64(i) + break + } + } + for i := range 5 { + if ln >= 5 { + svals[1] += vals.Float1D(i) + } + if ln >= 10 { + svals[2] += vals.Float1D(i + 5) + } + } + svals[1] /= 5 + svals[2] /= 5 + if ln > 10 { + sum := stats.Sum(vals).Float1D(0) + svals[3] = (sum - (svals[1] + svals[2])) / float64(ln-10) + } + } + } + for si, statName := range statNames { + name := lnm + "_" + statName + tsr := levelDir.Float64(name) + if start { + tsr.SetNumRows(0) + plot.SetFirstStyler(tsr, func(s *plot.Style) { + s.Range.SetMin(0) + }) + continue + } + switch levi { + case 1: + var stat float64 + nr := tsr.DimSize(0) + if nr > 0 { + stat = tsr.FloatRow(nr-1, 0) + } + if hasNew { + stat = svals[si] + } + tsr.AppendRowFloat(float64(stat)) + case int(runLevel.Int64() - trialLevel.Int64()): + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatFinal.Call(subDir.Value(name))) + default: + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatMean.Call(subDir.Value(name))) + } + } + } + } +} + +// StatCorSim returns a Stats function that records 1 - [LayerPhaseDiff] stats, +// i.e., Correlation-based similarity, for given layer names. +func StatCorSim(statsDir, currentDir *tensorfs.Node, net *Network, trialLevel, runLevel enums.Enum, layerNames ...string) func(mode, level enums.Enum, start bool) { + levels := make([]enums.Enum, 10) // should be enough + levels[0] = trialLevel + return func(mode, level enums.Enum, start bool) { + levi := int(level.Int64() - trialLevel.Int64()) + if levi < 0 { + return + } + levels[levi] = level + modeDir := statsDir.Dir(mode.String()) + curModeDir := currentDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + ndata := 1 + for _, lnm := range layerNames { + ly := net.LayerByName(lnm) + name := lnm + "_CorSim" + tsr := levelDir.Float64(name) + if start { + tsr.SetNumRows(0) + plot.SetFirstStyler(tsr, func(s *plot.Style) { + s.Range.SetMin(0).SetMax(1) + s.On = true + }) + continue + } + switch levi { + case 0: // trial + for di := range ndata { + stat := 1.0 - float64(ly.CosDiff.Cos) + curModeDir.Float64(name, ndata).SetFloat1D(stat, di) + tsr.AppendRowFloat(float64(stat)) + } + case int(runLevel.Int64() - trialLevel.Int64()): + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatFinal.Call(subDir.Value(name))) + default: + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatMean.Call(subDir.Value(name))) + } + } + } +} + +// StatPrevCorSim returns a Stats function that compute correlations +// between previous trial activity state and current minus phase and +// plus phase state. This is important for predictive learning. +func StatPrevCorSim(statsDir, currentDir *tensorfs.Node, net *Network, trialLevel, runLevel enums.Enum, layerNames ...string) func(mode, level enums.Enum, start bool) { + statNames := []string{"PrevToM", "PrevToP"} + levels := make([]enums.Enum, 10) // should be enough + levels[0] = trialLevel + return func(mode, level enums.Enum, start bool) { + levi := int(level.Int64() - trialLevel.Int64()) + if levi < 0 { + return + } + levels[levi] = level + modeDir := statsDir.Dir(mode.String()) + curModeDir := currentDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + ndata := 1 + for _, lnm := range layerNames { + for si, statName := range statNames { + ly := net.LayerByName(lnm) + name := lnm + "_" + statName + tsr := levelDir.Float64(name) + if start { + tsr.SetNumRows(0) + plot.SetFirstStyler(tsr, func(s *plot.Style) { + s.Range.SetMin(0).SetMax(1) + }) + continue + } + switch levi { + case 0: + // note: current lnm + _var is standard reusable unit vals buffer + actM := curModeDir.Float64(lnm+"_ActM", ly.GetSampleShape().Sizes...) + actP := curModeDir.Float64(lnm+"_ActP", ly.GetSampleShape().Sizes...) + // note: CaD is sufficiently stable that it is fine to compare with ActM and ActP + prev := curModeDir.Float64(lnm+"_CaDPrev", ly.GetSampleShape().Sizes...) + for di := range ndata { + ly.UnitValuesSampleTensor(prev, "CaDPrev", di) + prev.SetShapeSizes(prev.Len()) // set to 1D -- inexpensive and faster for computation + var stat float64 + switch si { + case 0: + ly.UnitValuesSampleTensor(actM, "ActM", di) + actM.SetShapeSizes(actM.Len()) + cov := metric.Correlation(actM, prev) + stat = cov.Float1D(0) + case 1: + ly.UnitValuesSampleTensor(actP, "ActP", di) + actP.SetShapeSizes(actP.Len()) + cov := metric.Correlation(actP, prev) + stat = cov.Float1D(0) + } + curModeDir.Float64(name, ndata).SetFloat1D(stat, di) + tsr.AppendRowFloat(stat) + } + case int(runLevel.Int64() - trialLevel.Int64()): + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatFinal.Call(subDir.Value(name))) + default: + subDir := modeDir.Dir(levels[levi-1].String()) + tsr.AppendRow(stats.StatMean.Call(subDir.Value(name))) + } + } + } + } +} + +// StatLevelAll returns a Stats function that copies stats from given mode +// and level, without resetting at the start, to accumulate all rows +// over time until reset manually. The styleFunc, if non-nil, does plot styling +// based on the current column. +func StatLevelAll(statsDir *tensorfs.Node, srcMode, srcLevel enums.Enum, styleFunc func(s *plot.Style, col tensor.Values)) func(mode, level enums.Enum, start bool) { + return func(mode, level enums.Enum, start bool) { + if srcMode.Int64() != mode.Int64() || srcLevel.Int64() != level.Int64() { + return + } + modeDir := statsDir.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + allDir := modeDir.Dir(level.String() + "All") + cols := levelDir.NodesFunc(nil) // all nodes + for _, cl := range cols { + clv := cl.Tensor.(tensor.Values) + if clv.NumDims() == 0 || clv.DimSize(0) == 0 { + continue + } + if start { + trg := tensorfs.ValueType(allDir, cl.Name(), clv.DataType(), clv.ShapeSizes()...) + if trg.Len() == 0 { + if styleFunc != nil { + plot.SetFirstStyler(trg, func(s *plot.Style) { + styleFunc(s, clv) + }) + } + trg.SetNumRows(0) + } + } else { + trg := tensorfs.ValueType(allDir, cl.Name(), clv.DataType()) + trg.AppendRow(clv.RowTensor(clv.DimSize(0) - 1)) + } + } + } +} + +// FieldValue holds the value of a field in a struct. +type FieldValue struct { + Path string + Field reflect.StructField + Value, Parent reflect.Value +} + +// StructValues returns a list of [FieldValue]s for fields of given struct, +// including any sub-fields, subject to filtering from the given should function +// which returns true for anything to include and false to exclude. +// You must pass a pointer to the object, so that the values are addressable. +func StructValues(obj any, should func(parent reflect.Value, field reflect.StructField, value reflect.Value) bool) []*FieldValue { + var vals []*FieldValue + val := reflect.ValueOf(obj).Elem() + parName := "" + WalkFields(val, should, + func(parent reflect.Value, field reflect.StructField, value reflect.Value) { + fkind := field.Type.Kind() + fname := field.Name + if val.Addr().Interface() == parent.Addr().Interface() { // top-level + if fkind == reflect.Struct { + parName = fname + return + } + } else { + fname = parName + "." + fname + } + sv := &FieldValue{Path: fname, Field: field, Value: value, Parent: parent} + vals = append(vals, sv) + }) + return vals +} + +func WalkFields(parent reflect.Value, should func(parent reflect.Value, field reflect.StructField, value reflect.Value) bool, walk func(parent reflect.Value, field reflect.StructField, value reflect.Value)) { + typ := parent.Type() + for i := 0; i < typ.NumField(); i++ { + field := typ.Field(i) + if !field.IsExported() { + continue + } + value := parent.Field(i) + if !should(parent, field, value) { + continue + } + if field.Type.Kind() == reflect.Struct { + walk(parent, field, value) + WalkFields(value, should, walk) + } else { + walk(parent, field, value) + } + } +} diff --git a/leabra/typegen.go b/leabra/typegen.go index 2fa7f4b..ded69a5 100644 --- a/leabra/typegen.go +++ b/leabra/typegen.go @@ -44,7 +44,9 @@ var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.SelfIn var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.ActAvgParams", IDName: "act-avg-params", Doc: "ActAvgParams represents expected average activity levels in the layer.\nUsed for computing running-average computation that is then used for netinput scaling.\nAlso specifies time constant for updating average\nand for the target value for adapting inhibition in inhib_adapt.", Fields: []types.Field{{Name: "Init", Doc: "initial estimated average activity level in the layer (see also UseFirst option -- if that is off then it is used as a starting point for running average actual activity level, ActMAvg and ActPAvg) -- ActPAvg is used primarily for automatic netinput scaling, to balance out layers that have different activity levels -- thus it is important that init be relatively accurate -- good idea to update from recorded ActPAvg levels"}, {Name: "Fixed", Doc: "if true, then the Init value is used as a constant for ActPAvgEff (the effective value used for netinput rescaling), instead of using the actual running average activation"}, {Name: "UseExtAct", Doc: "if true, then use the activation level computed from the external inputs to this layer (avg of targ or ext unit vars) -- this will only be applied to layers with Input or Target / Compare layer types, and falls back on the targ_init value if external inputs are not available or have a zero average -- implies fixed behavior"}, {Name: "UseFirst", Doc: "use the first actual average value to override targ_init value -- actual value is likely to be a better estimate than our guess"}, {Name: "Tau", Doc: "time constant in trials for integrating time-average values at the layer level -- used for computing Pool.ActAvg.ActsMAvg, ActsPAvg"}, {Name: "Adjust", Doc: "adjustment multiplier on the computed ActPAvg value that is used to compute ActPAvgEff, which is actually used for netinput rescaling -- if based on connectivity patterns or other factors the actual running-average value is resulting in netinputs that are too high or low, then this can be used to adjust the effective average activity value -- reducing the average activity with a factor < 1 will increase netinput scaling (stronger net inputs from layers that receive from this layer), and vice-versa for increasing (decreases net inputs)"}, {Name: "Dt", Doc: "rate = 1 / tau"}}}) -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Layer", IDName: "layer", Doc: "Layer implements the Leabra algorithm at the layer level,\nmanaging neurons and pathways.", Embeds: []types.Field{{Name: "LayerBase"}}, Fields: []types.Field{{Name: "Network", Doc: "our parent network, in case we need to use it to\nfind other layers etc; set when added by network."}, {Name: "Type", Doc: "type of layer."}, {Name: "RecvPaths", Doc: "list of receiving pathways into this layer from other layers."}, {Name: "SendPaths", Doc: "list of sending pathways from this layer to other layers."}, {Name: "Act", Doc: "Activation parameters and methods for computing activations."}, {Name: "Inhib", Doc: "Inhibition parameters and methods for computing layer-level inhibition."}, {Name: "Learn", Doc: "Learning parameters and methods that operate at the neuron level."}, {Name: "Burst", Doc: "Burst has parameters for computing Burst from act, in Superficial layers\n(but also needed in Deep layers for deep self connections)."}, {Name: "Pulvinar", Doc: "Pulvinar has parameters for computing Pulvinar plus-phase (outcome)\nactivations based on Burst activation from corresponding driver neuron."}, {Name: "Drivers", Doc: "Drivers are names of SuperLayer(s) that sends 5IB Burst driver\ninputs to this layer."}, {Name: "RW", Doc: "RW are Rescorla-Wagner RL learning parameters."}, {Name: "TD", Doc: "TD are Temporal Differences RL learning parameters."}, {Name: "Matrix", Doc: "Matrix BG gating parameters"}, {Name: "PBWM", Doc: "PBWM has general PBWM parameters, including the shape\nof overall Maint + Out gating system that this layer is part of."}, {Name: "GPiGate", Doc: "GPiGate are gating parameters determining threshold for gating etc."}, {Name: "CIN", Doc: "CIN cholinergic interneuron parameters."}, {Name: "PFCGate", Doc: "PFC Gating parameters"}, {Name: "PFCMaint", Doc: "PFC Maintenance parameters"}, {Name: "PFCDyns", Doc: "PFCDyns dynamic behavior parameters -- provides deterministic control over PFC maintenance dynamics -- the rows of PFC units (along Y axis) behave according to corresponding index of Dyns (inner loop is Super Y axis, outer is Dyn types) -- ensure Y dim has even multiple of len(Dyns)"}, {Name: "Neurons", Doc: "slice of neurons for this layer, as a flat list of len = Shape.Len().\nMust iterate over index and use pointer to modify values."}, {Name: "Pools", Doc: "inhibition and other pooled, aggregate state variables.\nflat list has at least of 1 for layer, and one for each sub-pool\nif shape supports that (4D).\nMust iterate over index and use pointer to modify values."}, {Name: "CosDiff", Doc: "cosine difference between ActM, ActP stats."}, {Name: "NeuroMod", Doc: "NeuroMod is the neuromodulatory neurotransmitter state for this layer."}, {Name: "SendTo", Doc: "SendTo is a list of layers that this layer sends special signals to,\nwhich could be dopamine, gating signals, depending on the layer type."}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Layer", IDName: "layer", Doc: "Layer implements the Leabra algorithm at the layer level,\nmanaging neurons and pathways.", Embeds: []types.Field{{Name: "LayerBase"}}, Fields: []types.Field{{Name: "Network", Doc: "our parent network, in case we need to use it to\nfind other layers etc; set when added by network."}, {Name: "RecvPaths", Doc: "list of receiving pathways into this layer from other layers."}, {Name: "SendPaths", Doc: "list of sending pathways from this layer to other layers."}, {Name: "Params", Doc: "Params contains all of the layer parameters."}, {Name: "Neurons", Doc: "slice of neurons for this layer, as a flat list of len = Shape.Len().\nMust iterate over index and use pointer to modify values."}, {Name: "Pools", Doc: "inhibition and other pooled, aggregate state variables.\nflat list has at least of 1 for layer, and one for each sub-pool\nif shape supports that (4D).\nMust iterate over index and use pointer to modify values."}, {Name: "CosDiff", Doc: "cosine difference between ActM, ActP stats."}, {Name: "NeuroMod", Doc: "NeuroMod is the neuromodulatory neurotransmitter state for this layer."}, {Name: "SendTo", Doc: "SendTo is a list of layers that this layer sends special signals to,\nwhich could be dopamine, gating signals, depending on the layer type."}}}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.LayerParams", IDName: "layer-params", Doc: "LayerParams contains all of the layer parameters, which\nimplement the Leabra algorithm at the layer level.", Fields: []types.Field{{Name: "Type", Doc: "type of layer."}, {Name: "Act", Doc: "Activation parameters and methods for computing activations."}, {Name: "Inhib", Doc: "Inhibition parameters and methods for computing layer-level inhibition."}, {Name: "Learn", Doc: "Learning parameters and methods that operate at the neuron level."}, {Name: "Burst", Doc: "Burst has parameters for computing Burst from act, in Superficial layers\n(but also needed in Deep layers for deep self connections)."}, {Name: "Pulvinar", Doc: "Pulvinar has parameters for computing Pulvinar plus-phase (outcome)\nactivations based on Burst activation from corresponding driver neuron."}, {Name: "Drivers", Doc: "Drivers are names of SuperLayer(s) that sends 5IB Burst driver\ninputs to this layer."}, {Name: "RW", Doc: "RW are Rescorla-Wagner RL learning parameters."}, {Name: "TD", Doc: "TD are Temporal Differences RL learning parameters."}, {Name: "Matrix", Doc: "Matrix BG gating parameters"}, {Name: "PBWM", Doc: "PBWM has general PBWM parameters, including the shape\nof overall Maint + Out gating system that this layer is part of."}, {Name: "GPiGate", Doc: "GPiGate are gating parameters determining threshold for gating etc."}, {Name: "CIN", Doc: "CIN cholinergic interneuron parameters."}, {Name: "PFCGate", Doc: "PFC Gating parameters"}, {Name: "PFCMaint", Doc: "PFC Maintenance parameters"}, {Name: "PFCDyns", Doc: "PFCDyns dynamic behavior parameters, which provide deterministic\ncontrol over PFC maintenance dynamics. The rows of PFC units\n(along Y axis) behave according to corresponding index of Dyns\n(inner loop is Super Y axis, outer is Dyn types).\nEnsure Y dim has even multiple of len(Dyns)."}, {Name: "Layer", Doc: "pointer back to our layer"}}}) var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.LayerTypes", IDName: "layer-types", Doc: "LayerTypes enumerates all the different types of layers,\nfor the different algorithm types supported.\nClass parameter styles automatically key off of these types."}) @@ -70,7 +72,11 @@ var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Moment var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.WtBalParams", IDName: "wt-bal-params", Doc: "WtBalParams are weight balance soft renormalization params:\nmaintains overall weight balance by progressively penalizing weight increases as a function of\nhow strong the weights are overall (subject to thresholding) and long time-averaged activation.\nPlugs into soft bounding function.", Fields: []types.Field{{Name: "On", Doc: "perform weight balance soft normalization? if so, maintains overall weight balance across units by progressively penalizing weight increases as a function of amount of averaged receiver weight above a high threshold (hi_thr) and long time-average activation above an act_thr -- this is generally very beneficial for larger models where hog units are a problem, but not as much for smaller models where the additional constraints are not beneficial -- uses a sigmoidal function: WbInc = 1 / (1 + HiGain*(WbAvg - HiThr) + ActGain * (nrn.ActAvg - ActThr)))"}, {Name: "Targs", Doc: "apply soft bounding to target layers -- appears to be beneficial but still testing"}, {Name: "AvgThr", Doc: "threshold on weight value for inclusion into the weight average that is then subject to the further HiThr threshold for then driving a change in weight balance -- this AvgThr allows only stronger weights to contribute so that weakening of lower weights does not dilute sensitivity to number and strength of strong weights"}, {Name: "HiThr", Doc: "high threshold on weight average (subject to AvgThr) before it drives changes in weight increase vs. decrease factors"}, {Name: "HiGain", Doc: "gain multiplier applied to above-HiThr thresholded weight averages -- higher values turn weight increases down more rapidly as the weights become more imbalanced"}, {Name: "LoThr", Doc: "low threshold on weight average (subject to AvgThr) before it drives changes in weight increase vs. decrease factors"}, {Name: "LoGain", Doc: "gain multiplier applied to below-lo_thr thresholded weight averages -- higher values turn weight increases up more rapidly as the weights become more imbalanced -- generally beneficial but sometimes not -- worth experimenting with either 6 or 0"}}}) -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Network", IDName: "network", Doc: "leabra.Network implements the Leabra algorithm, managing the Layers.", Embeds: []types.Field{{Name: "NetworkBase"}}, Fields: []types.Field{{Name: "Layers", Doc: "list of layers"}, {Name: "NThreads", Doc: "number of parallel threads (go routines) to use."}, {Name: "WtBalInterval", Doc: "how frequently to update the weight balance average\nweight factor -- relatively expensive."}, {Name: "WtBalCtr", Doc: "counter for how long it has been since last WtBal."}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.ViewTimes", IDName: "view-times", Doc: "ViewTimes are the options for when the NetView can be updated."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.NetViewUpdate", IDName: "net-view-update", Doc: "NetViewUpdate manages time scales for updating the NetView.\nUse one of these for each mode you want to control separately.", Fields: []types.Field{{Name: "On", Doc: "On toggles update of display on"}, {Name: "Time", Doc: "Time scale to update the network view (Cycle to Trial timescales)."}, {Name: "CounterFunc", Doc: "CounterFunc returns the counter string showing current counters etc."}, {Name: "View", Doc: "View is the network view."}}}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Network", IDName: "network", Doc: "leabra.Network implements the Leabra algorithm, managing the Layers.", Embeds: []types.Field{{Name: "NetworkBase"}}, Fields: []types.Field{{Name: "Ctx", Doc: "Ctx is the context state. Other copies of Context can be maintained\nand [SetContext] to update this one, but this instance is the canonical one."}, {Name: "Layers", Doc: "list of layers"}, {Name: "LayerClassMap", Doc: "LayerClassMap is a map from class name to layer names."}, {Name: "NThreads", Doc: "number of parallel threads (go routines) to use."}, {Name: "WtBalInterval", Doc: "how frequently to update the weight balance average\nweight factor -- relatively expensive."}, {Name: "WtBalCtr", Doc: "counter for how long it has been since last WtBal."}}}) var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.LayerNames", IDName: "layer-names", Doc: "LayerNames is a list of layer names, with methods to add and validate."}) @@ -84,9 +90,25 @@ var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Neuron var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.NeurFlags", IDName: "neur-flags", Doc: "NeurFlags are bit-flags encoding relevant binary state for neurons"}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.LayerSheets", IDName: "layer-sheets", Doc: "LayerSheets contains Layer parameter Sheets."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.LayerSheet", IDName: "layer-sheet", Doc: "LayerSheet is one Layer parameter Sheet."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.LayerSel", IDName: "layer-sel", Doc: "LayerSel is one Layer parameter Selector."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.PathSheets", IDName: "path-sheets", Doc: "PathSheets contains Path parameter Sheets."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.PathSheet", IDName: "path-sheet", Doc: "PathSheet is one Path parameter Sheet."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.PathSel", IDName: "path-sel", Doc: "PathSel is one Path parameter Selector."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Params", IDName: "params", Doc: "Params contains the [LayerParams] and [PathParams] parameter setting functions\nprovided by the [emergent] [params] package.", Fields: []types.Field{{Name: "Layer", Doc: "Layer has the parameters to apply to the [LayerParams] for layers."}, {Name: "Path", Doc: "Path has the parameters to apply to the [PathParams] for paths."}, {Name: "ExtraSheets", Doc: "ExtraSheets has optional additional sheets of parameters to apply\nafter the default Base sheet. Use \"Script\" for default Script sheet.\nMultiple names separated by spaces can be used (don't put spaces in Sheet names!)"}, {Name: "Tag", Doc: "Tag is an optional additional tag to add to log file names to identify\na specific run of the model (typically set by a config file or args)."}, {Name: "Script", Doc: "Script is a parameter setting script, which adds to the Layer and Path sheets\ntypically using the \"Script\" set name."}, {Name: "Interp", Doc: "Interp is the yaegi interpreter for running the script."}}}) + var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.WtBalRecvPath", IDName: "wt-bal-recv-path", Doc: "WtBalRecvPath are state variables used in computing the WtBal weight balance function\nThere is one of these for each Recv Neuron participating in the pathway.", Fields: []types.Field{{Name: "Avg", Doc: "average of effective weight values that exceed WtBal.AvgThr across given Recv Neuron's connections for given Path"}, {Name: "Fact", Doc: "overall weight balance factor that drives changes in WbInc vs. WbDec via a sigmoidal function -- this is the net strength of weight balance changes"}, {Name: "Inc", Doc: "weight balance increment factor -- extra multiplier to add to weight increases to maintain overall weight balance"}, {Name: "Dec", Doc: "weight balance decrement factor -- extra multiplier to add to weight decreases to maintain overall weight balance"}}}) -var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Path", IDName: "path", Doc: "Path implements the Leabra algorithm at the synaptic level,\nin terms of a pathway connecting two layers.", Embeds: []types.Field{{Name: "PathBase"}}, Fields: []types.Field{{Name: "Send", Doc: "sending layer for this pathway."}, {Name: "Recv", Doc: "receiving layer for this pathway."}, {Name: "Type", Doc: "type of pathway."}, {Name: "WtInit", Doc: "initial random weight distribution"}, {Name: "WtScale", Doc: "weight scaling parameters: modulates overall strength of pathway,\nusing both absolute and relative factors."}, {Name: "Learn", Doc: "synaptic-level learning parameters"}, {Name: "FromSuper", Doc: "For CTCtxtPath if true, this is the pathway from corresponding\nSuperficial layer. Should be OneToOne path, with Learn.Learn = false,\nWtInit.Var = 0, Mean = 0.8. These defaults are set if FromSuper = true."}, {Name: "CHL", Doc: "CHL are the parameters for CHL learning. if CHL is On then\nWtSig.SoftBound is automatically turned off, as it is incompatible."}, {Name: "Trace", Doc: "special parameters for matrix trace learning"}, {Name: "Syns", Doc: "synaptic state values, ordered by the sending layer\nunits which owns them -- one-to-one with SConIndex array."}, {Name: "GScale", Doc: "scaling factor for integrating synaptic input conductances (G's).\ncomputed in AlphaCycInit, incorporates running-average activity levels."}, {Name: "GInc", Doc: "local per-recv unit increment accumulator for synaptic\nconductance from sending units. goes to either GeRaw or GiRaw\non neuron depending on pathway type."}, {Name: "CtxtGeInc", Doc: "CtxtGeInc is local per-recv unit accumulator for Ctxt excitatory\nconductance from sending units, Not a delta, the full value."}, {Name: "GeRaw", Doc: "per-recv, per-path raw excitatory input, for GPiThalPath."}, {Name: "WbRecv", Doc: "weight balance state variables for this pathway, one per recv neuron."}, {Name: "RConN", Doc: "number of recv connections for each neuron in the receiving layer,\nas a flat list."}, {Name: "RConNAvgMax", Doc: "average and maximum number of recv connections in the receiving layer."}, {Name: "RConIndexSt", Doc: "starting index into ConIndex list for each neuron in\nreceiving layer; list incremented by ConN."}, {Name: "RConIndex", Doc: "index of other neuron on sending side of pathway,\nordered by the receiving layer's order of units as the\nouter loop (each start is in ConIndexSt),\nand then by the sending layer's units within that."}, {Name: "RSynIndex", Doc: "index of synaptic state values for each recv unit x connection,\nfor the receiver pathway which does not own the synapses,\nand instead indexes into sender-ordered list."}, {Name: "SConN", Doc: "number of sending connections for each neuron in the\nsending layer, as a flat list."}, {Name: "SConNAvgMax", Doc: "average and maximum number of sending connections\nin the sending layer."}, {Name: "SConIndexSt", Doc: "starting index into ConIndex list for each neuron in\nsending layer; list incremented by ConN."}, {Name: "SConIndex", Doc: "index of other neuron on receiving side of pathway,\nordered by the sending layer's order of units as the\nouter loop (each start is in ConIndexSt), and then\nby the sending layer's units within that."}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Path", IDName: "path", Doc: "Path implements the Leabra algorithm at the synaptic level,\nin terms of a pathway connecting two layers.", Embeds: []types.Field{{Name: "PathBase"}}, Fields: []types.Field{{Name: "Params", Doc: "Params contains all of the path parameters, which implement the algorithm."}, {Name: "FromSuper", Doc: "For CTCtxtPath if true, this is the pathway from corresponding\nSuperficial layer. Should be OneToOne path, with Learn.Learn = false,\nWtInit.Var = 0, Mean = 0.8. These defaults are set if FromSuper = true."}, {Name: "Send", Doc: "sending layer for this pathway."}, {Name: "Recv", Doc: "receiving layer for this pathway."}, {Name: "Syns", Doc: "synaptic state values, ordered by the sending layer\nunits which owns them -- one-to-one with SConIndex array."}, {Name: "GScale", Doc: "scaling factor for integrating synaptic input conductances (G's).\ncomputed in AlphaCycInit, incorporates running-average activity levels."}, {Name: "GInc", Doc: "local per-recv unit increment accumulator for synaptic\nconductance from sending units. goes to either GeRaw or GiRaw\non neuron depending on pathway type."}, {Name: "CtxtGeInc", Doc: "CtxtGeInc is local per-recv unit accumulator for Ctxt excitatory\nconductance from sending units, Not a delta, the full value."}, {Name: "GeRaw", Doc: "per-recv, per-path raw excitatory input, for GPiThalPath."}, {Name: "WbRecv", Doc: "weight balance state variables for this pathway, one per recv neuron."}, {Name: "RConN", Doc: "number of recv connections for each neuron in the receiving layer,\nas a flat list."}, {Name: "RConNAvgMax", Doc: "average and maximum number of recv connections in the receiving layer."}, {Name: "RConIndexSt", Doc: "starting index into ConIndex list for each neuron in\nreceiving layer; list incremented by ConN."}, {Name: "RConIndex", Doc: "index of other neuron on sending side of pathway,\nordered by the receiving layer's order of units as the\nouter loop (each start is in ConIndexSt),\nand then by the sending layer's units within that."}, {Name: "RSynIndex", Doc: "index of synaptic state values for each recv unit x connection,\nfor the receiver pathway which does not own the synapses,\nand instead indexes into sender-ordered list."}, {Name: "SConN", Doc: "number of sending connections for each neuron in the\nsending layer, as a flat list."}, {Name: "SConNAvgMax", Doc: "average and maximum number of sending connections\nin the sending layer."}, {Name: "SConIndexSt", Doc: "starting index into ConIndex list for each neuron in\nsending layer; list incremented by ConN."}, {Name: "SConIndex", Doc: "index of other neuron on receiving side of pathway,\nordered by the sending layer's order of units as the\nouter loop (each start is in ConIndexSt), and then\nby the sending layer's units within that."}}}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.PathParams", IDName: "path-params", Doc: "PathParams contains all of the path parameters, which\nimplement the Leabra algorithm at the path level.", Fields: []types.Field{{Name: "Type", Doc: "type of pathway."}, {Name: "WtInit", Doc: "initial random weight distribution"}, {Name: "WtScale", Doc: "weight scaling parameters: modulates overall strength of pathway,\nusing both absolute and relative factors."}, {Name: "Learn", Doc: "synaptic-level learning parameters"}, {Name: "CHL", Doc: "CHL are the parameters for CHL learning. if CHL is On then\nWtSig.SoftBound is automatically turned off, as it is incompatible."}, {Name: "Trace", Doc: "special parameters for matrix trace learning"}, {Name: "Path", Doc: "Path points back to our path."}}}) var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.PathTypes", IDName: "path-types", Doc: "PathTypes enumerates all the different types of leabra pathways,\nfor the different algorithm types supported.\nClass parameter styles automatically key off of these types."}) @@ -120,4 +142,6 @@ var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.RWPara var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.TDParams", IDName: "td-params", Doc: "TDParams are params for TD temporal differences computation.", Fields: []types.Field{{Name: "Discount", Doc: "discount factor -- how much to discount the future prediction from RewPred."}, {Name: "PredLay", Doc: "name of [TDPredLayer] to get reward prediction from."}, {Name: "IntegLay", Doc: "name of [TDIntegLayer] from which this computes the temporal derivative."}}}) +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.FieldValue", IDName: "field-value", Doc: "FieldValue holds the value of a field in a struct.", Fields: []types.Field{{Name: "Path"}, {Name: "Field"}, {Name: "Value"}, {Name: "Parent"}}}) + var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/leabra.Synapse", IDName: "synapse", Doc: "leabra.Synapse holds state for the synaptic connection between neurons", Fields: []types.Field{{Name: "Wt", Doc: "synaptic weight value, sigmoid contrast-enhanced version\nof the linear weight LWt."}, {Name: "LWt", Doc: "linear (underlying) weight value, which learns according\nto the lrate specified in the connection spec.\nThis is converted into the effective weight value, Wt,\nvia sigmoidal contrast enhancement (see WtSigParams)."}, {Name: "DWt", Doc: "change in synaptic weight, driven by learning algorithm."}, {Name: "Norm", Doc: "DWt normalization factor, reset to max of abs value of DWt,\ndecays slowly down over time. Serves as an estimate of variance\nin weight changes over time."}, {Name: "Moment", Doc: "momentum, as time-integrated DWt changes, to accumulate a\nconsistent direction of weight change and cancel out\ndithering contradictory changes."}, {Name: "Scale", Doc: "scaling parameter for this connection: effective weight value\nis scaled by this factor in computing G conductance.\nThis is useful for topographic connectivity patterns e.g.,\nto enforce more distant connections to always be lower in magnitude\nthan closer connections. Value defaults to 1 (cannot be exactly 0,\notherwise is automatically reset to 1; use a very small number to\napproximate 0). Typically set by using the paths.Pattern Weights()\nvalues where appropriate."}, {Name: "NTr", Doc: "NTr is the new trace, which drives updates to trace value.\nsu * (1-ru_msn) for gated, or su * ru_msn for not-gated (or for non-thalamic cases)."}, {Name: "Tr", Doc: "Tr is the current ongoing trace of activations, which drive learning.\nAdds NTr and clears after learning on current values, and includes both\nthal gated (+ and other nongated, - inputs)."}}}) From 4a8a19505e16e1c8cd3b957a0784977775e58073 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Wed, 9 Jul 2025 16:12:55 -0700 Subject: [PATCH 04/14] lab: add back ra25 after rename of examples -> sims --- sims/ra25/cmd/main.go | 17 + sims/ra25/config.go | 148 +++++++ sims/ra25/enumgen.go | 140 +++++++ sims/ra25/params.go | 43 ++ sims/ra25/ra25.go | 776 ++++++++++++++++++++++++++++++++++++ sims/ra25/random_5x5_25.tsv | 26 ++ sims/ra25/typegen.go | 29 ++ 7 files changed, 1179 insertions(+) create mode 100644 sims/ra25/cmd/main.go create mode 100644 sims/ra25/config.go create mode 100644 sims/ra25/enumgen.go create mode 100644 sims/ra25/params.go create mode 100644 sims/ra25/ra25.go create mode 100644 sims/ra25/random_5x5_25.tsv create mode 100644 sims/ra25/typegen.go diff --git a/sims/ra25/cmd/main.go b/sims/ra25/cmd/main.go new file mode 100644 index 0000000..1aac41e --- /dev/null +++ b/sims/ra25/cmd/main.go @@ -0,0 +1,17 @@ +// Copyright (c) 2024, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "cogentcore.org/core/cli" + "github.com/emer/leabra/v2/sims/ra25" +) + +func main() { + cfg := ra25.NewConfig() + opts := cli.DefaultOptions(cfg.Name, cfg.Title) + opts.DefaultFiles = append(opts.DefaultFiles, "config.toml") + cli.Run(opts, cfg, ra25.RunSim) +} diff --git a/sims/ra25/config.go b/sims/ra25/config.go new file mode 100644 index 0000000..e50122d --- /dev/null +++ b/sims/ra25/config.go @@ -0,0 +1,148 @@ +// Copyright (c) 2024, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ra25 + +import ( + "cogentcore.org/core/base/errors" + "cogentcore.org/core/base/reflectx" + "cogentcore.org/core/math32/vecint" +) + +// ParamConfig has config parameters related to sim params. +type ParamConfig struct { + + // Hidden1Size is the size of hidden 1 layer. + Hidden1Size vecint.Vector2i `default:"{'X':10,'Y':10}" nest:"+"` + + // Hidden2Size is the size of hidden 2 layer. + Hidden2Size vecint.Vector2i `default:"{'X':10,'Y':10}" nest:"+"` + + // Script is an interpreted script that is run to set parameters in Layer and Path + // sheets, by default using the "Script" set name. + Script string `new-window:"+" width:"100"` + + // Sheet is the extra params sheet name(s) to use (space separated + // if multiple). Must be valid name as listed in compiled-in params + // or loaded params. + Sheet string + + // Tag is an extra tag to add to file names and logs saved from this run. + Tag string + + // Note is additional info to describe the run params etc, + // like a git commit message for the run. + Note string + + // SaveAll will save a snapshot of all current param and config settings + // in a directory named params_ (or _good if Good is true), + // then quit. Useful for comparing to later changes and seeing multiple + // views of current params. + SaveAll bool `nest:"+"` + + // Good is for SaveAll, save to params_good for a known good params state. + // This can be done prior to making a new release after all tests are passing. + // Add results to git to provide a full diff record of all params over level. + Good bool `nest:"+"` +} + +// RunConfig has config parameters related to running the sim. +type RunConfig struct { + + // Run is the _starting_ run number, which determines the random seed. + // Runs counts up from there. Can do all runs in parallel by launching + // separate jobs with each starting Run, Runs = 1. + Run int `default:"0" flag:"run"` + + // Runs is the total number of runs to do when running Train, starting from Run. + Runs int `default:"5" min:"1"` + + // Epochs is the total number of epochs per run. + Epochs int `default:"100"` + + // Trials is the total number of trials per epoch. + // Should be an even multiple of NData. + Trials int `default:"32"` + + // Cycles is the total number of cycles per trial: at least 200. + Cycles int `default:"200"` + + // PlusCycles is the total number of plus-phase cycles per trial. For Cycles=300, use 100. + PlusCycles int `default:"50"` + + // NZero is how many perfect, zero-error epochs before stopping a Run. + NZero int `default:"2"` + + // TestInterval is how often (in epochs) to run through all the test patterns, + // in terms of training epochs. Can use 0 or -1 for no testing. + TestInterval int `default:"5"` + + // PCAInterval is how often (in epochs) to compute PCA on hidden + // representations to measure variance. + PCAInterval int `default:"10"` + + // StartWeights is the name of weights file to load at start of first run. + StartWeights string +} + +// LogConfig has config parameters related to logging data. +type LogConfig struct { + + // SaveWeights will save final weights after each run. + SaveWeights bool + + // Train has the list of Train mode levels to save log files for. + Train []string `default:"['Expt', 'Run', 'Epoch']" nest:"+"` + + // Test has the list of Test mode levels to save log files for. + Test []string `nest:"+"` +} + +// Config has the overall Sim configuration options. +type Config struct { + + // Name is the short name of the sim. + Name string `display:"-" default:"RA25"` + + // Title is the longer title of the sim. + Title string `display:"-" default:"Leabra random associator"` + + // URL is a link to the online README or other documentation for this sim. + URL string `display:"-" default:"https://github.com/emer/leabra/blob/main/sims/ra25/README.md"` + + // Doc is brief documentation of the sim. + Doc string `display:"-" default:"This demonstrates a basic Leabra model and provides a template for creating new models. It has a random-associator four-layer leabra network that uses the standard supervised learning paradigm to learn mappings between 25 random input / output patterns defined over 5x5 input / output layers."` + + // Includes has a list of additional config files to include. + // After configuration, it contains list of include files added. + Includes []string + + // GUI means open the GUI. Otherwise it runs automatically and quits, + // saving results to log files. + GUI bool `default:"true"` + + // Debug reports debugging information. + Debug bool + + // Params has parameter related configuration options. + Params ParamConfig `display:"add-fields"` + + // Run has sim running related configuration options. + Run RunConfig `display:"add-fields"` + + // Log has data logging related configuration options. + Log LogConfig `display:"add-fields"` +} + +func (cfg *Config) IncludesPtr() *[]string { return &cfg.Includes } + +func (cfg *Config) Defaults() { + errors.Log(reflectx.SetFromDefaultTags(cfg)) +} + +func NewConfig() *Config { + cfg := &Config{} + cfg.Defaults() + return cfg +} diff --git a/sims/ra25/enumgen.go b/sims/ra25/enumgen.go new file mode 100644 index 0000000..3588f6c --- /dev/null +++ b/sims/ra25/enumgen.go @@ -0,0 +1,140 @@ +// Code generated by "core generate -add-types -add-funcs -gosl"; DO NOT EDIT. + +package ra25 + +import ( + "cogentcore.org/core/enums" +) + +var _ModesValues = []Modes{0, 1} + +// ModesN is the highest valid value for type Modes, plus one. +// +//gosl:start +const ModesN Modes = 2 + +//gosl:end + +var _ModesValueMap = map[string]Modes{`Train`: 0, `Test`: 1} + +var _ModesDescMap = map[Modes]string{0: ``, 1: ``} + +var _ModesMap = map[Modes]string{0: `Train`, 1: `Test`} + +// String returns the string representation of this Modes value. +func (i Modes) String() string { return enums.String(i, _ModesMap) } + +// SetString sets the Modes value from its string representation, +// and returns an error if the string is invalid. +func (i *Modes) SetString(s string) error { return enums.SetString(i, s, _ModesValueMap, "Modes") } + +// Int64 returns the Modes value as an int64. +func (i Modes) Int64() int64 { return int64(i) } + +// SetInt64 sets the Modes value from an int64. +func (i *Modes) SetInt64(in int64) { *i = Modes(in) } + +// Desc returns the description of the Modes value. +func (i Modes) Desc() string { return enums.Desc(i, _ModesDescMap) } + +// ModesValues returns all possible values for the type Modes. +func ModesValues() []Modes { return _ModesValues } + +// Values returns all possible values for the type Modes. +func (i Modes) Values() []enums.Enum { return enums.Values(_ModesValues) } + +// MarshalText implements the [encoding.TextMarshaler] interface. +func (i Modes) MarshalText() ([]byte, error) { return []byte(i.String()), nil } + +// UnmarshalText implements the [encoding.TextUnmarshaler] interface. +func (i *Modes) UnmarshalText(text []byte) error { return enums.UnmarshalText(i, text, "Modes") } + +var _LevelsValues = []Levels{0, 1, 2, 3, 4} + +// LevelsN is the highest valid value for type Levels, plus one. +// +//gosl:start +const LevelsN Levels = 5 + +//gosl:end + +var _LevelsValueMap = map[string]Levels{`Cycle`: 0, `Trial`: 1, `Epoch`: 2, `Run`: 3, `Expt`: 4} + +var _LevelsDescMap = map[Levels]string{0: ``, 1: ``, 2: ``, 3: ``, 4: ``} + +var _LevelsMap = map[Levels]string{0: `Cycle`, 1: `Trial`, 2: `Epoch`, 3: `Run`, 4: `Expt`} + +// String returns the string representation of this Levels value. +func (i Levels) String() string { return enums.String(i, _LevelsMap) } + +// SetString sets the Levels value from its string representation, +// and returns an error if the string is invalid. +func (i *Levels) SetString(s string) error { return enums.SetString(i, s, _LevelsValueMap, "Levels") } + +// Int64 returns the Levels value as an int64. +func (i Levels) Int64() int64 { return int64(i) } + +// SetInt64 sets the Levels value from an int64. +func (i *Levels) SetInt64(in int64) { *i = Levels(in) } + +// Desc returns the description of the Levels value. +func (i Levels) Desc() string { return enums.Desc(i, _LevelsDescMap) } + +// LevelsValues returns all possible values for the type Levels. +func LevelsValues() []Levels { return _LevelsValues } + +// Values returns all possible values for the type Levels. +func (i Levels) Values() []enums.Enum { return enums.Values(_LevelsValues) } + +// MarshalText implements the [encoding.TextMarshaler] interface. +func (i Levels) MarshalText() ([]byte, error) { return []byte(i.String()), nil } + +// UnmarshalText implements the [encoding.TextUnmarshaler] interface. +func (i *Levels) UnmarshalText(text []byte) error { return enums.UnmarshalText(i, text, "Levels") } + +var _StatsPhaseValues = []StatsPhase{0, 1} + +// StatsPhaseN is the highest valid value for type StatsPhase, plus one. +// +//gosl:start +const StatsPhaseN StatsPhase = 2 + +//gosl:end + +var _StatsPhaseValueMap = map[string]StatsPhase{`Start`: 0, `Step`: 1} + +var _StatsPhaseDescMap = map[StatsPhase]string{0: ``, 1: ``} + +var _StatsPhaseMap = map[StatsPhase]string{0: `Start`, 1: `Step`} + +// String returns the string representation of this StatsPhase value. +func (i StatsPhase) String() string { return enums.String(i, _StatsPhaseMap) } + +// SetString sets the StatsPhase value from its string representation, +// and returns an error if the string is invalid. +func (i *StatsPhase) SetString(s string) error { + return enums.SetString(i, s, _StatsPhaseValueMap, "StatsPhase") +} + +// Int64 returns the StatsPhase value as an int64. +func (i StatsPhase) Int64() int64 { return int64(i) } + +// SetInt64 sets the StatsPhase value from an int64. +func (i *StatsPhase) SetInt64(in int64) { *i = StatsPhase(in) } + +// Desc returns the description of the StatsPhase value. +func (i StatsPhase) Desc() string { return enums.Desc(i, _StatsPhaseDescMap) } + +// StatsPhaseValues returns all possible values for the type StatsPhase. +func StatsPhaseValues() []StatsPhase { return _StatsPhaseValues } + +// Values returns all possible values for the type StatsPhase. +func (i StatsPhase) Values() []enums.Enum { return enums.Values(_StatsPhaseValues) } + +// MarshalText implements the [encoding.TextMarshaler] interface. +func (i StatsPhase) MarshalText() ([]byte, error) { return []byte(i.String()), nil } + +// UnmarshalText implements the [encoding.TextUnmarshaler] interface. +func (i *StatsPhase) UnmarshalText(text []byte) error { + return enums.UnmarshalText(i, text, "StatsPhase") +} diff --git a/sims/ra25/params.go b/sims/ra25/params.go new file mode 100644 index 0000000..00786ee --- /dev/null +++ b/sims/ra25/params.go @@ -0,0 +1,43 @@ +// Copyright (c) 2019, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ra25 + +import ( + "github.com/emer/leabra/v2/leabra" +) + +// LayerParams sets the minimal non-default params. +// Base is always applied, and others can be optionally selected to apply on top of that. +var LayerParams = leabra.LayerSheets{ + "Base": { + {Sel: "Layer", Doc: "all defaults", + Set: func(ly *leabra.LayerParams) { + ly.Inhib.Layer.Gi = 1.8 + ly.Act.Init.Decay = 0.0 + ly.Act.Gbar.L = 0.1 // set explictly, new default, a bit better vs 0.2 + }}, + {Sel: "#Output", Doc: "", + Set: func(ly *leabra.LayerParams) { + ly.Inhib.Layer.Gi = 1.8 + }}, + }, +} + +// PathParams sets the minimal non-default params. +// Base is always applied, and others can be optionally selected to apply on top of that. +var PathParams = leabra.PathSheets{ + "Base": { + {Sel: "Path", Doc: "basic path params", + Set: func(pt *leabra.PathParams) { + pt.Learn.Norm.On = true + pt.Learn.Momentum.On = true + pt.Learn.WtBal.On = true // no diff really + }}, + {Sel: ".BackPath", Doc: "top-down back-pathways MUST have lower relative weight scale, otherwise network hallucinates", + Set: func(pt *leabra.PathParams) { + pt.WtScale.Rel = 0.2 + }}, + }, +} diff --git a/sims/ra25/ra25.go b/sims/ra25/ra25.go new file mode 100644 index 0000000..086eece --- /dev/null +++ b/sims/ra25/ra25.go @@ -0,0 +1,776 @@ +// Copyright (c) 2024, The Emergent Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// ra25 runs a simple random-associator four-layer leabra network +// that uses the standard supervised learning paradigm to learn +// mappings between 25 random input / output patterns +// defined over 5x5 input / output layers (i.e., 25 units) +package ra25 + +//go:generate core generate -add-types -add-funcs -gosl + +import ( + "embed" + "fmt" + "io/fs" + "os" + "reflect" + + "cogentcore.org/core/base/errors" + "cogentcore.org/core/base/metadata" + "cogentcore.org/core/core" + "cogentcore.org/core/enums" + "cogentcore.org/core/icons" + "cogentcore.org/core/math32" + "cogentcore.org/core/tree" + "cogentcore.org/lab/base/mpi" + "cogentcore.org/lab/base/randx" + "cogentcore.org/lab/patterns" + "cogentcore.org/lab/plot" + "cogentcore.org/lab/stats/stats" + "cogentcore.org/lab/table" + "cogentcore.org/lab/tensor" + "cogentcore.org/lab/tensorfs" + "github.com/emer/emergent/v2/egui" + "github.com/emer/emergent/v2/env" + "github.com/emer/emergent/v2/looper" + "github.com/emer/emergent/v2/paths" + "github.com/emer/leabra/v2/leabra" +) + +//go:embed random_5x5_25.tsv +var content embed.FS + +// Modes are the looping modes (Stacks) for running and statistics. +type Modes int32 //enums:enum +const ( + Train Modes = iota + Test +) + +// Levels are the looping levels for running and statistics. +type Levels int32 //enums:enum +const ( + Cycle Levels = iota + Trial + Epoch + Run + Expt +) + +// StatsPhase is the phase of stats processing for given mode, level. +// Accumulated values are reset at Start, added each Step. +type StatsPhase int32 //enums:enum +const ( + Start StatsPhase = iota + Step +) + +// see params.go for params, config.go for config + +// Sim encapsulates the entire simulation model, and we define all the +// functionality as methods on this struct. This structure keeps all relevant +// state information organized and available without having to pass everything around +// as arguments to methods, and provides the core GUI interface (note the view tags +// for the fields which provide hints to how things should be displayed). +type Sim struct { + + // simulation configuration parameters -- set by .toml config file and / or args + Config *Config `new-window:"+"` + + // Net is the network: click to view / edit parameters for layers, paths, etc. + Net *leabra.Network `new-window:"+" display:"no-inline"` + + // Params manages network parameter setting. + Params leabra.Params `display:"inline"` + + // Loops are the control loops for running the sim, in different Modes + // across stacks of Levels. + Loops *looper.Stacks `new-window:"+" display:"no-inline"` + + // Envs provides mode-string based storage of environments. + Envs env.Envs `new-window:"+" display:"no-inline"` + + // TrainUpdate has Train mode netview update parameters. + TrainUpdate leabra.NetViewUpdate `display:"inline"` + + // TestUpdate has Test mode netview update parameters. + TestUpdate leabra.NetViewUpdate `display:"inline"` + + // Root is the root tensorfs directory, where all stats and other misc sim data goes. + Root *tensorfs.Node `display:"-"` + + // Stats has the stats directory within Root. + Stats *tensorfs.Node `display:"-"` + + // Current has the current stats values within Stats. + Current *tensorfs.Node `display:"-"` + + // StatFuncs are statistics functions called at given mode and level, + // to perform all stats computations. phase = Start does init at start of given level, + // and all intialization / configuration (called during Init too). + StatFuncs []func(mode Modes, level Levels, phase StatsPhase) `display:"-"` + + // GUI manages all the GUI elements + GUI egui.GUI `display:"-"` + + // RandSeeds is a list of random seeds to use for each run. + RandSeeds randx.Seeds `display:"-"` +} + +// RunSim runs the simulation as a standalone app +// with given configuration. +func RunSim(cfg *Config) error { + ss := &Sim{Config: cfg} + ss.ConfigSim() + if ss.Config.GUI { + ss.RunGUI() + } else { + ss.RunNoGUI() + } + return nil +} + +// EmbedSim runs the simulation with default configuration +// embedded within given body element. +func EmbedSim(b tree.Node) *Sim { + cfg := NewConfig() + cfg.GUI = true + ss := &Sim{Config: cfg} + ss.ConfigSim() + ss.Init() + ss.ConfigGUI(b) + return ss +} + +func (ss *Sim) ConfigSim() { + ss.Root, _ = tensorfs.NewDir("Root") + tensorfs.CurRoot = ss.Root + ss.Net = leabra.NewNetwork(ss.Config.Name) + ss.Params.Config(LayerParams, PathParams, ss.Config.Params.Sheet, ss.Config.Params.Tag, reflect.ValueOf(ss)) + ss.RandSeeds.Init(100) // max 100 runs + ss.InitRandSeed(0) + // ss.ConfigInputs() + ss.OpenInputs() + ss.ConfigEnv() + ss.ConfigNet(ss.Net) + ss.ConfigLoops() + ss.ConfigStats() + // if ss.Config.Run.GPU { + // fmt.Println(leabra.GPUSystem.Vars().StringDoc()) + // } + if ss.Config.Params.SaveAll { + ss.Config.Params.SaveAll = false + ss.Net.SaveParamsSnapshot(&ss.Config, ss.Config.Params.Good) + os.Exit(0) + } +} + +func (ss *Sim) ConfigEnv() { + // Can be called multiple times -- don't re-create + var trn, tst *env.FixedTable + if len(ss.Envs) == 0 { + trn = &env.FixedTable{} + tst = &env.FixedTable{} + } else { + trn = ss.Envs.ByMode(Train).(*env.FixedTable) + tst = ss.Envs.ByMode(Test).(*env.FixedTable) + } + + inputs := tensorfs.DirTable(ss.Root.Dir("Inputs/Train"), nil) + + // this logic can be used to create train-test splits of a set of patterns: + // n := inputs.NumRows() + // order := rand.Perm(n) + // ntrn := int(0.85 * float64(n)) + // trnEnv := table.NewView(inputs) + // tstEnv := table.NewView(inputs) + // trnEnv.Indexes = order[:ntrn] + // tstEnv.Indexes = order[ntrn:] + + // note: names must be standard here! + trn.Name = Train.String() + trn.Config(table.NewView(inputs)) + trn.Validate() + + tst.Name = Test.String() + tst.Config(table.NewView(inputs)) + tst.Sequential = true + tst.Validate() + + trn.Init(0) + tst.Init(0) + + // note: names must be in place when adding + ss.Envs.Add(trn, tst) +} + +func (ss *Sim) ConfigNet(net *leabra.Network) { + // net.Context.SetThetaCycles(int32(ss.Config.Run.Cycles)). + // SetPlusCycles(int32(ss.Config.Run.PlusCycles)) + net.SetRandSeed(ss.RandSeeds[0]) // init new separate random seed, using run = 0 + + inp := net.AddLayer2D("Input", leabra.InputLayer, 5, 5) + hid1 := net.AddLayer2D("Hidden1", leabra.SuperLayer, ss.Config.Params.Hidden1Size.Y, ss.Config.Params.Hidden1Size.X) + hid2 := net.AddLayer2D("Hidden2", leabra.SuperLayer, ss.Config.Params.Hidden2Size.Y, ss.Config.Params.Hidden2Size.X) + out := net.AddLayer2D("Output", leabra.TargetLayer, 5, 5) + + // use this to position layers relative to each other + // hid2.PlaceRightOf(hid1, 2) + + // note: see emergent/path module for all the options on how to connect + // NewFull returns a new paths.Full connectivity pattern + full := paths.NewFull() + + net.ConnectLayers(inp, hid1, full, leabra.ForwardPath) + net.BidirConnectLayers(hid1, hid2, full) + net.BidirConnectLayers(hid2, out, full) + + // net.LateralConnectLayerPath(hid1, full, &leabra.HebbPath{}).SetType(InhibPath) + + // note: if you wanted to change a layer type from e.g., Target to Compare, do this: + // out.Type = leabra.CompareLayer + // that would mean that the output layer doesn't reflect target values in plus phase + // and thus removes error-driven learning -- but stats are still computed. + + net.Build() + net.Defaults() + ss.ApplyParams() + net.InitWeights() +} + +func (ss *Sim) ApplyParams() { + ss.Params.Script = ss.Config.Params.Script + ss.Params.ApplyAll(ss.Net) +} + +//////// Init, utils + +// Init restarts the run, and initializes everything, including network weights +// and resets the epoch log table +func (ss *Sim) Init() { + ss.Loops.ResetCounters() + ss.SetRunName() + ss.InitRandSeed(0) + // ss.ConfigEnv() // re-config env just in case a different set of patterns was + // selected or patterns have been modified etc + ss.ApplyParams() + ss.StatsInit() + ss.NewRun() + ss.TrainUpdate.RecordSyns() + ss.TrainUpdate.Update(Train, Trial) +} + +// InitRandSeed initializes the random seed based on current training run number +func (ss *Sim) InitRandSeed(run int) { + ss.RandSeeds.Set(run) + ss.RandSeeds.Set(run, &ss.Net.Rand) +} + +// CurrentMode returns the current Train / Test mode from Context. +func (ss *Sim) CurrentMode() Modes { + ctx := ss.Net.Context() + var md Modes + md.SetInt64(int64(ctx.Mode)) + return md +} + +// NetViewUpdater returns the NetViewUpdate for given mode. +func (ss *Sim) NetViewUpdater(mode enums.Enum) *leabra.NetViewUpdate { + if mode.Int64() == Train.Int64() { + return &ss.TrainUpdate + } + return &ss.TestUpdate +} + +// ConfigLoops configures the control loops: Training, Testing +func (ss *Sim) ConfigLoops() { + ls := looper.NewStacks() + + trials := ss.Config.Run.Trials + cycles := ss.Config.Run.Cycles + plusPhase := ss.Config.Run.PlusCycles + + ls.AddStack(Train, Trial). + AddLevel(Expt, 1). + AddLevel(Run, ss.Config.Run.Runs). + AddLevel(Epoch, ss.Config.Run.Epochs). + AddLevel(Trial, trials). + AddLevel(Cycle, cycles) + + ls.AddStack(Test, Trial). + AddLevel(Epoch, 1). + AddLevel(Trial, trials). + AddLevel(Cycle, cycles) + + leabra.LooperStandard(ls, ss.Net, ss.NetViewUpdater, cycles-plusPhase, cycles-1, Cycle, Trial, Train) + + ls.Stacks[Train].OnInit.Add("Init", func() { ss.Init() }) + + ls.AddOnStartToLoop(Trial, "ApplyInputs", func(mode enums.Enum) { + ss.ApplyInputs(mode.(Modes)) + }) + + ls.Loop(Train, Run).OnStart.Add("NewRun", ss.NewRun) + + trainEpoch := ls.Loop(Train, Epoch) + trainEpoch.IsDone.AddBool("NZeroStop", func() bool { + stopNz := ss.Config.Run.NZero + if stopNz <= 0 { + return false + } + curModeDir := ss.Current.Dir(Train.String()) + curNZero := int(curModeDir.Value("NZero").Float1D(-1)) + stop := curNZero >= stopNz + return stop + return false + }) + + trainEpoch.OnStart.Add("TestAtInterval", func() { + if (ss.Config.Run.TestInterval > 0) && ((trainEpoch.Counter.Cur+1)%ss.Config.Run.TestInterval == 0) { + ss.TestAll() + } + }) + + ls.AddOnStartToAll("StatsStart", ss.StatsStart) + ls.AddOnEndToAll("StatsStep", ss.StatsStep) + + ls.Loop(Train, Run).OnEnd.Add("SaveWeights", func() { + ctrString := fmt.Sprintf("%03d_%05d", ls.Loop(Train, Run).Counter.Cur, ls.Loop(Train, Epoch).Counter.Cur) + leabra.SaveWeightsIfConfigSet(ss.Net, ss.Config.Log.SaveWeights, ctrString, ss.RunName()) + }) + + if ss.Config.GUI { + leabra.LooperUpdateNetView(ls, Cycle, Trial, ss.NetViewUpdater) + + ls.Stacks[Train].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) + ls.Stacks[Test].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) + } + + if ss.Config.Debug { + mpi.Println(ls.DocString()) + } + ss.Loops = ls +} + +// ApplyInputs applies input patterns from given environment for given mode. +// Any other start-of-trial logic can also be put here. +func (ss *Sim) ApplyInputs(mode Modes) { + net := ss.Net + curModeDir := ss.Current.Dir(mode.String()) + ev := ss.Envs.ByMode(mode) + lays := net.LayersByType(leabra.InputLayer, leabra.TargetLayer) + net.InitExt() + ev.Step() + curModeDir.StringValue("TrialName", 1).SetString1D(ev.String(), 0) + for _, lnm := range lays { + ly := ss.Net.LayerByName(lnm) + st := ev.State(ly.Name) + if st != nil { + ly.ApplyExt(st) + } + } + net.ApplyExts() +} + +// NewRun intializes a new Run level of the model. +func (ss *Sim) NewRun() { + ctx := ss.Net.Context() + ss.InitRandSeed(ss.Loops.Loop(Train, Run).Counter.Cur) + ss.Envs.ByMode(Train).Init(0) + ss.Envs.ByMode(Test).Init(0) + ctx.Reset() + ss.Net.InitWeights() + if ss.Config.Run.StartWeights != "" { + ss.Net.OpenWeightsJSON(core.Filename(ss.Config.Run.StartWeights)) + mpi.Printf("Starting with initial weights from: %s\n", ss.Config.Run.StartWeights) + } +} + +// TestAll runs through the full set of testing items +func (ss *Sim) TestAll() { + ss.Envs.ByMode(Test).Init(0) + ss.Loops.ResetAndRun(Test) + ss.Loops.Mode = Train // important because this is called from Train Run: go back. +} + +//////// Inputs + +func (ss *Sim) ConfigInputs() { + dt := table.New() + metadata.SetName(dt, "Train") + metadata.SetDoc(dt, "Training inputs") + dt.AddStringColumn("Name") + dt.AddFloat32Column("Input", 5, 5) + dt.AddFloat32Column("Output", 5, 5) + dt.SetNumRows(25) + + patterns.PermutedBinaryMinDiff(dt.Columns.Values[1], 6, 1, 0, 3) + patterns.PermutedBinaryMinDiff(dt.Columns.Values[2], 6, 1, 0, 3) + dt.SaveCSV("random_5x5_25_gen.tsv", tensor.Tab, table.Headers) + + tensorfs.DirFromTable(ss.Root.Dir("Inputs/Train"), dt) +} + +// OpenTable opens a [table.Table] from embedded content, storing +// the data in the given tensorfs directory. +func (ss *Sim) OpenTable(dir *tensorfs.Node, fsys fs.FS, fnm, name, docs string) (*table.Table, error) { + dt := table.New() + metadata.SetName(dt, name) + metadata.SetDoc(dt, docs) + err := dt.OpenFS(content, fnm, tensor.Tab) + if errors.Log(err) != nil { + return dt, err + } + tensorfs.DirFromTable(dir.Dir(name), dt) + return dt, err +} + +func (ss *Sim) OpenInputs() { + dir := ss.Root.Dir("Inputs") + ss.OpenTable(dir, content, "random_5x5_25.tsv", "Train", "Training inputs") +} + +//////// Stats + +// AddStat adds a stat compute function. +func (ss *Sim) AddStat(f func(mode Modes, level Levels, phase StatsPhase)) { + ss.StatFuncs = append(ss.StatFuncs, f) +} + +// StatsStart is called by Looper at the start of given level, for each iteration. +// It needs to call RunStats Start at the next level down. +// e.g., each Epoch is the start of the full set of Trial Steps. +func (ss *Sim) StatsStart(lmd, ltm enums.Enum) { + mode := lmd.(Modes) + level := ltm.(Levels) + if level <= Trial { + return + } + ss.RunStats(mode, level-1, Start) +} + +// StatsStep is called by Looper at each step of iteration, +// where it accumulates the stat results. +func (ss *Sim) StatsStep(lmd, ltm enums.Enum) { + mode := lmd.(Modes) + level := ltm.(Levels) + if level == Cycle { + return + } + ss.RunStats(mode, level, Step) + tensorfs.DirTable(leabra.StatsNode(ss.Stats, mode, level), nil).WriteToLog() +} + +// RunStats runs the StatFuncs for given mode, level and phase. +func (ss *Sim) RunStats(mode Modes, level Levels, phase StatsPhase) { + for _, sf := range ss.StatFuncs { + sf(mode, level, phase) + } + if phase == Step && ss.GUI.Tabs != nil { + nm := mode.String() + " " + level.String() + " Plot" + ss.GUI.Tabs.AsLab().GoUpdatePlot(nm) + if level == Run { + ss.GUI.Tabs.AsLab().GoUpdatePlot("Train RunAll Plot") + } + } +} + +// SetRunName sets the overall run name, used for naming output logs and weight files +// based on params extra sheets and tag, and starting run number (for distributed runs). +func (ss *Sim) SetRunName() string { + runName := ss.Params.RunName(ss.Config.Run.Run) + ss.Current.StringValue("RunName", 1).SetString1D(runName, 0) + return runName +} + +// RunName returns the overall run name, used for naming output logs and weight files +// based on params extra sheets and tag, and starting run number (for distributed runs). +func (ss *Sim) RunName() string { + return ss.Current.StringValue("RunName", 1).String1D(0) +} + +// StatsInit initializes all the stats by calling Start across all modes and levels. +func (ss *Sim) StatsInit() { + for md, st := range ss.Loops.Stacks { + mode := md.(Modes) + for _, lev := range st.Order { + level := lev.(Levels) + if level == Cycle { + continue + } + ss.RunStats(mode, level, Start) + } + } + if ss.GUI.Tabs != nil { + tbs := ss.GUI.Tabs.AsLab() + _, idx := tbs.CurrentTab() + tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Train, Epoch)) + tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Train, Run)) + tbs.PlotTensorFS(leabra.StatsNode(ss.Stats, Test, Trial)) + tbs.PlotTensorFS(ss.Stats.Dir("Train/RunAll")) + tbs.SelectTabIndex(idx) + } +} + +// ConfigStats handles configures functions to do all stats computation +// in the tensorfs system. +func (ss *Sim) ConfigStats() { + net := ss.Net + ss.Stats = ss.Root.Dir("Stats") + ss.Current = ss.Stats.Dir("Current") + + ss.SetRunName() + + // last arg(s) are levels to exclude + counterFunc := leabra.StatLoopCounters(ss.Stats, ss.Current, ss.Loops, net, Trial, Cycle) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + counterFunc(mode, level, phase == Start) + }) + runNameFunc := leabra.StatRunName(ss.Stats, ss.Current, ss.Loops, net, Trial, Cycle) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + runNameFunc(mode, level, phase == Start) + }) + trialNameFunc := leabra.StatTrialName(ss.Stats, ss.Current, ss.Loops, net, Trial) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + trialNameFunc(mode, level, phase == Start) + }) + + // up to a point, it is good to use loops over stats in one function, + // to reduce repetition of boilerplate. + statNames := []string{"CorSim", "SSE", "AvgSSE", "Err", "NZero", "FirstZero", "LastZero"} + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + for _, name := range statNames { + if name == "NZero" && (mode != Train || level == Trial) { + return + } + ndata := 1 + modeDir := ss.Stats.Dir(mode.String()) + curModeDir := ss.Current.Dir(mode.String()) + levelDir := modeDir.Dir(level.String()) + subDir := modeDir.Dir((level - 1).String()) // note: will fail for Cycle + tsr := levelDir.Float64(name) + var stat float64 + if phase == Start { + tsr.SetNumRows(0) + plot.SetFirstStyler(tsr, func(s *plot.Style) { + s.Range.SetMin(0).SetMax(1) + s.On = true + switch name { + case "NZero": + s.On = false + case "FirstZero", "LastZero": + if level < Run { + s.On = false + } + } + }) + switch name { + case "NZero": + if level == Epoch { + curModeDir.Float64(name, 1).SetFloat1D(0, 0) + } + case "FirstZero", "LastZero": + if level == Epoch { + curModeDir.Float64(name, 1).SetFloat1D(-1, 0) + } + } + continue + } + switch level { + case Trial: + out := ss.Net.LayerByName("Output") + var stat float64 + switch name { + case "CorSim": + stat = 1.0 - float64(out.CosDiff.Cos) + // case "UnitErr": + // stat = out.PctUnitErr(ss.Net.Context())[0] + case "SSE": + sse, avgsse := out.MSE(0.5) // 0.5 = per-unit tolerance + stat = sse + curModeDir.Float64("AvgSSE", ndata).SetFloat1D(avgsse, 0) + case "AvgSSE": + stat = curModeDir.Float64("AvgSSE", ndata).Float1D(0) + case "Err": + uniterr := curModeDir.Float64("SSE", ndata).Float1D(0) + stat = 1.0 + if uniterr == 0 { + stat = 0 + } + } + curModeDir.Float64(name, ndata).SetFloat1D(stat, 0) + tsr.AppendRowFloat(stat) + case Epoch: + nz := curModeDir.Float64("NZero", 1).Float1D(0) + switch name { + case "NZero": + err := stats.StatSum.Call(subDir.Value("Err")).Float1D(0) + stat = curModeDir.Float64(name, 1).Float1D(0) + if err == 0 { + stat++ + } else { + stat = 0 + } + curModeDir.Float64(name, 1).SetFloat1D(stat, 0) + case "FirstZero": + stat = curModeDir.Float64(name, 1).Float1D(0) + if stat < 0 && nz == 1 { + stat = curModeDir.Int("Epoch", 1).Float1D(0) + } + curModeDir.Float64(name, 1).SetFloat1D(stat, 0) + case "LastZero": + stat = curModeDir.Float64(name, 1).Float1D(0) + if stat < 0 && nz >= float64(ss.Config.Run.NZero) { + stat = curModeDir.Int("Epoch", 1).Float1D(0) + } + curModeDir.Float64(name, 1).SetFloat1D(stat, 0) + default: + stat = stats.StatMean.Call(subDir.Value(name)).Float1D(0) + } + tsr.AppendRowFloat(stat) + case Run: + stat = stats.StatFinal.Call(subDir.Value(name)).Float1D(0) + tsr.AppendRowFloat(stat) + default: // Expt + stat = stats.StatMean.Call(subDir.Value(name)).Float1D(0) + tsr.AppendRowFloat(stat) + } + } + }) + + perTrlFunc := leabra.StatPerTrialMSec(ss.Stats, Train, Trial) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + perTrlFunc(mode, level, phase == Start) + }) + + lays := net.LayersByType(leabra.SuperLayer, leabra.CTLayer, leabra.TargetLayer) + actGeFunc := leabra.StatLayerActGe(ss.Stats, net, Train, Trial, Run, lays...) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + actGeFunc(mode, level, phase == Start) + }) + + pcaFunc := leabra.StatPCA(ss.Stats, ss.Current, net, ss.Config.Run.PCAInterval, Train, Trial, Run, lays...) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + trnEpc := ss.Loops.Loop(Train, Epoch).Counter.Cur + pcaFunc(mode, level, phase == Start, trnEpc) + }) + + stateFunc := leabra.StatLayerState(ss.Stats, net, Test, Trial, true, "ActM", "Input", "Output") + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + stateFunc(mode, level, phase == Start) + }) + + runAllFunc := leabra.StatLevelAll(ss.Stats, Train, Run, func(s *plot.Style, cl tensor.Values) { + name := metadata.Name(cl) + switch name { + case "FirstZero", "LastZero": + s.On = true + s.Range.SetMin(0) + } + }) + ss.AddStat(func(mode Modes, level Levels, phase StatsPhase) { + runAllFunc(mode, level, phase == Start) + }) +} + +// StatCounters returns counters string to show at bottom of netview. +func (ss *Sim) StatCounters(mode, level enums.Enum) string { + counters := ss.Loops.Stacks[mode].CountersString() + vu := ss.NetViewUpdater(mode) + if vu == nil || vu.View == nil { + return counters + } + di := vu.View.Di + curModeDir := ss.Current.Dir(mode.String()) + if curModeDir.Node("TrialName") == nil { + return counters + } + counters += fmt.Sprintf(" TrialName: %s", curModeDir.StringValue("TrialName").String1D(di)) + statNames := []string{"CorSim", "SSE", "Err"} + if level == Cycle || curModeDir.Node(statNames[0]) == nil { + return counters + } + for _, name := range statNames { + counters += fmt.Sprintf(" %s: %.4g", name, curModeDir.Float64(name).Float1D(di)) + } + return counters +} + +//////// GUI + +// ConfigGUI configures the Cogent Core GUI interface for this simulation. +func (ss *Sim) ConfigGUI(b tree.Node) { + ss.GUI.MakeBody(b, ss, ss.Root, ss.Config.Name, ss.Config.Title, ss.Config.Doc) + ss.GUI.StopLevel = Trial + nv := ss.GUI.AddNetView("Network") + nv.Options.MaxRecs = 2 * ss.Config.Run.Cycles + nv.Options.Raster.Max = ss.Config.Run.Cycles + nv.SetNet(ss.Net) + ss.TrainUpdate.Config(nv, leabra.Phase, ss.StatCounters) + ss.TestUpdate.Config(nv, leabra.Phase, ss.StatCounters) + ss.GUI.OnStop = func(mode, level enums.Enum) { + vu := ss.NetViewUpdater(mode) + vu.UpdateWhenStopped(mode, level) + } + + nv.SceneXYZ().Camera.Pose.Pos.Set(0, 1, 2.75) + nv.SceneXYZ().Camera.LookAt(math32.Vec3(0, 0, 0), math32.Vec3(0, 1, 0)) + + ss.StatsInit() + ss.GUI.FinalizeGUI(false) +} + +func (ss *Sim) MakeToolbar(p *tree.Plan) { + ss.GUI.AddLooperCtrl(p, ss.Loops) + + tree.Add(p, func(w *core.Separator) {}) + ss.GUI.AddToolbarItem(p, egui.ToolbarItem{ + Label: "New Seed", + Icon: icons.Add, + Tooltip: "Generate a new initial random seed to get different results. By default, Init re-establishes the same initial seed every time.", + Active: egui.ActiveAlways, + Func: func() { + ss.RandSeeds.NewSeeds() + }, + }) + ss.GUI.AddToolbarItem(p, egui.ToolbarItem{ + Label: "README", + Icon: icons.FileMarkdown, + Tooltip: "Opens your browser on the README file that contains instructions for how to run this model.", + Active: egui.ActiveAlways, + Func: func() { + core.TheApp.OpenURL(ss.Config.URL) + }, + }) +} + +func (ss *Sim) RunGUI() { + ss.Init() + ss.ConfigGUI(nil) + ss.GUI.Body.RunMainWindow() +} + +func (ss *Sim) RunNoGUI() { + ss.Init() + + if ss.Config.Params.Note != "" { + mpi.Printf("Note: %s\n", ss.Config.Params.Note) + } + if ss.Config.Log.SaveWeights { + mpi.Printf("Saving final weights per run\n") + } + + runName := ss.SetRunName() + netName := ss.Net.Name + cfg := &ss.Config.Log + leabra.OpenLogFiles(ss.Loops, ss.Stats, netName, runName, [][]string{cfg.Train, cfg.Test}) + + mpi.Printf("Running %d Runs starting at %d\n", ss.Config.Run.Runs, ss.Config.Run.Run) + ss.Loops.Loop(Train, Run).Counter.SetCurMaxPlusN(ss.Config.Run.Run, ss.Config.Run.Runs) + + ss.Loops.Run(Train) + + leabra.CloseLogFiles(ss.Loops, ss.Stats, Cycle) +} diff --git a/sims/ra25/random_5x5_25.tsv b/sims/ra25/random_5x5_25.tsv new file mode 100644 index 0000000..95a6852 --- /dev/null +++ b/sims/ra25/random_5x5_25.tsv @@ -0,0 +1,26 @@ +_H: $Name %Input[2:0,0]<2:5,5> %Input[2:1,0] %Input[2:2,0] %Input[2:3,0] %Input[2:4,0] %Input[2:0,1] %Input[2:1,1] %Input[2:2,1] %Input[2:3,1] %Input[2:4,1] %Input[2:0,2] %Input[2:1,2] %Input[2:2,2] %Input[2:3,2] %Input[2:4,2] %Input[2:0,3] %Input[2:1,3] %Input[2:2,3] %Input[2:3,3] %Input[2:4,3] %Input[2:0,4] %Input[2:1,4] %Input[2:2,4] %Input[2:3,4] %Input[2:4,4] %Output[2:0,0]<2:5,5> %Output[2:1,0] %Output[2:2,0] %Output[2:3,0] %Output[2:4,0] %Output[2:0,1] %Output[2:1,1] %Output[2:2,1] %Output[2:3,1] %Output[2:4,1] %Output[2:0,2] %Output[2:1,2] %Output[2:2,2] %Output[2:3,2] %Output[2:4,2] %Output[2:0,3] %Output[2:1,3] %Output[2:2,3] %Output[2:3,3] %Output[2:4,3] %Output[2:0,4] %Output[2:1,4] %Output[2:2,4] %Output[2:3,4] %Output[2:4,4] +_D: "evt_0" 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 +_D: "evt_1" 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 +_D: "evt_2" 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 +_D: "evt_3" 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 +_D: "evt_4" 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 +_D: "evt_5" 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 +_D: "evt_6" 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 +_D: "evt_7" 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +_D: "evt_8" 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 +_D: "evt_9" 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 +_D: "evt_10" 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 +_D: "evt_11" 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 +_D: "evt_12" 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 +_D: "evt_13" 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 +_D: "evt_14" 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 +_D: "evt_15" 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 +_D: "evt_16" 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 +_D: "evt_17" 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 +_D: "evt_18" 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 +_D: "evt_19" 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 +_D: "evt_20" 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 +_D: "evt_21" 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 +_D: "evt_22" 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 +_D: "evt_23" 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 +_D: "evt_24" 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 diff --git a/sims/ra25/typegen.go b/sims/ra25/typegen.go new file mode 100644 index 0000000..1d32206 --- /dev/null +++ b/sims/ra25/typegen.go @@ -0,0 +1,29 @@ +// Code generated by "core generate -add-types -add-funcs -gosl"; DO NOT EDIT. + +package ra25 + +import ( + "cogentcore.org/core/types" +) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/sims/ra25.ParamConfig", IDName: "param-config", Doc: "ParamConfig has config parameters related to sim params.", Fields: []types.Field{{Name: "Hidden1Size", Doc: "Hidden1Size is the size of hidden 1 layer."}, {Name: "Hidden2Size", Doc: "Hidden2Size is the size of hidden 2 layer."}, {Name: "Script", Doc: "Script is an interpreted script that is run to set parameters in Layer and Path\nsheets, by default using the \"Script\" set name."}, {Name: "Sheet", Doc: "Sheet is the extra params sheet name(s) to use (space separated\nif multiple). Must be valid name as listed in compiled-in params\nor loaded params."}, {Name: "Tag", Doc: "Tag is an extra tag to add to file names and logs saved from this run."}, {Name: "Note", Doc: "Note is additional info to describe the run params etc,\nlike a git commit message for the run."}, {Name: "SaveAll", Doc: "SaveAll will save a snapshot of all current param and config settings\nin a directory named params_ (or _good if Good is true),\nthen quit. Useful for comparing to later changes and seeing multiple\nviews of current params."}, {Name: "Good", Doc: "Good is for SaveAll, save to params_good for a known good params state.\nThis can be done prior to making a new release after all tests are passing.\nAdd results to git to provide a full diff record of all params over level."}}}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/sims/ra25.RunConfig", IDName: "run-config", Doc: "RunConfig has config parameters related to running the sim.", Fields: []types.Field{{Name: "Run", Doc: "Run is the _starting_ run number, which determines the random seed.\nRuns counts up from there. Can do all runs in parallel by launching\nseparate jobs with each starting Run, Runs = 1."}, {Name: "Runs", Doc: "Runs is the total number of runs to do when running Train, starting from Run."}, {Name: "Epochs", Doc: "Epochs is the total number of epochs per run."}, {Name: "Trials", Doc: "Trials is the total number of trials per epoch.\nShould be an even multiple of NData."}, {Name: "Cycles", Doc: "Cycles is the total number of cycles per trial: at least 200."}, {Name: "PlusCycles", Doc: "PlusCycles is the total number of plus-phase cycles per trial. For Cycles=300, use 100."}, {Name: "NZero", Doc: "NZero is how many perfect, zero-error epochs before stopping a Run."}, {Name: "TestInterval", Doc: "TestInterval is how often (in epochs) to run through all the test patterns,\nin terms of training epochs. Can use 0 or -1 for no testing."}, {Name: "PCAInterval", Doc: "PCAInterval is how often (in epochs) to compute PCA on hidden\nrepresentations to measure variance."}, {Name: "StartWeights", Doc: "StartWeights is the name of weights file to load at start of first run."}}}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/sims/ra25.LogConfig", IDName: "log-config", Doc: "LogConfig has config parameters related to logging data.", Fields: []types.Field{{Name: "SaveWeights", Doc: "SaveWeights will save final weights after each run."}, {Name: "Train", Doc: "Train has the list of Train mode levels to save log files for."}, {Name: "Test", Doc: "Test has the list of Test mode levels to save log files for."}}}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/sims/ra25.Config", IDName: "config", Doc: "Config has the overall Sim configuration options.", Fields: []types.Field{{Name: "Name", Doc: "Name is the short name of the sim."}, {Name: "Title", Doc: "Title is the longer title of the sim."}, {Name: "URL", Doc: "URL is a link to the online README or other documentation for this sim."}, {Name: "Doc", Doc: "Doc is brief documentation of the sim."}, {Name: "Includes", Doc: "Includes has a list of additional config files to include.\nAfter configuration, it contains list of include files added."}, {Name: "GUI", Doc: "GUI means open the GUI. Otherwise it runs automatically and quits,\nsaving results to log files."}, {Name: "Debug", Doc: "Debug reports debugging information."}, {Name: "Params", Doc: "Params has parameter related configuration options."}, {Name: "Run", Doc: "Run has sim running related configuration options."}, {Name: "Log", Doc: "Log has data logging related configuration options."}}}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/sims/ra25.Modes", IDName: "modes", Doc: "Modes are the looping modes (Stacks) for running and statistics."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/sims/ra25.Levels", IDName: "levels", Doc: "Levels are the looping levels for running and statistics."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/sims/ra25.StatsPhase", IDName: "stats-phase", Doc: "StatsPhase is the phase of stats processing for given mode, level.\nAccumulated values are reset at Start, added each Step."}) + +var _ = types.AddType(&types.Type{Name: "github.com/emer/leabra/v2/sims/ra25.Sim", IDName: "sim", Doc: "Sim encapsulates the entire simulation model, and we define all the\nfunctionality as methods on this struct. This structure keeps all relevant\nstate information organized and available without having to pass everything around\nas arguments to methods, and provides the core GUI interface (note the view tags\nfor the fields which provide hints to how things should be displayed).", Fields: []types.Field{{Name: "Config", Doc: "simulation configuration parameters -- set by .toml config file and / or args"}, {Name: "Net", Doc: "Net is the network: click to view / edit parameters for layers, paths, etc."}, {Name: "Params", Doc: "Params manages network parameter setting."}, {Name: "Loops", Doc: "Loops are the control loops for running the sim, in different Modes\nacross stacks of Levels."}, {Name: "Envs", Doc: "Envs provides mode-string based storage of environments."}, {Name: "TrainUpdate", Doc: "TrainUpdate has Train mode netview update parameters."}, {Name: "TestUpdate", Doc: "TestUpdate has Test mode netview update parameters."}, {Name: "Root", Doc: "Root is the root tensorfs directory, where all stats and other misc sim data goes."}, {Name: "Stats", Doc: "Stats has the stats directory within Root."}, {Name: "Current", Doc: "Current has the current stats values within Stats."}, {Name: "StatFuncs", Doc: "StatFuncs are statistics functions called at given mode and level,\nto perform all stats computations. phase = Start does init at start of given level,\nand all intialization / configuration (called during Init too)."}, {Name: "GUI", Doc: "GUI manages all the GUI elements"}, {Name: "RandSeeds", Doc: "RandSeeds is a list of random seeds to use for each run."}}}) + +var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/sims/ra25.NewConfig", Returns: []string{"Config"}}) + +var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/sims/ra25.RunSim", Doc: "RunSim runs the simulation as a standalone app\nwith given configuration.", Args: []string{"cfg"}, Returns: []string{"error"}}) + +var _ = types.AddFunc(&types.Func{Name: "github.com/emer/leabra/v2/sims/ra25.EmbedSim", Doc: "EmbedSim runs the simulation with default configuration\nembedded within given body element.", Args: []string{"b"}, Returns: []string{"Sim"}}) From 7129e7aadd62c9512babd4ccfe83917f80de8a5f Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Wed, 9 Jul 2025 16:15:04 -0700 Subject: [PATCH 05/14] lab: ra readme --- sims/ra25/README.md | 64 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 sims/ra25/README.md diff --git a/sims/ra25/README.md b/sims/ra25/README.md new file mode 100644 index 0000000..c19f935 --- /dev/null +++ b/sims/ra25/README.md @@ -0,0 +1,64 @@ +# Leabra Random Associator 25 Example + +This example project serves as a demo and basic template for Leabra models -- you can use this as a starting point for creating your own models. It has been constructed to illustrate the most common types of functionality needed across models, to facilitate copy-paste programming. + +# Running the model + +Leabra and emergent use the [Cogent Core](https://cogentcore.org/core) GUI framework. See [install](https://www.cogentcore.org/core/setup/install) instructions there. Once those prerequisites are in place, then the simplest way to run a simulation is: + +```sh +$ core run [platform] +``` + +where `[platform]` is optional (defaults to your local system), and can include `android`, `ios` and `web`! + +## Basic running and graphing + +The basic interface has a toolbar across the top, a set of `Sim` fields on the left, and a tab bar with the network view and various log graphs on the right. The toolbar actions all have tooltips so just hover over those to see what they do. To speed up processing, you'll want to either turn off the `ViewOn` flag or switch to a graph tab instead of the `NetVew` tab. + +## Testing + +The Test* buttons allow you to test items, including a specifically chosen item, without having any effect on the ongoing training. This is one advantage of the [Env](https://github.com/emer/emergent/wiki/Env) interface, which keeps all the counters associated with training and testing separate. + +The NetView will show cycle-by-cycle updates during testing, and you can see the temporal evolution of the activities in the `TstCycPlot`. If you do `TestAll` and look at the `TstTrlPlot` you can see the current performance on every item. Meanwhile, if you click on the `TstTrlLog` button at the left, you can see the input / output activations for each item in a TableView, and the `TstErrLog` button likewise shows the same thing but filtered to only show those trials that have an error. `TstErrStats` computes some stats on those error trials -- not super meaningful here but could be in other more structured environments, and the code that does all this shows how to do all of this kind of data analysis using the [etable.Table](https://github.com/emer/etable) system, which is similar to the widely used pandas DataFrame structure in Python, and is the updated version of the `DataTable` from C++ emergent. + +## Parameter searching + +Clicking on the `Params` button will pull up a set of parameters, the design and use of which are explained in detail on the wiki page: [Params](https://github.com/emer/emergent/wiki/Params). When you hit `Init`, the `Base` ParamSet is always applied, and then if you enter the name of another ParamSet in the `ParamSet` field, that will then be applied after the Base, thereby overwriting those base default params with other ones to explore. + +To see any non-default parameter settings, the `Non Def Params` button in the NetView toolbar will show you those, and the `All Params` button will show you *all* of the parameters for every layer and projection in the network. This is a good way to see all the parameters that are available. + +To determine the real performance impact of any of the params, you typically need to collect stats over multiple runs. To see how this works, try the following: + +* Click on the `RunPlot` tab and hit `ResetRunLog` for good measure. +* Init with `ParamSet` = empty, and do `Train` and let it run all 10 runs. By default, it plots the epoch at which the network first hit 0 errors (`FirstZero`), which is as good a measure as any of overall learning speed. +* When it finishes, you can click on the `RunStats` Table to see the summary stats for FirstZero and the average over the last 10 epochs of `PctCor`, and it labels this as using the Base params. +* Now enter `NoMomentum` in the `ParamSet`, `Init` and `Train` again. Then click on the `RunStats` table button again (it generates a new one after every complete set of runs, so you can just close the old one -- it won't Update to show new results). You can now directly compare e.g., the Mean FirstZero Epoch, and see that the `Base` params are slightly faster than `NoMomentum`. +* Now you can go back to the params, duplicate one of the sets, and start entering your own custom set of params to explore, and see if you can beat the Base settings! Just click on the `*params.Sel` button after `Network` to get the actual parameters being set, which are contained in that named `Sheet`. +* Click on the `Net` button on the left and then on one of the layers, and so-on into the parameters at the layer level (`Act`, `Inhib`, `Learn`), and if you click on one of the `Prjn`s, you can see parameters at the projection level in `Learn`. You should be able to see the path for specifying any of these params in the Params sets. +* We are planning to add a function that will show you the path to any parameter via a context-menu action on its label.. + +## Running from command line + +Type this at the command line: +```bash +./ra25 -help +``` + +To see a list of args that you can pass -- passing any arg will cause the model to run without the gui, and save log files and, optionally, final weights files for each run. + +# Code organization and notes + +Most of the code is commented and should be read directly for how to do things. Here are just a few general organizational notes about code structure overall. + +* Good idea to keep all the code in one file so it is easy to share with others, although fine to split up too if it gets too big -- e.g., logging takes a lot of space and could be put in a separate file. + +* In Go, you can organize things however you want -- there are no constraints on order in Go code. + +* The GUI config and elements are all optional and the -nogui startup arg, along with other args, allows the model to be run without the gui. + +* If there is a more complex environment associated with the model, always put it in a separate file, so it can more easily be re-used across other models. + +* The params editor can easily save to a file, default named "params.go" with name `SavedParamsSets` -- you can switch your project to using that as its default set of params to then easily always be using whatever params were saved last. + + From 177d37c6d766f206cc8d55a1e8c4f8bb3e21a9f4 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Thu, 10 Jul 2025 01:23:10 -0700 Subject: [PATCH 06/14] lab: update to lab that allows running on web. --- go.mod | 8 +------- go.sum | 26 ++------------------------ 2 files changed, 3 insertions(+), 31 deletions(-) diff --git a/go.mod b/go.mod index 5da942c..4906598 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.23.4 require ( cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3 - cogentcore.org/lab v0.1.2-0.20250709195455-46e9671330e5 + cogentcore.org/lab v0.1.2-0.20250710081903-2bcb29696f25 github.com/cogentcore/yaegi v0.0.0-20250622201820-b7838bdd95eb github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80 @@ -13,22 +13,17 @@ require ( require ( github.com/Bios-Marcel/wastebasket/v2 v2.0.3 // indirect github.com/Masterminds/vcs v1.13.3 // indirect - github.com/adrg/strutil v0.3.1 // indirect github.com/alecthomas/chroma/v2 v2.13.0 // indirect github.com/anthonynsimon/bild v0.13.0 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect - github.com/bramvdbogaerde/go-scp v1.4.0 // indirect github.com/chewxy/math32 v1.10.1 // indirect - github.com/cogentcore/readline v0.1.3 // indirect github.com/cogentcore/webgpu v0.23.0 // indirect github.com/dlclark/regexp2 v1.11.0 // indirect - github.com/ericchiang/css v1.3.0 // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect github.com/go-text/typesetting v0.3.1-0.20250402122313-7a0f05577ff5 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/gomarkdown/markdown v0.0.0-20250311123330-531bef5e742b // indirect github.com/gorilla/css v1.0.1 // indirect github.com/h2non/filetype v1.1.3 // indirect github.com/hack-pad/go-indexeddb v0.3.2 // indirect @@ -44,7 +39,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.2-0.20240227203013-2b69615b5d55 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/tdewolff/parse/v2 v2.7.19 // indirect - golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c // indirect golang.org/x/image v0.25.0 // indirect golang.org/x/mod v0.25.0 // indirect diff --git a/go.sum b/go.sum index 3dcbe46..470cca0 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,12 @@ cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3 h1:5rnkjHt+D9iQKjEhpgkc2FH5E/biP88BOS0mq2Jb0hw= cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3/go.mod h1:1C0LnfjobosaRX6VqVz6O+ZJ6k85su3Ixx1FQPHSHIk= -cogentcore.org/lab v0.1.2-0.20250709195455-46e9671330e5 h1:2m7Foi7QBw2MQDFg083UdpgG50RuxnvJyCVgd2E1wyo= -cogentcore.org/lab v0.1.2-0.20250709195455-46e9671330e5/go.mod h1:9syt/RnqZ1KhL66XHCAZNXfnXIgzkUHhmA85aqEL7I4= +cogentcore.org/lab v0.1.2-0.20250710081903-2bcb29696f25 h1:a0bp/xwQEwS8+pTgYobrKg4Rb5R/t5XZCU8ToKs4aiw= +cogentcore.org/lab v0.1.2-0.20250710081903-2bcb29696f25/go.mod h1:9syt/RnqZ1KhL66XHCAZNXfnXIgzkUHhmA85aqEL7I4= github.com/Bios-Marcel/wastebasket/v2 v2.0.3 h1:TkoDPcSqluhLGE+EssHu7UGmLgUEkWg7kNyHyyJ3Q9g= github.com/Bios-Marcel/wastebasket/v2 v2.0.3/go.mod h1:769oPCv6eH7ugl90DYIsWwjZh4hgNmMS3Zuhe1bH6KU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Masterminds/vcs v1.13.3 h1:IIA2aBdXvfbIM+yl/eTnL4hb1XwdpvuQLglAix1gweE= github.com/Masterminds/vcs v1.13.3/go.mod h1:TiE7xuEjl1N4j016moRd6vezp6e6Lz23gypeXfzXeW8= -github.com/adrg/strutil v0.3.1 h1:OLvSS7CSJO8lBii4YmBt8jiK9QOtB9CzCzwl4Ic/Fz4= -github.com/adrg/strutil v0.3.1/go.mod h1:8h90y18QLrs11IBffcGX3NW/GFBXCMcNg4M7H6MspPA= github.com/alecthomas/assert/v2 v2.6.0 h1:o3WJwILtexrEUk3cUVal3oiQY2tfgr/FHWiz/v2n4FU= github.com/alecthomas/assert/v2 v2.6.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.13.0 h1:VP72+99Fb2zEcYM0MeaWJmV+xQvz5v5cxRHd+ooU1lI= @@ -22,12 +20,8 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiE github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= -github.com/bramvdbogaerde/go-scp v1.4.0 h1:jKMwpwCbcX1KyvDbm/PDJuXcMuNVlLGi0Q0reuzjyKY= -github.com/bramvdbogaerde/go-scp v1.4.0/go.mod h1:on2aH5AxaFb2G0N5Vsdy6B0Ml7k9HuHSwfo1y0QzAbQ= github.com/chewxy/math32 v1.10.1 h1:LFpeY0SLJXeaiej/eIp2L40VYfscTvKh/FSEZ68uMkU= github.com/chewxy/math32 v1.10.1/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= -github.com/cogentcore/readline v0.1.3 h1:tYmjP3XHvsGwhsDLkAp+vBhkERmLFENZfftyPOR/PBE= -github.com/cogentcore/readline v0.1.3/go.mod h1:IHVtJHSKXspK7CMg3OC/bbPEXxO++dFlug/vsPktvas= github.com/cogentcore/webgpu v0.23.0 h1:hrjnnuDZAPSRsqBjQAsJOyg2COGztIkBbxL87r0Q9KE= github.com/cogentcore/webgpu v0.23.0/go.mod h1:ciqaxChrmRRMU1SnI5OE12Cn3QWvOKO+e5nSy+N9S1o= github.com/cogentcore/yaegi v0.0.0-20250622201820-b7838bdd95eb h1:vXYqPLO36pRyyk1cVILVlk+slDI+Q7N4bgeWlh1sjA0= @@ -46,8 +40,6 @@ github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f h1:w1K github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f/go.mod h1:frNe9pJ4gUCjeuDQoz/qtHQeKviDZTmrpuKetfT54qg= github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80 h1:wi1b32KLdolICuwNcv3RP3z+Z4JwHOrBtygDmjck7Kk= github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80/go.mod h1:0+Uicv4Sa6RguJ1QPuRzdFK39pJvHlBY0goIBwvuaUo= -github.com/ericchiang/css v1.3.0 h1:e0vS+vpujMjtT3/SYu7qTHn1LVzXWcLCCDjlfq3YlLY= -github.com/ericchiang/css v1.3.0/go.mod h1:sVSdL+MFR9Q4cKJMQzpIkHIDOLiK+7Wmjjhq7D+MubA= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= @@ -61,9 +53,6 @@ github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066 h1:qCuYC github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gomarkdown/markdown v0.0.0-20250311123330-531bef5e742b h1:EY/KpStFl60qA17CptGXhwfZ+k1sFNJIUNR8DdbcuUk= -github.com/gomarkdown/markdown v0.0.0-20250311123330-531bef5e742b/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= @@ -129,8 +118,6 @@ github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739/go.mod h1:XPuWBzv github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c h1:KL/ZBHXgKGVmuZBZ01Lt57yE5ws8ZPSkkihmEyq7FXc= golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/image v0.0.0-20190703141733-d6a02ce849c9/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -138,28 +125,19 @@ golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.15.1 h1:FNy7N6OUZVUaWG9pTiD+jlhdQ3lMP+/LcTpJ6+a8sQ0= gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From dcac0d411d44001096fb0a90da36f341c2047881 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Mon, 14 Jul 2025 00:35:59 -0700 Subject: [PATCH 07/14] lab: ra25 example updates from review comments --- sims/ra25/config.go | 4 ++-- sims/ra25/params.go | 2 +- sims/ra25/ra25.go | 21 ++++++--------------- 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/sims/ra25/config.go b/sims/ra25/config.go index e50122d..7a2aa69 100644 --- a/sims/ra25/config.go +++ b/sims/ra25/config.go @@ -14,10 +14,10 @@ import ( type ParamConfig struct { // Hidden1Size is the size of hidden 1 layer. - Hidden1Size vecint.Vector2i `default:"{'X':10,'Y':10}" nest:"+"` + Hidden1Size vecint.Vector2i `default:"{'X':7,'Y':7}" nest:"+"` // Hidden2Size is the size of hidden 2 layer. - Hidden2Size vecint.Vector2i `default:"{'X':10,'Y':10}" nest:"+"` + Hidden2Size vecint.Vector2i `default:"{'X':7,'Y':7}" nest:"+"` // Script is an interpreted script that is run to set parameters in Layer and Path // sheets, by default using the "Script" set name. diff --git a/sims/ra25/params.go b/sims/ra25/params.go index 00786ee..ab040b5 100644 --- a/sims/ra25/params.go +++ b/sims/ra25/params.go @@ -20,7 +20,7 @@ var LayerParams = leabra.LayerSheets{ }}, {Sel: "#Output", Doc: "", Set: func(ly *leabra.LayerParams) { - ly.Inhib.Layer.Gi = 1.8 + ly.Inhib.Layer.Gi = 1.4 }}, }, } diff --git a/sims/ra25/ra25.go b/sims/ra25/ra25.go index 086eece..2e205bb 100644 --- a/sims/ra25/ra25.go +++ b/sims/ra25/ra25.go @@ -40,7 +40,7 @@ import ( ) //go:embed random_5x5_25.tsv -var content embed.FS +var embedfs embed.FS // Modes are the looping modes (Stacks) for running and statistics. type Modes int32 //enums:enum @@ -268,14 +268,6 @@ func (ss *Sim) InitRandSeed(run int) { ss.RandSeeds.Set(run, &ss.Net.Rand) } -// CurrentMode returns the current Train / Test mode from Context. -func (ss *Sim) CurrentMode() Modes { - ctx := ss.Net.Context() - var md Modes - md.SetInt64(int64(ctx.Mode)) - return md -} - // NetViewUpdater returns the NetViewUpdate for given mode. func (ss *Sim) NetViewUpdater(mode enums.Enum) *leabra.NetViewUpdate { if mode.Int64() == Train.Int64() { @@ -306,7 +298,7 @@ func (ss *Sim) ConfigLoops() { leabra.LooperStandard(ls, ss.Net, ss.NetViewUpdater, cycles-plusPhase, cycles-1, Cycle, Trial, Train) - ls.Stacks[Train].OnInit.Add("Init", func() { ss.Init() }) + ls.Stacks[Train].OnInit.Add("Init", ss.Init) ls.AddOnStartToLoop(Trial, "ApplyInputs", func(mode enums.Enum) { ss.ApplyInputs(mode.(Modes)) @@ -324,7 +316,6 @@ func (ss *Sim) ConfigLoops() { curNZero := int(curModeDir.Value("NZero").Float1D(-1)) stop := curNZero >= stopNz return stop - return false }) trainEpoch.OnStart.Add("TestAtInterval", func() { @@ -344,8 +335,8 @@ func (ss *Sim) ConfigLoops() { if ss.Config.GUI { leabra.LooperUpdateNetView(ls, Cycle, Trial, ss.NetViewUpdater) - ls.Stacks[Train].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) - ls.Stacks[Test].OnInit.Add("GUI-Init", func() { ss.GUI.UpdateWindow() }) + ls.Stacks[Train].OnInit.Add("GUI-Init", ss.GUI.UpdateWindow) + ls.Stacks[Test].OnInit.Add("GUI-Init", ss.GUI.UpdateWindow) } if ss.Config.Debug { @@ -419,7 +410,7 @@ func (ss *Sim) OpenTable(dir *tensorfs.Node, fsys fs.FS, fnm, name, docs string) dt := table.New() metadata.SetName(dt, name) metadata.SetDoc(dt, docs) - err := dt.OpenFS(content, fnm, tensor.Tab) + err := dt.OpenFS(embedfs, fnm, tensor.Tab) if errors.Log(err) != nil { return dt, err } @@ -429,7 +420,7 @@ func (ss *Sim) OpenTable(dir *tensorfs.Node, fsys fs.FS, fnm, name, docs string) func (ss *Sim) OpenInputs() { dir := ss.Root.Dir("Inputs") - ss.OpenTable(dir, content, "random_5x5_25.tsv", "Train", "Training inputs") + ss.OpenTable(dir, embedfs, "random_5x5_25.tsv", "Train", "Training inputs") } //////// Stats From c4b33685df6dad74c4a3c0c92ca1deee18be4874 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Mon, 14 Jul 2025 00:48:11 -0700 Subject: [PATCH 08/14] lab: ra25 config had axon number of cycles etc -- now exactly replicating orig. --- sims/ra25/config.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sims/ra25/config.go b/sims/ra25/config.go index 7a2aa69..e475e9d 100644 --- a/sims/ra25/config.go +++ b/sims/ra25/config.go @@ -65,11 +65,11 @@ type RunConfig struct { // Should be an even multiple of NData. Trials int `default:"32"` - // Cycles is the total number of cycles per trial: at least 200. - Cycles int `default:"200"` + // Cycles is the total number of cycles per trial: typically 100. + Cycles int `default:"100"` - // PlusCycles is the total number of plus-phase cycles per trial. For Cycles=300, use 100. - PlusCycles int `default:"50"` + // PlusCycles is the total number of plus-phase cycles per trial: typically 25. + PlusCycles int `default:"25"` // NZero is how many perfect, zero-error epochs before stopping a Run. NZero int `default:"2"` From ed9f6184af94664efaec3492e74bda62c14c63fa Mon Sep 17 00:00:00 2001 From: Kai O'Reilly Date: Thu, 17 Jul 2025 13:57:21 -0700 Subject: [PATCH 09/14] update core cmd install --- .github/workflows/go.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 7f521cd..51dc5d7 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -16,10 +16,10 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.22' + go-version: '1.23.4' - name: Set up Core - run: go install cogentcore.org/core/cmd/core@main && core setup + run: go install cogentcore.org/core@main && core setup - name: Build run: go build -v ./... From 0e7bb3216016f9e5f5c6a3d9b0f20f7ad06689f9 Mon Sep 17 00:00:00 2001 From: Kai O'Reilly Date: Thu, 17 Jul 2025 14:02:45 -0700 Subject: [PATCH 10/14] update core and lab --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 4906598..2ae43b9 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/emer/leabra/v2 go 1.23.4 require ( - cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3 - cogentcore.org/lab v0.1.2-0.20250710081903-2bcb29696f25 + cogentcore.org/core v0.3.12 + cogentcore.org/lab v0.1.2 github.com/cogentcore/yaegi v0.0.0-20250622201820-b7838bdd95eb github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80 diff --git a/go.sum b/go.sum index 470cca0..ce1998b 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ -cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3 h1:5rnkjHt+D9iQKjEhpgkc2FH5E/biP88BOS0mq2Jb0hw= -cogentcore.org/core v0.3.12-0.20250709004609-fcc0ceae20b3/go.mod h1:1C0LnfjobosaRX6VqVz6O+ZJ6k85su3Ixx1FQPHSHIk= -cogentcore.org/lab v0.1.2-0.20250710081903-2bcb29696f25 h1:a0bp/xwQEwS8+pTgYobrKg4Rb5R/t5XZCU8ToKs4aiw= -cogentcore.org/lab v0.1.2-0.20250710081903-2bcb29696f25/go.mod h1:9syt/RnqZ1KhL66XHCAZNXfnXIgzkUHhmA85aqEL7I4= +cogentcore.org/core v0.3.12 h1:wniqGY3wB+xDcJ3KfobR7VutWeiZafSQkjnbOW4nAXQ= +cogentcore.org/core v0.3.12/go.mod h1:Bwg3msVxqnfwvmQjpyJbyHMeox3UAcBcBitkGEdSYSE= +cogentcore.org/lab v0.1.2 h1:km5VUi3HVmP28maFnCvNgGXV4bGMjlPAXFIHchaRZ4k= +cogentcore.org/lab v0.1.2/go.mod h1:ilGaPEvvAVCHiUxpO83w01g1+Ix0tJxK+fnAmnLNOMk= github.com/Bios-Marcel/wastebasket/v2 v2.0.3 h1:TkoDPcSqluhLGE+EssHu7UGmLgUEkWg7kNyHyyJ3Q9g= github.com/Bios-Marcel/wastebasket/v2 v2.0.3/go.mod h1:769oPCv6eH7ugl90DYIsWwjZh4hgNmMS3Zuhe1bH6KU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= From d9f4ae7c867a3d743b16da0df3fd759db0f1eba4 Mon Sep 17 00:00:00 2001 From: Kai O'Reilly Date: Thu, 17 Jul 2025 14:04:12 -0700 Subject: [PATCH 11/14] ra25: move from cmd to ra25 --- sims/ra25/{cmd => ra25}/main.go | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sims/ra25/{cmd => ra25}/main.go (100%) diff --git a/sims/ra25/cmd/main.go b/sims/ra25/ra25/main.go similarity index 100% rename from sims/ra25/cmd/main.go rename to sims/ra25/ra25/main.go From 26eb86119b9e37612c773b9629d3f8d3869bedc2 Mon Sep 17 00:00:00 2001 From: Kai O'Reilly Date: Thu, 17 Jul 2025 14:07:28 -0700 Subject: [PATCH 12/14] ra25: update to new egui simplification changes --- sims/ra25/config.go | 40 ++++++---------------------------------- sims/ra25/ra25.go | 32 ++------------------------------ sims/ra25/ra25/main.go | 9 ++------- 3 files changed, 10 insertions(+), 71 deletions(-) diff --git a/sims/ra25/config.go b/sims/ra25/config.go index e475e9d..a7be3d2 100644 --- a/sims/ra25/config.go +++ b/sims/ra25/config.go @@ -5,9 +5,8 @@ package ra25 import ( - "cogentcore.org/core/base/errors" - "cogentcore.org/core/base/reflectx" "cogentcore.org/core/math32/vecint" + "github.com/emer/emergent/v2/egui" ) // ParamConfig has config parameters related to sim params. @@ -101,29 +100,7 @@ type LogConfig struct { // Config has the overall Sim configuration options. type Config struct { - - // Name is the short name of the sim. - Name string `display:"-" default:"RA25"` - - // Title is the longer title of the sim. - Title string `display:"-" default:"Leabra random associator"` - - // URL is a link to the online README or other documentation for this sim. - URL string `display:"-" default:"https://github.com/emer/leabra/blob/main/sims/ra25/README.md"` - - // Doc is brief documentation of the sim. - Doc string `display:"-" default:"This demonstrates a basic Leabra model and provides a template for creating new models. It has a random-associator four-layer leabra network that uses the standard supervised learning paradigm to learn mappings between 25 random input / output patterns defined over 5x5 input / output layers."` - - // Includes has a list of additional config files to include. - // After configuration, it contains list of include files added. - Includes []string - - // GUI means open the GUI. Otherwise it runs automatically and quits, - // saving results to log files. - GUI bool `default:"true"` - - // Debug reports debugging information. - Debug bool + egui.BaseConfig // Params has parameter related configuration options. Params ParamConfig `display:"add-fields"` @@ -135,14 +112,9 @@ type Config struct { Log LogConfig `display:"add-fields"` } -func (cfg *Config) IncludesPtr() *[]string { return &cfg.Includes } - func (cfg *Config) Defaults() { - errors.Log(reflectx.SetFromDefaultTags(cfg)) -} - -func NewConfig() *Config { - cfg := &Config{} - cfg.Defaults() - return cfg + cfg.Name = "RA25" + cfg.Title = "Leabra random associator" + cfg.URL = "https://github.com/emer/leabra/blob/main/sims/ra25/README.md" + cfg.Doc = "This demonstrates a basic Leabra model and provides a template for creating new models. It has a random-associator four-layer leabra network that uses the standard supervised learning paradigm to learn mappings between 25 random input / output patterns defined over 5x5 input / output layers." } diff --git a/sims/ra25/ra25.go b/sims/ra25/ra25.go index 2e205bb..b9a018f 100644 --- a/sims/ra25/ra25.go +++ b/sims/ra25/ra25.go @@ -119,30 +119,8 @@ type Sim struct { RandSeeds randx.Seeds `display:"-"` } -// RunSim runs the simulation as a standalone app -// with given configuration. -func RunSim(cfg *Config) error { - ss := &Sim{Config: cfg} - ss.ConfigSim() - if ss.Config.GUI { - ss.RunGUI() - } else { - ss.RunNoGUI() - } - return nil -} - -// EmbedSim runs the simulation with default configuration -// embedded within given body element. -func EmbedSim(b tree.Node) *Sim { - cfg := NewConfig() - cfg.GUI = true - ss := &Sim{Config: cfg} - ss.ConfigSim() - ss.Init() - ss.ConfigGUI(b) - return ss -} +func (ss *Sim) SetConfig(cfg *Config) { ss.Config = cfg } +func (ss *Sim) Body() *core.Body { return ss.GUI.Body } func (ss *Sim) ConfigSim() { ss.Root, _ = tensorfs.NewDir("Root") @@ -737,12 +715,6 @@ func (ss *Sim) MakeToolbar(p *tree.Plan) { }) } -func (ss *Sim) RunGUI() { - ss.Init() - ss.ConfigGUI(nil) - ss.GUI.Body.RunMainWindow() -} - func (ss *Sim) RunNoGUI() { ss.Init() diff --git a/sims/ra25/ra25/main.go b/sims/ra25/ra25/main.go index 1aac41e..f73b429 100644 --- a/sims/ra25/ra25/main.go +++ b/sims/ra25/ra25/main.go @@ -5,13 +5,8 @@ package main import ( - "cogentcore.org/core/cli" + "github.com/emer/emergent/v2/egui" "github.com/emer/leabra/v2/sims/ra25" ) -func main() { - cfg := ra25.NewConfig() - opts := cli.DefaultOptions(cfg.Name, cfg.Title) - opts.DefaultFiles = append(opts.DefaultFiles, "config.toml") - cli.Run(opts, cfg, ra25.RunSim) -} +func main() { egui.Run[ra25.Sim, ra25.Config]() } From d7c52f1fba3f89bf0776844aac8040788f96800c Mon Sep 17 00:00:00 2001 From: Kai O'Reilly Date: Thu, 17 Jul 2025 14:09:32 -0700 Subject: [PATCH 13/14] update emergent --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2ae43b9..20f1549 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( cogentcore.org/core v0.3.12 cogentcore.org/lab v0.1.2 github.com/cogentcore/yaegi v0.0.0-20250622201820-b7838bdd95eb - github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f + github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250717205125-e619cee2adff github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80 ) diff --git a/go.sum b/go.sum index ce1998b..18d6297 100644 --- a/go.sum +++ b/go.sum @@ -36,8 +36,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f h1:w1KvRnwE8kBesPlEzGDZhPNFoT+4RAVdjVt3nP0l550= -github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250630184401-56587d34404f/go.mod h1:frNe9pJ4gUCjeuDQoz/qtHQeKviDZTmrpuKetfT54qg= +github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250717205125-e619cee2adff h1:e7KXjx+c7IIiwR7nqgHi1dvYC3CkCPo+njVKURtOlwA= +github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250717205125-e619cee2adff/go.mod h1:8sj0mbkqf9PwM3eV+tDO+BjU6Ef+UdMqgkwyD9PfhFc= github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80 h1:wi1b32KLdolICuwNcv3RP3z+Z4JwHOrBtygDmjck7Kk= github.com/emer/etensor v0.0.0-20250128231607-f3fea92f0b80/go.mod h1:0+Uicv4Sa6RguJ1QPuRzdFK39pJvHlBY0goIBwvuaUo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= From 5c8e55487a62512d81bc9d6370fda21ffd680f67 Mon Sep 17 00:00:00 2001 From: Kai O'Reilly Date: Fri, 8 Aug 2025 16:24:55 -0700 Subject: [PATCH 14/14] update to new lowercase compcogneuro org name --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ac0799d..622b793 100644 --- a/README.md +++ b/README.md @@ -18,17 +18,17 @@ $ core run [platform] where `[platform]` is optional (defaults to your local system), and can include `android`, `ios` and `web`! -See the [ra25 example](https://github.com/emer/leabra/blob/main/examples/ra25/README.md) for a complete working example (intended to be a good starting point for creating your own models), and any of the 26 models in the [Comp Cog Neuro sims](https://github.com/CompCogNeuro/sims) repository which also provide good starting points. The [emergent wiki install](https://github.com/emer/emergent/wiki/Install) page has a tutorial for how to create your own simulation starting from the ra25 example. +See the [ra25 example](https://github.com/emer/leabra/blob/main/examples/ra25/README.md) for a complete working example (intended to be a good starting point for creating your own models), and any of the 26 models in the [compcogneuro/sims](https://github.com/compcogneuro/sims) repository which also provide good starting points. The [emergent wiki install](https://github.com/emer/emergent/wiki/Install) page has a tutorial for how to create your own simulation starting from the ra25 example. # Current Status / News -* October 2024: Finished initial update to v2 using the updated emergent toolkit for logging, looper control mechanisms, and simplified GUI management, along with updates to use the [Cogent Core](https://cogentcore.org/core) GUI framework, which allows running models directly on the web browser, and is in general much more robust, performant, and looks better too! The [Comp Cog Neuro sims](https://github.com/CompCogNeuro/sims) are being updated so they all run on the web, which should be much easier for students. The special algorithm code (Deep, Hip, PBWM, RL) are implemented as special layer and path types, with switch cases, not as Go subtypes. This is overall much simpler, and would allow a future GPU version. In general, research users are encouraged to transition to the [axon](https://github.com/emer/axon) framework, while Leabra remains algorithmically frozen. +* October 2024: Finished initial update to v2 using the updated emergent toolkit for logging, looper control mechanisms, and simplified GUI management, along with updates to use the [Cogent Core](https://cogentcore.org/core) GUI framework, which allows running models directly on the web browser, and is in general much more robust, performant, and looks better too! The [Comp Cog Neuro sims](https://github.com/compcogneuro/sims) are being updated so they all run on the web, which should be much easier for students. The special algorithm code (Deep, Hip, PBWM, RL) are implemented as special layer and path types, with switch cases, not as Go subtypes. This is overall much simpler, and would allow a future GPU version. In general, research users are encouraged to transition to the [axon](https://github.com/emer/axon) framework, while Leabra remains algorithmically frozen. * Nov 2020: Full Python conversions of CCN sims complete, and [eTorch](https://github.com/emer/etorch) for viewing and interacting with PyTorch models. * April 2020: GoGi GUI version 1.0 released, and updated install instructions to use go.mod modules for most users. -* 12/30/2019: Version 1.0.0 Released! -- [CCN textbook simulations](https://github.com/CompCogNeuro/sims) are done and `hip`, `deep` and `pbwm` variants are in place and robustly tested. +* 12/30/2019: Version 1.0.0 Released! -- [CCN textbook simulations](https://github.com/compcogneuro/sims) are done and `hip`, `deep` and `pbwm` variants are in place and robustly tested. * 3/2019: Python interface is up and running! See the `python` directory in `leabra` for the [README](https://github.com/emer/leabra/blob/main/python/README.md) status and how to give it a try. You can run the full `examples/ra25` code using Python, including the GUI etc.

    J7|9Nxyu>aV65DJ#2O%s&~$I$WL#0(MONb!)T<8c)(Qs?JziSkr6(VL4sQ~z z;l4%wSi}nK?9az!cFgW5*^_<8?MY%^4b*ZbgvZXExdJ$>UPO(T2?(vHJ`F_7SqnxE@Dt5zl_-WY@ zXQP=ky!74Ue}8Pw^J*`rvy0=Xb=F*vzVTRFS6W48xUg_)n0Y%}Bd+4$hFw}|l)r^qq2Ltx3>9qi6fK10?e zK(aY9KQzVYA~t4vd95&(te4%_eos;>=I&~*Y@vv77UF9uzO^ZD{iP5DBG5!WPqZ{q zI>yRqIJH!SZntxieP^V(I5|WKgZ;y86%#m5bv$yKU2Z5pU#?&+Yx=Tc334trEzR7p z;#Ik~YeorOZ3{Kwn20~VmeivJd&pc0x#6ywp?xJxLO)?w6n*!7J|~=g`Hhl!ioEaa9R1!Qed$)@QD1fxV>8M;b?~ZY=<@ zyAJ*&;SebjB5%6>=Rgxypy}AGhYol23CWFWv#y?puT@*QHe?m-V0Q|J(MAhK4d-3T z#Yr?cG>7O*;bE|faiYF;yi%Xe5$nJUTL#H}B({2%<8Ro-0BKYdjfQ^#MoE68leqKP zzN(06RbW4)=ooYnvn2ZPl6)sV!`Ccxn*IjzEls@IduEU3{Y`HAq3o0>t@Dm%bdJqD z6alj`&+e!;lXboYxu^AI;{D_MnS-Lu;TyGak^8BGENmN57%Zp2cf!9JJr z{G%a9o!CfeF$CbnX>%YwSH0kh)=loP=|>S^$pBLkx83qlR;NX^go&@gjBhtzOnCSw zQKgaI@+>g7Nu(ndq9)f3LenmC;emEaidgGc(A?lsF9e)!$5o(b2QJ$9m=L+?%X3^8 zDp-yEc+VXOH2~PDr7T4km3EB0Ba3OC>IqGGXC$kW|2A!oc$~&P;RPEJohM)v-+E8* z6#vU>H3#n8k!XavHBNX)+8zYNeJfstDd?1Br1KZ(sgm?`Z;)jd{Cm*{6mQR4TuL};uf)S^voLYjwBq0nn4s<<&0 z=sg2-^3E0bCY~k%Zpi01Wds1--tefP#*SqFJ4Z1iZ@nB*;d#X94_F%Da@z7mLRdKR z4|=50(az|@=5ocgjzgSd1Mev>*O#=L?GYI31tgFu!3uakUl$Q1n3c;M*xmK6X%{)< z3uFYOO2mVS3J-A~H}ce8;BWS{<6ET_^V?X4M`YpqDJBKowQ=*$SzkjhMGy&`3x7-4 zATgwIf`op^j}BrP2y5*QFi=@!@vcbTwsF5uy+2ouK%8X+8_jfC&hoRkJKVCby~ox$ z`toB1UEk%M+rwy`W$ON^7OZTaeF%b!W``os!`Vm@Qi(H(d0LlKkp&M_Cv=GSTL61OVNaf=CE4XtjW@2Qk^mV<0%Z^030>j~37QL;Z1a%>K!2hWtr zMpdy|p;uWuyN{}OD7PwUYjlH4vjFqpkHdk5p($sqvb zO;Ikaz6jnOR+a0zlvPSpWv|a|>Uz=Qw|HO|ssM_Dph{VQu++;RB$guFHG7~Bk0Nye4aH~rDxzfJvTi#>jS zhu7t#lWrjeHm}YzVbQtf#GIFUwa!Y{OtDs4AwOkvoxAq&)^gKm`fU+~t{%Ut^g@m% z?nmIvG=fT0GeDu#94D>=3dXuBogN9)i~n|qx9CAUGrYgY0$Ure4&4fRH$%LJ$Vu9X zc2#09pS3Xjr9GB#XT0zmtW9NLJJP+Q{*^wAXN3OYQDB-Bb3W@|?#QoHpOvB{N}}jYN@$ zvoXw1v4r%!)+`Zsa7wBo0X~FG1r5(k%U(LCVM4{11-XVU{f`9>Efdd@4IW&<;sqT=4T`(DK^XLe3}d0&_}_-?c_uZU^h$U43$sQpQR}t8DZ}i+ zbEP7z%D^RD#Lm#!YjAxWe(coDJ$GPAMR9wxg!n*IT>q9}@mq1J1wEb_PIW{O8;*A9 zZ~8{P^S)Zd#cchGfE|h!;s`!Lw6Km8m&LfIS|G3Lrn-YmWZ2Vkvyy$wDJVVQ$JRwk z+QDy1aM!%fpMzz=_SKoV`0xaD`|Pq~J$V$f=cSX|a2KUdirB+xK=s8yqWzp&1ArxrO-70?`_;}45)A1I{ zWvi>+&GzsLgV$R#l@#$F%TH#q~2H7QL+Eb0Jk zl~x|p)yd}K$1ru=@R-)&3+ehu5&?o+p|XVUb<}^<#t|U6WL0vp&)5cLu?ObFI@_+% z8Zo7XBvbUKzy?h-412OaeB6I3($^Y=W_YN~d?iZSo;ao1`ef6bwq2VCGOHFi(MxK7 zi_`?U-!6&U$2}T0v_n_K*S(%`ETy-^Z+qpZL?Kr9~%4w#hVD>;uV z7pYSBd09#N>)CkF7j%WP&*sjQ-K2e7tt%HbC^uh~0-S00g_=P_`6pHfR=gLe!?S0J zBUk#L0#*5@3e|8wcHXT)^xRq87AgCGR0!D5@J5ZHD&*7GY<~}8RwK`?>mb_x-CF0% ztwvD|?tse_ZD?r)H&MV@7{F~@l<~Gsa82!c-1IDSUk*0R*>m^a=h`PFr`{;4%7Wa2 zVo>LC8x)zc3sHXw@W%L1@dI<~pJR#CX_;oc#o1Rvy!KiMS@rxH%MLxy572obB^XZkq&`diMpPuL6V!wF zf1RCmRFqx!_oWmRK~NE-rMtTuhLn~@N@D14kP>02p`=6^5D<`VhDN#+qy}k+?vD4u z`@X&P`8~gPz3XN1$F=4fW-;eF=j^>d`@7Gs&Geihn77zZ8s6PNIAC;sQ4n&)B@>EV=bfk-gplZl%d$>{018EG0W6yFM zBs*Lw`dIVBvm5FTwMcC`LB>^`)9bpVxCBo_=|nrXKbOhnEVU*%^Phg|vk~frRaco+ zFLMk+Qi{q=Be;*51b(Z45jv4J4ocx8I+&dTI;#rn-#laBTC0HZia5k;)v)EPC55H%Wi47={@~| z&jT{O{6x?mp2vANl6UCN_sgw;t7k^8U#4Fra`@EYL?2FP+$kJS8BVJA0v4aFkapGO zkKUQ-q9_y#Vc^az>3cDtd+7f4?kFqvt!}NCK0G`SNP_ zyARhWm0jf3DsdP@^10<1d}A|i;XNg)7FWp>-|mc}!<<2-S`EC3mSZc^b!3{*X$y<0 z=9==b&T_rImJ_XCf)1YtyTOyg=kAnFP;L|4?FlOUF@`CeKNk&QXWpK#dQ2x$^gh%| z^t2!a{;oIW2jTtJ^gu-b23T+OsEf3}>8ur>_U)V9j^JaY!tOu$ws#%L#o!WtN8+e@ zhgdpw3~QuXbR}UCM4lHsynLscrb}9$xW-Ne3={W9_I+2xaI)C4{egjQYFeU~mrd8I zr|`kU;xQf1i^1^&hgBC3;gx*-=MGxN0qsk)1!34pR7|E|YLHD^v_y%WdQA?-ExoJHI?XFvPc!!EL7 z0b_eSa^YB7hV{o*_ZO=CY>v*U#@((Y3u*g9-0(Zs_<3CezQ&$Y={73R|MoBaYrBfj zM@0G*gC8>xu)?NEP+#%k9|Q;S<+*L?H9l}rV4?Gpy1mRmKk-FO?pdi-=tqbyOQV#x zBJ5ovNjcZzPGSucz8{NTB>Ka+=0I_HjMFegrfg?OR==K7OEO1eL#1kAACbyw5lJHE zZy+i8gT8kuaXJ@ca9F)_}373sOf}R;olU()s^=SkuMVoBWpM z7cwVF`wyTsdr*w}8CRl;mY}+|9L%zG5>ktEq=DI7BNVXbn|g4>O!UP+wxW1=GD*N; zPx!?AD_xaYSH`F0)*SIoR7iI|WLEDu>EjHXS4$B8bb3_In-^)_t6ygO3fq{|;CV?G zNX;ZRz0Maz93tk`=TEYRTaug~pppo26Fi+sA$v$nV@T^ZZ1!gFoPS|ri4z^Dg;dt%Lt*-j z_9NNaw~)NBv@eWWilXa>*+oj@-G)ov^KMh6^%)*Qa3*$1_{lDa!A7d9#v{0(U;ib~bHXq%#@7KZ50UqGuUcTyOr7a#Q~sCJ zCou0~ zSFd8?lwa~H3uL&7TlF;O2^5metEorI{^=XLz#3`R5FEAiNg9h{w7DwMO1-P64SBO z&V-V$78m3z4T~P|9W6mK)&Ci{KQa^)_wly7Qy^XhnvYkXx8gB2CXNh3pI`aFirWo^ zidW4;T|=_?@B7JyTLy)@K-K|);n(9r=gnP#ZqgKe&?4Vu0iJ;8R z+hh~{LwrL2Y?KMK{jv2>qg)drtk0I@t}D}tF6zt<@!2G2m{##3`tBR1nRM(i_T*tU z?=wI$j98Lcgq*HBYSsqXrTwvxeL>iod}G-`)RQW3=#z)&s|xH_h2zDO*vFYYROF@> z_XL*>_60~03r7I~$yQdvOn6%|n9C@tF6GS$ezQnFR&rK5fhrj?o9$T32=9))hvSID zT9+JN?lWhVezUSN^5lDTD<$d4l3urwUeEFubS;6F80r--p7vXJ$J4lXx^|V7mX9LVrI3YGi^hJQ~IXHA@H zm%%z#*3^znzWlVc3D@@6_)zetz53jTuC8x?!Jl^MZ^u-~gMqelrie%m)qiB;fIM#Z z6mZ-Obj=@?p>@ytkXP?GB}r6mlWqWMWTx3mhR)=<+p4aSpPs*su45^z-pA@)H!62K z-_qL}kAFjB3wr5%*SzNq1O6nZW)~Vc95}3`_I45m1cnTrec}zptIMn+uDG2HX~#?k2T+gYNQ`2$>{=T0ioRl?wwg~m@u)OJ=WP5zD> z!js!iiN-8a#!FjF#kYpCU-AkMrVD7yFD%fov%3i&JHRir!|oE(a&T~r)VbN7tQMBo z8Lb6ep5!$gPTJxF#hbuGN_u$<7X%yzV1BqhpkqU1oHc4K`3(Ljie7nbtY`Q7 zQIqG&^VAx_?pTPEsndYmW8o(y6}~dK_p{|QPnQ`cTwN2mi$a4$klsmt1RNocovA>UHArrQGu* z2(f#lMjcwPf{ucosus*DhBDW2b)-mnwaKt%xzehr!X~Lt3Gau6pq5P!kF|STXav}? z0g&_eBD4KVh8t8ly~D5N+<2pYM9{!5j@=oaz0HBLrf@HxTCDZP4oGpYJ?)iKxZ=G4 zo9g#GWVEt9Ejn~SmR6CBtKak>WS&{|P_+1>I_PqGid)iqcz?>m4gPhK>EgxWQ)_`H zm_OPLT*`(xpsjR|RhD0FG!i&9IElx0?1fovZS-uwl_4w8vUv|Uy*WoNhK$o`UK%+I zhqLl}Zkv!MpSR&Av|_eU%vM-yyo!u0vs03Lk#w*&o>pHuwKZOn#XB}dv-`^pXcj|% zr^U6M^*QfB6S^BTcPSTPyzya^;g6hZ>@cSJk%c&qmPJaFsG6RRH8~8IQCV#@`ug#m zHY8eHiSAbOBAO;PmD4Cm7p&DwUmbSxb{@hZR|%s15q z3sFt&^=GEzH=gIght@Gjn--t<$$*=~TPB8wqCrQ>HL9!8AL)S8)++D3#=jqKlD6u= zZt?ag{6U|F8u30J2xhhcsZ;PY(SJxd8Y4qC+EKcJKP~e;8>fwHmqKQb;9+|j-?t|u zcOlsl0vfH*iUI^EDU>xq2!x>APTvwPEw>Y`dsZD30|=Eo#kUv6$d@{NjJ|}q?#G-= zKbuo=B3Qk3QoPvy>b~>As#YWailN60tgW0`zlvGQDFjR;=HI{@HS4q02=v_Ide-1s zT0|1H+yx;W1ykZ>ZlK-5fj;kum%KS~yKW+=OQ^N1Mx9S9Rp!@*b_eC$BU*o;3N%N# zS3V*D+PEOq48FCaBScnb%KNYXbM34$qKbOuwwXUp7v2^6N^sK+{UW7k-x{XfVZ5Qc zv8A0nB5j+ zJDTtl#W9Ujk9k7K^G8@qi}AR>}wHyP5+WZpms^m{*ZrHs0jt z6Qusj{*I)It9&(nwJ6$4y%msGB?QeiI;5?An-C43bQZk7t3;LE|dR&?x)1BIDwKy}d1WqqHS_BNW^ zhI-`^qTndE2v38B3a2hkvq+bx@pTRINVBm^zR5!0Gl|N`=Np7w#Hw8^+)C(qJ#i*d z`(`+XjM==IUFIrgY58_X=!mbK%ZdGh2dbI3cc#VyrQB$b@)88!<6G`fzB?UOPvX3? zL$71`OHbrBX80okbfZ-|)l4YRuEM6Rrm(=t$tj*rb)@Y+RN`B*c9EWfu5Jnib>H?} zn?-vB9w&H`J7cqe)aCS@%xiO?ulq7}{RM|vr#ytj|DwChHtW`}72b_rP{@M4AP4m} zQ&KIqp8^)O{>y(H&A;M{AbrJVy528voAn)#E!`l><>zrIfr4mN9WZCL&+5M}eHx-e z-+@PCu#$F#s8M55aWyW#r<<@UM%LKojY>ifhTKdl_^L|XpZbje84LYZxlOq8t=?eNI-v``b3sbxUe7f{Yku`;v$k(buCne=|Mil zoKG7D$4~|q_6h`b@bHmkBL$PuGt=JS6;T2(5B3z_S~~5tJSjI;_KPx$UfNpc#rP_o zsmaboo34lC?c!aM*~GkdpS&{KY^_(1@&-%B@tr6jsBWPz7&o|UuEQz=exlMI{MSWIl_FZ1KXee zw{`q1&tL0(rrqO{ABz`cx!g?kmo@;VC(2fGM4FJIoxijo|Dik8nPT#}Lozj1I7lI& zv6+h$b?^reV(k0No(6hcR4q)|NqN^VOqFeZ7ffxSUFwmSSBiZWFj$tjb2RWdjtV0( zl#3Lj(^a_Qh6`quZq4X0*9>M%*@pCp!C~e^p;;mE2IcZ;+#Sb3P`sbjVRx7m@&3Ca z`C6it3Ls+fZqaNn>Z%Od=8RRx0CjUIXU1U_(*CIZA${O9w~En^;ODI>KK`g%D!Ey| zB?|2HOD@ZO`H#p$yXu%)B(wFa?BWoOK2wp+FPf|d$)=oukj72_A(M6m5FBA)VZ{v% zsU?HV>ga-hM(Nk2j~oA6$tsxpYlm%aY@GseZx%2l&f(1R|Ll}MHQz{J?hU$P9}vUj z5;L_T&#a{9i{C%ktsIf?Rz=5Qy+=5?Ge*Do5azHZa zPc>FGni-1+hYT5* zd1Dx-Sfda`!a+drMi~Y?<99FRxsPak0UHj|$~f?`O>F z6yO#WpNaDmg`@;U{ScH4|AeAQIPPLTNV)QE5NUhUWrrF#TxoYX&B109a7~~_jowH` zz&lI=f-KV0j_I3GONBZmW3m_JR)am?O3g4j9i%3!z)Xg9u5s}+iXZ?EECN$@(xuTD z?k^kXI@LM^_dRi*AxG#2_GO6~qoShjU(R^UvP2+Ner0*t0UUVv9%}UTasIv&th0z> z%z)2mh>L(Gqhuuh5@;+BPTesstasPs0EBD*qn0dgCzWiR?Ivu7 zbrsD*8UF@Aq<`x|g+*e?`0Ug7*C#Z@+IhV{^Kyfa_66H}Wxj$c)XyIot6S?Kj6<_$ z$TvP%_Bor$ud@5f`ujGNcCq|17}LI})}?+^vKUs-f^Hi{r8WqBQbB6Gy5V-i=ef8I z(5FCJ?sBZ<&~J!Tg?kBznc6@(LE&|gS7L+KEy5TWt03WnrGm_Aq^HYU-;-VY!e|FO(}*`r?>iT`_A&&h2_4cn9|KC3^Q1wo1t_3Sr0X_kV8%?s7?8lM$;@j*q zEJ5wWuYyCl9jXi>YpMCZh%rM_l`r3Yn>^#DK?xoIy@l7GGi+RLp(8~anx1n3^<%uZE!vgFeHtp5iogOusf z>}z?0tVLlT_OeG-pz72215rFLmrpp?ww`f*xS+5$d|z4A+R(qZn4p#Q4MOVCYIHjR zwe}7_ZN0G3{{qO|$RW|uMjU#%MQOCK+tB#Wg>k{RZV(xz+d(9^t(k(;3Z2!Oh=j?I-~o+gL^{0t3!A@eK{6u#qIJCY0HV{)Ud zA>VrYK=zmqYN>IWJ3Mc_D3j)Z8P|!+O7bdAfuduo34_MlC}0=s&HtdG-sI?o z)T=J^t-sW-=hfcOr;$p=P9#4&|M7+Ya^Rf@HLa*D@7+mi0W{|xpuH77C$03mg?AZA z)wa{GUw$8HK@G*$7w&ugrs-jZkVi3zpsRdqTU+Ju#ET-J?`gb{hy4Qks9iFPKJ6_W zl2{!hFB#&|@sH1_xU2@CfU&O+$4Ir5B%%L%^O?3mts(s>feeDmi$XN@J)6ESlU3Vn z`#aInY0hKAiV}G>BGXPSK&niz-#71AaRQ3inQ?&!ns-A4Ut}!GQhlic&RPb|K3xT! z=3^61nTmIb@a2S#JoaX@4WQ`jM)u}aqKqe+p4psh1{+7aHKyD> z^()CUPdPLp30v_JKfD2^?`+BjHvG6iyF&?&0Yd?+!e~FwXyX5l&x#5;-iz-s_5<+_ zwGOT4Lk|Em@D`YfYNMN4Fg`4z2F#;%$>QwQh2a~Bb-~?v%t6%OC>qH%MSG(IEPu6O*^u-c_>SJqTZwA0gIj{qfRliVp6kmUuAn|XV1x= zr|`1DK)L`G5cekn=2eg_7AIe)*dPul;9MQz-Ufw#&lVRK4?I5@H%79fx=Z}M#Xf_I zv+|VC;@A+5vVGX^0U1A?RL^I6R={au=TQ8mCch--@HNB#81(N6R&{wN)km7*OKt0~ z0!cIydW{qih^&VG0%F3nS>xR%=IJ^$AI)nWPLRv39K{S)&eAh!k&VzPf}R?!g+=Fe z3x-s9&bnx&zK_|}(8?|FG5Fccj4@YccmF1jeivrRfj>+Bv$9-n`f>5xkEu_xS)|D;fa?62lx9=BiiY8D zWM<)!KAnAO)JrR*x(N+idfammvL;A+a$j3H_Kwc>qqm=b2WL-^PRgae9gBl#0XAm7 zna$K_8+kDS1#5)lm;A=E`k7VZ#l{Iot%!tA8K$R`&2Bp{+T<*BlTA54yAa-@GVdS&H1OCKn zQ1gjI*i#K?07V11MM)zt#kBf*f~re1Of-a(XFxcd*+E^?f&*e3XU0n)G|$C>y67A^)@`24R2^s zH_dnQyAJzOpgH1;w<9G`+Em`JDg+4#E^pg~llf!fi>AP_q11EF%7Y0dI!{3dmiFlkW@L}4Xm*J=RaqbN(fm!+ZUaQ^{%=Ih{Ckmc zRTDN+SlWf8(igh#Fgi<6)j^`N4Dd9Ct<*-?QcV(PO`8c)8=l5HkXDzlFKk?LwOwZ? zR%)nyq|Xw%`yl>(oE&WFIO+6mVAo?&OR}V{i$BO3L5Orv=`=I^>ayOT&Q)PWMp{}v zhD^kKzWvn*JRrc(Zu@)7NUk#R$#xs=0SET3avE>qhY$3>!$5LY@#txff_He*< zPwF}(|5$9^PG{4-x78lO`xa=nsPUM`hB}QG?5zG$;g=ms!ldXtafO{gTW>&glpAaF z#fo~Qwh?RGut$kTT6!ARe6akir9$cdaAH}nGnY;d*n5Oy5B2gZVn&{U9?^$7O-Ftg zB@Sk17o!Ki+xOf(WT{lvBYV1GPI+?nd3Lh-wTuv6aeFN7!?e$-VGP*@m*YDD@pM)_ z3+T)ySg#-*#zKfY^JzzKCKT@-UaP>tN_=_}5vh;fG`@Yr*+}T}lz5wu1YvS#5C4Ah z0~_>C50B?=ee7?klzN-E&h{m9mToU(n5?0iotAz!t3$0CP31yq_Vf>jP5y152rx(cNV&AOFTT^@Y#+jv29xu zj+%0dxv!_#Gttw_`&8kQ@T)~WEWaG!6-LaFZWXq7(A3s0eU6iYkO(|k8!Jkn%kov< z7Qb;PK@xBGw`2nb%6T$`*sEbW{DY4e(@b$iy*go6k-VKVWdnbNw=TIT2$>Ahq2I`X z{_@X%MyaXk*J}L~t(OTX)A?0yiSF8h`p8jGQ3OX|vZg8F2xZODX0~g=$j28-vjDSu zllntO>Of`pR%>*#;&iM*P_23ADN)(wkauJAGLT%A)qYb|sW_h0RCHz&bL^G2JW=_y zR9;5E&#_%Ie3&F#1Dhl2v~;J_7$gh17+X!514`f@*}`MH@4Q?1Ru zJevhZecTSk4eHfOh9}D<4mk=iT3$f?ehTr5m=pc4yl$@&;B}Ry01v;o8O$-zwt{4i)=!* z{3|IOG?gH(!n1+jt-+SiaFsE+siwy!Ff-c8UN;N7J#R^-F3xZ%{w)XE>538b`*Vn$ zz#^=&gZH5weP%x@(z5xQVnkWHA{1ZUdGqM|wqA_R;}_JHao|Hcg#d7kp5vF4Wit)( z(btfssT0F|jRJ^?#L%rg;TPsUjV$<@()Uht-18@$9lrWB78nDB&ydV%bSvLGrnkn!+O#Y9PUaL+=x`GsC>z9IGr5DzG*73Xl&g>1zJ{R8{%gl7tSsaM(06x?0F z=>UgsU-A+hNk3_A0=g@KT3cHyZXN%Q`s@pTSXvFglPPniK^Qx+nsr9uwW)13NUPgq zODZ5vuU%&0gD)CYHJiFA4|b;ib#MJC)C?<8(9ZB++R;b_yl?7kytiKp`f}hycb7Q+ zV{lWiz2GaIev;13$!>JVtf*KvnfRC@yT>0SYq}5%YRBn!_1qM(C#8F;YQHc#nQN_(=91&8znfNUnU zuR{&R%{s22x#_1k#{A4|eclq<4P~uK7$v^UpKS=M9L7#SH9>I34UC^$Fn6M&Xktus zv^$PTG$IJnA;@R<&16q7Jgxy~ZWzqJy3Of91Gu!Gdc$=D=V3?4Q8`<4^BkiuuFHL? zNzq75te1{lKy#oa?Hs_8*AW(no}Xw4AK-;`8lGuSS`z)MYe?7OQq{DPZmTaobV`fI z2dj~K#;P-tSG(7|;=5z?u{~gdJ0~sQG3z&}21Nq?C(9ORj#^`_Q*#Z(k43+b7p07j z-dI|Zj;soCMKbp?&U|2gP)ivsR#IkCTMsC1k{?Ax7Z@|DQCI1HJRLi-B$+FD@Q0bF zYRnz-yd#INT~nm9Np82syBB#FtVAd|BrGpP6mh#(Q;sqbOnL8BrgAw}wgdzrK3#gG zVC&95NMh^_)oYS?A8E)fy_%cR=;%yLTdW#6r{D&`kius@r#- zFlNGQjM#a0WZyxoApeCV26gDQAf6iRNMJ(GHtPp1<>eaF1zc8vX|L-+qf77Fo5V6w z@8O`2N7#R~K4B&lhDQw6`lvgcv}{dBO)V`cC1qHkWhO{KR-};!IlnlX6%+;J8GyHJ zgna;D$wO}JpGv5o?1!J~lQE4wx5Y?$Sj11tc?aU1Lwk@I z(xqxvF`Xh6)%AHCR1Hdyb%Dj<{Fqe?QB`A67C_{2k8pKr+{OXBYlJ{{j|4@)4sj8Y zc6pJz1+&X8b3c$`499%_?&!QK4`&6n%2?zekyV326~&O;)NmDAOcn76zVwZtf1u%8 zp4dRLK!pn67LIuM8|RBw)REn4?WSnQHkTg96AbB>G8WE>Ui%&jJb!|J+2JbT{QoCB z+;7d=w!2PfKBYFSju;oU8X!42-y1x5^5Hr*k|X!~Qi$<%)UA0v>hHzHiH0&AD8~>= z=amCwpC4BTr+sbO!6z5~M!A>R8i>=fw@v`kXK4KJ!2eNVVx~H97{Kmt6|>iRZ469c zK@Raj&urf0qV8=_!srs8yy22$Jbj)K{`B(GNC8NZ=|D@RK;|}A-5(rrlehEk-yG4X zQ}(jx+w;EPIU;Z8ymep1LtItI_P{}+SPdKKM@osHnqd3PK(_gOv!E|!7#q?Lk?MtwsRw~wZnl60oe^iOF`Su4vmczIm3P?3@yX0~Uo z6q;lPqq@;#o;qs{PPvBYG8iK+_y$2l4rd3Iz5w{~0|y`cDjyZU5w`cFJJQS;qnfYS z!O0h#@$bFsulYR*Z@XhUG7Kn9s~N3mgiweN}AF4_YeOG=l}XE zqQK@?SLyQAPjgm8{OXh=Nq;Xhj}5$qI+?PW9o4&jadxB#^sUxdx;lbiCE}0@ej6z< zsC{B;YFcK}g6ahXsjz3|mQ@W>;W!GjO@836T4*1(xglPP0w!Y9kv{s z^JqRq>@70S<|HywQkK1y!DQegy5CB?%yC;At7?ddz(js6Oy2m`FbZtu$zIFOKc(Hj z)QUk-D%Zpkn4CZdVa46~*KCvh<$9Gir^f&h=X6`uJXtG&=Kv{%U}879?kq8Qh3)tN z$1?&}19}t`lzbr5`zJg8E`|!Ii|~nvQhOAZAwru&86*PE(zHq`6aXYil8t`c4Ivd$ zcQg8AB2jyFd8PpyOy#1RL4cIM3f%t{VP9V~5B?OEGoS1(xgbR##9KhIknP~Zbv7XN z|8*NkKQpqy&&v!?ftH}=!1~zzOcnDDw)aa;@z+K375ew@^F8I~-&;XNMa!K-SJWa|`H8lB1Z+s$OhR%U#_P`5&`#3=1&PvT*QiT$d1& zb-)dno{DTQwQZ~jXlIw${il}aL$P7)E9rM$0i!$)Jd(Y3M&=u{h5 zYSxw8jfRnJc<(hHSnZFo4@9>Y4O;zL*gN0x8e@%;a{4(iYb^kQB#_Lm;GP+!s_5Na z>UI0pnI`6a_~!&bUITD%z+-OLwW|P<;lac^0DuHzhkMlWIWKhH1&7F`yH@-xD*QDE zfhvL%^x)v&>puZzntHjVvezjxZwct~xbJtXK>z_)>GW?*cTTRf?_4uK_ RwHv^Xf{coEv7|}x{{fDQRTcmM diff --git a/examples/hip_bench/diff/fig_alphacyc_diffs_2.png b/examples/hip_bench/diff/fig_alphacyc_diffs_2.png deleted file mode 100644 index 70bad77a29f68484a0dd8b5496fe3720d58aef30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86337 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 diff --git a/examples/hip_bench/diff/fig_alphacyc_diffs_3.png b/examples/hip_bench/diff/fig_alphacyc_diffs_3.png deleted file mode 100644 index 639af573864a14808f68c325956d97e3b98b321a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33862 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 v>r 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 diff --git a/examples/hip_bench/hip_bench.go b/examples/hip_bench/hip_bench.go deleted file mode 100644 index adb0190..0000000 --- a/examples/hip_bench/hip_bench.go +++ /dev/null @@ -1,2754 +0,0 @@ -// Copyright (c) 2020, The Emergent Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build not - -// hip_bench runs a hippocampus model for testing parameters and new learning ideas -package main - -import ( - "bytes" - "flag" - "fmt" - "log" - "math/rand" - "os" - "strconv" - "strings" - "time" - - "cogentcore.org/core/icons" - "cogentcore.org/core/math32" - "cogentcore.org/core/math32/vecint" - "github.com/emer/emergent/v2/emer" - "github.com/emer/emergent/v2/env" - "github.com/emer/emergent/v2/etime" - "github.com/emer/emergent/v2/netview" - "github.com/emer/emergent/v2/params" - "github.com/emer/emergent/v2/patgen" - "github.com/emer/emergent/v2/relpos" - "github.com/emer/etensor/plot" - "github.com/emer/etensor/tensor" - "github.com/emer/etensor/tensor/stats/metric" - "github.com/emer/etensor/tensor/stats/simat" - "github.com/emer/etensor/tensor/stats/split" - "github.com/emer/etensor/tensor/table" - "github.com/emer/leabra/v2/leabra" -) - -func main() { - sim := &Sim{} - sim.New() - sim.ConfigAll() - if sim.Config.GUI { - sim.RunGUI() - } else { - sim.RunNoGUI() - } -} - -// LogPrec is precision for saving float values in logs -const LogPrec = 4 - -// see def_params.go for the default params, and params.go for user-saved versions -// from the gui. - -// see bottom of file for multi-factor testing params - -// HipParams have the hippocampus size and connectivity parameters -type HipParams struct { - - // size of EC in terms of overall pools (outer dimension) - ECSize vecint.Vector2i - - // size of one EC pool - ECPool vecint.Vector2i - - // size of one CA1 pool - CA1Pool vecint.Vector2i - - // size of CA3 - CA3Size vecint.Vector2i - - // size of DG / CA3 - DGRatio float32 - - // size of DG - DGSize vecint.Vector2i `edit:"-"` - - // percent connectivity into DG - DGPCon float32 - - // percent connectivity into CA3 - CA3PCon float32 - - // percent connectivity into CA3 from DG - MossyPCon float32 - - // percent activation in EC pool - ECPctAct float32 - - // delta in mossy effective strength between minus and plus phase - MossyDel float32 - - // delta in mossy strength for testing (relative to base param) - MossyDelTest float32 -} - -func (hp *HipParams) Update() { - hp.DGSize.X = int(float32(hp.CA3Size.X) * hp.DGRatio) - hp.DGSize.Y = int(float32(hp.CA3Size.Y) * hp.DGRatio) -} - -// PatParams have the pattern parameters -type PatParams struct { - - // number of A-B, A-C patterns each - ListSize int - - // minimum difference between item random patterns, as a proportion (0-1) of total active - MinDiffPct float32 - - // use drifting context representations -- otherwise does bit flips from prototype - DriftCtxt bool - - // proportion (0-1) of active bits to flip for each context pattern, relative to a prototype, for non-drifting - CtxtFlipPct float32 -} - -// Sim encapsulates the entire simulation model, and we define all the -// functionality as methods on this struct. This structure keeps all relevant -// state information organized and available without having to pass everything around -// as arguments to methods, and provides the core GUI interface (note the view tags -// for the fields which provide hints to how things should be displayed). -type Sim struct { - - // - Net *leabra.Network `new-window:"+" display:"no-inline"` - - // hippocampus sizing parameters - Hip HipParams - - // parameters for the input patterns - Pat PatParams - - // pool patterns vocabulary - PoolVocab patgen.Vocab `display:"no-inline"` - - // AB training patterns to use - TrainAB *table.Table `display:"no-inline"` - - // AC training patterns to use - TrainAC *table.Table `display:"no-inline"` - - // AB testing patterns to use - TestAB *table.Table `display:"no-inline"` - - // AC testing patterns to use - TestAC *table.Table `display:"no-inline"` - - // Lure pretrain patterns to use - PreTrainLure *table.Table `display:"no-inline"` - - // Lure testing patterns to use - TestLure *table.Table `display:"no-inline"` - - // all training patterns -- for pretrain - TrainAll *table.Table `display:"no-inline"` - - // training trial-level log data for pattern similarity - TrnCycPatSimLog *table.Table `display:"no-inline"` - - // training trial-level log data - TrnTrlLog *table.Table `display:"no-inline"` - - // training epoch-level log data - TrnEpcLog *table.Table `display:"no-inline"` - - // testing epoch-level log data - TstEpcLog *table.Table `display:"no-inline"` - - // testing trial-level log data - TstTrlLog *table.Table `display:"no-inline"` - - // testing cycle-level log data - TstCycLog *table.Table `display:"no-inline"` - - // summary log of each run - RunLog *table.Table `display:"no-inline"` - - // aggregate stats on all runs - RunStats *table.Table `display:"no-inline"` - - // testing stats - TstStats *table.Table `display:"no-inline"` - - // similarity matrix results for layers - SimMats map[string]*simat.SimMat `display:"no-inline"` - - // full collection of param sets - Params params.Sets `display:"no-inline"` - - // which set of *additional* parameters to use -- always applies Base and optionaly this next if set - ParamSet string - - // extra tag string to add to any file names output from sim (e.g., weights files, log files, params) - Tag string - - // current batch run number, for generating different seed - BatchRun int - - // maximum number of model runs to perform - MaxRuns int - - // maximum number of epochs to run per model run - MaxEpcs int - - // number of epochs to run for pretraining - PreTrainEpcs int - - // if a positive number, training will stop after this many epochs with zero mem errors - NZeroStop int - - // Training environment -- contains everything about iterating over input / output patterns over training - TrainEnv env.FixedTable - - // Testing environment -- manages iterating over testing - TestEnv env.FixedTable - - // leabra timing parameters and state - Time leabra.Context - - // whether to update the network view while running - ViewOn bool - - // at what time scale to update the display during training? Anything longer than Epoch updates at Epoch in this model - TrainUpdate etime.Times - - // at what time scale to update the display during testing? Anything longer than Epoch updates at Epoch in this model - TestUpdate etime.Times - - // how often to run through all the test patterns, in terms of training epochs -- can use 0 or -1 for no testing - TestInterval int - - // threshold to use for memory test -- if error proportion is below this number, it is scored as a correct trial - MemThr float64 - - // slice of slice for logging DG patterns every trial - dgCycPats [100][]float32 - - // slice of slice for logging CA3 patterns every trial - ca3CycPats [100][]float32 - - // slice of slice for logging CA1 patterns every trial - ca1CycPats [100][]float32 - - // what set of patterns are we currently testing - TestNm string `edit:"-"` - - // whether current trial's ECout met memory criterion - Mem float64 `edit:"-"` - - // current trial's proportion of bits where target = on but ECout was off ( < 0.5), for all bits - TrgOnWasOffAll float64 `edit:"-"` - - // current trial's proportion of bits where target = on but ECout was off ( < 0.5), for only completion bits that were not active in ECin - TrgOnWasOffCmp float64 `edit:"-"` - - // current trial's proportion of bits where target = off but ECout was on ( > 0.5) - TrgOffWasOn float64 `edit:"-"` - - // current trial's sum squared error - TrlSSE float64 `edit:"-"` - - // current trial's average sum squared error - TrlAvgSSE float64 `edit:"-"` - - // current trial's cosine difference - TrlCosDiff float64 `edit:"-"` - - // last epoch's total sum squared error - EpcSSE float64 `edit:"-"` - - // last epoch's average sum squared error (average over trials, and over units within layer) - EpcAvgSSE float64 `edit:"-"` - - // last epoch's percent of trials that had SSE > 0 (subject to .5 unit-wise tolerance) - EpcPctErr float64 `edit:"-"` - - // last epoch's percent of trials that had SSE == 0 (subject to .5 unit-wise tolerance) - EpcPctCor float64 `edit:"-"` - - // last epoch's average cosine difference for output layer (a normalized error measure, maximum of 1 when the minus phase exactly matches the plus) - EpcCosDiff float64 `edit:"-"` - - // how long did the epoch take per trial in wall-clock milliseconds - EpcPerTrlMSec float64 `edit:"-"` - - // epoch at when Mem err first went to zero - FirstZero int `edit:"-"` - - // number of epochs in a row with zero Mem err - NZero int `edit:"-"` - - // sum to increment as we go through epoch - SumSSE float64 `display:"-" edit:"-"` - - // sum to increment as we go through epoch - SumAvgSSE float64 `display:"-" edit:"-"` - - // sum to increment as we go through epoch - SumCosDiff float64 `display:"-" edit:"-"` - - // sum of errs to increment as we go through epoch - CntErr int `display:"-" edit:"-"` - - // main GUI window - Win *core.Window `display:"-"` - - // the network viewer - NetView *netview.NetView `display:"-"` - - // the master toolbar - ToolBar *core.ToolBar `display:"-"` - - // the training trial plot - TrnTrlPlot *plot.Plot2D `display:"-"` - - // the training epoch plot - TrnEpcPlot *plot.Plot2D `display:"-"` - - // the testing epoch plot - TstEpcPlot *plot.Plot2D `display:"-"` - - // the test-trial plot - TstTrlPlot *plot.Plot2D `display:"-"` - - // the test-cycle plot - TstCycPlot *plot.Plot2D `display:"-"` - - // the run plot - RunPlot *plot.Plot2D `display:"-"` - - // the run stats plot - ABmem - RunStatsPlot1 *plot.Plot2D `display:"-"` - - // the run stats plot - learning time - RunStatsPlot2 *plot.Plot2D `display:"-"` - - // log file - TrnCycPatSimFile *os.File `display:"-"` - - // headers written - TrnCycPatSimHdrs bool `display:"-"` - - // log file - TstEpcFile *os.File `display:"-"` - - // headers written - TstEpcHdrs bool `display:"-"` - - // log file - RunFile *os.File `display:"-"` - - // headers written - RunHdrs bool `display:"-"` - - // temp slice for holding values -- prevent mem allocs - TmpValues []float32 `display:"-"` - - // names of layers to collect more detailed stats on (avg act, etc) - LayStatNms []string `display:"-"` - - // names of test tables - TstNms []string `display:"-"` - - // names of sim mat stats - SimMatStats []string `display:"-"` - - // names of test stats - TstStatNms []string `display:"-"` - - // for holding layer values - ValuesTsrs map[string]*tensor.Float32 `display:"-"` - - // for command-line run only, auto-save final weights after each run - SaveWeights bool `display:"-"` - - // pretrained weights file - PreTrainWts []byte `display:"-"` - - // if true, pretraining is done - PretrainDone bool `display:"-"` - - // if true, runing in no GUI mode - NoGui bool `display:"-"` - - // if true, print message for all params that are set - LogSetParams bool `display:"-"` - - // true if sim is running - IsRunning bool `display:"-"` - - // flag to stop running - StopNow bool `display:"-"` - - // flag to initialize NewRun if last one finished - NeedsNewRun bool `display:"-"` - - // the current random seed - RndSeed int64 `display:"-"` - - // timer for last epoch - LastEpcTime time.Time `display:"-"` -} - -// TheSim is the overall state for this simulation -var TheSim Sim - -// New creates new blank elements and initializes defaults -func (ss *Sim) New() { - ss.Net = &leabra.Network{} - ss.PoolVocab = patgen.Vocab{} - ss.TrainAB = &table.Table{} - ss.TrainAC = &table.Table{} - ss.TestAB = &table.Table{} - ss.TestAC = &table.Table{} - ss.PreTrainLure = &table.Table{} - ss.TestLure = &table.Table{} - ss.TrainAll = &table.Table{} - ss.TrnCycPatSimLog = &table.Table{} - ss.TrnTrlLog = &table.Table{} - ss.TrnEpcLog = &table.Table{} - ss.TstEpcLog = &table.Table{} - ss.TstTrlLog = &table.Table{} - ss.TstCycLog = &table.Table{} - ss.RunLog = &table.Table{} - ss.RunStats = &table.Table{} - ss.SimMats = make(map[string]*simat.SimMat) - ss.Params = ParamSets // in def_params -- current best params - //ss.Params = OrigParamSets // key for original param in Ketz et al. 2013 - //ss.Params = SavedParamsSets // user-saved gui params - ss.RndSeed = 2 - ss.ViewOn = true - ss.TrainUpdate = leabra.AlphaCycle - ss.TestUpdate = leabra.Cycle - ss.TestInterval = 1 - ss.LogSetParams = false - ss.MemThr = 0.34 - ss.LayStatNms = []string{"Input", "ECin", "ECout", "DG", "CA3", "CA1"} - ss.TstNms = []string{"AB", "AC", "Lure"} - ss.TstStatNms = []string{"Mem", "TrgOnWasOff", "TrgOffWasOn"} - ss.SimMatStats = []string{"WithinAB", "WithinAC", "Between"} - - ss.Defaults() -} - -func (pp *PatParams) Defaults() { - pp.ListSize = 175 - pp.MinDiffPct = 0.5 - pp.CtxtFlipPct = .25 -} - -func (hp *HipParams) Defaults() { - // size - hp.ECSize.Set(2, 3) - hp.ECPool.Set(7, 7) - hp.CA1Pool.Set(20, 20) // using BigHip for default - hp.CA3Size.Set(40, 40) // using BigHip for default - hp.DGRatio = 2.236 // sqrt(5) = 2.236 c.f. Ketz et al., 2013 - - // ratio - hp.DGPCon = 0.25 - hp.CA3PCon = 0.25 - hp.MossyPCon = 0.02 - hp.ECPctAct = 0.2 - - hp.MossyDel = 4 // 4 > 2 -- best is 4 del on 4 rel baseline - hp.MossyDelTest = 3 // for rel = 4: 3 > 2 > 0 > 4 -- 4 is very bad -- need a small amount.. -} - -func (ss *Sim) Defaults() { - ss.Hip.Defaults() - ss.Pat.Defaults() - ss.BatchRun = 0 // for initializing envs if using Gui - ss.Time.CycPerQtr = 25 // note: key param - 25 seems like it is actually fine? - ss.Update() -} - -func (ss *Sim) Update() { - ss.Hip.Update() -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Configs - -// Config configures all the elements using the standard functions -func (ss *Sim) Config() { - ss.ConfigPats() - ss.ConfigEnv() - ss.ConfigNet(ss.Net) - ss.ConfigTrnCycPatSimLog(ss.TrnCycPatSimLog) - ss.ConfigTrnTrlLog(ss.TrnTrlLog) - ss.ConfigTrnEpcLog(ss.TrnEpcLog) - ss.ConfigTstEpcLog(ss.TstEpcLog) - ss.ConfigTstTrlLog(ss.TstTrlLog) - ss.ConfigTstCycLog(ss.TstCycLog) - ss.ConfigRunLog(ss.RunLog) -} - -func (ss *Sim) ConfigEnv() { - if ss.MaxRuns == 0 { // allow user override - ss.MaxRuns = 10 - } - if ss.MaxEpcs == 0 { // allow user override - ss.MaxEpcs = 30 - ss.NZeroStop = 1 - ss.PreTrainEpcs = 5 // seems sufficient? increase? - } - - ss.TrainEnv.Name = "TrainEnv" - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - ss.TrainEnv.Validate() - ss.TrainEnv.Run.Max = ss.MaxRuns // note: we are not setting epoch max -- do that manually - - ss.TestEnv.Name = "TestEnv" - ss.TestEnv.Table = table.NewIndexView(ss.TestAB) - ss.TestEnv.Sequential = true - ss.TestEnv.Validate() - - ss.TrainEnv.Init(ss.BatchRun) - ss.TestEnv.Init(ss.BatchRun) -} - -// SetEnv select which set of patterns to train on: AB or AC -func (ss *Sim) SetEnv(trainAC bool) { - if trainAC { - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAC) - } else { - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - } - ss.TrainEnv.Init(ss.BatchRun) -} - -func (ss *Sim) ConfigNet(net *leabra.Network) { - net.InitName(net, "Hip_bench") - hp := &ss.Hip - in := net.AddLayer4D("Input", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, leabra.InputLayer) - ecin := net.AddLayer4D("ECin", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, leabra.SuperLayer) - ecout := net.AddLayer4D("ECout", hp.ECSize.Y, hp.ECSize.X, hp.ECPool.Y, hp.ECPool.X, leabra.TargetLayer) // clamped in plus phase - ca1 := net.AddLayer4D("CA1", hp.ECSize.Y, hp.ECSize.X, hp.CA1Pool.Y, hp.CA1Pool.X, leabra.SuperLayer) - dg := net.AddLayer2D("DG", hp.DGSize.Y, hp.DGSize.X, leabra.SuperLayer) - ca3 := net.AddLayer2D("CA3", hp.CA3Size.Y, hp.CA3Size.X, leabra.SuperLayer) - - ecin.SetClass("EC") - ecout.SetClass("EC") - - ecin.SetRelPos(relpos.Rel{Rel: relpos.RightOf, Other: "Input", YAlign: relpos.Front, Space: 2}) - ecout.SetRelPos(relpos.Rel{Rel: relpos.RightOf, Other: "ECin", YAlign: relpos.Front, Space: 2}) - dg.SetRelPos(relpos.Rel{Rel: relpos.Above, Other: "Input", YAlign: relpos.Front, XAlign: relpos.Left, Space: 0}) - ca3.SetRelPos(relpos.Rel{Rel: relpos.Above, Other: "DG", YAlign: relpos.Front, XAlign: relpos.Left, Space: 0}) - ca1.SetRelPos(relpos.Rel{Rel: relpos.RightOf, Other: "CA3", YAlign: relpos.Front, Space: 2}) - - onetoone := paths.NewOneToOne() - pool1to1 := paths.NewPoolOneToOne() - full := paths.NewFull() - - net.ConnectLayers(in, ecin, onetoone, leabra.ForwardPath) - net.ConnectLayers(ecout, ecin, onetoone, BackPath) - - // EC <-> CA1 encoder pathways - pj := net.ConnectLayersPath(ecin, ca1, pool1to1, leabra.ForwardPath, &leabra.EcCa1Path{}) - pj.SetClass("EcCa1Path") - pj = net.ConnectLayersPath(ca1, ecout, pool1to1, leabra.ForwardPath, &leabra.EcCa1Path{}) - pj.SetClass("EcCa1Path") - pj = net.ConnectLayersPath(ecout, ca1, pool1to1, BackPath, &leabra.EcCa1Path{}) - pj.SetClass("EcCa1Path") - - // Perforant pathway - ppathDG := paths.NewUnifRnd() - ppathDG.PCon = hp.DGPCon - ppathCA3 := paths.NewUnifRnd() - ppathCA3.PCon = hp.CA3PCon - - pj = net.ConnectLayersPath(ecin, dg, ppathDG, leabra.ForwardPath, &leabra.CHLPath{}) - pj.SetClass("HippoCHL") - - if true { // key for bcm vs. ppath, zycyc: must use false for orig_param, true for def_param - pj = net.ConnectLayersPath(ecin, ca3, ppathCA3, leabra.ForwardPath, &leabra.EcCa1Path{}) - pj.SetClass("PPath") - pj = net.ConnectLayersPath(ca3, ca3, full, emer.Lateral, &leabra.EcCa1Path{}) - pj.SetClass("PPath") - } else { - // so far, this is sig worse, even with error-driven MinusQ1 case (which is better than off) - pj = net.ConnectLayersPath(ecin, ca3, ppathCA3, leabra.ForwardPath, &leabra.CHLPath{}) - pj.SetClass("HippoCHL") - pj = net.ConnectLayersPath(ca3, ca3, full, emer.Lateral, &leabra.CHLPath{}) - pj.SetClass("HippoCHL") - } - - // always use this for now: - if true { - pj = net.ConnectLayersPath(ca3, ca1, full, leabra.ForwardPath, &leabra.CHLPath{}) - pj.SetClass("HippoCHL") - } else { - // note: this requires lrate = 1.0 or maybe 1.2, doesn't work *nearly* as well - pj = net.ConnectLayers(ca3, ca1, full, leabra.ForwardPath) // default con - // pj.SetClass("HippoCHL") - } - - // Mossy fibers - mossy := paths.NewUnifRnd() - mossy.PCon = hp.MossyPCon - pj = net.ConnectLayersPath(dg, ca3, mossy, leabra.ForwardPath, &leabra.CHLPath{}) // no learning - pj.SetClass("HippoCHL") - - // using 4 threads total (rest on 0) - dg.(leabra.LeabraLayer).SetThread(1) - ca3.(leabra.LeabraLayer).SetThread(2) - ca1.(leabra.LeabraLayer).SetThread(3) // this has the most - - // note: if you wanted to change a layer type from e.g., Target to Compare, do this: - // outLay.SetType(emer.Compare) - // that would mean that the output layer doesn't reflect target values in plus phase - // and thus removes error-driven learning -- but stats are still computed. - - net.Defaults() - ss.SetParams("Network", ss.LogSetParams) // only set Network params - err := net.Build() - if err != nil { - log.Println(err) - return - } - net.InitWeights() -} - -func (ss *Sim) ReConfigNet() { - ss.Update() - ss.ConfigPats() - ss.Net = &leabra.Network{} // start over with new network - ss.ConfigNet(ss.Net) - if ss.NetView != nil { - ss.NetView.SetNet(ss.Net) - ss.NetView.Update() // issue #41 closed - } - ss.ConfigTrnCycPatSimLog(ss.TrnCycPatSimLog) - ss.ConfigTrnTrlLog(ss.TrnTrlLog) - ss.ConfigTrnEpcLog(ss.TrnEpcLog) - ss.ConfigTstEpcLog(ss.TstEpcLog) - ss.ConfigTstTrlLog(ss.TstTrlLog) - ss.ConfigTstCycLog(ss.TstCycLog) - ss.ConfigRunLog(ss.RunLog) -} - -//////////////////////////////////////////////////////////////////////////////// -// Init, utils - -// Init restarts the run, and initializes everything, including network weights -// and resets the epoch log table -func (ss *Sim) Init() { - rand.Seed(ss.RndSeed) - ss.SetParams("", ss.LogSetParams) // all sheets - - ss.ReConfigNet() - ss.ConfigEnv() // re-config env just in case a different set of patterns was - // selected or patterns have been modified etc - ss.StopNow = false - ss.NewRun() - ss.UpdateView(true) - if ss.NetView != nil && ss.NetView.IsVisible() { - ss.NetView.RecordSyns() - } -} - -// NewRndSeed gets a new random seed based on current time -- otherwise uses -// the same random seed for every run -func (ss *Sim) NewRndSeed() { - ss.RndSeed = time.Now().UnixNano() -} - -// Counters returns a string of the current counter state -// use tabs to achieve a reasonable formatting overall -// and add a few tabs at the end to allow for expansion.. -func (ss *Sim) Counters(train bool) string { - if train { - return fmt.Sprintf("Run:\t%d\tEpoch:\t%d\tTrial:\t%d\tCycle:\t%d\tName:\t%v\t\t\t", ss.TrainEnv.Run.Cur, ss.TrainEnv.Epoch.Cur, ss.TrainEnv.Trial.Cur, ss.Time.Cycle, ss.TrainEnv.TrialName.Cur) - } else { - return fmt.Sprintf("Run:\t%d\tEpoch:\t%d\tTrial:\t%d\tCycle:\t%d\tName:\t%v\t\t\t", ss.TrainEnv.Run.Cur, ss.TrainEnv.Epoch.Cur, ss.TestEnv.Trial.Cur, ss.Time.Cycle, ss.TestEnv.TrialName.Cur) - } -} - -func (ss *Sim) UpdateView(train bool) { - if ss.NetView != nil && ss.NetView.IsVisible() { - ss.NetView.Record(ss.Counters(train), -1) - // note: essential to use Go version of update when called from another goroutine - ss.NetView.GoUpdate() // note: using counters is significantly slower.. - } -} - -//////////////////////////////////////////////////////////////////////////////// -// Running the Network, starting bottom-up.. - -// AlphaCyc runs one alpha-cycle (100 msec, 4 quarters) of processing. -// External inputs must have already been applied prior to calling, -// using ApplyExt method on relevant layers (see TrainTrial, TestTrial). -// If train is true, then learning DWt or WtFromDWt calls are made. -// Handles netview updating within scope of AlphaCycle -func (ss *Sim) AlphaCyc(train bool) { - // ss.Win.PollEvents() // this can be used instead of running in a separate goroutine - viewUpdate := ss.TrainUpdate - if !train { - viewUpdate = ss.TestUpdate - } - - dg := ss.Net.LayerByName("DG").(leabra.LeabraLayer).AsLeabra() - ca1 := ss.Net.LayerByName("CA1").(leabra.LeabraLayer).AsLeabra() - ca3 := ss.Net.LayerByName("CA3").(leabra.LeabraLayer).AsLeabra() - input := ss.Net.LayerByName("Input").(leabra.LeabraLayer).AsLeabra() - ecin := ss.Net.LayerByName("ECin").(leabra.LeabraLayer).AsLeabra() - ecout := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ca1FmECin := ca1.SendName("ECin").(leabra.LeabraPath).AsLeabra() - ca1FmCa3 := ca1.SendName("CA3").(leabra.LeabraPath).AsLeabra() - ca3FmDg := ca3.SendName("DG").(leabra.LeabraPath).AsLeabra() - _ = ecin - _ = input - - // First Quarter: CA1 is driven by ECin, not by CA3 recall - // (which is not really active yet anyway) - thetaLow := float32(0.3) - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = thetaLow - - dgwtscale := ca3FmDg.WtScale.Rel - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDel // 0 for the first quarter, comment out if NoEDL and orig, zycyc. NoEDL key - - if train { - ecout.SetType(leabra.TargetLayer) // clamp a plus phase during testing - } else { - ecout.SetType(emer.Compare) // don't clamp - } - ecout.UpdateExtFlags() // call this after updating type - - ss.Net.AlphaCycInit(train) - ss.Time.AlphaCycStart() - for qtr := 0; qtr < 4; qtr++ { - for cyc := 0; cyc < ss.Time.CycPerQtr; cyc++ { - ss.Net.Cycle(&ss.Time) - if !train { - ss.LogTstCyc(ss.TstCycLog, ss.Time.Cycle) - } else if ss.PretrainDone { // zycyc Pat Sim log - var dgCycPat []float32 - var ca3CycPat []float32 - var ca1CycPat []float32 - dg.UnitValues(&dgCycPat, "Act") - ca3.UnitValues(&ca3CycPat, "Act") - ca1.UnitValues(&ca1CycPat, "Act") - ss.dgCycPats[cyc+qtr*ss.Time.CycPerQtr] = dgCycPat - ss.ca3CycPats[cyc+qtr*ss.Time.CycPerQtr] = ca3CycPat - ss.ca1CycPats[cyc+qtr*ss.Time.CycPerQtr] = ca1CycPat - } - ss.Time.CycleInc() - if ss.ViewOn { - switch viewUpdate { - case leabra.Cycle: - if cyc != ss.Time.CycPerQtr-1 { // will be updated by quarter - ss.UpdateView(train) - } - case leabra.FastSpike: - if (cyc+1)%10 == 0 { - ss.UpdateView(train) - } - } - } - } - switch qtr + 1 { - case 1: // Second, Third Quarters: CA1 is driven by CA3 recall - ca1FmECin.WtScale.Abs = thetaLow - ca1FmCa3.WtScale.Abs = 1 - //ca3FmDg.WtScale.Rel = dgwtscale //zycyc, orig - if train { // def - ca3FmDg.WtScale.Rel = dgwtscale - } else { - ca3FmDg.WtScale.Rel = dgwtscale - ss.Hip.MossyDelTest // testing, NoDynMF key - } - ss.Net.GScaleFromAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins - case 3: // Fourth Quarter: CA1 back to ECin drive only - ca1FmECin.WtScale.Abs = 1 - ca1FmCa3.WtScale.Abs = thetaLow - ss.Net.GScaleFromAvgAct() // update computed scaling factors - ss.Net.InitGInc() // scaling params change, so need to recompute all netins - if train { // clamp ECout from ECin - ecin.UnitValues(&ss.TmpValues, "Act") // note: could use input instead -- not much diff - ecout.ApplyExt1D32(ss.TmpValues) - } - } - ss.Net.QuarterFinal(&ss.Time) - if qtr+1 == 3 { - ss.MemStats(train) // must come after QuarterFinal - } - ss.Time.QuarterInc() - if ss.ViewOn { - switch { - case viewUpdate <= leabra.Quarter: - ss.UpdateView(train) - case viewUpdate == leabra.Phase: - if qtr >= 2 { - ss.UpdateView(train) - } - } - } - } - - ca3FmDg.WtScale.Rel = dgwtscale // restore - ca1FmCa3.WtScale.Abs = 1 - - if train { - ss.Net.DWt() - if ss.NetView != nil && ss.NetView.IsVisible() { - ss.NetView.RecordSyns() - } - ss.Net.WtFromDWt() // so testing is based on updated weights - } - if ss.ViewOn && viewUpdate == leabra.AlphaCycle { - ss.UpdateView(train) - } - if !train { - if ss.TstCycPlot != nil { - ss.TstCycPlot.GoUpdate() // make sure up-to-date at end - } - } -} - -// ApplyInputs applies input patterns from given environment. -// It is good practice to have this be a separate method with appropriate -// args so that it can be used for various different contexts -// (training, testing, etc). -func (ss *Sim) ApplyInputs(en env.Env) { - ss.Net.InitExt() // clear any existing inputs -- not strictly necessary if always - // going to the same layers, but good practice and cheap anyway - - lays := []string{"Input", "ECout"} - for _, lnm := range lays { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - pats := en.State(ly.Name) - if pats != nil { - ly.ApplyExt(pats) - } - } -} - -// TrainTrial runs one trial of training using TrainEnv -func (ss *Sim) TrainTrial() { - if ss.NeedsNewRun { - ss.NewRun() - } - - ss.TrainEnv.Step() // the Env encapsulates and manages all counter state - - // Key to query counters FIRST because current state is in NEXT epoch - // if epoch counter has changed - epc, _, chg := ss.TrainEnv.Counter(env.Epoch) - if chg { - ss.LogTrnEpc(ss.TrnEpcLog) - if ss.ViewOn && ss.TrainUpdate > leabra.AlphaCycle { - ss.UpdateView(true) - } - if ss.TestInterval > 0 && epc%ss.TestInterval == 0 { // note: epc is *next* so won't trigger first time - ss.TestAll() - } - - // zycyc, fixed epoch num -- half AB half AC - //if ss.TrainEnv.Table.Table == ss.TrainAB && (epc == ss.MaxEpcs/2) { - // ss.TrainEnv.Table = table.NewIndexView(ss.TrainAC) - //} - //if epc >= ss.MaxEpcs { // done with training.. - // ss.RunEnd() - // if ss.TrainEnv.Run.Incr() { // we are done! - // ss.StopNow = true - // return - // } else { - // ss.NeedsNewRun = true - // return - // } - //} - - // zycyc, half / learned (default) - learned := (ss.NZeroStop > 0 && ss.NZero >= ss.NZeroStop) - if ss.TrainEnv.Table.Table == ss.TrainAB && (learned || epc == ss.MaxEpcs/2) { // switch to AC - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAC) - - // set names after updating epochs to get correct names for the next env - ss.TrainEnv.SetTrialName() - ss.TrainEnv.SetGroupName() - - learned = false - } - if learned || epc >= ss.MaxEpcs { // done with training.. - ss.RunEnd() - if ss.TrainEnv.Run.Incr() { // we are done! - ss.StopNow = true - return - } else { - ss.NeedsNewRun = true - return - } - } - } - - ss.ApplyInputs(&ss.TrainEnv) - ss.AlphaCyc(true) // train - ss.TrialStats(true) // accumulate - ss.LogTrnTrl(ss.TrnTrlLog) - ss.LogTrnCycPatSim(ss.TrnCycPatSimLog) // zycyc pat sim log -} - -// PreTrainTrial runs one trial of pretraining using TrainEnv -func (ss *Sim) PreTrainTrial() { - //if ss.NeedsNewRun { - // ss.NewRun() - //} - - ss.TrainEnv.Step() // the Env encapsulates and manages all counter state - - // Key to query counters FIRST because current state is in NEXT epoch - // if epoch counter has changed - epc, _, chg := ss.TrainEnv.Counter(env.Epoch) - if chg { - //ss.LogTrnEpc(ss.TrnEpcLog) // zycyc, don't log pretraining - if ss.ViewOn && ss.TrainUpdate > leabra.AlphaCycle { - ss.UpdateView(true) - } - if epc >= ss.PreTrainEpcs { // done with training.. - ss.StopNow = true - return - } - } - - ss.ApplyInputs(&ss.TrainEnv) - ss.AlphaCyc(true) // train - ss.TrialStats(true) // accumulate - ss.LogTrnTrl(ss.TrnTrlLog) -} - -// RunEnd is called at the end of a run -- save weights, record final log, etc here -func (ss *Sim) RunEnd() { - ss.LogRun(ss.RunLog) - if ss.SaveWeights { - fnm := ss.WeightsFileName() - fmt.Printf("Saving Weights to: %v\n", fnm) - ss.Net.SaveWeightsJSON(core.Filename(fnm)) - } -} - -// NewRun intializes a new run of the model, using the TrainEnv.Run counter -// for the new run value -func (ss *Sim) NewRun() { - run := ss.TrainEnv.Run.Cur - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - ss.TrainEnv.Init(run) - ss.TestEnv.Init(run) - ss.Time.Reset() - ss.Net.InitWeights() - ss.LoadPretrainedWts() - ss.InitStats() - ss.TrnCycPatSimLog.SetNumRows(0) - ss.TrnTrlLog.SetNumRows(0) - ss.TrnEpcLog.SetNumRows(0) - ss.TstEpcLog.SetNumRows(0) - ss.NeedsNewRun = false -} - -func (ss *Sim) LoadPretrainedWts() bool { - if ss.PreTrainWts == nil { - return false - } - b := bytes.NewReader(ss.PreTrainWts) - err := ss.Net.ReadWtsJSON(b) - if err != nil { - log.Println(err) - // } else { - // fmt.Printf("loaded pretrained wts\n") - } - return true -} - -// InitStats initializes all the statistics, especially important for the -// cumulative epoch stats -- called at start of new run -func (ss *Sim) InitStats() { - // accumulators - ss.SumSSE = 0 - ss.SumAvgSSE = 0 - ss.SumCosDiff = 0 - ss.CntErr = 0 - ss.FirstZero = -1 - ss.NZero = 0 - // clear rest just to make Sim look initialized - ss.Mem = 0 - ss.TrgOnWasOffAll = 0 - ss.TrgOnWasOffCmp = 0 - ss.TrgOffWasOn = 0 - ss.TrlSSE = 0 - ss.TrlAvgSSE = 0 - ss.EpcSSE = 0 - ss.EpcAvgSSE = 0 - ss.EpcPctErr = 0 - ss.EpcCosDiff = 0 -} - -// MemStats computes ActM vs. Target on ECout with binary counts -// must be called at end of 3rd quarter so that Targ values are -// for the entire full pattern as opposed to the plus-phase target -// values clamped from ECin activations -func (ss *Sim) MemStats(train bool) { - ecout := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ecin := ss.Net.LayerByName("ECin").(leabra.LeabraLayer).AsLeabra() - nn := ecout.Shape.Len() - trgOnWasOffAll := 0.0 // all units - trgOnWasOffCmp := 0.0 // only those that required completion, missing in ECin - trgOffWasOn := 0.0 // should have been off - cmpN := 0.0 // completion target - trgOnN := 0.0 - trgOffN := 0.0 - actMi, _ := ecout.UnitVarIndex("ActM") - targi, _ := ecout.UnitVarIndex("Targ") - actQ1i, _ := ecout.UnitVarIndex("ActQ1") - for ni := 0; ni < nn; ni++ { - actm := ecout.UnitValue1D(actMi, ni) - trg := ecout.UnitValue1D(targi, ni) // full pattern target - inact := ecin.UnitValue1D(actQ1i, ni) - if trg < 0.5 { // trgOff - trgOffN += 1 - if actm > 0.5 { - trgOffWasOn += 1 - } - } else { // trgOn - trgOnN += 1 - if inact < 0.5 { // missing in ECin -- completion target - cmpN += 1 - if actm < 0.5 { - trgOnWasOffAll += 1 - trgOnWasOffCmp += 1 - } - } else { - if actm < 0.5 { - trgOnWasOffAll += 1 - } - } - } - } - trgOnWasOffAll /= trgOnN - trgOffWasOn /= trgOffN - if train { // no cmp - if trgOnWasOffAll < ss.MemThr && trgOffWasOn < ss.MemThr { - ss.Mem = 1 - } else { - ss.Mem = 0 - } - } else { // test - if cmpN > 0 { // should be - trgOnWasOffCmp /= cmpN - if trgOnWasOffCmp < ss.MemThr && trgOffWasOn < ss.MemThr { - ss.Mem = 1 - } else { - ss.Mem = 0 - } - } - } - ss.TrgOnWasOffAll = trgOnWasOffAll - ss.TrgOnWasOffCmp = trgOnWasOffCmp - ss.TrgOffWasOn = trgOffWasOn -} - -// TrialStats computes the trial-level statistics and adds them to the epoch accumulators if -// accum is true. Note that we're accumulating stats here on the Sim side so the -// core algorithm side remains as simple as possible, and doesn't need to worry about -// different time-scales over which stats could be accumulated etc. -// You can also aggregate directly from log data, as is done for testing stats -func (ss *Sim) TrialStats(accum bool) (sse, avgsse, cosdiff float64) { - outLay := ss.Net.LayerByName("ECout").(leabra.LeabraLayer).AsLeabra() - ss.TrlCosDiff = float64(outLay.CosDiff.Cos) - ss.TrlSSE, ss.TrlAvgSSE = outLay.MSE(0.5) // 0.5 = per-unit tolerance -- right side of .5 - if accum { - ss.SumSSE += ss.TrlSSE - ss.SumAvgSSE += ss.TrlAvgSSE - ss.SumCosDiff += ss.TrlCosDiff - if ss.TrlSSE != 0 { - ss.CntErr++ - } - } - return -} - -// TrainEpoch runs training trials for remainder of this epoch -func (ss *Sim) TrainEpoch() { - ss.StopNow = false - curEpc := ss.TrainEnv.Epoch.Cur - for { - ss.TrainTrial() - if ss.StopNow || ss.TrainEnv.Epoch.Cur != curEpc { - break - } - } - ss.Stopped() -} - -// TrainRun runs training trials for remainder of run -func (ss *Sim) TrainRun() { - ss.StopNow = false - curRun := ss.TrainEnv.Run.Cur - for { - ss.TrainTrial() - if ss.StopNow || ss.TrainEnv.Run.Cur != curRun { - break - } - } - ss.Stopped() -} - -// Train runs the full training from this point onward -func (ss *Sim) Train() { - ss.StopNow = false - for { - ss.TrainTrial() - if ss.StopNow { - break - } - } - ss.Stopped() -} - -// Stop tells the sim to stop running -func (ss *Sim) Stop() { - ss.StopNow = true -} - -// Stopped is called when a run method stops running -- updates the IsRunning flag and toolbar -func (ss *Sim) Stopped() { - ss.IsRunning = false - if ss.Win != nil { - vp := ss.Win.WinViewport2D() - if ss.ToolBar != nil { - ss.ToolBar.UpdateActions() - } - vp.SetNeedsFullRender() - } -} - -// SaveWeights saves the network weights -- when called with views.CallMethod -// it will auto-prompt for filename -func (ss *Sim) SaveWeights(filename core.Filename) { - ss.Net.SaveWeightsJSON(filename) -} - -// SetDgCa3Off sets the DG and CA3 layers off (or on) -func (ss *Sim) SetDgCa3Off(net *leabra.Network, off bool) { - ca3 := net.LayerByName("CA3").(leabra.LeabraLayer).AsLeabra() - dg := net.LayerByName("DG").(leabra.LeabraLayer).AsLeabra() - ca3.Off = off - dg.Off = off -} - -// PreTrain runs pre-training, saves weights to PreTrainWts -func (ss *Sim) PreTrain() { - ss.SetDgCa3Off(ss.Net, true) - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAll) - ss.StopNow = false - curRun := ss.TrainEnv.Run.Cur - ss.TrainEnv.Init(curRun) // need this after changing num of rows in tables - for { - ss.PreTrainTrial() - if ss.StopNow || ss.TrainEnv.Run.Cur != curRun { - break - } - } - b := &bytes.Buffer{} - ss.Net.WriteWtsJSON(b) - ss.PreTrainWts = b.Bytes() - ss.TrainEnv.Table = table.NewIndexView(ss.TrainAB) - ss.SetDgCa3Off(ss.Net, false) - ss.Stopped() -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Testing - -// TestTrial runs one trial of testing -- always sequentially presented inputs -func (ss *Sim) TestTrial(returnOnChg bool) { - ss.TestEnv.Step() - - // Query counters FIRST - _, _, chg := ss.TestEnv.Counter(env.Epoch) - if chg { - if ss.ViewOn && ss.TestUpdate > leabra.AlphaCycle { - ss.UpdateView(false) - } - if returnOnChg { - return - } - } - - ss.ApplyInputs(&ss.TestEnv) - ss.AlphaCyc(false) // !train - ss.TrialStats(false) // !accumulate - ss.LogTstTrl(ss.TstTrlLog) -} - -// TestItem tests given item which is at given index in test item list -func (ss *Sim) TestItem(idx int) { - cur := ss.TestEnv.Trial.Cur - ss.TestEnv.Trial.Cur = idx - ss.TestEnv.SetTrialName() - ss.ApplyInputs(&ss.TestEnv) - ss.AlphaCyc(false) // !train - ss.TrialStats(false) // !accumulate - ss.TestEnv.Trial.Cur = cur -} - -// TestAll runs through the full set of testing items -func (ss *Sim) TestAll() { - ss.TestNm = "AB" - ss.TestEnv.Table = table.NewIndexView(ss.TestAB) - ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - for { - ss.TestTrial(true) // return on chg - _, _, chg := ss.TestEnv.Counter(env.Epoch) - if chg || ss.StopNow { - break - } - } - if !ss.StopNow { - ss.TestNm = "AC" - ss.TestEnv.Table = table.NewIndexView(ss.TestAC) - ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - for { - ss.TestTrial(true) - _, _, chg := ss.TestEnv.Counter(env.Epoch) - if chg || ss.StopNow { - break - } - } - if !ss.StopNow { - ss.TestNm = "Lure" - ss.TestEnv.Table = table.NewIndexView(ss.TestLure) - ss.TestEnv.Init(ss.TrainEnv.Run.Cur) - for { - ss.TestTrial(true) - _, _, chg := ss.TestEnv.Counter(env.Epoch) - if chg || ss.StopNow { - break - } - } - } - } - // log only at very end - ss.LogTstEpc(ss.TstEpcLog) -} - -// RunTestAll runs through the full set of testing items, has stop running = false at end -- for gui -func (ss *Sim) RunTestAll() { - ss.StopNow = false - ss.TestAll() - ss.Stopped() -} - -///////////////////////////////////////////////////////////////////////// -// Params setting - -// ParamsName returns name of current set of parameters -func (ss *Sim) ParamsName() string { - if ss.ParamSet == "" { - return "Base" - } - return ss.ParamSet -} - -// SetParams sets the params for "Base" and then current ParamSet. -// If sheet is empty, then it applies all avail sheets (e.g., Network, Sim) -// otherwise just the named sheet -// if setMsg = true then we output a message for each param that was set. -func (ss *Sim) SetParams(sheet string, setMsg bool) error { - if sheet == "" { - // this is important for catching typos and ensuring that all sheets can be used - ss.Params.ValidateSheets([]string{"Network", "Sim", "Hip", "Pat"}) - } - err := ss.SetParamsSet("Base", sheet, setMsg) - if ss.ParamSet != "" && ss.ParamSet != "Base" { - err = ss.SetParamsSet(ss.ParamSet, sheet, setMsg) - } - return err -} - -// SetParamsSet sets the params for given params.Set name. -// If sheet is empty, then it applies all avail sheets (e.g., Network, Sim) -// otherwise just the named sheet -// if setMsg = true then we output a message for each param that was set. -func (ss *Sim) SetParamsSet(setNm string, sheet string, setMsg bool) error { - pset, err := ss.Params.SetByName(setNm) - if err != nil { - return err - } - if sheet == "" || sheet == "Network" { - netp, ok := pset.Sheets["Network"] - if ok { - ss.Net.ApplyParams(netp, setMsg) - } - } - - if sheet == "" || sheet == "Sim" { - simp, ok := pset.Sheets["Sim"] - if ok { - simp.Apply(ss, setMsg) - } - } - - if sheet == "" || sheet == "Hip" { - simp, ok := pset.Sheets["Hip"] - if ok { - simp.Apply(&ss.Hip, setMsg) - } - } - - if sheet == "" || sheet == "Pat" { - simp, ok := pset.Sheets["Pat"] - if ok { - simp.Apply(&ss.Pat, setMsg) - } - } - - // note: if you have more complex environments with parameters, definitely add - // sheets for them, e.g., "TrainEnv", "TestEnv" etc - return err -} - -func (ss *Sim) OpenPat(dt *table.Table, fname, name, desc string) { - err := dt.OpenCSV(core.Filename(fname), table.Tab) - if err != nil { - log.Println(err) - return - } - dt.SetMetaData("name", name) - dt.SetMetaData("desc", desc) -} - -func (ss *Sim) ConfigPats() { - hp := &ss.Hip - ecY := hp.ECSize.Y - ecX := hp.ECSize.X - plY := hp.ECPool.Y // good idea to get shorter vars when used frequently - plX := hp.ECPool.X // makes much more readable - npats := ss.Pat.ListSize - pctAct := hp.ECPctAct - minDiff := ss.Pat.MinDiffPct - nOn := patgen.NFromPct(pctAct, plY*plX) - ctxtflip := patgen.NFromPct(ss.Pat.CtxtFlipPct, nOn) - patgen.AddVocabEmpty(ss.PoolVocab, "empty", npats, plY, plX) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "A", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "B", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "C", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "lA", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "lB", npats, plY, plX, pctAct, minDiff) - patgen.AddVocabPermutedBinary(ss.PoolVocab, "ctxt", 3, plY, plX, pctAct, minDiff) // totally diff - - for i := 0; i < (ecY-1)*ecX*3; i++ { // 12 contexts! 1: 1 row of stimuli pats; 3: 3 diff ctxt bases - list := i / ((ecY - 1) * ecX) - ctxtNm := fmt.Sprintf("ctxt%d", i+1) - tsr, _ := patgen.AddVocabRepeat(ss.PoolVocab, ctxtNm, npats, "ctxt", list) - patgen.FlipBitsRows(tsr, ctxtflip, ctxtflip, 1, 0) - //todo: also support drifting - //solution 2: drift based on last trial (will require sequential learning) - //patgen.VocabDrift(ss.PoolVocab, ss.NFlipBits, "ctxt"+strconv.Itoa(i+1)) - } - - patgen.InitPats(ss.TrainAB, "TrainAB", "TrainAB Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TrainAB, ss.PoolVocab, "Input", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - patgen.MixPats(ss.TrainAB, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - - patgen.InitPats(ss.TestAB, "TestAB", "TestAB Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TestAB, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - patgen.MixPats(ss.TestAB, ss.PoolVocab, "ECout", []string{"A", "B", "ctxt1", "ctxt2", "ctxt3", "ctxt4"}) - - patgen.InitPats(ss.TrainAC, "TrainAC", "TrainAC Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TrainAC, ss.PoolVocab, "Input", []string{"A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"}) - patgen.MixPats(ss.TrainAC, ss.PoolVocab, "ECout", []string{"A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"}) - - patgen.InitPats(ss.TestAC, "TestAC", "TestAC Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TestAC, ss.PoolVocab, "Input", []string{"A", "empty", "ctxt5", "ctxt6", "ctxt7", "ctxt8"}) - patgen.MixPats(ss.TestAC, ss.PoolVocab, "ECout", []string{"A", "C", "ctxt5", "ctxt6", "ctxt7", "ctxt8"}) - - patgen.InitPats(ss.PreTrainLure, "PreTrainLure", "PreTrainLure Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.PreTrainLure, ss.PoolVocab, "Input", []string{"lA", "lB", "ctxt9", "ctxt10", "ctxt11", "ctxt12"}) // arbitrary ctxt here - patgen.MixPats(ss.PreTrainLure, ss.PoolVocab, "ECout", []string{"lA", "lB", "ctxt9", "ctxt10", "ctxt11", "ctxt12"}) // arbitrary ctxt here - - patgen.InitPats(ss.TestLure, "TestLure", "TestLure Pats", "Input", "ECout", npats, ecY, ecX, plY, plX) - patgen.MixPats(ss.TestLure, ss.PoolVocab, "Input", []string{"lA", "empty", "ctxt9", "ctxt10", "ctxt11", "ctxt12"}) // arbitrary ctxt here - patgen.MixPats(ss.TestLure, ss.PoolVocab, "ECout", []string{"lA", "lB", "ctxt9", "ctxt10", "ctxt11", "ctxt12"}) // arbitrary ctxt here - - ss.TrainAll = ss.TrainAB.Clone() - ss.TrainAll.AppendRows(ss.TrainAC) - ss.TrainAll.AppendRows(ss.PreTrainLure) -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Logging - -// ValuesTsr gets value tensor of given name, creating if not yet made -func (ss *Sim) ValuesTsr(name string) *tensor.Float32 { - if ss.ValuesTsrs == nil { - ss.ValuesTsrs = make(map[string]*tensor.Float32) - } - tsr, ok := ss.ValuesTsrs[name] - if !ok { - tsr = &tensor.Float32{} - ss.ValuesTsrs[name] = tsr - } - return tsr -} - -// RunName returns a name for this run that combines Tag and Params -- add this to -// any file names that are saved. -func (ss *Sim) RunName() string { - if ss.Tag != "" { - pnm := ss.ParamsName() - if pnm == "Base" { - return ss.Tag - } else { - return ss.Tag + "_" + pnm - } - } else { - return ss.ParamsName() - } -} - -// RunEpochName returns a string with the run and epoch numbers with leading zeros, suitable -// for using in weights file names. Uses 3, 5 digits for each. -func (ss *Sim) RunEpochName(run, epc int) string { - return fmt.Sprintf("%03d_%05d", run, epc) -} - -// WeightsFileName returns default current weights file name -func (ss *Sim) WeightsFileName() string { - return ss.Net.Nm + "_" + ss.RunName() + "_" + ss.RunEpochName(ss.TrainEnv.Run.Cur, ss.TrainEnv.Epoch.Cur) + ".wts" -} - -// LogFileName returns default log file name -func (ss *Sim) LogFileName(lognm string) string { - return ss.Net.Nm + "_" + ss.RunName() + "_" + lognm + ".csv" -} - -////////////////////////////////////////////// -// TrnCycPatSimLog - -// LogTrnCycPatSim adds data from current trial to the TrnCycPatSimLog table. -// log always contains number of testing items -func (ss *Sim) LogTrnCycPatSim(dt *table.Table) { - epc := ss.TrainEnv.Epoch.Cur - trl := ss.TrainEnv.Trial.Cur - - var spltparams []string - if len(os.Args) > 1 { - params := ss.RunName() // includes tag - spltparams = strings.Split(params, "_") - } else { - spltparams = append(spltparams, "Default") - spltparams = append(spltparams, strconv.Itoa(ss.Pat.ListSize)) - } - - row := dt.Rows - if trl == 0 { // reset at start - row = 0 - } - - if ss.TrnCycPatSimFile != nil { - if !ss.TrnCycPatSimHdrs { - dt.WriteCSVHeaders(ss.TrnCycPatSimFile, table.Tab) - ss.TrnCycPatSimHdrs = true - } - for iCyc := 0; iCyc < 100; iCyc += 1 { // zycyc: step control - row += 1 - dt.SetNumRows(row + 1) - //dt.SetCellString("Params", row, params) - dt.SetCellString("NetSize", row, spltparams[0]) - dt.SetCellString("ListSize", row, spltparams[1]) - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellFloat("Trial", row, float64(trl)) - dt.SetCellString("TrialName", row, ss.TrainEnv.TrialName.Cur) - dt.SetCellFloat("Cycle", row, float64(iCyc)) - dt.SetCellFloat("DG", row, float64(metric.Correlation32(ss.dgCycPats[iCyc], ss.dgCycPats[99]))) - dt.SetCellFloat("CA3", row, float64(metric.Correlation32(ss.ca3CycPats[iCyc], ss.ca3CycPats[99]))) - dt.SetCellFloat("CA1", row, float64(metric.Correlation32(ss.ca1CycPats[iCyc], ss.ca1CycPats[99]))) - dt.WriteCSVRow(ss.TrnCycPatSimFile, row, table.Tab) - } - } -} - -func (ss *Sim) ConfigTrnCycPatSimLog(dt *table.Table) { - dt.SetMetaData("name", "TrnCycLog") - dt.SetMetaData("desc", "Record of training per input pattern") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - nt := ss.TestEnv.Table.Len() // number in view - sch := table.Schema{ - //{"Params", tensor.STRING, nil, nil}, - {"NetSize", tensor.STRING, nil, nil}, - {"ListSize", tensor.STRING, nil, nil}, - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"Trial", tensor.INT64, nil, nil}, - {"TrialName", tensor.STRING, nil, nil}, - {"Cycle", tensor.INT64, nil, nil}, - {"DG", tensor.FLOAT64, nil, nil}, - {"CA3", tensor.FLOAT64, nil, nil}, - {"CA1", tensor.FLOAT64, nil, nil}, - } - //for iCyc := 0; iCyc < 100; iCyc++ { - // sch = append(sch, table.Column{"CA3Cyc"+strconv.Itoa(iCyc), tensor.FLOAT64, nil, nil}) - //} - dt.SetFromSchema(sch, nt) -} - -////////////////////////////////////////////// -// TrnTrlLog - -// LogTrnTrl adds data from current trial to the TrnTrlLog table. -// log always contains number of testing items -func (ss *Sim) LogTrnTrl(dt *table.Table) { - epc := ss.TrainEnv.Epoch.Cur - trl := ss.TrainEnv.Trial.Cur - - row := dt.Rows - if trl == 0 { // reset at start - row = 0 - } - dt.SetNumRows(row + 1) - - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellFloat("Trial", row, float64(trl)) - dt.SetCellString("TrialName", row, ss.TrainEnv.TrialName.Cur) - dt.SetCellFloat("SSE", row, ss.TrlSSE) - dt.SetCellFloat("AvgSSE", row, ss.TrlAvgSSE) - dt.SetCellFloat("CosDiff", row, ss.TrlCosDiff) - - dt.SetCellFloat("Mem", row, ss.Mem) - dt.SetCellFloat("TrgOnWasOff", row, ss.TrgOnWasOffAll) - dt.SetCellFloat("TrgOffWasOn", row, ss.TrgOffWasOn) - - // note: essential to use Go version of update when called from another goroutine - if ss.TrnTrlPlot != nil { - ss.TrnTrlPlot.GoUpdate() - } -} - -func (ss *Sim) ConfigTrnTrlLog(dt *table.Table) { - // inLay := ss.Net.LayerByName("Input").(leabra.LeabraLayer).AsLeabra() - // outLay := ss.Net.LayerByName("Output").(leabra.LeabraLayer).AsLeabra() - - dt.SetMetaData("name", "TrnTrlLog") - dt.SetMetaData("desc", "Record of training per input pattern") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - nt := ss.TestEnv.Table.Len() // number in view - sch := table.Schema{ - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"Trial", tensor.INT64, nil, nil}, - {"TrialName", tensor.STRING, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - {"Mem", tensor.FLOAT64, nil, nil}, - {"TrgOnWasOff", tensor.FLOAT64, nil, nil}, - {"TrgOffWasOn", tensor.FLOAT64, nil, nil}, - } - dt.SetFromSchema(sch, nt) -} - -func (ss *Sim) ConfigTrnTrlPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Train Trial Plot" - plt.Params.XAxisCol = "Trial" - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Epoch", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Trial", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("TrialName", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - plt.SetColParams("Mem", plot.On, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("TrgOnWasOff", plot.On, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("TrgOffWasOn", plot.On, plot.FixMin, 0, plot.FixMax, 1) - - return plt -} - -////////////////////////////////////////////// -// TrnEpcLog - -// LogTrnEpc adds data from current epoch to the TrnEpcLog table. -// computes epoch averages prior to logging. -func (ss *Sim) LogTrnEpc(dt *table.Table) { - row := dt.Rows - dt.SetNumRows(row + 1) - - epc := ss.TrainEnv.Epoch.Prv // this is triggered by increment so use previous value - nt := float64(ss.TrainEnv.Table.Len()) // number of trials in view - - var spltparams []string - if len(os.Args) > 1 { - params := ss.RunName() // includes tag - spltparams = strings.Split(params, "_") - } else { - spltparams = append(spltparams, "Default") - spltparams = append(spltparams, strconv.Itoa(ss.Pat.ListSize)) - } - - ss.EpcSSE = ss.SumSSE / nt - ss.SumSSE = 0 - ss.EpcAvgSSE = ss.SumAvgSSE / nt - ss.SumAvgSSE = 0 - ss.EpcPctErr = float64(ss.CntErr) / nt - ss.CntErr = 0 - ss.EpcPctCor = 1 - ss.EpcPctErr - ss.EpcCosDiff = ss.SumCosDiff / nt - ss.SumCosDiff = 0 - - trlog := ss.TrnTrlLog - tix := table.NewIndexView(trlog) - - //dt.SetCellString("Params", row, params) - dt.SetCellString("NetSize", row, spltparams[0]) - dt.SetCellString("ListSize", row, spltparams[1]) - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellFloat("SSE", row, ss.EpcSSE) - dt.SetCellFloat("AvgSSE", row, ss.EpcAvgSSE) - dt.SetCellFloat("PctErr", row, ss.EpcPctErr) - dt.SetCellFloat("PctCor", row, ss.EpcPctCor) - dt.SetCellFloat("CosDiff", row, ss.EpcCosDiff) - - mem := stats.Mean(tix, "Mem")[0] - dt.SetCellFloat("Mem", row, mem) - dt.SetCellFloat("TrgOnWasOff", row, stats.Mean(tix, "TrgOnWasOff")[0]) - dt.SetCellFloat("TrgOffWasOn", row, stats.Mean(tix, "TrgOffWasOn")[0]) - - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - dt.SetCellFloat(ly.Name+" ActAvg", row, float64(ly.Pools[0].ActAvg.ActPAvgEff)) - } - - // note: essential to use Go version of update when called from another goroutine - if ss.TrnEpcPlot != nil { - ss.TrnEpcPlot.GoUpdate() - } -} - -func (ss *Sim) ConfigTrnEpcLog(dt *table.Table) { - dt.SetMetaData("name", "TrnEpcLog") - dt.SetMetaData("desc", "Record of performance over epochs of training") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - sch := table.Schema{ - //{"Params", tensor.STRING, nil, nil}, - {"NetSize", tensor.STRING, nil, nil}, - {"ListSize", tensor.STRING, nil, nil}, - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"PctErr", tensor.FLOAT64, nil, nil}, - {"PctCor", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - {"Mem", tensor.FLOAT64, nil, nil}, - {"TrgOnWasOff", tensor.FLOAT64, nil, nil}, - {"TrgOffWasOn", tensor.FLOAT64, nil, nil}, - } - for _, lnm := range ss.LayStatNms { - sch = append(sch, table.Column{lnm + " ActAvg", tensor.FLOAT64, nil, nil}) - } - dt.SetFromSchema(sch, 0) -} - -func (ss *Sim) ConfigTrnEpcPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Epoch Plot" - plt.Params.XAxisCol = "Epoch" - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Epoch", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("PctErr", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("PctCor", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - plt.SetColParams("Mem", plot.On, plot.FixMin, 0, plot.FixMax, 1) // default plot - plt.SetColParams("TrgOnWasOff", plot.On, plot.FixMin, 0, plot.FixMax, 1) // default plot - plt.SetColParams("TrgOffWasOn", plot.On, plot.FixMin, 0, plot.FixMax, 1) // default plot - - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+" ActAvg", plot.Off, plot.FixMin, 0, plot.FixMax, 0.5) - } - return plt -} - -////////////////////////////////////////////// -// TstTrlLog - -// LogTstTrl adds data from current trial to the TstTrlLog table. -// log always contains number of testing items -func (ss *Sim) LogTstTrl(dt *table.Table) { - epc := ss.TrainEnv.Epoch.Prv // this is triggered by increment so use previous value - trl := ss.TestEnv.Trial.Cur - - row := dt.Rows - if ss.TestNm == "AB" && trl == 0 { // reset at start - row = 0 - } - dt.SetNumRows(row + 1) - - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellString("TestNm", row, ss.TestNm) - dt.SetCellFloat("Trial", row, float64(row)) - dt.SetCellString("TrialName", row, ss.TestEnv.TrialName.Cur) - dt.SetCellFloat("SSE", row, ss.TrlSSE) - dt.SetCellFloat("AvgSSE", row, ss.TrlAvgSSE) - dt.SetCellFloat("CosDiff", row, ss.TrlCosDiff) - - dt.SetCellFloat("Mem", row, ss.Mem) - dt.SetCellFloat("TrgOnWasOff", row, ss.TrgOnWasOffCmp) - dt.SetCellFloat("TrgOffWasOn", row, ss.TrgOffWasOn) - - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - dt.SetCellFloat(ly.Name+" ActM.Avg", row, float64(ly.Pools[0].ActM.Avg)) - } - - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - tsr := ss.ValuesTsr(lnm) - ly.UnitValuesTensor(tsr, "Act") - dt.SetCellTensor(lnm+"Act", row, tsr) - } - - // note: essential to use Go version of update when called from another goroutine - if ss.TstTrlPlot != nil { - ss.TstTrlPlot.GoUpdate() - } -} - -func (ss *Sim) ConfigTstTrlLog(dt *table.Table) { - // inLay := ss.Net.LayerByName("Input").(leabra.LeabraLayer).AsLeabra() - // outLay := ss.Net.LayerByName("Output").(leabra.LeabraLayer).AsLeabra() - - dt.SetMetaData("name", "TstTrlLog") - dt.SetMetaData("desc", "Record of testing per input pattern") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - nt := ss.TestEnv.Table.Len() // number in view - sch := table.Schema{ - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"TestNm", tensor.STRING, nil, nil}, - {"Trial", tensor.INT64, nil, nil}, - {"TrialName", tensor.STRING, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - {"Mem", tensor.FLOAT64, nil, nil}, - {"TrgOnWasOff", tensor.FLOAT64, nil, nil}, - {"TrgOffWasOn", tensor.FLOAT64, nil, nil}, - } - for _, lnm := range ss.LayStatNms { - sch = append(sch, table.Column{lnm + " ActM.Avg", tensor.FLOAT64, nil, nil}) - } - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - sch = append(sch, table.Column{lnm + "Act", tensor.FLOAT64, ly.Shape.Sizes, nil}) - } - - dt.SetFromSchema(sch, nt) -} - -func (ss *Sim) ConfigTstTrlPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Test Trial Plot" - plt.Params.XAxisCol = "TrialName" - plt.Params.Type = plot.Bar - plt.SetTable(dt) // this sets defaults so set params after - plt.Params.XAxisRot = 45 - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Epoch", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("TestNm", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Trial", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("TrialName", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - plt.SetColParams("Mem", plot.On, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("TrgOnWasOff", plot.On, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("TrgOffWasOn", plot.On, plot.FixMin, 0, plot.FixMax, 1) - - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+" ActM.Avg", plot.Off, plot.FixMin, 0, plot.FixMax, 0.5) - } - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+"Act", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - } - - return plt -} - -////////////////////////////////////////////// -// TstEpcLog - -// RepsAnalysis analyzes representations -func (ss *Sim) RepsAnalysis() { - acts := table.NewIndexView(ss.TstTrlLog) - for _, lnm := range ss.LayStatNms { - sm, ok := ss.SimMats[lnm] - if !ok { - sm = &simat.SimMat{} - ss.SimMats[lnm] = sm - } - sm.TableCol(acts, lnm+"Act", "TrialName", true, metric.Correlation64) - } -} - -// SimMatStatFull returns full triangular matrix for sim mat statistics -func (ss *Sim) SimMatStatFull(lnm string) *tensor.Float64 { - sm := ss.SimMats[lnm] - smat := sm.Mat - nitm := smat.DimSize(0) - ncat := nitm / len(ss.TstNms) // i.e., list size - newTsr := tensor.NewFloat64([]int{2 * ncat, 2 * ncat}, nil, []string{"Y", "X"}) - - for y := 0; y < nitm*2/3; y++ { // only taking AB and AC, not Lure - newTsr.SubSpace([]int{y}).CopyFrom(smat.SubSpace([]int{y})) - } - return newTsr -} - -// SimMatStat returns within, between for sim mat statistics -func (ss *Sim) SimMatStat(lnm string) (float64, float64, float64) { - sm := ss.SimMats[lnm] - smat := sm.Mat - nitm := smat.DimSize(0) - ncat := nitm / len(ss.TstNms) // i.e., list size - win_sum_ab := float64(0) - win_n_ab := 0 - win_sum_ac := float64(0) - win_n_ac := 0 - btn_sum := float64(0) - btn_n := 0 - for y := 0; y < nitm*2/3; y++ { // only taking AB and AC, not Lure - for x := 0; x < y; x++ { - val := smat.Float([]int{y, x}) - same := (y / ncat) == (x / ncat) // i.e., same list or not - if same { - if y < nitm/3 { - win_sum_ab += val - win_n_ab++ - } else { - win_sum_ac += val - win_n_ac++ - } - } else if (y % ncat) == (x % ncat) { // between list, only when same A (i.e., TrainAB11 vs. Train AC11)! - btn_sum += val - btn_n++ - } - } - } - if win_n_ab > 0 { - win_sum_ab /= float64(win_n_ab) - } - if win_n_ac > 0 { - win_sum_ac /= float64(win_n_ac) - } - if btn_n > 0 { - btn_sum /= float64(btn_n) - } - return win_sum_ab, win_sum_ac, btn_sum -} - -func (ss *Sim) LogTstEpc(dt *table.Table) { - row := dt.Rows - dt.SetNumRows(row + 1) - - ss.RepsAnalysis() - - trl := ss.TstTrlLog - tix := table.NewIndexView(trl) - epc := ss.TrainEnv.Epoch.Prv // ? - - var spltparams []string - if len(os.Args) > 1 { - params := ss.RunName() // includes tag - spltparams = strings.Split(params, "_") - } else { - spltparams = append(spltparams, "Default") - spltparams = append(spltparams, strconv.Itoa(ss.Pat.ListSize)) - } - - if ss.LastEpcTime.IsZero() { - ss.EpcPerTrlMSec = 0 - } else { - iv := time.Now().Sub(ss.LastEpcTime) - nt := ss.TrainAB.Rows * 4 // 1 train and 3 tests - ss.EpcPerTrlMSec = float64(iv) / (float64(nt) * float64(time.Millisecond)) - } - ss.LastEpcTime = time.Now() - - // note: this shows how to use agg methods to compute summary data from another - // data table, instead of incrementing on the Sim - //dt.SetCellString("Params", row, params) - dt.SetCellString("NetSize", row, spltparams[0]) - dt.SetCellString("ListSize", row, spltparams[1]) - dt.SetCellFloat("Run", row, float64(ss.TrainEnv.Run.Cur)) - dt.SetCellFloat("Epoch", row, float64(epc)) - dt.SetCellFloat("PerTrlMSec", row, ss.EpcPerTrlMSec) - dt.SetCellFloat("SSE", row, stats.Sum(tix, "SSE")[0]) - dt.SetCellFloat("AvgSSE", row, stats.Mean(tix, "AvgSSE")[0]) - dt.SetCellFloat("PctErr", row, stats.PropIf(tix, "SSE", func(idx int, val float64) bool { - return val > 0 - })[0]) - dt.SetCellFloat("PctCor", row, stats.PropIf(tix, "SSE", func(idx int, val float64) bool { - return val == 0 - })[0]) - dt.SetCellFloat("CosDiff", row, stats.Mean(tix, "CosDiff")[0]) - - trix := table.NewIndexView(trl) - spl := split.GroupBy(trix, []string{"TestNm"}) - for _, ts := range ss.TstStatNms { - split.Agg(spl, ts, stats.AggMean) - } - ss.TstStats = spl.AggsToTable(table.ColNameOnly) - - for ri := 0; ri < ss.TstStats.Rows; ri++ { - tst := ss.TstStats.CellString("TestNm", ri) - for _, ts := range ss.TstStatNms { - dt.SetCellFloat(tst+" "+ts, row, ss.TstStats.CellFloat(ts, ri)) - } - } - - for _, lnm := range ss.LayStatNms { - win_ab, win_ac, btn := ss.SimMatStat(lnm) - for _, ts := range ss.SimMatStats { - if ts == "WithinAB" { - dt.SetCellFloat(lnm+" "+ts, row, win_ab) - } else if ts == "WithinAC" { - dt.SetCellFloat(lnm+" "+ts, row, win_ac) - } else { - dt.SetCellFloat(lnm+" "+ts, row, btn) - } - } - } - // RS Matrix - //for _, lnm := range ss.LayStatNms { - // rsm := ss.SimMatStatFull(lnm) - // dt.SetCellTensor(lnm+" RSM", row, rsm) - //} - - // base zero on testing performance! - curAB := ss.TrainEnv.Table.Table == ss.TrainAB - var mem float64 - if curAB { - mem = dt.CellFloat("AB Mem", row) - } else { - mem = dt.CellFloat("AC Mem", row) - } - if ss.FirstZero < 0 && mem == 1 { - ss.FirstZero = epc - } - if mem == 1 { - ss.NZero++ - } else { - ss.NZero = 0 - } - - // note: essential to use Go version of update when called from another goroutine - if ss.TstEpcPlot != nil { - ss.TstEpcPlot.GoUpdate() - } - if ss.TstEpcFile != nil { - if !ss.TstEpcHdrs { - dt.WriteCSVHeaders(ss.TstEpcFile, table.Tab) - ss.TstEpcHdrs = true - } - dt.WriteCSVRow(ss.TstEpcFile, row, table.Tab) - } -} - -func (ss *Sim) ConfigTstEpcLog(dt *table.Table) { - dt.SetMetaData("name", "TstEpcLog") - dt.SetMetaData("desc", "Summary stats for testing trials") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - sch := table.Schema{ - //{"Params", tensor.STRING, nil, nil}, - {"NetSize", tensor.STRING, nil, nil}, - {"ListSize", tensor.STRING, nil, nil}, - {"Run", tensor.INT64, nil, nil}, - {"Epoch", tensor.INT64, nil, nil}, - {"PerTrlMSec", tensor.FLOAT64, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"PctErr", tensor.FLOAT64, nil, nil}, - {"PctCor", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - } - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - sch = append(sch, table.Column{tn + " " + ts, tensor.FLOAT64, nil, nil}) - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - sch = append(sch, table.Column{lnm + " " + ts, tensor.FLOAT64, nil, nil}) - } - } - // RS Matrix - //for _, lnm := range ss.LayStatNms { - // ncat := ss.Pat.ListSize - // sch = append(sch, table.Column{lnm + " RSM", tensor.FLOAT64, []int{2 * ncat, 2 * ncat}, nil}) - //} - dt.SetFromSchema(sch, 0) -} - -func (ss *Sim) ConfigTstEpcPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Testing Epoch Plot" - plt.Params.XAxisCol = "Epoch" - plt.SetTable(dt) // this sets defaults so set params after - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Epoch", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("PerTrlMSec", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("PctErr", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("PctCor", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - if ts == "Mem" { - plt.SetColParams(tn+" "+ts, plot.On, plot.FixMin, 0, plot.FixMax, 1) - } else { - plt.SetColParams(tn+" "+ts, plot.Off, plot.FixMin, 0, plot.FixMax, 1) - } - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - plt.SetColParams(lnm+" "+ts, plot.Off, plot.FixMin, 0, plot.FloatMax, 1) - } - } - // RS Matrix - //for _, lnm := range ss.LayStatNms { - // plt.SetColParams(lnm+" RSM", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - //} - return plt -} - -////////////////////////////////////////////// -// TstCycLog - -// LogTstCyc adds data from current trial to the TstCycLog table. -// log just has 100 cycles, is overwritten -func (ss *Sim) LogTstCyc(dt *table.Table, cyc int) { - if dt.Rows <= cyc { - dt.SetNumRows(cyc + 1) - } - - dt.SetCellFloat("Cycle", cyc, float64(cyc)) - for _, lnm := range ss.LayStatNms { - ly := ss.Net.LayerByName(lnm).(leabra.LeabraLayer).AsLeabra() - dt.SetCellFloat(ly.Name+" Ge.Avg", cyc, float64(ly.Pools[0].Inhib.Ge.Avg)) - dt.SetCellFloat(ly.Name+" Act.Avg", cyc, float64(ly.Pools[0].Inhib.Act.Avg)) - } - - if cyc%10 == 0 { // too slow to do every cyc - // note: essential to use Go version of update when called from another goroutine - if ss.TstCycPlot != nil { - ss.TstCycPlot.GoUpdate() - } - } -} - -func (ss *Sim) ConfigTstCycLog(dt *table.Table) { - dt.SetMetaData("name", "TstCycLog") - dt.SetMetaData("desc", "Record of activity etc over one trial by cycle") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - np := 100 // max cycles - sch := table.Schema{ - {"Cycle", tensor.INT64, nil, nil}, - } - for _, lnm := range ss.LayStatNms { - sch = append(sch, table.Column{lnm + " Ge.Avg", tensor.FLOAT64, nil, nil}) - sch = append(sch, table.Column{lnm + " Act.Avg", tensor.FLOAT64, nil, nil}) - } - dt.SetFromSchema(sch, np) -} - -func (ss *Sim) ConfigTstCycPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Test Cycle Plot" - plt.Params.XAxisCol = "Cycle" - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("Cycle", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - for _, lnm := range ss.LayStatNms { - plt.SetColParams(lnm+" Ge.Avg", plot.On, plot.FixMin, 0, plot.FixMax, .5) - plt.SetColParams(lnm+" Act.Avg", plot.On, plot.FixMin, 0, plot.FixMax, .5) - } - return plt -} - -////////////////////////////////////////////// -// RunLog - -// LogRun adds data from current run to the RunLog table. -func (ss *Sim) LogRun(dt *table.Table) { - epclog := ss.TstEpcLog - epcix := table.NewIndexView(epclog) - if epcix.Len() == 0 { - return - } - - run := ss.TrainEnv.Run.Cur // this is NOT triggered by increment yet -- use Cur - row := dt.Rows - dt.SetNumRows(row + 1) - - // compute mean over last N epochs for run level - nlast := 1 - if nlast > epcix.Len()-1 { - nlast = epcix.Len() - 1 - } - epcix.Indexes = epcix.Indexes[epcix.Len()-nlast:] - - var spltparams []string - if len(os.Args) > 1 { - params := ss.RunName() // includes tag - spltparams = strings.Split(params, "_") - } else { - spltparams = append(spltparams, "Default") - spltparams = append(spltparams, strconv.Itoa(ss.Pat.ListSize)) - } - - fzero := ss.FirstZero - if fzero < 0 { - fzero = ss.MaxEpcs - } - - //dt.SetCellString("Params", row, params) - dt.SetCellString("NetSize", row, spltparams[0]) - dt.SetCellString("ListSize", row, spltparams[1]) - dt.SetCellFloat("Run", row, float64(run)) - dt.SetCellFloat("NEpochs", row, float64(ss.TstEpcLog.Rows)) - dt.SetCellFloat("FirstZero", row, float64(fzero)) - dt.SetCellFloat("SSE", row, stats.Mean(epcix, "SSE")[0]) - dt.SetCellFloat("AvgSSE", row, stats.Mean(epcix, "AvgSSE")[0]) - dt.SetCellFloat("PctErr", row, stats.Mean(epcix, "PctErr")[0]) - dt.SetCellFloat("PctCor", row, stats.Mean(epcix, "PctCor")[0]) - dt.SetCellFloat("CosDiff", row, stats.Mean(epcix, "CosDiff")[0]) - - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - nm := tn + " " + ts - dt.SetCellFloat(nm, row, stats.Mean(epcix, nm)[0]) - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - nm := lnm + " " + ts - dt.SetCellFloat(nm, row, stats.Mean(epcix, nm)[0]) - } - } - ss.LogRunStats() - - // note: essential to use Go version of update when called from another goroutine - if ss.RunPlot != nil { - ss.RunPlot.GoUpdate() - } - if ss.RunFile != nil { - if !ss.RunHdrs { - dt.WriteCSVHeaders(ss.RunFile, table.Tab) - ss.RunHdrs = true - } - dt.WriteCSVRow(ss.RunFile, row, table.Tab) - } -} - -func (ss *Sim) ConfigRunLog(dt *table.Table) { - dt.SetMetaData("name", "RunLog") - dt.SetMetaData("desc", "Record of performance at end of training") - dt.SetMetaData("read-only", "true") - dt.SetMetaData("precision", strconv.Itoa(LogPrec)) - - sch := table.Schema{ - //{"Params", tensor.STRING, nil, nil}, - {"NetSize", tensor.STRING, nil, nil}, - {"ListSize", tensor.STRING, nil, nil}, - {"Run", tensor.INT64, nil, nil}, - {"NEpochs", tensor.FLOAT64, nil, nil}, - {"FirstZero", tensor.FLOAT64, nil, nil}, - {"SSE", tensor.FLOAT64, nil, nil}, - {"AvgSSE", tensor.FLOAT64, nil, nil}, - {"PctErr", tensor.FLOAT64, nil, nil}, - {"PctCor", tensor.FLOAT64, nil, nil}, - {"CosDiff", tensor.FLOAT64, nil, nil}, - } - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - sch = append(sch, table.Column{tn + " " + ts, tensor.FLOAT64, nil, nil}) - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - sch = append(sch, table.Column{lnm + " " + ts, tensor.FLOAT64, nil, nil}) - } - } - dt.SetFromSchema(sch, 0) -} - -func (ss *Sim) ConfigRunPlot(plt *plot.Plot2D, dt *table.Table) *plot.Plot2D { - plt.Params.Title = "Hippocampus Run Plot" - plt.Params.XAxisCol = "Run" - plt.SetTable(dt) - // order of params: on, fixMin, min, fixMax, max - plt.SetColParams("NetSize", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("ListSize", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("Run", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("NEpochs", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("FirstZero", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("SSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("AvgSSE", plot.Off, plot.FixMin, 0, plot.FloatMax, 0) - plt.SetColParams("PctErr", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("PctCor", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - plt.SetColParams("CosDiff", plot.Off, plot.FixMin, 0, plot.FixMax, 1) - - for _, tn := range ss.TstNms { - for _, ts := range ss.TstStatNms { - if ts == "Mem" { - plt.SetColParams(tn+" "+ts, plot.On, plot.FixMin, 0, plot.FixMax, 1) // default plot - } else { - plt.SetColParams(tn+" "+ts, plot.Off, plot.FixMin, 0, plot.FixMax, 1) - } - } - } - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - plt.SetColParams(lnm+" "+ts, plot.Off, plot.FixMin, 0, plot.FloatMax, 1) - } - } - return plt -} - -////////////////////////////////////////////// -// RunStats - -// LogRunStats computes RunStats from RunLog data -- can be used for looking at prelim results -func (ss *Sim) LogRunStats() { - dt := ss.RunLog - runix := table.NewIndexView(dt) - //spl := split.GroupBy(runix, []string{"Params"}) - spl := split.GroupBy(runix, []string{"NetSize", "ListSize"}) - //spl := split.GroupBy(runix, []string{"NetSize", "ListSize", "Condition"}) - for _, tn := range ss.TstNms { - nm := tn + " " + "Mem" - split.Desc(spl, nm) - } - split.Desc(spl, "FirstZero") - split.Desc(spl, "NEpochs") - for _, lnm := range ss.LayStatNms { - for _, ts := range ss.SimMatStats { - split.Desc(spl, lnm+" "+ts) - } - } - ss.RunStats = spl.AggsToTable(table.AddAggName) - if ss.RunStatsPlot1 != nil { - ss.ConfigRunStatsPlot(ss.RunStatsPlot1, ss.RunStats, 1) - } - if ss.RunStatsPlot2 != nil { - ss.ConfigRunStatsPlot(ss.RunStatsPlot2, ss.RunStats, 2) - } -} - -func (ss *Sim) ConfigRunStatsPlot(plt *plot.Plot2D, dt *table.Table, plotidx int) *plot.Plot2D { - plt.Params.Title = "Comparison between Hippocampus Models" - //plt.Params.XAxisCol = "Params" - plt.Params.XAxisCol = "ListSize" - plt.Params.LegendCol = "NetSize" - //plt.Params.LegendCol = "Condition" - plt.SetTable(dt) - - //plt.Params.BarWidth = 10 - //plt.Params.Type = plot.Bar - plt.Params.LineWidth = 1 - plt.Params.Scale = 2 - plt.Params.Type = plot.XY - plt.Params.XAxisRot = 45 - - if plotidx == 1 { - cp := plt.SetColParams("AB Mem:Mean", plot.On, plot.FixMin, 0, plot.FixMax, 1) // interference - cp.ErrCol = "AB Mem:Sem" - plt.Params.YAxisLabel = "AB Memory" - } else if plotidx == 2 { - cp := plt.SetColParams("NEpochs:Mean", plot.On, plot.FixMin, 0, plot.FixMax, 30) // total learning time - cp.ErrCol = "NEpochs:Sem" - plt.Params.YAxisLabel = "Learning Time" - } - - //cp = plt.SetColParams("AC Mem:Mean", plot.On, plot.FixMin, 0, plot.FixMax, 1) - //cp.ErrCol = "AC Mem:Sem" - //cp = plt.SetColParams("FirstZero:Mean", plot.On, plot.FixMin, 0, plot.FixMax, 30) - //cp.ErrCol = "FirstZero:Sem" - - return plt -} - -//////////////////////////////////////////////////////////////////////////////////////////// -// Gui - -// ConfigGUI configures the Cogent Core GUI interface for this simulation. -func (ss *Sim) ConfigGUI() *core.Window { - width := 1600 - height := 1200 - - core.SetAppName("hip_bench") - core.SetAppAbout(`This demonstrates a basic Hippocampus model in Leabra. See emergent on GitHub.

    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 z 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 diff --git a/examples/hip_bench/diff/2vs4_diffs_2.png b/examples/hip_bench/diff/2vs4_diffs_2.png deleted file mode 100644 index c4121cc216436b339fdac18cbc7106f90a6c956a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193182 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